Add packaging directory and script and specfile to build RPM packages
authorRonnie Sahlberg <ronniesahlberg@gmail.com>
Sun, 31 Jul 2011 08:28:09 +0000 (18:28 +1000)
committerRonnie Sahlberg <ronniesahlberg@gmail.com>
Sun, 31 Jul 2011 08:29:28 +0000 (18:29 +1000)
packaging/RPM/libnfs.spec.in [new file with mode: 0644]
packaging/RPM/makerpms.sh [new file with mode: 0755]

diff --git a/packaging/RPM/libnfs.spec.in b/packaging/RPM/libnfs.spec.in
new file mode 100644 (file)
index 0000000..5450ede
--- /dev/null
@@ -0,0 +1,97 @@
+Name: libnfs
+Summary: NFS client library
+Vendor: Ronnie Sahlberg
+Packager: ronniesahlberg@gmail.com
+Version: @VERSION@
+Release: 1
+Epoch: 0
+License: GNU LGPL version 2.1
+Group: System Environment/Libraries
+URL: http://www.github.com/sahlberg/libnfs
+
+Source: libnfs-%{version}.tar.gz
+
+Provides: lib = %{version}
+
+Prefix: /usr
+BuildRoot: %{_tmppath}/%{name}-%{version}-root
+
+%description
+LibNFS is a NFS client library
+
+#######################################################################
+
+
+
+%prep
+%setup -q
+# setup the init script and sysconfig file
+%setup -T -D -n libnfs-%{version} -q
+
+%build
+
+## check for ccache
+if ccache -h >/dev/null 2>&1 ; then
+       CC="ccache gcc"
+else
+       CC="gcc"
+fi
+
+export CC
+
+## always run autogen.sh
+aclocal
+autoheader
+autoconf
+libtoolize -c -f -i
+automake --add-missing
+
+
+CFLAGS="$RPM_OPT_FLAGS $EXTRA -O0 -g -D_GNU_SOURCE" ./configure \
+       --prefix=%{_prefix} 
+
+%install
+# Clean up in case there is trash left from a previous build
+rm -rf $RPM_BUILD_ROOT
+
+# Create the target build directory hierarchy
+
+make DESTDIR=$RPM_BUILD_ROOT install
+
+# Remove "*.old" files
+find $RPM_BUILD_ROOT -name "*.old" -exec rm -f {} \;
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+
+#######################################################################
+## Files section                                                     ##
+#######################################################################
+
+%files
+%defattr(-,root,root)
+
+%{_libdir}/libnfs.so*
+
+%package devel
+Summary: Development libraries for LibNFS
+Group: Development
+
+%description devel
+development libraries for LibNFS
+
+%files devel
+%defattr(-,root,root)
+%{_includedir}/nfsc/libnfs.h
+%{_includedir}/nfsc/libnfs-raw.h
+%{_includedir}/nfsc/libnfs-raw-mount.h
+%{_includedir}/nfsc/libnfs-raw-nfs.h
+%{_includedir}/nfsc/libnfs-raw-portmap.h
+%{_includedir}/nfsc/libnfs-raw-rquota.h
+%{_libdir}/libnfs.a
+%{_libdir}/libnfs.la
+
+%changelog
+* Sun Jul 31 2011 : Version 1.0
+ - Initial version
diff --git a/packaging/RPM/makerpms.sh b/packaging/RPM/makerpms.sh
new file mode 100755 (executable)
index 0000000..c11841b
--- /dev/null
@@ -0,0 +1,112 @@
+#!/bin/sh
+#
+# makerpms.sh  -  build RPM packages from the git sources
+#
+# Copyright (C) John H Terpstra 1998-2002
+# Copyright (C) Gerald (Jerry) Carter 2003
+# Copyright (C) Jim McDonough 2007
+# Copyright (C) Andrew Tridgell 2007
+# Copyright (C) Michael Adam 2008-2009
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 3 of the License, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, see <http://www.gnu.org/licenses/>.
+#
+
+#
+# The following allows environment variables to override the target directories
+#   the alternative is to have a file in your home directory calles .rpmmacros
+#   containing the following:
+#   %_topdir  /home/mylogin/redhat
+#
+# Note: Under this directory rpm expects to find the same directories that are under the
+#   /usr/src/redhat directory
+#
+
+EXTRA_OPTIONS="$1"
+
+DIRNAME=$(dirname $0)
+TOPDIR=${DIRNAME}/../..
+
+SPECDIR=`rpm --eval %_specdir`
+SRCDIR=`rpm --eval %_sourcedir`
+
+SPECFILE="libnfs.spec"
+SPECFILE_IN="libnfs.spec.in"
+RPMBUILD="rpmbuild"
+
+# We use tags and determine the version, as follows:
+# libnfs-0.9.1  (First release of 0.9).
+# libnfs-0.9.23 (23rd minor release of the 112 version)
+#
+# If we're not directly on a tag, this is a devel release; we append
+# .0.<patchnum>.<checksum>.devel to the release.
+TAG=`git describe`
+case "$TAG" in
+    libnfs-*)
+       TAG=${TAG##libnfs-}
+       case "$TAG" in
+           *-*-g*) # 0.9-168-ge6cf0e8
+               # Not exactly on tag: devel version.
+               VERSION=`echo "$TAG" | sed 's/\([^-]\+\)-\([0-9]\+\)-\(g[0-9a-f]\+\)/\1.0.\2.\3.devel/'`
+               ;;
+           *)
+               # An actual release version
+               VERSION=$TAG
+               ;;
+       esac
+       ;;
+    *)
+       echo Invalid tag "$TAG" >&2
+       exit 1
+       ;;
+esac
+
+sed -e s/@VERSION@/$VERSION/g \
+       < ${DIRNAME}/${SPECFILE_IN} \
+       > ${DIRNAME}/${SPECFILE}
+
+VERSION=$(grep ^Version ${DIRNAME}/${SPECFILE} | sed -e 's/^Version:\ \+//')
+
+if echo | gzip -c --rsyncable - > /dev/null 2>&1 ; then
+       GZIP="gzip -9 --rsyncable"
+else
+       GZIP="gzip -9"
+fi
+
+pushd ${TOPDIR}
+echo -n "Creating libnfs-${VERSION}.tar.gz ... "
+git archive --prefix=libnfs-${VERSION}/ HEAD | ${GZIP} > ${SRCDIR}/libnfs-${VERSION}.tar.gz
+RC=$?
+popd
+echo "Done."
+if [ $RC -ne 0 ]; then
+        echo "Build failed!"
+        exit 1
+fi
+
+# At this point the SPECDIR and SRCDIR vaiables must have a value!
+
+##
+## copy additional source files
+##
+cp -p ${DIRNAME}/${SPECFILE} ${SPECDIR}
+
+##
+## Build
+##
+echo "$(basename $0): Getting Ready to build release package"
+${RPMBUILD} -ba --clean --rmsource ${EXTRA_OPTIONS} ${SPECDIR}/${SPECFILE} || exit 1
+
+echo "$(basename $0): Done."
+
+exit 0