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