RFR: JDK-8047177: JDK build should make use of the new -XXuserPathsFirst
Joel Borggrén-Franck
joel.franck at oracle.com
Tue Oct 28 12:12:58 UTC 2014
Hi Erik,
Looks good.
As the comment says source only wins over a newer classfile from
bootclasspath, usually rt.jar of the building jdk. A newer classfile in
the build destination that were compiled in a previous compile won't
trigger a recompile.
cheers
/Joel
On 2014-10-28, Erik Joelsson wrote:
> Hello,
>
> Please review this small fix when using sjavac. When using a bootjdk
> that was built at a later date than when the source tree was
> initially cloned, there is a risk that sjavac will pick up classes
> from the boot classpath (rt.jar of boot jdk) instead of the source
> files, concluding that the source files won't need to be built. This
> is only an issue when building classes that are also present in the
> boot classpath of the bootjdk, which we normally do since we are
> building the jdk.
>
> The fix is to add a special option for this use case, which forces
> sjavac to build source files if found, regardless of class file
> dates.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8047177
> Patch inline:
> diff -r 12d3dc35f0e8 make/common/JavaCompilation.gmk
> --- a/make/common/JavaCompilation.gmk
> +++ b/make/common/JavaCompilation.gmk
> @@ -583,8 +583,12 @@
> $$(if $$(filter-out $$($1_SRCS), $$?), $(FIND) $$(@D) -name
> "*.class" $(FIND_DELETE))
> $$(call ListPathsSafely,$1_SRCS,\n, >> $$($1_BIN)/_the.$1_batch.tmp)
> $(ECHO) Compiling $1
> + # Run with -XXuserPathsFirst to always build source files
> even if there happens to
> + # be class files in the boot classpath (rt.jar of boot jdk)
> with a newer modified
> + # time.
> ($$($1_JVM) $$($1_SJAVAC) \
> $$($1_REMOTE) \
> + -XXuserPathsFirst \
> -j 1 \
> --permit-unidentified-artifacts \
> --permit-sources-without-package \
>
>
> /Erik
More information about the build-dev
mailing list