156@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: DrakX\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-01-17 14:33+0100\n"
+"POT-Creation-Date: 2008-02-14 13:01+0100\n"
"PO-Revision-Date: 2005-09-12 18:04+0200\n"
"Last-Translator: Alastair McKinstry <mckinstry@computer.org>\n"
"Language-Team: Irish <ga@li.org>\n"
@@ -62,7 +62,7 @@ msgstr "Foclach"
msgid "Silent"
msgstr "Tost"
-#: drakboot:132 drakfont:693 drakperm:378 drakperm:388 drakups:27
+#: drakboot:132 drakbug:233 drakfont:693 drakperm:375 drakperm:385 drakups:27
#: harddrake2:515 localedrake:43 scannerdrake:51 scannerdrake:54
#: scannerdrake:297 scannerdrake:302 scannerdrake:955
#, c-format
@@ -161,99 +161,99 @@ msgid ""
"Be sure your video card supports the mode you choose."
msgstr ""
-#: drakbug:64 drakbug:136
+#: drakbug:65 drakbug:143
#, c-format
msgid "The \"%s\" program has crashed with the following error:"
msgstr ""
-#: drakbug:75
+#: drakbug:76
#, fuzzy, c-format
msgid "Mandriva Linux Bug Report Tool"
msgstr "Bainteach le hIdirlíon"
-#: drakbug:80
+#: drakbug:81
#, c-format
msgid "Mandriva Linux Control Center"
msgstr "Ionad Rialaithe Mandriva Linux"
-#: drakbug:81
+#: drakbug:82
#, fuzzy, c-format
msgid "First Time Wizard"
msgstr "Ag Éirigh as Draíodóir\n"
-#: drakbug:82
+#: drakbug:83
#, c-format
msgid "Synchronization tool"
msgstr ""
-#: drakbug:83 drakbug:222
+#: drakbug:84 drakbug:195
#, c-format
msgid "Standalone Tools"
msgstr ""
-#: drakbug:85 drakbug:86
+#: drakbug:86 drakbug:87
#, fuzzy, c-format
msgid "Mandriva Online"
msgstr "Ionad Rialaithe Mandriva Linux"
-#: drakbug:87
+#: drakbug:88
#, c-format
msgid "Remote Control"
msgstr "Cianrialtán"
-#: drakbug:88
+#: drakbug:89
#, fuzzy, c-format
msgid "Software Manager"
msgstr "Comh. ainm"
-#: drakbug:89
+#: drakbug:90
#, c-format
msgid "Windows Migration tool"
msgstr ""
-#: drakbug:90
+#: drakbug:91
#, fuzzy, c-format
msgid "Configuration Wizards"
msgstr "Draíodóir Cumraíocht Gréasánú"
-#: drakbug:112
+#: drakbug:113
#, c-format
msgid "Select Mandriva Tool:"
msgstr ""
-#: drakbug:113
+#: drakbug:114
#, c-format
msgid ""
"or Application Name\n"
"(or Full Path):"
msgstr ""
-#: drakbug:116
+#: drakbug:117
#, c-format
msgid "Find Package"
msgstr "Aimsigh Pacáiste"
-#: drakbug:118
+#: drakbug:119
#, c-format
msgid "Package: "
msgstr "Pacáiste: "
-#: drakbug:119
+#: drakbug:120
#, c-format
msgid "Kernel:"
msgstr "Eithne:"
-#: drakbug:135
+#: drakbug:142
#, c-format
msgid "The \"%s\" program has segfaulted with the following error:"
msgstr ""
-#: drakbug:145
+#: drakbug:146
#, c-format
msgid "Its gdb trace is:"
msgstr ""
-#: drakbug:153
+#: drakbug:149
#, c-format
msgid ""
"To submit a bug report, click on the report button. \n"
@@ -263,31 +263,48 @@ msgid ""
"kernel version, and /proc/cpuinfo."
msgstr ""
-#: drakbug:161 drakperm:134 draksec:438 draksec:440 draksec:459 draksec:461
+#: drakbug:152
+#, c-format
+msgid "Please describe what you were doing when it crashed:"
+msgstr ""
+
+#: drakbug:164 drakperm:135 draksec:438 draksec:440 draksec:459 draksec:461
#, c-format
msgid "Help"
msgstr "Cabhair"
-#: drakbug:163
+#: drakbug:168
#, c-format
msgid "Report"
msgstr "Tuairisc"
-#: drakbug:196 drakfont:517
+#: drakbug:169 drakfont:517
#, c-format
msgid "Close"
msgstr "Dún"
-#: drakbug:232
+#: drakbug:202
#, c-format
msgid "Not installed"
msgstr "Gan Suiteáil"
-#: drakbug:245
+#: drakbug:215
#, c-format
msgid "Package not installed"
msgstr "Níl an pacáiste suiteáilte"
+#: drakbug:234
+#, c-format
+msgid ""
+"You must type in what you were doing when this bug happens in order to "
+"increase the reproductibility of this bug and the odds of fixing it"
+msgstr ""
+
+#: drakbug:235
+#, c-format
+msgid "Thanks."
+msgstr ""
+
#: drakclock:30 draksec:334
#, c-format
msgid "Date, Clock & Time Zone Settings"
@@ -758,62 +775,62 @@ msgstr "Bainteach le hIdirlíon"
msgid "No Help entry for %s\n"
msgstr ""
-#: drakperm:22
+#: drakperm:23
#, fuzzy, c-format
msgid "System settings"
msgstr "Ag formáidiú"
-#: drakperm:23
+#: drakperm:24
#, fuzzy, c-format
msgid "Custom settings"
msgstr "Ag formáidiú"
-#: drakperm:24
+#: drakperm:25
#, fuzzy, c-format
msgid "Custom & system settings"
msgstr "Ag formáidiú"
-#: drakperm:32
+#: drakperm:33
#, fuzzy, c-format
msgid "Security Permissions"
msgstr "Ceadanna"
-#: drakperm:44
+#: drakperm:45
#, c-format
msgid "Editable"
msgstr "Ineagarthóireachta"
-#: drakperm:49 drakperm:322
+#: drakperm:50 drakperm:319
#, c-format
msgid "Path"
msgstr "Conair"
-#: drakperm:49 drakperm:250
+#: drakperm:50 drakperm:248
#, c-format
msgid "User"
msgstr "Úsáideoir"
-#: drakperm:49 drakperm:250
+#: drakperm:50 drakperm:248
#, c-format
msgid "Group"
msgstr "Grúpa"
-#: drakperm:49 drakperm:334
+#: drakperm:50 drakperm:331
#, c-format
msgid "Permissions"
msgstr "Ceadanna"
-#: drakperm:59
+#: drakperm:60
#, c-format
msgid "Add a new rule"
msgstr ""
-#: drakperm:66 drakperm:101 drakperm:126
+#: drakperm:67 drakperm:102 drakperm:127
#, c-format
msgid "Edit current rule"
msgstr ""
-#: drakperm:108
+#: drakperm:109
#, c-format
msgid ""
"Here you can see files to use in order to fix permissions, owners, and "
@@ -821,196 +838,196 @@ msgid ""
"You can also edit your own rules which will owerwrite the default rules."
msgstr ""
-#: drakperm:110
+#: drakperm:111
#, c-format
msgid ""
"The current security level is %s.\n"
"Select permissions to see/edit"
msgstr ""
-#: drakperm:122
+#: drakperm:123
#, c-format
msgid "Up"
msgstr "Suas"
-#: drakperm:122
+#: drakperm:123
#, c-format
msgid "Move selected rule up one level"
msgstr ""
-#: drakperm:123
+#: drakperm:124
#, c-format
msgid "Down"
msgstr "Síos"
-#: drakperm:123
+#: drakperm:124
#, c-format
msgid "Move selected rule down one level"
msgstr ""
-#: drakperm:124
+#: drakperm:125
#, fuzzy, c-format
msgid "Add a rule"
msgstr "Suimigh Modúil"
-#: drakperm:124
+#: drakperm:125
#, fuzzy, c-format
msgid "Add a new rule at the end"
msgstr "Gan Printéir"
-#: drakperm:125
+#: drakperm:126
#, c-format
msgid "Delete"
msgstr "Scríos"
-#: drakperm:125
+#: drakperm:126
#, fuzzy, c-format
msgid "Delete selected rule"
msgstr "Scrios ciú"
-#: drakperm:126 drakups:300 drakups:362 drakups:382
+#: drakperm:127 drakups:300 drakups:362 drakups:382
#, c-format
msgid "Edit"
msgstr "Eagar"
-#: drakperm:242
+#: drakperm:240
#, c-format
msgid "browse"
msgstr "brabhsáil"
-#: drakperm:247
+#: drakperm:245
#, c-format
msgid "user"
msgstr "úsáideoir:"
-#: drakperm:247
+#: drakperm:245
#, c-format
msgid "group"
msgstr "grúpa"
-#: drakperm:247
+#: drakperm:245
#, c-format
msgid "other"
msgstr "eile"
-#: drakperm:250
+#: drakperm:248
#, c-format
msgid "Other"
msgstr "Eile"
-#: drakperm:252
+#: drakperm:250
#, c-format
msgid "Read"
msgstr "Léigh"
#. -PO: here %s will be either "user", "group" or "other"
-#: drakperm:255
+#: drakperm:253
#, c-format
msgid "Enable \"%s\" to read the file"
msgstr ""
-#: drakperm:259
+#: drakperm:257
#, c-format
msgid "Write"
msgstr "Scríobh"
#. -PO: here %s will be either "user", "group" or "other"
-#: drakperm:262
+#: drakperm:260
#, c-format
msgid "Enable \"%s\" to write the file"
msgstr ""
-#: drakperm:266
+#: drakperm:264
#, c-format
msgid "Execute"
msgstr "Rith"
#. -PO: here %s will be either "user", "group" or "other"
-#: drakperm:269
+#: drakperm:267
#, c-format
msgid "Enable \"%s\" to execute the file"
msgstr ""
-#: drakperm:272
+#: drakperm:270
#, c-format
msgid "Sticky-bit"
msgstr ""
-#: drakperm:272
+#: drakperm:270
#, c-format
msgid ""
"Used for directory:\n"
" only owner of directory or file in this directory can delete it"
msgstr ""
-#: drakperm:273
+#: drakperm:271
#, c-format
msgid "Set-UID"
msgstr ""
-#: drakperm:273
+#: drakperm:271
#, c-format
msgid "Use owner id for execution"
msgstr ""
-#: drakperm:274
+#: drakperm:272
#, c-format
msgid "Set-GID"
msgstr ""
-#: drakperm:274
+#: drakperm:272
#, c-format
msgid "package install2; # $Id$
use diagnostics;
use strict;
use vars qw($o $version);
#-######################################################################################
#- misc imports
#-######################################################################################
use steps;
use common;
use install_any qw(:all);
use install_steps;
use install_any;
use lang;
use keyboard;
use mouse;
use fsedit;
use devices;
use partition_table qw(:types);
use modules;
use detect_devices;
use run_program;
use any;
use log;
use fs;
#-$::corporate=1;
#-#######################################################################################
#-$O
#-the big struct which contain, well everything (globals + the interactive methods ...)
#-if you want to do a kickstart file, you just have to add all the required fields (see for example
#-the variable $default)
#-#######################################################################################
$o = $::o = {
# bootloader => { linear => 0, message => 1, timeout => 5, restricted => 0 },
mkbootdisk => 0, #- no mkbootdisk if 0 or undef, find a floppy with 1, or fd1
#- packages => [ qw() ],
partitioning => { clearall => 0, eraseBadPartitions => 0, auto_allocate => 0 }, #-, readonly => 0 },
authentication => { md5 => 1, shadow => 1 },
locale => { lang => 'en_US' },
#- isUpgrade => 0,
toRemove => [],
toSave => [],
#- simple_themes => 1,
timezone => {
#- timezone => "Europe/Paris",
#- UTC => 1,
},
#- superuser => { password => 'a', shell => '/bin/bash', realname => 'God' },
#- user => { name => 'foo', password => 'bar', home => '/home/foo', shell => '/bin/bash', realname => 'really, it is foo' },
#- keyboard => 'de',
#- display => "192.168.1.19:1",
steps => \%steps::installSteps,
orderedSteps => \@steps::orderedInstallSteps,
#- for the list of fields available for user and superuser, see @etc_pass_fields in install_steps.pm
#- intf => { eth0 => { DEVICE => "eth0", IPADDR => '1.2.3.4', NETMASK => '255.255.255.128' } },
#-step : the current one
#-prefix
#-mouse
#-keyboard
#-netc
#-methods
#-packages compss
#-printer haveone entry(cf printer.pm)
};
sub installStepsCall {
my ($o, $auto, $fun, @args) = @_;
$fun = "install_steps::$fun" if $auto;
$o->$fun(@args);
}
#-######################################################################################
#- Steps Functions
#- each step function are called with two arguments : clicked(because if you are a
#- beginner you can force the the step) and the entered number
#-######################################################################################
#------------------------------------------------------------------------------
sub selectLanguage {
my ($_clicked, $ent_number, $auto) = @_;
installStepsCall($o, $auto, 'selectLanguage', $ent_number == 1);
}
sub acceptLicense {
my ($_clicked, $_ent_number, $auto) = @_;
installStepsCall($o, $auto, 'acceptLicense') if !$o->{useless_thing_accepted};
}
#------------------------------------------------------------------------------
sub selectMouse {
my ($clicked, $ent_number, $auto) = @_;
require pkgs;
my ($first_time) = $ent_number == 1;
installStepsCall($o, $auto, 'selectMouse', !$first_time || $clicked);
addToBeDone { mouse::write($o, $o->{mouse}) if !$o->{isUpgrade} || $clicked } 'installPackages';
}
#------------------------------------------------------------------------------
sub setupSCSI {
my ($clicked, $_ent_number, $auto) = @_;
if (!$::live && !$::g_auto_install && !$o->{blank} && !$::testing && !$::uml_install) {
-s modules::cz_file() or die \N("Can't access kernel modules corresponding to your kernel (file %s is missing), this generally means your boot floppy in not in sync with the Installation medium (please create a newer boot floppy)", modules::cz_file());
}
installStepsCall($o, $auto, 'setupSCSI', $clicked);
}
#------------------------------------------------------------------------------
sub selectKeyboard {
my ($clicked, $_ent_number, $auto) = @_;
installStepsCall($o, $auto, 'selectKeyboard', $clicked);
#- read keyboard ASAP (so that summary displays ok)
addToBeDone {
$o->{keyboard}{unsafe} or return;
if (my $keyboard = keyboard::read()) {
$o->{keyboard} = $keyboard;
}
} 'formatPartitions';
}
#------------------------------------------------------------------------------
sub selectInstallClass {
my ($clicked, $_ent_number, $auto) = @_;
installStepsCall($o, $auto, 'selectInstallClass', $clicked);
if ($o->{isUpgrade}) {
$o->{keepConfiguration} and @{$o->{orderedSteps}} = grep { !/selectMouse|selectKeyboard|miscellaneous|setRootPassword|addUser|configureNetwork|installUpdates|summary|configureServices|configureX/ } @{$o->{orderedSteps}};
my $s; foreach (@{$o->{orderedSteps}}) {
$s->{next} = $_ if $s;
$s = $o->{steps}{$_};
}
}
}
#------------------------------------------------------------------------------
sub doPartitionDisks {
my ($_clicked, $_ent_number, $auto) = @_;
$o->{steps}{formatPartitions}{done} = 0;
installStepsCall($o, $auto, 'doPartitionDisksBefore');
installStepsCall($o, $auto, 'doPartitionDisks');
installStepsCall($o, $auto, 'doPartitionDisksAfter');
}
sub formatPartitions {
my ($_clicked, $_ent_number, $auto) = @_;
$o->{steps}{choosePackages}{done} = 0;
installStepsCall($o, $auto, 'choosePartitionsToFormat', $o->{fstab}) if !$o->{isUpgrade};
my $want_root_formated = fsedit::get_root($o->{fstab})->{toFormat};
if ($want_root_formated) {
foreach ('/usr') {
my $part = fsedit::mntpoint2part($_, $o->{fstab}) or next;
$part->{toFormat} or die \N("You must also format %s", $_);
}
}
installStepsCall($o, $auto, 'formatMountPartitions', $o->{fstab}) if !$::testing;
if ($want_root_formated) {
#- we formatted /, ensure /var/lib/rpm is cleaned otherwise bad things can happen
#- (especially when /var is *not* formatted)
eval { rm_rf("$o->{prefix}/var/lib/rpm") };
}
mkdir "$o->{prefix}/$_", 0755 foreach
qw(dev etc etc/profile.d etc/rpm etc/sysconfig etc/sysconfig/console
etc/sysconfig/network-scripts etc/sysconfig/console/consolefonts
etc/sysconfig/console/consoletrans
home mnt tmp var var/tmp var/lib var/lib/rpm var/lib/urpmi);
mkdir "$o->{prefix}/$_", 0700 foreach qw(root root/tmp root/drakx);
devices::make("$o->{prefix}/dev/null");
chmod 0666, "$o->{prefix}/dev/null";
common::screenshot_dir__and_move();
any::rotate_logs($o->{prefix});
require raid;
raid::prepare_prefixed($o->{all_hds}{raids}, $o->{prefix});
}
#------------------------------------------------------------------------------
sub choosePackages {
my ($_clicked, $ent_number, $auto) = @_;
require pkgs;
#- always setPackages as it may have to copy hdlist files and synthesis files.
installStepsCall($o, $auto, 'setPackages', $o->{isUpgrade} && $ent_number == 1);
installStepsCall($o, $auto, 'choosePackages', $o->{packages}, $o->{compssUsers}, $ent_number == 1);
log::l("compssUsersChoice's: ", join(" ", grep { $o->{compssUsersChoice}{$_} } keys %{$o->{compssUsersChoice}}));
#- check pre-condition where base backage has to be selected.
pkgs::packageByName($o->{packages}, 'basesystem')->flag_available or die "basesystem package not selected";
#- check if there are package that need installation.
$o->{steps}{installPackages}{done} = 0 if $o->{steps}{installPackages}{done} && pkgs::packagesToInstall($o->{packages}) > 0;
}
#------------------------------------------------------------------------------
sub installPackages {
my ($_clicked, $ent_number, $auto) = @_;
installStepsCall($o, $auto, 'readBootloaderConfigBeforeInstall') if $ent_number == 1;
installStepsCall($o, $auto, 'beforeInstallPackages');
installStepsCall($o, $auto, 'installPackages');
installStepsCall($o, $auto, 'afterInstallPackages');
}
#------------------------------------------------------------------------------
sub miscellaneous {
my ($clicked, $_ent_number, $auto) = @_;
installStepsCall($o, $auto, 'miscellaneousBefore', $clicked);
installStepsCall($o, $auto, 'miscellaneous', $clicked);
installStepsCall($o, $auto, 'miscellaneousAfter', $clicked);
}
#------------------------------------------------------------------------------
sub summary {
my ($_clicked, $ent_number, $auto) = @_;
installStepsCall($o, $auto, 'summaryBefore');
installStepsCall($o, $auto, 'summary', $ent_number == 1);
installStepsCall($o, $auto, 'summaryAfter');
}
#------------------------------------------------------------------------------
sub configureNetwork {
my ($_clicked, $_ent_number, $auto) = @_;
#- get current configuration of network device.
require network;
eval { network::read_all_conf($o->{prefix}, $o->{netc} ||= {}, $o->{intf} ||= {}) };
installStepsCall($o, $auto, 'configureNetwork') if !$o->{isUpgrade};
}
#------------------------------------------------------------------------------
sub installUpdates {
my ($_clicked, $_ent_number, $auto) = @_;
installStepsCall($o, $auto, 'installUpdates');
}
#------------------------------------------------------------------------------
sub configureServices {
my ($clicked, $_ent_number, $auto) = @_;
installStepsCall($o, $auto, 'configureServices', $clicked);
}
#------------------------------------------------------------------------------
sub setRootPassword {
my ($clicked, $_ent_number, $auto) = @_;
return if $o->{isUpgrade};
installStepsCall($o, $auto, 'setRootPassword', $clicked);
}
#------------------------------------------------------------------------------
sub addUser {
my ($clicked, $_ent_number, $auto) = @_;
installStepsCall($o, $auto, 'addUser', $clicked) if !$o->{isUpgrade};
}
#------------------------------------------------------------------------------
sub setupBootloader {
my ($_clicked, $ent_number, $auto) = @_;
return if $::g_auto_install || $::uml_install;
modules::write_conf($o->{prefix});
installStepsCall($o, $auto, 'setupBootloaderBefore') if $ent_number == 1;
installStepsCall($o, $auto, 'setupBootloader', $ent_number);
eval { install_any::set_security($o) };
}
#------------------------------------------------------------------------------
sub configureX {
my ($_clicked, $_ent_number, $auto) = @_;
#- done here and also at the end of install2.pm, just in case...
install_any::write_fstab($o);
modules::write_conf($o->{prefix});
require pkgs;
installStepsCall($o, $auto, 'configureX') if pkgs::packageByName($o->{packages}, 'XFree86')->flag_installed && !$o->{X}{disabled} || $::testing;
}
#------------------------------------------------------------------------------
sub exitInstall {
my ($_clicked, $_xent_number, $auto) = @_;
installStepsCall($o, $auto, 'exitInstall', getNextStep() eq 'exitInstall');
}
sub start_i810fb() {
my ($vga) = cat_('/proc/cmdline') =~ /vga=(\S+)/;
return if !$vga || listlength(cat_('/proc/fb'));
my %vga_to_xres = (0x311 => '640', 0x314 => '800', 0x317 => '1024');
my $xres = $vga_to_xres{$vga} || '800';
log::l("trying to load i810fb module with xres <$xres> (vga was <$vga>)");
eval {
any::ddcxinfos(); # keep the result otherwise ddcxinfos doesn't return good results afterwards
modules::load([ 'i810fb',
"xres=$xres", 'hsync1=32', 'hsync2=48', 'vsync1=50', 'vsync2=70', #- this sucking i810fb does not accept floating point numbers in hsync!
'vram=2', 'bpp=16', 'accel=1', 'mtrr=1', 'hwcur=1', 'xcon=4' ]);
};
}
#-######################################################################################
#- MAIN
#-######################################################################################
sub main {
$SIG{__DIE__} = sub { chomp(my $err = $_[0]); log::l("warning: ", ref($err) eq 'SCALAR' ? $$err : $err) if $err !~ /^find_index failed/ };
$SIG{SEGV} = sub {
my $msg = "segmentation fault: seems like memory is missing as the install crashes"; print "$msg\n"; log::l($msg);
$o->ask_warn('', $msg);
setVirtual(1);
require install_steps_auto_install;
install_steps_auto_install_non_interactive::errorInStep();
};
$ENV{PERL_BADLANG} = 1;
umask 022;
$::isInstall = 1;
$::isWizard = 1;
$::no_ugtk_init = 1;
$::expert = $::g_auto_install = 0;
#- c::unlimit_core() unless $::testing;
my ($cfg, $patch, @auto);
my %cmdline = map {
my ($n, $v) = split '=';
$n => $v || 1;
} split ' ', cat_("/proc/cmdline");
my $opt; foreach (@_) {
if (/^--?(.*)/) {
$cmdline{$opt} = 1 if $opt;
$opt = $1;
} else {
$cmdline{$opt} = $_ if $opt;
$opt = '';
}
} $cmdline{$opt} = 1 if $opt;
map_each {
my ($n, $v) = @_;
my $f = ${{
oem => sub { $::oem = $v },
lang => sub { $o->{locale}{lang} = $v },
flang => sub { $o->{locale}{lang} = $v; push @auto, 'selectLanguage' },
method => sub { $o->{method} = $v },
pcmcia => sub { $o->{pcmcia} = $v },
vga16 => sub { $o->{vga16} = $v },
vga => sub { $o->{vga} = $v },
step => sub { $o->{steps}{first} = $v },
expert => sub { $::expert = $v },
meta_class => sub { $o->{meta_class} = $v },
readonly => sub { $o->{partitioning}{readonly} = $v ne "0" },
display => sub { $o->{display} = $v },
askdisplay => sub { print "Please enter the X11 display to perform the install on ? "; $o->{display} = chomp_(scalar(<STDIN>)) },
security => sub { $o->{security} = $v },
live => sub { $::live = 1 },
noauto => sub { $::noauto = 1 },
test => sub { $::testing = 1 },
patch => sub { $patch = 1 },
defcfg => sub { $cfg = $v },
recovery => sub { $::recovery = 1 },
restore => sub { $::restore = 1 },
newt => sub { $o->{interactive} = "newt" },
text => sub { $o->{interactive} = "newt" },
stdio => sub { $o->{interactive} = "stdio" },
corporate => sub { $::corporate = 1 },
kickstart => sub { $::auto_install = $v },
uml_install => sub { $::uml_install = 1 },
auto_install => sub { $::auto_install = $v },
simple_themes => sub { $o->{simple_themes} = 1 },
theme => sub { $o->{theme} = $v },
doc => sub { $o->{doc} = 1 }, #- will be used to know that we're running for the doc team,
#- e.g. we want screenshots with a good B&W contrast
useless_thing_accepted => sub { $o->{useless_thing_accepted} = 1 },
alawindows => sub { $o->{security} = 0; $o->{partitioning}{clearall} = 1; $o->{bootloader}{crushMbr} = 1 },
fdisk => sub { $o->{partitioning}{fdisk} = 1 },
g_auto_install => sub { $::testing = $::g_auto_install = 1; $o->{partitioning}{auto_allocate} = 1 },
nomouseprobe => sub { $o->{nomouseprobe} = $v },
blank => sub { $o->{blank} = $::blank = 1 },
updatemodules => sub { $o->{updatemodules} = 1 },
move => sub { $::move = 1 },
}}{lc $n}; &$f if $f;
} %cmdline;
if ($::testing) {
$ENV{SHARE_PATH} ||= "/export/Mandrake/mdkinst/usr/share";
$ENV{SHARE_PATH} = "/usr/share" if !-e $ENV{SHARE_PATH};
} else {
$ENV{SHARE_PATH} ||= "/usr/share";
}
undef $::auto_install if $cfg;
if ($::g_auto_install) {
(my $root = `/bin/pwd`) =~ s|(/[^/]*){5}$||;
symlinkf $root, "/tmp/image" or die "unable to create link /tmp/image";
$o->{method} ||= "cdrom";
$o->{mkbootdisk} = 0;
}
if (!$::testing && !$::live) {
symlink "rhimage", "/tmp/image"; #- for compatibility with old stage1
unlink $_ foreach "/modules/modules.mar", "/sbin/stage1";
}
print STDERR "in second stage\n";
log::openLog(($::testing || $o->{localInstall}) && 'debug.log');
log::l("second stage install running (", any::drakx_version(), ")");
if ($::move) {
require move;
move::init();
}
$o->{prefix} = $::prefix = $::testing ? "/tmp/test-perl-install" : $::live || $::move ? "" : "/mnt";
$o->{isUpgrade} = 1 if $::live;
mkdir $o->{prefix}, 0755;
devices::make("/dev/zero"); #- needed by ddcxinfos
#- make sure we don't pick up any gunk from the outside world
my $remote_path = "$o->{prefix}/sbin:$o->{prefix}/bin:$o->{prefix}/usr/sbin:$o->{prefix}/usr/bin:$o->{prefix}/usr/X11R6/bin";
$ENV{PATH} = "/usr/bin:/bin:/sbin:/usr/sbin:/usr/X11R6/bin:$remote_path" unless $::g_auto_install;
eval { spawnShell() };
modules::load_dependencies(($::testing ? ".." : "") . "/modules/modules.dep");
modules::read_stage1_conf($_) foreach "/tmp/conf.modules", "/etc/modules.conf";
modules::read_already_loaded();
#- done before auto_install is called to allow the -IP feature on auto_install file name
if (-e '/tmp/network') {
require network;
#- get stage1 network configuration if any.
log::l('found /tmp/network');
$o->{netc} ||= {};
add2hash($o->{netc}, network::read_conf('/tmp/network'));
if (my ($file) = glob_('/tmp/ifcfg-*')) {
log::l("found network config file $file");
my $l = network::read_interface_conf($file);
$o->{intf} ||= { $l->{DEVICE} => $l };
}
if (-e '/etc/resolv.conf') {
my $file = '/etc/resolv.conf';
log::l("found network config file $file");
add2hash($o->{netc}, network::read_resolv_conf($file));
}
}
#- done after module dependencies are loaded for "vfat depends on fat"
if ($::auto_install) {
if ($::auto_install =~ /-IP(\.pl)?$/) {
my $ip = join('', map { sprintf "%02X", $_ } split '\.', $o->{intf}{IPADDR});
$::auto_install =~ s/-IP(\.pl)?$/-$ip$1/;
}
require install_steps_auto_install;
eval { $o = $::o = install_any::loadO($o, $::auto_install) };
if ($@) {
if ($o->{useless_thing_accepted}) { #- Pixel's hack to be able to fail through
log::l("error using auto_install, continuing");
undef $::auto_install;
} else {
print "Error using auto_install\n", formatError($@), "\n";
install_steps_auto_install_non_interactive::errorInStep();
}
} else {
log::l("auto install config file loaded successfully");
}
}
$o->{interactive} ||= 'gtk' if !$::auto_install;
if ($o->{interactive} eq "gtk" && availableMemory() < 22 * 1024) {
log::l("switching to newt install cuz not enough memory");
$o->{interactive} = "newt";
}
if (my ($s) = cat_("/proc/cmdline") =~ /brltty=(\S*)/) {
my ($driver, $device, $table) = split(',', $s);
$table = "text.$table.tbl" if $table !~ /\.tbl$/;
log::l("brltty option $driver $device $table");
$o->{brltty} = { driver => $driver, device => $device, table => $table };
$o->{interactive} = 'newt';
$o->{nomouseprobe} = 1;
}
# perl_checker: require install_steps_gtk
# perl_checker: require install_steps_newt
# perl_checker: require install_steps_stdio
require "install_steps_$o->{interactive}.pm" if $o->{interactive};
#- needed before accessing floppy (in case of usb floppy)
modules::load_category('bus/usb');
#- oem patch should be read before to still allow patch or defcfg.
eval { $o = $::o = install_any::loadO($o, "Mandrake/base/patch-oem.pl"); log::l("successfully read oem patch") };
#- recovery mode should be read early to allow default parameter to be taken.
eval { $o = $::o = install_any::loadO($o, "Mandrake/base/recovery.cfg"); log::l("successfully read recovery") } if $::recovery;
$@ and $::recovery = 0; #- avoid keeping recovery if there was a problem reading the recovery.cfg file.
#- patch should be read after defcfg in order to take precedance.
eval { $o = $::o = install_any::loadO($o, $cfg); log::l("successfully read default configuration: $cfg") } if $cfg;
eval { $o = $::o = install_any::loadO($o, "patch"); log::l("successfully read patch") } if $patch;
eval { modules::load("af_packet") };
require harddrake::sound;
harddrake::sound::configure_sound_slots();
#- need to be after oo-izing $o
if ($o->{brltty}) {
symlink "/tmp/stage2/$_", $_ foreach "/etc/brltty";
if (common::usingRamdisk()) {
install_any::remove_unused(0);
mkdir '/tmp/stage2/etc/brltty';
mkdir '/lib/brltty';
foreach ($o->{brltty}{table}, "brltty-$o->{brltty}{driver}.hlp") {
install_any::getAndSaveFile("/etc/brltty/$_") if $_;
}
install_any::getAndSaveFile("/lib/brltty/libbrlttyb$o->{brltty}{driver}.so") or do {
local $| = 1;
print("Braille driver $o->{brltty}{driver} for BRLTTY was not found.\n",
"Press ENTER to continue.\n\a");
<STDIN>;
};
install_any::getAndSaveFile("/usr/bin/brltty");
chmod 0755, "/usr/bin/brltty";
}
eval { modules::load("serial") };
devices::make($_) foreach $o->{brltty}{device} ? $o->{brltty}{device} : qw(ttyS0 ttyS1);
devices::make("vcsa");
run_program::run("brltty");
}
#- needed very early for install_steps_gtk
unless ($::testing) {
if ($o->{mouse}) {
mouse::load_modules($o->{mouse});
} else {
eval { $o->{mouse} = mouse::detect() } unless $o->{nomouseprobe};
}
}
$o->{locale}{lang} = lang::set($o->{locale}{lang}) if $o->{locale}{lang} ne 'en_US'; #- mainly for defcfg
start_i810fb();
$o->{allowFB} = listlength(cat_("/proc/fb"));
my $VERSION = cat__(install_any::getFile("VERSION")) or do { print "VERSION file missing\n"; sleep 5 };
$::corporate = 1 if $VERSION =~ /corporate/i;
$o->{meta_class} = 'desktop' if $VERSION =~ /desktop|discovery/i;
$o->{meta_class} = 'download' if $VERSION =~ /download/i;
$o->{meta_class} = 'firewall' if $VERSION =~ /firewall/i;
$o->{meta_class} = 'server' if $VERSION =~ /server|prosuite/i;
$o->{meta_class} eq 'discovery' and $o->{meta_class} = 'desktop';
if ($::oem) {
$o->{partitioning}{use_existing_root} = 1;
$o->{compssListLevel} = 4;
push @auto, 'selectInstallClass', 'doPartitionDisks', 'choosePackages', 'configureTimezone', 'exitInstall';
}
if ($::recovery) {
push @auto, 'selectLanguage', 'selectInstallClass', 'selectMouse', 'selectKeyboard', 'doPartitionDisks', 'formatPartitions', 'miscellaneous', 'choosePackages', 'configureTimezone';
}
foreach (@auto) {
my $s = $o->{steps}{/::(.*)/ ? $1 : $_} or next;
$s->{auto} = $s->{hidden} = 1;
}
my $o_;
while (1) {
$o_ = $::auto_install ?
install_steps_auto_install->new($o) :
$o->{interactive} eq "stdio" ?
install_steps_stdio->new($o) :
$o->{interactive} eq "newt" ?
install_steps_newt->new($o) :
$o->{interactive} eq "gtk" ?
install_steps_gtk->new($o) :
die "unknown install type";
$o_ and last;
$o->{interactive} = "newt";
require install_steps_newt;
}
$::o = $o = $o_;
install_any::remove_unused() if common::usingRamdisk();
#-the main cycle
my $clicked = 0;
MAIN: for ($o->{step} = $o->{steps}{first};; $o->{step} = getNextStep()) {
$o->{steps}{$o->{step}}{entered}++;
$o->enteringStep($o->{step});
eval {
&{$install2::{$o->{step}}}($clicked || $o->{steps}{$o->{step}}{noauto},
$o->{steps}{$o->{step}}{entered},
$clicked ? 0 : $o->{steps}{$o->{step}}{auto});
};
my $err = $@;
$o->kill_action;
$clicked = 0;
if ($err) {
ref($err) eq 'SCALAR' and $err = $$err;
local $_ = $err;
$o->kill_action;
if (!/^already displayed/) {
eval { $o->errorInStep($_) };
$o->{steps}{$o->{step}}{auto} = 0;
$err = $@;
$err and next;
}
$o->{step} = $o->{steps}{$o->{step}}{onError};
next MAIN unless $o->{steps}{$o->{step}}{reachable}; #- sanity check: avoid a step not reachable on error.
redo MAIN;
}
$o->{steps}{$o->{step}}{done} = 1;
$o->leavingStep($o->{step});
last if $o->{step} eq 'exitInstall';
}
install_any::clean_postinstall_rpms();
install_any::log_sizes($o);
install_any::remove_advertising($o);
install_any::write_fstab($o);
modules::write_conf($o->{prefix});
detect_devices::install_addons($o->{prefix});
#- save recovery file if needed (ie disk style install).
$o->{method} eq 'disk' and
output($o->{prefix}.any::hdInstallPath()."/Mandrake/base/recovery.cfg", install_any::g_auto_install(1));
#- mainly for auto_install's
#- do not use run_program::xxx because it doesn't leave stdin/stdout unchanged
system("bash", "-c", $o->{postInstallNonRooted}) if $o->{postInstallNonRooted};
system("chroot", $o->{prefix}, "bash", "-c", $o->{postInstall}) if $o->{postInstall};
install_any::ejectCdrom();
#- to ensure linuxconf doesn't cry against those files being in the future
foreach ('/etc/modules.conf', '/etc/crontab', '/etc/sysconfig/mouse', '/etc/sysconfig/network', '/etc/X11/fs/config') {
my $now = time() - 24 * 60 * 60;
utime $now, $now, "$o->{prefix}/$_";
}
$::live or install_any::killCardServices();
#- make sure failed upgrade will not hurt too much.
install_steps::cleanIfFailedUpgrade($o);
-e "$o->{prefix}/usr/sbin/urpmi.update" or eval { rm_rf("$o->{prefix}/var/lib/urpmi") };
#- copy latest log files
eval { cp_af("/tmp/$_", "$o->{prefix}/root/drakx") foreach qw(ddebug.log stage1.log) };
#- ala pixel? :-) [fpons]
common::sync(); common::sync();
log::l("installation complete, leaving");
log::l("files still open by install2: ", readlink($_)) foreach glob_("/proc/self/fd/*");
print "\n" x 80;
}
1;