JDK-8185804 : rpath is not set properly in OSX build
  • Type: Bug
  • Component: javafx
  • Sub-Component: web
  • Affected Version: 8,9,10
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: os_x
  • CPU: x86
  • Submitted: 2017-08-03
  • Updated: 2020-01-31
  • Resolved: 2017-08-18
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 10 JDK 8
10Fixed 8u162Fixed
Related Reports
Cloners :  
Description
Analysis of the WebKit binaries shows that libjfxwebkit.dylib has no RPATH information which leads to issues while loading libDumpRenderTree.dylib

We need to fix the CMake config files to build with set(CMAKE_MACOSX_RPATH TRUE).
Comments
changeset: 55ca00559e8a user: arajkumar date: Fri Aug 18 14:03:03 2017 +0530 description: 8185804: rpath is not set properly in OSX build Reviewed-by: ghb, mbilla, kcr URL: http://hg.openjdk.java.net/openjfx/10-dev/rt/rev/55ca00559e8a
18-08-2017

Look good. +1
16-08-2017

I'll retest early next week (Monday or Tuesday).
12-08-2017

Issue was due to missing CMAKE_INSTALL_RPATH, corrected it the below patch. diff -r 542116615e59 modules/javafx.web/src/main/native/Source/cmake/OptionsJava.cmake --- a/modules/javafx.web/src/main/native/Source/cmake/OptionsJava.cmake Mon Aug 07 11:30:54 2017 +0530 +++ b/modules/javafx.web/src/main/native/Source/cmake/OptionsJava.cmake Sat Aug 12 13:38:52 2017 +0530 @@ -46,7 +46,10 @@ find_package(LibXml2 2.8.0 REQUIRED) find_package(LibXslt 1.1.7 REQUIRED) - set(CMAKE_SKIP_RPATH TRUE) + + set(CMAKE_MACOSX_RPATH TRUE) + set(CMAKE_INSTALL_RPATH "@loader_path/.") + set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) elseif (UNIX) #### ICU #### set(ICU_JAVA_COMMON_LIB icuuc) $ otool -l modules/javafx.web/build/mac/Release/lib/*.dylib | grep LC_RPATH -A2 cmd LC_RPATH cmdsize 32 path @loader_path/. (offset 12) -- cmd LC_RPATH cmdsize 32 path @loader_path/. (offset 12)
12-08-2017

I could see the hardcoded path when I use `otool -l`. otool -l modules/javafx.web/build/mac/Release/lib/*.dylib | grep LC_RPATH -A2
12-08-2017

Hi [~kcr], I'm not seeing any hardcoded path, How did you verify that? Below is a `otool -L` output with after this fix, @rpath/libjfxwebkit.dylib (compatibility version 0.0.0, current version 0.0.0) /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0) /usr/lib/libxml2.2.dylib (compatibility version 10.0.0, current version 10.9.0) /usr/lib/libxslt.1.dylib (compatibility version 3.0.0, current version 3.26.0) @rpath/libjvm.dylib (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 20.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 855.17.0) /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0) /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1056.16.0) /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
12-08-2017

This is a NO-GO. When I build it on my OS X system, I see that it puts the absolute PATH of the boot JDK in as RPATH, which is not correct.
11-08-2017

I'll take a look today.
10-08-2017

[~kcr], Do you have any concerns?
10-08-2017

Even jfxmedia uses -install_name with @rpath, below is a otool -L output of libjfxmedia_avf.dylib build/modular-sdk/modules_libs/javafx.media/libjfxmedia_avf.dylib: @rpath/libjfxmedia_avf.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0) /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 20.0.0) /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo (compatibility version 1.2.0, current version 1.8.0) /System/Library/Frameworks/AVFoundation.framework/Versions/A/AVFoundation (compatibility version 1.0.0, current version 2.0.0) /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0) /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/MediaToolbox.framework/Versions/A/MediaToolbox (compatibility version 1.0.0, current version 1.0.0) @rpath/libjfxmedia.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 855.17.0) /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1056.16.0)
10-08-2017

+1
08-08-2017

Thanks [~arajkumar] +1
08-08-2017

Fix: diff -r a654f851e724 modules/javafx.web/src/main/native/Source/cmake/OptionsJava.cmake --- a/modules/javafx.web/src/main/native/Source/cmake/OptionsJava.cmake Tue Aug 01 14:20:34 2017 +0530 +++ b/modules/javafx.web/src/main/native/Source/cmake/OptionsJava.cmake Thu Aug 03 23:17:52 2017 +0530 @@ -46,7 +46,7 @@ find_package(LibXml2 2.8.0 REQUIRED) find_package(LibXslt 1.1.7 REQUIRED) - set(CMAKE_SKIP_RPATH TRUE) + set(CMAKE_MACOSX_RPATH TRUE) elseif (UNIX) #### ICU #### set(ICU_JAVA_COMMON_LIB icuuc)
03-08-2017