#!/bin/bash usage() { >&2 echo 'usage: bumpPkgrel [-a] [-n] [-p /tmp/provided] $pkg1 $pkg2 $pkg3 ...' >&2 echo ' -a: auto-detect packages' >&2 echo ' -n: do not commit' >&2 echo ' -p: use this temporary file' exit 1 } eval set -- "$( getopt -o anp: \ -n "$(basename "$0")" \ -- "$@" \ || echo "usage" )" auto_detect=false commit=true commit_flag='' provided='' while true; do case "$1" in '-a') auto_detect=true ;; '-n') commit=false commit_flag='-n' ;; '-p') shift provided="$1" ;; '--') shift break ;; *) >&2 printf 'FEHLER: Verstehe Option "%s" doch nicht! Ich beende.\n' "$1" exit 1 esac shift done if [ $# -eq 0 ] && ! ${auto_detect}; then usage fi if [ -z "${provided}" ]; then provided=$("${0%/*}/liste-verfuegbare-Versionen") trap 'rm -f "${provided}"' EXIT fi pin_dependency() { sed ' s/^\(\S\+\)>\?=\(\S\+\)$/\1 \2/ t s/^\S\+$/\0 BOGUS/ t d ' \ | sort -k1,1 \ | join -1 1 -2 2 -a 1 -e EMPTY -o 1.1,1.2,2.1 - "${provided}" \ | sed ' s/ \(\S\+\) EMPTY$/ \1 \1/ ' \ | sed ' s/^\(\S\+\) \S\+ \(\S\+\)$/'"${1}'"'\1=\2'"'"'/ s/^\(\s*'"'"'glibc\)=/\1>=/ t d ' } if [ $# -ne 1 ] || ${auto_detect}; then { printf '%s\n' "$@" if ${auto_detect}; then "${0%/*}/checkPinnedDependencies" -m "${provided}" fi } \ | sort -u \ | xargs -rn1 "$0" ${commit_flag} -p "${provided}" if ${auto_detect}; then python_version=$( sed ' s/^\(3\.[0-9]\+\)\(\.[0-9.]\+\)\? python$/\1/ t d ' "${provided}" ) if cat "${0%/*}"/*/PKGBUILD \ | sed ' s/^\(.* \)\?\(["'"'"']\)\?\(python>=[0-9.]\+\)\2\( .*\)\?$/\3/ t d ' \ | grep -qvxF "python>=${python_version}"; then "${0%/*}/bumpPython" 3 fi fi else cd "$(dirname "$0")" pkg="${1%/}" cd "${pkg}" while IFS=$(printf '\n') read -r line; do if printf '%s\n' "${line}" \ | grep -q '^\s*pkgrel='; then eval "${line}" printf '%s=%s\n' "${line%%=*}" "$((pkgrel+1))" continue fi if printf '%s\n' "${line}" \ | grep -q '^\s*_pinned_dependencies\([^=[:space:]]*\)=('; then space="${line%%_pinned_dependencies*=(*}" printf '%s=(\n' "${line%%=(*}" line="${line#*_pinned_dependencies*=(}" { while ! printf '%s\n' "${line}" \ | grep -qF ')'; do printf '%s\n' ${line%%#*} IFS=$(printf '\n') read -r line done printf '%s\n' ${line%%)*} } \ | sed ' /^$/d s/^\(["'"'"']\)\(\S\+\)\1$/\2/ ' \ | pin_dependency "${space} " printf '%s)%s\n' "${space}" "${line#*)}" continue fi printf '%s\n' "${line}" done \ < 'PKGBUILD' \ | sponge 'PKGBUILD' if ${commit}; then ../commit-package "${pkg}: rebuild" fi fi