Просмотр исходного кода

dpkg-scanpackages: add support for extra override file

Based-on-patch-by: Robert Millan <rmh@aybabtu.com>
Raphaël Hertzog лет назад: 17
Родитель
Сommit
121197a1ef
3 измененных файлов с 33 добавлено и 2 удалено
  1. 2 0
      debian/changelog
  2. 4 0
      man/dpkg-scanpackages.1
  3. 27 2
      scripts/dpkg-scanpackages.pl

+ 2 - 0
debian/changelog

@@ -48,6 +48,8 @@ dpkg (1.15.4) UNRELEASED; urgency=low
     Closes: #537800
   * Fix update-alternatives to mention the correct slave link that can't
     be installed due to a conflicting file instead of quoting the master link.
+  * Add support for extra override file in dpkg-scanpackages. Thanks to Robert
+    Millan for the patch. Closes: #537559
 
   [ Modestas Vainius ]
   * Provide a meaningful label for dpkg-gensymbols diff.

+ 4 - 0
man/dpkg-scanpackages.1

@@ -77,6 +77,10 @@ Scan for *.\fItype\fP packages, instead of *.deb.
 .BR \-u ", " \-\-udeb
 \fBObsolete\fP alias for \fB-tudeb\fP.
 .TP
+.BR \-e ", " \-\-extraoverride " \fIfile\fP"
+Scan \fIfile\fP to find supplementary overrides. Each line contains 3
+space separated fields: package name, field name to override, new field value.
+.TP
 .BR \-a ", " \-\-arch " \fIarch\fP"
 Use a pattern consisting of \fI*_all.deb\fP and \fI*_arch.deb\fP instead of
 scanning for all debs,

+ 27 - 2
scripts/dpkg-scanpackages.pl

@@ -32,7 +32,7 @@ my @fieldpri = (qw(Package Package-Type Source Version Kernel-Version
                    Architecture Subarchitecture Essential Origin Bugs
                    Maintainer Installed-Size Installer-Menu-Item),
                 @pkg_dep_fields, qw(Filename Size), @sums,
-                qw(Section Priority Homepage Description Tag));
+                qw(Section Priority Homepage Description Tag Task));
 
 # This maps the fields into the proper case
 my %field_case;
@@ -46,11 +46,12 @@ my %options = (help            => sub { usage(); exit 0; },
 	       udeb            => \&set_type_udeb,
 	       arch            => undef,
 	       multiversion    => 0,
+	       extraoverride   => undef,
 	      );
 
 my $result = GetOptions(\%options,
                         'help|h|?', 'version', 'type|t=s', 'udeb|u!',
-                        'arch|a=s', 'multiversion|m!');
+                        'arch|a=s', 'multiversion|m!', 'extraoverride|e=s');
 
 sub version {
     printf _g("Debian %s version %s.\n"), $progname, $version;
@@ -66,6 +67,7 @@ Options:
   -u, --udeb               scan for udebs (obsolete alias for -tudeb).
   -a, --arch <arch>        architecture to scan for.
   -m, --multiversion       allow multiple versions of a single package.
+  -e, --extraoverride <file> extra override file
   -h, --help               show this help message.
       --version            show the version.
 "), $progname;
@@ -124,6 +126,28 @@ sub load_override
     close($override_fh);
 }
 
+sub load_override_extra
+{
+    my $override_fh = new IO::File $options{extraoverride}, 'r' or
+        syserr(_g("Couldn't open override file %s"), $options{extraoverride});
+
+    while (<$override_fh>) {
+	s/\#.*//;
+	s/\s+$//;
+	next unless $_;
+
+	my ($p, $field, $value) = split(/\s+/, $_, 3);
+
+	next unless defined($packages{$p});
+
+	for my $package (@{$packages{$p}}) {
+	    $$package{$field} = $value;
+	}
+    }
+
+    close($override_fh);
+}
+
 usage() and exit 1 if not $result;
 
 if (not @ARGV >= 1 && @ARGV <= 3) {
@@ -232,6 +256,7 @@ FILE:
 close($find_h);
 
 load_override($override) if defined $override;
+load_override_extra($options{extraoverride}) if defined $options{extraoverride};
 
 my @missingover=();