SCM

SCM Repository

[webwml] Annotation of /packages/htmlscripts/print_deps.pl
ViewVC logotype

Annotation of /packages/htmlscripts/print_deps.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.2.13 - (view) (download) (as text)

1 : djpig 1.1 use strict;
2 :     use warnings;
3 :    
4 : djpig 1.1.2.7 use HTML::Entities;
5 :    
6 :     use Packages::Pkg;
7 :     use Deb::Versions;
8 :    
9 : djpig 1.1.2.10 sub dep_item {
10 :     my ( $link, $name, $info, $desc ) = @_;
11 :     my $post_link = '';
12 :     if ($link) {
13 :     $link = "<a href=\"$link\">";
14 :     $post_link = '</a>';
15 :     } else {
16 :     $link = '';
17 :     }
18 :     if ($info) {
19 :     $info = " $info";
20 :     } else {
21 :     $info = '';
22 :     }
23 :     if ($desc) {
24 :     $desc = "<br>$desc";
25 :     } else {
26 :     $desc = '';
27 :     }
28 :    
29 :     return "$link$name$post_link$info$desc";
30 :     }
31 :    
32 : djpig 1.1 sub print_deps {
33 : djpig 1.1.2.10 my ( $env, $lang, $pkg, $relations, $type) = @_;
34 : djpig 1.1 my %dep_type = ('depends' => 'dep', 'recommends' => 'rec',
35 :     'suggests' => 'sug');
36 : djpig 1.1.2.9 my $res = "<ul class=\"ul$dep_type{$type}\">\n";
37 : djpig 1.1.2.10 my $first = 1;
38 :    
39 :     # use Data::Dumper;
40 :     # warn Dumper( \$lang, $pkg->get_name, \$type, $relations );
41 :    
42 :     foreach my $rel (@$relations) {
43 :     my $is_old_pkgs = $rel->[0];
44 :     my @res_pkgs = ();
45 :    
46 :     if ($is_old_pkgs) {
47 : djpig 1.1.2.13 $res .= "</p><p>";
48 : djpig 1.1.2.10 } else {
49 :     if ($first) {
50 :     $res .= "<li>";
51 :     $first = 0;
52 : djpig 1.1 } else {
53 : djpig 1.1.2.13 $res .= "</p></li>\n<li>";
54 : djpig 1.1 }
55 : djpig 1.1.2.13 $res .= "<p><span class=\"hidecss\">[$dep_type{$type}] </span>";
56 : djpig 1.1.2.10 }
57 : djpig 1.1
58 : djpig 1.1.2.10 foreach my $rel_alt ( @$rel ) {
59 :     next unless ref($rel_alt);
60 :     my ( $p_name, $pkg_version, $arch_neg,
61 :     $arch_str, $subsection, $available ) = @$rel_alt;
62 : djpig 1.1
63 : djpig 1.1.2.10 if ($arch_str) {
64 :     if ($arch_neg) {
65 :     $arch_str = " [".gettext("not")." $arch_str]";
66 : djpig 1.1 } else {
67 : djpig 1.1.2.10 $arch_str = " [$arch_str]";
68 : djpig 1.1 }
69 :     }
70 : djpig 1.1.2.10 $pkg_version = "($pkg_version)" if $pkg_version;
71 : djpig 1.1
72 : djpig 1.1.2.10 my $p = $env->{db}->get_pkg( $p_name );
73 :     if ( $p ) {
74 :     if ( $is_old_pkgs ) {
75 :     push @res_pkgs, dep_item( "../$subsection/$p_name", $p_name, "$pkg_version$arch_str" );
76 :     } elsif ( $subsection eq 'virtual' ) {
77 :     my $short_desc = gettext( "Virtual package" );
78 :     push @res_pkgs, dep_item( "../virtual/$p_name", $p_name, "$pkg_version$arch_str", $short_desc );
79 :     } else {
80 :     my %desc_md5s = $p->get_arch_fields( 'description-md5',
81 :     $env->{archs} );
82 :     my $short_desc = conv_desc( $env->{lang}, encode_entities( $env->{db}->get_short_desc( $desc_md5s{max_unique}, $lang ), "<>&\"" ) );
83 :     push @res_pkgs, dep_item( "../$subsection/$p_name", $p_name, "$pkg_version$arch_str", $short_desc );
84 :     }
85 :     } elsif ( $is_old_pkgs ) {
86 :     push @res_pkgs, dep_item( undef, $p_name, "$pkg_version$arch_str" );
87 :     } else {
88 :     my $short_desc = gettext( "Package not available" );
89 :     push @res_pkgs, dep_item( undef, $p_name, "$pkg_version$arch_str", $short_desc );
90 :     }
91 :    
92 : djpig 1.1 }
93 : djpig 1.1.2.10
94 : djpig 1.1.2.13 $res .= "\n".join( "</p><p>".gettext( "or" )." ", @res_pkgs )."\n";
95 : djpig 1.1 }
96 : djpig 1.1.2.10 if (@$relations) {
97 : djpig 1.1.2.13 $res .= "</p></li>\n";
98 : djpig 1.1.2.12 $res .= "</ul>\n";
99 : djpig 1.1.2.9 } else {
100 : djpig 1.1.2.10 $res = "";
101 : djpig 1.1.2.9 }
102 : djpig 1.1 return $res;
103 :     }
104 :    
105 :     sub print_src_deps {
106 : djpig 1.1.2.10 my ( $env, $lang, $pkg, $version, $type) = @_;
107 : djpig 1.1 my %dep_type = ('build-depends' => 'adep', 'build-depends-indep' => 'idep' );
108 : djpig 1.1.2.9 my $found = 0;
109 :     my $res = "<ul class=\"ul$dep_type{$type}\">\n";
110 : djpig 1.1 foreach my $dep ( @{$pkg->{versions}{$version}{$type}} ) {
111 : djpig 1.1.2.9 $found = 1;
112 : djpig 1.1 my @res_pkgs;
113 : djpig 1.1.2.9 $res .= "<li><span class=\"hidecss\">[$dep_type{$type}] </span>";
114 : djpig 1.1 foreach my $or_dep ( @$dep ) {
115 :     my $p_name = $or_dep->[0];
116 :     my $p = $env->{db}->get_pkg( $p_name );
117 :     my $p_version = $or_dep->[1] ? "(".encode_entities( $or_dep->[1] ).
118 :     " $or_dep->[2]) " : "";
119 :     my $not = gettext( "not" );
120 :     if ($or_dep->[3]) {
121 :     $or_dep->[3] =~ s/\s+/, /go;
122 :     # as either all or no archs have to be prepended with
123 :     # exlamation marks, convert the first and delete the others
124 :     $or_dep->[3] =~ s/!\s*/$not /o;
125 :     $or_dep->[3] =~ s/!\s*//go;
126 :     }
127 :     my $arch_str = $or_dep->[3] ? " [$or_dep->[3]]" : "";
128 :     if ( $p ) {
129 :     if ( $p->is_virtual ) {
130 :     my $short_desc = gettext( "Virtual package" );
131 : djpig 1.1.2.10 push @res_pkgs, dep_item( "../virtual/$p_name", $p_name, "$p_version$arch_str", $short_desc );
132 : djpig 1.1 } else {
133 :     my %sections = $p->get_arch_fields( 'section',
134 :     $env->{archs} );
135 :     my $section = $sections{max_unique};
136 :     my %desc_md5s = $p->get_arch_fields( 'description-md5',
137 :     $env->{archs} );
138 : djpig 1.1.2.10 my $short_desc = conv_desc( $lang, encode_entities( $env->{db}->get_short_desc( $desc_md5s{max_unique}, $lang ), "<>&\"" ) );
139 :     push @res_pkgs, dep_item( "../$section/$p_name", $p_name, "$p_version$arch_str", $short_desc );
140 : djpig 1.1 }
141 :     } else {
142 :     my $short_desc = gettext( "Package not available" );
143 : djpig 1.1.2.10 push @res_pkgs, dep_item( undef, $p_name, "$p_version$arch_str", $short_desc );
144 : djpig 1.1 }
145 :     }
146 : djpig 1.1.2.10 $res .= "\n".join( "<br>\n".gettext( " or " )." ", @res_pkgs )."</li>\n";
147 : djpig 1.1 }
148 : djpig 1.1.2.9 if ($found) {
149 :     $res .= "\n</ul>";
150 :     } else {
151 :     $res = "";
152 :     }
153 : djpig 1.1 return $res;
154 :     }
155 :    
156 : djpig 1.1.2.1 sub print_deps_ds {
157 : djpig 1.1.2.10 my ( $env, $pkg, $relations, $type) = @_;
158 : djpig 1.1.2.1 my $res = "";
159 :    
160 : djpig 1.1.2.10 use Data::Dumper;
161 :     # warn Dumper( $type, $relations );
162 :    
163 : djpig 1.1.2.2 my @res;
164 : djpig 1.1.2.10 foreach my $rel (@$relations) {
165 :     my @res_pkgs = ();
166 :     foreach my $rel_alt ( @$rel ) {
167 :     next unless ref($rel_alt);
168 :     my ( $p_name, $pkg_version, $arch_neg,
169 :     $arch_str, $subsection, $available ) = @$rel_alt;
170 :    
171 :     if ($arch_str) {
172 :     if ($arch_neg) {
173 :     $arch_str = " [".gettext("not")." $arch_str]";
174 :     } else {
175 :     $arch_str = " [$arch_str]";
176 : djpig 1.1.2.1 }
177 : djpig 1.1.2.10 }
178 :     $pkg_version = "($pkg_version)" if $pkg_version;
179 : djpig 1.1.2.1
180 : djpig 1.1.2.10 if ($available) {
181 :     push @res_pkgs, dep_item( "../$subsection/$p_name",
182 :     $p_name, "$pkg_version$arch_str" );
183 :     } else {
184 :     push @res_pkgs, dep_item( undef,
185 :     $p_name, "$pkg_version$arch_str" );
186 : djpig 1.1.2.1 }
187 : djpig 1.1.2.10
188 : djpig 1.1.2.1 }
189 : djpig 1.1.2.10 push @res, join( gettext( " or " ), @res_pkgs );
190 : djpig 1.1.2.1 }
191 :    
192 : djpig 1.1.2.2 if (@res) {
193 : djpig 1.1.2.10 $res .= ds_item($type, join( ", ", @res));
194 : djpig 1.1.2.1 }
195 :     return $res;
196 :     }
197 :    
198 : djpig 1.1.2.10 #FIXME
199 : djpig 1.1.2.4 sub print_reverse_rel_ds {
200 : djpig 1.1.2.6 my ( $env, $pkg, $versions, $type, $is_src_dep) = @_;
201 : djpig 1.1.2.4 my $res = "";
202 :     my @res = ();
203 :     my @all_archs = ( @{$env->{archs}}, 'all' );
204 :     my $lc_type = lc $type;
205 :    
206 :     unless (exists $pkg->{rr}{$lc_type}) {
207 :     return "";
208 :     }
209 :    
210 : djpig 1.1.2.5 my ( $save_p, $save_as ) = ( "", "" );
211 :     my @save_vs = ();
212 : djpig 1.1.2.8 my $r_p;
213 :     foreach $r_p ( sort keys %{$pkg->{rr}{$lc_type}} ) {
214 : djpig 1.1.2.4 foreach my $r_v ( version_sort keys %{$pkg->{rr}{$lc_type}{$r_p}} ) {
215 :     my %arch_deps;
216 :     foreach my $r_a ( keys %{$pkg->{rr}{$lc_type}{$r_p}{$r_v}} ) {
217 :     $arch_deps{$r_a}{$r_p} =
218 :     "@{$pkg->{rr}{$lc_type}{$r_p}{$r_v}{$r_a}}";
219 :     }
220 : djpig 1.1.2.5 @all_archs = sort keys %arch_deps;
221 : djpig 1.1.2.4 my $arch_str = compute_arch_str( $r_p, $versions, \%arch_deps,
222 : djpig 1.1.2.6 \@all_archs, $is_src_dep );
223 : djpig 1.1.2.4 if ( ($r_p eq $save_p) && ($arch_str eq $save_as) ) {
224 : djpig 1.1.2.5 push @save_vs, $r_v;
225 : djpig 1.1.2.4 } else {
226 : djpig 1.1.2.5 if ( $save_p ) {
227 :     $save_p = compute_link( $env, $save_p );
228 :     # if (@save_vs == keys %{$versions->{v2a}}) {
229 :     # push @res, "$save_p$save_as";
230 :     # } else {
231 :     push @res, "$save_p (".
232 :     join( ", ", version_sort @save_vs ).
233 :     ")$save_as";
234 :     # }
235 :     }
236 :    
237 : djpig 1.1.2.4 $save_p = $r_p;
238 : djpig 1.1.2.5 @save_vs = ( $r_v );
239 : djpig 1.1.2.4 $save_as = $arch_str;
240 :     }
241 :     }
242 :     }
243 :    
244 :     if (@res) {
245 : djpig 1.1.2.8 $res = "<li>Reverse $type: ".join( ", ", @res)."</li>\n";
246 : djpig 1.1.2.4 }
247 :     return $res;
248 :     }
249 :    
250 :    
251 : djpig 1.1.2.6 sub compute_src_arch_str {
252 :     my ( $dp, $versions, $arch_deps, $all_archs ) = @_;
253 :    
254 :    
255 :     my $full_arch_string = "";
256 :     my $arch_str = "";
257 :     foreach my $a ( @$all_archs ) {
258 :     if ( exists( $versions->{a2v}{$a} )
259 :     && exists( $arch_deps->{$a} ) ) {
260 :     if ( exists $arch_deps->{$a}{$dp} ) {
261 :     $full_arch_string .= $a;
262 :     }
263 :     }
264 :     }
265 :    
266 :     my ( %dep_archs, %not_dep_archs );
267 :     my @toks = split / /, $full_arch_string;
268 :     foreach (@toks) {
269 :     /^all$/ && return "";
270 :    
271 :     /^!(\w+)$/ && do {
272 :     $not_dep_archs{$1}++;
273 :     next;
274 :     };
275 :    
276 :     /^(\w+)$/ && do {
277 :     $dep_archs{$1}++;
278 :     next;
279 :     };
280 :     }
281 :    
282 :     foreach (keys %dep_archs) {
283 :     if (exists $not_dep_archs{$_}) {
284 :     delete $not_dep_archs{$_};
285 :     }
286 :    
287 :     $arch_str .= $_;
288 :     }
289 :     foreach (keys %not_dep_archs) {
290 :     $arch_str .= "!$_";
291 :     }
292 :    
293 :     return $arch_str;
294 :     }
295 :    
296 : djpig 1.1 1;

root@alioth.debian.org
ViewVC Help
Powered by ViewVC 1.0.0  
Powered By FusionForge
Show source