diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2013-10-25 10:23:30 +0100 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2013-10-25 10:23:30 +0100 |
commit | 6e24ac7bb85e30df00b3d14853b049e3f06b6dec (patch) | |
tree | ed6278c39c22d95da63519f06251c8be2614c12b | |
parent | 7ca3064a13b1fd2e541acc77ff11a3e6f4f8a970 (diff) |
dgit build, by default, uses the archive to find out what the correct -v<version> option is to pass to dpkg-genchanges.
-rw-r--r-- | debian/changelog | 2 | ||||
-rwxr-xr-x | dgit | 31 | ||||
-rw-r--r-- | dgit.1 | 17 |
3 files changed, 46 insertions, 4 deletions
diff --git a/debian/changelog b/debian/changelog index 3ecbbdb..7acc8ed 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,7 @@ dgit (0.17~experimental4) experimental; urgency=low + * dgit build, by default, uses the archive to find out what the correct + -v<version> option is to pass to dpkg-genchanges. * When using sbuild, pass the arguments to mergechanges in the right order so that we use the correct Description (the _source one, not the one from sbuild which didn't get e.g. -v<version>). @@ -45,6 +45,7 @@ our $ignoredirty = 0; our $noquilt = 0; our $existing_package = 'dpkg'; our $cleanmode = 'dpkg-source'; +our $changes_since_version; our $we_are_responder; our $initiator_tempdir; @@ -113,8 +114,6 @@ sub dscfn ($) { return "${package}_".(stripepoch $vsn).".dsc"; } -sub changesopts () { return @changesopts[1..$#changesopts]; } - our $us = 'dgit'; our $debugprefix = ''; @@ -1690,6 +1689,26 @@ sub build_prep () { build_maybe_quilt_fixup(); } +sub changesopts () { + my @opts =@changesopts[1..$#changesopts]; + if (!defined $changes_since_version) { + my @vsns = archive_query('archive_query'); + if (@vsns) { + @vsns = map { $_->[0] } @vsns; + @vsns = sort { version_compare_string($a, $b) } @vsns; + $changes_since_version = $vsns[0]; + progress "changelog will contain changes since $vsns[0]"; + } else { + $changes_since_version = '_'; + progress "package seems new, not specifying -v<version>"; + } + } + if ($changes_since_version ne '_') { + unshift @opts, "-v$changes_since_version"; + } + return @opts; +} + sub cmd_build { badusage "dgit build implies --clean=dpkg-source" if $cleanmode ne 'dpkg-source'; @@ -1818,6 +1837,9 @@ sub parseopts () { } elsif (m/^--new$/) { push @ropts, $_; $new_package=1; + } elsif (m/^--since-version=([^_]+|_)$/) { + push @ropts, $_; + $changes_since_version = $1; } elsif (m/^--(\w+)=(.*)/s && ($om = $opts_opt_map{$1}) && length $om->[0]) { @@ -1871,7 +1893,10 @@ sub parseopts () { } elsif (s/^-N/-/) { push @ropts, $&; $new_package=1; - } elsif (m/^-[vm]/) { + } elsif (s/^-v([^_]+|_)$//s) { + push @ropts, $&; + $changes_since_version = $1; + } elsif (m/^-m/) { push @ropts, $&; push @changesopts, $_; $_ = ''; @@ -248,7 +248,22 @@ more output (currently, up to -DD is meaningfully different). Specifies a git configuration option. dgit itself is also controlled by git configuration options. .TP -.RI \fB-v\fR version |\fB-m\fR maintaineraddress +.RI \fB-v\fR version "|\fB_\fR | " \fB--since-version=\fR version |\fB_\fR +Specifies the +.BI -v version +option to pass to dpkg-genchanges, during builds. Changes (from +debian/changelog) since this version will be included in the built +changes file, and hence in the upload. If this option is not +specified, dgit will query the archive and use the latest version +uploaded to the intended suite. + +Specifying +.B _ +inhibits this, so that no -v option will be passed to dpkg-genchanges +(and as a result, only the last stanza from debian/changelog will +be used for the build and upload). +.TP +.RI \fB-m\fR maintaineraddress Passed to dpkg-genchanges (eventually). .TP .RI \fB--ch:\fR option |