X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Debbugs%2FPackages.pm;h=783dc24e59a0ecc0cc450265a238e04f4bd9978f;hb=5f21369edc71c1fbcdfa33f5a40986ab63486eba;hp=936bd76688b867ae9d9d3f6c660687d651746c80;hpb=b4af4da62a98712c4ea78d251a503b217fd0c711;p=debbugs.git diff --git a/Debbugs/Packages.pm b/Debbugs/Packages.pm index 936bd76..783dc24 100644 --- a/Debbugs/Packages.pm +++ b/Debbugs/Packages.pm @@ -221,6 +221,15 @@ sub binary_to_source{ my @archs = grep {defined $_} make_list(exists $param{arch}?$param{arch}:[]); return () unless @binaries; + my $cache_key = join("\1", + join("\0",@binaries), + join("\0",@versions), + join("\0",@archs), + join("\0",@param{qw(source_only scalar_only)})); + if (exists $param{cache}{$cache_key}) { + return $param{scalar_only} ? $param{cache}{$cache_key}[0]: + @{$param{cache}{$cache_key}}; + } # any src:foo is source package foo with unspecified version @source = map {/^src:(.+)$/? [$1,'']:()} @binaries; @@ -245,10 +254,10 @@ sub binary_to_source{ push @source, map {$_->{pkg}} $src_rs->all; if ($param{scalar_only}) { - return join(',',@source); + @source = join(',',@source); } - return @source; - + $param{cache}{$cache_key} = \@source; + return $param{scalar_only}?$source[0]:@source; } my $src_rs = $param{schema}->resultset('SrcVer')-> search_rs({'bin_pkg.pkg' => [@binaries], @@ -281,16 +290,8 @@ sub binary_to_source{ $_->{src_vers}{ver}, ]} $src_rs->all; } - return @source; - } - my $cache_key = join("\1", - join("\0",@binaries), - join("\0",@versions), - join("\0",@archs), - join("\0",@param{qw(source_only scalar_only)})); - if (exists $param{cache}{$cache_key}) { - return $param{scalar_only} ? $param{cache}{$cache_key}[0]: - @{$param{cache}{$cache_key}}; + $param{cache}{$cache_key} = \@source; + return $param{scalar_only}?$source[0]:@source; } for my $binary (@binaries) { _tie_binarytosource;