kernel-install: avoid process substitution
authorMichal Schmidt <mschmidt@redhat.com>
Fri, 16 Dec 2016 17:14:47 +0000 (18:14 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 11 Jan 2017 20:34:54 +0000 (15:34 -0500)
bash implements process substitution using /dev/fd/N (this is documented
in man bash). We'd like kernel-install to work in chrooted RPM
scriptlets without /dev.

We can use here-strings instead. bash uses temporary files to implement
those.

src/kernel-install/kernel-install

index a95b971..c7d9f4e 100644 (file)
@@ -34,7 +34,7 @@ dropindirs_sort()
     local -a files
     local f d i
 
-    readarray -t files < <(
+    readarray -t files <<<"$(
         for d in "$@"; do
             for i in "$d/"*"$suffix"; do
                 if [[ -e "$i" ]]; then
@@ -42,7 +42,7 @@ dropindirs_sort()
                 fi
             done
         done | sort -Vu
-    )
+    )"
 
     for f in "${files[@]}"; do
         for d in "$@"; do
@@ -104,11 +104,11 @@ fi
 
 ret=0
 
-readarray -t PLUGINS < <(
+readarray -t PLUGINS <<<"$(
     dropindirs_sort ".install" \
         "/etc/kernel/install.d" \
         "/usr/lib/kernel/install.d"
-)
+)"
 
 case $COMMAND in
     add)