RFR: JDK-8047177: JDK build should make use of the new -XXuserPathsFirst
Jonathan Gibbons
jonathan.gibbons at oracle.com
Tue Oct 28 17:54:58 UTC 2014
Why is sjavac ever looking at the classes in the bootclasspath of the
boot jdk in the compilation environment?
The boot JDK should only be used to *run* sjavac. Nothing more. The
compilation environment should only be "the new world".
-- Jon
On 10/28/2014 03:40 AM, 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