From bd7a458f95f84e02e5132f2b92878f8bc0f0bfc7 Mon Sep 17 00:00:00 2001 From: Rafael Garcia-Suarez Date: Wed, 22 Sep 2004 06:01:24 +0000 Subject: =?UTF-8?q?More=20CD=C2=ADrom=20mountpoint=20flexibility?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- perl-install/pkgs.pm | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/perl-install/pkgs.pm b/perl-install/pkgs.pm index b133611d0..e80497d5f 100644 --- a/perl-install/pkgs.pm +++ b/perl-install/pkgs.pm @@ -896,6 +896,8 @@ sub selectPackagesToUpgrade { sub allowedToUpgrade { $_[0] !~ /^(kernel|kernel22|kernel2.2|kernel-secure|kernel-smp|kernel-linus|kernel-linus2.2|hackkernel|kernel-enterprise)$/ } +sub supplCDMountPoint { $::o->{mainmethod} eq 'cdrom' ? "/tmp/image" : "/mnt/cdrom" } + sub installTransactionClosure { my ($packages, $id2pkg) = @_; my ($id, %closure, @l, $medium, $min_id, $max_id); @@ -933,6 +935,7 @@ sub installTransactionClosure { #- Supplementary CD : switch temporarily to "cdrom" method my $suppl_CD = isSupplCDMedium($medium); + $::o->{mainmethod} = $::o->{method}; local $::o->{method} = do { my $cdrom; cat_("/proc/mounts") =~ m,(/(?:dev|tmp)/\S+)\s+(?:/mnt/cdrom|/tmp/image), and $cdrom = $1; @@ -940,19 +943,19 @@ sub installTransactionClosure { (my $cdromdev) = detect_devices::cdroms(); $cdrom = $cdromdev->{device}; log::l("cdrom redetected at $cdrom"); - my $dev = devices::make($cdrom); - install_any::ejectCdrom($cdrom) if $::o->{method} eq 'cdrom'; # will umount /tmp/image - install_any::mountCdrom("/mnt/cdrom", $cdrom); + devices::make($cdrom); + install_any::ejectCdrom($cdrom) if $::o->{method} eq 'cdrom'; + install_any::mountCdrom(supplCDMountPoint(), $cdrom); } else { log::l("cdrom already found at $cdrom") } 'cdrom'; } if $suppl_CD; #- it is sure at least one package will be installed according to medium chosen. install_any::useMedium($medium->{medium}); - if ($medium->{method} eq 'cdrom') { + if (install_any::method_allows_medium_change($medium->{method})) { my $pkg = $packages->{depslist}[$l[0]]; #- force changeCD callback to be called from main process. - install_any::getFile($pkg->filename, $medium->{descr}, $suppl_CD ? '/mnt/cdrom' : undef); + install_any::getFile($pkg->filename, $medium->{descr}, $suppl_CD ? supplCDMountPoint() : undef); #- close opened handle above. install_any::getFile('XXX'); } @@ -1109,12 +1112,11 @@ sub install($$$;$$) { my $medium = packageMedium($packages, $pkg); my $f = $pkg && $pkg->filename; print $LOG "$f\n"; - #if (isSupplCDMedium($medium)) { - # #- supplementary CD already mounted in /mnt/cdrom - # $fd = install_any::getFile($f, $medium->{descr}, '/mnt/cdrom'); - #} else { - $fd = install_any::getFile($f, $medium->{descr}); - #} + if (isSupplCDMedium($medium)) { + $fd = install_any::getFile($f, $medium->{descr}, supplCDMountPoint()); + } else { + $fd = install_any::getFile($f, $medium->{descr}, $medium->{prefix}); + } $fd ? fileno $fd : -1; }, callback_close => sub { my ($data, $_type, $id) = @_; -- cgit v1.2.1