chiark / gitweb /
Break out changespat (no functional change)
[dgit.git] / dgit
diff --git a/dgit b/dgit
index de7ee0ccdf74c8df6604585401db673819103422..51df7c30defe743bd435f8318a718bf4b7e36229 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -147,6 +147,11 @@ sub dscfn ($) {
     return srcfn($vsn,".dsc");
 }
 
+sub changespat ($;$) {
+    my ($vsn, $arch) = @_;
+    return "${package}_".(stripepoch $vsn)."_".($arch//'*').".changes";
+}
+
 our $us = 'dgit';
 initdebug('');
 
@@ -1997,12 +2002,11 @@ END
     }
     my $head = git_rev_parse('HEAD');
     if (!$changesfile) {
-       my $multi = "$buildproductsdir/".
-           "${package}_".(stripepoch $cversion)."_multi.changes";
+       my $multi = "$buildproductsdir/".changespat $cversion,'multi';
        if (stat_exists "$multi") {
            $changesfile = $multi;
        } else {
-           my $pat = "${package}_".(stripepoch $cversion)."_*.changes";
+           my $pat = changespat $cversion;
            my @cs = glob "$buildproductsdir/$pat";
            fail "failed to find unique changes file".
                " (looked for $pat in $buildproductsdir, or $multi);".
@@ -3058,7 +3062,7 @@ sub massage_dbp_args ($;$) {
     push @newcmd, '-nc';
     # and some combinations of -S, -b, et al, are errors, rather than
     # later simply overriding earlier
-    push @newcmd, '-F' unless grep { m/^-[bBASF]$/ } (@$cmd, @$xargs);
+    push @newcmd, '-F' unless grep { m/^-[bBASFgG]$/ } (@$cmd, @$xargs);
     push @newcmd, @$cmd;
     @$cmd = @newcmd;
 }
@@ -3106,7 +3110,7 @@ sub build_source {
        $suppress_clean = 1;
     }
     build_prep();
-    $sourcechanges = "${package}_".(stripepoch $version)."_source.changes";
+    $sourcechanges = changespat $version,'source';
     $dscfn = dscfn($version);
     if ($cleanmode eq 'dpkg-source') {
        runcmd_ordryrun_local @dpkgbuildpackage, qw(-us -uc -S),
@@ -3136,7 +3140,7 @@ sub cmd_build_source {
 sub cmd_sbuild {
     build_source();
     changedir "..";
-    my $pat = "${package}_".(stripepoch $version)."_*.changes";
+    my $pat = changespat $version;
     if (act_local()) {
        stat_exists $dscfn or fail "$dscfn (in parent directory): $!";
        stat_exists $sourcechanges
@@ -3153,11 +3157,20 @@ sub cmd_sbuild {
            or $a cmp $b
     } @changesfiles;
     fail "wrong number of different changes files (@changesfiles)"
-       unless @changesfiles;
+       unless @changesfiles==2;
+    my $binchanges = parsecontrol($changesfiles[1], "binary changes file");
+    foreach my $l (split /\n/, getfield $binchanges, 'Files') {
+       fail "$l found in binaries changes file $binchanges"
+           if $l =~ m/\.dsc$/;
+    }
     runcmd_ordryrun_local @mergechanges, @changesfiles;
-    my $multichanges = "${package}_".(stripepoch $version)."_multi.changes";
+    my $multichanges = changespat $version,'multi';
     if (act_local()) {
        stat_exists $multichanges or fail "$multichanges: $!";
+       foreach my $cf (glob $pat) {
+           next if $cf eq $multichanges;
+           rename "$cf", "$cf.inmulti" or fail "$cf\{,.inmulti}: $!";
+       }
     }
     printdone "build successful, results in $multichanges\n" or die $!;
 }