From 9f89cfcd158d23b698de2892bbe11d4484704f3b Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Sun, 31 Jul 2011 18:28:09 +1000 Subject: [PATCH] Add packaging directory and script and specfile to build RPM packages --- packaging/RPM/libnfs.spec.in | 97 ++++++++++++++++++++++++++++++ packaging/RPM/makerpms.sh | 112 +++++++++++++++++++++++++++++++++++ 2 files changed, 209 insertions(+) create mode 100644 packaging/RPM/libnfs.spec.in create mode 100755 packaging/RPM/makerpms.sh diff --git a/packaging/RPM/libnfs.spec.in b/packaging/RPM/libnfs.spec.in new file mode 100644 index 0000000..5450ede --- /dev/null +++ b/packaging/RPM/libnfs.spec.in @@ -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 index 0000000..c11841b --- /dev/null +++ b/packaging/RPM/makerpms.sh @@ -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 . +# + +# +# 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...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 -- 2.34.1