Hi Fedor,
thanks for verifying!
/Claes
On 2020-06-01 10:39, Fedor wrote:
Hi Claes,
The content of classlist files is the same in both cases (before and
after change).
And the change with updated file name $@.classlist => $@.interim as
suggested before.
diff --git a/make/GenerateLinkOptData.gmk b/make/GenerateLinkOptData.gmk
--- a/make/GenerateLinkOptData.gmk
+++ b/make/GenerateLinkOptData.gmk
@@ -69,10 +69,10 @@
-Duser.language=en -Duser.country=US \
-cp $(SUPPORT_OUTPUTDIR)/classlist.jar \
build.tools.classlist.HelloClasslist $(LOG_DEBUG)
- $(GREP) -v HelloClasslist $@.raw >
$(INTERIM_IMAGE_DIR)/lib/classlist
- $(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java -Xshare:dump \
+ $(GREP) -v HelloClasslist $@.raw > $@.interim
+ $(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java -Xshare:dump
-XX:SharedClassListFile=$@.interim -XX:SharedArchiveFile=$@.jsa \
-Xmx128M -Xms128M $(LOG_INFO)
- $(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java
-XX:DumpLoadedClassList=$@.raw \
+ $(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java
-XX:DumpLoadedClassList=$@.raw -XX:SharedClassListFile=$@.interim
-XX:SharedArchiveFile=$@.jsa \
-Djava.lang.invoke.MethodHandle.TRACE_RESOLVE=true \
-Duser.language=en -Duser.country=US \
--module-path $(SUPPORT_OUTPUTDIR)/classlist.jar \
Thanks,
Fedor
On 26.05.2020 18:39, Claes Redestad wrote:
Hi,
I think the proposed flags should do the right thing here. It should be
straightforward to verify since the contents of the generated files
should ideally not change at all on a standard build.
/Claes
On 2020-05-26 17:25, Erik Joelsson wrote:
Hello,
On 2020-05-26 08:00, Magnus Ihse Bursie wrote:
On 26/05/2020 11:14 pm, Fedor wrote:
Hello all!
I've tried to crossbuild jdk using current
http://hg.openjdk.java.net/jdk/jdk/ sources and noticed that build
requires write permissions to bootstrap jdk.
Your patch seems to be doing the right thing. I would just like to
have Claes verify that the JVM options you are setting are actually
having the desired effect. We really shouldn't be putting any files
in the INTERIM_IMAGE_DIR as that can possibly be located outside the
build directory. Only thing I would want to change is the suffix for
the file you call $@.classlist, since $@ is already named
"classlist", I would prefer something like $@.tmp or $@.interim, to
signal that this is the interim result between the two generation steps.
Then just to clarify, it's not the BOOT_JDK, but the BUILD_JDK, which
is a different concept. This can get tricky so it's important to keep
the definitions correct. The BOOT_JDK, which is required to be of
version N-1, or possibly N, is used to build a bootstrap version of
the javac compiler, which we can then run on the BOOT_JDK to compiler
the JDK N java code. We also use it to run most build tools in the
build.
The BUILD_JDK is a concept introduced for cross compiling. In a
native build, certain build steps are required to be performed with
the newly built JDK. This includes running jmod and jlink as well as
generating data used to optimize the JDK image in the jlink step
(which is where you are seeing this issue). For a native build, the
BUILD_JDK is simply the exploded image jdk we just built. When cross
compiling, the default behavior is to just also build enough of the
native parts of the JDK for the build platform and use that. You may
also supply a BUILD_JDK when configuring a cross compilation build.
When doing so you must ensure that it's built from the exact same
sources as the JDK you are cross compiling, otherwise results are
unpredictable.
In our internal build setups, we don't use the external BUILD_JDK
feature, which is why we have not run into the problem you are
reporting here.
/Erik
The problem is it tries to write/rewrite class list into bootstrap
jdk directory.
No, it should write to the INTERIM_IMAGE_DIR.
However, I now see that we replace INTERIM_IMAGE_DIR with BUILD_JDK
in GenerateLinkOptData.gmk if we have an external build-jdk. I
assume that is how you have configured. I also assume you are not
cross-compiling.
I'm not entirely sure about the thinking here. I can't say for
certain that we really should run HelloClasslist if we have an
external build-jdk. I think I need Erik or Claes to chime in.
/Magnus
I would like to suggest the fix below to solve this problem:
diff --git a/make/GenerateLinkOptData.gmk
b/make/GenerateLinkOptData.gmk
--- a/make/GenerateLinkOptData.gmk
+++ b/make/GenerateLinkOptData.gmk
@@ -69,10 +69,10 @@
-Duser.language=en -Duser.country=US \
-cp $(SUPPORT_OUTPUTDIR)/classlist.jar \
build.tools.classlist.HelloClasslist $(LOG_DEBUG)
- $(GREP) -v HelloClasslist $@.raw >
$(INTERIM_IMAGE_DIR)/lib/classlist
- $(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java -Xshare:dump \
+ $(GREP) -v HelloClasslist $@.raw > $@.classlist
+ $(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java -Xshare:dump
-XX:SharedClassListFile=$@.classlist -XX:SharedArchiveFile=$@.jsa \
-Xmx128M -Xms128M $(LOG_INFO)
- $(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java
-XX:DumpLoadedClassList=$@.raw \
+ $(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java
-XX:DumpLoadedClassList=$@.raw
-XX:SharedClassListFile=$@.classlist -XX:SharedArchiveFile=$@.jsa \
-Djava.lang.invoke.MethodHandle.TRACE_RESOLVE=true \
-Duser.language=en -Duser.country=US \
--module-path $(SUPPORT_OUTPUTDIR)/classlist.jar \
Please correct me in case if it is wrong alias, or I need to file
bug first, or something else.
Best Regards,
Fedor