RFR: 8303355: The Depend plugin does fully recompile when primitive type changes
Erik Joelsson
erikj at openjdk.org
Wed Mar 1 14:08:06 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.
Marked as reviewed by erikj (Reviewer).
-------------
PR: https://git.openjdk.org/jdk/pull/12801
More information about the build-dev
mailing list