chiark / gitweb /
dgit: quilt_need_fake_dsc: Make idempotent
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 26 May 2019 11:48:59 +0000 (12:48 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 28 Jun 2019 11:45:38 +0000 (12:45 +0100)
No overall functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
dgit

diff --git a/dgit b/dgit
index b0c60c4a86e377b3b047b8a95e8ac47289fb6f15..ef5fc1927bdaab94172b7146f83ccd7e67807d6d 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -4495,7 +4495,7 @@ END
        if (quiltmode_splitbrain()) {
            $do_split_brain = 1;
            changedir $playground;
-           quilt_make_fake_dsc($upstreamversion);
+           quilt_need_fake_dsc($upstreamversion);
            my $cachekey;
            ($dgithead, $cachekey) =
                quilt_check_splitbrain_cache($actualhead, $upstreamversion);
@@ -5926,9 +5926,14 @@ sub quilt_fixup_singlepatch ($$$) {
     commit_quilty_patch();
 }
 
-sub quilt_make_fake_dsc ($) {
+sub quilt_need_fake_dsc ($) {
+    # cwd should be playground
     my ($upstreamversion) = @_;
 
+    return if stat_exists "fake.dsc";
+    # ^ OK to test this as a sentinel because if we created it
+    # we must either have done the rest too, or crashed.
+
     my $fakeversion="$upstreamversion-~~DGITFAKE";
 
     my $fakedsc=new IO::File 'fake.dsc', '>' or confess "$!";
@@ -5972,7 +5977,7 @@ END
 sub quilt_fakedsc2unapplied ($$) {
     my ($headref, $upstreamversion) = @_;
     # must be run in the playground
-    # quilt_make_fake_dsc must have been called
+    # quilt_need_fake_dsc must have been called
 
     runcmd qw(sh -ec),
         'exec dpkg-source --no-check --skip-patches -x fake.dsc >/dev/null';
@@ -6125,7 +6130,7 @@ sub quilt_fixup_multipatch ($$$) {
 
     my $splitbrain_cachekey;
 
-    quilt_make_fake_dsc($upstreamversion);
+    quilt_need_fake_dsc($upstreamversion);
 
     if (quiltmode_splitbrain()) {
        my $cachehit;
@@ -6894,7 +6899,7 @@ sub cmd_print_unapplied_treeish {
     prep_ud();
     changedir $playground;
     my $uv = upstreamversion $version;
-    quilt_make_fake_dsc($uv);
+    quilt_need_fake_dsc($uv);
     my $u = quilt_fakedsc2unapplied($headref, $uv);
     print $u, "\n" or confess "$!";
 }