Looks good.

/Erik


On 2017-10-26 09:05, Baesken, Matthias wrote:
Hello , could you please review and push  this small change fixing the  aix jre 
generation in jdk10 :

http://cr.openjdk.java.net/~mbaesken/webrevs/8189618/


(and later on it would be good to get it into jdk9 as well because the same 
issue exists there too)

Thanks and best regards, Matthias


-----Original Message-----
From: Magnus Ihse Bursie [mailto:[email protected]]
Sent: Mittwoch, 25. Oktober 2017 16:46
To: Erik Joelsson <[email protected]>; Baesken, Matthias
<[email protected]>; Thomas Stüfe <[email protected]>
Cc: build-dev ([email protected]) <[email protected]>;
[email protected]
Subject: Re: AIX build not generating a jre image

On 2017-10-25 15:21, Erik Joelsson wrote:
Ah, good find. I would argue that the correct fix is:

jdk: $(TOOL_JDK_TARGETS) $(JDK_TARGETS)
jre: $(TOOL_JRE_TARGETS) $(JRE_TARGETS)
Yeah, good find Matthias!

I agree with Erik's suggested fix. This is a bit of "how has this ever
worked?!?". It turns out that our closed extensions are unconditionally
adding targets to JRE_TARGETS, so we never noticed that it could happen
that JRE_TARGETS are empty, and the building of the JRE image does not
work. This will happen on Windows as well as AIX.

/Magnus

/Erik

On 2017-10-25 14:57, Baesken, Matthias wrote:
Hi Magnus, thanks for your advice.
Adding a bit of tracing  to  Images.gmk  indeed helps to clarify the
issue  .
Output of      $(info this is the jre location:
$(JRE_IMAGE_DIR)/$(JIMAGE_TARGET_FILE))    looks nice and as
expected
on AIX .
However it turns out the   $(JRE_TARGETS)   was empty  on AIX ,
this leads to an empty dependency

jre: $(JRE_TARGETS)

on AIX in  Images.gmk ,  and this leads to “Nothing to be done for …. “.
Background is that  aix was not considered   in the platform
dependent  parts of  make/Images.gmk  where  JRE_TARGETS is filled
for linux, macosx, solaris.
I added  aix there and  the jre  shows up in the images.
Here is my diff  (openjdk9) ,  still with tracing output AND with
the  added aix .
Now  JRE_TARGETS  is not empty anymore which leads to successful
generation of the JRE.

Tracing output seen in the makefile
+ echo JRE_TARGETS are:
/mygenerationdir/images/jre/man/man1/java.1   ….

Diff with tracing :

diff -r a08cbfc0e4ec make/Images.gmk
--- a/make/Images.gmk   Thu Aug 03 18:56:56 2017 +0000
+++ b/make/Images.gmk   Wed Oct 25 14:41:06 2017 +0200
@@ -43,6 +43,10 @@
   $(eval $(call ReadImportMetaData))
+# helpful tracing
+$(info this is the jre location:
$(JRE_IMAGE_DIR)/$(JIMAGE_TARGET_FILE))
+
+
JRE_MODULES += $(filter $(ALL_MODULES), $(BOOT_MODULES) \
       $(PLATFORM_MODULES) $(JRE_TOOL_MODULES))
JDK_MODULES += $(ALL_MODULES)
@@ -295,7 +299,7 @@
           $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.PCK/man1/,
$(JDK_MAN_PAGES))
     endif
-  ifneq ($(findstring $(OPENJDK_TARGET_OS), linux macosx), )
+  ifneq ($(findstring $(OPENJDK_TARGET_OS), aix linux macosx), )
       JRE_MAN_PAGE_LIST = $(addprefix $(JRE_IMAGE_DIR)/man/man1/,
$(JRE_MAN_PAGES)) \
           $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/,
$(JRE_MAN_PAGES)) \
           $(JRE_IMAGE_DIR)/man/ja
@@ -436,6 +440,8 @@
   jdk: $(JDK_TARGETS)
jre: $(JRE_TARGETS)
+       echo JRE_TARGETS are: $(JRE_TARGETS) ,  TOOL_JRE_TARGETS are:
$(TOOL_JRE_TARGETS)
+
symbols: $(SYMBOLS_TARGETS)


Best regards, Matthias

From: Magnus Ihse Bursie [mailto:[email protected]]
Sent: Mittwoch, 25. Oktober 2017 10:24
To: Baesken, Matthias <[email protected]>; Thomas Stüfe
<[email protected]>
Cc: build-dev ([email protected])
<[email protected]>; [email protected]
Subject: Re: AIX build not generating a jre image


On 2017-10-24 16:44, Baesken, Matthias wrote:

    *   Do you get to this stage at all? I.e, can you see "Createing
jre jimage" in the output?

Hi Magnus, when comparing the linux and aix logs  of our openjdk9
builds  ,   I see for Linux at some point :



gmake[3]: Entering directory ` . . . /nightly/jdk9/make'

/bin/echo Creating jre jimage


While on AIX it says :


make[3]: Entering directory ` . . . /nightly/jdk9/make'

make[3]: Nothing to be done for `jre'.

make[3]: Leaving directory ` . . . /nightly/jdk9/make'


this Looks wrong to me !
That means that $(JRE_IMAGE_DIR)/$(JIMAGE_TARGET_FILE) is
considered
up to date by make. This is wrong if that file does not exist. Are
you *sure* you do not have a jre built?
Verify the contents of these variables. Perhaps add a
$(info this is the jre location:
$(JRE_IMAGE_DIR)/$(JIMAGE_TARGET_FILE))
at the top of Images.gmk,
and check the location that is printed.

/Magnus




(  the   . . .   in the output has been removed by me it points to
the build dir).

Best regards, Matthias


From: ppc-aix-port-dev
[mailto:[email protected]] On Behalf Of
Magnus Ihse Bursie
Sent: Dienstag, 24. Oktober 2017 15:47
To: Thomas Stüfe
<[email protected]><mailto:[email protected]>
Cc: build-dev
([email protected]<mailto:[email protected]>)
<[email protected]><mailto:[email protected]>;
[email protected]<mailto:ppc-aix-port-
[email protected]>
Subject: Re: AIX build not generating a jre image

On 2017-10-23 10:16, Thomas Stüfe wrote:
Hi Magnus,

On Mon, Oct 23, 2017 at 9:12 AM, Magnus Ihse Bursie

<[email protected]<mailto:[email protected]>
wrote:

On 2017-10-18 16:14, Thomas Stüfe wrote:
On Wed, Oct 18, 2017 at 3:25 PM, Volker Simonis
<[email protected]<mailto:[email protected]>>
wrote:
Hi Goetz,

How do our nightly builds look like? Do they create the JRE image?

Regards,
Volker


Goetz is in a meeting.

None of our AIX builds creates a JRE image. Works on other platforms.
Looks
like a bug.

I tried to build jre explicitly (make jre-image); build finishes
sucessfully but still no jre.
Since I don't have access to any AIX machines, it's difficult to for
me to do much about this. Let me know if you need assistance in
tracking this down.

Some suggestions:
run "make LOG=info,cmdlines" to track the progress of the build.

If you get lost in the log files, try running "make jre-image" and
then "rm build/$BUILD/images/jre", and then "make LOG=info,cmdlines
jre-image" to see only the output for the jre-image target.

Thanks for the hints! I'll try that. I played around last week with
make -d --print-data-base but got lost in the information.

Last week I burned some time on this problem without much success. I
got stuck understanding the rule in Images.gmk:

$(JRE_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(JMODS) \
      $(call DependOnVariable, JRE_MODULES_LIST) $(BASE_RELEASE_FILE)
$(ECHO) Creating jre jimage
$(RM) -r $(JRE_IMAGE_DIR)
     $(JLINK_JRE_EXTRA_OPTS) \
$(JLINK_TOOL) --add-modules $(JRE_MODULES_LIST) \
     --output $(JRE_IMAGE_DIR)
$(TOUCH) $@

and its brethren.

It seems this rule just does not get executed for jre-image. So,
trying to understand this (I am no makefile expert):

$(JRE_IMAGE_DIR)/$(JIMAGE_TARGET_FILE) is one file from the target
dir, in this case jre/java, whose non-existence or out-of-dateness
triggers the rule

Dependencies:
   - $(JMODS) is <outputdir>/jmods, which gets built and does exist
   - $(call DependOnVariable, JRE_MODULES_LIST)
This is just a macro that creates a dependency on the contents of the
variable JRE_MODULES_LIST.



$(BASE_RELEASE_FILE) is a text file which, if it exists and it
contains the value of $JRE_MODULES_LIST, will result false (not out
of date), otherwise it will update the file with the value of
$JRE_MODULES_LIST and return true, triggering the target, yes? If I
got this right, why do we use the same output file for all targets
(jre, jdk) etc?
No, this is a separate dependency. It's the file named "release" in
the image that is to be included. If it has changed we need to
trigger a new image.

Do you get to this stage at all? I.e, can you see "Createing jre
jimage" in the output? If not, there's a problem before we even get
to this rule. Otherwise, the jlink command is likely broken. Try
copy-pasting the full jlink command and running it from the shell
directly to see what happens.

/Magnus



..Thomas



/Magnus




I created https://bugs.openjdk.java.net/browse/JDK-8189618 to track
this.

..Thomas




Lindenmaier, Goetz
<[email protected]<mailto:[email protected]>>
schrieb
am Mi. 18. Okt.
2017
um 14:56:
Hi Steve,

I think this is an error.
We never decided not to generate a jre image as far as I know.

Best regards,
     Goetz.
-----Original Message-----
From: ppc-aix-port-dev
[mailto:ppc-aix-port-dev-<mailto:ppc-aix-port-dev->
[email protected]<mailto:[email protected]>] On
Behalf
Of Steve Groeger
Sent: Mittwoch, 18. Oktober 2017 14:34
To:
[email protected]<mailto:ppc-aix-port-
[email protected]>
Subject: AIX build not generating a jre image

Hi all,

When building OpenJDK9 on AIX should the build generate a JRE image ie
build/aix-ppc64-normal-server-release/images/jre/bin as well as a JDK
image
ie build/aix-ppc64-normal-server-release/images/jdk/bin?  When I try
building on my AIX system it is only generating a JDK image. Is this a
issue or is
it working correctly?


Thanks
Steve Groeger
Java Runtimes Development
IBM Hursley
IBM United Kingdom Ltd
Tel: (44) 1962 816911 Mobex: 279990 Mobile: 07718 517 129
Fax (44) 1962 816800
Lotus Notes: Steve Groeger/UK/IBM
Internet: [email protected]<mailto:[email protected]>
<mailto:[email protected]<mailto:[email protected]>>

Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with
number
741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6
3AU
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with
number
741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6
3AU






Reply via email to