aboutsummaryrefslogtreecommitdiffstats
path: root/trio/README
diff options
context:
space:
mode:
authorMatthias Andree <matthias.andree@gmx.de>2005-11-03 22:34:39 +0000
committerMatthias Andree <matthias.andree@gmx.de>2005-11-03 22:34:39 +0000
commitf20ed78e9ad30abb10bc877269240953f187404d (patch)
tree952b68ff03d3cc7197d23a09f15c61677136b13d /trio/README
parented657cb2a081242f42a9ec6ee95c3e2d0da79c4d (diff)
downloadfetchmail-f20ed78e9ad30abb10bc877269240953f187404d.tar.gz
fetchmail-f20ed78e9ad30abb10bc877269240953f187404d.tar.bz2
fetchmail-f20ed78e9ad30abb10bc877269240953f187404d.zip
minor update.
svn path=/trunk/; revision=4392
Diffstat (limited to 'trio/README')
0 files changed, 0 insertions, 0 deletions
='n116' href='#n116'>116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
#!/usr/bin/env 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
#
use POSIX qw(strftime);
$timezone = strftime('%z', localtime) || "-0500";
$tmp = $ENV{TMPDIR} || $ENV{TMP} || $ENV{TEMP} || "/tmp";

$project = "fetchmail";
$svnrepos = "svn://svn.berlios.de/$project";
$website = "http://developer.berlios.de/projects/$project";
$mailfrom = "<$project-devel-owner\@lists.berlios.de> (Fetchmail Development Team)";

# parse options
$diffs = 0;
$verbose = 0;
$null = ">/dev/null";
$errnull = "2>/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";
}

# extract version from source
$version=`grep 'AC_INIT' configure.in`;
$version =~ /AC_INIT\([^,]*,\[?([0-9.]+)\]?\)/;
$version = $1;
die "cannot determine version" unless defined $1;
$tag = "RELEASE_$version";
$tag =~ tr/./-/;

# extract existing tags
open(ID, "svn ls $svnrepos/tags|");
while (<ID>) {
    if (m{^(RELEASE_.*)/}) {
	unshift(@versions, $1);
    }
}
close(ID);

if ($versions[0] eq $tag) {
    $tag = $versions[0];
    $oldtag = $versions[1];
} else {
    $tag = '<workfile>';
    $oldtag = $versions[0];
}

$ENV{PATH} .= ":./dist-tools:./dist-tools/shipper:.";

print "Building $version release, tag $tag, previous tag $oldtag\n";

if (-d autom4te.cache) {
    system("rm -rf autom4te.cache")
	and die "Failure in removing autom4te.cache";
}

if (system("autoreconf -isv")) {
	die("Failure in regenerating autoconf files\n");
}

if (system("./configure && make clean && make -C po update-po && make clean")) {
	die("Failure in translation-file rebuild\n");
}

print "### Test-building the software...\n";
if (system("./configure && make clean && make all check")) {
	die("Compilation failure\n");
}

print "### Building the distribution...\n";
if (system("make dist $null")) {
	die("Distribution-build failure\n");
}

print "### Building the RPMs...\n";
if (system("buildrpms $project-${version}.tar.gz $null")) {
	die("RPM-build failure\n");
}

open(REPORT, ">$tmp/$project.PREAMBLE.$$");

print REPORT <<EOF;
From: $mailfrom
Subject: The $version release of $project is available

The $version release of $project is now available at the usual locations,
including <URL:$website>.

The source archive is available at:
<URL:$website/$project-${version}.tar.gz>

Here are the release notes:

EOF

# Extract the current notes
open(NEWS, "NEWS");
while (<NEWS>) {
    if (/^$project/) {
	print REPORT $_;
	last;
    }
}
while (<NEWS>) {
    if (/^$project/) {
	last;
    }
    print REPORT $_;
}

$oldver = $oldtag;
$oldver =~ tr/-/./;
$oldver =~ s/^RELEASE_//;

if ($diffs) {
	print REPORT "Diffs from the previous ($oldver) 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 ($tag eq '<workfile>') {
    system("svn diff -r$oldtag        $errnull >$tmp/$project.DIFFS.$$");
} else {
    system("svn diff -r$oldtag -r$tag $errnull >$tmp/$project.DIFFS.$$");
}
print "Diff size:";
system("wc <$tmp/$project.DIFFS.$$");

if ($diffs) {
	system "metasend -b"
	    ." -D '$project-$tag announcement' -m 'text/plain' -e 7bit -f $tmp/$project.PREAMBLE.$$"
	    ." -n -D 'diff between $oldver and $version' -m 'text/plain' -e 7bit -f $tmp/$project.DIFFS.$$"
	    ." -o ANNOUNCE.EMAIL";
} else {
	rename("$tmp/$project.PREAMBLE.$$", "ANNOUNCE.EMAIL");
}
#system("chown esr ANNOUNCE.EMAIL");
#chmod(0700, "ANNOUNCE.EMAIL");

#unlink("$tmp/$project.PREAMBLE.$$");
unlink("$tmp/$project.DIFFS.$$");

print "Building index page...\n";
system("rm -f index.html; indexgen.sh");

if (-r "testsites") {
	print "Building test server list...\n";
	system("rm -f testservers.html; testservers-gen.sh >testservers.html");
}

print "Making activity graph...";
system "growthplot";

print "Done\n";

# makerelease ends here