diff options
Diffstat (limited to 'checkPinnedDependencies')
-rwxr-xr-x | checkPinnedDependencies | 85 |
1 files changed, 56 insertions, 29 deletions
diff --git a/checkPinnedDependencies b/checkPinnedDependencies index ecf945822..1f5186ed8 100755 --- a/checkPinnedDependencies +++ b/checkPinnedDependencies @@ -3,14 +3,14 @@ cd "$(dirname "$0")" machineReadable=false -unset provided +provided=() while [ $# -gt 0 ]; do if [ "x$1" = 'x-m' ]; then machineReadable=true elif [ -f "$1" ]; then - provided="$1" + provided=("${provided[@]}" "$1") else >&2 printf 'unknown option "%s"\n' "$1" fi @@ -19,35 +19,62 @@ while [ $# -gt 0 ]; do done -if [ -z "${provided}" ]; then - provided=$("./liste-verfuegbare-Versionen") || exit $? - trap 'rm -f "${provided}"' EXIT +if [ ${#provided[@]} -eq 0 ]; then + provided=( + $( + printf 'arch\n%s\n' 'i486' 'i686' 'pentium4' 'x86_64' \ + | parallel -l2 "${0%/*}/liste-verfuegbare-Versionen" + ) + ) + trap 'rm -f "${provided[@]}"' EXIT fi -join -1 1 -2 2 -v 2 <( - awk '{print $2 "=" $1}' <"${provided}" \ - | sort -u -) <( - for pkgbuild in */PKGBUILD; do - sed -n ' - /^\s*_pinned_dependencies[^[:space:]=]*=([^)]*$/,/)/p - /^\s*_pinned_dependencies[^[:space:]=]*=([^)]*)/p - ' "${pkgbuild}" \ - | sed ' - s/^\s*_pinned_dependencies[^[:space:]=]*=(// - s/).*$// - ' \ - | tr '[:space:]' '\n' \ - | sort -u \ - | grep -vxF '' \ - | sed ' - s@^\(['"'"'"]\)\(\S\+\)\1$@\2@ - /^glibc>=/d - s@^@'"${pkgbuild%/*}"' @ - ' - done \ - | sort -k2,2 -) \ +for provid in "${provided[@]}"; do + arch="${provid##*.}" + dist="${provid%.${arch}}" + dist="${dist##*.}" + if printf '%s\n' "${arch}" | grep -qvxFf <(printf '%s\n' 'i486' 'i686' 'pentium4' 'x86_64'); then + unset arch + unset dist + else + arch="_${arch}" + dist="_${dist}" + fi + join -1 1 -2 2 -v 2 <( + awk '{print $2 "=" $1}' <"${provid}" \ + | sort -u + ) <( + for pkgbuild in */PKGBUILD; do + sed -n ' + /^\s*arch=(.*)/p + /^\s*arch=([^)]*$/,/)/p + ' "${pkgbuild}" \ + | sed ' + s/^\s*arch=(// + s/).*$// + ' \ + | grep -qwF "${arch}" \ + || continue + sed -n ' + /^\s*_pinned_dependencies\('"${arch}"'\|'"${dist}"'\)\?=([^)]*$/,/)/p + /^\s*_pinned_dependencies\('"${arch}"'\|'"${dist}"'\)\?=([^)]*)/p + ' "${pkgbuild}" \ + | sed ' + s/^\s*_pinned_dependencies[^[:space:]=]*=(// + s/).*$// + ' \ + | tr '[:space:]' '\n' \ + | sort -u \ + | grep -vxF '' \ + | sed ' + s@^\(['"'"'"]\)\(\S\+\)\1$@\2@ + /^glibc>=/d + s@^@'"${pkgbuild%/*}"' @ + ' + done \ + | sort -k2,2 + ) +done \ | if ${machineReadable}; then cut -d' ' -f2 else |