#!/bin/sh if [ "x$1" = 'x-m' ]; then machine_readable=true shift else machine_readable=false fi if [ $# -eq 0 ]; then git -C "$(dirname "$0")/../packages" pull --ff-only >/dev/null 2>&1 # curl -Ss 'https://packages.archlinux32.org/?uses_upstream=Does+Not+Use+Upstream&fuzzy&tsv' curl -Ss 'http://packages.archlinux32.local/?uses_upstream=Does+Not+Use+Upstream&fuzzy&tsv' | \ { read -r headers pkgbase_column=$( printf '%s\n' "${headers}" | \ tr '\t' '\n' | \ grep -nxF 'pkgbase' | \ cut -d: -f1 ) cut -f${pkgbase_column} } | \ sort -u | \ parallel -j0 "$0" exit $? elif [ $# -gt 1 ]; then >&2 echo 'I need zero or one argument.' exit 1 fi pkgbase="$1" unset pkgver unset epoch oldver=$( git -C "$(dirname "$0")/../packages" remote | \ while read -r remote; do eval "$( git -C "$(dirname "$0")/../packages" archive "${remote}/master" -- 2>/dev/null | \ tar -Ox --wildcards '*/'"${pkgbase}"'/PKGBUILD' 2>/dev/null | \ sed -n ' /^epoch=/p /^pkgver=/p ' )" printf '%s %s\n' "${epoch-0}" "${pkgver}" done | \ sort -k1n,1 -k2V,2 | \ tail -n1 | \ sed ' s/^0\s\+// s/\s\+/:/ ' ) case "${pkgbase}" in 'linux-pae') url=$( curl -LSs 'https://www.kernel.org/pub/linux/kernel' \ | sed ' s,^\1.*$,\1, t d ' \ | sort -Vr \ | while read -r sub; do if curl -ILs "https://www.kernel.org/pub/linux/kernel/${sub}/sha256sums.asc" \ | grep -qFw 'HTTP/1.1 200 OK'; then echo "https://www.kernel.org/pub/linux/kernel/${sub}" break fi done ) regex='' ;; 'pcmciautils') url='https://kernel.org/pub/linux/utils/kernel/pcmcia/' regex='' ;; 'archlinux32-keyring'|'archlinux32-keyring-transition') url='https://sources.archlinux32.org/sources/' regex='' ;; 'python-pip-bootstrap') url='https://bootstrap.pypa.io/get-pip.py' regex=' entire copy of pip (version \([0-9.]\+\))\.' ;; *'-dummy'|*'-bootstrap') rem_pkgbase="${pkgbase%-*}" rem_pkgbase="${rem_pkgbase//+/%2B}" url='https://www.archlinux.org/packages/?q='"${rem_pkgbase}" range='/^
/' regex='\([^-<>]\+\)-[0-9]\+<\/td>' regex_b='\([^-<>]\+\)-[0-9]\+<\/span><\/td>' ;; *) # It might be a (slightly modified) copy of an upstream package: # Then we simply take the upstream pkgver. if [ "${pkgbase}" = 'linux-olpc-xo1' ]; then _pkgbase='linux' else _pkgbase="${pkgbase}" fi newver=$( for repository in /var/lib/pacman/sync/*.db; do bsdtar -tf "${repository}" done \ | sed ' s@^'"${_pkgbase//./\.}"'-\([^-]\+\)-[0-9.]\+/desc$@\1@ t d ' \ | sort -V \ | tail -n1 ) if [ -z "${newver}" ]; then >&2 printf 'Checking the version of package "%s" is not yet implemented!\n' "${pkgbase}" exit 1 fi ;; esac if [ -z "${newver}" ]; then if [ -z "${regex_b}" ]; then regex_b="${regex}" fi newver=$( curl -LSs "${url}" | \ sed ' '"${range}"' s/^.*'"${regex}"'.*$/\1/ t '"${range}"' s/^.*'"${regex_b}"'.*$/\1/ t d ' | \ sort -V | \ tail -n1 ) fi if [ "${newver}" != "${oldver}" ]; then if ${machine_readable}; then printf '%s="%s";\n' \ 'pkgbase' "${pkgbase}" \ 'newver' "${newver}" \ 'oldver' "${oldver}" else printf '%s: %s vs. %s\n' \ "${pkgbase}" \ "${newver}" \ "${oldver}" fi fi