summaryrefslogtreecommitdiffstats
path: root/perl-install/share/advertising
ModeNameSize
-rw-r--r--01.pl730logstatsplain
-rw-r--r--01.png5671logstatsplain
-rw-r--r--02.pl684logstatsplain
-rw-r--r--02.png6215logstatsplain
-rw-r--r--03.pl774logstatsplain
-rw-r--r--03.png9068logstatsplain
-rw-r--r--04.pl751logstatsplain
-rw-r--r--04.png6269logstatsplain
-rw-r--r--05.pl857logstatsplain
-rw-r--r--05.png8090logstatsplain
-rw-r--r--06.pl608logstatsplain
-rw-r--r--06.png6230logstatsplain
-rw-r--r--07.pl510logstatsplain
-rw-r--r--07.png5448logstatsplain
-rw-r--r--08.pl583logstatsplain
-rw-r--r--08.png6655logstatsplain
-rw-r--r--09.pl687logstatsplain
-rw-r--r--09.png8165logstatsplain
-rw-r--r--10.pl633logstatsplain
-rw-r--r--10.png7688logstatsplain
-rw-r--r--11.pl586logstatsplain
-rw-r--r--11.png8355logstatsplain
-rw-r--r--12.pl688logstatsplain
-rw-r--r--12.png7330logstatsplain
-rw-r--r--13-a.pl701logstatsplain
-rw-r--r--13-a.png8527logstatsplain
-rw-r--r--13-b.pl702logstatsplain
-rw-r--r--13-b.png8527logstatsplain
-rw-r--r--14.pl579logstatsplain
-rw-r--r--14.png5219logstatsplain
-rw-r--r--15.pl575logstatsplain
-rw-r--r--15.png6818logstatsplain
-rw-r--r--16.pl480logstatsplain
-rw-r--r--16.png7483logstatsplain
-rw-r--r--17.pl506logstatsplain
-rw-r--r--17.png8763logstatsplain
-rw-r--r--18.pl853logstatsplain
-rw-r--r--18.png7202logstatsplain
-rw-r--r--19.pl603logstatsplain
-rw-r--r--19.png5528logstatsplain
-rw-r--r--20.pl562logstatsplain
-rw-r--r--20.png5515logstatsplain
-rw-r--r--21.pl600logstatsplain
-rw-r--r--21.png5598logstatsplain
-rw-r--r--22.pl562logstatsplain
-rw-r--r--22.png5251logstatsplain
-rw-r--r--23.pl571logstatsplain
-rw-r--r--23.png8966logstatsplain
-rw-r--r--24.pl838logstatsplain
-rw-r--r--24.png6656logstatsplain
-rw-r--r--25.pl653logstatsplain
-rw-r--r--25.png6150logstatsplain
-rw-r--r--26.pl651logstatsplain
-rw-r--r--26.png7251logstatsplain
-rw-r--r--27.pl607logstatsplain
-rw-r--r--27.png7259logstatsplain
-rw-r--r--28.pl814logstatsplain
-rw-r--r--28.png7833logstatsplain
-rw-r--r--29.pl749logstatsplain
-rw-r--r--29.png6032logstatsplain
-rw-r--r--30.pl630logstatsplain
-rw-r--r--30.png6900logstatsplain
-rw-r--r--Makefile307logstatsplain
-rw-r--r--README71logstatsplain
-rw-r--r--list-dis99logstatsplain
-rw-r--r--list-dwd99logstatsplain
-rw-r--r--list-ppp101logstatsplain
-rw-r--r--list-pwp101logstatsplain
-rw-r--r--lpi.pl96logstatsplain
-rw-r--r--lpi.png66531logstatsplain
pan> = $boot_medium; #-###################################################################################### #- Media change variables&functions #-###################################################################################### my $postinstall_rpms = ''; my $cdrom; sub useMedium($) { #- before ejecting the first CD, there are some files to copy! #- does nothing if the function has already been called. $_[0] > 1 and $::o->{method} eq 'cdrom' and setup_postinstall_rpms($::prefix, $::o->{packages}); $asked_medium eq $_[0] or log::l("selecting new medium '$_[0]'"); $asked_medium = $_[0]; } sub changeMedium($$) { my ($method, $medium) = @_; log::l("change to medium $medium for method $method (refused by default)"); 0; } sub relGetFile($) { local $_ = $_[0]; m|\.rpm$| ? "$::o->{packages}{mediums}{$asked_medium}{rpmsdir}/$_" : $_; } sub askChangeMedium($$) { my ($method, $medium) = @_; my $allow; do { eval { $allow = changeMedium($method, $medium) }; } while $@; #- really it is not allowed to die in changeMedium!!! or install will cores with rpmlib!!! log::l($allow ? "accepting medium $medium" : "refusing medium $medium"); $allow; } sub errorOpeningFile($) { my ($file) = @_; $file eq 'XXX' and return; #- special case to force closing file after rpmlib transaction. $current_medium eq $asked_medium and log::l("errorOpeningFile $file"), return; #- nothing to do in such case. $::o->{packages}{mediums}{$asked_medium}{selected} or return; #- not selected means no need for worying about. my $max = 32; #- always refuse after $max tries. if ($::o->{method} eq "cdrom") { cat_("/proc/mounts") =~ m,(/(?:dev|tmp)/\S+)\s+(?:/mnt/cdrom|/tmp/image), and $cdrom = $1; return unless $cdrom; ejectCdrom($cdrom); while ($max > 0 && askChangeMedium($::o->{method}, $asked_medium)) { $current_medium = $asked_medium; eval { fs::mount($cdrom, "/tmp/image", "iso9660", 'readonly') }; my $getFile = getFile($file); $getFile && @advertising_images and copy_advertising($::o); $getFile and return $getFile; $current_medium = 'unknown'; #- don't know what CD is inserted now. ejectCdrom($cdrom); --$max; } } else { while ($max > 0 && askChangeMedium($::o->{method}, $asked_medium)) { $current_medium = $asked_medium; my $getFile = getFile($file); $getFile and return $getFile; $current_medium = 'unknown'; #- don't know what CD image has been copied. --$max; } } #- keep in mind the asked medium has been refused on this way. #- this means it is no more selected. $::o->{packages}{mediums}{$asked_medium}{selected} = undef; #- on cancel, we can expect the current medium to be undefined too, #- this enable remounting if selecting a package back. $current_medium = 'unknown'; return; } sub getFile { my ($f, $o_method) = @_; log::l("getFile $f:$o_method"); my $rel = relGetFile($f); do { if ($f =~ m|^http://|) { require http; http::getFile($f); } elsif ($o_method =~ /crypto|update/i) { require crypto; crypto::getFile($f); } elsif ($::o->{method} eq "ftp") { require ftp; ftp::getFile($rel); } elsif ($::o->{method} eq "http") { require http; http::getFile("$ENV{URLPREFIX}/$rel"); } else { #- try to open the file, but examine if it is present in the repository, this allow #- handling changing a media when some of the file on the first CD has been copied #- to other to avoid media change... my $f2 = "$postinstall_rpms/$f"; $f2 = "/tmp/image/$rel" if !$postinstall_rpms || !-e $f2; my $F; open $F, $f2 and $F; } } || errorOpeningFile($f); } sub getAndSaveFile { my ($file, $local) = @_ == 1 ? ("Mandrake/mdkinst$_[0]", $_[0]) : @_; local $/ = \ (16 * 1024); my $f = ref($file) ? $file : getFile($file) or return; open(my $F, ">$local") or return; local $_; while (<$f>) { syswrite($F, $_) or die("getAndSaveFile: $!") } 1; } #-###################################################################################### #- Post installation RPMS from cdrom only, functions #-###################################################################################### sub setup_postinstall_rpms($$) { my ($prefix, $packages) = @_; $postinstall_rpms and return; $postinstall_rpms = "$prefix/usr/postinstall-rpm"; require pkgs; log::l("postinstall rpms directory set to $postinstall_rpms"); clean_postinstall_rpms(); #- make sure in case of previous upgrade problem. mkdir_p($postinstall_rpms); my %toCopy; #- compute closure of package that may be copied, use INSTALL category #- in rpmsrate. $packages->{rpmdb} ||= pkgs::rpmDbOpen($prefix); foreach (@{$packages->{needToCopy} || []}) { my $p = pkgs::packageByName($packages, $_) or next; pkgs::selectPackage($packages, $p, 0, \%toCopy); } delete $packages->{rpmdb}; my @toCopy = grep { $_ && !$_->flag_selected } map { $packages->{depslist}[$_] } keys %toCopy; #- extract headers of package, this is necessary for getting #- the complete filename of each package. #- copy the package files in the postinstall RPMS directory. #- last arg is default medium '' known as the CD#1. #- cp_af doesn't handle correctly a missing file. eval { cp_af((grep { -r $_ } map { "/tmp/image/" . relGetFile($_->filename) } @toCopy), $postinstall_rpms) }; log::l("copying Auto Install Floppy"); getAndSaveInstallFloppy($::o, "$postinstall_rpms/auto_install.img"); } sub clean_postinstall_rpms() { $postinstall_rpms and -d $postinstall_rpms and rm_rf($postinstall_rpms); } #-###################################################################################### #- Functions #-###################################################################################### sub getNextStep() { my ($s) = $::o->{steps}{first}; $s = $::o->{steps}{$s}{next} while $::o->{steps}{$s}{done} || !$::o->{steps}{$s}{reachable}; $s; } sub spawnShell() { return if $::o->{localInstall} || $::testing; -x "/bin/sh" or die "cannot open shell - /bin/sh doesn't exist"; fork() and return; $ENV{DISPLAY} ||= ":0"; #- why not :pp 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; print any::drakx_version(), "\n"; c::setsid(); ioctl(STDIN, c::TIOCSCTTY(), 0) or warn "could not set new controlling tty: $!"; my $busybox = "/usr/bin/busybox"; exec { -e $busybox ? $busybox : "/bin/sh" } "/bin/sh" or log::l("exec of /bin/sh failed: $!"); } sub getAvailableSpace { my ($o) = @_; #- make sure of this place to be available for installation, this could help a lot. #- currently doing a very small install use 36Mb of postinstall-rpm, but installing #- these packages may eat up to 90Mb (of course not all the server may be installed!). #- 65mb may be a good choice to avoid almost all problem of insuficient space left... my $minAvailableSize = 65 * sqr(1024); my $n = !$::testing && getAvailableSpace_mounted($o->{prefix}) || getAvailableSpace_raw($o->{fstab}) * 512 / 1.07; $n - max(0.1 * $n, $minAvailableSize); } sub getAvailableSpace_mounted { my ($prefix) = @_; my $dir = -d "$prefix/usr" ? "$prefix/usr" : $prefix; my (undef, $free) = MDK::Common::System::df($dir) or return; log::l("getAvailableSpace_mounted $free KB"); $free * 1024 || 1; } sub getAvailableSpace_raw { my ($fstab) = @_; do { $_->{mntpoint} eq '/usr' and return $_->{size} } foreach @$fstab; do { $_->{mntpoint} eq '/' and return $_->{size} } foreach @$fstab; if ($::testing) { my $nb = 450; log::l("taking ${nb}MB for testing"); return $nb << 11; } die "missing root partition"; } sub preConfigureTimezone { my ($o) = @_; require timezone; #- can't be done in install cuz' timeconfig %post creates funny things add2hash($o->{timezone}, timezone::read()) if $o->{isUpgrade}; $o->{timezone}{timezone} ||= timezone::bestTimezone($o->{locale}{country}); my $utc = every { !isFat_or_NTFS($_) } @{$o->{fstab}}; my $ntp = timezone::ntp_server($o->{prefix}); add2hash_($o->{timezone}, { UTC => $utc, ntp => $ntp }); } sub setPackages { my ($o, $rebuild_needed) = @_; require pkgs;