Integrated: 8303355: The Depend plugin does fully recompile when primitive type changes
Jan Lahoda
jlahoda at openjdk.org
Thu Mar 2 09:44:24 UTC 2023
On Wed, 1 Mar 2023 10:12:41 GMT, Jan Lahoda <jlahoda at openjdk.org> wrote:
> The OpenJDK build is using a Plugin called Depend to avoid building Java code unnecessarily. It has two parts, one is checking module APIs (and forces rebuild of dependent modules if a dependency changes), and second takes modified files in a module, and attempts to detect whether it is enough to recompile these files, or if the whole module must be rebuilt.
>
> There's a bug in the second part, it does not track changes in primitive types, so e.g. a change of a type of a public field form `int` to `long` does not cause recompile.
>
> This patch fixes that by visiting the primitive types, and including them in the hash computed for the given file.
>
> There's also another problem - if a module is being recompiled from scratch due to a change in a file hash, the new/updated file hashes are written immediately. And if the compilation consequently fails, the state is not compared to the original hash, but to the hash from the broken compilation, which may lead to missing compilation of some files.
>
> This patch moves the code to write the new hashes to the end of compilation, and only do that when there were no compile-time errors during the compilation.
This pull request has now been integrated.
Changeset: dbb562d3
Author: Jan Lahoda <jlahoda at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/dbb562d3b128094cb5bca55237e1331e83526adb
Stats: 113 lines in 2 files changed: 77 ins; 23 del; 13 mod
8303355: The Depend plugin does fully recompile when primitive type changes
Reviewed-by: erikj, vromero
-------------
PR: https://git.openjdk.org/jdk/pull/12801
More information about the build-dev
mailing list