mirror of
https://gitlab.alpinelinux.org/alpine/abuild.git
synced 2024-12-23 23:42:35 +00:00
bfee7b63f9
If some package fails, then stop processing the rest. This is so we don't risk test build the rest for the packages against wrong lib. For example, if 'abump libfoo-2.0 foo-2.0' fails on libfoo, we don't want testbuild foo-2.0, which might end with success against libfoo-1. We also echo the list of packages that was not bumped, so its easy to copy/paste next run.
133 lines
2.7 KiB
Bash
Executable File
133 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 notbumped="" name ver section message
|
|
local upgrade="${cvelist:+security }upgrade"
|
|
local a
|
|
for p; do
|
|
if [ $rc -gt 0 ]; then
|
|
notbumped="$notbumped $p"
|
|
continue
|
|
fi
|
|
name=${p%-[0-9]*}
|
|
ver=${p#${name}-}
|
|
|
|
(
|
|
set -e
|
|
|
|
# calculate APKBUILD's path #vim syntax higlight '
|
|
if [ "${name#*/}" != "$name" ] && ! [ -d "$APORTSDIR/${name%/*}" ]; then
|
|
die "'$p' should be of form 'foo-1.2.3' or 'main/foo-1.2.3'"
|
|
fi
|
|
a=$(aports_buildscript "$name" ) \
|
|
|| die "can't find APKBUILD for $name"
|
|
|
|
# verify APKBUILD
|
|
. "$a" || exit 1
|
|
[ "$pkgname" = "$name" ] \
|
|
|| die "APKBUILD has different \$pkgname for $name"
|
|
type package | grep -q function \
|
|
|| die "missing package() for $name"
|
|
|
|
cd "${a%/*}"
|
|
section=${PWD%/*}
|
|
section=${section##*/}
|
|
|
|
message="$section/$name: $upgrade to ${ver}${cvelist}"
|
|
if [ -n "$fixes" ]; then
|
|
message="$message
|
|
|
|
fixes #${fixes#\#}
|
|
"
|
|
fi
|
|
msg "$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=$?
|
|
if [ $rc -gt 0 ]; then
|
|
error "Failed to build $p"
|
|
fi
|
|
done
|
|
if [ -n "$notbumped" ]; then
|
|
error "Not bumped: $notbumped"
|
|
fi
|
|
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"
|
|
git rev-parse 2>/dev/null || die "not in a git tree"
|
|
|
|
args=`getopt -o f:s:Rkqh --long fixes:,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 "$@"
|
|
|