]>
Commit | Line | Data |
---|---|---|
5dc951e1 ER |
1 | #!/bin/sh |
2 | # script to run after "rel up" style change. | |
3 | # takes Release from spec and creates commit with message | |
c2d1361e | 4 | # groups similiar commits together. |
5dc951e1 | 5 | # "- rel $rel" |
c2d1361e ER |
6 | # - fails when specfile defines Icon: but the icon is not present in SOURCES |
7 | # TODO | |
8 | # - optional message after rel: "- rel 9 (rebuild with foolib)" | |
5dc951e1 ER |
9 | |
10 | set -e | |
5dc951e1 ER |
11 | |
12 | get_dump() { | |
b9c37ff0 | 13 | local specfile="$1" |
c2d1361e ER |
14 | if ! out=$(rpm --specfile "$specfile" --define 'prep %dump' -q 2>&1); then |
15 | echo >&2 "$out" | |
16 | echo >&2 "You need icon files being present in SOURCES." | |
17 | exit 1 | |
18 | fi | |
b77bda72 | 19 | echo "$out" |
5dc951e1 ER |
20 | } |
21 | ||
e5c1545d ER |
22 | usage="Usage: |
23 | ${0##*/} [-i] [-t] [-m <MESSAGE>] <SPECLIST> | |
24 | ||
25 | Options: | |
26 | -i | |
27 | Try to increment package release | |
28 | -t | |
29 | Test mode. do not commit | |
30 | -m | |
31 | Specify commit message | |
32 | ||
33 | " | |
34 | ||
5dc951e1 | 35 | get_release() { |
376ea54e | 36 | local specfile="$1" |
4881d2e7 | 37 | rel=$(awk '/^%define[ ]+_?rel[ ]+/{print $NF}' $specfile) |
376ea54e | 38 | if [ -z "$rel" ]; then |
c2d1361e ER |
39 | dump=$(get_dump "$specfile") |
40 | rel=$(echo "$dump" | awk '/PACKAGE_RELEASE/{print $NF; exit}') | |
376ea54e ER |
41 | fi |
42 | echo $rel | |
5dc951e1 ER |
43 | } |
44 | ||
82e31bc6 ER |
45 | set_release() { |
46 | local specfile="$1" | |
47 | local rel="$2" | |
bdfdf194 | 48 | local newrel="$3" |
82e31bc6 | 49 | sed -i -e " |
4881d2e7 | 50 | s/^\(%define[ \t]\+_\?rel[ \t]\+\)$rel\$/\1$newrel/ |
5c68af79 | 51 | s/^\(Release:[ \t]\+\)$rel\$/\1$newrel/ |
82e31bc6 ER |
52 | " $specfile |
53 | } | |
54 | ||
b6f02a43 ER |
55 | if [ ! -x /usr/bin/getopt ]; then |
56 | echo >&1 "You need to install util-linux to use relup.sh" | |
57 | exit 1 | |
58 | fi | |
59 | ||
e5c1545d | 60 | t=$(getopt -o 'm:ith' -n "${0##*/}" -- "$@") || exit $? |
82e31bc6 | 61 | # Note the quotes around `$t': they are essential! |
b6f02a43 ER |
62 | eval set -- "$t" |
63 | ||
64 | while true; do | |
65 | case "$1" in | |
82e31bc6 ER |
66 | -i) |
67 | inc=1 | |
68 | ;; | |
bdfdf194 ER |
69 | -t) |
70 | test=1 | |
71 | ;; | |
b6f02a43 ER |
72 | -m) |
73 | shift | |
6de0e286 | 74 | message="${1#- }" |
b6f02a43 | 75 | ;; |
e5c1545d ER |
76 | -h) |
77 | echo "$usage" | |
78 | exit 0 | |
79 | ;; | |
b6f02a43 ER |
80 | --) |
81 | shift | |
82 | break | |
83 | ;; | |
84 | *) | |
85 | echo 2>&1 "Internal error: [$1] not recognized!" | |
86 | exit 1 | |
87 | ;; | |
88 | esac | |
89 | shift | |
90 | done | |
91 | ||
b9c37ff0 ER |
92 | tmpd=$(mktemp -d "${TMPDIR:-/tmp}/relXXXXXX") |
93 | for spec in "$@"; do | |
e776bc9e | 94 | spec=${spec%.spec}.spec |
376ea54e | 95 | rel=$(get_release "$spec") |
82e31bc6 | 96 | if [ "$inc" = 1 ]; then |
bdfdf194 ER |
97 | newrel=$(expr $rel + 1) |
98 | set_release "$spec" $rel $newrel | |
82e31bc6 ER |
99 | |
100 | # refetch release | |
101 | rel=$(get_release "$spec") | |
102 | fi | |
b9c37ff0 ER |
103 | echo "$spec" >> "$tmpd/$rel" |
104 | done | |
105 | ||
106 | for file in $(ls "$tmpd" 2>/dev/null); do | |
107 | files=$(cat "$tmpd/$file") | |
108 | rel=$(basename "$file") | |
471b4de0 | 109 | msg="- release $rel${message:+ ($message)}" |
9cd37452 | 110 | echo cvs ci -m "'$msg'" |
82e31bc6 ER |
111 | if [ "$test" != 1 ]; then |
112 | cvs ci -m "$msg" $files | |
113 | fi | |
b9c37ff0 ER |
114 | done |
115 | rm -rf $tmpd |