diff options
-rwxr-xr-x | find-package-differences | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/find-package-differences b/find-package-differences new file mode 100755 index 0000000..2991221 --- /dev/null +++ b/find-package-differences @@ -0,0 +1,94 @@ +#!/bin/sh + +set +e + +trap 'rm -rf --one-file-system "${tmp_dir:?}"' EXIT +tmp_dir=$(mktemp -d) + +all_archs=( + $( + curl -Ss 'https://arch.eckner.net/archlinuxewe/os/' | \ + sed -n ' + s,^.*href="\([^".]\+\)/".*$,\1, + T + p + ' + ) +) + +{ + find ~erich/'eigeneSkripte/archPackages' -mindepth 2 -maxdepth 2 -type f -name PKGBUILD | \ + while read -r PKGBUILD; do + if grep -qxF '# repo: releng' "${PKGBUILD}"; then + repo='releng' + else + repo='archlinuxewe' + fi + for arch in $( + sed -n ' + s/^arch=(\([^)]*\)).*$/\1/ + T + s/['"'"'"]//g + p + ' "${PKGBUILD}" + ); do + if [ "${repo}" = 'releng' ]; then + case "${arch}" in + 'any') + arch='x86_64' + ;; + 'x86_64') + : + ;; + *) + continue + ;; + esac + fi + for pkgname in $( + sed -n ' + s/^pkgname=(\([^)]*\)).*$/\1/ + t foundPkgname + s/^pkgname=// + T + :foundPkgname + s/['"'"'"]//g + p + ' "${PKGBUILD}" + ); do + printf '%s/%s/%s\n' \ + "${arch}" \ + "${repo}" \ + "${pkgname}" + if [ "${arch}" = 'any' ] && [ "${repo}" = 'archlinuxewe' ]; then + printf '%s/'"${repo}/${pkgname}"'\n' \ + "${all_archs[@]}" + fi + done + done + done | \ + sed ' + s/^/source: / + ' + { + for arch in "${all_archs[@]}"; do + curl -Ss 'https://arch.eckner.net/archlinuxewe/os/'"${arch}"'/archlinuxewe.db.tar.gz' | \ + tar -tz --wildcards '*/desc' | \ + sed ' + s,-[^-]\+-[^-]\+/desc$,, + s,^,'"${arch}"'/archlinuxewe/, + ' + done + curl -Ss 'https://arch.eckner.net/archlinux32/x86_64/releng/releng.db.tar.gz' | \ + tar -tz --wildcards '*/desc' | \ + sed ' + s,-[^-]\+-[^-]\+/desc$,, + s,^,x86_64/releng/, + ' + } | \ + sed ' + s/^/package: / + ' +} | \ + sort -k2 | \ + uniq -uf1 |