diff options
author | Jan Tojnar <jtojnar@gmail.com> | 2019-09-10 19:09:12 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-10 19:09:12 +0200 |
commit | a0ec91d69f56e14b2285b94f70a0cbee1e1b74fa (patch) | |
tree | 7e25b243a9b210da74318fc3dae59f6a7c38f3c3 | |
parent | 1716d62f633cd091fce0d61517bb79504c300d36 (diff) | |
parent | 9b6789de7386edd9e7d199a8e15cb1c3c1f026b3 (diff) | |
download | nixpkgs-a0ec91d69f56e14b2285b94f70a0cbee1e1b74fa.tar nixpkgs-a0ec91d69f56e14b2285b94f70a0cbee1e1b74fa.tar.gz nixpkgs-a0ec91d69f56e14b2285b94f70a0cbee1e1b74fa.tar.bz2 nixpkgs-a0ec91d69f56e14b2285b94f70a0cbee1e1b74fa.tar.lz nixpkgs-a0ec91d69f56e14b2285b94f70a0cbee1e1b74fa.tar.xz nixpkgs-a0ec91d69f56e14b2285b94f70a0cbee1e1b74fa.tar.zst nixpkgs-a0ec91d69f56e14b2285b94f70a0cbee1e1b74fa.zip |
wrapGAppsHook: add wrapGApp helper (#68402)
wrapGAppsHook: add wrapGApp helper
-rw-r--r-- | doc/languages-frameworks/gnome.xml | 12 | ||||
-rw-r--r-- | pkgs/applications/graphics/gnome-photos/default.nix | 2 | ||||
-rw-r--r-- | pkgs/applications/misc/mysql-workbench/default.nix | 4 | ||||
-rw-r--r-- | pkgs/applications/science/electronics/kicad/default.nix | 2 | ||||
-rw-r--r-- | pkgs/build-support/setup-hooks/wrap-gapps-hook.sh | 26 | ||||
-rw-r--r-- | pkgs/desktops/deepin/dde-daemon/default.nix | 2 | ||||
-rw-r--r-- | pkgs/desktops/gnome-3/apps/gnome-characters/default.nix | 2 | ||||
-rw-r--r-- | pkgs/desktops/gnome-3/extensions/gsconnect/default.nix | 4 | ||||
-rw-r--r-- | pkgs/os-specific/linux/firmware/fwupd/default.nix | 6 | ||||
-rw-r--r-- | pkgs/tools/graphics/zbar/default.nix | 4 |
10 files changed, 41 insertions, 23 deletions
diff --git a/doc/languages-frameworks/gnome.xml b/doc/languages-frameworks/gnome.xml index 9e0f21a6c74..8b3151d5bf9 100644 --- a/doc/languages-frameworks/gnome.xml +++ b/doc/languages-frameworks/gnome.xml @@ -210,7 +210,7 @@ mkDerivation { dontWrapGApps = true; # Arguments to be passed to `makeWrapper`, only used by qt5’s mkDerivation - qtWrapperArgs [ + qtWrapperArgs = [ "\${gappsWrapperArgs[@]}" ]; } @@ -258,6 +258,16 @@ mkDerivation { </para> </listitem> </varlistentry> + <varlistentry xml:id="ssec-gnome-common-issues-weird-location"> + <term> + I need to wrap a binary outside <filename>bin</filename> and <filename>libexec</filename> directories. + </term> + <listitem> + <para> + You can manually trigger the wrapping with <function>wrapGApp</function> in <literal>preFixup</literal> phase. It takes a path to a program as a first argument; the remaining arguments are passed directly to <function xlink:href="#fun-wrapProgram">wrapProgram</function> function. + </para> + </listitem> + </varlistentry> </variablelist> </section> </section> diff --git a/pkgs/applications/graphics/gnome-photos/default.nix b/pkgs/applications/graphics/gnome-photos/default.nix index f591dd5a60d..ea4cf986f39 100644 --- a/pkgs/applications/graphics/gnome-photos/default.nix +++ b/pkgs/applications/graphics/gnome-photos/default.nix @@ -102,7 +102,7 @@ stdenv.mkDerivation rec { ''; postFixup = '' - wrapProgram "${placeholder "installedTests"}/libexec/installed-tests/gnome-photos/basic.py" "''${gappsWrapperArgs[@]}" + wrapGApp "${placeholder "installedTests"}/libexec/installed-tests/gnome-photos/basic.py" ''; passthru = { diff --git a/pkgs/applications/misc/mysql-workbench/default.nix b/pkgs/applications/misc/mysql-workbench/default.nix index 172f999223a..135745feec3 100644 --- a/pkgs/applications/misc/mysql-workbench/default.nix +++ b/pkgs/applications/misc/mysql-workbench/default.nix @@ -85,8 +85,8 @@ in stdenv.mkDerivation rec { find -L "$out/bin" -type f -executable -print0 \ | while IFS= read -r -d ''' file; do if [[ "''${file}" != *-bin ]]; then - echo "Wrapping program ''${file}" - wrapProgram "''${file}" "''${gappsWrapperArgs[@]}" + echo "Wrapping program $file" + wrapGApp "$file" fi done ''; diff --git a/pkgs/applications/science/electronics/kicad/default.nix b/pkgs/applications/science/electronics/kicad/default.nix index 3d169f50104..ac9362990a8 100644 --- a/pkgs/applications/science/electronics/kicad/default.nix +++ b/pkgs/applications/science/electronics/kicad/default.nix @@ -107,7 +107,7 @@ in stdenv.mkDerivation rec { buildPythonPath "$out $pythonPath" gappsWrapperArgs+=(--set PYTHONPATH "$program_PYTHONPATH") - wrapProgram "$out/bin/kicad" "''${gappsWrapperArgs[@]}" + wrapGApp "$out/bin/kicad" ''; meta = { diff --git a/pkgs/build-support/setup-hooks/wrap-gapps-hook.sh b/pkgs/build-support/setup-hooks/wrap-gapps-hook.sh index 906b1db9d10..717740f1f20 100644 --- a/pkgs/build-support/setup-hooks/wrap-gapps-hook.sh +++ b/pkgs/build-support/setup-hooks/wrap-gapps-hook.sh @@ -1,12 +1,19 @@ +# shellcheck shell=bash gappsWrapperArgs=() find_gio_modules() { - if [ -d "$1"/lib/gio/modules ] && [ -n "$(ls -A $1/lib/gio/modules)" ] ; then + if [ -d "$1/lib/gio/modules" ] && [ -n "$(ls -A "$1/lib/gio/modules")" ] ; then gappsWrapperArgs+=(--prefix GIO_EXTRA_MODULES : "$1/lib/gio/modules") fi } -addEnvHooks "$targetOffset" find_gio_modules +addEnvHooks "${targetOffset:?}" find_gio_modules + +wrapGApp() { + local program="$1" + shift 1 + wrapProgram "$program" "${gappsWrapperArgs[@]}" "$@" +} # Note: $gappsWrapperArgs still gets defined even if $dontWrapGApps is set. wrapGAppsHook() { @@ -26,20 +33,19 @@ wrapGAppsHook() { gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH") fi - if [ -d "$prefix/share" ]; then + if [ -d "${prefix:?}/share" ]; then gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$prefix/share") fi - if [ -d "$prefix/lib/gio/modules" ] && [ -n "$(ls -A $prefix/lib/gio/modules)" ] ; then + if [ -d "$prefix/lib/gio/modules" ] && [ -n "$(ls -A "$prefix/lib/gio/modules")" ] ; then gappsWrapperArgs+=(--prefix GIO_EXTRA_MODULES : "$prefix/lib/gio/modules") fi - for v in $wrapPrefixVariables GST_PLUGIN_SYSTEM_PATH_1_0 GI_TYPELIB_PATH GRL_PLUGIN_PATH; do - eval local dummy="\$$v" - gappsWrapperArgs+=(--prefix $v : "$dummy") + for v in ${wrapPrefixVariables:-} GST_PLUGIN_SYSTEM_PATH_1_0 GI_TYPELIB_PATH GRL_PLUGIN_PATH; do + gappsWrapperArgs+=(--prefix "$v" : "${!v}") done - if [[ -z "$dontWrapGApps" ]]; then + if [[ -z "${dontWrapGApps:-}" ]]; then targetDirsThatExist=() targetDirsRealPath=() @@ -52,7 +58,7 @@ wrapGAppsHook() { find "${targetDir}" -type f -executable -print0 \ | while IFS= read -r -d '' file; do echo "Wrapping program '${file}'" - wrapProgram "${file}" "${gappsWrapperArgs[@]}" + wrapGApp "${file}" done fi done @@ -71,7 +77,7 @@ wrapGAppsHook() { fi done echo "Wrapping link: '$linkPath'" - wrapProgram "${linkPath}" "${gappsWrapperArgs[@]}" + wrapGApp "${linkPath}" done fi fi diff --git a/pkgs/desktops/deepin/dde-daemon/default.nix b/pkgs/desktops/deepin/dde-daemon/default.nix index 19089a6b050..da217186e27 100644 --- a/pkgs/desktops/deepin/dde-daemon/default.nix +++ b/pkgs/desktops/deepin/dde-daemon/default.nix @@ -115,7 +115,7 @@ buildGoPackage rec { postFixup = '' # wrapGAppsHook does not work with binaries outside of $out/bin or $out/libexec for binary in $out/lib/deepin-daemon/*; do - wrapProgram $binary "''${gappsWrapperArgs[@]}" + wrapGApp "$binary" done searchHardCodedPaths $out # debugging diff --git a/pkgs/desktops/gnome-3/apps/gnome-characters/default.nix b/pkgs/desktops/gnome-3/apps/gnome-characters/default.nix index ac1e9ee85c0..9e44573d2e3 100644 --- a/pkgs/desktops/gnome-3/apps/gnome-characters/default.nix +++ b/pkgs/desktops/gnome-3/apps/gnome-characters/default.nix @@ -64,7 +64,7 @@ stdenv.mkDerivation rec { sed -e $"2iimports.package._findEffectiveEntryPointName = () => \'$(basename $file)\' " \ -i $file - wrapProgram $file "''${gappsWrapperArgs[@]}" + wrapGApp "$file" done ''; diff --git a/pkgs/desktops/gnome-3/extensions/gsconnect/default.nix b/pkgs/desktops/gnome-3/extensions/gsconnect/default.nix index cff0db665bb..cef00513df1 100644 --- a/pkgs/desktops/gnome-3/extensions/gsconnect/default.nix +++ b/pkgs/desktops/gnome-3/extensions/gsconnect/default.nix @@ -76,8 +76,8 @@ stdenv.mkDerivation rec { postFixup = '' # Let’s wrap the daemons for file in $out/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/{{daemon,nativeMessagingHost}.js,components/folks.py}; do - echo "Wrapping program ''${file}" - wrapProgram "''${file}" "''${gappsWrapperArgs[@]}" + echo "Wrapping program $file" + wrapGApp "$file" done ''; diff --git a/pkgs/os-specific/linux/firmware/fwupd/default.nix b/pkgs/os-specific/linux/firmware/fwupd/default.nix index 9fdf9ca0bc1..75144799d01 100644 --- a/pkgs/os-specific/linux/firmware/fwupd/default.nix +++ b/pkgs/os-specific/linux/firmware/fwupd/default.nix @@ -237,9 +237,9 @@ stdenv.mkDerivation rec { postFixup = '' find -L "$out/bin" "$out/libexec" -type f -executable -print0 \ | while IFS= read -r -d ''' file; do - if [[ "''${file}" != *.efi ]]; then - echo "Wrapping program ''${file}" - wrapProgram "''${file}" "''${gappsWrapperArgs[@]}" + if [[ "$file" != *.efi ]]; then + echo "Wrapping program $file" + wrapGApp "$file" fi done ''; diff --git a/pkgs/tools/graphics/zbar/default.nix b/pkgs/tools/graphics/zbar/default.nix index cb5ea25211c..e2b9f534ae5 100644 --- a/pkgs/tools/graphics/zbar/default.nix +++ b/pkgs/tools/graphics/zbar/default.nix @@ -8,6 +8,7 @@ , qtbase , qtx11extras , wrapQtAppsHook +, wrapGAppsHook , gtk3 , xmlto , docbook_xsl @@ -36,6 +37,7 @@ stdenv.mkDerivation rec { autoreconfHook docbook_xsl wrapQtAppsHook + wrapGAppsHook ]; buildInputs = [ @@ -68,7 +70,7 @@ stdenv.mkDerivation rec { dontWrapGApps = true; postFixup = lib.optionalString enableVideo '' - wrapProgram "$out/bin/zbarcam-gtk" "''${gappsWrapperArgs[@]}" + wrapGApp "$out/bin/zbarcam-gtk" wrapQtApp "$out/bin/zbarcam-qt" ''; |