]> git.pld-linux.org Git - packages/rpm-build-tools.git/blob - update-kf5.sh
When tripping over a GIT_ var, give a useful error
[packages/rpm-build-tools.git] / update-kf5.sh
1 #!/bin/bash
2
3 PKGS="
4 kf5-extra-cmake-modules
5 kf5-attica
6 kf5-karchive
7 kf5-kcoreaddons
8 kf5-kauth
9 kf5-kcodecs
10 kf5-kconfig
11 kf5-kwidgetsaddons
12 kf5-kcompletion
13 kf5-ki18n
14 kf5-kdoctools
15 kf5-kguiaddons
16 kf5-kconfigwidgets
17 kf5-kdbusaddons
18 kf5-kwindowsystem
19 kf5-kcrash
20 kf5-kglobalaccel
21 kf5-kitemviews
22 kf5-kiconthemes
23 kf5-kservice
24 kf5-sonnet
25 kf5-ktextwidgets
26 kf5-kxmlgui
27 kf5-kbookmarks
28 kf5-kjobwidgets
29 kf5-knotifications
30 kf5-kwallet
31 kf5-solid
32 kf5-kio
33 kf5-kfilemetadata
34 kf5-kidletime
35 kf5-baloo
36 kf5-bluez-qt
37 kf5-breeze-icons
38 kf5-frameworkintegration
39 kf5-kpackage
40 kf5-kdeclarative
41 kf5-kcmutils
42 kf5-kactivities
43 kf5-kactivities-stats
44 kf5-kapidox
45 kf5-kinit
46 kf5-kded
47 kf5-kparts
48 kf5-kdewebkit
49 kf5-kplotting
50 kf5-kdesignerplugin
51 kf5-kemoticons
52 kf5-kunitconversion
53 kf5-kdelibs4support
54 kf5-kpty
55 kf5-kdesu
56 kf5-kdnssd
57 kf5-kjs
58 kf5-khtml
59 kf5-kimageformats
60 kf5-kirigami2
61 kf5-kitemmodels
62 kf5-kjsembed
63 kf5-kmediaplayer
64 kf5-knewstuff
65 kf5-knotifyconfig
66 kf5-kpeople
67 kf5-kross
68 kf5-plasma-framework
69 kf5-threadweaver
70 kf5-krunner
71 kf5-syntax-highlighting
72 kf5-ktexteditor
73 kf5-kwayland
74 kf5-kxmlrpcclient
75 kf5-modemmanager-qt
76 kf5-networkmanager-qt
77 kf5-prison
78 kf5-qqc2-desktop-style
79 "
80
81 newver="5.40.0"
82 topdir=$(rpm -E '%{_topdir}')
83
84 n="$(echo -e '\nn')"
85 n="${n%%n}"
86 test=0
87 get=0
88
89 get_dump() {
90         local specfile="$1"
91         if ! out=$(rpm --specfile "$specfile" --define 'prep %dump' -q 2>&1); then
92                 echo >&2 "$out"
93                 echo >&2 "You need icon files being present in SOURCES."
94                 exit 1
95         fi
96         echo "$out"
97 }
98
99 set_release() {
100         local specfile="$1"
101         local rel="$2"
102         local newrel="$3"
103         sed -i -e "
104                 s/^\(%define[ \t]\+_\?rel[ \t]\+\)$rel\$/\1$newrel/
105                 s/^\(Release:[ \t]\+\)$rel\$/\1$newrel/
106         " $specfile
107 }
108
109 set_version() {
110         local specfile="$1"
111         local rel="$2"
112         local newrel="$3"
113         sed -i -e "
114                 s/^\(%define[ \t]\+_\?ver[ \t]\+\)$rel\$/\1$newrel/
115                 s/^\(Version:[ \t]\+\)$rel\$/\1$newrel/
116         " $specfile
117 }
118
119 set_framever() {
120         local specfile="$1"
121         local rel="$2"
122         local newrel="$3"
123         sed -i -e "
124                 s/^\(%define[ \t]\+_\?kdeframever[ \t]\+\)$rel\$/\1$newrel/
125         " $specfile
126 }
127
128 while [ -n "$1" ]
129 do
130         case "$1" in
131         "--help")
132                 echo "Usage: $0 [--help] [--get] [--test] [--message message] newversion"
133                 exit 0
134                 ;;
135         "--get")
136                 get=1
137                 ;;
138         "--test")
139                 test=1
140                 ;;
141         "--message")
142                 shift
143                 message="$1"
144                 ;;
145         *)
146                 newver="$1"
147                 ;;
148         esac
149         shift
150 done
151
152 cd "$topdir"
153 for pkg in $PKGS ; do
154         # spec: package/package.spec
155         spec=$(rpm -D "name $pkg" -E '%{_specdir}/%{name}.spec')
156         spec=${spec#$topdir/}
157
158         # pkgdir: package/
159         pkgdir=${spec%/*}
160
161         # specname: only spec filename
162         specname=${spec##*/}
163
164         # start real work
165         echo "$pkg ..."
166
167         # get package
168         [ "$get" = 1 -a -d "$pkgdir" ] && continue
169
170         if [ "$update" = "1" -o "$get" = "1" ]; then
171                 ./builder -g -ns "$spec"
172         fi
173
174         [ "$get" = 1 ] && continue
175
176         # update .spec files
177         dump=$(get_dump "$spec")
178
179         ver=$(awk '/^%define[   ]+_?rel[        ]+/{print $NF}' $spec)
180         if [ -z "$ver" ]; then
181                 ver=$(echo "$dump" | awk '/PACKAGE_VERSION/{print $NF; exit}')
182         fi
183         rel=$(awk '/^%define[   ]+_?rel[        ]+/{print $NF}' $spec)
184         if [ -z "$rel" ]; then
185                 rel=$(echo "$dump" | awk '/PACKAGE_RELEASE/{print $NF; exit}')
186         fi
187         framever=$(awk '/^%define[      ]+_?kdeframever[        ]+/{print $NF}' $spec)
188         newframever=$(echo "$newver" | awk -F. '{printf "%s.%s", $1, $2}')
189
190         echo $ver-$rel
191
192         set_release "$spec" $rel "1"
193         set_version "$spec" $ver $newver
194         set_framever "$spec" $framever $newframever
195
196         # update md5sums
197         ./builder -U "$spec"
198
199         # commit the changes
200         msg=""
201         [ -n "$message" ] && msg="$msg- $message$n"
202         msg="$msg- updated to $newver (by update-kf5.sh)"
203         echo git commit -m "$msg" $spec
204         if [ "$test" != 1 ]; then
205                 cd $pkgdir
206                 git commit -m "$msg" $specname
207                 git push
208                 cd ..
209         fi
210 done
This page took 0.036012 seconds and 3 git commands to generate.