diff options
author | Guillem Jover <guillem@debian.org> | 2014-03-28 03:13:52 +0100 |
---|---|---|
committer | Guillem Jover <guillem@debian.org> | 2014-04-21 16:29:58 +0200 |
commit | b916e61f0feb8eb37d9f00bbd4066c4f1b53babe (patch) | |
tree | dac007f5184e187f5f7e064622d9a5b4f5ad563b /scripts/Dpkg | |
parent | 5175cc7164d1d853375bc4eb59042aa68fcc63f7 (diff) | |
download | dpkg-b916e61f0feb8eb37d9f00bbd4066c4f1b53babe.tar.gz |
dpkg-source: Add a new extraction --ignore-bad-version option
This allows to extract ancient source packages with broken versions,
that used to be accepted at some point in time by dpkg-source.
Closes: #740883
Diffstat (limited to 'scripts/Dpkg')
-rw-r--r-- | scripts/Dpkg/Source/Package.pm | 8 | ||||
-rw-r--r-- | scripts/Dpkg/Source/Package/V1.pm | 4 | ||||
-rw-r--r-- | scripts/Dpkg/Source/Package/V2.pm | 5 |
3 files changed, 16 insertions, 1 deletions
diff --git a/scripts/Dpkg/Source/Package.pm b/scripts/Dpkg/Source/Package.pm index 60efef0a0..68d634ad1 100644 --- a/scripts/Dpkg/Source/Package.pm +++ b/scripts/Dpkg/Source/Package.pm @@ -463,7 +463,13 @@ sub extract { my $newdirectory = $_[0]; my ($ok, $error) = version_check($self->{fields}{'Version'}); - error($error) unless $ok; + if (not $ok) { + if ($self->{options}{ignore_bad_version}) { + warning($error); + } else { + error($error); + } + } # Copy orig tarballs if ($self->{options}{copy_orig_tarballs}) { diff --git a/scripts/Dpkg/Source/Package/V1.pm b/scripts/Dpkg/Source/Package/V1.pm index 268a8aa72..70970fc11 100644 --- a/scripts/Dpkg/Source/Package/V1.pm +++ b/scripts/Dpkg/Source/Package/V1.pm @@ -53,6 +53,7 @@ sub init_options { 'debian/source/local-patch-header'; $self->{options}{sourcestyle} ||= 'X'; $self->{options}{skip_debianization} ||= 0; + $self->{options}{ignore_bad_version} ||= 0; $self->{options}{abort_on_upstream_changes} ||= 0; # V1.0 only supports gzip compression. @@ -73,6 +74,9 @@ sub parse_cmdline_option { } elsif ($opt =~ m/^--skip-debianization$/) { $o->{skip_debianization} = 1; return 1; + } elsif ($opt =~ m/^--ignore-bad-version$/) { + $o->{ignore_bad_version} = 1; + return 1; } elsif ($opt =~ m/^--abort-on-upstream-changes$/) { $o->{abort_on_upstream_changes} = 1; return 1; diff --git a/scripts/Dpkg/Source/Package/V2.pm b/scripts/Dpkg/Source/Package/V2.pm index 262326737..70d19ca3e 100644 --- a/scripts/Dpkg/Source/Package/V2.pm +++ b/scripts/Dpkg/Source/Package/V2.pm @@ -67,6 +67,8 @@ sub init_options { unless exists $self->{options}{create_empty_orig}; $self->{options}{auto_commit} = 0 unless exists $self->{options}{auto_commit}; + $self->{options}{ignore_bad_version} = 0 + unless exists $self->{options}{ignore_bad_version}; } sub parse_cmdline_option { @@ -104,6 +106,9 @@ sub parse_cmdline_option { } elsif ($opt =~ /^--auto-commit$/) { $self->{options}{auto_commit} = 1; return 1; + } elsif ($opt =~ /^--ignore-bad-version$/) { + $self->{options}{ignore_bad_version} = 1; + return 1; } return 0; } |