In SCALAR context, only the corresponding source packages are
returned, concatenated with ', ' if necessary.
+If no source can be found, returns undef in scalar context, or the
+empty list in list context.
+
=over
=item binary -- binary package name(s) as a SCALAR or ARRAYREF
=cut
+# the two global variables below are used to tie the source maps; we
+# probably should be retying them in long lived processes.
our %_binarytosource;
+our %_sourcetobinary;
sub binary_to_source{
my %param = validate_with(params => \@_,
spec => {binary => {type => SCALAR|ARRAYREF,
tie %_sourcetobinary, MLDBM => $config{source_binary_map}, O_RDONLY or
die "Unable top open $gSourceBinaryMap for reading";
}
- for my $package (@package) {
- if (exists $_sourcetobinary{$package}) {
- push @source,[$package,$_] for keys %{$_sourcetobinary{$package}};
+ for my $maybe_sourcepkg (@binaries) {
+ if (exists $_sourcetobinary{$maybe_sourcepkg}) {
+ push @source,[$maybe_sourcepkg,$_] for keys %{$_sourcetobinary{$maybe_sourcepkg}};
}
}
# if @source is still empty here, it's probably a non-existant
=cut
-our %_sourcetobinary;
sub sourcetobinary {
my ($srcname, $srcver) = @_;
}
my @srcinfo = binary_to_source(binary => $pkg,
version => $version,
- arch => $arch);
+ length($arch)?(arch => $arch):());
if (not @srcinfo) {
# We don't have explicit information about the
# binary-to-source mapping for this version