#!/usr/bin/perl
#
# Make a fetchmail release. Must be run as root, to make RPMs.
# Dumps a release notice and diffs as a MIME multipart message
# in RELEASE_NOTES
#
$timezone = "-0500";
$diffs = 0;
$verbose = 0;
$null = ">/dev/null";
while ($i = shift @ARGV)
{
if ($i =~ /^(--diffs|-d)$/i)
{
$diffs = 1;
next;
}
if ($i =~ /^(--verbose|-v)$/i)
{
$verbose = 1;
$null = "";
next;
}
die "Error: Unknown option: $i\n";
}
$version=`grep 'VERSION *=' Makefile.in`;
$version =~ /VERSION *= *(.*)/;
$version = $1;
$rcsid = $version;
$rcsid =~ tr/./-/;
open(ID, "rlog -h NEWS|");
while (<ID>) {
last if /^symbolic names/;
}
while (<ID>) {
if (/^\t(.*):/) {
push(@versions, $1);
}
}
close(ID);
if ($versions[0] eq $rcsid) {
$rcsid = $versions[0];
$oldid = $versions[1];
} else {
$rcsid = '<workfile>';
$oldid = $versions[0];
}
#$ENV{'PATH'} = "~esr/bin:/bin:/usr/bin";
print "Building $version release, RCS ID $rcsid, previous RCS ID $oldid\n";
print "### Test-building the software...\n";
if (system("su -c '(configure --disable-nls; make) $null' esr")) {
die("Compilation failure\n");
}
print "### Building the distribution...\n";
if (system("su -c 'make dist $null' esr")) {
die("Distribution-build failure\n");
}
print "### Building the RPMs...\n";
if (system("make rpm $null && chown esr *.rpm")) {
die("RPM-build failure\n");
}
open(REPORT, ">PREAMBLE.$$");
print REPORT <<EOF;
From: esr\@thyrsus.com (Eric S. Raymond)
To: fetchmail-friends\@ccil.org, fetchmail-announce\@ccil.org
Reply-To: esr\@thyrsus.com (Eric S. Raymond)
Subject: The $version release of fetchmail is available
FCC: ~/postings/outmail
The $version release of fetchmail is now available at the usual locations,
including <URL:http://$ENV{'WWWVIRTUAL'}/~esr/fetchmail>.
The source archive is available at:
<URL:http://$ENV{'WWWVIRTUAL'}/~esr/fetchmail/fetchmail-${version}.tar.gz>
Here are the release notes:
EOF
# Extract the current notes
open(NEWS, "NEWS");
while (<NEWS>) {
if (/^fetchmail/) {
print REPORT $_;
last;
}
}
while (<NEWS>) {
if (/^fetchmail/) {
last;
}
print REPORT $_;
}
$oldrcs = $oldid;
$oldrcs =~ tr/-/./;
if ($diffs) {
print REPORT "Diffs from the previous ($oldrcs) release follow as a MIME attachment."
} else {
print REPORT "By popular demand, diffs from the previous release have been omitted."
}
close(NEWS);
close(REPORT);
if ($rcsid eq '<workfile>') {
system("rcsdiff -u -r$oldid RCS/* 2>/dev/null >DIFFS.$$");
} else {
system("rcsdiff -u -r$oldid -r$rcsid RCS/* 2>/dev/null >DIFFS.$$");
}
print "Diff size:";
system("wc <DIFFS.$$");
if ($diffs) {
system "metasend -b -D 'fetchmail-$rcsid announcement' -m 'text/plain' -e 7bit -f PREAMBLE.$$ -n -D 'diff -u between -$oldrcs $rcsid' -m 'text/plain' -e 7bit -f DIFFS.$$ -o RELEASE.NOTES";
} else {
rename("PREAMBLE.$$", "RELEASE.NOTES");
}
system("chown esr RELEASE.NOTES");
chmod(0700, "RELEASE.NOTES");
#unlink("PREAMBLE.$$");
unlink("DIFFS.$$");
print "Building index page...\n";
system("rm -f index.html; indexgen.sh");
print "Building test server list...\n";
system("rm -f testservers.html; testservers-gen.sh >testservers.html");
print "Making activity graph...";
growthplot;
print "Done\n";
# makerelease ends here