mirror of
https://github.com/qpdf/qpdf.git
synced 2024-11-19 10:55:10 +00:00
65c667eef9
Most Linux distributions include qpdf now, so there is no need to distribute our own spec file.
151 lines
2.7 KiB
Perl
Executable File
151 lines
2.7 KiB
Perl
Executable File
#!/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();
|
|
|
|
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_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 -j8");
|
|
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.
|
|
|
|
";
|
|
}
|