(solved, I think) Re: openjdk build failures on "nm"
- Reply: Harald Eilertsen : "Re: (solved, I think) Re: openjdk build failures on "nm""
- In reply to: Harald Eilertsen : "Re: openjdk build failures on "nm""
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 15 Sep 2025 08:14:59 UTC
Van: Harald Eilertsen <haraldei@anduin.net> Datum: donderdag, 11 september 2025 10:15 Aan: Ronald Klop <ronald-lists@klop.ws> CC: java@freebsd.org Onderwerp: Re: openjdk build failures on "nm" > > On Thu, Sep 11, 2025 at 09:32:08AM +0200, Ronald Klop wrote: > > As it seems hard to debug, what do the java@ maintainers think of this experiment? > > > > diff --git a/java/openjdk17/Makefile b/java/openjdk17/Makefile > > index 5cb25e6aee72..ba7001ff2bd0 100644 > > --- a/java/openjdk17/Makefile > > +++ b/java/openjdk17/Makefile > > @@ -38,7 +38,7 @@ GH_PROJECT= jdk17u > > > > NO_CCACHE= yes > > > > -_MAKE_JOBS= # > > +MAKE_JOBS_UNSAFE= yes > > MAKE_ENV= LANG="C" \ > > LC_ALL="C" \ > > CLASSPATH="" \ > > That's well spotted! I think this is definitely worth trying. I'm no > expert on the ports Makefiles myself, but was told to use > MAKE_JOBS_UNSAFE instead in the review for openjdk24. Haven't gone > through all the ancient version yet, as my focus is mainly on mainline, > and these days on openjdk25. > > > I can commit this today to openjdk17 and if builds start to succeed to other openjdk* ports. > > I'm in favour! > > H! > > > Hi Harald, I found out what happens in openjdk23 and openjdk24 around _MAKE_JOBS. _MAKE_JOBS is an internal variable in Mk/bsd.port.mk used to add "-j<MAKE_JOBS_NUMBER>" to the make command in do-build. It was set empty to suppress passing -j, because the port otherwise gives this error: ===> Building for openjdk17-17.0.16+8.1_2 Error: 'make -jN' is not supported, use 'make JOBS=N' NB: this error comes from work/jdk17u-jdk-17.0.16-8-1/make/InitSupport.gmk:119 In /usr/ports/Mk/bsd.port.mk we have these lines of code: . if defined(DISABLE_MAKE_JOBS) || defined(MAKE_JOBS_UNSAFE) _MAKE_JOBS?= # MAKE_JOBS_NUMBER= 1 . else So setting _MAKE_JOBS is a side effect of MAKE_JOBS_UNSAFE. The suggestion of using MAKE_JOBS_UNSAFE was just another way of setting _MAKE_JOBS and MAKE_JOBS_NUMBER. But the MAKE_JOBS_NUMBER is never passed to the (implicit) do-build target of the ports Makefile. If you look in https://pkg-status.freebsd.org/beefy17/data/15stable-amd64-default/56c5cbbc8d99/logs/openjdk23-23.0.2+7.1_2.log and search for "jobs" you will find this: checking for number of cores... 48 checking for memory size... 130685 MB checking for appropriate number of jobs to run in parallel... 48 ... Build performance summary: * Build jobs: 48 So, in summary * MAKE_JOBS_UNSAFE sets _MAKE_JOBS empty and gives the suggestion of running without parallel jobs. But the port further ignores MAKE_JOBS_NUMBER and ... * The port decides to run with 48 parallel jobs as it looks at the number of CPUs. * A bit more documentation/comments around overriding the _MAKE_JOBS variable in the Makefile could have saved us quite some research. 😉 The current construction in openjdk17 handles MAKE_JOBS_NUMBER properly. And with that also the MAKE_JOBS_UNSAFE variable. After more testing we can use this blueprint in other openjdk ports. Also in openjdk23 and -24. They don't have flapping builds but can improve handling of MAKE_JOBS_NUMBER. Regards, Ronald.