summaryrefslogtreecommitdiffstats
path: root/globetrotter/move.pm
diff options
context:
space:
mode:
Diffstat (limited to 'globetrotter/move.pm')
-rw-r--r--globetrotter/move.pm171
1 files changed, 171 insertions, 0 deletions
diff --git a/globetrotter/move.pm b/globetrotter/move.pm
new file mode 100644
index 000000000..c61f3649b
--- /dev/null
+++ b/globetrotter/move.pm
@@ -0,0 +1,171 @@
+package move; # $Id$
+
+#- Copyright (c) 2004 MandrakeSoft
+#-
+#- This program is free software; you can redistribute it and/or modify
+#- it under the terms of the GNU General Public License as published by
+#- the Free Software Foundation; either version 2, or (at your option)
+#- any later version.
+#-
+#- This program is distributed in the hope that it will be useful,
+#- but WITHOUT ANY WARRANTY; without even the implied warranty of
+#- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#- GNU General Public License for more details.
+#-
+#- You should have received a copy of the GNU General Public License
+#- along with this program; if not, write to the Free Software
+#- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+use diagnostics;
+use strict;
+
+use c;
+use common;
+use modules;
+use fs;
+use fsedit;
+use run_program;
+use partition_table qw(:types);
+use swap;
+use log;
+use lang;
+use detect_devices;
+
+sub symlinkf_short {
+ my ($dest, $file) = @_;
+ if (my $l = readlink $dest) {
+ $dest = $l if $l =~ m!^/!;
+ }
+ -d $file and log::l("$file already exists and is a directory! writing in directory may be needed, not overwriting"), return;
+ symlinkf($dest, $file);
+}
+
+#- run very soon at stage2 start, setup things on tmpfs rw / that
+#- were not necessary to start stage2 itself (there were setup
+#- by stage1 of course)
+sub init {
+ my ($o) = @_;
+
+ check_for_xserver() and c::bind_textdomain_codeset('libDrakX2', 'UTF8');
+
+
+ -d '/lib/modules/' . c::kernel_version() or warn("ERROR: kernel package " . c::kernel_version() . " not installed\n"), c::_exit(1);
+
+ run_program::run('sysctl', '-w', 'kernel.hotplug=/bin/true');
+ modules::load_category('bus/usb');
+ *c::pcmcia_probe = \&detect_devices::pcmcia_probe;
+ $o->{pcmcia} ||= !$::noauto && c::pcmcia_probe();
+ install_steps::setupSCSI($o);
+ run_program::run('sysctl', '-w', 'kernel.hotplug=/sbin/hotplug');
+
+drakx_stuff:
+ $o->{steps}{$_} = { reachable => 1, text => $_ }
+ foreach qw(autoSelectLanguage configMove selectMouse setRootPassword addUser configureNetwork miscellaneous selectMouse);
+ $o->{orderedSteps_orig} = $o->{orderedSteps};
+ $o->{orderedSteps} = [ qw(selectLanguage acceptLicense selectMouse setupSCSI miscellaneous selectKeyboard setRootPassword addUser configureNetwork configMove ) ];
+ $o->{steps}{first} = $o->{orderedSteps}[0];
+}
+
+
+
+
+sub enable_service {
+ run_program::run('/sbin/chkconfig', '--level', 5, $_[0], 'on');
+}
+
+sub disable_service {
+ run_program::run('/sbin/chkconfig', '--del', $_[0], 'on');
+}
+
+sub install2::configMove {
+ my $o = $::o;
+
+ security::level::set($o->{security});
+
+ require install_steps;
+ install_steps::addUser($o); # for test, when replaying wizard on an already configured machine
+ while ($#{$o->{users}} ne -1) {
+ install_steps::addUser($o);
+ }
+
+ $::noauto and goto after_autoconf;
+
+ my $_wait = $o->wait_message(N("Auto configuration"), N("Please wait, detecting and configuring devices..."));
+
+ #- automatic printer, timezone, network configs
+ require install_steps_interactive;
+ if (cat_('/proc/mounts') !~ /nfs/) {
+ install_steps_interactive::configureNetwork($o);
+ enable_service('network');
+ }
+ enable_service('netfs');
+ install_steps_interactive::summaryBefore($o);
+
+ modules::load_category('multimedia/sound');
+ enable_service('sound');
+
+ detect_devices::isLaptop() or enable_service('numlock');
+
+after_autoconf:
+ require timezone;
+ timezone::write($o->{timezone});
+
+ $o->{useSupermount} = 1;
+ fs::set_removable_mntpoints($o->{all_hds});
+ fs::set_all_default_options($o->{all_hds}, %$o, lang::fs_options($o->{locale}));
+
+ modules::write_conf();
+ require mouse;
+ mouse::write_conf($o, $o->{mouse}, 1); #- write xfree mouse conf
+ detect_devices::install_addons('');
+
+ foreach my $step (@{$o->{orderedSteps_orig}}) {
+ next if member($step, @{$o->{orderedSteps}});
+ while (my $f = shift @{$o->{steps}{$step}{toBeDone} || []}) {
+ log::l("doing remaining toBeDone for undone step $step");
+ eval { &$f() };
+ $o->ask_warn(N("Error"), [
+N("An error occurred, but I don't know how to handle it nicely.
+Continue at your own risk."), formatError($@) ]) if $@;
+ }
+ }
+ system("killall XFree86");
+ output_p("$::prefix/etc/rpm/macros", "%_install_langs all\n");
+ system("service dm on");
+ c::_exit(0);
+}
+
+
+
+sub automatic_xconf {
+ my ($o) = @_;
+
+ log::l('automatic XFree configuration');
+
+ any::devfssymlinkf($o->{mouse}, 'mouse');
+ local $o->{mouse}{device} = 'mouse';
+
+ require Xconfig::default;
+ $o->{raw_X} = Xconfig::default::configure({ KEYBOARD => 'uk' }, $o->{mouse}); #- using uk instead of us for now to have less warnings
+
+ require Xconfig::main;
+ require class_discard;
+ Xconfig::main::configure_everything_auto_install($o->{raw_X}, class_discard->new, {},
+ { allowNVIDIA_rpms => sub { [] }, allowATI_rpms => sub { [] }, allowFB => $o->{allowFB} });
+
+ modules::load_category('various/agpgart');
+
+ my $file = '/etc/X11/XF86Config';
+ $file = "$file-4" if -e "$file-4";
+ my ($Driver) = cat_($file) =~ /Section "Device".*Driver\s*"(.*?)"/s;
+ if ($Driver eq 'nvidia') {
+ modules::load('nvidia');
+ }
+ my $lib = 'libGL.so.1';
+ symlinkf_short(-e "/usr/lib/$lib.$Driver" ? "/usr/lib/$lib.$Driver" : "/usr/X11R6/lib/$lib", "/etc/X11/$lib");
+}
+
+sub handleI18NClp {}
+
+
+1;