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