diff options
Diffstat (limited to 'perl-install/install_any.pm')
-rw-r--r-- | perl-install/install_any.pm | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/perl-install/install_any.pm b/perl-install/install_any.pm deleted file mode 100644 index 9812c3efb..000000000 --- a/perl-install/install_any.pm +++ /dev/null @@ -1,156 +0,0 @@ -package install_any; - -use diagnostics; -use strict; -use vars qw(@ISA %EXPORT_TAGS @EXPORT_OK); - -@ISA = qw(Exporter); -%EXPORT_TAGS = ( - all => [ qw(getNextStep spawnSync spawnShell addToBeDone) ], -); -@EXPORT_OK = map { @$_ } values %EXPORT_TAGS; - -#-###################################################################################### -#- misc imports -#-###################################################################################### -use common qw(:common :system); -use commands; -use run_program; -use detect_devices; -use pkgs; -use log; - - -#-###################################################################################### -#- Functions -#-###################################################################################### -sub relGetFile($) { - local $_ = $_[0]; - my $dir = m|/| ? "mdkinst" : - (member($_, qw(compss compssList depslist hdlist)) ? "base" : "RPMS"); - $_ = "Mandrake/$dir/$_"; - s/i386/i586/; - $_; -} -sub getFile($) { - local $^W = 0; - if ($::o->{method} && $::o->{method} eq "ftp") { - require 'ftp.pm'; - *install_any::getFile = \&ftp::getFile; - } else { - *install_any::getFile = sub($) { - open getFile, "/tmp/rhimage/" . relGetFile($_[0]) or return; - \*getFile; - }; - } - goto &getFile; -} - -sub kernelVersion { - local $_ = readlink("$::o->{prefix}/boot/vmlinuz") || $::testing && "vmlinuz-2.2.testversion" or die "I couldn't find the kernel package!"; - first(/vmlinuz-(.*)/); -} - - -sub getNextStep { - my ($s) = $::o->{steps}{first}; - $s = $::o->{steps}{$s}{next} while $::o->{steps}{$s}{done}; - $s; -} - -sub spawnSync { - return if $::o->{localInstall} || $::testing; - fork and return; - while (1) { sleep(30); sync(); } -} - -sub spawnShell { - return if $::o->{localInstall} || $::testing; - - -x "/bin/sh" or die "cannot open shell - /usr/bin/sh doesn't exist"; - - fork and return; - - local *F; - sysopen F, "/dev/tty2", 2 or die "cannot open /dev/tty2 -- no shell will be provided"; - - open STDIN, "<&F" or die ''; - open STDOUT, ">&F" or die ''; - open STDERR, ">&F" or die ''; - close F; - - c::setsid(); - - ioctl(STDIN, c::TIOCSCTTY(), 0) or warn "could not set new controlling tty: $!"; - - exec {"/bin/sh"} "-/bin/sh" or log::l("exec of /bin/sh failed: $!"); -} - -sub shells($) { - my ($o) = @_; - my @l = grep { -x "$o->{prefix}$_" } @{$o->{shells}}; - @l ? @l : "/bin/bash"; -} - -sub getAvailableSpace { - my ($o) = @_; - - do { $_->{mntpoint} eq '/usr' and return $_->{size} * 512 } foreach @{$o->{fstab}}; - do { $_->{mntpoint} eq '/' and return $_->{size} * 512 } foreach @{$o->{fstab}}; - - if ($::testing) { - log::l("taking 200MB for testing"); - return 200 << 20; - } - die "missing root partition"; -} - -sub setPackages($$) { - my ($o, $install_classes) = @_; - - if ($o->{packages}) { - $_->{selected} = 0 foreach values %{$o->{packages}}; - } else { - my $useHdlist = $o->{method} !~ /nfs|hd/; - eval { $o->{packages} = pkgs::psUsingHdlist() } if $useHdlist; - $o->{packages} = pkgs::psUsingDirectory() if !$useHdlist || $@; - - pkgs::getDeps($o->{packages}); - - $o->{compss} = pkgs::readCompss($o->{packages}); - $o->{compssListLevels} = pkgs::readCompssList($o->{packages}); - $o->{compssListLevels} ||= $install_classes; - push @{$o->{base}}, "kernel-smp" if detect_devices::hasSMP(); - push @{$o->{base}}, "kernel-pcmcia-cs" if $o->{pcmcia}; - } - - do { - my $p = $o->{packages}{$_} or log::l("missing base package $_"), next; - pkgs::select($o->{packages}, $p, 1); - } foreach @{$o->{base}}; - - pkgs::setShowFromCompss($o->{compss}, $o->{installClass}, $o->{lang}); - ($o->{packages_}{ind}, $o->{packages_}{select_level}) = pkgs::setSelectedFromCompssList($o->{compssListLevels}, $o->{packages}, getAvailableSpace($o) * 0.7, $o->{installClass}, $o->{lang}); -} - -sub addToBeDone(&$) { - my ($f, $step) = @_; - - return &$f() if $::o->{steps}{$step}{done}; - - push @{$::o->{steps}{$step}{toBeDone}}, $f; -} - -sub install_cpio { - my ($dir, $name) = @_; - - return "$dir/$name" if -e "$dir/$name"; - - my $cpio = "$dir.cpio.bz2"; - -e $cpio or return; - - eval { commands::rm("-r", $dir) }; - mkdir $dir, 0755; - run_program::run("cd $dir ; bzip2 -cd $cpio | cpio -id $name $name/*"); - "$dir/$name"; -} |