projects/aports·blob v3.3.0_pre1 · refs

138 lines · 2.9 KiB

1#!/bin/sh
2
3# abump - bump pkgver in APKBUILDs
4# Copyright (c) 2012 Natanael Copa <[email protected]>
5#
6# Distributed under GPL-2
7#
8
9program_version=@VERSION@
10datadir=@datadir@
11
12if ! [ -f "$datadir/functions.sh" ]; then
13 echo "$datadir/functions.sh: not found" >&2
14 exit 1
15fi
16. "$datadir/functions.sh"
17
18: ${ABUILD:="abuild"}
19
20
21# version bump packages
22do_bump() {
23 local p rc=0 notbumped="" name ver section message
24 local upgrade="${cvelist:+security }upgrade"
25 local a
26 for p; do
27 if [ $rc -gt 0 ]; then
28 notbumped="$notbumped $p"
29 continue
30 fi
31 name=${p%-[0-9]*}
32 ver=${p#${name}-}
33 if [ "$name" = "$ver" ]; then
34 die "version missing for $p"
35 fi
36
37 (
38 set -e
39
40 # calculate APKBUILD's path #vim syntax higlight '
41 if [ "${name#*/}" != "$name" ] && ! [ -d "$APORTSDIR/${name%/*}" ]; then
42 die "'$p' should be of form 'foo-1.2.3' or 'main/foo-1.2.3'"
43 fi
44 a=$(aports_buildscript "$name" ) \
45 || die "can't find APKBUILD for $name"
46
47 # verify APKBUILD
48 . "$a" || exit 1
49 name=${name#*/}
50 [ "$pkgname" = "$name" ] \
51 || die "APKBUILD has different \$pkgname for $name"
52 type package | grep -q function \
53 || die "missing package() for $name"
54
55 cd "${a%/*}"
56 section=${PWD%/*}
57 section=${section##*/}
58
59 message="$section/$name: $upgrade to ${ver}${cvelist}"
60 if [ -n "$fixes" ]; then
61 message="$message
62
63fixes #${fixes#\#}
64"
65 fi
66 msg "$message"
67
68 sed -i -e "s/^pkgver=.*/pkgver=$ver/" \
69 -e "s/^pkgrel=.*/pkgrel=0/" \
70 APKBUILD
71
72 $ABUILD $abuild_opts checksum all
73
74 git add APKBUILD
75 git commit -m"$message"
76 )
77 rc=$?
78 if [ $rc -gt 0 ]; then
79 error "Failed to build $p"
80 fi
81 done
82 if [ -n "$notbumped" ]; then
83 error "Not bumped: $notbumped"
84 fi
85 return $rc
86}
87
88usage() {
89 cat >&2 <<-__EOF__
90 $program $program_version - bump pkgver in APKBUILDs
91 Usage: $program [-s CVE-1,CVE-2,...] [-f ISSUE] [-R|--recursive] [-k|--keep] PKGNAME-1.2.3 ...
92 Options:
93 -s, --security CVE1,CVE-2,... Security update
94 -f, --fixes ISSUE Fixes ISSUE
95 -R, --recursive Run abuild with -R for recursive building
96 -k, --keep Run abuild with -k to keep existing packages
97 -q, --quiet
98 -h, --help Show this help
99
100 __EOF__
101}
102
103keep=
104recursive="-r"
105cvelist=
106fixes=
107
108[ -n "$APORTSDIR" ] || error "can't locate \$APORTSDIR"
109git rev-parse 2>/dev/null || die "not in a git tree"
110
111args=$(getopt -o f:s:Rkqh --long fixes:,security:,recursive,keep,quiet,help \
112 -n "$program" -- "$@")
113if [ $? -ne 0 ]; then
114 usage
115 exit 2
116fi
117eval set -- "$args"
118while true; do
119 case $1 in
120 -s|--security) cvelist=" ($2)"; shift;;
121 -f|--fixes) fixes="$2"; shift;;
122 -R|--recursive) recursive="-R";;
123 -k|--keep) keep="-k";;
124 -q|--quiet) quiet=1;; # suppresses msg
125 -h|--help) usage; exit;;
126 --) shift; break;;
127 *) exit 1;; # getopt error
128 esac
129 shift
130done
131if [ $# -eq 0 ]; then
132 usage
133 exit 2
134fi
135
136abuild_opts="$recursive $keep"
137
138do_bump "$@"