blob: 36bc860af355f1f010f6d9835b30ed3ef5b1bb78 [file] [log] [blame]
#!/usr/bin/perl -w
# CVS Build script for SpamAssassin Debian packages
# Options:
# -d Automatically build package
# -e <email> Set email to use in changelog
# -f <name> Set full name to use in changelog
use lib 'lib';
use Mail::SpamAssassin;
use Getopt::Std;
use POSIX;
use strict;
our ($email, $name, %opts);
getopts('de:f:', \%opts); # d = do it!
# check env
sub check_environment {
if (! -x 'debian/rules') {
die 'Run from top level spamassassin CVS directory';
}
if (!$ENV{EMAIL} && !$ENV{DEBEMAIL} && !$opts{e}) {
warn 'No e-mail address specified. Using nobody@nowhere';
}
if(system("/usr/bin/dpkg-checkbuilddeps") != 0) {
die 'Build dependencies not satisfied, or dpkg-checkbuilddeps not available.';
}
}
sub set_maintainer {
$email = undef;
$name = undef;
if ($opts{e}) {
$email = $opts{e};
}
if ($opts{f}) {
$name = $opts{f};
}
return if (defined $name and defined $email);
if ($ENV{DEBEMAIL}) {
if ($ENV{DEBEMAIL} =~ /^(.*)\s+<(.*)>$/) {
$name ||= $1;
$email ||= $2;
}
}
return if (defined $name and defined $email);
if ($ENV{EMAIL}) {
if ($ENV{EMAIL} =~ /^(.*)\s+<(.*)>$/) {
$name ||= $1;
$email ||= $2;
}
}
return if (defined $name and defined $email);
# Don't bother looking up user's name from /etc/passwd
$name ||= 'Anonymous CVS Builder';
$email ||= 'nobody@nowhere';
}
sub get_version {
return Mail::SpamAssassin::Version();
}
sub update_changelog {
my ($datel, $dates);
my $version = get_version();
chomp($datel = `822-date`);
chomp($dates = `date +"%Y%m%d"`);
open OUT, '>debian/changelog';
print OUT <<EOF;
spamassassin ($version+$dates-1) experimental; urgency=low
* CVS packaged version
* A changelog to previous versions is not included. Please see the
official Debian packages for changelog information.
-- $name <$email> $datel
EOF
close OUT;
}
# Merge templates
sub check_debconfpo {
if (! -x '/usr/bin/po2debconf') {
open IN, 'debian/spamassassin.templates';
open OUT, '>debian/spamassassin.templates.stripped';
while (<IN>) {
s#^__?##;
print OUT $_;
}
close IN;
close OUT;
rename 'debian/spamassassin.templates', 'debian/spamassassin.templates.orig';
rename 'debian/spamassassin.templates.stripped', 'debian/spamassassin.templates'
}
}
sub doit {
print "Trying to run dpkg-buildpackage\n";
exec('/usr/bin/dpkg-buildpackage', '-rfakeroot', '-b');
die "Exec failed! Error: $?";
}
check_environment();
set_maintainer();
update_changelog();
check_debconfpo();
doit() if $opts{d};