aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/fetchmail.logrotate
blob: f8b0f3fbc4bac61975ebd2541f1fce7b613a1fdf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# fetchmail.logrotate
#
# This is an example logrotate configuration file, editing required
# before use. It is useful if you have fetchmail logging to a separate
# file, /var/log/fetchmail as shown below.
#
# This file has been written for Debian Linux systems.
#
# Other systems will probably require adjustments, such as: how
# often to rotate, how many files to retain, how to name them, if
# compression is desired, which user and group the file should be
# created with, and where the .pid file is. Check the logrotate
# documentation for details.
#                                        --Matthias Andree, 2007-01-14
# ----------------------------------------------------------------------
# The following license applies to the remainder of this file:
#
# Copyright (c) 2007 Daniel Leidert <daniel.leidert@wgdd.de>
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

/var/log/fetchmail {
    weekly
    rotate 5
    compress
    missingok
    notifempty
    create 640 fetchmail root
    sharedscripts
    postrotate
        if [ -f /var/run/fetchmail/fetchmail.pid ]; then \
            if [ -x /usr/sbin/invoke-rc.d ]; then \
                invoke-rc.d fetchmail restart > /dev/null; \
            else \
                /etc/init.d/fetchmail restart > /dev/null; \
            fi; \
        fi;
    endscript
}
.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
#!/usr/bin/env perl
#
# Make a fetchmail release.
# 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 = "https://decoy.wox.org/svn/$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.ac`;
$version =~ /AC_INIT\([^,]*,\[?([0-9.rc-]+)\]?\)/;
$version = $1;
die "cannot determine version" unless defined $1;
$tag = "RELEASE_$version";
$tag =~ tr/./-/;

# extract existing tags
open(ID, "-|", "svn", "ls", $svnrepos . "/tags") || die "cannot run svn ls: $!\naborting";
while (<ID>) {
    if (m{^(RELEASE_.*)/}) {
	unshift(@versions, $1);
    }
}
close ID || die "svn ls  failed, aborting";

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 distcheck")) {
	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