about summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
authorThomas Tuegel <ttuegel@gmail.com>2016-07-31 10:29:07 -0500
committerGitHub <noreply@github.com>2016-07-31 10:29:07 -0500
commitac98cc4d94aa8956866acd1776676df66d9fe8e9 (patch)
treed1ef1c2727e71d20e9fef54e840ee5fe256e03c8 /pkgs/development
parent0d259f841b560acc1c5a2c9cbbd38614019bdba8 (diff)
parent551f26fc71c7dd82751d9e5fda27caff1d3bc15c (diff)
downloadnixlib-ac98cc4d94aa8956866acd1776676df66d9fe8e9.tar
nixlib-ac98cc4d94aa8956866acd1776676df66d9fe8e9.tar.gz
nixlib-ac98cc4d94aa8956866acd1776676df66d9fe8e9.tar.bz2
nixlib-ac98cc4d94aa8956866acd1776676df66d9fe8e9.tar.lz
nixlib-ac98cc4d94aa8956866acd1776676df66d9fe8e9.tar.xz
nixlib-ac98cc4d94aa8956866acd1776676df66d9fe8e9.tar.zst
nixlib-ac98cc4d94aa8956866acd1776676df66d9fe8e9.zip
Merge pull request #17402 from ttuegel/plasma-closure-size
Plasma closure size
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/libraries/kde-frameworks/breeze-icons.nix2
-rw-r--r--pkgs/development/libraries/kde-frameworks/default.nix13
-rw-r--r--pkgs/development/libraries/kde-frameworks/kde-env.nix31
-rw-r--r--pkgs/development/libraries/kde-frameworks/kde-wrapper.nix47
-rw-r--r--pkgs/development/libraries/kde-frameworks/setup-hook.sh114
5 files changed, 125 insertions, 82 deletions
diff --git a/pkgs/development/libraries/kde-frameworks/breeze-icons.nix b/pkgs/development/libraries/kde-frameworks/breeze-icons.nix
index bf6df87a9720..c87ba75b2b46 100644
--- a/pkgs/development/libraries/kde-frameworks/breeze-icons.nix
+++ b/pkgs/development/libraries/kde-frameworks/breeze-icons.nix
@@ -5,6 +5,6 @@ kdeFramework {
   meta = { maintainers = [ lib.maintainers.ttuegel ]; };
   outputs = [ "out" ];
   nativeBuildInputs = [ ecm ];
-  propagatedBuildInputs = [ qtsvg ];
+  buildInputs = [ qtsvg ];
   propagatedUserEnvPkgs = [ qtsvg.out ];
 }
diff --git a/pkgs/development/libraries/kde-frameworks/default.nix b/pkgs/development/libraries/kde-frameworks/default.nix
index 74e9df114f0b..bf27d52dceb5 100644
--- a/pkgs/development/libraries/kde-frameworks/default.nix
+++ b/pkgs/development/libraries/kde-frameworks/default.nix
@@ -26,6 +26,9 @@ let
 
         outputs = args.outputs or [ "dev" "out" ];
 
+        propagatedUserEnvPkgs =
+          builtins.map lib.getBin (args.propagatedBuildInputs or []);
+
         cmakeFlags =
           (args.cmakeFlags or [])
           ++ [ "-DBUILD_TESTING=OFF" ]
@@ -50,6 +53,16 @@ let
         } // (args.meta or {});
       });
 
+    kdeEnv = import ./kde-env.nix {
+      inherit (pkgs) stdenv lib;
+      inherit (pkgs.xorg) lndir;
+    };
+
+    kdeWrapper = import ./kde-wrapper.nix {
+      inherit (pkgs) stdenv lib makeWrapper;
+      inherit kdeEnv;
+    };
+
     attica = callPackage ./attica.nix {};
     baloo = callPackage ./baloo.nix {};
     bluez-qt = callPackage ./bluez-qt.nix {};
diff --git a/pkgs/development/libraries/kde-frameworks/kde-env.nix b/pkgs/development/libraries/kde-frameworks/kde-env.nix
new file mode 100644
index 000000000000..c77ff49bfeaf
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kde-env.nix
@@ -0,0 +1,31 @@
+{ stdenv, lib, lndir }:
+
+drv: pkgs:
+
+stdenv.mkDerivation {
+  name = "kde-env-${drv.name}";
+  nativeBuildInputs = [ lndir ];
+  propagatedUserEnvPkgs = builtins.map lib.getBin ([drv] ++ pkgs);
+  unpackPhase = "true";
+  configurePhase = "runHook preConfigure; runHook postConfigure";
+  buildPhase = "true";
+  installPhase = ''
+    runHook preInstall
+
+    propagated=""
+    for i in $propagatedUserEnvPkgs; do
+        findInputs $i propagated propagated-user-env-packages
+    done
+
+    for tgt in bin etc/xdg lib/libexec lib/qt5 share; do
+        mkdir -p "$out/$tgt"
+        for p in $propagated; do
+            if [ -d "$p/$tgt" ]; then
+                lndir -silent "$p/$tgt" "$out/$tgt" >/dev/null 2>&1
+            fi
+        done
+    done
+
+    runHook postInstall
+  '';
+}
diff --git a/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix b/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix
new file mode 100644
index 000000000000..95f9cdcecb77
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix
@@ -0,0 +1,47 @@
+{ stdenv, lib, makeWrapper, kdeEnv }:
+
+drv:
+
+{ targets, paths ? [] }:
+
+let
+  env = kdeEnv drv paths;
+in
+stdenv.mkDerivation {
+  inherit (drv) name;
+
+  drv = lib.getBin drv;
+  inherit env targets;
+  passthru = { unwrapped = drv; };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  unpackPhase = "true";
+  configurePhase = "runHook preConfigure; runHook postConfigure";
+  buildPhase = "true";
+
+  installPhase = ''
+    for t in $targets; do
+        if [ -a "$drv/$t" ]; then
+            makeWrapper "$drv/$t" "$out/$t" \
+                --argv0 '"$0"' \
+                --suffix PATH : "$out/bin:$env/bin" \
+                --prefix XDG_CONFIG_DIRS : "$env/etc/xdg" \
+                --prefix XDG_DATA_DIRS : "$env/share" \
+                --set QML_IMPORT_PATH "$env/lib/qt5/imports" \
+                --set QML2_IMPORT_PATH "$env/lib/qt5/qml" \
+                --set QT_PLUGIN_PATH "$env/lib/qt5/plugins"
+        else
+            echo "no such file or directory: $drv/$t"
+            exit 1
+        fi
+    done
+
+    for s in applications dbus-1 desktop-directories icons mime polkit-1; do
+        if [ -d "$env/share/$s" ]; then
+            mkdir -p "$out/share"
+            ln -s "$env/share/$s" "$out/share/$s"
+        fi
+    done
+  '';
+}
diff --git a/pkgs/development/libraries/kde-frameworks/setup-hook.sh b/pkgs/development/libraries/kde-frameworks/setup-hook.sh
index 5363f4e30fdc..a1638ca541be 100644
--- a/pkgs/development/libraries/kde-frameworks/setup-hook.sh
+++ b/pkgs/development/libraries/kde-frameworks/setup-hook.sh
@@ -1,57 +1,9 @@
 _ecmSetXdgDirs() {
     addToSearchPathOnce XDG_DATA_DIRS "$1/share"
     addToSearchPathOnce XDG_CONFIG_DIRS "$1/etc/xdg"
-    addToSearchPathOnce RUNTIME_XDG_CONFIG_DIRS "$1/etc/xdg"
 }
 
-_ecmSharePaths=( \
-    "appdata" \
-    "applications" \
-    "config.cfg" \
-    "dbus-1" \
-    "desktop-directories" \
-    "doc" \
-    "icons" \
-    "kconf_update" \
-    "kservices5" \
-    "kservicetypes5" \
-    "knotifications5" \
-    "kxmlgui5" \
-    "locale" \
-    "mime" \
-    "polkit-1" \
-    "sounds" \
-    "templates" \
-    "wallpapers" \
-    )
-
-_ecmPropagateNative() {
-    for dir in ${_ecmSharePaths[@]}; do
-        if [ -d "$1/share/$dir" ]; then
-            propagateOnce propagatedNativeBuildInputs "$1"
-            if [ -z "$crossConfig" ]; then
-                propagateOnce propagatedUserEnvPkgs "$1"
-                addToSearchPathOnce RUNTIME_XDG_DATA_DIRS "$1/share"
-            fi
-            break
-        fi
-    done
-}
-
-envHooks+=(_ecmSetXdgDirs _ecmPropagate)
-
-_ecmPropagate() {
-    for dir in ${_ecmSharePaths[@]}; do
-        if [ -d "$1/share/$dir" ]; then
-            propagateOnce propagatedBuildInputs "$1"
-            propagateOnce propagatedUserEnvPkgs "$1"
-            addToSearchPathOnce RUNTIME_XDG_DATA_DIRS "$1/share"
-            break
-        fi
-    done
-}
-
-crossEnvHooks+=(_ecmPropagate)
+envHooks+=(_ecmSetXdgDirs)
 
 _ecmConfig() {
     # Because we need to use absolute paths here, we must set *all* the paths.
@@ -59,41 +11,41 @@ _ecmConfig() {
     cmakeFlags+=" -DKDE_INSTALL_BINDIR=${!outputBin}/bin"
     cmakeFlags+=" -DKDE_INSTALL_SBINDIR=${!outputBin}/sbin"
     cmakeFlags+=" -DKDE_INSTALL_LIBDIR=${!outputLib}/lib"
-    cmakeFlags+=" -DKDE_INSTALL_LIBEXECDIR=${!outputLib}/lib/libexec"
+    cmakeFlags+=" -DKDE_INSTALL_LIBEXECDIR=${!outputBin}/lib/libexec"
     cmakeFlags+=" -DKDE_INSTALL_CMAKEPACKAGEDIR=${!outputDev}/lib/cmake"
-    cmakeFlags+=" -DKDE_INSTALL_QTPLUGINDIR=${!outputLib}/lib/qt5/plugins"
-    cmakeFlags+=" -DKDE_INSTALL_PLUGINDIR=${!outputLib}/lib/qt5/plugins"
-    cmakeFlags+=" -DKDE_INSTALL_QTQUICKIMPORTSDIR=${!outputLib}/lib/qt5/imports"
-    cmakeFlags+=" -DKDE_INSTALL_QMLDIR=${!outputLib}/lib/qt5/qml"
+    cmakeFlags+=" -DKDE_INSTALL_QTPLUGINDIR=${!outputBin}/lib/qt5/plugins"
+    cmakeFlags+=" -DKDE_INSTALL_PLUGINDIR=${!outputBin}/lib/qt5/plugins"
+    cmakeFlags+=" -DKDE_INSTALL_QTQUICKIMPORTSDIR=${!outputBin}/lib/qt5/imports"
+    cmakeFlags+=" -DKDE_INSTALL_QMLDIR=${!outputBin}/lib/qt5/qml"
     cmakeFlags+=" -DKDE_INSTALL_INCLUDEDIR=${!outputInclude}/include"
     cmakeFlags+=" -DKDE_INSTALL_LOCALSTATEDIR=/var"
-    cmakeFlags+=" -DKDE_INSTALL_DATAROOTDIR=${!outputLib}/share"
-    cmakeFlags+=" -DKDE_INSTALL_DATADIR=${!outputLib}/share"
-    cmakeFlags+=" -DKDE_INSTALL_DOCBUNDLEDIR=${!outputLib}/share/doc/HTML"
-    cmakeFlags+=" -DKDE_INSTALL_KCFGDIR=${!outputLib}/share/config.kcfg"
-    cmakeFlags+=" -DKDE_INSTALL_KCONFUPDATEDIR=${!outputLib}/share/kconf_update"
-    cmakeFlags+=" -DKDE_INSTALL_KSERVICES5DIR=${!outputLib}/share/kservices5"
-    cmakeFlags+=" -DKDE_INSTALL_KSERVICETYPES5DIR=${!outputLib}/share/kservicetypes5"
-    cmakeFlags+=" -DKDE_INSTALL_KXMLGUI5DIR=${!outputLib}/share/kxmlgui5"
-    cmakeFlags+=" -DKDE_INSTALL_KNOTIFY5RCDIR=${!outputLib}/share/knotifications5"
-    cmakeFlags+=" -DKDE_INSTALL_ICONDIR=${!outputLib}/share/icons"
-    cmakeFlags+=" -DKDE_INSTALL_LOCALEDIR=${!outputLib}/share/locale"
-    cmakeFlags+=" -DKDE_INSTALL_SOUNDDIR=${!outputLib}/share/sounds"
-    cmakeFlags+=" -DKDE_INSTALL_TEMPLATEDIR=${!outputLib}/share/templates"
-    cmakeFlags+=" -DKDE_INSTALL_WALLPAPERDIR=${!outputLib}/share/wallpapers"
-    cmakeFlags+=" -DKDE_INSTALL_APPDIR=${!outputLib}/share/applications"
-    cmakeFlags+=" -DKDE_INSTALL_DESKTOPDIR=${!outputLib}/share/desktop-directories"
-    cmakeFlags+=" -DKDE_INSTALL_MIMEDIR=${!outputLib}/share/mime/packages"
-    cmakeFlags+=" -DKDE_INSTALL_METAINFODIR=${!outputLib}/share/appdata"
-    cmakeFlags+=" -DKDE_INSTALL_MANDIR=${!outputLib}/share/man"
-    cmakeFlags+=" -DKDE_INSTALL_INFODIR=${!outputLib}/share/info"
-    cmakeFlags+=" -DKDE_INSTALL_DBUSDIR=${!outputLib}/share/dbus-1"
-    cmakeFlags+=" -DKDE_INSTALL_DBUSINTERFACEDIR=${!outputLib}/share/dbus-1/interfaces"
-    cmakeFlags+=" -DKDE_INSTALL_DBUSSERVICEDIR=${!outputLib}/share/dbus-1/services"
-    cmakeFlags+=" -DKDE_INSTALL_DBUSSYSTEMSERVICEDIR=${!outputLib}/share/dbus-1/system-services"
-    cmakeFlags+=" -DKDE_INSTALL_SYSCONFDIR=${!outputLib}/etc"
-    cmakeFlags+=" -DKDE_INSTALL_CONFDIR=${!outputLib}/etc/xdg"
-    cmakeFlags+=" -DKDE_INSTALL_AUTOSTARTDIR=${!outputLib}/etc/xdg/autostart"
+    cmakeFlags+=" -DKDE_INSTALL_DATAROOTDIR=${!outputBin}/share"
+    cmakeFlags+=" -DKDE_INSTALL_DATADIR=${!outputBin}/share"
+    cmakeFlags+=" -DKDE_INSTALL_DOCBUNDLEDIR=${!outputBin}/share/doc/HTML"
+    cmakeFlags+=" -DKDE_INSTALL_KCFGDIR=${!outputBin}/share/config.kcfg"
+    cmakeFlags+=" -DKDE_INSTALL_KCONFUPDATEDIR=${!outputBin}/share/kconf_update"
+    cmakeFlags+=" -DKDE_INSTALL_KSERVICES5DIR=${!outputBin}/share/kservices5"
+    cmakeFlags+=" -DKDE_INSTALL_KSERVICETYPES5DIR=${!outputBin}/share/kservicetypes5"
+    cmakeFlags+=" -DKDE_INSTALL_KXMLGUI5DIR=${!outputBin}/share/kxmlgui5"
+    cmakeFlags+=" -DKDE_INSTALL_KNOTIFY5RCDIR=${!outputBin}/share/knotifications5"
+    cmakeFlags+=" -DKDE_INSTALL_ICONDIR=${!outputBin}/share/icons"
+    cmakeFlags+=" -DKDE_INSTALL_LOCALEDIR=${!outputBin}/share/locale"
+    cmakeFlags+=" -DKDE_INSTALL_SOUNDDIR=${!outputBin}/share/sounds"
+    cmakeFlags+=" -DKDE_INSTALL_TEMPLATEDIR=${!outputBin}/share/templates"
+    cmakeFlags+=" -DKDE_INSTALL_WALLPAPERDIR=${!outputBin}/share/wallpapers"
+    cmakeFlags+=" -DKDE_INSTALL_APPDIR=${!outputBin}/share/applications"
+    cmakeFlags+=" -DKDE_INSTALL_DESKTOPDIR=${!outputBin}/share/desktop-directories"
+    cmakeFlags+=" -DKDE_INSTALL_MIMEDIR=${!outputBin}/share/mime/packages"
+    cmakeFlags+=" -DKDE_INSTALL_METAINFODIR=${!outputBin}/share/appdata"
+    cmakeFlags+=" -DKDE_INSTALL_MANDIR=${!outputBin}/share/man"
+    cmakeFlags+=" -DKDE_INSTALL_INFODIR=${!outputBin}/share/info"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSDIR=${!outputBin}/share/dbus-1"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSINTERFACEDIR=${!outputBin}/share/dbus-1/interfaces"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSSERVICEDIR=${!outputBin}/share/dbus-1/services"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSSYSTEMSERVICEDIR=${!outputBin}/share/dbus-1/system-services"
+    cmakeFlags+=" -DKDE_INSTALL_SYSCONFDIR=${!outputBin}/etc"
+    cmakeFlags+=" -DKDE_INSTALL_CONFDIR=${!outputBin}/etc/xdg"
+    cmakeFlags+=" -DKDE_INSTALL_AUTOSTARTDIR=${!outputBin}/etc/xdg/autostart"
 }
 
 preConfigureHooks+=(_ecmConfig)