makeModulesClosure: handle firmware glob patterns

A handful of kernel modules use glob patterns to express their
firmware dependencies. (`git grep 'MODULE_FIRMWARE.*\*'`)

Previously, we weren't handling these patterns. Now, we are.

+5 -6
+5 -6
pkgs/build-support/kernel/modules-closure.sh
··· 66 fi 67 done 68 69 - mkdir -p $out/lib/firmware 70 - for module in $(cat closure); do 71 # for builtin modules, modinfo will reply with a wrong output looking like: 72 # $ modinfo -F firmware unix 73 # name: unix ··· 78 # 79 # For now, the workaround is just to filter out the extraneous lines out 80 # of its output. 81 - for i in $(modinfo -b $kernel --set-version "$version" -F firmware $module | grep -v '^name:'); do 82 - mkdir -p "$out/lib/firmware/$(dirname "$i")" 83 echo "firmware for $module: $i" 84 for name in "$i" "$i.xz" ""; do 85 [ -z "$name" ] && echo "WARNING: missing firmware $i for module $module" 86 - if cp "$firmware/lib/firmware/$name" "$out/lib/firmware/$name" 2>/dev/null; then 87 break 88 fi 89 done 90 - done 91 done 92 93 # copy module ordering hints for depmod
··· 66 fi 67 done 68 69 + cd "$firmware" 70 + for module in $(< ~-/closure); do 71 # for builtin modules, modinfo will reply with a wrong output looking like: 72 # $ modinfo -F firmware unix 73 # name: unix ··· 78 # 79 # For now, the workaround is just to filter out the extraneous lines out 80 # of its output. 81 + modinfo -b $kernel --set-version "$version" -F firmware $module | grep -v '^name:' | while read -r i; do 82 echo "firmware for $module: $i" 83 for name in "$i" "$i.xz" ""; do 84 [ -z "$name" ] && echo "WARNING: missing firmware $i for module $module" 85 + if cp -v --parents --no-preserve=mode lib/firmware/$name "$out" 2>/dev/null; then 86 break 87 fi 88 done 89 + done || : 90 done 91 92 # copy module ordering hints for depmod