From 756b46a44976eba54cf83d763d5614137fbda477 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Wed, 18 Sep 2019 15:19:31 -0500 Subject: [PATCH] fix-qmake-libtool.sh --- pkgs/development/libraries/qt-5/5.12/default.nix | 4 +--- pkgs/development/libraries/qt-5/5.9/default.nix | 4 +--- .../libraries/qt-5/hooks/fix-qmake-libtool.sh | 14 ++++++++++++++ .../development/libraries/qt-5/hooks/qmake-hook.sh | 2 ++ pkgs/development/libraries/qt-5/modules/qtbase.nix | 1 + 5 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 pkgs/development/libraries/qt-5/hooks/fix-qmake-libtool.sh diff --git a/pkgs/development/libraries/qt-5/5.12/default.nix b/pkgs/development/libraries/qt-5/5.12/default.nix index 47a3589c2f9f..e8fad6e8381d 100644 --- a/pkgs/development/libraries/qt-5/5.12/default.nix +++ b/pkgs/development/libraries/qt-5/5.12/default.nix @@ -160,9 +160,7 @@ let qmake = makeSetupHook { deps = [ self.qtbase.dev ]; substitutions = { - inherit (stdenv) isDarwin; - qtbase_dev = self.qtbase.dev; - fix_qt_builtin_paths = ../hooks/fix-qt-builtin-paths.sh; + fix_qmake_libtool = ../hooks/fix-qmake-libtool.sh; }; } ../hooks/qmake-hook.sh; diff --git a/pkgs/development/libraries/qt-5/5.9/default.nix b/pkgs/development/libraries/qt-5/5.9/default.nix index a872f212ff71..721c1b40d592 100644 --- a/pkgs/development/libraries/qt-5/5.9/default.nix +++ b/pkgs/development/libraries/qt-5/5.9/default.nix @@ -154,9 +154,7 @@ let qmake = makeSetupHook { deps = [ self.qtbase.dev ]; substitutions = { - inherit (stdenv) isDarwin; - qtbase_dev = self.qtbase.dev; - fix_qt_builtin_paths = ../hooks/fix-qt-builtin-paths.sh; + fix_qmake_libtool = ../hooks/fix-qmake-libtool.sh; }; } ../hooks/qmake-hook.sh; diff --git a/pkgs/development/libraries/qt-5/hooks/fix-qmake-libtool.sh b/pkgs/development/libraries/qt-5/hooks/fix-qmake-libtool.sh new file mode 100644 index 000000000000..5acaeb824466 --- /dev/null +++ b/pkgs/development/libraries/qt-5/hooks/fix-qmake-libtool.sh @@ -0,0 +1,14 @@ +# Fix libtool libraries generated by qmake. +# qmake started inserting filenames of shared objects instead of the appropriate +# linker flags. fixQmakeLibtool searches for broken libtool libraries and +# replaces the filenames with the linker flags that should have been there. +fixQmakeLibtool() { + if [ -d "$1" ]; then + find "$1" -name '*.la' | while read la; do + sed -i "$la" \ + -e '/^dependency_libs/ s,\(/[^ ]\+\)/lib\([^/ ]\+\)\.so,-L\1 -l\2,g' + done + fi +} + +fixupOutputHooks+=('fixQmakeLibtool $prefix') diff --git a/pkgs/development/libraries/qt-5/hooks/qmake-hook.sh b/pkgs/development/libraries/qt-5/hooks/qmake-hook.sh index f6d332f29ba8..c3373983e325 100644 --- a/pkgs/development/libraries/qt-5/hooks/qmake-hook.sh +++ b/pkgs/development/libraries/qt-5/hooks/qmake-hook.sh @@ -1,3 +1,5 @@ +. @fix_qmake_libtool@ + qmakeFlags=( $qmakeFlags ) qmakePrePhase() { diff --git a/pkgs/development/libraries/qt-5/modules/qtbase.nix b/pkgs/development/libraries/qt-5/modules/qtbase.nix index 520f30cad0f6..3a0c9085f540 100644 --- a/pkgs/development/libraries/qt-5/modules/qtbase.nix +++ b/pkgs/development/libraries/qt-5/modules/qtbase.nix @@ -100,6 +100,7 @@ stdenv.mkDerivation { . "$fix_qt_builtin_paths" . "$fix_qt_module_paths" . ${../hooks/move-qt-dev-tools.sh} + . ${../hooks/fix-qmake-libtool.sh} ''; postPatch =