now can build source and binary
authorBen Pfaff <blp@cs.stanford.edu>
Sun, 6 Jun 2010 19:53:27 +0000 (12:53 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 6 Jun 2010 19:53:27 +0000 (12:53 -0700)
.gitignore
Makefile.am
build-pspp.m4
dist-pspp.as [deleted file]
make-bin-dist.as [new file with mode: 0644]
make-binary.as [deleted file]
make-src-dist.as [new file with mode: 0644]

index 0dfdc0024dd571e2e0dfc13fbc63f68e8fe44d01..685509605d6f7102683cd3a93d1181de20acc60d 100644 (file)
 /config.log
 /config.status
 /configure
-/dist-pspp
-/dist-pspp.in
+/make-bin-dist
+/make-bin-dist.in
+/make-src-dist
+/make-src-dist.in
 /make-builder
 /make-builder.in
 /repo.git/
index bd28503e0fc9da654f302fc7a94c768cd877e7a4..4102ff5166e1c2e4442e64a5885b1d3c14a11e52 100644 (file)
@@ -1,18 +1,18 @@
 AUTOMAKE_OPTIONS = foreign
 
-dist_noinst_DATA = make-builder.as dist-pspp.as #build-pspp.as
+dist_noinst_DATA = make-builder.as make-src-dist.as make-bin-dist.as
 
 dist_noinst_SCRIPTS = make-builder
-dist_noinst_DATA += dist-pspp.in #build-pspp.in
+dist_noinst_DATA += make-src-dist.in make-bin-dist.in
 
 AUTOM4TE = autom4te
 
 make-builder.in: make-builder.as
        $(AUTOM4TE) --language M4sh make-builder.as -o $@
-dist-pspp.in: dist-pspp.as build-pspp.m4
-       $(AUTOM4TE) --language build-pspp dist-pspp.as -o $@
-#build-pspp.in: build-pspp.as build-pspp.m4
-#      $(AUTOM4TE) --language build-pspp build-pspp.as -o $@
+make-src-dist.in: make-src-dist.as make-pspp.m4
+       $(AUTOM4TE) --language make-pspp make-src-dist.as -o $@
+make-bin-dist.in: make-bin-dist.as make-pspp.m4
+       $(AUTOM4TE) --language make-pspp make-bin-dist.as -o $@
 
 edit = sed \
         -e 's|@VERSION[@]|$(VERSION)|g' \
index 7f1f3fa12667fd31bb697d7364cc73a353b58319..2068f7a172c13c96e17e416ca1163d4e2ec3805e 100644 (file)
@@ -1,3 +1,5 @@
+# -*- autoconf -*-
+
 m4_define([_m4_divert(INIT_PREPARE)],   300)
 
 m4_pattern_forbid([^_?BP_])
@@ -55,9 +57,14 @@ exec AS_MESSAGE_FD>&1
 # BP_START_STEP([MESSAGE])
 m4_define([BP_START_STEP],
   [AS_ECHO(["$1"])
-AS_ECHO(["\f@&t@
-$1"]) >&AS_MESSAGE_LOG_FD
-])
+{
+  _bp_line=`AS_ECHO("$1") | sed 's/./-/g'`
+  echo
+  AS_ECHO("@%:@@%:@ $_bp_line @%:@@%:@")
+  AS_ECHO("@%:@@%:@ $1 @%:@@%:@")
+  AS_ECHO("@%:@@%:@ $_bp_line @%:@@%:@")
+  echo
+} >&AS_MESSAGE_LOG_FD])
 
 # BP_SET_VAR(VARIABLE, [VALUE])
 m4_define([BP_SET_VAR],
@@ -69,7 +76,8 @@ AS_ECHO(["    $1=$[$1]"])])
 
 # BP_OUTPUT(DESCRIPTION, FILE)
 m4_define([BP_OUTPUT],
-[BP_START_STEP([Saving `AS_BASENAME([$2])`: $1])])
+[_bp_basename=`AS_BASENAME([$2])`
+BP_START_STEP([Saving $_bp_basename: $1])])
 
 # BP_MOVE_OUTPUT(DESCRIPTION, FILE)
 m4_define([BP_MOVE_OUTPUT],
@@ -81,8 +89,8 @@ m4_define([BP_COPY_OUTPUT],
 [BP_OUTPUT([$1], [$2])
 BP_RUN([cp -R $2 results/ >&AS_MESSAGE_LOG_FD 2>&1])])
 
-# BP_RUN_LOG(COMMAND)
-m4_define([BP_RUN_LOG],
+# BP_TRY_RUN(COMMAND)
+m4_define([BP_TRY_RUN],
 [cat <<_BP_EOF >&AS_MESSAGE_LOG_FD
 $as_me:$LINENO: $1
 _BP_EOF
@@ -91,14 +99,24 @@ $1
 
 # BP_RUN(COMMAND)
 m4_define([BP_RUN],
-[BP_RUN_LOG([$1])
+[BP_TRY_RUN([$1])
 _bp_status=$?
 if test $_bp_status != 0; then
-  AS_ECHO(["Build failed, refer to BP_LOG_FILE for details"])
   AS_ECHO(["$as_me:$LINENO: command exited with status $_bp_status"]) >&AS_MESSAGE_LOG_FD
-  AS_EXIT([1])
+  BP_FAIL
 fi])
 
+# BP_FAIL
+m4_define([BP_FAIL],
+[BP_ERROR(["Build failed, refer to BP_LOG_FILE for details"])])
+
 # BP_FINISH
 m4_define([BP_FINISH],
 [BP_START_STEP([success])])
+
+# BP_ERROR(MESSAGE)
+m4_define([BP_ERROR], 
+  [{
+     exec >&2
+     AS_ERROR([$1])
+   }])
diff --git a/dist-pspp.as b/dist-pspp.as
deleted file mode 100644 (file)
index 3d3f225..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-# -* autoconf -*-
-
-BP_INIT([dist-pspp.log])
-
-BP_SET_VAR([COMMIT], [@PSPP_COMMIT@])
-BP_SET_VAR([GNULIB_COMMIT], [@GNULIB_COMMIT@])
-BP_SET_VAR([BRANCH], [@BRANCH@])
-
-ABBREV_COMMIT=`expr "$COMMIT" : '\(......\)'`
-BP_SET_VAR([ABBREV_COMMIT])
-
-BP_START_STEP([Extracting Git sources])
-tar xzf pspp-$COMMIT.tar.gz
-
-BP_START_STEP([Extract repository version number])
-(cd pspp-$COMMIT && autoconf -t AC_INIT) > tmp$$
-IFS=: read FILE LINE macro PACKAGE REPO_VERSION BUG_REPORT TARNAME URL < tmp$$
-BP_SET_VAR([REPO_VERSION])
-
-BP_START_STEP([Checking Automake mode])
-if grep gnits pspp-$COMMIT/Makefile.am >/dev/null 2>&1; then
-  AM_MODE=gnits
-else
-  AM_MODE=gnu
-fi
-BP_SET_VAR([AM_MODE])
-
-BP_START_STEP([Generate build version number])
-case $AM_MODE-$REPO_VERSION in # (
-  gnits-*-*) 
-    # We want to append -g012345, but we're in Gnits mode and the
-    # version number already has a hyphen, so we have to omit the
-    # second hyphen.
-    VERSION="$REPO_VERSIONg$ABBREV_COMMIT"
-    ;; # (
-  *)
-    VERSION="$REPO_VERSION-g$ABBREV_COMMIT"
-    ;;
-esac
-BP_SET_VAR([VERSION])
-
-BP_START_STEP([Update version number in configure.ac])
-echo "AC_INIT([[$PACKAGE], [$VERSION], [$BUG_REPORT], [$TARNAME], [$URL]])" > tmp$$
-sed -n "${LINE}r tmp$$
-$LINE!p" < pspp-$COMMIT/$FILE > pspp-$COMMIT/$FILE.new
-mv pspp-$COMMIT/$FILE.new pspp-$COMMIT/$FILE
-
-BP_START_STEP([Updating NEWS])
-{
-  sed -n '/^Changes/q;p' pspp-$COMMIT/NEWS
-cat <<_BP_EOF
-Changes from $REPO_VERSION to $VERSION:
-
- * Built from PSPP commit $COMMIT
-   in branch $BRANCH on host `hostname`.
-
- * Built from Gnulib commit $GNULIB_COMMIT.
-
-_BP_EOF
-  sed -n '/^Changes/,$p' pspp-$COMMIT/NEWS
-} > NEWS.new
-mv NEWS.new pspp-$COMMIT/NEWS
-
-BP_START_STEP([Extract Gnulib source])
-BP_RUN([tar xzf gnulib-$GNULIB_COMMIT.tar.gz >&AS_MESSAGE_LOG_FD 2>&1])
-
-BP_START_STEP([Bootstrap (make -f Smake)])
-BP_RUN([(cd pspp-$COMMIT && make -f Smake GNULIB=../gnulib-$GNULIB_COMMIT) >&AS_MESSAGE_LOG_FD 2>&1])
-
-BP_START_STEP([Configure])
-AS_MKDIR_P([pspp-$COMMIT/_build])
-BP_RUN([(cd pspp-$COMMIT/_build && ../configure @CONFIGUREFLAGS@) >&AS_MESSAGE_LOG_FD 2>&1])
-
-BP_START_STEP([Make source tarball])
-BP_RUN([(cd pspp-$COMMIT/_build && make dist) >&AS_MESSAGE_LOG_FD 2>&1])
-BP_MOVE_OUTPUT([source distribution], [pspp-$COMMIT/_build/pspp-$VERSION.tar.gz])
-
-potfile=pspp-$COMMIT/_build/po/pspp.pot
-if test ! -e $potfile; then
-  potfile=pspp-$COMMIT/po/pspp.pot
-fi
-BP_COPY_OUTPUT([translation templates], [$potfile])
-
-BP_START_STEP([Build user manual])
-BP_RUN([(cd pspp-$COMMIT && cp _build/doc/*.texi doc/) >&AS_MESSAGE_LOG_FD 2>&1])
-BP_RUN([(cd pspp-$COMMIT && GENDOCS_TEMPLATE_DIR=.. ../gendocs.sh -s doc/pspp.texinfo -o results/user-manual --email bug-gnu-pspp@gnu.org pspp "GNU PSPP User Manual") >&AS_MESSAGE_LOG_FD 2>&1])
-BP_OUTPUT([User Manual], [user-manual])
-
-BP_START_STEP([Build developers guide])
-BP_RUN([(cd pspp-$COMMIT && GENDOCS_TEMPLATE_DIR=.. ../gendocs.sh -s doc/pspp-dev.texinfo -o results/dev-guide --email bug-gnu-pspp@gnu.org pspp-dev "GNU PSPP Developers Guide") >&AS_MESSAGE_LOG_FD 2>&1])
-BP_OUTPUT([Developers Guide], [dev-guide])
-
-BP_FINISH
diff --git a/make-bin-dist.as b/make-bin-dist.as
new file mode 100644 (file)
index 0000000..742f2bf
--- /dev/null
@@ -0,0 +1,166 @@
+# -* autoconf -*-
+
+BP_INIT([make-binary.log])
+
+usage=["\
+Usage: $0 [OPTION]... PSPP_DIST.TAR.GZ
+where PSPP_DIST.TAR.GZ is a PSPP tarball prepared by \"make dist\".
+
+Options:
+  -b, --binid=BINID         Use BINID to identify binary.
+  -h, --help                Print this usage message and exit
+  -f, --force               Delete existing directory instead of aborting
+
+Report bugs to <bug-gnu-pspp@gnu.org>.
+GNU PSPP: <http://www.gnu.org/software/pspp/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."]
+
+version=["\
+make-binary (@PACKAGE_NAME@) @VERSION@
+Copyright (C) 2010 Free Software Foundation, Inc.
+License GPLv3+/Autoconf: GNU GPL version 3 or later
+<http://gnu.org/licenses/gpl.html>, <http://gnu.org/licenses/exceptions.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+Written by Ben Pfaff."]
+
+help="\
+Try \`$as_me --help' for more information."
+
+exit_missing_arg='
+  m4_bpatsubst([AS_ERROR([option `$[1]' requires an argument$as_nl$help])],
+    ['], ['\\''])'
+# restore font-lock: '
+
+# Variables.
+overwrite=false
+BINID=
+
+# Parse command line.
+while test $# -gt 0 ; do
+  option=[`expr "x$1" : 'x\(--[^=]*\)' \| \
+              "x$1" : 'x\(-.\)'`]
+  optarg=[`expr "x$1" : 'x--[^=]*=\(.*\)' \| \
+              "x$1" : 'x-.\(.*\)'`]
+  case $1 in
+    --version | -V )
+       echo "$version" ; exit ;;
+    --help | -h )
+       AS_ECHO(["$usage"]); exit ;;
+
+    --force | -f )
+       overwrite=true ;;
+
+    --binid=* | -b?* )
+       BINID=$optarg
+       shift ;;
+    --binid | -b )
+       test $# = 1 && eval "$exit_missing_arg"
+       BINID=$2
+       shift; shift ;;
+
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       exec >&2
+       AS_ERROR([invalid option `$[1]'$as_nl$help]) ;; #`
+    * )
+       break ;;
+  esac
+done
+
+# Find the input file.
+case $# in
+  1)
+    tarball=$1
+    ;;
+  *) exec >&2
+     AS_ERROR([invalid number of arguments$as_nl$help]) ;;
+esac
+
+if test ! -e "$tarball"; then
+   exec >&2
+   AS_ERROR([$tarball does not exist])
+fi
+
+BP_START_STEP([Determining $tarball target directory])
+DIST_DIR=`zcat $tarball | tar tf - 2>/dev/null | sed 1q | sed s,/.*,,`
+BP_SET_VAR([DIST_DIR])
+if test X$DIST_DIR = X; then
+  BP_ERROR([failed to determine $tarball target directory])
+elif test -e "$DIST_DIR"; then
+  if test $overwrite = true; then
+    chmod -R u+w "$DIST_DIR"
+    rm -rf "$DIST_DIR"
+  else
+    BP_ERROR([$DIST_DIR exists and --force not specified])
+  fi
+fi
+
+BP_START_STEP([Extracting source tarball])
+BP_RUN([zcat $tarball | tar xf - >&AS_MESSAGE_LOG_FD 2>&1])
+
+BP_START_STEP([Extracting tar version])
+DIST_VERSION=`$DIST_DIR/configure --version 2>/dev/null | sed 1q | sed 's/.* //'`
+BP_SET_VAR([DIST_VERSION])
+
+BP_START_STEP([Configuring])
+BP_RUN([mkdir $DIST_DIR/_build >&AS_MESSAGE_LOG_FD 2>&1])
+BP_RUN([chmod -R a-w $DIST_DIR >&AS_MESSAGE_LOG_FD 2>&1])
+BP_RUN([chmod u+w $DIST_DIR/_build >&AS_MESSAGE_LOG_FD 2>&1])
+BP_TRY_RUN([(cd $DIST_DIR/_build && ../configure --enable-relocatable --prefix='') >&AS_MESSAGE_LOG_FD 2>&1])
+_bp_status=$?
+for base in config.h config.log; do
+  fn=$DIST_DIR/_build/$base
+  if test -e "$fn"; then
+    BP_COPY_OUTPUT([build configuration], [$fn])
+  fi
+done
+if test $_bp_status != 0; then
+  AS_ECHO(["$as_me:$LINENO: command exited with status $_bp_status"]) >&AS_MESSAGE_LOG_FD
+fi
+
+BP_START_STEP([Determine target name])
+if test "X$BINID" = X; then
+  BINID=`sed -n 's/^Target: \(.*\)$/\1/p' < $DIST_DIR/_build/config.log 2>/dev/null | sed 1q`
+  if test "X$BINID" = X; then
+    BINID=`./config.guess`
+  fi
+fi  
+BP_SET_VAR([BINID])
+
+BP_START_STEP([Build])
+BP_RUN([(cd $DIST_DIR/_build && make) >&AS_MESSAGE_LOG_FD 2>&1])
+
+BP_START_STEP([Install])
+BP_RUN([(cd $DIST_DIR/_build && make install DESTDIR=$PWD/pspp-$DIST_VERSION-$BINID) >&AS_MESSAGE_LOG_FD 2>&1])
+
+BP_START_STEP([Make binary distribution])
+BP_RUN([(cd $DIST_DIR/_build && tar cfz pspp-$DIST_VERSION-$BINID.tar.gz pspp-$DIST_VERSION-$BINID) >&AS_MESSAGE_LOG_FD 2>&1])
+BP_MOVE_OUTPUT([binary distribution], [$DIST_DIR/_build/pspp-$DIST_VERSION-$BINID.tar.gz])
+
+BP_START_STEP([Check])
+BP_TRY_RUN([(cd $DIST_DIR/_build && make check) >&AS_MESSAGE_LOG_FD 2>&1])
+_bp_status=$?
+for base in tests/testsuite.log tests/testsuite.dir; do
+  fn=$DIST_DIR/_build/$base
+  if test -e "$fn"; then
+    BP_MOVE_OUTPUT([test logs], [$fn])
+  fi
+done
+if test $_bp_status != 0; then
+  AS_ECHO(["$as_me:$LINENO: command exited with status $_bp_status"]) >&AS_MESSAGE_LOG_FD
+fi
+
+BP_START_STEP([Uninstall])
+BP_RUN([(cd $DIST_DIR/_build && make uninstall DESTDIR=$PWD/pspp-$DIST_VERSION-$BINID) >&AS_MESSAGE_LOG_FD 2>&1])
+
+BP_START_STEP([Check uninstall])
+BP_RUN([(cd $DIST_DIR/_build && make distuninstallcheck distuninstallcheck_dir=$PWD/pspp-$DIST_VERSION-$BINID) >&AS_MESSAGE_LOG_FD 2>&1])
+
+# distcleancheck
+
+BP_FINISH
diff --git a/make-binary.as b/make-binary.as
deleted file mode 100644 (file)
index 3d3f225..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-# -* autoconf -*-
-
-BP_INIT([dist-pspp.log])
-
-BP_SET_VAR([COMMIT], [@PSPP_COMMIT@])
-BP_SET_VAR([GNULIB_COMMIT], [@GNULIB_COMMIT@])
-BP_SET_VAR([BRANCH], [@BRANCH@])
-
-ABBREV_COMMIT=`expr "$COMMIT" : '\(......\)'`
-BP_SET_VAR([ABBREV_COMMIT])
-
-BP_START_STEP([Extracting Git sources])
-tar xzf pspp-$COMMIT.tar.gz
-
-BP_START_STEP([Extract repository version number])
-(cd pspp-$COMMIT && autoconf -t AC_INIT) > tmp$$
-IFS=: read FILE LINE macro PACKAGE REPO_VERSION BUG_REPORT TARNAME URL < tmp$$
-BP_SET_VAR([REPO_VERSION])
-
-BP_START_STEP([Checking Automake mode])
-if grep gnits pspp-$COMMIT/Makefile.am >/dev/null 2>&1; then
-  AM_MODE=gnits
-else
-  AM_MODE=gnu
-fi
-BP_SET_VAR([AM_MODE])
-
-BP_START_STEP([Generate build version number])
-case $AM_MODE-$REPO_VERSION in # (
-  gnits-*-*) 
-    # We want to append -g012345, but we're in Gnits mode and the
-    # version number already has a hyphen, so we have to omit the
-    # second hyphen.
-    VERSION="$REPO_VERSIONg$ABBREV_COMMIT"
-    ;; # (
-  *)
-    VERSION="$REPO_VERSION-g$ABBREV_COMMIT"
-    ;;
-esac
-BP_SET_VAR([VERSION])
-
-BP_START_STEP([Update version number in configure.ac])
-echo "AC_INIT([[$PACKAGE], [$VERSION], [$BUG_REPORT], [$TARNAME], [$URL]])" > tmp$$
-sed -n "${LINE}r tmp$$
-$LINE!p" < pspp-$COMMIT/$FILE > pspp-$COMMIT/$FILE.new
-mv pspp-$COMMIT/$FILE.new pspp-$COMMIT/$FILE
-
-BP_START_STEP([Updating NEWS])
-{
-  sed -n '/^Changes/q;p' pspp-$COMMIT/NEWS
-cat <<_BP_EOF
-Changes from $REPO_VERSION to $VERSION:
-
- * Built from PSPP commit $COMMIT
-   in branch $BRANCH on host `hostname`.
-
- * Built from Gnulib commit $GNULIB_COMMIT.
-
-_BP_EOF
-  sed -n '/^Changes/,$p' pspp-$COMMIT/NEWS
-} > NEWS.new
-mv NEWS.new pspp-$COMMIT/NEWS
-
-BP_START_STEP([Extract Gnulib source])
-BP_RUN([tar xzf gnulib-$GNULIB_COMMIT.tar.gz >&AS_MESSAGE_LOG_FD 2>&1])
-
-BP_START_STEP([Bootstrap (make -f Smake)])
-BP_RUN([(cd pspp-$COMMIT && make -f Smake GNULIB=../gnulib-$GNULIB_COMMIT) >&AS_MESSAGE_LOG_FD 2>&1])
-
-BP_START_STEP([Configure])
-AS_MKDIR_P([pspp-$COMMIT/_build])
-BP_RUN([(cd pspp-$COMMIT/_build && ../configure @CONFIGUREFLAGS@) >&AS_MESSAGE_LOG_FD 2>&1])
-
-BP_START_STEP([Make source tarball])
-BP_RUN([(cd pspp-$COMMIT/_build && make dist) >&AS_MESSAGE_LOG_FD 2>&1])
-BP_MOVE_OUTPUT([source distribution], [pspp-$COMMIT/_build/pspp-$VERSION.tar.gz])
-
-potfile=pspp-$COMMIT/_build/po/pspp.pot
-if test ! -e $potfile; then
-  potfile=pspp-$COMMIT/po/pspp.pot
-fi
-BP_COPY_OUTPUT([translation templates], [$potfile])
-
-BP_START_STEP([Build user manual])
-BP_RUN([(cd pspp-$COMMIT && cp _build/doc/*.texi doc/) >&AS_MESSAGE_LOG_FD 2>&1])
-BP_RUN([(cd pspp-$COMMIT && GENDOCS_TEMPLATE_DIR=.. ../gendocs.sh -s doc/pspp.texinfo -o results/user-manual --email bug-gnu-pspp@gnu.org pspp "GNU PSPP User Manual") >&AS_MESSAGE_LOG_FD 2>&1])
-BP_OUTPUT([User Manual], [user-manual])
-
-BP_START_STEP([Build developers guide])
-BP_RUN([(cd pspp-$COMMIT && GENDOCS_TEMPLATE_DIR=.. ../gendocs.sh -s doc/pspp-dev.texinfo -o results/dev-guide --email bug-gnu-pspp@gnu.org pspp-dev "GNU PSPP Developers Guide") >&AS_MESSAGE_LOG_FD 2>&1])
-BP_OUTPUT([Developers Guide], [dev-guide])
-
-BP_FINISH
diff --git a/make-src-dist.as b/make-src-dist.as
new file mode 100644 (file)
index 0000000..3d3f225
--- /dev/null
@@ -0,0 +1,93 @@
+# -* autoconf -*-
+
+BP_INIT([dist-pspp.log])
+
+BP_SET_VAR([COMMIT], [@PSPP_COMMIT@])
+BP_SET_VAR([GNULIB_COMMIT], [@GNULIB_COMMIT@])
+BP_SET_VAR([BRANCH], [@BRANCH@])
+
+ABBREV_COMMIT=`expr "$COMMIT" : '\(......\)'`
+BP_SET_VAR([ABBREV_COMMIT])
+
+BP_START_STEP([Extracting Git sources])
+tar xzf pspp-$COMMIT.tar.gz
+
+BP_START_STEP([Extract repository version number])
+(cd pspp-$COMMIT && autoconf -t AC_INIT) > tmp$$
+IFS=: read FILE LINE macro PACKAGE REPO_VERSION BUG_REPORT TARNAME URL < tmp$$
+BP_SET_VAR([REPO_VERSION])
+
+BP_START_STEP([Checking Automake mode])
+if grep gnits pspp-$COMMIT/Makefile.am >/dev/null 2>&1; then
+  AM_MODE=gnits
+else
+  AM_MODE=gnu
+fi
+BP_SET_VAR([AM_MODE])
+
+BP_START_STEP([Generate build version number])
+case $AM_MODE-$REPO_VERSION in # (
+  gnits-*-*) 
+    # We want to append -g012345, but we're in Gnits mode and the
+    # version number already has a hyphen, so we have to omit the
+    # second hyphen.
+    VERSION="$REPO_VERSIONg$ABBREV_COMMIT"
+    ;; # (
+  *)
+    VERSION="$REPO_VERSION-g$ABBREV_COMMIT"
+    ;;
+esac
+BP_SET_VAR([VERSION])
+
+BP_START_STEP([Update version number in configure.ac])
+echo "AC_INIT([[$PACKAGE], [$VERSION], [$BUG_REPORT], [$TARNAME], [$URL]])" > tmp$$
+sed -n "${LINE}r tmp$$
+$LINE!p" < pspp-$COMMIT/$FILE > pspp-$COMMIT/$FILE.new
+mv pspp-$COMMIT/$FILE.new pspp-$COMMIT/$FILE
+
+BP_START_STEP([Updating NEWS])
+{
+  sed -n '/^Changes/q;p' pspp-$COMMIT/NEWS
+cat <<_BP_EOF
+Changes from $REPO_VERSION to $VERSION:
+
+ * Built from PSPP commit $COMMIT
+   in branch $BRANCH on host `hostname`.
+
+ * Built from Gnulib commit $GNULIB_COMMIT.
+
+_BP_EOF
+  sed -n '/^Changes/,$p' pspp-$COMMIT/NEWS
+} > NEWS.new
+mv NEWS.new pspp-$COMMIT/NEWS
+
+BP_START_STEP([Extract Gnulib source])
+BP_RUN([tar xzf gnulib-$GNULIB_COMMIT.tar.gz >&AS_MESSAGE_LOG_FD 2>&1])
+
+BP_START_STEP([Bootstrap (make -f Smake)])
+BP_RUN([(cd pspp-$COMMIT && make -f Smake GNULIB=../gnulib-$GNULIB_COMMIT) >&AS_MESSAGE_LOG_FD 2>&1])
+
+BP_START_STEP([Configure])
+AS_MKDIR_P([pspp-$COMMIT/_build])
+BP_RUN([(cd pspp-$COMMIT/_build && ../configure @CONFIGUREFLAGS@) >&AS_MESSAGE_LOG_FD 2>&1])
+
+BP_START_STEP([Make source tarball])
+BP_RUN([(cd pspp-$COMMIT/_build && make dist) >&AS_MESSAGE_LOG_FD 2>&1])
+BP_MOVE_OUTPUT([source distribution], [pspp-$COMMIT/_build/pspp-$VERSION.tar.gz])
+
+potfile=pspp-$COMMIT/_build/po/pspp.pot
+if test ! -e $potfile; then
+  potfile=pspp-$COMMIT/po/pspp.pot
+fi
+BP_COPY_OUTPUT([translation templates], [$potfile])
+
+BP_START_STEP([Build user manual])
+BP_RUN([(cd pspp-$COMMIT && cp _build/doc/*.texi doc/) >&AS_MESSAGE_LOG_FD 2>&1])
+BP_RUN([(cd pspp-$COMMIT && GENDOCS_TEMPLATE_DIR=.. ../gendocs.sh -s doc/pspp.texinfo -o results/user-manual --email bug-gnu-pspp@gnu.org pspp "GNU PSPP User Manual") >&AS_MESSAGE_LOG_FD 2>&1])
+BP_OUTPUT([User Manual], [user-manual])
+
+BP_START_STEP([Build developers guide])
+BP_RUN([(cd pspp-$COMMIT && GENDOCS_TEMPLATE_DIR=.. ../gendocs.sh -s doc/pspp-dev.texinfo -o results/dev-guide --email bug-gnu-pspp@gnu.org pspp-dev "GNU PSPP Developers Guide") >&AS_MESSAGE_LOG_FD 2>&1])
+BP_OUTPUT([Developers Guide], [dev-guide])
+
+BP_FINISH