mirror of
https://github.com/qpdf/qpdf.git
synced 2024-11-14 00:34:03 +00:00
166 lines
2.9 KiB
Plaintext
166 lines
2.9 KiB
Plaintext
|
#!/usr/bin/env perl
|
||
|
#
|
||
|
# This program creates a source distribution of qpdf. For details,
|
||
|
# see README.maintainer.
|
||
|
#
|
||
|
|
||
|
require 5.008;
|
||
|
BEGIN { $^W = 1; }
|
||
|
use strict;
|
||
|
use Cwd;
|
||
|
use IO::File;
|
||
|
|
||
|
my $whoami = ($0 =~ m,([^/\\]*)$,) ? $1 : $0;
|
||
|
#my $dirname = ($0 =~ m,(.*)[/\\][^/\\]+$,) ? $1 : ".";
|
||
|
|
||
|
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("qpdf/qpdf.cc");
|
||
|
my $code_version = 'unknown';
|
||
|
while (<$fh>)
|
||
|
{
|
||
|
if (m/whoami << \" 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("autoconf");
|
||
|
run("./configure --enable-doc-maintenance");
|
||
|
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.
|
||
|
|
||
|
";
|
||
|
}
|