From 8ec5adc953d6bbabbe62d7f7229f146202704e53 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Tue, 31 May 2016 06:26:22 -0500 Subject: cmake: use supplied RPATH instead of guessing --- pkgs/development/tools/build-managers/cmake/setup-hook.sh | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'pkgs') diff --git a/pkgs/development/tools/build-managers/cmake/setup-hook.sh b/pkgs/development/tools/build-managers/cmake/setup-hook.sh index eaabb37f4987..adf05f1af978 100755 --- a/pkgs/development/tools/build-managers/cmake/setup-hook.sh +++ b/pkgs/development/tools/build-managers/cmake/setup-hook.sh @@ -47,9 +47,15 @@ cmakeConfigurePhase() { cmakeFlags="-DCMAKE_INSTALL_LIBDIR=${!outputLib}/lib $cmakeFlags" cmakeFlags="-DCMAKE_INSTALL_INCLUDEDIR=${!outputDev}/include $cmakeFlags" - # Avoid cmake resetting the rpath of binaries, on make install - # And build always Release, to ensure optimisation flags - cmakeFlags="-DCMAKE_BUILD_TYPE=Release -DCMAKE_SKIP_BUILD_RPATH=ON $cmakeFlags" + # Always build Release, to ensure optimisation flags. + cmakeFlags="-DCMAKE_BUILD_TYPE=Release $cmakeFlags" + # Do not change the RPATH between build and install, simply + # build with the correct RPATH in the first place. + cmakeFlags="-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE $cmakeFlags" + # Do not try to guess the correct RPATH based on linker flags. + cmakeFlags="-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE $cmakeFlags" + # Just use exactly our RPATH. + cmakeFlags="-DCMAKE_INSTALL_RPATH=$CMAKE_INSTALL_RPATH $cmakeFlags" echo "cmake flags: $cmakeFlags ${cmakeFlagsArray[@]}" @@ -77,6 +83,7 @@ makeCmakeFindLibs(){ ;; -L*) export CMAKE_LIBRARY_PATH="$CMAKE_LIBRARY_PATH${CMAKE_LIBRARY_PATH:+:}${flag:2}" + export CMAKE_INSTALL_RPATH="$CMAKE_INSTALL_RPATH${CMAKE_INSTALL_RPATH:+:}${flag:2}" ;; esac done -- cgit 1.4.1 From ca34e075e45b625fba536af69409711140c7daff Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Tue, 31 May 2016 06:27:18 -0500 Subject: qt56.qtbase: create symlink farm in one pass --- .../libraries/qt-5/5.6/qtbase/setup-hook.sh | 27 ++++++++++++++++------ pkgs/development/libraries/qt-5/5.6/setup-hook.sh | 9 ++------ 2 files changed, 22 insertions(+), 14 deletions(-) (limited to 'pkgs') diff --git a/pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh b/pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh index d1ad9584aa7e..0e73e0d31ebf 100644 --- a/pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh +++ b/pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh @@ -112,7 +112,7 @@ EOF # Set PATH to find qmake first in a preConfigure hook # It must run after all the envHooks! - postHooks+=(_qtSetQmakePath) + preConfigureHooks+=(_qtSetQmakePath) fi qt5LinkModuleDir() { @@ -122,10 +122,23 @@ qt5LinkModuleDir() { fi } -qt5LinkModuleDir @out@ "lib" +NIX_QT5_MODULES="${NIX_QT5_MODULES}${NIX_QT5_MODULES:+:}@out@" +NIX_QT5_MODULES_DEV="${NIX_QT5_MODULES_DEV}${NIX_QT5_MODULES_DEV:+:}@dev@" -qt5LinkModuleDir @dev@ "bin" -qt5LinkModuleDir @dev@ "include" -qt5LinkModuleDir @dev@ "lib" -qt5LinkModuleDir @dev@ "mkspecs" -qt5LinkModuleDir @dev@ "share" +_qtLinkAllModules() { + IFS=: read -a modules <<< $NIX_QT5_MODULES + for module in ${modules[@]}; do + qt5LinkModuleDir "$module" "lib" + done + + IFS=: read -a modules <<< $NIX_QT5_MODULES_DEV + for module in ${modules[@]}; do + qt5LinkModuleDir "$module" "bin" + qt5LinkModuleDir "$module" "include" + qt5LinkModuleDir "$module" "lib" + qt5LinkModuleDir "$module" "mkspecs" + qt5LinkModuleDir "$module" "share" + done +} + +preConfigureHooks+=(_qtLinkAllModules) diff --git a/pkgs/development/libraries/qt-5/5.6/setup-hook.sh b/pkgs/development/libraries/qt-5/5.6/setup-hook.sh index 212ac903eeeb..e41433c11386 100644 --- a/pkgs/development/libraries/qt-5/5.6/setup-hook.sh +++ b/pkgs/development/libraries/qt-5/5.6/setup-hook.sh @@ -1,7 +1,2 @@ -qt5LinkModuleDir @out@ "lib" - -qt5LinkModuleDir @dev@ "bin" -qt5LinkModuleDir @dev@ "include" -qt5LinkModuleDir @dev@ "lib" -qt5LinkModuleDir @dev@ "mkspecs" -qt5LinkModuleDir @dev@ "share" +NIX_QT5_MODULES="${NIX_QT5_MODULES}${NIX_QT5_MODULES:+:}@out@" +NIX_QT5_MODULES_DEV="${NIX_QT5_MODULES_DEV}${NIX_QT5_MODULES_DEV:+:}@dev@" -- cgit 1.4.1 From 94fcfc9c419251046efebd477f5f6efa123ae581 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Tue, 31 May 2016 12:57:42 -0500 Subject: extra-cmake-modules: don't change the RPATH settings We don't need KDE upstream messing up our RPATH. --- pkgs/desktops/kde-5/frameworks-5.22/extra-cmake-modules/setup-hook.sh | 1 + 1 file changed, 1 insertion(+) (limited to 'pkgs') diff --git a/pkgs/desktops/kde-5/frameworks-5.22/extra-cmake-modules/setup-hook.sh b/pkgs/desktops/kde-5/frameworks-5.22/extra-cmake-modules/setup-hook.sh index 49ac5d0c8b5f..205aa0ea4f11 100644 --- a/pkgs/desktops/kde-5/frameworks-5.22/extra-cmake-modules/setup-hook.sh +++ b/pkgs/desktops/kde-5/frameworks-5.22/extra-cmake-modules/setup-hook.sh @@ -29,6 +29,7 @@ _ecmPropagateSharedData() { _ecmConfig() { # Because we need to use absolute paths here, we must set *all* the paths. + cmakeFlags+=" -DKDE_SKIP_RPATH_SETTINGS=TRUE" cmakeFlags+=" -DKDE_INSTALL_EXECROOTDIR=${!outputBin}" cmakeFlags+=" -DKDE_INSTALL_BINDIR=${!outputBin}/bin" cmakeFlags+=" -DKDE_INSTALL_SBINDIR=${!outputBin}/sbin" -- cgit 1.4.1