RFR: 8303355: The Depend plugin does fully recompile when primitive type changes
Jan Lahoda
jlahoda at openjdk.org
Wed Mar 1 10:20:53 UTC 2023
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.
-------------
Commit messages:
- 8303355: The Depend plugin does fully recompile when primitive type changes
Changes: https://git.openjdk.org/jdk/pull/12801/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=12801&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8303355
Stats: 63 lines in 1 file changed: 31 ins; 23 del; 9 mod
Patch: https://git.openjdk.org/jdk/pull/12801.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/12801/head:pull/12801
PR: https://git.openjdk.org/jdk/pull/12801
More information about the build-dev
mailing list