projects/aports·blob v2.21.0 · refs

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