mhshow: suppress pause actions if stdout isn't a tty
[mmh] / nmh.spec
index b736dc8..68a67a9 100644 (file)
--- a/nmh.spec
+++ b/nmh.spec
@@ -1,17 +1,50 @@
-# Assumes that rpmbuild was invoked main nmh directory using "make rpm".
-# "make rpm" uses an RPM directory below the current directory.
+# This spec supports two methods of RPM creation:
+#
+# 1) Start from an nmh workspace, run configure as desired and then "make rpm".
+#    For example:
+#      $ git clone git://git.savannah.nongnu.org/nmh.git
+#      $ cd nmh
+#      $ ./autogen.sh
+#      $ ./configure --with-cyrus-sasl --with-locking=fcntl  &&  make rpm
+#
+# 2) Start with a source RPM and use rpmbuild.  Configure options are hard
+#    coded below, but they can be overridden on the rpmbuild command line
+#    with --define 'configure_opts --opt=value [...]'.
+#    For example:
+#      $ rpm -i nmh-1.4-0.fc16.src.rpm
+#      $ rpmbuild --rmsource --rmspec \
+#          --define 'configure_opts --with-cyrus-sasl --with-locking=fcntl' \
+#          --bb ~/lib/rpmbuild/SPECS/nmh.spec
+#
+# If configure has previously been run successfully in the workspace,
+# it will not be invoked again, even if configure_opts is defined.
+#
+# With kernel (fcntl, flock, or lockf) locking, or with dot locking
+# and a lockdir that's writable by the user, bin/inc does not need to
+# be setgid.  This spec assumes that.  But if needed, add something
+# like this to the %files section to make bin/inc setgid:
+#   %attr(2755,-,mail) /usr/local/nmh/bin/inc
+#
 # Note that Version cannot contain any dashes.
+#
+# The description, summary, and a few other tags were taken from the
+# nmh.spec used to build the Fedora 15 nmh rpm.
 
-Name:        nmh
-Version:     1.4.dev
-Release:     1%{?dist}
-Summary:     A capable mail handling system with a command line interface.
-
-Group:       Applications/Internet
-License:     BSD
-URL:         http://savannah.nongnu.org/projects/nmh
-Source0:     nmh-1.4-dev.tar.gz
-BuildRoot:   %{_tmppath}/%{name}-%{version}-%{release}-build
+Name:          nmh
+Version:       %(sed "s/-/_/g" VERSION)
+%define        rawversion %(cat VERSION)
+Release:       0%{?dist}
+Summary:       A capable mail handling system with a command line interface.
+Group:         Applications/Internet
+License:       BSD
+URL:           http://savannah.nongnu.org/projects/nmh
+BuildRequires: gdbm-devel ncurses-devel
+%define        tarfile nmh-%rawversion.tar.gz
+Source0:       %tarfile
+Source1:       VERSION
+%define        srcdir %(pwd)
+# This should already be defined in /usr/lib/rpm/macros:
+# BuildRoot:     %{_buildrootdir}/%{name}-%{version}-%{release}.%{_arch}
 
 %description
 Nmh is an email system based on the MH email system and is intended to
@@ -24,41 +57,54 @@ scripts which utilize nmh commands.  If you want to use nmh as a true
 email user agent, you'll want to also install exmh to provide a user
 interface for it--nmh only has a command line interface.
 
+
 %prep
-cp -p %{srcdir}/nmh-1.4-dev.tar.gz $RPM_SOURCE_DIR
+if [ ! -f $RPM_SOURCE_DIR/%tarfile ]; then
+  #### The tarfile wasn't already installed and we started with a
+  #### workspace (using make rpm), so get it from there.
+  [ -f %srcdir/%tarfile ]  ||  (cd %srcdir  &&  make dist)
+  cp -p %srcdir/%tarfile $RPM_SOURCE_DIR/%tarfile
+fi
+[ -f $RPM_SOURCE_DIR/VERSION ]  ||  cp -p %srcdir/VERSION $RPM_SOURCE_DIR
+%setup -q -n %name-%rawversion
 
 
 %build
+if [ -f %srcdir/config.status ]; then
+  echo reusing existing configuration
+  cp -pf %srcdir/config.status .
+  ./config.status
+else
+  %if %{undefined configure_opts}
+    %define configure_opts --enable-pop --with-cyrus-sasl --with-locking=fcntl
+  %endif
+  %configure %configure_opts
+fi
+make all dist
 
 
 %install
-rm -rf $RPM_BUILD_ROOT
-
-#### Assumes that configure was run with --prefix=/usr, at least.
-#### The directory placements need to be cleaned up.
-(cd %{srcdir}  &&  \
- make install DESTDIR=$RPM_BUILD_ROOT SETGID_MAIL=)
+rm -rf $RPM_BUILD_ROOT doc
+make install DESTDIR=$RPM_BUILD_ROOT SETGID_MAIL=
+#### Exclude docs from nmh_files because its files are added with the
+#### %doc directive in the %files section below.
+mv `find $RPM_BUILD_ROOT -type d -name doc` .
 
-#### Not sure why .gz needs to be appended to man file names here.
-#### But without it, the man files don't show the .gz extension:
-find $RPM_BUILD_ROOT ! -type d -print | sed "s#^$RPM_BUILD_ROOT##g" > files
+gz_manpages='-e '
 
-#### Should do the following with an install target in docs/Makefile.
-#### Note that these are excluded from files above because they're
-#### added with doc's in the %files section below.
-mkdir -p docs
-cp -p %{srcdir}/VERSION %{srcdir}/COPYRIGHT .
-for i in COMPLETION-* DIFFERENCES FAQ MAIL.FILTERING README* TODO; do
-  cp -p %{srcdir}/docs/$i docs
-done
+if find $RPM_BUILD_ROOT -name 'inc.1*' | \
+   egrep -q '/usr(/lib|/share)?/man/([^/]+/)?man'; then
+  #### brp-compress will gzip the man pages, so account for that.
+  gz_manpages='-e s#\(/man/man./.*\)#\1.gz#'
+fi
+find $RPM_BUILD_ROOT ! -type d -print | \
+  sed -e "s#^$RPM_BUILD_ROOT##" "$gz_manpages" > nmh_files
 
 
 %clean
-rm -rf files $RPM_BUILD_ROOT docs COPYRIGHT VERSION
+rm -rf $RPM_BUILD_ROOT doc $RPM_BUILD_DIR/%name-%rawversion
 
 
-%files -f files
+%files -f nmh_files
 %defattr(-,root,root,-)
-%doc COPYRIGHT VERSION
-%doc docs/COMPLETION-* docs/DIFFERENCES docs/FAQ docs/MAIL.FILTERING
-%doc docs/README* docs/TODO
+%doc doc/*