{lang}[GCCcore/13.2.0] Java-awtlibs v17.0.6 #22280
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
(created using
eb --new-pr)This is a result of the discussion in #22245 (comment)
TLDR:
Java has some libraries that use
X11andalsa-libs. They can only be RPATH-ed with the new EasyBlock changes from easybuilders/easybuild-easyblocks#3583 if the necessary dependencies (X11andalsa-libs) are listed, but those deps are at GCCcore level. Pushing Java toGCCcorelevel has substantial implications, and is something we want to avoid (for now).Instead, we came up with the solution to separate out the libraries that depend on
X11andalsa-libs(fortunately, it is a separable set). That's done by stripping these libs from the regular Java installation (done by default by the changes in depends on easybuilders/easybuild-easyblocks#3583 ) and by installing them with theJava-awtlibseasyconfig.This allows us to then include
Java-awtlibsonly in Java applications that require the use of the AWT libraries. That also means that only those applications will have to be pushed to theGCCcoretoolchain level, substantially limiting the impact of this change.To test:
Rebuild your local Java with easybuilders/easybuild-easyblocks#3583 (and
--rpath, if you want to test that part). Then, build Java-awtlibs with easybuilders/easybuild-easyblocks#3583 and #22280 (and--rpath). Note that I had to not only do--include-easyblocksfor this, but also add theJavaEasyBlock to thePYTHONPATH(otherwise,self.AWT_LIBSwasn't defined for theJava_minus_awtlibseasyblock).Building like this now gives me:
This is like expected:
libawt.sofinds the correctlibjvm.so(which is now in a different install prefix,$EBROOTJAVA) on it'sRPATHlibawt_xawt.sohas the$EBROOTX11/libdirectory in it's RPATH and indeed finds it's X11 dependencies there