+if ($build_binary) {
+ start_step ("Determining $tarball target directory");
+ my $sample_filename = `zcat $tarball | tar tf - | head -1`;
+ my ($tarball_dir) = $sample_filename =~ m%^(?:[./])*([^/]+)/%;
+ set_var ("dist_dir", $tarball_dir);
+
+ start_step ("Extracting source tarball");
+ run ("zcat $tarball | (cd $builddir && tar xf -)");
+
+ start_step ("Extracting tar version");
+ my ($version) = `cd $builddir/$tarball_dir && ./configure --version | head -1`
+ =~ /configure (\S+)$/;
+ set_var ("dist_version", $version);
+ my ($binary_version) = "$version-$build_host-build$build_number";
+ set_var ("binary_version", $binary_version);
+
+ start_step ("Configuring");
+ run ("chmod -R a-w $builddir/$tarball_dir");
+ run ("chmod u+w $builddir/$tarball_dir");
+ run ("mkdir $builddir/$tarball_dir/_build");
+ run ("chmod a-w $builddir/$tarball_dir");
+ my $ok = try_run ("cd $builddir/$tarball_dir/_build && ../configure --enable-relocatable --prefix=''", "bin-configure");
+ for my $basename ("config.h", "config.log") {
+ save_result_if_exists ("build configuration",
+ "$builddir/$tarball_dir/_build/$basename");
+ }
+ fail () if !$ok;
+
+ start_step ("Build");
+ run ("cd $builddir/$tarball_dir/_build && make", "build");
+
+ start_step ("Install");
+ run ("cd $builddir/$tarball_dir/_build && make install DESTDIR=\$PWD/pspp-$binary_version", "install");
+
+ start_step ("Make binary distribution");
+ run ("cd $builddir/$tarball_dir/_build && tar cfz pspp-$binary_version.tar.gz pspp-$binary_version");
+ save_result ("binary distribution", "$builddir/$tarball_dir/_build/pspp-$binary_version.tar.gz", 1);
+
+ start_step ("Check");
+ $ok = try_run ("cd $builddir/$tarball_dir/_build && make check", "check");
+ for my $basename ("tests/testsuite.log", "tests/testsuite.dir") {
+ save_result_if_exists ("test logs", "$builddir/$tarball_dir/_build/$basename");
+ }
+ fail () if !$ok;
+
+ start_step ("Uninstall");
+ run ("cd $builddir/$tarball_dir/_build && make uninstall DESTDIR=\$PWD/pspp-$binary_version", "uninstall");
+
+ start_step ("Check uninstall");
+ run ("cd $builddir/$tarball_dir/_build && make distuninstallcheck distuninstallcheck_dir=\$PWD/pspp-$binary_version", "distuninstallcheck");
+
+ # distcleancheck
+}
+
+start_step ("Success");
+