diff options
Diffstat (limited to 'perl-install/pkgs.pm')
-rw-r--r-- | perl-install/pkgs.pm | 34 |
1 files changed, 13 insertions, 21 deletions
diff --git a/perl-install/pkgs.pm b/perl-install/pkgs.pm index b78ec1d24..eb72a1bf1 100644 --- a/perl-install/pkgs.pm +++ b/perl-install/pkgs.pm @@ -170,7 +170,7 @@ sub getDeps($) { sub readCompss($) { my ($packages) = @_; - my (@compss, $ps); + my ($compss, $compss_, $ps) = { childs => {} }; my $f = install_any::getFile("compss") or die "can't find compss"; foreach (<$f>) { @@ -178,19 +178,25 @@ sub readCompss($) { s/#.*//; if (/^(\S+)/) { - $ps = []; - push @compss, { name => $1, packages => $ps }; + my $p = $compss; + my @l = split ':', $1; + pop @l if $l[-1] =~ /^(x11|console)$/; + foreach (@l) { + $p->{childs}{$_} ||= { childs => {} }; + $p = $p->{childs}{$_}; + } + $ps = $p->{packages} ||= []; + $compss_->{$1} = $p; } else { /(\S+)/ or log::l("bad line in compss: $_"), next; push @$ps, $packages->{$1} || do { log::l("unknown package $1 (in compss)"); next }; } } - \@compss; + ($compss, $compss_); } sub readCompssList($$) { - my ($packages, $compss) = @_; - my %compss; map { $compss{$_->{name}} = $_ } @$compss; + my ($packages, $compss_) = @_; my $f = install_any::getFile("compssList") or die "can't find compssList"; local $_ = <$f>; @@ -201,7 +207,7 @@ sub readCompssList($$) { /^\s*$/ || /^#/ and next; /^packages\s*$/ and do { $e = $packages; next }; - /^categories\s*$/ and do { $e = \%compss; next }; + /^categories\s*$/ and do { $e = $compss_; next }; my ($name, @values) = split; @@ -221,20 +227,6 @@ sub verif_lang($$) { !($1 eq $lang || eval { lang::text2lang($1) eq $lang } && !$@); } -sub setShowFromCompss($$$) { - my ($compss, $install_class, $lang) = @_; - - my $l = substr($install_class, 0, 1); - - foreach my $c (@$compss) { - $c->{show} = bool($c->{options} =~ /($l|\*)/); - foreach my $p (@{$c->{packages}}) { - local $_ = $p->{options}; - $p->{show} = /$l|\*/ && verif_lang($p, $lang); - } - } -} - sub setSelectedFromCompssList($$$$$$) { my ($compssListLevels, $packages, $size, $install_class, $lang, $isUpgrade) = @_; my ($level, $ind) = 100; |