diff options
author | Thomas Tuegel <ttuegel@gmail.com> | 2016-07-16 15:01:35 -0500 |
---|---|---|
committer | Thomas Tuegel <ttuegel@gmail.com> | 2016-07-16 15:02:19 -0500 |
commit | 343415e02e990f4c5acfe81d9d84c960ee124a52 (patch) | |
tree | 9e31a874e82e5cb77da7a86eda9bb34843e81d40 /pkgs/development/libraries/qt-5 | |
parent | 5c837e952d52fc34d123349fbad2f71048fbd131 (diff) |
qt55.qtbase: fix setup hook and QMake hook
Diffstat (limited to 'pkgs/development/libraries/qt-5')
-rw-r--r--[l---------] | pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh | 37 | ||||
-rw-r--r-- | pkgs/development/libraries/qt-5/5.5/qmake-hook.sh | 104 | ||||
-rw-r--r-- | pkgs/development/libraries/qt-5/5.5/qtbase/default.nix | 1 |
3 files changed, 50 insertions, 92 deletions
diff --git a/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh b/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh index 90d9b349fed5f..b0d0bec9e3f6a 120000..100644 --- a/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh +++ b/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh @@ -1 +1,36 @@ -../5.6/make-qt-wrapper.sh \ No newline at end of file +wrapQtProgram() { + local prog="$1" + shift + wrapProgram "$prog" \ + --set QT_PLUGIN_PATH "$QT_PLUGIN_PATH" \ + --set QML_IMPORT_PATH "$QML_IMPORT_PATH" \ + --set QML2_IMPORT_PATH "$QML2_IMPORT_PATH" \ + --prefix XDG_DATA_DIRS : "$RUNTIME_XDG_DATA_DIRS" \ + --prefix XDG_CONFIG_DIRS : "$RUNTIME_XDG_CONFIG_DIRS" \ + "$@" +} + +makeQtWrapper() { + local old="$1" + local new="$2" + shift + shift + makeWrapper "$old" "$new" \ + --set QT_PLUGIN_PATH "$QT_PLUGIN_PATH" \ + --set QML_IMPORT_PATH "$QML_IMPORT_PATH" \ + --set QML2_IMPORT_PATH "$QML2_IMPORT_PATH" \ + --prefix XDG_DATA_DIRS : "$RUNTIME_XDG_DATA_DIRS" \ + --prefix XDG_CONFIG_DIRS : "$RUNTIME_XDG_CONFIG_DIRS" \ + "$@" +} + +_makeQtWrapperSetup() { + # cannot use addToSearchPath because these directories may not exist yet + export QT_PLUGIN_PATH="$QT_PLUGIN_PATH${QT_PLUGIN_PATH:+:}${!outputLib}/lib/qt5/plugins" + export QML_IMPORT_PATH="$QML_IMPORT_PATH${QML_IMPORT_PATH:+:}${!outputLib}/lib/qt5/imports" + export QML2_IMPORT_PATH="$QML2_IMPORT_PATH${QML2_IMPORT_PATH:+:}${!outputLib}/lib/qt5/qml" + export RUNTIME_XDG_DATA_DIRS="$XDG_DATA_DIRS${XDG_DATA_DIRS:+:}${!outputBin}/share" + export RUNTIME_XDG_CONFIG_DIRS="$XDG_CONFIG_DIRS${XDG_CONFIG_DIRS:+:}${!outputBin}/etc/xdg" +} + +prePhases+=(_makeQtWrapperSetup) diff --git a/pkgs/development/libraries/qt-5/5.5/qmake-hook.sh b/pkgs/development/libraries/qt-5/5.5/qmake-hook.sh index 5401a71bc4c3b..696b4ea8dad38 100644 --- a/pkgs/development/libraries/qt-5/5.5/qmake-hook.sh +++ b/pkgs/development/libraries/qt-5/5.5/qmake-hook.sh @@ -1,50 +1,16 @@ -if [[ -z "$QMAKE" ]]; then - -_qtLinkDependencyDir() { - @lndir@/bin/lndir -silent "$1/$2" "$qtOut/$2" - if [ -n "$NIX_QT_SUBMODULE" ]; then - find "$1/$2" -printf "$2/%P\n" >> "$out/nix-support/qt-inputs" - fi -} - -_qtLinkModule() { - if [ -d "$1/mkspecs" ]; then - # $1 is a Qt module - _qtLinkDependencyDir "$1" mkspecs - - for dir in bin include lib share; do - if [ -d "$1/$dir" ]; then - _qtLinkDependencyDir "$1" "$dir" - fi - done - fi -} - -_qtRmModules() { - cat "$out/nix-support/qt-inputs" | while read file; do - if [ -h "$out/$file" ]; then - rm "$out/$file" - fi - done - - cat "$out/nix-support/qt-inputs" | while read file; do - if [ -d "$out/$file" ]; then - rmdir --ignore-fail-on-non-empty -p "$out/$file" - fi - done +qmakeConfigurePhase() { + runHook preConfigure - rm "$out/nix-support/qt-inputs" -} + qmake PREFIX=$out $qmakeFlags -_qtRmQmake() { - rm "$qtOut/bin/qmake" "$qtOut/bin/qt.conf" + runHook postConfigure } -_qtSetQmakePath() { - export PATH="$qtOut/bin${PATH:+:}$PATH" -} +if [ -z "$dontUseQmakeConfigure" -a -z "$configurePhase" ]; then + configurePhase=qmakeConfigurePhase +fi -_qtMultioutModuleDevs() { +_qtModuleMultioutDevsPre() { # We cannot simply set these paths in configureFlags because libQtCore retains # references to the paths it was built with. moveToOutput "bin" "${!outputDev}" @@ -53,12 +19,14 @@ _qtMultioutModuleDevs() { # The destination directory must exist or moveToOutput will do nothing mkdir -p "${!outputDev}/share" moveToOutput "share/doc" "${!outputDev}" +} +_qtModuleMultioutDevsPost() { # Move libtool archives and qmake project files to $dev/lib if [ "z${!outputLib}" != "z${!outputDev}" ]; then pushd "${!outputLib}" if [ -d "lib" ]; then - find lib \( -name '*.a' -o -name '*.la' -o -name '*.prl' -print0 \) | \ + find lib \( -name '*.a' -o -name '*.la' -o -name '*.prl' \) -print0 | \ while read -r -d $'\0' file; do mkdir -p "${!outputDev}/$(dirname "$file")" mv "${!outputLib}/$file" "${!outputDev}/$file" @@ -68,53 +36,7 @@ _qtMultioutModuleDevs() { fi } -_qtRmQtOut() { - rm -fr "$qtOut" -} - -qmakeConfigurePhase() { - runHook preConfigure - - qmake PREFIX=$out $qmakeFlags - - runHook postConfigure -} - -qtOut="" -if [[ -z "$NIX_QT_SUBMODULE" ]]; then - qtOut=`mktemp -d` -else - qtOut=$out -fi - -mkdir -p "$qtOut/bin" "$qtOut/mkspecs" "$qtOut/include" "$qtOut/nix-support" "$qtOut/lib" "$qtOut/share" - -cp "@qt_dev@/bin/qmake" "$qtOut/bin" -cat >"$qtOut/bin/qt.conf" <<EOF -[Paths] -Prefix = $qtOut -Plugins = lib/qt5/plugins -Imports = lib/qt5/imports -Qml2Imports = lib/qt5/qml -Documentation = share/doc/qt5 -EOF - -export QMAKE="$qtOut/bin/qmake" - -envHooks+=(_qtLinkModule) -# Set PATH to find qmake first in a preConfigure hook -# It must run after all the envHooks! -postHooks+=(_qtSetQmakePath) - -if [ -z "$dontUseQmakeConfigure" -a -z "$configurePhase" ]; then - configurePhase=qmakeConfigurePhase -fi - if [ -n "$NIX_QT_SUBMODULE" ]; then - postInstallHooks+=(_qtRmQmake _qtRmModules) - preFixupHooks+=(_qtMultioutModuleDevs) -else - postInstallHooks+=(_qtRmQtOut) -fi - + preFixupHooks+=(_qtModuleMultioutDevsPre) + postFixupHooks+=(_qtModuleMultioutDevsPost) fi diff --git a/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix b/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix index f3badc24244ca..fcd8701630740 100644 --- a/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix +++ b/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix @@ -276,6 +276,7 @@ stdenv.mkDerivation { fixQtModuleCMakeConfig "Xml" ''; + inherit lndir; setupHook = ./setup-hook.sh; enableParallelBuilding = true; |