On Wed, 1 Mar 2023 10:12:41 GMT, Jan Lahoda <jlah...@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 <jlah...@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