summaryrefslogtreecommitdiff
path: root/checkPinnedDependencies
diff options
context:
space:
mode:
authorStefanie Eckner <stefanie@eckner.net>2024-12-30 16:46:56 +0100
committerStefanie Eckner <stefanie@eckner.net>2024-12-30 16:46:56 +0100
commit312339c949e584d5787b3198101903042a3efd9d (patch)
tree59b2dee43caa20d2ef11be083f0f981a1889bbcd /checkPinnedDependencies
parent22a2eb9adf0d5d4df80e8ced6ef562bc48798865 (diff)
downloadarchlinuxewe-312339c949e584d5787b3198101903042a3efd9d.tar.xz
pin dependencies for all architectures correctly
Diffstat (limited to 'checkPinnedDependencies')
-rwxr-xr-xcheckPinnedDependencies85
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