#!/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 ; # no need to close(); }