diff --git a/release/scripts/make-manifest.sh b/release/scripts/make-manifest.sh --- a/release/scripts/make-manifest.sh +++ b/release/scripts/make-manifest.sh @@ -36,13 +36,25 @@ default_kernel_dbg=on default_kernel_alt_dbg=off +# portable sha256 command +sha256_cmd="sha256sum" + +trap 'rm -rf $tmpdir' EXIT INT QUIT ABRT TERM +tmpdir=$(mktemp -d) + for i in ${*}; do +( dist="${i}" distname="${i%%.txz}" distname="$(echo ${distname} | tr '-' '_')" distname="$(echo ${distname} | tr 'kernel.' 'kernel_')" - hash="$(sha256 -q ${i})" - nfiles="$(tar tvf ${i} | wc -l | tr -d ' ')" + hash="$($sha256_cmd ${i} | cut -d' ' -f1)" + # run with parallel xz if possible + if [ "$(head -c 6 ${i} | xxd -p)" = 'fd377a585a00' ]; then + nfiles="$(xz -d < ${i} | tar tvf - | wc -l | tr -d ' ')" + else + nfiles="$(tar tvf ${i} | wc -l | tr -d ' ')" + fi default="$(eval echo \${default_${distname}:-on})" desc="$(eval echo \"\${desc_${distname}}\")" @@ -67,6 +79,13 @@ ;; esac - printf "${dist}\t${hash}\t${nfiles}\t${distname}\t\"${desc}\"\t${default}\n" + printf "${dist}\t${hash}\t${nfiles}\t${distname}\t\"${desc}\"\t${default}\n" > $tmpdir/$i +) & done +# run in parallel, wait for final results +wait +sort $tmpdir/*.txz + +#EOF +