Skip to content

Commit 74e8207

Browse files
authored
Merge pull request #9628 from daniviga/fix-rpm-2
[RPM] Make buildrpm.sh more robust and fast
2 parents 4f9d002 + 08c095e commit 74e8207

File tree

3 files changed

+59
-36
lines changed

3 files changed

+59
-36
lines changed

rpm/buildrpms.sh

+55-32
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,12 @@
33
# buildrpms.sh
44
# ---------------------
55
# Date : March 2014
6-
# Copyright : (C) 2014 by Matthias Kuhn
6+
# Copyright : (C) 2014-2019 by Matthias Kuhn
77
# Email : matthias at opengis dot ch
8+
# ---------------------
9+
# Date : October 2017
10+
# Copyright : (C) 2017-2019 by Daniele Viganò
11+
# Email : daniele at vigano dot me
812
###########################################################################
913
# #
1014
# This program is free software; you can redistribute it and/or modify #
@@ -14,6 +18,11 @@
1418
# #
1519
###########################################################################
1620

21+
if [ $_BUILDRPMS_DEBUG ]
22+
then
23+
set -x
24+
fi
25+
1726
function print_info
1827
{
1928
echo -e "\e[0;32m$1\033[0m"
@@ -40,7 +49,14 @@ Usage:
4049

4150
if [ $_MOCK_OLD_CHROOT ]
4251
then
43-
mock_args="--old-chroot"
52+
mock_args="--old-chroot"
53+
fi
54+
55+
if command -v pbzip2 &> /dev/null
56+
then
57+
bzip2_cmd="pbzip2"
58+
else
59+
bzip2_cmd="bzip2"
4460
fi
4561

4662
relver=1
@@ -98,13 +114,6 @@ else
98114
timestamp=$(date +'%s')
99115
fi
100116

101-
# Clean logfiles
102-
if [ -f $OUTDIR/build.log ]
103-
then
104-
print_info "Cleaning log file"
105-
rm $OUTDIR/build.log
106-
fi
107-
108117
# Get the version string
109118
major=$(grep -e 'SET(CPACK_PACKAGE_VERSION_MAJOR' ../CMakeLists.txt |
110119
sed -r 's/.*\"([0-9]+)\".*/\1/g')
@@ -118,6 +127,12 @@ version=$major.$minor.$patch
118127
print_info "Building version $version-$relver"
119128
if [ "$build_only" -ne "1" ]
120129
then
130+
# Clean logfiles
131+
if [ -f $OUTDIR/build.log ]
132+
then
133+
print_info "Cleaning log file"
134+
rm $OUTDIR/build.log
135+
fi
121136
print_info "Creating spec file from template"
122137
# Create spec file
123138
cat qgis.spec.template \
@@ -133,7 +148,7 @@ then
133148

134149
print_info "Creating source tarball"
135150
# Create source tarball
136-
git -C .. archive --format=tar --prefix=qgis-$version/ HEAD | bzip2 > sources/qgis-$version.tar.bz2
151+
git -C .. archive --format=tar --prefix=qgis-$version/ HEAD | $bzip2_cmd > sources/qgis-$version.tar.bz2
137152

138153
print_info "Creating source package"
139154
# Build source package
@@ -146,13 +161,12 @@ then
146161
print_error "Creating source package failed"
147162
exit 1
148163
fi
149-
150-
srpm=$(grep -e 'Wrote: .*\.src\.rpm' $OUTDIR/build.log |
151-
sed 's_Wrote: /builddir/build/SRPMS/\(.*\)_\1_')
152-
153-
print_info "Source package created: $srpm"
164+
print_info "Source package created"
154165
fi
155166

167+
srpm=$(grep -e 'Wrote: .*\.src\.rpm' $OUTDIR/build.log 2>/dev/null |
168+
sed 's_Wrote: /builddir/build/SRPMS/\(.*\)_\1_')
169+
156170
if [ "$srpm_only" -eq "1" ]
157171
then
158172
exit 0
@@ -161,25 +175,34 @@ fi
161175
# Create packages for every ARCH defined in the config file
162176
for arch in "${ARCHS[@]}"
163177
do :
164-
print_info "Building packages for $arch"
165-
if [ -f $OUTDIR/$arch/build.log ]
178+
if [ -f $OUTDIR/$srpm ]
166179
then
167-
print_info "Cleaning log file"
168-
rm $OUTDIR/$arch/build.log
169-
fi
170-
mkdir $OUTDIR/$arch
171-
172-
if ! mock -r $arch --rebuild $OUTDIR/$srpm \
173-
--define "_relver $relver" \
174-
--define "_version $version" \
175-
--define "_timestamp $timestamp" \
176-
--resultdir=$OUTDIR/$arch $mock_args
177-
then
178-
print_error "Package creation for $arch failed. Abort"
179-
exit 1
180+
print_info "Building $srpm for $arch"
181+
if [ -d $OUTDIR/$arch ]
182+
then
183+
if [ -f $OUTDIR/$arch/build.log ]
184+
then
185+
print_info "Cleaning log file"
186+
rm $OUTDIR/$arch/build.log
187+
fi
188+
else
189+
mkdir $OUTDIR/$arch
190+
fi
191+
if ! mock -r $arch --rebuild $OUTDIR/$srpm \
192+
--define "_relver $relver" \
193+
--define "_version $version" \
194+
--define "_timestamp $timestamp" \
195+
--resultdir=$OUTDIR/$arch $mock_args
196+
then
197+
print_error "Package creation for $arch failed. Abort"
198+
exit 1
199+
else
200+
# Add to package list
201+
packages="$packages $(ls $OUTDIR/$arch/*-$version-$relver.*.rpm)"
202+
fi
180203
else
181-
# Add to package list
182-
packages="$packages $(ls $OUTDIR/$arch/*-$version-$relver.*.rpm)"
204+
print_error "Source package unavailable. Abort"
205+
exit 1
183206
fi
184207
done
185208

rpm/default.cfg

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,16 @@
66
# maintainer.
77

88
# Where should the results go
9-
OUTDIR="result/"
9+
OUTDIR="result"
1010

1111
# Which arches to build for. Check /etc/mock for possible options
1212
ARCHS=(
1313
"fedora-28-i386"
1414
"fedora-28-x86_64"
1515
"fedora-29-i386"
1616
"fedora-29-x86_64"
17+
"fedora-30-i386"
18+
"fedora-30-x86_64"
1719
)
1820

1921
# Which git branch to export. Normally take the current

rpm/qgis.spec.template

+1-3
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ rm -f %{buildroot}%{_datadir}/%{name}/doc/INSTALL*
253253

254254
%find_lang %{name} --with-qt
255255

256-
# TODO: Remove after F28 EoL
256+
# TODO: Remove all %%post, %%posttrans and %%postun after F28 EoL
257257
# Ref: https://fedoraproject.org/wiki/Changes/RemoveObsoleteScriptlets
258258
%post
259259
/sbin/ldconfig
@@ -281,8 +281,6 @@ update-mime-database %{?fedora:-n} %{_datadir}/mime &> /dev/null || :
281281

282282
%postun -n python3-qgis -p /sbin/ldconfig
283283

284-
# END TODO #
285-
286284
%files -f %{name}.lang
287285
%doc BUGS NEWS Exception_to_GPL_for_Qt.txt ChangeLog.gz
288286
# QGIS shows the following files in the GUI, including the license text

0 commit comments

Comments
 (0)