RFR: JDK-8058539: Platform specific source files may not end up in src.zip
Erik Joelsson
erik.joelsson at oracle.com
Thu Jun 20 17:39:05 UTC 2019
For both java and native source files, we have a feature in the build
which allows overriding based on file name for more specific version
(i.e. OS specific overrides shared). This works quite well and is used
in several locations. It does however break down when building src.zip.
The file with the newest modification date gets picked by the zip
utility, which essentially makes it random. Luckily the kind of files
that are overridden this way are usually rather fringe so very few
people probably care. Even so, the build should be correct, so here is a
patch that fixes it.
I've added a loop that looks for duplicate files in the given source
roots and adds any but the first found to exclude lists. I was afraid
this would add noticeable time to incremental rebuilds, but I found a
way to work around this by putting this calculation in the recipe for
the zip file. The drawback is that we cannot remove these files from the
prerequisites list, so we may trigger unnecessary rebuilds of zip files.
However, since the number of src files that are handled this way is so
small, I believe that to be a very rare situation and that it's much
more valuable to avoid doing the calculation most of the time instead.
(On my machine, without this hack, incremental rebuild of "make
zip-source" went from 2.7s to 3.2s, which is noticeable enough IMO, with
the hack, there is no difference.)
Bug: https://bugs.openjdk.java.net/browse/JDK-8058539
Webrev: http://cr.openjdk.java.net/~erikj/8058539/webrev.01/
/Erik
<https://bugs.openjdk.java.net/browse/JDK-8058539>
More information about the build-dev
mailing list