chiark / gitweb /
get_source_format returns the debian/source/options, too (nfc since no users yet)
[dgit.git] / dgit
diff --git a/dgit b/dgit
index 621288b7184186f6c95607cb4727af83e9b742bd..d6f37ffd3116122222dfee1d61cc7272fd936747 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -1246,7 +1246,7 @@ sub mktree_in_ud_from_only_subdir () {
 
     remove_stray_gits();
     mktree_in_ud_here();
-    my $format=get_source_format();
+    my ($format, $fopts) = get_source_format();
     if (madformat($format)) {
        rmtree '.pc';
     }
@@ -1793,6 +1793,26 @@ sub commit_quilty_patch () {
 }
 
 sub get_source_format () {
+    my %options;
+    if (open F, "debian/source/options") {
+       while (<F>) {
+           next if m/^\s*\#/;
+           next unless m/\S/;
+           s/\s+$//; # ignore missing final newline
+           if (m/\s*\#\s*/) {
+               my ($k, $v) = ($`, $'); #');
+               $v =~ s/^"(.*)"$/$1/;
+               $options{$k} = $v;
+           } else {
+               $options{$_} = 1;
+           }
+       }
+       F->error and die $!;
+       close F;
+    } else {
+       die $! unless $!==&ENOENT;
+    }
+
     if (!open F, "debian/source/format") {
        die $! unless $!==&ENOENT;
        return '';
@@ -1800,7 +1820,7 @@ sub get_source_format () {
     $_ = <F>;
     F->error and die $!;
     chomp;
-    return $_;
+    return ($_, \%options);
 }
 
 sub madformat ($) {
@@ -2718,7 +2738,7 @@ sub quiltify ($$) {
 }
 
 sub build_maybe_quilt_fixup () {
-    my $format=get_source_format;
+    my ($format,$fopts) = get_source_format;
     return unless madformat $format;
     # sigh
 
@@ -2747,7 +2767,7 @@ sub build_maybe_quilt_fixup () {
     # can work.  We do this as follows:
     #     1. Collect all relevant .orig from parent directory
     #     2. Generate a debian.tar.gz out of
-    #         debian/{patches,rules,source/format}
+    #         debian/{patches,rules,source/format,source/options}
     #     3. Generate a fake .dsc containing just these fields:
     #          Format Source Version Files
     #     4. Extract the fake .dsc
@@ -2808,8 +2828,9 @@ END
     }
 
     my @files=qw(debian/source/format debian/rules);
-    if (stat_exists '../../../debian/patches') {
-        push @files, 'debian/patches';
+    foreach my $maybe (qw(debian/patches debian/source/options)) {
+        next unless stat_exists "../../../$maybe";
+        push @files, $maybe;
     }
 
     my $debtar= srcfn $fakeversion,'.debian.tar.gz';