Home | History | Annotate | Download | only in packages
      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"
     87