diff options
author | Thomas Tuegel <ttuegel@gmail.com> | 2016-12-21 17:47:12 -0600 |
---|---|---|
committer | Thomas Tuegel <ttuegel@gmail.com> | 2016-12-22 07:58:57 -0600 |
commit | af2ecc27fccc7f1e3ed3081f79f2894dde6b8f30 (patch) | |
tree | 6552498f22f4321f4ec379b244047f92efc453cb /pkgs | |
parent | e6fa6b21e14df0d204a1f428254651e191270e7a (diff) | |
download | nixpkgs-af2ecc27fccc7f1e3ed3081f79f2894dde6b8f30.tar nixpkgs-af2ecc27fccc7f1e3ed3081f79f2894dde6b8f30.tar.gz nixpkgs-af2ecc27fccc7f1e3ed3081f79f2894dde6b8f30.tar.bz2 nixpkgs-af2ecc27fccc7f1e3ed3081f79f2894dde6b8f30.tar.lz nixpkgs-af2ecc27fccc7f1e3ed3081f79f2894dde6b8f30.tar.xz nixpkgs-af2ecc27fccc7f1e3ed3081f79f2894dde6b8f30.tar.zst nixpkgs-af2ecc27fccc7f1e3ed3081f79f2894dde6b8f30.zip |
kde5.kdeWrapper: use small symlink farms
This partially addresses #21345, but we may need to reduce disk usage further.
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/development/libraries/kde-frameworks/default.nix | 2 | ||||
-rw-r--r-- | pkgs/development/libraries/kde-frameworks/kde-wrapper.nix | 51 |
2 files changed, 20 insertions, 33 deletions
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 |