| 1 |
use strict; |
use strict; |
| 2 |
use warnings; |
use warnings; |
| 3 |
|
use FindBin; |
| 4 |
|
use lib "$FindBin::Bin/../lib"; |
| 5 |
|
use lib "$FindBin::Bin"; |
| 6 |
|
use Deb::Versions; |
| 7 |
|
|
| 8 |
use HTML::Entities; |
use HTML::Entities; |
| 9 |
|
|
| 37 |
|
|
| 38 |
if ( %dep_pkgs ) { |
if ( %dep_pkgs ) { |
| 39 |
# $res .= "<h4>$type</h4>\n"; |
# $res .= "<h4>$type</h4>\n"; |
| 40 |
|
my $first = 1; |
| 41 |
my $old_dp = ""; |
my $old_dp = ""; |
| 42 |
my $is_old_dp = 0; |
my $is_old_dp = 0; |
| 43 |
foreach my $dp ( sort keys %dep_pkgs ) { |
foreach my $dp ( sort keys %dep_pkgs ) { |
| 46 |
my @pkgs = split /\|/, $dp; |
my @pkgs = split /\|/, $dp; |
| 47 |
|
|
| 48 |
if ( $dp_v eq $old_dp ) { |
if ( $dp_v eq $old_dp ) { |
| 49 |
$res .= "<tr><td></td><td>"; |
$res .= "<br>"; |
| 50 |
$is_old_dp = 1; |
$is_old_dp = 1; |
| 51 |
foreach ( @pkgs ) { |
foreach ( @pkgs ) { |
| 52 |
s/\(.*\)$//o; |
s/\(.*\)$//o; |
| 54 |
} else { |
} else { |
| 55 |
$old_dp = $dp_v; |
$old_dp = $dp_v; |
| 56 |
$is_old_dp = 0; |
$is_old_dp = 0; |
| 57 |
|
if ($first) { |
| 58 |
$res .= "<tr><td width=\"20\" valign=\"top\"><img src=\"../../Pics/$dep_type{$type}.gif\"". |
$res .= "<li>"; |
| 59 |
" alt=\"[$dep_type{$type}]\" width=\"16\" height=\"16\"></td><td>"; |
$first = 0; |
| 60 |
|
} else { |
| 61 |
|
$res .= "</li>\n<li>"; |
| 62 |
|
} |
| 63 |
|
$res .= "<img src=\"../../Pics/$dep_type{$type}.gif\"". |
| 64 |
|
" alt=\"[$dep_type{$type}]\" width=\"16\" height=\"16\"> "; |
| 65 |
} |
} |
| 66 |
|
|
| 67 |
my $arch_str = compute_arch_str ( $dp, $versions, \%arch_deps, |
my $arch_str = compute_arch_str ( $dp, $versions, \%arch_deps, |
| 104 |
push @res_pkgs, "<a href=\"../$section/$p_name\">$p_name</a> $pkg_version$arch_str"; |
push @res_pkgs, "<a href=\"../$section/$p_name\">$p_name</a> $pkg_version$arch_str"; |
| 105 |
} elsif ( $p->is_virtual ) { |
} elsif ( $p->is_virtual ) { |
| 106 |
my $short_desc = gettext( "Virtual package" ); |
my $short_desc = gettext( "Virtual package" ); |
| 107 |
push @res_pkgs, "<a href=\"../virtual/$p_name\">$p_name</a> $pkg_version$arch_str</td></tr>\n<tr><td> $short_desc"; |
push @res_pkgs, "<a href=\"../virtual/$p_name\">$p_name</a> $pkg_version$arch_str<br>\n $short_desc"; |
| 108 |
} else { |
} else { |
| 109 |
my %sections = $p->get_arch_fields( 'section', |
my %sections = $p->get_arch_fields( 'section', |
| 110 |
$env->{archs} ); |
$env->{archs} ); |
| 112 |
my %desc_md5s = $p->get_arch_fields( 'description-md5', |
my %desc_md5s = $p->get_arch_fields( 'description-md5', |
| 113 |
$env->{archs} ); |
$env->{archs} ); |
| 114 |
my $short_desc = conv_desc( $env->{lang}, encode_entities( $env->{db}->get_short_desc( $desc_md5s{max_unique}, $env->{lang} ), "<>&\"" ) ); |
my $short_desc = conv_desc( $env->{lang}, encode_entities( $env->{db}->get_short_desc( $desc_md5s{max_unique}, $env->{lang} ), "<>&\"" ) ); |
| 115 |
push @res_pkgs, "<a href=\"../$section/$p_name\">$p_name</a> $pkg_version$arch_str</td></tr>\n<tr><td> $short_desc"; |
push @res_pkgs, "<a href=\"../$section/$p_name\">$p_name</a> $pkg_version$arch_str<br>\n $short_desc"; |
| 116 |
} |
} |
| 117 |
} elsif ( $is_old_dp ) { |
} elsif ( $is_old_dp ) { |
| 118 |
push @res_pkgs, "$p_name $pkg_version$arch_str"; |
push @res_pkgs, "$p_name $pkg_version$arch_str"; |
| 119 |
} else { |
} else { |
| 120 |
my $short_desc = gettext( "Package not available" ); |
my $short_desc = gettext( "Package not available" ); |
| 121 |
push @res_pkgs, "$p_name $pkg_version$arch_str</td></tr>\n<tr><td> $short_desc"; |
push @res_pkgs, "$p_name $pkg_version$arch_str<br>\n $short_desc"; |
| 122 |
} |
} |
| 123 |
$pkg_ix++; |
$pkg_ix++; |
| 124 |
# warn "$short_desc\n"; |
# warn "$short_desc\n"; |
| 125 |
} |
} |
| 126 |
$res .= "<table>\n<tr><td>".join( "</td></tr>\n<tr><td> ".gettext( " or " )." ", @res_pkgs )."</td></tr>\n</table>"; |
$res .= "\n".join( "<br> ".gettext( " or " )." ", @res_pkgs )."\n"; |
| 127 |
$res .= "</td>"; |
$res .= "\n"; |
| 128 |
|
|
| 129 |
} |
} |
| 130 |
|
$res .= "</li>\n"; |
| 131 |
} |
} |
|
|
|
| 132 |
return $res; |
return $res; |
| 133 |
} |
} |
| 134 |
|
|
| 139 |
|
|
| 140 |
foreach my $dep ( @{$pkg->{versions}{$version}{$type}} ) { |
foreach my $dep ( @{$pkg->{versions}{$version}{$type}} ) { |
| 141 |
my @res_pkgs; |
my @res_pkgs; |
| 142 |
$res .= "<tr><td width=\"20\" valign=\"top\"><img src=\"../../Pics/$dep_type{$type}.gif\"". |
$res .= "<li><img src=\"../../Pics/$dep_type{$type}.gif\"". |
| 143 |
" alt=\"[$dep_type{$type}]\" width=\"16\" height=\"16\"></td><td>"; |
" alt=\"[$dep_type{$type}]\" width=\"16\" height=\"16\"> "; |
| 144 |
foreach my $or_dep ( @$dep ) { |
foreach my $or_dep ( @$dep ) { |
| 145 |
my $p_name = $or_dep->[0]; |
my $p_name = $or_dep->[0]; |
| 146 |
my $p = $env->{db}->get_pkg( $p_name ); |
my $p = $env->{db}->get_pkg( $p_name ); |
| 158 |
if ( $p ) { |
if ( $p ) { |
| 159 |
if ( $p->is_virtual ) { |
if ( $p->is_virtual ) { |
| 160 |
my $short_desc = gettext( "Virtual package" ); |
my $short_desc = gettext( "Virtual package" ); |
| 161 |
push @res_pkgs, "<a href=\"../virtual/$p_name\">$p_name</a> $p_version$arch_str</td></tr>\n<tr><td> $short_desc"; |
push @res_pkgs, "<a href=\"../virtual/$p_name\">$p_name</a> $p_version$arch_str<br>\n $short_desc"; |
| 162 |
} else { |
} else { |
| 163 |
my %sections = $p->get_arch_fields( 'section', |
my %sections = $p->get_arch_fields( 'section', |
| 164 |
$env->{archs} ); |
$env->{archs} ); |
| 166 |
my %desc_md5s = $p->get_arch_fields( 'description-md5', |
my %desc_md5s = $p->get_arch_fields( 'description-md5', |
| 167 |
$env->{archs} ); |
$env->{archs} ); |
| 168 |
my $short_desc = conv_desc( $env->{lang}, encode_entities( $env->{db}->get_short_desc( $desc_md5s{max_unique}, $env->{lang} ), "<>&\"" ) ); |
my $short_desc = conv_desc( $env->{lang}, encode_entities( $env->{db}->get_short_desc( $desc_md5s{max_unique}, $env->{lang} ), "<>&\"" ) ); |
| 169 |
push @res_pkgs, "<a href=\"../$section/$p_name\">$p_name</a> $p_version$arch_str</td></tr>\n<tr><td> $short_desc"; |
push @res_pkgs, "<a href=\"../$section/$p_name\">$p_name</a> $p_version$arch_str<br>\n $short_desc"; |
| 170 |
} |
} |
| 171 |
} else { |
} else { |
| 172 |
my $short_desc = gettext( "Package not available" ); |
my $short_desc = gettext( "Package not available" ); |
| 173 |
push @res_pkgs, "$p_name $p_version$arch_str</td></tr>\n<tr><td> $short_desc"; |
push @res_pkgs, "$p_name $p_version$arch_str<br>\n $short_desc"; |
| 174 |
} |
} |
| 175 |
} |
} |
| 176 |
$res .= "<table>\n<tr><td>".join( "</td></tr>\n<tr><td> ".gettext( " or " )." ", @res_pkgs )."</td></tr>\n</table>"; |
$res .= "\n".join( "\n ".gettext( " or " )." ", @res_pkgs )."</li>\n"; |
|
$res .= "</td>"; |
|
| 177 |
} |
} |
| 178 |
|
$res .= "\n"; |
| 179 |
return $res; |
return $res; |
| 180 |
} |
} |
| 181 |
|
|
| 237 |
} |
} |
| 238 |
|
|
| 239 |
if (@res) { |
if (@res) { |
| 240 |
$res = "<tr><td valign=\"top\">$type:</td><td>".join( ", ", @res)."</td></tr>\n"; |
$res .= "<ul>\n"; |
| 241 |
|
$res = "<li>$type: ".join( ", ", @res)."</li>\n"; |
| 242 |
|
$res .= "</ul>\n"; |
| 243 |
} |
} |
| 244 |
return $res; |
return $res; |
| 245 |
} |
} |
| 257 |
|
|
| 258 |
my ( $save_p, $save_as ) = ( "", "" ); |
my ( $save_p, $save_as ) = ( "", "" ); |
| 259 |
my @save_vs = (); |
my @save_vs = (); |
| 260 |
foreach my $r_p ( sort keys %{$pkg->{rr}{$lc_type}} ) { |
my $r_p; |
| 261 |
|
foreach $r_p ( sort keys %{$pkg->{rr}{$lc_type}} ) { |
| 262 |
foreach my $r_v ( version_sort keys %{$pkg->{rr}{$lc_type}{$r_p}} ) { |
foreach my $r_v ( version_sort keys %{$pkg->{rr}{$lc_type}{$r_p}} ) { |
| 263 |
my %arch_deps; |
my %arch_deps; |
| 264 |
foreach my $r_a ( keys %{$pkg->{rr}{$lc_type}{$r_p}{$r_v}} ) { |
foreach my $r_a ( keys %{$pkg->{rr}{$lc_type}{$r_p}{$r_v}} ) { |
| 290 |
} |
} |
| 291 |
|
|
| 292 |
if (@res) { |
if (@res) { |
| 293 |
$res = "<tr><td valign=\"top\">Reverse $type:</td><td>".join( ", ", @res)."</td></tr>\n"; |
$res = "<li>Reverse $type: ".join( ", ", @res)."</li>\n"; |
| 294 |
} |
} |
| 295 |
return $res; |
return $res; |
| 296 |
} |
} |