RFR: 8214796: Create a jlink plugin for stripping debug info symbols from native libraries

Severin Gehwolf sgehwolf at redhat.com
Tue Feb 12 17:05:48 UTC 2019


Hi Erik,

On Tue, 2019-02-12 at 08:44 -0800, Erik Joelsson wrote:
> On 2019-02-12 01:35, Severin Gehwolf wrote:
> > Hi Erik,
> > 
> > On Mon, 2019-02-11 at 11:12 -0800, Erik Joelsson wrote:
> > > Hello Severin,
> > > 
> > > I think you also need a $(wildcard ) around it, but I may be wrong. Did
> > > you try this version?
> > Yes, this version works for me without $(wildcard). Why is it needed?
> 
> I had to go back and check again to verify, but now I'm sure. The list 
> of directories returned by FindModuleSrcDirs is all src dirs for the 
> module. Not all of them are going to contain the specific directory 
> jdk/tools/jlink/resources. This means SetupCompileProperties will get 
> called with a few non existing directories. While this will work fine, 
> the find implementation on some platforms will complain (Macos in 
> particular), so to avoid introducing confusing warning messages in the 
> build, it's better to filter down the list of directories to those that 
> actually exist.

OK, thanks for the explanation. I suppose $(wildcard ...) does that,
then? I've added it back locally but I have no way of testing whether
this makes any difference, except jdk/submit perhaps?

diff --git a/make/gensrc/Gensrc-jdk.jlink.gmk b/make/gensrc/Gensrc-jdk.jlink.gmk
--- a/make/gensrc/Gensrc-jdk.jlink.gmk
+++ b/make/gensrc/Gensrc-jdk.jlink.gmk
@@ -29,8 +29,9 @@
 
 ################################################################################
 
-JLINK_RESOURCES_DIRS := $(addsuffix /jdk/tools/jlink/resources, \
-    $(call FindModuleSrcDirs, jdk.jlink))
+# Use wildcard so as to avoid getting non-existing directories back
+JLINK_RESOURCES_DIRS := $(wildcard $(addsuffix /jdk/tools/jlink/resources, \
+    $(call FindModuleSrcDirs, jdk.jlink)))
 
 $(eval $(call SetupCompileProperties, JLINK_PROPERTIES, \
     SRC_DIRS := $(JLINK_RESOURCES_DIRS), \

Thanks,
Severin

> > > Also, please do not indent so much. We have style guidelines [1], which
> > > recommend 4 spaces for line break indentation.
> > OK, sorry. Fixed locally.
> 
> Thanks!
> 
> /Erik
> 
> > Thanks,
> > Severin
> > 
> > > /Erik
> > > 
> > > [1] http://openjdk.java.net/groups/build/doc/code-conventions.html
> > > 
> > > On 2019-02-11 10:03, Severin Gehwolf wrote:
> > > > Hi Erik,
> > > > 
> > > > On Thu, 2019-02-07 at 17:01 -0800, Erik Joelsson wrote:
> > > > > On 2019-02-07 11:09, Severin Gehwolf wrote:
> > > > > > Hi Erik,
> > > > > > 
> > > > > > On Thu, 2019-02-07 at 09:39 -0800, Erik Joelsson wrote:
> > > > > > > Hello Severin,
> > > > > > > 
> > > > > > > There is a macro for automatically finding all source dirs for a module.
> > > > > > > So in Gensrc-jdk.jlink.gmk, I think it would be better expressed using
> > > > > > > that macro, like this:
> > > > > > > 
> > > > > > > JLINK_RESOURCE_DIRS := $(wildcard $(addsuffix
> > > > > > > /jdk/tools/jlink/resources, $(call FindModuleSrcSdirs, jdk.jlink)))
> > > > > > > 
> > > > > > > The above could/should even be inlined.
> > > > > > I've considered this. It seems, though, that FindModuleSrcDirs comes
> > > > > > from make/common/Modules.gmk which isn't included in
> > > > > > make/gensrc/Gensrc-jdk.jlink.gmk. Given that it has already caused
> > > > > > problems with multiple includes of Modules.gmk (JDK-8213736) I was
> > > > > > reluctant to include it here too. Without the new include the above
> > > > > > won't work.
> > > > > > 
> > > > > > The approach I've taken here seems to be the lesser evil. Thoughts?
> > > > > I appreciate your concern, but JDK-8213736 was a problem in Main.gmk,
> > > > > which is part of where Modules.gmk gets bootstrapped. In any normal
> > > > > makefile (as in where stuff is just being built), the bootstrapping is
> > > > > done and including Modules.gmk is completely fine. Any
> > > > > <phase>-<module>.gmk file certainly qualifies here.
> > > > OK. Updated:
> > > > http://cr.openjdk.java.net/~sgehwolf/webrevs/JDK-8214796/05/
> > > > 
> > > > Thanks,
> > > > Severin
> > > > 
> > > > > /Erik
> > > > > 
> > > > > > Thanks,
> > > > > > Severin
> > > > > > 
> > > > > > > Otherwise build changes look ok.
> > > > > > > 
> > > > > > > /Erik
> > > > > > > 
> > > > > > > On 2019-02-07 09:09, Severin Gehwolf wrote:
> > > > > > > > Hi,
> > > > > > > > 
> > > > > > > > Could I please get reviews for this enhancement? It adds a
> > > > > > > > debug
> > > > > > > > symbols stripping plug-in to jlink for Linux and Unix
> > > > > > > > platforms. It's
> > > > > > > > the first platform specific jlink plugin and the approach taken
> > > > > > > > for
> > > > > > > > keeping it contained is to use a plugin specific
> > > > > > > > ResourceBundle.
> > > > > > > > Discussion for this happened in [1].
> > > > > > > > 
> > > > > > > > The test uses a native library which should never get debug
> > > > > > > > symbols
> > > > > > > > stripped during the test library build. As such, tiny
> > > > > > > > modifications
> > > > > > > > were needed to make/common/TestFilesCompilation.gmk. Hence,
> > > > > > > > build-dev
> > > > > > > > being on the list for this RFR. The test currently only runs on
> > > > > > > > Linux
> > > > > > > > and requires objcopy to be available. Otherwise the test is
> > > > > > > > being
> > > > > > > > skipped.
> > > > > > > > 
> > > > > > > > Example usage of this plugin is described in the bug.
> > > > > > > > 
> > > > > > > > webrev:
> > > > > > > > http://cr.openjdk.java.net/~sgehwolf/webrevs/JDK-8214796/04/webrev/
> > > > > > > > Bug: https://bugs.openjdk.java.net/browse/JDK-8214796
> > > > > > > > 
> > > > > > > > Testing: test/jdk/tools/jlink test/jdk/jdk/modules tests on
> > > > > > > > Linux
> > > > > > > > x86_64 (with good and broken objcopy) and the newly added test.
> > > > > > > > It's
> > > > > > > > currently running through jdk/submit too.
> > > > > > > > 
> > > > > > > > Thoughts?
> > > > > > > > 
> > > > > > > > Thanks,
> > > > > > > > Severin
> > > > > > > > 
> > > > > > > > [1]
> > > > > > > > http://mail.openjdk.java.net/pipermail/jigsaw-dev/2019-January/014109.html
> > > > > > > > 



More information about the build-dev mailing list