summary refs log tree commit diff
path: root/pkgs/build-support/setup-hooks
diff options
context:
space:
mode:
authorworldofpeace <worldofpeace@protonmail.ch>2020-03-01 18:14:36 -0500
committerworldofpeace <worldofpeace@protonmail.ch>2020-03-03 19:32:36 -0500
commit29fc27b4ac358b5325ad356f90da54adf941e663 (patch)
treefbaf67f537e7f00947069b9eb82c4d661047f0ea /pkgs/build-support/setup-hooks
parent3973a3c79c255db358a82f1ffc88dc2cda0f03d6 (diff)
downloadnixpkgs-29fc27b4ac358b5325ad356f90da54adf941e663.tar
nixpkgs-29fc27b4ac358b5325ad356f90da54adf941e663.tar.gz
nixpkgs-29fc27b4ac358b5325ad356f90da54adf941e663.tar.bz2
nixpkgs-29fc27b4ac358b5325ad356f90da54adf941e663.tar.lz
nixpkgs-29fc27b4ac358b5325ad356f90da54adf941e663.tar.xz
nixpkgs-29fc27b4ac358b5325ad356f90da54adf941e663.tar.zst
nixpkgs-29fc27b4ac358b5325ad356f90da54adf941e663.zip
wrapGAppsHook: Fix #78803
Add to gappsWrapperArgs in preFixupPhases.
Diffstat (limited to 'pkgs/build-support/setup-hooks')
-rw-r--r--pkgs/build-support/setup-hooks/wrap-gapps-hook.sh127
1 files changed, 66 insertions, 61 deletions
diff --git a/pkgs/build-support/setup-hooks/wrap-gapps-hook.sh b/pkgs/build-support/setup-hooks/wrap-gapps-hook.sh
index ff0cda7eaf0..1a46e075dbe 100644
--- a/pkgs/build-support/setup-hooks/wrap-gapps-hook.sh
+++ b/pkgs/build-support/setup-hooks/wrap-gapps-hook.sh
@@ -9,6 +9,37 @@ find_gio_modules() {
 
 addEnvHooks "${targetOffset:?}" find_gio_modules
 
+gappsWrapperArgsHook() {
+    if [ -n "$GDK_PIXBUF_MODULE_FILE" ]; then
+        gappsWrapperArgs+=(--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE")
+    fi
+
+    if [ -n "$XDG_ICON_DIRS" ]; then
+        gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS")
+    fi
+
+    if [ -n "$GSETTINGS_SCHEMAS_PATH" ]; then
+        gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH")
+    fi
+
+    # Check for prefix as well
+    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
+        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
+        if [ -n "${!v}" ]; then
+            gappsWrapperArgs+=(--prefix "$v" : "${!v}")
+        fi
+    done
+}
+
+preFixupPhases+=" gappsWrapperArgsHook"
+
 wrapGApp() {
     local program="$1"
     shift 1
@@ -17,72 +48,46 @@ wrapGApp() {
 
 # Note: $gappsWrapperArgs still gets defined even if ${dontWrapGApps-} is set.
 wrapGAppsHook() {
-  # guard against running multiple times (e.g. due to propagation)
-  [ -z "$wrapGAppsHookHasRun" ] || return 0
-  wrapGAppsHookHasRun=1
-
-  if [ -n "$GDK_PIXBUF_MODULE_FILE" ]; then
-    gappsWrapperArgs+=(--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE")
-  fi
-
-  if [ -n "$XDG_ICON_DIRS" ]; then
-    gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS")
-  fi
-
-  if [ -n "$GSETTINGS_SCHEMAS_PATH" ]; then
-    gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH")
-  fi
-
-  if [ -d "${prefix:?}/share" ]; then
-    gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$prefix/share")
-  fi
+    # guard against running multiple times (e.g. due to propagation)
+    [ -z "$wrapGAppsHookHasRun" ] || return 0
+    wrapGAppsHookHasRun=1
 
-  if [ -d "$prefix/lib/gio/modules" ] && [ -n "$(ls -A "$prefix/lib/gio/modules")" ] ; then
-    gappsWrapperArgs+=(--prefix GIO_EXTRA_MODULES : "$prefix/lib/gio/modules")
-  fi
+    if [[ -z "${dontWrapGApps:-}" ]]; then
+        targetDirsThatExist=()
+        targetDirsRealPath=()
 
-  for v in ${wrapPrefixVariables:-} GST_PLUGIN_SYSTEM_PATH_1_0 GI_TYPELIB_PATH GRL_PLUGIN_PATH; do
-    if [ -n "${!v}" ]; then
-      gappsWrapperArgs+=(--prefix "$v" : "${!v}")
-    fi
-  done
-
-  if [[ -z "${dontWrapGApps:-}" ]]; then
-    targetDirsThatExist=()
-    targetDirsRealPath=()
-
-    # wrap binaries
-    targetDirs=( "${prefix}/bin" "${prefix}/libexec" )
-    for targetDir in "${targetDirs[@]}"; do
-      if [[ -d "${targetDir}" ]]; then
-        targetDirsThatExist+=("${targetDir}")
-        targetDirsRealPath+=("$(realpath "${targetDir}")/")
-        find "${targetDir}" -type f -executable -print0 \
-          | while IFS= read -r -d '' file; do
-          echo "Wrapping program '${file}'"
-          wrapGApp "${file}"
+        # wrap binaries
+        targetDirs=("${prefix}/bin" "${prefix}/libexec")
+        for targetDir in "${targetDirs[@]}"; do
+            if [[ -d "${targetDir}" ]]; then
+                targetDirsThatExist+=("${targetDir}")
+                targetDirsRealPath+=("$(realpath "${targetDir}")/")
+                find "${targetDir}" -type f -executable -print0 |
+                    while IFS= read -r -d '' file; do
+                        echo "Wrapping program '${file}'"
+                        wrapGApp "${file}"
+                    done
+            fi
         done
-      fi
-    done
 
-    # wrap links to binaries that point outside targetDirs
-    # Note: links to binaries within targetDirs do not need
-    #       to be wrapped as the binaries have already been wrapped
-    if [[ ${#targetDirsThatExist[@]} -ne 0 ]]; then
-      find "${targetDirsThatExist[@]}" -type l -xtype f -executable -print0 \
-        | while IFS= read -r -d '' linkPath; do
-        linkPathReal=$(realpath "${linkPath}")
-        for targetPath in "${targetDirsRealPath[@]}"; do
-          if [[ "$linkPathReal" == "$targetPath"* ]]; then
-            echo "Not wrapping link: '$linkPath' (already wrapped)"
-            continue 2
-          fi
-        done
-        echo "Wrapping link: '$linkPath'"
-        wrapGApp "${linkPath}"
-      done
+        # wrap links to binaries that point outside targetDirs
+        # Note: links to binaries within targetDirs do not need
+        #       to be wrapped as the binaries have already been wrapped
+        if [[ ${#targetDirsThatExist[@]} -ne 0 ]]; then
+            find "${targetDirsThatExist[@]}" -type l -xtype f -executable -print0 |
+                while IFS= read -r -d '' linkPath; do
+                    linkPathReal=$(realpath "${linkPath}")
+                    for targetPath in "${targetDirsRealPath[@]}"; do
+                        if [[ "$linkPathReal" == "$targetPath"* ]]; then
+                            echo "Not wrapping link: '$linkPath' (already wrapped)"
+                            continue 2
+                        fi
+                    done
+                    echo "Wrapping link: '$linkPath'"
+                    wrapGApp "${linkPath}"
+                done
+        fi
     fi
-  fi
 }
 
 fixupOutputHooks+=(wrapGAppsHook)