All pastes #229372 Raw Edit

Someone

public text v1 · immutable
#229372 ·published 2006-10-30 17:20 UTC
rendered paste body
#!/usr/bin/perl -w
use strict;

sub make_debchange ($$$);
sub slurp ($);

$ARGV[0] && chdir $ARGV[0];

my $debmaint = $ENV{'DEBFULLNAME'} || qw(AUTOBUILDER);
my $debmail  = $ENV{'DEBEMAIL'}    || qw(don@t.know);
my $debdist  = qw(experimental);

my $distclean   = $ENV{'DO_DISTCLEAN'};
my $autoinstall = $ENV{'DO_AUTOINSTALL'};
my $fastpackage = $ENV{'DO_FASTPACKAGE'};

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
my $datetag = sprintf("%d%02d%02d", $year + 1900, $mon, $mday);

opendir(DIR, '.') || die "can't open .: $!";
my @dirs = grep { /^(?!\.)/ && -d "./$_" } readdir(DIR);
closedir DIR;

foreach (@dirs) {
    chdir $_;
    
    my $version = get_version();    
    
    goto n unless $version;

    if ($distclean) {
	-f 'Makefile' && print `make distclean`;
    }
    
    `rm -rf *.dsc *.tar.gz* *.deb *.changes`;

    `mkdir -p ../../$datetag/$_`;
    print "$_ :\t $version \n";

    -f 'configure' || print `./autogen.sh`;

    print make_debchange($_, $version, $datetag);
    `rm -rf debian`;

    `tar -cvzf ../$_-$version+svn$datetag.orig.tar.gz .`;
    `cp -a ../distro-specific-build-files/$_/debian .`;
    
    my $dch = make_debchange($_, $version, $datetag);
    $dch   .= slurp('debian/changelog');
    
    open (DCH, '>debian/changelog');
    print DCH $dch;
    close DCH;

    if ($fastpackage) {
	print `./debian/rules binary`;
    } else {
	print `dpkg-buildpackage -rfakeroot`;
    }

    $autoinstall && print `sudo dpkg -i ../*.deb`;
    `mv ../*.deb ../*.tar.gz ../*.dsc ../*.changes ../../$datetag/$_/`;
    
  n:
    `rm -rf debian`;
    chdir '../';
}

sub get_version {
    local $_ = slurp("VERSION") || return undef;
    /VERSION\s*=\s*(.*)/;
    return $1;
}

sub make_debchange ($$$) {
    my ($pkg, $version, $datetag) = @_;
    
    my $debdate = `date -R`;

    return
	"$pkg ($version+svn$datetag-0) $debdist; urgency=low\n\n".
        "   * NEW SVN PULL\n\n".
	" -- $debmaint <$debmail>  $debdate\n";
}

sub slurp ($) {
    my $file = shift;

    local $/ = "";

    open (FH, $file) || return undef;
    return <FH>; # no need to close();
}