Improve build
[pspp] / build-pspp
index 6177b0ec7457da8ea1e4a3f6c1e31e24c738c919..5aeacde8afb819410a6825c52964416f729afeb6 100755 (executable)
@@ -23,7 +23,7 @@ chomp $builder;
 # Select build number.
 my $build_number = POSIX::strftime("%Y%m%d%H%M%S", localtime);
 
-my $topdir = getcwd();
+my $topdir = getcwd ();
 
 # Create build directory.
 my $builddir = "builds/$build_number";
@@ -100,14 +100,36 @@ if (@ARGV == 2) {
     run ("git archive --format=tar --prefix=pspp$build_number/ buildtmp/$$/pspp | (cd $builddir && tar xf -)");
 
     # Extract version number.
-    start_step ("Extract version number");
+    start_step ("Extract repository version number");
     my $trace = `cd $builddir/pspp$build_number && autoconf -t AC_INIT`;
     chomp $trace;
-    my ($file, $line, $macro, $package, $version, @rest) = split (':', $trace);
-    set_var ("pspp_version", $version);
-
-    # Append -g012345 to AC_INIT version number.
-    start_step ("Adding -g$abbrev_commit to version number");
+    my ($file, $line, $macro, $package, $repo_version, @rest)
+      = split (':', $trace);
+    set_var ("repo_version", $repo_version);
+
+    # Is this a "gnits" mode tree?
+    start_step ("Checking Automake mode");
+    open (MAKEFILE_AM, '<', "$builddir/pspp$build_number/Makefile.am");
+    my $am_mode = "gnu";
+    while (<MAKEFILE>) {
+       if (/gnits/) {
+           $am_mode = "gnits";
+           last;
+       }
+    }
+    set_var ("am_mode", $am_mode);
+
+    # Generate version number for build.
+    # We want to append -g012345, but if we're in Gnits mode and the
+    # version number already has a hyphen, we have to omit it.
+    start_step ("Generate build version number");
+    my $version = $repo_version;
+    $version .= '-' unless $version =~ /-/;
+    $version .= "g$abbrev_commit";
+    set_var ("version", $version);
+
+    # Append -g012345 to configure.ac version number.
+    start_step ("Updating version number in $file");
     my $fullname = "$builddir/pspp$build_number/$file";
     open (OLDFILE, '<', $fullname)
       or die "opening $fullname failed: $!\n";
@@ -117,7 +139,7 @@ if (@ARGV == 2) {
        if ($. != $line) {
            print NEWFILE $_;
        } else {
-           print NEWFILE "AC_INIT([$package], [$version-g$abbrev_commit]";
+           print NEWFILE "AC_INIT([$package], [$version]";
            print NEWFILE ", [$_]" foreach @rest;
            print NEWFILE ")\n";
        }
@@ -139,7 +161,7 @@ if (@ARGV == 2) {
        if (!$found_changes && /^Changes/) {
            $found_changes = 1;
            print NEWFILE <<EOF;
-Changes from $version to $version-g$abbrev_commit:
+Changes from $repo_version to $version:
 
  * Built automatically from commit $revision
    in branch $branch by builder $builder
@@ -188,13 +210,17 @@ EOF
     # Distribute.
     start_step ("Make source tarball");
     run ("cd $builddir/pspp$build_number/_build && make dist");
-    my $tarname = "pspp-$version-g$abbrev_commit.tar.gz";
+    my $tarname = "pspp-$version.tar.gz";
     $tarball = save_result ("$builddir/pspp$build_number/_build/$tarname", 1);
 
-    # Build the manual in various formats.
-    start_step ("Build manual");
-    run ("cd $builddir/pspp$build_number/doc && GENDOCS_TEMPLATE_DIR=$topdir/gnulib/doc $topdir/gnulib/build-aux/gendocs.sh --email bug-gnu-pspp\@gnu.org pspp \\\"GNU PSPP Manual\\\"");
-    save_result ("$builddir/pspp$build_number/doc/manual");
+    # Build user manual
+    start_step ("Build user manual");
+    run ("cd $builddir/pspp$build_number && cp _build/doc/*.texi doc/");
+    run ("cd $builddir/pspp$build_number && GENDOCS_TEMPLATE_DIR=$topdir $topdir/gendocs.sh -s doc/pspp.texinfo -o $topdir/$builddir/results/user-manual --email bug-gnu-pspp\@gnu.org pspp \"GNU PSPP User Manual\"");
+
+    # Build developer's guide
+    start_step ("Build developers guide");
+    run ("cd $builddir/pspp$build_number && GENDOCS_TEMPLATE_DIR=$topdir $topdir/gendocs.sh -s doc/pspp-dev.texinfo -o $topdir/$builddir/results/dev-guide --email bug-gnu-pspp\@gnu.org pspp \"GNU PSPP Developers Guide\"");
 } else {
     $tarball = $ARGV[0];
 }