diff options
Diffstat (limited to 'make_dist')
-rwxr-xr-x | make_dist | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/make_dist b/make_dist new file mode 100755 index 0000000..fb1436e --- /dev/null +++ b/make_dist @@ -0,0 +1,165 @@ +#!/usr/bin/env perl +# +# This program creates a source distribution of qpdf. For details, +# see README.maintainer. +# + +require 5.008; +use warnings; +use strict; +use File::Basename; +use Cwd; +use IO::File; + +my $whoami = basename($0); + +usage() unless @ARGV >= 1; +my $srcdir = shift(@ARGV); +my $run_tests = 1; +if (@ARGV) +{ + if ($ARGV[0] eq '--no-tests') + { + $run_tests = 0; + } + else + { + usage(); + } +} +$srcdir =~ s,/$,,; +usage() unless $srcdir =~ m/^qpdf-(\d+\.\d+(?:\.(a|b|rc)?\d+)?)$/; +my $version = $1; +usage() unless -d $srcdir; + +my $pwd = getcwd(); +cd($srcdir); + +# Check versions +my $fh = safe_open("configure.ac"); +my $config_version = 'unknown'; +while (<$fh>) +{ + if (m/^AC_INIT\(\[qpdf\],\[([^\)]+)\]\)/) + { + $config_version = $1; + last; + } +} +$fh->close(); + +$fh = safe_open("libqpdf/QPDF.cc"); +my $code_version = 'unknown'; +while (<$fh>) +{ + if (m/QPDF::qpdf_version = \"([^\"]+)\"/) + { + $code_version = $1; + last; + } +} +$fh->close(); + +$fh = safe_open("manual/qpdf-manual.xml"); +my $doc_version = 'unknown'; +while (<$fh>) +{ + if (m/swversion "([^\"]+)\"/) + { + $doc_version = $1; + last; + } +} +$fh->close(); + +$fh = safe_open("qpdf.spec"); +my $spec_version = 'unknown'; +while (<$fh>) +{ + if (m/Version: (.*)$/) + { + $spec_version = $1; + last; + } +} + +my $version_error = 0; +if ($version ne $config_version) +{ + print "$whoami: configure.ac version = $config_version\n"; + $version_error = 1; +} +if ($version ne $code_version) +{ + print "$whoami: QPDF.cc version = $code_version\n"; + $version_error = 1; +} +if ($version ne $doc_version) +{ + print "$whoami: qpdf-manual.xml version = $doc_version\n"; + $version_error = 1; +} +if ($version ne $spec_version) +{ + print "$whoami: qpdf.spec version = $spec_version\n"; + $version_error = 1; +} +if ($version_error) +{ + die "$whoami: version numbers are not consistent\n"; +} + +run("./autogen.sh"); +run("./configure --enable-doc-maintenance --enable-werror"); +run("make build_manual"); +run("make distclean"); +cd($pwd); +run("tar czvf $srcdir.tar.gz-candidate $srcdir"); +if ($run_tests) +{ + cd($srcdir); + run("./configure"); + run("make check"); + cd($pwd); +} +rename "$srcdir.tar.gz-candidate", "$srcdir.tar.gz" or die; + +print " +Source distribution created as $srcdir.tar.gz +You can now remove $srcdir. +If this is a release, don't forget to tag the version control system and +make a backup of the release tar file. + +"; + +sub safe_open +{ + my $file = shift; + my $fh = new IO::File("<$file") or die "$whoami: can't open $file: $!"; + $fh; +} + +sub run +{ + my $cmd = shift; + system($cmd) == 0 or die "$whoami: $cmd failed\n"; +} + +sub cd +{ + my $dir = shift; + chdir($dir) or die; +} + +sub usage +{ + die " +Usage: $whoami qpdf-version [ --no-tests ] + +qpdf-version must be a directory containing a pristine export of that +version of qpdf from the version control system. Use of --no-tests +can be used for internally testing releases, but do not use it for a +real release. + +"; +} |