Austin Schuh | 745610d | 2015-09-06 18:19:50 -0700 | [diff] [blame] | 1 | #!/bin/sh -e |
| 2 | |
| 3 | # Run this from the 'packages' directory, just under rootdir |
| 4 | |
| 5 | # We can only build rpm packages, if the rpm build tools are installed |
| 6 | if [ \! -x /usr/bin/rpmbuild ] |
| 7 | then |
| 8 | echo "Cannot find /usr/bin/rpmbuild. Not building an rpm." 1>&2 |
| 9 | exit 0 |
| 10 | fi |
| 11 | |
| 12 | # Check the commandline flags |
| 13 | PACKAGE="$1" |
| 14 | VERSION="$2" |
| 15 | fullname="${PACKAGE}-${VERSION}" |
| 16 | archive=../$fullname.tar.gz |
| 17 | |
| 18 | if [ -z "$1" -o -z "$2" ] |
| 19 | then |
| 20 | echo "Usage: $0 <package name> <package version>" 1>&2 |
| 21 | exit 0 |
| 22 | fi |
| 23 | |
| 24 | # Double-check we're in the packages directory, just under rootdir |
| 25 | if [ \! -r ../Makefile -a \! -r ../INSTALL ] |
| 26 | then |
| 27 | echo "Must run $0 in the 'packages' directory, under the root directory." 1>&2 |
| 28 | echo "Also, you must run \"make dist\" before running this script." 1>&2 |
| 29 | exit 0 |
| 30 | fi |
| 31 | |
| 32 | if [ \! -r "$archive" ] |
| 33 | then |
| 34 | echo "Cannot find $archive. Run \"make dist\" first." 1>&2 |
| 35 | exit 0 |
| 36 | fi |
| 37 | |
| 38 | # Create the directory where the input lives, and where the output should live |
| 39 | RPM_SOURCE_DIR="/tmp/rpmsource-$fullname" |
| 40 | RPM_BUILD_DIR="/tmp/rpmbuild-$fullname" |
| 41 | |
| 42 | trap 'rm -rf $RPM_SOURCE_DIR $RPM_BUILD_DIR; exit $?' EXIT SIGHUP SIGINT SIGTERM |
| 43 | |
| 44 | rm -rf "$RPM_SOURCE_DIR" "$RPM_BUILD_DIR" |
| 45 | mkdir "$RPM_SOURCE_DIR" |
| 46 | mkdir "$RPM_BUILD_DIR" |
| 47 | |
| 48 | cp "$archive" "$RPM_SOURCE_DIR" |
| 49 | |
| 50 | # rpmbuild -- as far as I can tell -- asks the OS what CPU it has. |
| 51 | # This may differ from what kind of binaries gcc produces. dpkg |
| 52 | # does a better job of this, so if we can run 'dpkg --print-architecture' |
| 53 | # to get the build CPU, we use that in preference of the rpmbuild |
| 54 | # default. |
| 55 | target=`dpkg --print-architecture 2>/dev/null || echo ""` |
| 56 | if [ -n "$target" ] |
| 57 | then |
| 58 | target=" --target $target" |
| 59 | fi |
| 60 | |
| 61 | rpmbuild -bb rpm/rpm.spec $target \ |
| 62 | --define "NAME $PACKAGE" \ |
| 63 | --define "VERSION $VERSION" \ |
| 64 | --define "_sourcedir $RPM_SOURCE_DIR" \ |
| 65 | --define "_builddir $RPM_BUILD_DIR" \ |
| 66 | --define "_rpmdir $RPM_SOURCE_DIR" |
| 67 | |
| 68 | # We put the output in a directory based on what system we've built for |
| 69 | destdir=rpm-unknown |
| 70 | if [ -r /etc/issue ] |
| 71 | then |
| 72 | grep "Red Hat.*release 7" /etc/issue >/dev/null 2>&1 && destdir=rh7 |
| 73 | grep "Red Hat.*release 8" /etc/issue >/dev/null 2>&1 && destdir=rh8 |
| 74 | grep "Red Hat.*release 9" /etc/issue >/dev/null 2>&1 && destdir=rh9 |
| 75 | grep "Fedora Core.*release 1" /etc/issue >/dev/null 2>&1 && destdir=fc1 |
| 76 | grep "Fedora Core.*release 2" /etc/issue >/dev/null 2>&1 && destdir=fc2 |
| 77 | grep "Fedora Core.*release 3" /etc/issue >/dev/null 2>&1 && destdir=fc3 |
| 78 | fi |
| 79 | |
| 80 | rm -rf "$destdir" |
| 81 | mkdir -p "$destdir" |
| 82 | # We want to get not only the main package but devel etc, hence the middle * |
| 83 | mv "$RPM_SOURCE_DIR"/*/"${PACKAGE}"-*"${VERSION}"*.rpm "$destdir" |
| 84 | |
| 85 | echo |
| 86 | echo "The rpm package file(s) are located in $PWD/$destdir" |