X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=maint%2Frelease.pm;h=9930c1489d290cd3e25b565b0e8b81c98dbcad5b;hb=386d10a6d820acc621054edafdd10f2a8f7c893d;hp=1e826c052e0ca8c3440908e4a5494e99bab78eb5;hpb=164a8129e1d82a46a5d0a4edeb328b27c513f3fb;p=eval.git diff --git a/maint/release.pm b/maint/release.pm index 1e826c0..9930c14 100644 --- a/maint/release.pm +++ b/maint/release.pm @@ -1,6 +1,6 @@ #!/usr/bin/perl # A simple system for making software releases -# (c) 2003 Martin Mares +# (c) 2003--2011 Martin Mares package UCW::Release; use strict; @@ -15,7 +15,7 @@ sub new($$) { "PACKAGE" => $basename, "rules" => [ # p=preprocess, s=subst, -=discard - '(^|/)(CVS|\.arch-ids|{arch}|tmp)/' => '-', + '(^|/)(CVS|\.arch-ids|{arch}|\.git|tmp)/' => '-', '\.(lsm|spec)$' => 'ps', '(^|/)README$' => 's' ], @@ -30,11 +30,14 @@ sub new($$) { "archivedir" => "/home/mj/tmp/archives/$basename", "uploads" => [ ], + "testmake" => "make", + "testclean" => "make distclean", # Options "do_test" => 1, "do_patch" => 1, "diff_against" => "", - "do_upload" => 1 + "do_upload" => 1, + "do_sign" => 1, }; bless $s; return $s; @@ -147,14 +150,14 @@ sub CopyFile($$$$) { $empty && next; $empty = 1; } else { $empty = 0; } - } + } print O; } close O; close I; ! -x $f or chmod(0755, "$dir/$f") or die "chmod($dir/$f): $!"; } else { - `cp -a $f $dir/$f`; die if $?; + `cp -a "$f" "$dir/$f"`; die if $?; } } @@ -198,6 +201,14 @@ sub GenPackage($) { `cd $dd && tar cz${tarvv}f $pkg.tar.gz $pkg >&2`; die if $?; push @{$s->{"distfiles"}}, "$dd/$pkg.tar.gz"; + if ($s->{'do_sign'}) { + print "Signing package\n"; + system "gpg", "--armor", "--detach-sig", "$dd/$pkg.tar.gz"; + die if $?; + rename "$dd/$pkg.tar.gz.asc", "$dd/$pkg.tar.gz.sign" or die "No signature produced!?\n"; + push @{$s->{"distfiles"}}, "$dd/$pkg.tar.gz.sign"; + } + my $adir = $s->{"archivedir"}; my $afile = "$adir/$pkg.tar.gz"; print "Archiving to $afile\n"; @@ -223,8 +234,9 @@ sub ParseOptions($) { "test!" => \$s->{"do_test"}, "patch!" => \$s->{"do_patch"}, "diff-against=s" => \$s->{"diff_against"}, - "upload!" => \$s->{"do_upload"} - ) || die "Syntax: release [--verbose] [--test] [--nopatch] [--diff-against=] [--noupload]"; + "upload!" => \$s->{"do_upload"}, + "sign!" => \$s->{"do_sign"}, + ) || die "Syntax: release [--verbose] [--test] [--nopatch] [--diff-against=] [--noupload] [--nosign]"; } sub Test($) { @@ -232,13 +244,15 @@ sub Test($) { my $dd = $s->{"DISTDIR"}; my $pkg = $s->{"PKG"}; my $log = "$dd/$pkg.log"; + my $make = $s->{'testmake'}; + my $clean = $s->{'testclean'}; print "Doing a test compilation\n"; - `( cd $dd/$pkg && make ) >$log 2>&1`; + `( cd $dd/$pkg && $make ) >$log 2>&1`; die "There were errors. Please inspect $log" if $?; `grep -q [Ww]arning $log`; $? or print "There were warnings! Please inspect $log.\n"; print "Cleaning up\n"; - `cd $dd/$pkg && make distclean`; die if $?; + `cd $dd/$pkg && $clean`; die if $?; } sub MakePatch($) {