From 58811df2725be69daffd0c74aa11c3cf04443b2d Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Wed, 16 Nov 2016 07:22:06 -0600 Subject: [PATCH 1/2] kdeWrapper: reduce closure size --- .../libraries/kde-frameworks/default.nix | 1 - .../libraries/kde-frameworks/kde-wrapper.nix | 41 +++++++++++++------ 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/pkgs/development/libraries/kde-frameworks/default.nix b/pkgs/development/libraries/kde-frameworks/default.nix index 4b214c37a69..b69e79fd000 100644 --- a/pkgs/development/libraries/kde-frameworks/default.nix +++ b/pkgs/development/libraries/kde-frameworks/default.nix @@ -63,7 +63,6 @@ let kdeWrapper = import ./kde-wrapper.nix { inherit (pkgs) stdenv lib makeWrapper; - inherit kdeEnv; }; attica = callPackage ./attica.nix {}; diff --git a/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix b/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix index 153ca31fd62..2dc5cc91128 100644 --- a/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix +++ b/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix @@ -1,17 +1,14 @@ -{ stdenv, lib, makeWrapper, kdeEnv }: +{ stdenv, lib, makeWrapper }: drv: { targets, paths ? [] }: -let - env = kdeEnv drv paths; -in stdenv.mkDerivation { inherit (drv) name; - drv = lib.getBin drv; - inherit env targets; + paths = builtins.map lib.getBin ([drv] ++ paths); + inherit drv targets; passthru = { unwrapped = drv; }; nativeBuildInputs = [ makeWrapper ]; @@ -21,16 +18,36 @@ stdenv.mkDerivation { buildPhase = "true"; installPhase = '' + propagated= + for p in $drv $paths; do + findInputs $p propagated propagated-user-env-packages + done + + wrap_PATH="$out/bin" + wrap_XDG_DATA_DIRS= + wrap_XDG_CONFIG_DIRS= + wrap_QML_IMPORT_PATH= + wrap_QML2_IMPORT_PATH= + wrap_QT_PLUGIN_PATH= + for p in $propagated; do + addToSearchPath wrap_PATH "$p/bin" + addToSearchPath wrap_XDG_DATA_DIRS "$p/share" + addToSearchPath wrap_XDG_CONFIG_DIRS "$p/etc/xdg" + addToSearchPath wrap_QML_IMPORT_PATH "$p/lib/qt5/imports" + addToSearchPath wrap_QML2_IMPORT_PATH "$p/lib/qt5/qml" + addToSearchPath wrap_QT_PLUGIN_PATH "$p/lib/qt5/plugins" + done + 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" + --suffix PATH : "$wrap_PATH" \ + --prefix XDG_CONFIG_DIRS : "$wrap_XDG_CONFIG_DIRS" \ + --prefix XDG_DATA_DIRS : "$wrap_XDG_DATA_DIRS" \ + --set QML_IMPORT_PATH "$wrap_QML_IMPORT_PATH" \ + --set QML2_IMPORT_PATH "$wrap_QML2_IMPORT_PATH" \ + --set QT_PLUGIN_PATH "$wrap_QT_PLUGIN_PATH" else echo "no such file or directory: $drv/$t" exit 1 From 5da372c36edb1e36db7ef392d4642b935a591d9a Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Wed, 16 Nov 2016 07:25:51 -0600 Subject: [PATCH 2/2] remove kdeEnv --- .../libraries/kde-frameworks/default.nix | 5 --- .../libraries/kde-frameworks/kde-env.nix | 31 ------------------- 2 files changed, 36 deletions(-) delete mode 100644 pkgs/development/libraries/kde-frameworks/kde-env.nix diff --git a/pkgs/development/libraries/kde-frameworks/default.nix b/pkgs/development/libraries/kde-frameworks/default.nix index b69e79fd000..1ef8207e50a 100644 --- a/pkgs/development/libraries/kde-frameworks/default.nix +++ b/pkgs/development/libraries/kde-frameworks/default.nix @@ -56,11 +56,6 @@ 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; }; diff --git a/pkgs/development/libraries/kde-frameworks/kde-env.nix b/pkgs/development/libraries/kde-frameworks/kde-env.nix deleted file mode 100644 index 5ddf89a0129..00000000000 --- a/pkgs/development/libraries/kde-frameworks/kde-env.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ stdenv, lib, lndir }: - -drv: pkgs: - -stdenv.mkDerivation { - name = "kde-env-${drv.name}"; - nativeBuildInputs = [ lndir ]; - envPkgs = builtins.map lib.getBin ([drv] ++ pkgs); - unpackPhase = "true"; - configurePhase = "runHook preConfigure; runHook postConfigure"; - buildPhase = "true"; - installPhase = '' - runHook preInstall - - propagated="" - for i in $envPkgs; 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 - ''; -}