]> mj.ucw.cz Git - eval.git/blobdiff - maint/release.pm
MO-P: Bugfix
[eval.git] / maint / release.pm
index dc937cee0bf6a74bf694397e273c1d3e7584295a..9930c1489d290cd3e25b565b0e8b81c98dbcad5b 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 # A simple system for making software releases
 #!/usr/bin/perl
 # A simple system for making software releases
-# (c) 2003--2006 Martin Mares <mj@ucw.cz>
+# (c) 2003--2011 Martin Mares <mj@ucw.cz>
 
 package UCW::Release;
 use strict;
 
 package UCW::Release;
 use strict;
@@ -30,11 +30,14 @@ sub new($$) {
                "archivedir" => "/home/mj/tmp/archives/$basename",
                "uploads" => [
                        ],
                "archivedir" => "/home/mj/tmp/archives/$basename",
                "uploads" => [
                        ],
+               "testmake" => "make",
+               "testclean" => "make distclean",
                # Options
                "do_test" => 1,
                "do_patch" => 1,
                "diff_against" => "",
                # Options
                "do_test" => 1,
                "do_patch" => 1,
                "diff_against" => "",
-               "do_upload" => 1
+               "do_upload" => 1,
+               "do_sign" => 1,
        };
        bless $s;
        return $s;
        };
        bless $s;
        return $s;
@@ -154,7 +157,7 @@ sub CopyFile($$$$) {
                close I;
                ! -x $f or chmod(0755, "$dir/$f") or die "chmod($dir/$f): $!";
        } else {
                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";
 
        `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";
        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"},
                "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=<version>] [--noupload]";
+               "upload!" => \$s->{"do_upload"},
+               "sign!" => \$s->{"do_sign"},
+       ) || die "Syntax: release [--verbose] [--test] [--nopatch] [--diff-against=<version>] [--noupload] [--nosign]";
 }
 
 sub Test($) {
 }
 
 sub Test($) {
@@ -232,13 +244,15 @@ sub Test($) {
        my $dd = $s->{"DISTDIR"};
        my $pkg = $s->{"PKG"};
        my $log = "$dd/$pkg.log";
        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";
        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";
        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($) {
 }
 
 sub MakePatch($) {