From af2ecc27fccc7f1e3ed3081f79f2894dde6b8f30 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Wed, 21 Dec 2016 17:47:12 -0600 Subject: kde5.kdeWrapper: use small symlink farms This partially addresses #21345, but we may need to reduce disk usage further. --- .../libraries/kde-frameworks/default.nix | 2 +- .../libraries/kde-frameworks/kde-wrapper.nix | 51 ++++++++-------------- 2 files changed, 20 insertions(+), 33 deletions(-) (limited to 'pkgs') diff --git a/pkgs/development/libraries/kde-frameworks/default.nix b/pkgs/development/libraries/kde-frameworks/default.nix index 936a3953a51..93a8d62ed1d 100644 --- a/pkgs/development/libraries/kde-frameworks/default.nix +++ b/pkgs/development/libraries/kde-frameworks/default.nix @@ -57,7 +57,7 @@ let }); kdeWrapper = import ./kde-wrapper.nix { - inherit (pkgs) stdenv lib makeWrapper; + inherit (pkgs) stdenv lib makeWrapper buildEnv; }; 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 3591e20d11f..890ec1e4eec 100644 --- a/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix +++ b/pkgs/development/libraries/kde-frameworks/kde-wrapper.nix @@ -1,53 +1,40 @@ -{ stdenv, lib, makeWrapper }: +{ stdenv, lib, makeWrapper, buildEnv }: drv: { targets, paths ? [] }: +let + env = buildEnv { + inherit (drv) name meta; + paths = builtins.map lib.getBin ([drv] ++ paths); + pathsToLink = [ "/bin" "/share" "/lib/qt5" "/etc/xdg" ]; + }; +in + stdenv.mkDerivation { inherit (drv) name meta; + preferLocalBuild = true; paths = builtins.map lib.getBin ([drv] ++ paths); - inherit drv targets; + inherit drv env targets; passthru = { unwrapped = drv; }; nativeBuildInputs = [ makeWrapper ]; - unpackPhase = "true"; - configurePhase = "runHook preConfigure; runHook postConfigure"; - 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 + builder = builtins.toFile "builder.sh" '' + . $stdenv/setup for t in $targets; do if [ -a "$drv/$t" ]; then makeWrapper "$drv/$t" "$out/$t" \ --argv0 '"$0"' \ - --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" + --suffix PATH : "$env/bin" \ + --prefix XDG_CONFIG_DIRS : "$env/share" \ + --prefix XDG_DATA_DIRS : "$env/etc/xdg" \ + --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 -- cgit 1.4.1