Ticket #106: netlabs-rpmbuild-all.sh

File netlabs-rpmbuild-all.sh, 2.3 KB (added by Silvan Scherrer, 9 years ago)
Line 
1#!/bin/sh
2
3# This script takes a .spec file and performs a full rebuild of RPM packages
4# for all acrhitectures supported by netlabs.org RPM repositories using the
5# environment from the netlabs_rpmbuild_env.sh script (see that file for more
6# information about the environment). It also generates a .zip package from
7# the last listed architecture (usualliy i386).
8
9run()
10{
11  "$@"
12  local rc=$?
13  if test $rc != 0 ; then
14    echo "ERROR: The following command failed with error code $rc:"
15    echo $@
16    exit $rc
17  fi
18}
19
20log_run()
21{
22  log="$1"
23  shift
24  "$@" >"$log" 2>&1 
25  local rc=$?
26  if test $rc != 0 ; then
27    echo "ERROR: The following command failed with error code $rc:"
28    echo $@
29    echo "You will find more information in file '$log'"
30    exit $rc
31  fi
32}
33
34die()
35{
36    echo "ERROR: $1"
37    exit 1
38}
39
40spec=`echo $1 | tr '\\\' /`
41test -n "$spec" || { echo "ERROR: You must specify a .spec file."; exit 1; }
42
43spec_name="${spec##*/}"
44logDir='.'
45
46# Set up official netlabs.org rpmbuild environment
47. netlabs-rpmbuild-env.sh
48
49if test -d "$logDir" ; then
50# already around
51else
52  run mkdir -p "$logDir"
53fi
54
55test -n "$NETLABS_RPM_ARCH_LIST" || die "NETLABS_RPM_ARCH_LIST is empty."
56
57zip_arch=${NETLABS_RPM_ARCH_LIST##* }
58
59echo "Will rpm-build packages from '$spec' for:"
60echo $NETLABS_RPM_ARCH_LIST + SRPM + ZIP ($zip_arch)"
61
62# Generate RPMs
63for arch in $NETLABS_RPM_ARCH_LIST ; do
64  echo "Creating RPMs for '$arch' target (logging to $logDir/$spec_name.$arch.log)..."
65  log_run "$logDir/$spec_name.$arch.log" rpmbuild --target=$arch -bb "$spec"
66done
67
68# Generate SRPM
69echo "Creating SRPM (logging to $logDir/$spec_name.srpm.log)..."
70log_run "$logDir/$spec_name.srpm.log" rpmbuild -bs "$spec"
71
72# Generate ZIP
73echo "Creating ZIP (logging to $logDir/$spec_name.zip.log)..."
74create_zip()
75{(
76  zip=`grep "src.rpm" "$logDir/$spec_name.srpm.log" | sed -e "s#^[a-zA-Z ]*: *##g" -e "s#.src.rpm##g" | tr . _`.zip
77  zip_dir="${zip%/*}/../zip"
78  zip="$zip_dir/${zip##*/}"
79  echo "Will create '$zip'"
80  run mkdir -p "$zip_dir"
81  rm -r "@unixroot" 2> /dev/null
82  for rpm in `grep "$zip_arch.rpm\|noarch.rpm" "$logDir/$spec_name.$zip_arch.log" | sed "s#^[a-zA-Z ]*: *##g"` ; do
83    echo "Unpacking $rpm..."
84    run rpm2cpio "$rpm" | cpio -idm
85  done
86  rm -f "$zip" 2> /dev/null
87  run zip -mry9 "$zip" "@unixroot"
88)}
89log_run "$logDir/$spec_name.zip.log" create_zip
90
91echo "All done."