diff options
author | Thomas Tuegel <ttuegel@gmail.com> | 2016-07-31 10:29:07 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-31 10:29:07 -0500 |
commit | ac98cc4d94aa8956866acd1776676df66d9fe8e9 (patch) | |
tree | d1ef1c2727e71d20e9fef54e840ee5fe256e03c8 /pkgs/development | |
parent | 0d259f841b560acc1c5a2c9cbbd38614019bdba8 (diff) | |
parent | 551f26fc71c7dd82751d9e5fda27caff1d3bc15c (diff) | |
download | nixlib-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')
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) |