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

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