Change JDK-8044480 breaks OpenJDK builds which bundle other libraries

Erik Joelsson erik.joelsson at oracle.com
Mon Oct 27 16:33:25 UTC 2014


Hello Volker,

I very much doubt that JDK-8044480 had anything to do with this. It only 
touched Bundles.gmk which is only used on Macosx. There was a change 
recently to how freetype is copied: 
https://bugs.openjdk.java.net/browse/JDK-8058756

The bug wanted to fix the lack of an "$(MKDIR) -p $(@D)" line in the 
recipe. I recommended replacing the copy with an $(install-file) 
instead. It seems that wasn't a good idea in this case as install-file 
is set to preserve symlinks. To fix your problem, simply replace 
$(install-file) with mkdir and explicit cp, with follow symlinks, and a 
comment describing why install-file can't be used.

/Erik


On 2014-10-27 17:08, Volker Simonis wrote:
> Hi,
>
> your change for "JDK-8044480: JDK image target overwrites
> lib/server/libjsig.dylib symlink with a copy of lib/libjsig.dylib"
> breaks our OpenJDK builds on Solaris. The problem is that because on
> Solaris "freetype" isn't installed by default on every machine we have
> manually build a version of freetype for Solaris into a shared
> directory and use that one for our builds.
>
> The lib-directory of a vanilly freetype build looks as follows (which
> is not unusual):
>
> $ ls -la freetype/lib/
> total 1536
> drwxr-xr-x   2 d046063  cproj       4096 Apr 26  2013 .
> drwxr-xr-x   4 d046063  cproj       4096 Apr 26  2013 ..
> lrwxrwxrwx   1 d046063  cproj         20 Apr 26  2013 libfreetype.so
> -> libfreetype.so.6.8.0
> lrwxrwxrwx   1 d046063  cproj         20 Apr 26  2013 libfreetype.so.6
> -> libfreetype.so.6.8.0
> -rwxr-xr-x   1 d046063  cproj     773448 Apr 26  2013 libfreetype.so.6.8.0
>
> When using "--with-freetype" this will automatically enable
> "freetype-bundling" and this in turn will require to copy the freetype
> libraries into the image during the build. Unfortunately, after change
> JDK-8044480, this will now only copy the corresponding symlink which
> meaningless in the jdk-directory and leads to a subsequent build error
> later on:
>
> gmake[3]: *** No rule to make target
> `/net/usr.work/openjdk/nb/sun_64/nightly/output-jdk9/jdk/lib/sparcv9/libfreetype.so.6',
> needed by `/net/usr.work/openjdk/nb/sun_64/nightly/output-jdk9/images/j2re-image/lib/sparcv9/libfreetype.so.6'.
> Stop.
>
> The same problem may also apply to other bundled libraries like zlib,
> png, jpeg, etc..
>
> Do you have any idea how we could solve this problem? Or the other way
> round - do you see a possibility how to fix "JDK-8044480: JDK image
> target overwrites lib/server/libjsig.dylib symlink with a copy of
> lib/libjsig.dylib" without affecting the bundling of third part
> libraries?
>
> Thank you and best regards,
> Volker




More information about the build-dev mailing list