chiark / gitweb /
Test suite: Break out bm-prep-ownpackage-branches
[dgit.git] / dgit
diff --git a/dgit b/dgit
index 9763bbfd6c99fce35d768559fec144416f1dc710..3f637f133bf9b2a7bd891f6e0c6e271f167e9c91 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -3356,11 +3356,13 @@ sub massage_dbp_args ($;$) {
 #print STDERR "MASS1 ",Dumper($cmd, $xargs, $dmode);
     my $r = 0;
     if ($need_split_build_invocation) {
+       printdebug "massage split $dmode.\n";
        $r = $dmode =~ m/[S]/     ? +2 :
             $dmode =~ y/gGF/ABb/ ? +1 :
             $dmode =~ m/[ABb]/   ?  0 :
             die "$dmode ?";
     }
+    printdebug "massage done $r $dmode.\n";
     push @$cmd, $dmode;
 #print STDERR "MASS2 ",Dumper($cmd, $xargs, $r);
     return $r;
@@ -3442,11 +3444,29 @@ sub build_source {
        runcmd_ordryrun_local @dpkgbuildpackage, qw(-us -uc -S -d),
            changesopts();
     } else {
-       my $pwd = must_getcwd();
-       my $leafdir = basename $pwd;
-       changedir "..";
-       runcmd_ordryrun_local @dpkgsource, qw(-b --), $leafdir;
-       changedir $pwd;
+       my @cmd = (@dpkgsource, qw(-b --));
+       if ($split_brain) {
+           changedir $ud;
+           runcmd_ordryrun_local @cmd, "work";
+           my @udfiles = <${package}_*>;
+           changedir "../../..";
+           foreach my $f (@udfiles) {
+               printdebug "source copy, found $f\n";
+               next unless
+                   $f eq $dscfn or
+                   ($f =~ m/\.debian\.tar(?:\.\w+)$/ &&
+                    $f eq srcfn($version, $&));
+               printdebug "source copy, found $f - renaming\n";
+               rename "$ud/$f", "../$f" or $!==ENOENT
+                   or fail "put in place new source file ($f): $!";
+           }
+       } else {
+           my $pwd = must_getcwd();
+           my $leafdir = basename $pwd;
+           changedir "..";
+           runcmd_ordryrun_local @cmd, $leafdir;
+           changedir $pwd;
+       }
        runcmd_ordryrun_local qw(sh -ec),
            'exec >$1; shift; exec "$@"','x',
            "../$sourcechanges",