summaryrefslogtreecommitdiffstats
path: root/perl-install
diff options
context:
space:
mode:
authorFrancois Pons <fpons@mandriva.com>2000-01-24 13:11:27 +0000
committerFrancois Pons <fpons@mandriva.com>2000-01-24 13:11:27 +0000
commitfe0e92f4e338bd3ab690e409ff9ccde6cfe58780 (patch)
tree90162d89089414633e30308971a9e715f1b1363c /perl-install
parent9e683c898b6592aaac1196f76dd9321c4426c912 (diff)
downloaddrakx-backup-do-not-use-fe0e92f4e338bd3ab690e409ff9ccde6cfe58780.tar
drakx-backup-do-not-use-fe0e92f4e338bd3ab690e409ff9ccde6cfe58780.tar.gz
drakx-backup-do-not-use-fe0e92f4e338bd3ab690e409ff9ccde6cfe58780.tar.bz2
drakx-backup-do-not-use-fe0e92f4e338bd3ab690e409ff9ccde6cfe58780.tar.xz
drakx-backup-do-not-use-fe0e92f4e338bd3ab690e409ff9ccde6cfe58780.zip
first sparc release of DrakX.
Diffstat (limited to 'perl-install')
-rw-r--r--perl-install/Makefile16
-rw-r--r--perl-install/Xconfigurator_consts.pm40
-rw-r--r--perl-install/fs.pm20
-rw-r--r--perl-install/fsedit.pm6
-rw-r--r--perl-install/install2.pm9
-rw-r--r--perl-install/install_steps.pm40
-rw-r--r--perl-install/install_steps_gtk.pm23
-rw-r--r--perl-install/install_steps_interactive.pm134
-rw-r--r--perl-install/keyboard.pm20
-rw-r--r--perl-install/list.sparc73
-rw-r--r--perl-install/modules.pm76
-rw-r--r--perl-install/mouse.pm36
-rw-r--r--perl-install/partition_table.pm41
-rw-r--r--perl-install/partition_table_bsd.pm19
-rw-r--r--perl-install/partition_table_dos.pm20
-rw-r--r--perl-install/partition_table_raw.pm5
-rw-r--r--perl-install/partition_table_sun.pm119
-rw-r--r--perl-install/share/list66
-rw-r--r--perl-install/share/list.sparc73
19 files changed, 683 insertions, 153 deletions
diff --git a/perl-install/Makefile b/perl-install/Makefile
index 230d61fec..e0eaf3fdc 100644
--- a/perl-install/Makefile
+++ b/perl-install/Makefile
@@ -55,8 +55,9 @@ install_pms: $(DIRS)
get_needed_files: $(DIRS)
# export PERL_INSTALL_TEST=1 ; strace -f -e trace=file -o '| grep -v "(No such file or directory)" | sed -e "s/[^\"]*\"//" -e "s/\".*//" | grep "^/" | grep -v -e "^/tmp" -e "^/home" -e "^/proc" -e "^/var" -e "^/dev" -e "^/etc" -e "^/usr/lib/rpm" > /tmp/list ' $(PERL) -d install2 < /dev/null
- cp -f list /tmp/list
- perl -pi -e "s/ARCH/$(ARCH)/" /tmp/list
+ cp -f `../tools/specific_arch list` /tmp/list
+# cp -f list /tmp/list
+# perl -pi -e "s/ARCH/$(ARCH)/" /tmp/list
find auto -follow -name "*.so" >> /tmp/list
for i in $(LOCALFILES) `cat /tmp/list` ; do \
@@ -75,6 +76,13 @@ get_needed_files: $(DIRS)
install -d $(ROOTDEST)/Mandrake/base
install -s $(LOCALFILES) $(DEST)/usr/bin
# cp -f $(LOCALFILES2) $(DEST)/usr/bin
+ifeq (sparc,$(ARCH))
+ cp -a /usr/X11R6/lib/X11/xkb $(DEST)/usr/X11R6/lib/X11
+ rm -f $(DEST)/usr/X11R6/lib/X11/xkb/compiled
+ ln -s /tmp $(DEST)/usr/X11R6/lib/X11/xkb/compiled
+ ln -s /usr/X11R6/lib/X11 $(DEST)/usr/lib/X11
+ ln -s /usr/X11R6/lib/X11/xkb/xkbcomp $(DEST)/usr/bin/xkbcomp
+endif
for i in `cat /tmp/list`; do \
if (echo $$i | grep -q "lib/[^/]*\.so"); then \
@@ -101,7 +109,7 @@ get_needed_files: $(DIRS)
perl -ane 'symlink "$$F[1]", "$(DEST)/usr/bin/$$F[0]"' aliases
- tar xfy locales.tar.bz2 -C $(DEST)
+ tar xfy `../tools/specific_arch locales.tar.bz2` -C $(DEST)
# DEST=$(DEST) perl -I. -MForMakefile -e 'locale()'
# DEST=$(DEST) perl -I. -MForMakefile -e 'xmodmap()'
@@ -128,7 +136,7 @@ get_needed_files: $(DIRS)
tar xyC $(DEST) -f ../install/install1_pcmcia.tar.bz2 ./etc/pcmcia
full_stage2:
- sudo rm -rf $(DEST)
+ rm -rf $(DEST)
mkdir -p $(DEST)
$(MAKE) get_needed_files
$(MAKE) stage2
diff --git a/perl-install/Xconfigurator_consts.pm b/perl-install/Xconfigurator_consts.pm
index 4cb0d8730..11fee769d 100644
--- a/perl-install/Xconfigurator_consts.pm
+++ b/perl-install/Xconfigurator_consts.pm
@@ -540,6 +540,45 @@ $keyboardsection_part2 = '
# XkbDisable
';
+if (arch() =~ /^sparc/) {
+ $keyboardsection_part3 = '
+# To customise the XKB settings to suit your keyboard, modify the
+# lines below (which are the defaults). For example:
+# XkbModel "type6"
+# If you have a SUN keyboard, you may use:
+# XkbModel "sun"
+#
+# Then to change the language, change the Layout setting.
+# For example, a german layout can be obtained with:
+# XkbLayout "de"
+# or:
+# XkbLayout "de"
+# XkbVariant "nodeadkeys"
+#
+# If you\'d like to switch the positions of your capslock and
+# control keys, use:
+# XkbOptions "ctrl:swapcaps"
+
+# These are the default XKB settings for XFree86 on SUN:
+# XkbRules "sun"
+# XkbModel "type5_unix"
+# XkbLayout "us"
+# XkbCompat "compat/complete"
+# XkbTypes "types/complete"
+# XkbKeycodes "sun(type5)"
+# XkbGeometry "sun(type5)"
+# XkbSymbols "sun/us(sun5)"
+
+ XkbRules "sun"
+ XkbModel "sun"
+ XkbLayout "us"
+ XkbCompat "compat/complete"
+ XkbTypes "types/complete"
+ XkbKeycodes "sun(type5)"
+ XkbGeometry "sun(type5)"
+ XkbSymbols "sun/us(sun5)"
+';
+} else {
$keyboardsection_part3 = '
# To customise the XKB settings to suit your keyboard, modify the
# lines below (which are the defaults). For example, for a non-U.S.
@@ -574,6 +613,7 @@ $keyboardsection_part3 = '
XkbRules "xfree86"
XkbModel "pc101"
';
+}
$keyboardsection_end = '
EndSection
diff --git a/perl-install/fs.pm b/perl-install/fs.pm
index f2f3a48de..3920de74b 100644
--- a/perl-install/fs.pm
+++ b/perl-install/fs.pm
@@ -144,11 +144,13 @@ sub mount_part($;$$) {
$part->{isMounted} and return;
- if (isSwap($part)) {
- swap::swapon($part->{device});
- } else {
- $part->{mntpoint} or die "missing mount point";
- mount(devices::make($part->{device}), ($prefix || '') . $part->{mntpoint}, type2fs($part->{type}), $rdonly);
+ unless ($::testing) {
+ if (isSwap($part)) {
+ swap::swapon($part->{device});
+ } else {
+ $part->{mntpoint} or die "missing mount point";
+ mount(devices::make($part->{device}), ($prefix || '') . $part->{mntpoint}, type2fs($part->{type}), $rdonly);
+ }
}
$part->{isMounted} = $part->{isFormatted} = 1; #- assume that if mount works, partition is formatted
}
@@ -158,9 +160,11 @@ sub umount_part($;$) {
$part->{isMounted} or return;
- isSwap($part) ?
- swap::swapoff($part->{device}) :
- umount(($prefix || '') . ($part->{mntpoint} || devices::make($part->{device})));
+ unless ($::testing) {
+ isSwap($part) ?
+ swap::swapoff($part->{device}) :
+ umount(($prefix || '') . ($part->{mntpoint} || devices::make($part->{device})));
+ }
$part->{isMounted} = 0;
}
diff --git a/perl-install/fsedit.pm b/perl-install/fsedit.pm
index 5bcabddeb..57f29e8cc 100644
--- a/perl-install/fsedit.pm
+++ b/perl-install/fsedit.pm
@@ -84,10 +84,16 @@ sub readProcPartitions {
@parts;
}
+#- get all normal partition including special ones as found on sparc.
sub get_fstab(@) {
map { partition_table::get_normal_parts($_) } @_;
}
+#- get normal partition that should be visible for working on.
+sub get_visible_fstab(@) {
+ grep { $_ && !partition_table::isWholedisk($_) } get_fstab(@_);
+}
+
sub free_space(@) {
sum map { $_->{size} } map { partition_table::get_holes($_) } @_;
}
diff --git a/perl-install/install2.pm b/perl-install/install2.pm
index f6ca92a64..80535764a 100644
--- a/perl-install/install2.pm
+++ b/perl-install/install2.pm
@@ -121,7 +121,7 @@ $o = $::o = {
autoSCSI => 0,
mkbootdisk => 1, #- no mkbootdisk if 0 or undef, find a floppy with 1, or fd1
#- packages => [ qw() ],
- partitioning => { clearall => 0, eraseBadPartitions => 0, auto_allocate => 0, autoformat => 0 }, #- , readonly => 0
+ partitioning => { clearall => 0, eraseBadPartitions => 0, auto_allocate => 0, autoformat => 0 }, #-, readonly => 0 },
#- security => 2,
partitions => [
{ mntpoint => "/boot", size => 10 << 11, type => 0x83, maxsize => 30 << 11 },
@@ -189,9 +189,10 @@ $o = $::o = {
#- display => "192.168.1.19:1",
steps => \%installSteps,
orderedSteps => \@orderedInstallSteps,
- base => [ qw(basesystem sed initscripts console-tools utempter ldconfig chkconfig ntsysv setup filesystem SysVinit bdflush crontabs dev e2fsprogs etcskel fileutils findutils getty_ps grep gzip hdparm info initscripts isapnptools kernel less ldconfig logrotate losetup man mingetty modutils mount net-tools passwd procmail procps psmisc mandrake-release rootfiles rpm sash ash setserial shadow-utils sh-utils stat sysklogd tar termcap textutils time tmpwatch util-linux vim-minimal vixie-cron which perl-base msec) ],
- base_i386 => [ "lilo", "mkbootdisk" ],
- base_alpha => [ "aboot" ],
+ base => [ qw(basesystem sed initscripts console-tools utempter ldconfig chkconfig ntsysv setup filesystem SysVinit bdflush crontabs dev e2fsprogs etcskel fileutils findutils getty_ps grep gzip hdparm info initscripts kernel less ldconfig logrotate losetup man mingetty modutils mount net-tools passwd procmail procps psmisc mandrake-release rootfiles rpm sash ash setserial shadow-utils sh-utils stat sysklogd tar termcap textutils time tmpwatch util-linux vim-minimal vixie-cron which perl-base msec) ],
+ base_i386 => [ "lilo", "mkbootdisk", "isapnptools" ],
+ base_alpha => [ "aboot", "isapnptools" ],
+ base_sparc => [ "silo", "mkbootdisk" ],
#- for the list of fields available for user and superuser, see @etc_pass_fields in install_steps.pm
#- intf => [ { DEVICE => "eth0", IPADDR => '1.2.3.4', NETMASK => '255.255.255.128' } ],
diff --git a/perl-install/install_steps.pm b/perl-install/install_steps.pm
index f39b3fb0b..f868bfeae 100644
--- a/perl-install/install_steps.pm
+++ b/perl-install/install_steps.pm
@@ -564,17 +564,29 @@ sub createBootdisk($) {
return if $::testing;
- require lilo;
- lilo::mkbootdisk($o->{prefix}, install_any::kernelVersion(), $dev, $o->{bootloader}{perImageAppend});
- $o->{mkbootdisk} = $dev;
+ if (arch() =~ /^sparc/) {
+ require silo;
+ silo::mkbootdisk($o->{prefix}, install_any::kernelVersion(), $dev, $o->{bootloader}{perImageAppend});
+ $o->{mkbootdisk} = $dev;
+ } else {
+ require lilo;
+ lilo::mkbootdisk($o->{prefix}, install_any::kernelVersion(), $dev, $o->{bootloader}{perImageAppend});
+ $o->{mkbootdisk} = $dev;
+ }
}
#------------------------------------------------------------------------------
sub readBootloaderConfigBeforeInstall {
my ($o) = @_;
my ($image, $v);
- require lilo;
- add2hash($o->{bootloader} ||= {}, lilo::read($o->{prefix}, "/etc/lilo.conf"));
+
+ if (arch() =~ /^sparc/) {
+ require silo;
+ add2hash($o->{bootloader} ||= {}, silo::read($o->{prefix}, "/etc/silo.conf"));
+ } else {
+ require lilo;
+ add2hash($o->{bootloader} ||= {}, lilo::read($o->{prefix}, "/etc/lilo.conf"));
+ }
#- since kernel or kernel-smp may not be upgraded, it should be checked
#- if there is a need to update existing lilo.conf entries by using that
@@ -602,15 +614,25 @@ sub readBootloaderConfigBeforeInstall {
sub setupBootloaderBefore {
my ($o) = @_;
- require lilo;
- lilo::suggest($o->{prefix}, $o->{bootloader}, $o->{hds}, $o->{fstab}, install_any::kernelVersion());
- $o->{bootloader}{keytable} ||= keyboard::keyboard2kmap($o->{keyboard});
+ if (arch() =~ /^sparc/) {
+ require silo;
+ silo::suggest($o->{prefix}, $o->{bootloader}, $o->{hds}, $o->{fstab}, install_any::kernelVersion());
+ } else {
+ require lilo;
+ lilo::suggest($o->{prefix}, $o->{bootloader}, $o->{hds}, $o->{fstab}, install_any::kernelVersion());
+ $o->{bootloader}{keytable} ||= keyboard::keyboard2kmap($o->{keyboard});
+ }
}
sub setupBootloader($) {
my ($o) = @_;
return if $::g_auto_install;
- lilo::install($o->{prefix}, $o->{bootloader});
+
+ if (arch() =~ /^sparc/) {
+ silo::install($o->{prefix}, $o->{bootloader});
+ } else {
+ lilo::install($o->{prefix}, $o->{bootloader});
+ }
}
#------------------------------------------------------------------------------
diff --git a/perl-install/install_steps_gtk.pm b/perl-install/install_steps_gtk.pm
index ce374c433..4ad02d116 100644
--- a/perl-install/install_steps_gtk.pm
+++ b/perl-install/install_steps_gtk.pm
@@ -181,7 +181,7 @@ sub new($$) {
my $ok = 1;
local $SIG{CHLD} = sub { $ok = 0 };
unless (fork) {
- exec $_[0], "-kb", "-dpms","-s" ,"240", "-allowMouseOpenFail", "-xf86config", $f or exit 1;
+ exec $_[0], (arch() =~ /^sparc/ ? () : ("-kb")), "-dpms","-s" ,"240", "-allowMouseOpenFail", "-xf86config", $f or exit 1;
}
foreach (1..15) {
sleep 1;
@@ -192,6 +192,7 @@ sub new($$) {
};
my @servers = qw(FBDev VGA16);
@servers = qw(FBDev 3DLabs TGA) if arch() eq "alpha";
+ @servers = qw(Mach64) if arch() =~ /^sparc/;
foreach (@servers) {
log::l("Trying with server $_");
@@ -221,6 +222,8 @@ sub new($$) {
install_theme($o);
create_logo_window($o);
+# eval { sleep 10; run_command::run('xhost+') }; #- for testing
+
$my_gtk::force_center = [ $width - $windowwidth, $logoheight, $windowwidth, $windowheight ];
(bless {}, ref $type || $type)->SUPER::new($o);
@@ -802,7 +805,7 @@ END
local *F;
open F, ">$file" or die "can't create X configuration file $file";
- print F <<END;
+ print F <<END_KEYB;
Section "Files"
FontPath "/usr/X11R6/lib/X11/fonts:unscaled,/usr/X11R6/lib/X11/fonts"
EndSection
@@ -815,6 +818,22 @@ Section "Keyboard"
RightAlt Meta
ScrollLock Compose
RightCtl Control
+END_KEYB
+
+ if (arch() =~ /^sparc/) {
+ print F <<END_KEYB_SPARC;
+ XkbRules "sun"
+ XkbModel "sun"
+ XkbLayout "us"
+ XkbCompat "compat/complete"
+ XkbTypes "types/complete"
+ XkbKeycodes "sun(type5)"
+ XkbGeometry "sun(type5)"
+ XkbSymbols "sun/us(sun5)"
+END_KEYB_SPARC
+ }
+
+ print F <<END;
EndSection
Section "Pointer"
diff --git a/perl-install/install_steps_interactive.pm b/perl-install/install_steps_interactive.pm
index be0c64839..075fe4252 100644
--- a/perl-install/install_steps_interactive.pm
+++ b/perl-install/install_steps_interactive.pm
@@ -686,14 +686,7 @@ failures. Would you like to create a bootdisk for your system?"),
}
#------------------------------------------------------------------------------
-sub setupBootloaderBefore {
- my ($o) = @_;
- my $w = $o->wait_message('', _("Preparing bootloader"));
- $o->SUPER::setupBootloaderBefore($o);
-}
-
-#------------------------------------------------------------------------------
-sub setupBootloader {
+sub setupLILO {
my ($o, $more) = @_;
my $b = $o->{bootloader};
@@ -822,6 +815,131 @@ _("Default") => { val => \$default, type => 'bool' },
}
#------------------------------------------------------------------------------
+sub setupSILO {
+ my ($o, $more) = @_;
+ my $b = $o->{bootloader};
+
+ #- assume this default parameters.
+ $b->{root} = "/dev/" . fsedit::get_root($o->{fstab})->{device};
+ $b->{partition} = ($b->{root} =~ /\D*(\d*)/)[0] || '1';
+
+ if ($::beginner && $more == 1) {
+ #- nothing more to do here.
+ } elsif ($more || !$::beginner) {
+ $o->set_help("setupBootloaderGeneral");
+
+ $::expert and $o->ask_yesorno('', _("Do you want to use SILO?"), 1) || return;
+
+ my @l = (
+_("Delay before booting default image") => \$b->{timeout},
+$o->{security} < 4 ? () : (
+_("Password") => { val => \$b->{password}, hidden => 1 },
+_("Password (again)") => { val => \$b->{password2}, hidden => 1 },
+_("Restrict command line options") => { val => \$b->{restricted}, type => "bool", text => _("restrict") },
+)
+ );
+
+ $o->ask_from_entries_refH('', _("SILO main options"), \@l,
+ complete => sub {
+#- $o->{security} > 4 && length($b->{password}) < 6 and $o->ask_warn('', _("At this level of security, a password (and a good one) in silo is requested")), return 1;
+ $b->{restricted} && !$b->{password} and $o->ask_warn('', _("Option ``Restrict command line options'' is of no use without a password")), return 1;
+ $b->{password} eq $b->{password2} or !$b->{restricted} or $o->ask_warn('', [ _("The passwords do not match"), _("Please try again") ]), return 1;
+ 0;
+ }
+ ) or return;
+ }
+
+ until ($::beginner && $more <= 1) {
+ $o->set_help('setupBootloaderAddEntry');
+ my $c = $o->ask_from_list_([''],
+_("Here are the following entries in SILO.
+You can add some more or change the existing ones."),
+ [ (sort @{[map_each { "$::b->{label} ($::a)" . ($b->{default} eq $::b->{label} && " *") } %{$b->{entries}}]}), __("Add"), __("Done") ],
+ );
+ $c eq "Done" and last;
+
+ my ($e, $name);
+
+ if ($c eq "Add") {
+ my @labels = map { $_->{label} } values %{$b->{entries}};
+ my $prefix;
+
+ $e = { type => 'image' };
+ $prefix = "linux";
+
+ $e->{label} = $prefix;
+ for (my $nb = 0; member($e->{label}, @labels); $nb++) { $e->{label} = "$prefix-$nb" }
+ } else {
+ ($name) = $c =~ /\((.*?)\)/;
+ $e = $b->{entries}{$name};
+ }
+ my $old_name = $name;
+ my %old_e = %$e;
+ my $default = my $old_default = $e->{label} eq $b->{default};
+
+ my @l;
+ if ($e->{type} eq "image") {
+ @l = (
+_("Image") => { val => \$name, list => [ eval { glob_("/boot/vmlinuz*") } ] },
+_("Partition") => { val => \$e->{partition}, list => [ map { ("/dev/$_->{device}" =~ /\D*(\d*)/)[0] || 1} @{$o->{fstab}} ], not_edit => !$::expert },
+_("Root") => { val => \$e->{root}, list => [ map { "/dev/$_->{device}" } @{$o->{fstab}} ], not_edit => !$::expert },
+_("Append") => \$e->{append},
+_("Initrd") => { val => \$e->{initrd}, list => [ eval { glob_("/boot/initrd*") } ] },
+_("Read-write") => { val => \$e->{'read-write'}, type => 'bool' }
+ );
+ @l = @l[0..7] unless $::expert;
+ } else {
+ die "Other SILO entries not supported at the moment";
+ }
+ @l = (
+_("Label") => \$e->{label},
+@l,
+_("Default") => { val => \$default, type => 'bool' },
+ );
+
+ if ($o->ask_from_entries_refH($c eq "Add" ? '' : ['', _("Ok"), _("Remove entry")],
+ '', \@l,
+ complete => sub {
+ $e->{label} or $o->ask_warn('', _("Empty label not allowed")), return 1;
+ member($e->{label}, map { $_->{label} } grep { $_ != $e } values %{$b->{entries}}) and $o->ask_warn('', _("This label is already in use")), return 1;
+ $name ne $old_name && $b->{entries}{$name} and $o->ask_warn('', _("A entry %s already exists", $name)), return 1;
+ }
+ )) {
+ $b->{default} = $old_default || $default ? $default && $e->{label} : $b->{default};
+
+ delete $b->{entries}{$old_name};
+ $b->{entries}{$name} = $e;
+ } else {
+ delete $b->{entries}{$old_name};
+ }
+ }
+ eval { $o->SUPER::setupBootloader };
+ if ($@) {
+ $o->ask_warn('',
+ [ _("Installation of SILO failed. The following error occured:"),
+ grep { !/^Warning:/ } cat_("$o->{prefix}/tmp/.error") ]);
+ unlink "$o->{prefix}/tmp/.error";
+ die "already displayed";
+ }
+}
+
+#------------------------------------------------------------------------------
+sub setupBootloaderBefore {
+ my ($o) = @_;
+ my $w = $o->wait_message('', _("Preparing bootloader"));
+ $o->SUPER::setupBootloaderBefore($o);
+}
+
+#------------------------------------------------------------------------------
+sub setupBootloader {
+ if (arch() =~ /^sparc/) {
+ &setupSILO;
+ } else {
+ &setupLILO;
+ }
+}
+
+#------------------------------------------------------------------------------
sub miscellaneousNetwork {
my ($o, $clicked) = @_;
my $u = $o->{miscellaneous} ||= {};
diff --git a/perl-install/keyboard.pm b/perl-install/keyboard.pm
index 16fe92369..cb963c4d4 100644
--- a/perl-install/keyboard.pm
+++ b/perl-install/keyboard.pm
@@ -85,6 +85,19 @@ my %lang2keyboard =
#- key = extension for Xmodmap file, [0] = description of the keyboard,
#- [1] = name for loadkeys, [2] = name for XKB
my %keyboards = (
+arch() =~ /^sparc/ ? (
+ "cs" => [ __("Czech"), "sunt5-us-cz", "cs" ],
+ "de" => [ __("German"), "sunt5-de-latin1", "de" ],
+ "dvorak" => [ __("Dvorak"), "sundvorak", "dvorak" ],
+ "es" => [ __("Spanish"), "sunt5-es", "es" ],
+ "fi" => [ __("Finnish"), "sunt5-fi-latin1", "fi" ],
+ "fr" => [ __("French"), "sunt5-fr-latin1", "fr" ],
+ "no" => [ __("Norwegian"), "sunt4-no-latin1", "no" ],
+ "pl" => [ __("Polish"), "sun-pl-altgraph", "pl" ],
+ "ru" => [ __("Russian"), "sunt5-ru", "ru" ],
+ "uk" => [ __("UK keyboard"), "sunt5-uk", "us" ],
+ "us" => [ __("US keyboard"), "sunkeymap", "us" ],
+) : (
"am" => [ __("Armenian"), "am-armscii8", "am" ],
"be" => [ __("Belgian"), "be-latin1", "be" ],
"bg" => [ __("Bulgarian"), "bg", "bg" ],
@@ -130,6 +143,7 @@ my %keyboards = (
"us" => [ __("US keyboard"), "us", "us" ],
"us_intl" => [ __("US keyboard (international)"), "us-latin1", "us_intl" ],
"yu" => [ __("Yugoslavian (latin layout)"), "sr", "yu" ],
+),
);
#-######################################################################################
@@ -151,10 +165,12 @@ sub text2keyboard {
sub lang2keyboard($) {
local ($_) = @_;
- $lang2keyboard{$_} || $keyboards{$_} && $_ || "us"; #-substr($_, 0, 2);
+ my $kb = $lang2keyboard{$_} || $keyboards{$_} && $_ || "us";
+ $keyboards{$kb} ? $kb : "us"; #- handle incorrect keyboad mapping to us.
}
sub load($) {
+ return if arch() =~ /^sparc/;
my ($keymap) = @_;
my ($magic, @keymaps) = unpack "I i" . c::MAX_NR_KEYMAPS() . "a*", $keymap;
@@ -207,7 +223,7 @@ sub setup($) {
eval { load(<F>) };
}
my $f = xmodmap_file($keyboard);
- eval { run_program::run('xmodmap', $f) } unless $::testing || !$f;
+ #eval { run_program::run('xmodmap', $f) } unless $::testing || !$f;
}
sub write($$;$) {
diff --git a/perl-install/list.sparc b/perl-install/list.sparc
new file mode 100644
index 000000000..d35feefa2
--- /dev/null
+++ b/perl-install/list.sparc
@@ -0,0 +1,73 @@
+/bin/ash
+/bin/cpio
+/lib/libnss_nis.so.2
+/lib/libnss_files.so.2
+/lib/libnss_dns.so.2
+/lib/libresolv.so.2
+/etc/protocols
+/sbin/fdisk
+/sbin/ifport
+/sbin/insmod
+/sbin/mkraid
+/sbin/rmmod
+/sbin/mkdosfs
+/sbin/mke2fs
+/sbin/raidstart
+/usr/bin/bzip2
+/usr/bin/perl
+/usr/lib/libimlib-png.so
+/usr/lib/gtk/themes/engines/libpixmap.so
+/usr/lib/gtk/themes/engines/libpixmap.la
+/usr/lib/libimlib-png.so
+/usr/lib/perl5/5.00503/AutoLoader.pm
+/usr/lib/perl5/5.00503/Carp.pm
+/usr/lib/perl5/5.00503/Data/Dumper.pm
+/usr/lib/perl5/5.00503/Exporter.pm
+/usr/lib/perl5/5.00503/FileHandle.pm
+/usr/lib/perl5/5.00503/SelectSaver.pm
+/usr/lib/perl5/5.00503/SelfLoader.pm
+/usr/lib/perl5/5.00503/Symbol.pm
+/usr/lib/perl5/5.00503/Time/Local.pm
+/usr/lib/perl5/5.00503/dumpvar.pl
+/usr/lib/perl5/5.00503/sparc-linux/Config.pm
+/usr/lib/perl5/5.00503/sparc-linux/DynaLoader.pm
+/usr/lib/perl5/5.00503/sparc-linux/Fcntl.pm
+/usr/lib/perl5/5.00503/sparc-linux/auto/Fcntl/Fcntl.bs
+/usr/lib/perl5/5.00503/sparc-linux/auto/Fcntl/Fcntl.so
+/usr/lib/perl5/5.00503/sparc-linux/IO/File.pm
+/usr/lib/perl5/5.00503/sparc-linux/IO/Handle.pm
+/usr/lib/perl5/5.00503/sparc-linux/IO/Seekable.pm
+/usr/lib/perl5/5.00503/sparc-linux/IO/Socket.pm
+/usr/lib/perl5/5.00503/sparc-linux/Socket.pm
+/usr/lib/perl5/5.00503/sparc-linux/_h2ph_pre.ph
+/usr/lib/perl5/5.00503/sparc-linux/asm/unistd.ph
+/usr/lib/perl5/5.00503/sparc-linux/asm-sparc/unistd.ph
+/usr/lib/perl5/5.00503/sparc-linux/asm-sparc64/unistd.ph
+/usr/lib/perl5/5.00503/sparc-linux/auto/Data/Dumper/Dumper.bs
+/usr/lib/perl5/5.00503/sparc-linux/auto/Data/Dumper/Dumper.so
+/usr/lib/perl5/5.00503/sparc-linux/auto/IO/IO.so
+/usr/lib/perl5/5.00503/sparc-linux/auto/Socket/Socket.bs
+/usr/lib/perl5/5.00503/sparc-linux/auto/Socket/Socket.so
+/usr/lib/perl5/5.00503/sparc-linux/bits/syscall.ph
+/usr/lib/perl5/5.00503/sparc-linux/sys/syscall.ph
+/usr/lib/perl5/5.00503/sparc-linux/syscall.ph
+/usr/lib/perl5/5.00503/lib.pm
+/usr/lib/perl5/5.00503/overload.pm
+/usr/lib/perl5/5.00503/strict.pm
+/usr/lib/perl5/5.00503/vars.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/Gtk.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/Gtk/Types.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/Net/Cmd.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/Net/Config.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/Net/FTP.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/Net/FTP/A.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/Net/FTP/I.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/Net/FTP/dataconn.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/Net/Netrc.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/auto/Gtk/Gtk.bs
+/usr/lib/perl5/site_perl/5.005/sparc-linux/auto/Gtk/Gtk.so
+/usr/lib/rpm/rpmrc
+/usr/X11R6/bin/XF86_FBDev
+/usr/X11R6/bin/XF86_Mach64
+/usr/X11R6/bin/xmodmap
+/usr/X11R6/lib/modules/xf86Wacom.so
diff --git a/perl-install/modules.pm b/perl-install/modules.pm
index 4aa8a0693..4af311cc8 100644
--- a/perl-install/modules.pm
+++ b/perl-install/modules.pm
@@ -15,39 +15,43 @@ my %deps = ();
my @drivers_by_category = (
[ 'net', {
+arch() =~ /^sparc/ ? (
+ "myri_sbus" => "MyriCOM Gigabit Ethernet",
+ "sunbmac" => "Sun BigMac Ethernet",
+ "sunhme" => "Sun Happy Meal Ethernet",
+ "sunqe" => "Sun Quad Ethernet",
+) : (
"3c509" => "3com 3c509",
"3c501" => "3com 3c501",
"3c503" => "3com 3c503",
"3c505" => "3com 3c505",
"3c507" => "3com 3c507",
"3c515" => "3com 3c515",
- "3c59x" => "3com 3c59x (Vortex)",
- "3c59x" => "3com 3c90x (Boomerang)",
- "3c90x" => "3Com 3c90x (Cyclone/Hurricane/Tornado)",
+ "3c90x" => "3com 3c90x and 3c980",
"at1700" => "Allied Telesis AT1700",
"ac3200" => "Ansel Communication AC3200",
"acenic" => "AceNIC Gigabit Ethernet",
"pcnet32" => "AMD PC/Net 32",
"82596" => "Apricot 82596",
# "atp" => "ATP", # builtin the kernel
+ "e2100" => "Cabletron E2100",
+ "tlan" => "Compaq Netelligent",
"cs89x0" => "CS89x0",
- "de4x5" => "Digital 425,434,435,450,500",
+ "de600" => "D-Link DE-600 pocket adapter",
+ "de620" => "D-Link DE-620 pocket adapter",
+ "dgrs" => "Digi International RightSwitch",
"depca" => "Digital DEPCA and EtherWORKS",
- "e2100" => "Cabletron E2100",
"ewrk3" => "Digital EtherWORKS 3",
"old_tulip" => "Digital 21040/21041/21140 (old Tulip driver)",
"tulip" => "Digital 21040/21041/21140 (Tulip)",
- "de600" => "D-Link DE-600 pocket adapter",
- "de620" => "D-Link DE-620 pocket adapter",
- "dgrs" => "Digi International RightSwitch",
+ "eth16i" => "ICL EtherTeam 16i",
"epic100" => "EPIC 100",
+ "eexpress" => "Intel EtherExpress",
+ "eepro" => "Intel EtherExpress Pro",
+ "eepro100" => "Intel EtherExpress Pro 100", #- should run on sparc but no memory on floppy
"hp100" => "HP10/100VG any LAN ",
"hp" => "HP LAN/AnyLan",
"hp-plus" => "HP PCLAN/plus",
- "eth16i" => "ICL EtherTeam 16i",
- "eexpress" => "Intel EtherExpress",
- "eepro" => "Intel EtherExpress Pro",
- "eepro100" => "Intel EtherExpress Pro 100",
"lance" => "Lance",
"lne390" => "Mylex LNE390",
"ne" => "NE2000 and compatible",
@@ -56,24 +60,19 @@ my @drivers_by_category = (
"ni5010" => "NI 5010",
"ni52" => "NI 5210",
"ni65" => "NI 6510",
- "rtl8139" => "RealTek RTL8129/8139",
"es3210" => "Racal-Interlan ES3210",
-# "rcpci" => "RedCreek Virtual Private Network", # TODO
+ "rcpci45" => "RedCreek PCI45 LAN",
"epic100" => "SMC 83c170 EPIC/100",
"sktr" => "Syskonnect Token ring adaptor",
"smc9194" => "SMC 9000 series",
"smc-ultra" => "SMC Ultra",
"smc-ultra32" => "SMC Ultra 32",
-# "sunhme" => "Sun Happy Meal", # not there anymore?
- "tlan" => "Compaq Netelligent",
+ "yellowfin" => "Symbios Yellowfin G-NIC",
"via-rhine" => "VIA Rhine",
-# "wavelan" => "AT&T WaveLAN & DEC RoamAbout DS", # TODO
+# "wavelan" => "AT&T WaveLAN & DEC RoamAbout DS", # TODO is a "AT&T GIS WaveLAN ISA" ?
"wd" => "WD8003, WD8013 and compatible",
- "yellowfin" => "Symbios Yellowfin G-NIC",
- "8390" => "8390",
"dmfe" => "dmfe",
- "dummy" => "dummy",
"fmv18x" => "fmv18x",
"ibmtr" => "Token Ring Tropic",
"olympic" => "olympic",
@@ -82,15 +81,24 @@ my @drivers_by_category = (
"sb1000" => "sb1000",
"sbni" => "sbni",
"sis900" => "sis900",
+),
+ "3c59x" => "3com 3c59x (Vortex)",
+ "de4x5" => "Digital 425,434,435,450,500",
+ "rtl8139" => "RealTek RTL8129/8139",
+
+ "8390" => "8390",
+ "dummy" => "dummy",
"nfs" => "Network File System (nfs)",
"lockd" => "lockd",
"sunrpc" => "sunrpc",
}],
[ 'scsi', {
+arch() =~ /^sparc/ ? (
+ "qlogicpti" => "Performance Technologies ISP",
+) : (
"aha152x" => "Adaptec 152x",
"aha1542" => "Adaptec 1542",
"aha1740" => "Adaptec 1740",
- "aic7xxx" => "Adaptec 2740, 2840, 2940",
"advansys" => "AdvanSys Adapters",
"in2000" => "Always IN2000",
"AM53C974" => "AMD SCSI",
@@ -102,12 +110,8 @@ my @drivers_by_category = (
"g_NCR5380" => "NCR 5380",
"NCR53c406a" => "NCR 53c406a",
"53c7,8xx" => "NCR 53c7xx",
- "ncr53c8xx" => "NCR 53C8xx PCI",
-# "pci2000" => "Perceptive Solutions PCI-2000", # TODO
"qlogicfas" => "Qlogic FAS",
- "qlogicisp" => "Qlogic ISP",
"seagate" => "Seagate ST01/02",
- "sym53c8xx" => "Symbios 53c8xx",
"t128" => "Trantor T128/T128F/T228",
"u14-34f" => "UltraStor 14F/34F",
"ultrastor" => "UltraStor 14F/24F/34F",
@@ -121,8 +125,17 @@ my @drivers_by_category = (
"sim710" => "sim710",
"sym53c416" => "sym53c416",
"tmscsim" => "tmscsim",
+),
+ "aic7xxx" => "Adaptec 2740, 2840, 2940",
+ "ncr53c8xx" => "NCR 53C8xx PCI",
+# "pci2000" => "Perceptive Solutions PCI-2000", # TODO
+ "qlogicisp" => "Qlogic ISP",
+ "sym53c8xx" => "Symbios 53c8xx",
}],
[ 'disk', {
+arch() =~ /^sparc/ ? (
+ "pluto" => "Sun SparcSTORAGE Array SCSI", #- name it "fc4:soc:pluto" ?
+) : (
"DAC960" => "Mylex DAC960",
# "dpt" => "Distributed Tech SmartCache/Raid I-IV Controller", # not there anymore?
"megaraid" => "AMI MegaRAID",
@@ -134,8 +147,10 @@ my @drivers_by_category = (
"eata_dma" => "EATA DMA Adapters",
"ppa" => "Iomega PPA3 (parallel port Zip)",
"imm" => "Iomega Zip (new driver)",
+),
}],
[ 'cdrom', {
+arch() !~ /^sparc/ ? (
"sbpcd" => "SoundBlaster/Panasonic",
"aztcd" => "Aztech CD",
"gscd" => "Goldstar R420",
@@ -147,10 +162,12 @@ my @drivers_by_category = (
"sjcd" => "Sanyo",
"cdu31a" => "Sony CDU-31A",
"sonycd535" => "Sony CDU-5xx",
+) : (),
"isofs" => "iso9660",
"ide-cd" => "ide-cd",
}],
[ 'sound', {
+arch() !~ /^sparc/ ? (
"alsa" => "ALSA sound module, many sound cards",
"cmpci" => "C-Media Electronics CMI8338A CMI8338B CMI8738",
"es1370" => "Ensoniq ES1370 [AudioPCI]",
@@ -161,8 +178,10 @@ my @drivers_by_category = (
"pas16" => "Pro Audio Spectrum/Studio 16",
"via82cxxx" => "VIA VT82C686_5",
"sonicvibes" => "S3 SonicVibes",
+) : (),
}],
[ 'pcmcia', {
+arch() !~ /^sparc/ ? (
"ide_cs" => "ide_cs",
"fmvj18x_cs" => "fmvj18x_cs",
"fdomain_cs" => "fdomain_cs",
@@ -193,14 +212,18 @@ my @drivers_by_category = (
"sram_mtd" => "sram_mtd",
"tulip_cb" => "tulip_cb",
+) : (),
}],
[ 'pcmcia_everywhere', {
+arch() !~ /^sparc/ ? (
"pcmcia_core" => "PCMCIA core support",
"tcic" => "PCMCIA tcic controller",
"ds" => "PCMCIA card support",
"i82365" => "PCMCIA i82365 controller",
+) : (),
}],
[ 'paride', {
+arch() !~ /^sparc/ ? (
"aten" => "ATEN EH-100",
"bpck" => "Microsolutions backpack",
"comm" => "DataStor (older type) commuter adapter",
@@ -219,6 +242,7 @@ my @drivers_by_category = (
"pcd" => "Parallel port CD-ROM",
"pf" => "Parallel port ATAPI disk",
"paride" => "Main parallel port module",
+) : (),
}],
[ 'raid', {
"linear" => "linear",
@@ -227,6 +251,7 @@ my @drivers_by_category = (
"raid5" => "raid5",
}],
[ 'mouse', {
+arch() !~ /^sparc/ ? (
"busmouse" => "busmouse",
"msbusmouse" => "msbusmouse",
"serial" => "serial",
@@ -236,6 +261,7 @@ my @drivers_by_category = (
"usb-uhci", "USB (uhci)",
"usb-ohci", "USB (ohci)",
"usb-ohci-hcd", "USB (ohci-hcd)",
+) : (),
}],
[ 'fs', {
"smbfs" => "Windows SMB",
diff --git a/perl-install/mouse.pm b/perl-install/mouse.pm
index d884f8db5..cf21d68fb 100644
--- a/perl-install/mouse.pm
+++ b/perl-install/mouse.pm
@@ -17,21 +17,9 @@ use log;
my @mouses_fields = qw(nbuttons device MOUSETYPE XMOUSETYPE FULLNAME);
my @mouses = (
- [ 0, "none", "none", "Microsoft", __("No Mouse") ],
- [ 2, "ttyS", "pnp", "Auto", __("Microsoft Rev 2.1A or higher (serial)") ],
- [ 3, "ttyS", "logim", "MouseMan", __("Logitech CC Series (serial)") ],
- [ 5, "ttyS", "pnp", "IntelliMouse", __("Logitech MouseMan+/FirstMouse+ (serial)") ],
- [ 5, "ttyS", "ms3", "IntelliMouse", __("ASCII MieMouse (serial)") ],
- [ 5, "ttyS", "ms3", "IntelliMouse", __("Genius NetMouse (serial)") ],
- [ 5, "ttyS", "ms3", "IntelliMouse", __("Microsoft IntelliMouse (serial)") ],
- [ 2, "ttyS", "MMSeries", "MMSeries", __("MM Series (serial)") ],
- [ 2, "ttyS", "MMHitTab", "MMHittab", __("MM HitTablet (serial)") ],
- [ 3, "ttyS", "Logitech", "Logitech", __("Logitech Mouse (serial, old C7 type)") ],
- [ 3, "ttyS", "MouseMan", "MouseMan", __("Logitech MouseMan/FirstMouse (serial)") ],
- [ 2, "ttyS", "Microsoft", "Microsoft", __("Generic Mouse (serial)") ],
- [ 2, "ttyS", "Microsoft", "Microsoft", __("Microsoft compatible (serial)") ],
- [ 3, "ttyS", "Microsoft", "Microsoft", __("Generic 3 Button Mouse (serial)") ],
- [ 2, "ttyS", "MouseSystems", "MouseSystems", __("Mouse Systems (serial)") ],
+arch() =~ /^sparc/ ? (
+ [ 3, "sunmouse", "sun", "sun", __("Sun - Mouse") ],
+) : (
[ 2, "psaux", "ps/2", "PS/2", __("Generic Mouse (PS/2)") ],
[ 3, "psaux", "ps/2", "PS/2", __("Logitech MouseMan/FirstMouse (ps/2)") ],
[ 3, "psaux", "ps/2", "PS/2", __("Generic 3 Button Mouse (PS/2)") ],
@@ -48,6 +36,22 @@ my @mouses = (
[ 3, "logibm", "Busmouse", "BusMouse", __("Logitech Bus Mouse") ],
[ 2, "usbmouse", "ps/2", "PS/2", __("USB Mouse") ],
[ 3, "usbmouse", "ps/2", "PS/2", __("USB Mouse (3 buttons or more)") ],
+),
+ [ 0, "none", "none", "Microsoft", __("No Mouse") ],
+ [ 2, "ttyS", "pnp", "Auto", __("Microsoft Rev 2.1A or higher (serial)") ],
+ [ 3, "ttyS", "logim", "MouseMan", __("Logitech CC Series (serial)") ],
+ [ 5, "ttyS", "pnp", "IntelliMouse", __("Logitech MouseMan+/FirstMouse+ (serial)") ],
+ [ 5, "ttyS", "ms3", "IntelliMouse", __("ASCII MieMouse (serial)") ],
+ [ 5, "ttyS", "ms3", "IntelliMouse", __("Genius NetMouse (serial)") ],
+ [ 5, "ttyS", "ms3", "IntelliMouse", __("Microsoft IntelliMouse (serial)") ],
+ [ 2, "ttyS", "MMSeries", "MMSeries", __("MM Series (serial)") ],
+ [ 2, "ttyS", "MMHitTab", "MMHittab", __("MM HitTablet (serial)") ],
+ [ 3, "ttyS", "Logitech", "Logitech", __("Logitech Mouse (serial, old C7 type)") ],
+ [ 3, "ttyS", "MouseMan", "MouseMan", __("Logitech MouseMan/FirstMouse (serial)") ],
+ [ 2, "ttyS", "Microsoft", "Microsoft", __("Generic Mouse (serial)") ],
+ [ 2, "ttyS", "Microsoft", "Microsoft", __("Microsoft compatible (serial)") ],
+ [ 3, "ttyS", "Microsoft", "Microsoft", __("Generic 3 Button Mouse (serial)") ],
+ [ 2, "ttyS", "MouseSystems", "MouseSystems", __("Mouse Systems (serial)") ],
);
map_index {
my %l; @l{@mouses_fields} = @$_;
@@ -109,6 +113,8 @@ sub mouseconfig {
}
sub detect() {
+ return name2mouse("Sun - Mouse") if arch() =~ /^sparc/;
+
detect_devices::hasMousePS2 and return name2mouse("Generic Mouse (PS/2)");
eval { commands::modprobe("serial") };
diff --git a/perl-install/partition_table.pm b/perl-install/partition_table.pm
index c3e0da79e..f7e1d55ad 100644
--- a/perl-install/partition_table.pm
+++ b/perl-install/partition_table.pm
@@ -25,6 +25,16 @@ use Data::Dumper;
my %types = (
0x0 => 'Empty',
+arch() =~ /^sparc/ ? (
+ 0x1 => 'SunOS boot',
+ 0x2 => 'SunOS root',
+ 0x3 => 'SunOS swap',
+ 0x4 => 'SunOS usr',
+ 0x5 => 'Whole disk',
+ 0x6 => 'SunOS stand',
+ 0x7 => 'SunOS var',
+ 0x8 => 'SunOS home',
+) : (
0x1 => 'DOS 12-bit FAT',
0x2 => 'XENIX root',
0x3 => 'XENIX /usr',
@@ -33,6 +43,7 @@ my %types = (
0x6 => 'DOS FAT16',
0x7 => 'OS/2 IFS (e.g., HPFS) / Windows NT NTFS / Advanced Unix / QNX2.x pre-1988 (see below under IDs 4d-4f)',
0x8 => 'OS/2 (v1.0-1.3 only) / AIX boot partition / SplitDrive / Commodore DOS / DELL partition spanning multiple drives / QNX 1.x and 2.x ("qny")',
+),
0x9 => 'AIX data partition / Coherent filesystem / QNX 1.x and 2.x ("qnz")',
0xa => 'OS/2 Boot Manager / Coherent swap partition / OPUS',
0xb => 'Win98 FAT32',
@@ -140,11 +151,13 @@ my %types = (
);
my %type2fs = (
+arch() !~ /^sparc/ ? (
0x01 => 'vfat',
0x04 => 'vfat',
0x05 => 'ignore',
0x06 => 'vfat',
0x07 => 'hpfs',
+) : (),
0x0b => 'vfat',
0x0c => 'vfat',
0x0e => 'vfat',
@@ -171,7 +184,8 @@ sub name2type($) {
/0x(.*)/ ? hex $1 : $types_rev{$_} || $_;
}
-sub isExtended($) { $_[0]{type} == 5 || $_[0]{type} == 0xf || $_[0]{type} == 0x85 }
+sub isWholedisk($) { arch() =~ /^sparc/ && $_[0]{type} == 5 }
+sub isExtended($) { (arch() !~ /^sparc/ && $_[0]{type} == 5) || $_[0]{type} == 0xf || $_[0]{type} == 0x85 }
sub isRAID($) { $_[0]{type} == 0xfd }
sub isSwap($) { $type2fs{$_[0]{type}} eq 'swap' }
sub isExt2($) { $type2fs{$_[0]{type}} eq 'ext2' }
@@ -211,8 +225,10 @@ sub adjustEnd($$) {
$part->{size} = $end2 - $part->{start};
}
sub adjustStartAndEnd($$) {
- &adjustStart;
- &adjustEnd;
+ my ($hd, $part) = @_;
+
+ $hd->adjustStart($part);
+ $hd->adjustEnd($part);
}
sub verifyNotOverlap($$) {
@@ -225,9 +241,14 @@ sub verifyInside($$) {
}
sub verifyParts_ {
- foreach my $i (@_) { foreach (@_) {
- $i != $_ and verifyNotOverlap($i, $_) || cdie sprintf "partitions sector #$i->{start} (%dMB) and sector #$_->{start} (%dMB) are overlapping!", $i->{size} >> 9, $_->{size} >> 9;
- }}
+ foreach my $i (@_) {
+ foreach (@_) {
+ next if !$i || !$_ || $i == $_ || isWholedisk($i); #- avoid testing twice on whole disk for simplicity :-)
+ isWholedisk($_) ?
+ verifyInside($i, $_) || cdie sprintf "partitions sector #$i->{start} (%dMB) is not inside whole disk (%dMB)!", $i->{size} >> 9, $_->{size} >> 9:
+ verifyNotOverlap($i, $_) || cdie sprintf "partitions sector #$i->{start} (%dMB) and sector #$_->{start} (%dMB) are overlapping!", $i->{size} >> 9, $_->{size} >> 9;
+ }
+ }
}
sub verifyParts($) {
my ($hd) = @_;
@@ -235,7 +256,7 @@ sub verifyParts($) {
}
sub verifyPrimary($) {
my ($pt) = @_;
- $_->{start} > 0 || arch() eq "sparc" || die "partition must NOT start at sector 0" foreach @{$pt->{normal}};
+ $_->{start} > 0 || arch() =~ /^sparc/ || die "partition must NOT start at sector 0" foreach @{$pt->{normal}};
verifyParts_(@{$pt->{normal}}, $pt->{extended});
}
@@ -338,7 +359,6 @@ sub read_one($$) {
bless $hd, "partition_table_$_";
($pt, $info) = $hd->read($sector);
};
- print ">>> $@\n";
$@ or last;
}
@@ -416,7 +436,8 @@ sub write($) {
$_->{normal}{local_start} = $_->{normal}{start} - $_->{start};
$_->{extended} and $_->{extended}{local_start} = $_->{extended}{start} - $hd->{primary}{extended}{start};
- $hd->write($_->{start}, $_->{raw}) or die "writing of partition table failed";
+ print "Trying to write an extended partition table, bad !!!\n";
+ #$hd->write($_->{start}, $_->{raw}) or die "writing of partition table failed";
}
$hd->{isDirty} = 0;
@@ -535,7 +556,7 @@ sub add($$;$$) {
$part->{isFormatted} = 0;
$part->{rootDevice} = $hd->{device};
$hd->{isDirty} = $hd->{needKernelReread} = 1;
- $part->{start} ||= 1; #- starting at sector 0 is not allowed
+ $part->{start} ||= 1 if arch() !~ /^sparc/; #- starting at sector 0 is not allowed
adjustStartAndEnd($hd, $part) unless $forceNoAdjust;
my $e = $hd->{primary}{extended};
diff --git a/perl-install/partition_table_bsd.pm b/perl-install/partition_table_bsd.pm
index f3134f4fb..c0af9cf48 100644
--- a/perl-install/partition_table_bsd.pm
+++ b/perl-install/partition_table_bsd.pm
@@ -56,6 +56,14 @@ my $magic = 0x82564557;
my $nb_primary = 8;
my $offset = 0x40;
+#- use default partition table adust functions.
+sub adjustStart($$) {
+ &partition_table::adjustStart;
+}
+sub adjustEnd($$) {
+ &partition_table::adjustEnd;
+}
+
sub read($$) {
my ($hd, $sector) = @_;
my $tmp;
@@ -89,8 +97,15 @@ sub read($$) {
sub write($$$;$) {
my ($hd, $sector, $pt, $info) = @_;
- local *F; partition_table_raw::openit($hd, *F, 2) or die "error opening device $hd->{device} for writing";
- c::lseek_sector(fileno(F), $sector, $offset) or return 0;
+ #- handle testing for writing partition table on file only!
+ local *F;
+ if ($::testing) {
+ my $file = "/tmp/partition_table_$hd->{device}";
+ open F, ">$file" or die "error opening test file $file";
+ } else {
+ partition_table_raw::openit($hd, *F, 2) or die "error opening device $hd->{device} for writing";
+ c::lseek_sector(fileno(F), $sector, $offset) or return 0;
+ }
#- TODO compute checksum
diff --git a/perl-install/partition_table_dos.pm b/perl-install/partition_table_dos.pm
index 1b25a8f0b..624f13ecf 100644
--- a/perl-install/partition_table_dos.pm
+++ b/perl-install/partition_table_dos.pm
@@ -8,6 +8,7 @@ use vars qw(@ISA);
use common qw(:common :system :file);
use partition_table_raw;
+use partition_table;
use c;
my @fields = qw(active start_head start_sec start_cyl type end_head end_sec end_cyl start size);
@@ -42,6 +43,14 @@ sub sector2CHS($$) {
($start, $h, $s + 1);
}
+#- use default partition table adust functions.
+sub adjustStart($$) {
+ &partition_table::adjustStart;
+}
+sub adjustEnd($$) {
+ &partition_table::adjustEnd;
+}
+
sub read($$) {
my ($hd, $sector) = @_;
my $tmp;
@@ -67,8 +76,15 @@ sub read($$) {
sub write($$$;$) {
my ($hd, $sector, $pt) = @_;
- local *F; partition_table_raw::openit($hd, *F, 2) or die "error opening device $hd->{device} for writing";
- c::lseek_sector(fileno(F), $sector, $offset) or return 0;
+ #- handle testing for writing partition table on file only!
+ local *F;
+ if ($::testing) {
+ my $file = "/tmp/partition_table_$hd->{device}";
+ open F, ">$file" or die "error opening test file $file";
+ } else {
+ partition_table_raw::openit($hd, *F, 2) or die "error opening device $hd->{device} for writing";
+ c::lseek_sector(fileno(F), $sector, $offset) or return 0;
+ }
@$pt == $nb_primary or die "partition table does not have $nb_primary entries";
foreach (@$pt) {
diff --git a/perl-install/partition_table_raw.pm b/perl-install/partition_table_raw.pm
index 39277bf39..cafb439f9 100644
--- a/perl-install/partition_table_raw.pm
+++ b/perl-install/partition_table_raw.pm
@@ -40,6 +40,9 @@ sub get_geometry($) {
my %geom; @geom{qw(heads sectors cylinders start)} = unpack "CCSL", $g;
+ #- handle this strange but necessary reduction of visible cylinders on sparc, assume 2 for instance.
+ $geom{total_cylinders} = $geom{cylinders}; $geom{cylinders} -= 2 if arch() =~ /^sparc/;
+
{ geom => \%geom, totalsectors => $geom{heads} * $geom{sectors} * $geom{cylinders} };
}
@@ -55,7 +58,7 @@ sub kernel_read($) {
sub zero_MBR($) {
my ($hd) = @_;
# unless (ref($hd) =~ /partition_table/) {
- my $type = arch() eq "alpha" ? "bsd" : arch() eq "sparc" ? "sun" : "dos";
+ my $type = arch() eq "alpha" ? "bsd" : arch() =~ /^sparc/ ? "sun" : "dos";
bless $hd, "partition_table_$type";
# }
$hd->{isDirty} = $hd->{needKernelReread} = 1;
diff --git a/perl-install/partition_table_sun.pm b/perl-install/partition_table_sun.pm
index 5c8fc749f..808944b8c 100644
--- a/perl-install/partition_table_sun.pm
+++ b/perl-install/partition_table_sun.pm
@@ -45,6 +45,32 @@ my $magic = 0xDABE;
my $nb_primary = 8;
my $offset = 0;
+sub adjustStart($$) {
+ my ($hd, $part) = @_;
+ my $end = $part->{start} + $part->{size};
+
+ #- since partition must always start on cylinders boundaries on sparc,
+ #- note that if start sector is on the first cylinder, it is adjusted
+ #- to 0 and it is valid.
+ $part->{start} = $part->{start} >= partition_table::cylinder_size() ? round_up($part->{start}, partition_table::cylinder_size($hd)) : 0;
+ $part->{size} = $end - $part->{start};
+}
+sub adjustEnd($$) {
+ &partition_table::adjustEnd;
+}
+
+#- compute crc checksum used for Sun Label partition, expect
+#- $tmp to be the 512 bytes buffer to be read/written to MBR.
+sub compute_crc($) {
+ my ($tmp) = @_;
+ my @l2b = unpack "n256", $tmp;
+ my $crc = 0;
+
+ map { $crc ^= $_ } @l2b;
+
+ $crc;
+}
+
sub read($$) {
my ($hd, $sector) = @_;
my $tmp;
@@ -58,15 +84,17 @@ sub read($$) {
#- check magic number
$info{magic} == $magic or die "bad magic number";
+ #- check crc, csum contains the crc so result should be 0.
+ compute_crc($tmp) == 0 or die "bad checksum";
+
@{$hd->{geom}}{qw(cylinders heads sectors)} = @info{qw(ncyl nsect ntrks)};
- #- TODO verify checksum
my @pt = mapn {
my %h;
@h{@$fields1} = unpack $format1, $_[0];
@h{@$fields2} = unpack $format2, $_[1];
$h{start} = $sector + $h{start_cylinder} * partition_table::cylinder_size($hd);
- $h{type} = $typeToDos{$h{type}} || $h{type};
+# $h{type} = $typeToDos{$h{type}} || $h{type}; #- for rewrite it ?
$h{size} or $h{$_} = 0 foreach keys %h;
\%h;
} [ $info{infos} =~ /(.{$size1})/g ], [ $info{partitions} =~ /(.{$size2})/g ];
@@ -79,18 +107,28 @@ sub read($$) {
sub write($$$;$) {
my ($hd, $sector, $pt, $info) = @_;
- local *F; partition_table_raw::openit($hd, *F, 2) or die "error opening device $hd->{device} for writing";
- c::lseek_sector(fileno(F), $sector, $offset) or return 0;
-
- #- TODO compute checksum
+ #- handle testing for writing partition table on file only!
+ local *F;
+ if ($::testing) {
+ my $file = "/tmp/partition_table_$hd->{device}";
+ open F, ">$file" or die "error opening test file $file";
+ } else {
+ partition_table_raw::openit($hd, *F, 2) or die "error opening device $hd->{device} for writing";
+ c::lseek_sector(fileno(F), $sector, $offset) or return 0;
+ }
($info->{infos}, $info->{partitions}) = map { join '', @$_ } list2kv map {
$_->{start} % partition_table::cylinder_size($hd) == 0 or die "partition not at beginning of cylinder";
- local $_->{type} = $typeFromDos{$_->{type}} || $_->{type};
+# local $_->{type} = $typeFromDos{$_->{type}} || $_->{type};
local $_->{start_cylinder} = $_->{start} / partition_table::cylinder_size($hd) - $sector;
pack($format1, @$_{@$fields1}), pack($format2, @$_{@$fields2});
} @$pt;
+ #- compute the checksum by building the buffer to write and call compute_crc.
+ #- set csum to 0 so compute_crc will give the right csum value.
+ $info->{csum} = 0;
+ $info->{csum} = compute_crc(pack($main_format, @$info{@$main_fields}));
+
syswrite F, pack($main_format, @$info{@$main_fields}), psizeof($main_format) or return 0;
1;
@@ -98,31 +136,58 @@ sub write($$$;$) {
sub info {
my ($hd) = @_;
- my $dtype_scsi = 4; #- taken from fdisk, removed unused one,
- my $dtype_ST506 = 6; #- see fdisk for more
-
- {
- magic => $magic,
- magic2 => $magic,
- dtype => $hd->{device} =~ /^sd/ ? $dtype_scsi : $dtype_ST506,
- secsize => $common::SECTORSIZE,
- ncylinders => $hd->{geom}{cylinders},
- secpercyl => partition_table::cylinder_size($hd),
- secprtunit => $hd->{geom}{totalsectors},
- rpm => 3600,
- interleave => 1,
- trackskew => 0,
- cylskew => 0,
- headswitch => 0,
- trkseek => 0,
- bbsize => 8192, #- size of boot area, with label
- sbsize => 8192, #- max size of fs superblock
+
+ #- build a default suitable partition table,
+ #- checksum will be built when writing on disk.
+ #- note third partition is ALWAYS of type Whole disk.
+ my $info = {
+ info => "DiskDrake partition table",
+ rspeed => 5400,
+ pcylcount => $hd->{geom}{total_cylinders},
+ sparecyl => 0,
+ ilfact => 1,
+ ncyl => $hd->{geom}{cylinders},
+ nacyl => $hd->{geom}{total_cylinders} - $hd->{geom}{cylinders},
+ ntrks => $hd->{geom}{heads},
+ nsect => $hd->{geom}{sectors},
+ magic => $magic,
};
+
+ $info;
+# my $dtype_scsi = 4; #- taken from fdisk, removed unused one,
+# my $dtype_ST506 = 6; #- see fdisk for more
+# {
+# magic => $magic,
+# magic2 => $magic,
+# dtype => $hd->{device} =~ /^sd/ ? $dtype_scsi : $dtype_ST506,
+# secsize => $common::SECTORSIZE,
+# ncylinders => $hd->{geom}{cylinders},
+# secpercyl => partition_table::cylinder_size($hd),
+# secprtunit => $hd->{geom}{totalsectors},
+# rpm => 3600,
+# interleave => 1,
+# trackskew => 0,
+# cylskew => 0,
+# headswitch => 0,
+# trkseek => 0,
+# bbsize => 8192, #- size of boot area, with label
+# sbsize => 8192, #- max size of fs superblock
+# };
}
sub clear_raw {
my ($hd) = @_;
- { raw => [ ({}) x $nb_primary ], info => info($hd) };
+ my $pt = { raw => [ ({}) x $nb_primary ], info => info($hd) };
+
+ #- handle special case for partition 2 which is whole disk.
+ $pt->{raw}[2] = {
+ type => 5, #- the whole disk type.
+ flags => 0,
+ start_cylinder => 0,
+ size => $hd->{geom}{cylinders} * partition_table::cylinder_size($hd),
+ };
+
+ $pt;
}
1;
diff --git a/perl-install/share/list b/perl-install/share/list
index 65524be90..60952d68d 100644
--- a/perl-install/share/list
+++ b/perl-install/share/list
@@ -29,47 +29,45 @@
/usr/lib/perl5/5.00503/Symbol.pm
/usr/lib/perl5/5.00503/Time/Local.pm
/usr/lib/perl5/5.00503/dumpvar.pl
-/usr/lib/perl5/5.00503/ARCH-linux/Config.pm
-/usr/lib/perl5/5.00503/ARCH-linux/DynaLoader.pm
-/usr/lib/perl5/5.00503/ARCH-linux/Fcntl.pm
-/usr/lib/perl5/5.00503/ARCH-linux/auto/Fcntl/Fcntl.bs
-/usr/lib/perl5/5.00503/ARCH-linux/auto/Fcntl/Fcntl.so
-/usr/lib/perl5/5.00503/ARCH-linux/IO/File.pm
-/usr/lib/perl5/5.00503/ARCH-linux/IO/Handle.pm
-/usr/lib/perl5/5.00503/ARCH-linux/IO/Seekable.pm
-/usr/lib/perl5/5.00503/ARCH-linux/IO/Socket.pm
-/usr/lib/perl5/5.00503/ARCH-linux/Socket.pm
-/usr/lib/perl5/5.00503/ARCH-linux/_h2ph_pre.ph
-/usr/lib/perl5/5.00503/ARCH-linux/asm/unistd.ph
-/usr/lib/perl5/5.00503/ARCH-linux/auto/Data/Dumper/Dumper.bs
-/usr/lib/perl5/5.00503/ARCH-linux/auto/Data/Dumper/Dumper.so
-/usr/lib/perl5/5.00503/ARCH-linux/auto/IO/IO.so
-/usr/lib/perl5/5.00503/ARCH-linux/auto/Socket/Socket.bs
-/usr/lib/perl5/5.00503/ARCH-linux/auto/Socket/Socket.so
-/usr/lib/perl5/5.00503/ARCH-linux/bits/syscall.ph
-/usr/lib/perl5/5.00503/ARCH-linux/sys/syscall.ph
-/usr/lib/perl5/5.00503/ARCH-linux/syscall.ph
+/usr/lib/perl5/5.00503/i386-linux/Config.pm
+/usr/lib/perl5/5.00503/i386-linux/DynaLoader.pm
+/usr/lib/perl5/5.00503/i386-linux/Fcntl.pm
+/usr/lib/perl5/5.00503/i386-linux/auto/Fcntl/Fcntl.bs
+/usr/lib/perl5/5.00503/i386-linux/auto/Fcntl/Fcntl.so
+/usr/lib/perl5/5.00503/i386-linux/IO/File.pm
+/usr/lib/perl5/5.00503/i386-linux/IO/Handle.pm
+/usr/lib/perl5/5.00503/i386-linux/IO/Seekable.pm
+/usr/lib/perl5/5.00503/i386-linux/IO/Socket.pm
+/usr/lib/perl5/5.00503/i386-linux/Socket.pm
+/usr/lib/perl5/5.00503/i386-linux/_h2ph_pre.ph
+/usr/lib/perl5/5.00503/i386-linux/asm/unistd.ph
+/usr/lib/perl5/5.00503/i386-linux/auto/Data/Dumper/Dumper.bs
+/usr/lib/perl5/5.00503/i386-linux/auto/Data/Dumper/Dumper.so
+/usr/lib/perl5/5.00503/i386-linux/auto/IO/IO.so
+/usr/lib/perl5/5.00503/i386-linux/auto/Socket/Socket.bs
+/usr/lib/perl5/5.00503/i386-linux/auto/Socket/Socket.so
+/usr/lib/perl5/5.00503/i386-linux/bits/syscall.ph
+/usr/lib/perl5/5.00503/i386-linux/sys/syscall.ph
+/usr/lib/perl5/5.00503/i386-linux/syscall.ph
/usr/lib/perl5/5.00503/lib.pm
/usr/lib/perl5/5.00503/overload.pm
/usr/lib/perl5/5.00503/strict.pm
/usr/lib/perl5/5.00503/vars.pm
-/usr/lib/perl5/site_perl/5.005/ARCH-linux/Gtk.pm
-/usr/lib/perl5/site_perl/5.005/ARCH-linux/Gtk/Types.pm
-/usr/lib/perl5/site_perl/5.005/ARCH-linux/Net/Cmd.pm
-/usr/lib/perl5/site_perl/5.005/ARCH-linux/Net/Config.pm
-/usr/lib/perl5/site_perl/5.005/ARCH-linux/Net/FTP.pm
-/usr/lib/perl5/site_perl/5.005/ARCH-linux/Net/FTP/A.pm
-/usr/lib/perl5/site_perl/5.005/ARCH-linux/Net/FTP/I.pm
-/usr/lib/perl5/site_perl/5.005/ARCH-linux/Net/FTP/dataconn.pm
-/usr/lib/perl5/site_perl/5.005/ARCH-linux/Net/Netrc.pm
-/usr/lib/perl5/site_perl/5.005/ARCH-linux/auto/Gtk/Gtk.bs
-/usr/lib/perl5/site_perl/5.005/ARCH-linux/auto/Gtk/Gtk.so
+/usr/lib/perl5/site_perl/5.005/i386-linux/Gtk.pm
+/usr/lib/perl5/site_perl/5.005/i386-linux/Gtk/Types.pm
+/usr/lib/perl5/site_perl/5.005/i386-linux/Net/Cmd.pm
+/usr/lib/perl5/site_perl/5.005/i386-linux/Net/Config.pm
+/usr/lib/perl5/site_perl/5.005/i386-linux/Net/FTP.pm
+/usr/lib/perl5/site_perl/5.005/i386-linux/Net/FTP/A.pm
+/usr/lib/perl5/site_perl/5.005/i386-linux/Net/FTP/I.pm
+/usr/lib/perl5/site_perl/5.005/i386-linux/Net/FTP/dataconn.pm
+/usr/lib/perl5/site_perl/5.005/i386-linux/Net/Netrc.pm
+/usr/lib/perl5/site_perl/5.005/i386-linux/auto/Gtk/Gtk.bs
+/usr/lib/perl5/site_perl/5.005/i386-linux/auto/Gtk/Gtk.so
/usr/lib/rpm/rpmrc
/usr/X11R6/bin/XF86_FBDev
/usr/X11R6/bin/XF86_VGA16
/usr/X11R6/bin/XF86_3DLabs
/usr/X11R6/bin/XF86_TGA
+/usr/X11R6/bin/XF86_Mach64
/usr/X11R6/bin/xmodmap
-/usr/X11R6/lib/modules/xf86Wacom.so
-/usr/sbin/ext2resize
-/usr/sbin/rescuept
diff --git a/perl-install/share/list.sparc b/perl-install/share/list.sparc
new file mode 100644
index 000000000..d35feefa2
--- /dev/null
+++ b/perl-install/share/list.sparc
@@ -0,0 +1,73 @@
+/bin/ash
+/bin/cpio
+/lib/libnss_nis.so.2
+/lib/libnss_files.so.2
+/lib/libnss_dns.so.2
+/lib/libresolv.so.2
+/etc/protocols
+/sbin/fdisk
+/sbin/ifport
+/sbin/insmod
+/sbin/mkraid
+/sbin/rmmod
+/sbin/mkdosfs
+/sbin/mke2fs
+/sbin/raidstart
+/usr/bin/bzip2
+/usr/bin/perl
+/usr/lib/libimlib-png.so
+/usr/lib/gtk/themes/engines/libpixmap.so
+/usr/lib/gtk/themes/engines/libpixmap.la
+/usr/lib/libimlib-png.so
+/usr/lib/perl5/5.00503/AutoLoader.pm
+/usr/lib/perl5/5.00503/Carp.pm
+/usr/lib/perl5/5.00503/Data/Dumper.pm
+/usr/lib/perl5/5.00503/Exporter.pm
+/usr/lib/perl5/5.00503/FileHandle.pm
+/usr/lib/perl5/5.00503/SelectSaver.pm
+/usr/lib/perl5/5.00503/SelfLoader.pm
+/usr/lib/perl5/5.00503/Symbol.pm
+/usr/lib/perl5/5.00503/Time/Local.pm
+/usr/lib/perl5/5.00503/dumpvar.pl
+/usr/lib/perl5/5.00503/sparc-linux/Config.pm
+/usr/lib/perl5/5.00503/sparc-linux/DynaLoader.pm
+/usr/lib/perl5/5.00503/sparc-linux/Fcntl.pm
+/usr/lib/perl5/5.00503/sparc-linux/auto/Fcntl/Fcntl.bs
+/usr/lib/perl5/5.00503/sparc-linux/auto/Fcntl/Fcntl.so
+/usr/lib/perl5/5.00503/sparc-linux/IO/File.pm
+/usr/lib/perl5/5.00503/sparc-linux/IO/Handle.pm
+/usr/lib/perl5/5.00503/sparc-linux/IO/Seekable.pm
+/usr/lib/perl5/5.00503/sparc-linux/IO/Socket.pm
+/usr/lib/perl5/5.00503/sparc-linux/Socket.pm
+/usr/lib/perl5/5.00503/sparc-linux/_h2ph_pre.ph
+/usr/lib/perl5/5.00503/sparc-linux/asm/unistd.ph
+/usr/lib/perl5/5.00503/sparc-linux/asm-sparc/unistd.ph
+/usr/lib/perl5/5.00503/sparc-linux/asm-sparc64/unistd.ph
+/usr/lib/perl5/5.00503/sparc-linux/auto/Data/Dumper/Dumper.bs
+/usr/lib/perl5/5.00503/sparc-linux/auto/Data/Dumper/Dumper.so
+/usr/lib/perl5/5.00503/sparc-linux/auto/IO/IO.so
+/usr/lib/perl5/5.00503/sparc-linux/auto/Socket/Socket.bs
+/usr/lib/perl5/5.00503/sparc-linux/auto/Socket/Socket.so
+/usr/lib/perl5/5.00503/sparc-linux/bits/syscall.ph
+/usr/lib/perl5/5.00503/sparc-linux/sys/syscall.ph
+/usr/lib/perl5/5.00503/sparc-linux/syscall.ph
+/usr/lib/perl5/5.00503/lib.pm
+/usr/lib/perl5/5.00503/overload.pm
+/usr/lib/perl5/5.00503/strict.pm
+/usr/lib/perl5/5.00503/vars.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/Gtk.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/Gtk/Types.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/Net/Cmd.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/Net/Config.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/Net/FTP.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/Net/FTP/A.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/Net/FTP/I.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/Net/FTP/dataconn.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/Net/Netrc.pm
+/usr/lib/perl5/site_perl/5.005/sparc-linux/auto/Gtk/Gtk.bs
+/usr/lib/perl5/site_perl/5.005/sparc-linux/auto/Gtk/Gtk.so
+/usr/lib/rpm/rpmrc
+/usr/X11R6/bin/XF86_FBDev
+/usr/X11R6/bin/XF86_Mach64
+/usr/X11R6/bin/xmodmap
+/usr/X11R6/lib/modules/xf86Wacom.so