jdk10 : simplify jexec build settings
Erik Joelsson
erik.joelsson at oracle.com
Tue Feb 14 16:57:02 UTC 2017
Hello,
Looks good to me.
Fixing jexec is a separate issue and not really build related.
/Erik
On 2017-02-14 17:27, Baesken, Matthias wrote:
>
> Hello, here is the webrev :
>
> http://cr.openjdk.java.net/~mbaesken/webrevs/8174242/
> <http://cr.openjdk.java.net/%7Embaesken/webrevs/8174242/>
>
> bug :
>
> https://bugs.openjdk.java.net/browse/JDK-8174242
>
> As discussed , I deleted the macosx jexec.c .
>
> Btw. I found out that jexec does not work (fully?) in jdk8 / 9
> ( seems this has to do with the change 8156478: 3 Buffer overrun
> defect groups in jexec.c )
>
> Executing a helloworld.jar with jexec leads to
>
> “invalid file (bad magic number): Exec format error” .
>
> Should I open another bug for this ?
>
> Best regards, Matthias
>
> *From:*Baesken, Matthias
> *Sent:* Freitag, 10. Februar 2017 13:19
> *To:* 'Erik Joelsson' <erik.joelsson at oracle.com>;
> build-dev at openjdk.java.net; core-libs-dev at openjdk.java.net
> *Cc:* Langer, Christoph <christoph.langer at sap.com>
> *Subject:* RE: jdk10 : simplify jexec build settings
>
> Hi Eric, thanks for the comment, I think I’ll remove the macosx source
> file .
>
> Btw. is there already some test for jexec (a “fast grep” through the
> jdk tests did not show me much) ?
>
> Best regards, Matthias
>
> *From:*Erik Joelsson [mailto:erik.joelsson at oracle.com]
> *Sent:* Freitag, 10. Februar 2017 09:49
> *To:* Baesken, Matthias <matthias.baesken at sap.com
> <mailto:matthias.baesken at sap.com>>; build-dev at openjdk.java.net
> <mailto:build-dev at openjdk.java.net>; core-libs-dev at openjdk.java.net
> <mailto:core-libs-dev at openjdk.java.net>
> *Cc:* Langer, Christoph <christoph.langer at sap.com
> <mailto:christoph.langer at sap.com>>
> *Subject:* Re: jdk10 : simplify jexec build settings
>
> Since the file has never been built, I would say remove the macosx
> source file. You can point directly to the unix source dir if you
> prefer too. No need to have dead logic for macosx in the makefile.
>
> /Erik
>
> On 2017-02-09 15:27, Baesken, Matthias wrote:
>
> I compared the jexec.c versions for macosx and unix
>
> ( jdk/src/java.base/macosx/native/launcher/jexec.c and
> jdk/src/java.base/unix/native/launcher/jexec.c )
>
> And to me it looks like the unix version could be used for
> macosx too (just in case there is a need to reenable the build
> of jexec.c for macosx one day again).
>
> Comments / suggestions ?
>
> Best regards, Matthias
>
> *From:*Baesken, Matthias
> *Sent:* Donnerstag, 9. Februar 2017 14:10
> *To:* 'Erik Joelsson' <erik.joelsson at oracle.com>
> <mailto:erik.joelsson at oracle.com>; build-dev at openjdk.java.net
> <mailto:build-dev at openjdk.java.net>;
> 'core-libs-dev at openjdk.java.net
> <mailto:core-libs-dev at openjdk.java.net>'
> <core-libs-dev at openjdk.java.net>
> <mailto:core-libs-dev at openjdk.java.net>
> *Cc:* Langer, Christoph <christoph.langer at sap.com>
> <mailto:christoph.langer at sap.com>
> *Subject:* RE: jdk10 : simplify jexec build settings
>
> Hello Erik, thanks for the comments .
>
> >>Then there is handling for macosx left , but the build is not enabled
> for macosx, does it still make sense to include the macosx
> handling (there is even a separate jexec.c for macosx) :
>
> >
>
> >This is indeed weird. I don't think we ever built jexec for macosx so the source file should likely
> be removed. That is however a question for core-libs I think.
>
> I include core-libs-dev , can someone comment on jexec on macosx ?
>
> Currently jexec.c is not compiled for macosx (jdk9/10), see
> jdk/make/launcher/Launcher-java.base.gmk .
>
> It is just compiled on linux .
>
> So I wonder - is it ok to remove the macosx handling in the
> mentioned makefile jdk/make/launcher/Launcher-java.base.gmk for
> jexec ?
>
> >This will automatically look in all the directories where source files are supposed to be and pick
> the most specific one if there are any with the same name.
>
> >Since the share launcher dir contains more src files, you will need to leave the INCLUDE_FILES
> := jexec.c this time.
>
> From what I observe in the linux build log, just jexec.c is
> compiled into jexec.o and then this single object is used to
> create the executable (“program”) jexec.
>
> Other src files are not used in the compilation of jexec, so just
> using $(JDK_TOPDIR)/src/$(MODULE)/unix/native/launcher would be
> fine (as long as macosx can be dropped).
>
> Best regards, Matthias
>
> *From:*Erik Joelsson [mailto:erik.joelsson at oracle.com]
> *Sent:* Donnerstag, 9. Februar 2017 13:42
> *To:* Baesken, Matthias <matthias.baesken at sap.com
> <mailto:matthias.baesken at sap.com>>; build-dev at openjdk.java.net
> <mailto:build-dev at openjdk.java.net>
> *Cc:* Langer, Christoph <christoph.langer at sap.com
> <mailto:christoph.langer at sap.com>>
> *Subject:* Re: jdk10 : simplify jexec build settings
>
> Hello,
>
> On 2017-02-09 12:36, Baesken, Matthias wrote:
>
> Hello , while adjusting the jspawnhelper build settings with
> 8174086, it has been noticed that the jexec build settings
> need some simplification as well.
>
> The bug
>
> https://bugs.openjdk.java.net/browse/JDK-8174242
>
> has been created for this.
>
> When looking into it, I had some questions :
>
> http://hg.openjdk.java.net/jdk10/jdk10/jdk/file/ae7afa9abe67/make/launcher/Launcher-java.base.gmk
>
> The makefile (make/launcher/Launcher-java.base.gmk ) handles
> Solaris 32bit, but is this really supported in jdk 9 or 10
> ( I think it was removed in 9 and only 64bit Solaris support
> remains ) ?
>
> We do not support 32bit Solaris. The issue with jexec for Solaris
> was raised a while back and the conclusion was to scrap support,
> so no need to build it for Solaris at all.
>
> ifeq ($(OPENJDK_TARGET_OS), solaris)
>
> ifeq ($(OPENJDK_TARGET_CPU_BITS), 32)
>
> BUILD_JEXEC := 1
>
> endif
>
> endif
>
> ifeq ($(OPENJDK_TARGET_OS), linux)
>
> BUILD_JEXEC := 1
>
> endif # OPENJDK_TARGET_OS
>
> #
>
> # jdk/make/java/jexec/Makefile
>
> #
>
> ifeq ($(BUILD_JEXEC), 1)
>
> Then there is handling for macosx left , but the build is not
> enabled for macosx, does it still make sense to include the
> macosx handling (there is even a separate jexec.c for macosx) :
>
> This is indeed weird. I don't think we ever built jexec for macosx
> so the source file should likely be removed. That is however a
> question for core-libs I think.
>
> The makefile logic shouldn't need to be that specific though. Our
> modern pattern for this is something like this:
>
> SRC := $(call uniq, $(wildcard \
> $(JDK_TOPDIR)/src/$(MODULE)/$(OPENJDK_TARGET_OS)/native/launcher \
> $(JDK_TOPDIR)/src/$(MODULE)/$(OPENJDK_TARGET_OS_TYPE)/native/launcher
> \
> $(JDK_TOPDIR)/src/$(MODULE)/share/native/launcher))
>
> This will automatically look in all the directories where source
> files are supposed to be and pick the most specific one if there
> are any with the same name. Since the share launcher dir contains
> more src files, you will need to leave the INCLUDE_FILES :=
> jexec.c this time.
>
> For libraries, we have abstracted this construct in the macro
> FindSrcDirForLib (LibCommon.gmk) but we haven't done the same for
> launchers yet.
>
> /Erik
>
> ifeq ($(OPENJDK_TARGET_OS), windows)
>
> else ifeq ($(OPENJDK_TARGET_OS), macosx)
>
> BUILD_JEXEC_SRC :=
> $(JDK_TOPDIR)/src/java.base/macosx/native/launcher
>
> else
>
> BUILD_JEXEC_SRC :=
> $(JDK_TOPDIR)/src/java.base/unix/native/launcher
>
> endif
>
> Should I remove the solaris 32bit / macosx handling for
> jexec from make/launcher/Launcher-java.base.gmk ?
>
> Regards, Matthias
>
More information about the build-dev
mailing list