summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2000-03-07 10:19:00 +0000
committerPascal Rigaux <pixel@mandriva.com>2000-03-07 10:19:00 +0000
commit51cbb8aad9b16ac231d4902568d7a63847cb996c (patch)
tree73a5aa093bf7a6df5dc6ca7a0c042273cdcfe599
parent26a387d5919bba9ccdb8a8447daa114204a997c4 (diff)
downloaddrakx-backup-do-not-use-51cbb8aad9b16ac231d4902568d7a63847cb996c.tar
drakx-backup-do-not-use-51cbb8aad9b16ac231d4902568d7a63847cb996c.tar.gz
drakx-backup-do-not-use-51cbb8aad9b16ac231d4902568d7a63847cb996c.tar.bz2
drakx-backup-do-not-use-51cbb8aad9b16ac231d4902568d7a63847cb996c.tar.xz
drakx-backup-do-not-use-51cbb8aad9b16ac231d4902568d7a63847cb996c.zip
no_comment
-rw-r--r--docs/TODO2
-rw-r--r--perl-install/common.pm4
-rw-r--r--perl-install/install2.pm1
-rw-r--r--perl-install/install_any.pm4
-rw-r--r--perl-install/install_steps_gtk.pm239
-rw-r--r--perl-install/install_steps_interactive.pm2
-rw-r--r--perl-install/lang.pm2
-rw-r--r--perl-install/pkgs.pm73
-rw-r--r--perl-install/share/compssList249
9 files changed, 104 insertions, 472 deletions
diff --git a/docs/TODO b/docs/TODO
index 8143bae9e..4b1e03dfb 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -25,6 +25,8 @@ add choice clean /tmp or not in expert
kernel chosen by default must be the one according to supermount/secure
-features-------------------------------------------------------------------------------
+handle NT (add entry for it in lilo, put it in fstab)
+
(7.1) rewrite crypto stuff
(NEED 7.1) auto-install for corporate, very important (need consolidation).
diff --git a/perl-install/common.pm b/perl-install/common.pm
index bd8413788..0e75369ce 100644
--- a/perl-install/common.pm
+++ b/perl-install/common.pm
@@ -115,8 +115,8 @@ sub touch {
sub map_index(&@) {
my $f = shift;
- my $v; local $::i = 0;
- map { $v = &$f($::i); $::i++; $v } @_;
+ my @v; local $::i = 0;
+ map { @v = &$f($::i); $::i++; @v } @_;
}
sub grep_index(&@) {
my $f = shift;
diff --git a/perl-install/install2.pm b/perl-install/install2.pm
index 6be64eb59..4bb38d9aa 100644
--- a/perl-install/install2.pm
+++ b/perl-install/install2.pm
@@ -252,6 +252,7 @@ sub selectKeyboard {
addToBeDone {
lang::write($o->{prefix});
keyboard::write($o->{prefix}, $o->{keyboard});
+ lang::set_langs($o->{langs});
} 'doInstallStep' unless $::g_auto_install;
}
diff --git a/perl-install/install_any.pm b/perl-install/install_any.pm
index 332dbed3e..248dc5b69 100644
--- a/perl-install/install_any.pm
+++ b/perl-install/install_any.pm
@@ -138,8 +138,8 @@ sub setPackages($) {
push @{$o->{base}}, @{delete($o->{"base_" . arch()}) || []};
- my $c; ($o->{compss}, $c) = pkgs::readCompss($o->{packages});
- $o->{compssListLevels} = pkgs::readCompssList($o->{packages}, $c);
+ $o->{compss} = pkgs::readCompss($o->{packages});
+ $o->{compssListLevels} = pkgs::readCompssList($o->{packages}, $o->{compss});
($o->{compssUsers}, $o->{compssUsersSorted}) = pkgs::readCompssUsers($o->{packages}, $o->{compss});
my @l = ();
diff --git a/perl-install/install_steps_gtk.pm b/perl-install/install_steps_gtk.pm
index 5f1839c62..71f05d3bf 100644
--- a/perl-install/install_steps_gtk.pm
+++ b/perl-install/install_steps_gtk.pm
@@ -345,188 +345,85 @@ installation of each selected groups.") .
}
sub choosePackagesTree {
my ($o, $packages, $compss) = @_;
- my $availableSpace = int(install_any::getAvailableSpace($o) / sqr(1024));
- my $w = my_gtk->new('');
- add2hash_($o->{packages_}, { show_level => 0 }); #- keep show more or less 80 });
- my ($current, $ignore, $showall, $selectall, $w_size, $info_widget, $showall_button, $selectall_button, $go, %items) = 0, 0, 0, 0;
+ my ($curr, $info_widget, $w_size, $go, $idle);
+ my %wtree;
+
+ my $w = my_gtk->new('');
my $details = new Gtk::VBox(0,0);
- $compss->{tree} = new Gtk::Tree();
- $compss->{tree}->set_selection_mode('multiple');
-
- my $clean; $clean = sub {
- my ($p) = @_;
- foreach (values %{$p->{childs}}) {
- &$clean($_) if $_->{childs};
- delete $_->{itemNB};
- delete $_->{tree};
- delete $_->{packages_item};
+ my $tree = Gtk::CTree->new(2, 0);
+ $tree->set_selection_mode('browse');
+ $tree->set_column_auto_resize($_, 1) foreach 0..1;
+
+ my $parent; $parent = sub {
+ if (my $w = $wtree{$_[0]}) { return $w }
+ my $s; foreach (split '/', $_[0]) {
+ $wtree{"$s/$_"} ||=
+ $tree->insert_node($s ? $parent->($s) : undef, undef, [$_], 5, (undef) x 4, 0, 0);
+ $s = "$s/$_";
}
- }; &$clean($compss);
+ $wtree{$s};
+ };
+ my ($root, $leaf);
+ foreach (@$compss) {
+ ($root, $leaf) = m|(.*)/(.+)|o or ($root, $leaf) = ('', $_);
+ my $node = $tree->insert_node($parent->($root), undef, [$leaf], 5, (undef) x 4, 1, 0);
+ }
- my $update = sub {
- my $size = 0;
- $ignore = 1;
- foreach (grep { $_->[0] } values %items) {
- $compss->{tree}->unselect_child($_->[0]);
- $compss->{tree}->select_child($_->[0]) if pkgs::packageFlagSelected($_->[1]);
- }
- $ignore = 0;
-
- foreach (values %{$packages->[0]}) {
- $size += pkgs::packageSize($_) - ($_->{installedCumulSize} || 0) if pkgs::packageFlagSelected($_); #- on upgrade, installed packages will be removed.
- }
+ gtkadd($w->{window},
+ gtkpack_(new Gtk::VBox(0,5),
+ 0, _("Choose the packages you want to install"),
+ 1, gtkpack(new Gtk::HBox(0,0),
+ createScrolledWindow($tree),
+ gtkadd(gtkset_usize(new Gtk::Frame(_("Info")), 150, 0),
+ createScrolledWindow($info_widget = new Gtk::Text),
+ )),
+ 0, gtkpack__(new Gtk::HBox(0,0), $w_size = new Gtk::Label('')),
+ 0, gtkpack(new Gtk::HBox(0,10),
+ $go = gtksignal_connect(new Gtk::Button(_("Install")), "clicked" => sub { $w->{retval} = 1; Gtk->main_quit }),
+ )
+ ));
+ $w->{window}->set_usize(map { $_ - 2 * $my_gtk::border - 4 } $::windowwidth, $::windowheight);
+ $go->grab_focus;
+ $w->show;
- $w_size->set(_("Total size: ") . int (pkgs::correctSize($size / sqr(1024))) . " / $availableSpace " . _("KB") );
- };
- my $new_item = sub {
- my ($p, $name, $parent) = @_;
- my $w = create_treeitem($name);
- $items{++$itemsNB} = [ $w, $p ];
- undef $parent->{packages_item}{$itemsNB} if $parent;
- $w->show;
- $w->set_sensitive(!pkgs::packageFlagBase($p) && !pkgs::packageFlagInstalled($p));
- $w->signal_connect(focus_in_event => sub {
- my $p = eval { pkgs::getHeader ($p) }; #- TODO
- gtktext_insert($info_widget, $@ ? _("Bad package") :
- _("Version: %s\n", c::headerGetEntry($p, 'version') . '-' . c::headerGetEntry($p, 'release')) .
- _("Size: %d KB\n", c::headerGetEntry($p, 'size') / 1024) .
-
- formatLines(c::headerGetEntry($p, 'description')));
- }) unless $p->{childs};
- $itemsNB;
+ my $display_info = sub {
+ my $p = $packages->[0]{$curr} or return gtktext_insert($info_widget, '');
+ pkgs::extractHeaders($o->{prefix}, [$p]);
+ $p->{header} or die;
+
+ my $ind = $o->{compssListLevels}{$o->{install_class}};
+ my $imp = translate($pkgs::compssListDesc{pkgs::packageFlagBase($p) ? 100 : round_down($p->{values}[$ind], 10)});
+
+ gtktext_insert($info_widget, $@ ? _("Bad package") :
+ _("Version: %s\n", pkgs::packageVersion($p) . '-' . pkgs::packageRelease($p)) .
+ _("Size: %d KB\n", pkgs::packageSize($p) / 1024) .
+ ($imp && _("Importance: %s\n", $imp)) .
+ formatLines(c::headerGetEntry($p->{header}, 'description')));
+ c::headerFree(delete $p->{header});
+ 0;
};
- $compss->{tree}->signal_connect(selection_changed => sub {
- $ignore and return;
+ $tree->signal_connect(tree_select_row => sub {
+ Gtk->timeout_remove($idle) if $idle;
- my %s; @s{$_[0]->selection} = ();
- my @changed;
- #- needs to find @changed first, _then_ change the selected, otherwise
- #- we won't be able to find the changed
- foreach (values %items) {
- push @changed, $_->[1] if (pkgs::packageFlagSelected($_->[1]) xor exists $s{$_->[0]});
- }
- #- works before @changed is (or must be!) one element
- foreach (@changed) {
- if ($_->{childs}) {
- my $pkg = $_;
- pkgs::packageSetFlagSelected($pkg, !pkgs::packageFlagSelected($pkg));
- my $f; $f = sub {
- my ($p) = @_;
- $p->{itemNB} or return;
- if ($p->{packages}) {
- foreach (keys %{$p->{packages_item} || {}}) {
- my ($a, $b) = @{$items{$_}};
- $a and pkgs::setPackageSelection($packages, $b, pkgs::packageFlagSelected($pkg));
- }
- } else {
- foreach (values %{$p->{childs}}) {
- pkgs::packageSetFlagSelected($_, pkgs::packageFlagSelected($pkg));
- &$f($_);
- }
- }
- }; &$f($_);
-#- } elsif ($_->{base}) {
-#- $o->ask_warn('', _("Sorry, i won't unselect this package. The system needs it"));
-#- } elsif ($_->{installed}) {
-#- $o->ask_warn('', _("Sorry, i won't select this package. A more recent version is already installed"));
- } else {
- pkgs::togglePackageSelection($packages, $_);
- }
- }
- &$update();
+ $_[1]->row->is_leaf or return;
+ ($curr) = $tree->node_get_pixtext($_[1], 0);
+
+ $idle = Gtk->timeout_add(100, $display_info);
});
-#- my $select_add = sub {
-#- my ($ind, $level) = @{$o->{packages_}}{"ind", "select_level"};
-#- $level = max(0, min(100, ($level + $_[0])));
-#- $o->{packages_}{select_level} = $level;
-#-
-#- pkgs::unselect_all($packages);
-#- foreach (pkgs::allpackages($packages)) {
-#- pkgs::select($packages, $_) if $_->{values}[$ind] >= $level;
-#- }
-#- &$update;
-#- };
-
- my $show_add = sub {
- my ($ind, $level) = @{$o->{packages_}}{"ind", "show_level"};
- $level = max(0, min(90, ($level + $_[0])));
- $o->{packages_}{show_level} = $level;
-
- my $update_tree = sub {
- my $P = shift;
- my $i = 0; foreach (@_) {
- my ($flag, $itemNB, $q) = @$_;
- my $item = $items{$flag || $itemNB}[0] if $flag || $itemNB;
- if ($flag) {
- $P->{tree}->insert($item, $i) if $flag ne "1";
- $item->set_subtree($q->{tree}) if $flag ne "1" && $q->{tree};
- $i++;
- } elsif ($itemNB) {
- delete $items{$itemNB};
- delete $P->{packages_item}{$itemNB};
- $P->{tree}->remove_item($item) if $P->{tree};
- }
- }
- };
- my $f; $f = sub {
- my ($p) = @_;
- if ($p->{packages}) {
- my %l; $l{$items{$_}[1]} = $_ foreach keys %{$p->{packages_item}};
- map {
- [ $_->{values}[$ind] >= $level ?
- ($l{$_} ? 1 : &$new_item($_, pkgs::packageName($_), $p)) : '', $l{$_}, $_ ];
- } sort {
- pkgs::packageName($a) cmp pkgs::packageName($b) } @{$p->{packages}};
- } else {
- map {
- my $P = $p->{childs}{$_};
- my @L; @L = &$f($P) if !$P->{values} || $P->{values}[$ind] > ($::expert ? -1 : 0);
- if (grep { $_->[0] } @L) {
- my $r = $P->{tree} ? 1 : do {
- my $t = $P->{tree} = new Gtk::Tree(); $t->show;
- $P->{itemNB} = &$new_item($P, $_);
- };
- &$update_tree($P, @L);
- [ $r, $P->{itemNB}, $P ];
- } else {
- &$update_tree($P, @L);
- delete $P->{tree};
- [ '', delete $P->{itemNB}, $P ];
- }
- } sort keys %{$p->{childs} || {}};
- }
- };
- $ignore = 1;
- &$update_tree($compss, &$f($compss));
- &$update;
- $ignore = 0;
- };
+ my $update_size = sub {
+ my $size = 0;
+ foreach (values %{$packages->[0]}) {
+ $size += pkgs::packageSize($_) - ($_->{installedCumulSize} || 0) if pkgs::packageFlagSelected($_); #- on upgrade, installed packages will be removed.
+ }
+ $w_size->set(_("Total size: %d / %d KB",
+ pkgs::correctSize($size / sqr(1024)),
+ install_any::getAvailableSpace($o) / sqr(1024)));
- gtkadd($w->{window}, gtkpack_(new Gtk::VBox(0,5),
- 0, _("Choose the packages you want to install"),
- 1, gtkpack(new Gtk::HBox(0,0),
- createScrolledWindow($compss->{tree}),
- gtkadd(gtkset_usize(new Gtk::Frame(_("Info")), 150, 0),
- createScrolledWindow($info_widget = new Gtk::Text),
- ),
- ),
- 0, gtkpack_(new Gtk::HBox(0,0), 0, $w_size = new Gtk::Label('')),
- 0, gtkpack(new Gtk::HBox(0,10),
- map { $go ||= $_; $_ }
- map { gtksignal_connect(new Gtk::Button($_->[0]), "clicked" => $_->[1]) }
- [ _("Install") => sub { $w->{retval} = 1; Gtk->main_quit } ],
- #- keep show more or less [ _("Show less") => sub { &$show_add(+10) } ],
- #- keep show more or less [ _("Show more") => sub { &$show_add(-10) } ],
- )
- ));
- $w->{window}->set_usize(map { $_ - 2 * $my_gtk::border - 4 } $::windowwidth, $::windowheight);
- $w->show;
- &$show_add(0);
- &$update();
- $go->grab_focus;
+ };
+ &$update_size();
$w->main;
}
diff --git a/perl-install/install_steps_interactive.pm b/perl-install/install_steps_interactive.pm
index 53665bec3..142c785bd 100644
--- a/perl-install/install_steps_interactive.pm
+++ b/perl-install/install_steps_interactive.pm
@@ -79,7 +79,7 @@ sub selectKeyboard($) {
my $langs = $o->ask_many_from_list('',
_("You can choose other languages that will be available after install"),
[ lang::list() ]) or goto &selectLanguage if $::expert;
- lang::set_langs($o->{langs} = grep_index { $langs->[$::i] } lang::list());
+ $o->{langs} = [ $o->{lang}, grep_index { $langs->[$::i] } lang::list() ];
}
}
#------------------------------------------------------------------------------
diff --git a/perl-install/lang.pm b/perl-install/lang.pm
index 96c5de80f..298225425 100644
--- a/perl-install/lang.pm
+++ b/perl-install/lang.pm
@@ -236,8 +236,6 @@ sub set_langs {
my ($l) = @_;
$ENV{RPM_INSTALL_LANG} = member('all', @$l) ? 'all' :
join ':', uniq(map { substr($languages{$_}[2], 0, 2) } @$l);
-
-# $ENV{RPM_INSTALL_LANG} = join ':', uniq(map { split ':', $languages{$_}[3] } @{$_[0]});
}
sub write {
diff --git a/perl-install/pkgs.pm b/perl-install/pkgs.pm
index d2cbc116e..e47b03d65 100644
--- a/perl-install/pkgs.pm
+++ b/perl-install/pkgs.pm
@@ -2,7 +2,7 @@ package pkgs;
use diagnostics;
use strict;
-use vars qw(*LOG %compssList @skip_list %by_lang @preferred $limitMinTrans $limitMaxTrans $PKGS_SELECTED $PKGS_FORCE $PKGS_INSTALLED $PKGS_BASE $PKGS_SKIP $PKGS_UNSKIP);
+use vars qw(*LOG %compssListDesc @skip_list %by_lang @preferred $limitMinTrans $limitMaxTrans $PKGS_SELECTED $PKGS_FORCE $PKGS_INSTALLED $PKGS_BASE $PKGS_SKIP $PKGS_UNSKIP);
use common qw(:common :file :functional);
use install_any;
@@ -15,7 +15,8 @@ use lang;
use c;
#- lower bound on the left ( aka 90 means [90-100[ )
-%compssList = (
+%compssListDesc = (
+ 100 => __("mandatory"), #- do not use it, it's for base packages
90 => __("must have"), #- every install have these packages (unless hand de-selected in expert, or not enough room)
80 => __("important"), #- every beginner/custom install have these packages (unless not enough space)
#- has minimum X install (XFree86 + icewm)(normal)
@@ -284,7 +285,6 @@ sub psUsingHdlist($) {
flags => 0, #- flags
};
$packages[0]{packageName($pkg)} = $pkg;
- print packageName($pkg), "\n";
} else {
die "cannot determine how to handle such file in $newf: $_";
}
@@ -341,14 +341,9 @@ sub getProvides($) {
}
}
-sub category2packages($) {
- my ($p) = @_;
- $p->{packages} || [ map { @{ category2packages($_) } } values %{$p->{childs}} ];
-}
-
-sub readCompss($) {
+sub readCompss {
my ($packages) = @_;
- my ($compss, $compss_, $ps) = { childs => {} };
+ my ($p, @compss);
my $f = install_any::getFile("compss") or die "can't find compss";
foreach (<$f>) {
@@ -356,40 +351,26 @@ sub readCompss($) {
s/#.*//;
if (/^(\S+)/) {
- my $p = $compss;
- my @l = split ':', $1;
- foreach (@l) {
- $p->{childs}{$_} ||= { childs => {} };
- $p = $p->{childs}{$_};
- }
- $ps = $p->{packages} ||= [];
- $compss_->{$1} = $p;
+ s|:|/|g;
+ $p = $1 if /^(\S+)/;
} else {
- /(\S+)/ or log::l("bad line in compss: $_"), next;
- push @$ps, $packages->[0]{$1} || do { log::l("unknown package $1 (in compss)"); next };
+ /(\S+)/;
+ $packages->[0]{$1} or log::l("unknown package $1 in compss"), next;
+ push @compss, "$p/$1";
}
}
- ($compss, $compss_);
+ \@compss;
}
-sub readCompssList($$$) {
- my ($packages, $compss_) = @_;
+sub readCompssList {
+ my ($packages) = @_;
my $f = install_any::getFile("compssList") or die "can't find compssList";
- local $_ = <$f>;
- my $level = [ split ];
+ my @levels = split ' ', <$f>;
- my $nb_values = 3;
- my $e;
foreach (<$f>) {
/^\s*$/ || /^#/ and next;
-
- /^packages\s*$/ and do { $e = $packages->[0]; next };
- /^categories\s*$/ and do { $e = $compss_; next };
-
my ($name, @values) = split;
-
- $e or log::l("neither packages nor categories");
- my $p = $e->{$name} or log::l("unknown entry $name (in compssList)"), next;
+ my $p = $packages->[0]{$name} or log::l("unknown entry $name (in compssList)"), next;
$p->{values} = \@values;
}
@@ -399,33 +380,38 @@ sub readCompssList($$$) {
foreach ("locales-$_", @{$p->{provides} || []}, @{$by_lang{$_} || []}) {
next if $done{$_}; $done{$_} = 1;
my $p = $packages->[0]{$_} or next;
- $p->{values} = [ map { $_ + 90 } @{$p->{values} || [ (0) x $nb_values ]} ];
+ $p->{values} = [ map { $_ + 90 } @{$p->{values} || [ (0) x @levels ]} ];
}
}
- $level;
+ return { map_index { $_ => $::i } @levels };
}
sub readCompssUsers {
my ($packages, $compss) = @_;
my (%compssUsers, @sorted, $l);
+ my %compss; m|(.*)/(.*)| && push @{$compss{$1}}, $2 foreach @$compss;
+ my $map = sub {
+ $l or return;
+ $_ = $packages->[0]{$_} or log::l("unknown package $1 (in compssUsers)") foreach @$l;
+ };
my $f = install_any::getFile("compssUsers") or die "can't find compssUsers";
foreach (<$f>) {
/^\s*$/ || /^#/ and next;
s/#.*//;
if (/^(\S.*)/) {
+ &$map;
push @sorted, $1;
$compssUsers{$1} = $l = [];
} elsif (/\s+\+(\S+)/) {
- push @$l, $packages->[0]{$1} || do { log::l("unknown package $1 (in compssUsers)"); next };
+ push @$l, $1;
} elsif (/\s+(\S+)/) {
- my $p = $compss;
- $p &&= $p->{childs}{$_} foreach split ':', $1;
- $p or log::l("unknown category $1 (in compssUsers)"), next;
- push @$l, @{ category2packages($p) };
+ s|:|/|g; /\s+(\S+)/;
+ push @$l, @{$compss{$1} || log::l("unknown category $1 (in compssUsers)") && []};
}
}
+ &$map;
\%compssUsers, \@sorted;
}
@@ -438,13 +424,10 @@ sub readCompssUsers {
sub setSelectedFromCompssList {
my ($compssListLevels, $packages, $min_level, $max_size, $install_class) = @_;
- my ($ind);
+ my $ind = $compssListLevels->{$install_class} or log::l("unknown install class $install_class in compssList"), return;
my @packages = allPackages($packages);
my @places = do {
- map_index { $ind = $::i if $_ eq $install_class } @$compssListLevels;
- defined $ind or log::l("unknown install class $install_class in compssList"), return;
-
#- special case for /^k/ aka kde stuff
my @values = map { $_->{values}[$ind] + (packageFlagUnskip($_) && packageName($_) !~ /^k/ ? 10 : 0) } @packages;
sort { $values[$b] <=> $values[$a] } 0 .. $#packages;
diff --git a/perl-install/share/compssList b/perl-install/share/compssList
index c4f9f5299..c8ea95197 100644
--- a/perl-install/share/compssList
+++ b/perl-install/share/compssList
@@ -1,7 +1,5 @@
normal server developer
-packages
-
AfterStep 55 0 53
AnotherLevel 25 0 27
BasiliskII 35 0 10
@@ -995,250 +993,3 @@ zip 70 65 87
zlib 16 60 94
zlib-devel 10 0 72
zsh 20 50 72
-
-categories
-
-administration:rpm:console 90 70 80
-administration:rpm:x11 80 0 80
-administration:system:console 40 0 80
-administration:utilities:console 90 75 80
-administration:utilities:x11 80 0 80
-amusement:console 40 0 80
-amusement:x11 80 0 80
-archiving:console 45 76 80
-archiving:x11 80 0 80
-base 0 0 80
-cd-burning:console 45 0 80
-cd-burning:x11 50 0 80
-communications:modem:console 48 79 80
-communications:modem:x11 80 58 80
-communications:pilot:console 40 35 80
-communications:pilot:x11 55 0 80
-compression:console 48 35 30
-compression:x11 58 50 55
-configuration:kernel:console 40 70 70
-configuration:kernel:x11 50 50 70
-configuration:keyboard:console 45 30 55
-configuration:identification:console 45 79 80
-configuration:identification:x11 80 1 10
-configuration:libs:x11 50 50 55
-configuration:mail:console 40 78 55
-configuration:network:firewall:console 45 79 80
-configuration:network:firewall:x11 22 59 20
-configuration:network:ftp:x11 55 59 72
-configuration:network:http:x11 20 59 40
-configuration:network:mail:console 40 75 70
-configuration:network:mail:x11 50 59 10
-configuration:power:x11 50 50 55
-configuration:time:console 45 75 80
-configuration:time:x11 50 50 20
-configuration:sound:console 42 30 50
-configuration:system:console 90 30 10
-configuration:system:x11 20 57 40
-configuration:xfree:console 50 55 70
-configuration:xfree:x11 50 68 10
-daemons:administartion 0 70 10
-daemons:console 0 0 30
-daemons:database 0 0 72
-daemons:disk 0 0 40
-daemons:kernel 0 0 30
-daemons:network:base 0 0 80
-daemons:network:corba 0 0 70
-daemons:network:dhcp 0 0 55
-daemons:network:ftp 0 0 55
-daemons:network:http 0 0 55
-daemons:network:mail 0 0 10
-daemons:network:midnight_commander 0 0 30
-daemons:network:name_server 0 0 20
-daemons:network:netware 0 0 50
-daemons:network:nfs 0 0 50
-daemons:network:nis 0 0 10
-daemons:network:routing 0 0 55
-daemons:network:samba 0 0 10
-daemons:network:snmp 0 0 50
-daemons:network:slip 0 0 00
-daemons:network:telnet 0 0 00
-daemons:network:uucp 0 0 00
-daemons:network:usenet 0 0 00
-daemons:network:vnc 0 0 00
-daemons:power 0 0 00
-daemons:print 0 0 00
-daemons:security 0 0 00
-daemons:sound 0 0 00
-daemons:time 0 0 00
-daemons:xfree86 0 0 00
-database 20 80 00
-developpment:debuggers:console 11 0 80
-developpment:debuggers:x11 10 20 80
-developpment:libs:cdrecord 11 0 80
-developpment:libs:compression 11 0 80
-developpment:libs:database 11 0 80
-developpment:libs:fonts 11 0 80
-developpment:libs:gnome 11 0 80
-developpment:libs:graphics 11 0 80
-developpment:libs:gtk 11 0 80
-developpment:libs:filesystems 11 0 80
-developpment:libs:kde 11 0 80
-developpment:libs:language 11 20 80
-developpment:libs:misc 11 0 80
-developpment:libs:mouse 11 0 80
-developpment:libs:network 11 0 80
-developpment:libs:qt 11 0 80
-developpment:libs:sound 11 0 80
-developpment:libs:user-interface 11 0 80
-developpment:language 11 0 80
-developpment:tools:console 11 0 80
-developpment:tools:x11 11 0 80
-disks 0 70 70
-documentation:languages:chinese 90 30 80
-documentation:languages:croatian 90 30 80
-documentation:languages:czech 90 30 80
-documentation:languages:en 90 30 80
-documentation:languages:french 90 30 80
-documentation:languages:german 90 30 80
-documentation:languages:greek 90 30 80
-documentation:languages:indonesian 90 30 80
-documentation:languages:italian 90 30 80
-documentation:languages:japanese 90 30 80
-documentation:languages:korean 90 30 80
-documentation:languages:polish 90 30 80
-documentation:languages:russian 90 30 80
-documentation:languages:serbian 90 30 80
-documentation:languages:slovenian 90 30 80
-documentation:languages:spanish 90 30 80
-documentation:languages:swedish 90 30 80
-documentation:languages:turkish 90 30 80
-documentation:misc 90 39 80
-documentation:tools:console 90 70 72
-documentation:tools:x11 80 50 50
-editors:console 42 75 72
-editors:x11 50 55 72
-emulators:console 40 2 50
-emulators 50 2 50
-filemanagers:console 40 75 72
-filemanagers:x11 59 0 70
-files:console 0 70 10
-files:x11 59 55 50
-finances 0 0 00
-games:console 40 1 40
-games:x11 50 1 55
-gnome 69 32 40
-identification:x11 80 55 30
-info:console 40 75 80
-info:x11 51 52 80
-kde:administration:utilities 70 75 81
-kde:administration:rpm 70 75 81
-kde:amusement 70 70 81
-kde:base 0 0 0
-kde:cd-burning 70 74 81
-kde:communications:fax 70 77 81
-kde:communications:modem 70 77 81
-kde:communications:pilot 70 77 81
-kde:configuration:network 70 78 81
-kde:configuration:power 70 76 81
-kde:configuration:time 70 76 81
-kde:configuration:system 70 75 81
-kde:deloppment:tools 30 20 54
-kde:filemanagers 70 73 81
-kde:games 70 70 81
-kde:identification 70 78 81
-kde:monitoring 70 78 81
-kde:monitoring:cpu 70 78 81
-kde:monitoring:disks 70 78 81
-kde:monitoring:mail 70 78 81
-kde:monitoring:network 70 78 81
-kde:monitoring:memory 70 78 81
-kde:multimedia:graphics 70 75 81
-kde:multimedia:image-viewer 70 76 81
-kde:multimedia:sound 70 75 81
-kde:multimedia:video 70 75 81
-kde:network 70 79 81
-kde:office 70 75 81
-kde:science 70 72 81
-kde:themes 70 72 81
-kde:utilities 70 78 81
-kernel 0 19 80
-libs:application 10 20 80
-libs:compression 10 20 80
-libs:database 10 20 80
-libs:fonts:console 10 20 80
-libs:fonts:x11 10 20 80
-libs:gnome 10 20 80
-libs:graphics 10 20 80
-libs:gtk 10 20 80
-libs:kde 10 20 80
-libs:math 10 20 80
-libs:misc:console 10 20 80
-libs:misc:x11 10 20 80
-libs:network 10 20 80
-libs:qt 10 20 80
-libs:sound 10 20 80
-libs:user_interface 10 20 80
-misc:console 40 75 72
-monitoring:cpu:x11 50 56 80
-monitoring:disks:x11 50 56 80
-monitoring:misc:console 12 79 80
-monitoring:misc:x11 50 56 80
-monitoring:memory:console 12 79 80
-monitoring:memory:x11 50 56 80
-monitoring:network:console 12 79 80
-monitoring:network:x11 50 59 80
-monitoring:power:x11 50 55 80
-multimedia:graphic:acquisition 55 32 70
-multimedia:graphic:console 45 32 70
-multimedia:graphic:image-viewer 80 30 72
-multimedia:graphic:x11 80 50 72
-multimedia:sound:players:console 45 30 70
-multimedia:sound:players:x11 80 30 70
-multimedia:sounds:sounds 80 30 55
-multimedia:video 80 30 55
-network:ftp:console 90 70 70
-network:ftp:x11 55 55 70
-network:irc&co:console 45 70 70
-network:irc&co:x11 55 55 70
-network:mail:console 40 74 72
-network:mail:x11 55 55 72
-network:misc:console 41 74 72
-network:misc:x11 50 55 72
-network:netware:console 20 74 72
-network:nfs:console 40 74 72
-network:nis:console 40 74 72
-network:tools:console 40 74 72
-network:tools:x11 50 55 72
-network:usenet:console 40 74 72
-network:usenet:x11 55 55 72
-network:web:console 41 74 72
-network:web:x11 80 56 80
-office:dictionary:console 45 30 72
-office:textviewer:x11 55 50 72
-office:word_processor:console 45 30 72
-office:word_processor:x11 80 50 72
-print:console 45 76 55
-print:x11 80 50 70
-productivity:console 45 32 50
-productivity:x11 80 0 72
-science:chemistry:x11 55 0 72
-science:math:console 40 0 72
-science:math:x11 55 0 72
-science:meteo:console 45 0 72
-science:meteo:x11 55 0 72
-shells 0 78 80
-terminal:console 49 79 80
-terminal:x11 80 30 72
-text:console 40 74 80
-text:x11 55 59 80
-time:console 45 70 80
-time:x11 80 30 80
-translations 90 35 80
-updates:console 0 38 80
-updates:x11 80 0 80
-utilities:console:kernel 0 74 80
-utilities:console:misc 42 73 72
-utilities:x11:misc 55 0 72
-window-managers:configuration:console 80 30 70
-window-managers:configuration:x11 85 0 80
-window-managers:themes 80 0 80
-window-managers:window-managers 85 0 80
-xfree86:backgrounds 80 30 80
-xfree86:base 0 0 00
-xfree86:fonts 0 0 00