+2006-01-18 Joey Hess <joeyh@debian.org>
+
+ * scripts/dpkg-shlibdeps: Add possibility to
+ specify a package type in the shlibs file
+ and add a -t switch to dpkg-shlibdeps to
+ specify the wanted type. Entries without
+ package type will have type 'deb' and will
+ serve as fallback if no entry with the
+ correct type is found
+ * man/C/dpkg-source.1: Document new -t
+ switch for dpkg-shlibdeps
+
2005-10-07 Frank Lichtenheld <djpig@debian.org>
* scripts/controllib.pl:
.TP
.BI \-L localshlibsfile
Causes
-.B dpkg\-shlibs
+.B dpkg\-shlibdeps
to read overriding shared library dependency information from
.I localshlibsfile
instead of
output, rather than being added to the substitution variables file
.RB ( debian/substvars
by default).
+.TP
+.BI \-t type
+Causes
+.B dpkg\-shlibdeps
+to prefer shared library dependency information tagged for the given
+package type. If no tagged information is available, falls back to untagged
+information. The default package type is "deb". Shared library dependency
+information is tagged for a given type by prefixing it with the name of the
+type, a colon, and whitespace.
.SH dpkg\-GENCHANGES OPTIONS
.B dpkg\-genchanges
does not take any non-option arguments.
$varnameprefix= 'shlibs';
$dependencyfield= 'Depends';
$varlistfile= 'debian/substvars';
+$packagetype= 'deb';
@depfields= qw(Suggests Recommends Depends Pre-Depends);
-O print variable settings to stdout
-L<localshlibsfile> shlibs override file, not debian/shlibs.local
-T<varlistfile> update variables here, not debian/substvars
+ -t<type> set package type (default is deb)
Dependency fields recognised are ".join("/",@depfields)."
";
}
&warn("unrecognised dependency field \`$dependencyfield'");
} elsif (m/^-e/) {
push(@exec,$'); push(@execf,$dependencyfield);
+ } elsif (m/^-t/) {
+ $packagetype= $';
} elsif (m/^-/) {
usageerr("unknown option \`$_'");
} else {
while (<SLF>) {
s/\s*\n$//; next if m/^\#/;
- if (!m/^\s*(\S+)\s+(\S+)/) {
+ if (!m/^\s*(?:(\S+):\s+)?(\S+)\s+(\S+)/) {
&warn("shared libs info file \`$fn' line $.: bad line \`$_'");
next;
}
- next if $1 ne $ln || $2 ne $lsn;
+ next if defined $1 && $1 ne $packagetype;
+ next if $2 ne $ln || $3 ne $lsn;
return 1 if $fn eq "$curpackdir/DEBIAN/shlibs";
$da= $';
- for $dv (split(/,/,$da)) {
- $dv =~ s/^\s+//; $dv =~ s/\s+$//;
- if (defined($depstrength{$lf})) {
- if (!defined($predefdepfdep{$dv}) ||
- $depstrength{$predefdepfdep{$dv}} < $depstrength{$lf}) {
- $predefdepfdep{$dv}= $lf;
- }
- } else {
- $dk= "$lf: $dv";
- if (!defined($unkdepfdone{$dk})) {
- $unkdepfdone{$dk}= 1;
- $unkdepf{$lf}.= ', ' if length($unkdepf{$lf});
- $unkdepf{$lf}.= $dv;
- }
+ last if defined $1; # exact match, otherwise keep looking
+ }
+ close(SLF);
+
+ return 0 unless defined $da;
+
+ for $dv (split(/,/,$da)) {
+ $dv =~ s/^\s+//; $dv =~ s/\s+$//;
+ if (defined($depstrength{$lf})) {
+ if (!defined($predefdepfdep{$dv}) ||
+ $depstrength{$predefdepfdep{$dv}} < $depstrength{$lf}) {
+ $predefdepfdep{$dv}= $lf;
+ }
+ } else {
+ $dk= "$lf: $dv";
+ if (!defined($unkdepfdone{$dk})) {
+ $unkdepfdone{$dk}= 1;
+ $unkdepf{$lf}.= ', ' if length($unkdepf{$lf});
+ $unkdepf{$lf}.= $dv;
}
}
- return 1;
}
- close(SLF);
- return 0;
+ return 1;
}
if (!$stdout) {