mirror of
https://gitlab.alpinelinux.org/alpine/abuild.git
synced 2024-12-23 23:42:35 +00:00
127 lines
2.7 KiB
Bash
Executable File
127 lines
2.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# abump - bump pkgver in APKBUILDs
|
|
# Copyright (c) 2012 Natanael Copa <ncopa@alpinelinux.org>
|
|
#
|
|
# Distributed under GPL-2
|
|
#
|
|
|
|
abuild_ver=@VERSION@
|
|
datadir=@datadir@
|
|
|
|
if ! [ -f "$datadir/functions.sh" ]; then
|
|
echo "$datadir/functions.sh: not found" >&2
|
|
exit 1
|
|
fi
|
|
. "$datadir/functions.sh"
|
|
|
|
|
|
# version bump packages
|
|
do_bump() {
|
|
local p rc=0 name ver section message
|
|
local upgrade="${cvelist:+security }upgrade"
|
|
local a
|
|
for p; do
|
|
name=${p%-[0-9]*}
|
|
ver=${p#${name}-}
|
|
|
|
# calculate APKBUILD's path
|
|
if [ "${name#*/}" != "$name" ] && ! [ -d "$APORTSDIR/${name%/*} ]; then
|
|
error "'$p' should be of form 'foo-1.2.3' or 'main/foo-1.2.3'"
|
|
rc=1; continue
|
|
fi
|
|
a=$(aports_buildscript "$name" || die "can't find APKBUILD for $name") || { rc=1; continue; }
|
|
|
|
# verify APKBUILD
|
|
(
|
|
. "$a" || exit 1
|
|
[ "$pkgname" = "$name" ] || die "$name: APKBUILD has different \$pkgname"
|
|
type package | grep -q function || die "$name: missing package()"
|
|
case $(apk version --test "$pkgver" "$ver") in
|
|
'=') die "$pkgname: already at version $pkgver";;
|
|
'>') die "$pkgname: already at newer version $pkgver";;
|
|
'<') exit 0;;
|
|
*) exit 1;;
|
|
esac
|
|
) || { rc=1; continue; }
|
|
|
|
(
|
|
set -e
|
|
|
|
cd "${a%/*}"
|
|
section=${PWD%/*}
|
|
section=${section##*/}
|
|
|
|
message="$section/$name: $upgrade to ${ver}${cvelist}"
|
|
if [ -n "$fixes" ]; then
|
|
message="$message
|
|
|
|
fixes #${fixes#\#}
|
|
"
|
|
fi
|
|
echo "$message"
|
|
|
|
sed -i -e "s/^pkgver=.*/pkgver=$ver/" \
|
|
-e "s/^pkgrel=.*/pkgrel=0/" \
|
|
APKBUILD
|
|
|
|
abuild $abuild_opts checksum all
|
|
|
|
git add APKBUILD
|
|
git commit -m"$message"
|
|
) || rc=1
|
|
done
|
|
return $rc
|
|
}
|
|
|
|
usage() {
|
|
cat >&2 <<__EOF__
|
|
$prog $abuild_ver - bump pkgver in APKBUILDs
|
|
Usage: $prog [-s CVE-1,CVE-2,...] [-f ISSUE] [-R|--recursive] [-k|--keep] PKGNAME-1.2.3 ...
|
|
Options:
|
|
-s, --security CVE1,CVE-2,... Security update
|
|
-f, --fixes ISSUE Fixes ISSUE
|
|
-R, --recursive Run abuild with -R for recursive building
|
|
-k, --keep Run abuild with -k to keep existing packages
|
|
-q, --quiet
|
|
-h, --help Show this help
|
|
|
|
__EOF__
|
|
}
|
|
|
|
keep=
|
|
recursive="-r"
|
|
cvelist=
|
|
fixes=
|
|
|
|
[ -n "$APORTSDIR" ] || error "can't locate \$APORTSDIR"
|
|
|
|
args=`getopt -o s:Rkqh --long security:,recursive,keep,quiet,help -n "$prog" -- "$@"`
|
|
if [ $? -ne 0 ]; then
|
|
usage
|
|
exit 2
|
|
fi
|
|
eval set -- "$args"
|
|
while true; do
|
|
case $1 in
|
|
-s|--security) cvelist=" ($2)"; shift;;
|
|
-f|--fixes) fixes="$2"; shift;;
|
|
-R|--recursive) recursive="-R";;
|
|
-k|--keep) keep="-k";;
|
|
-q|--quiet) quiet=1;; # suppresses msg
|
|
-h|--help) usage; exit;;
|
|
--) shift; break;;
|
|
*) exit 1;; # getopt error
|
|
esac
|
|
shift
|
|
done
|
|
if [ $# -eq 0 ]; then
|
|
usage
|
|
exit 2
|
|
fi
|
|
|
|
abuild_opts="$recursive $keep"
|
|
|
|
do_bump "$@"
|
|
|