summaryrefslogtreecommitdiffstats
path: root/perl-install
diff options
context:
space:
mode:
authorRafael Garcia-Suarez <rgarciasuarez@mandriva.org>2004-09-22 09:28:18 +0000
committerRafael Garcia-Suarez <rgarciasuarez@mandriva.org>2004-09-22 09:28:18 +0000
commit87afa97f39aad9e27f1116a2821b817208a0875b (patch)
tree511fec91d3c04d6f91d803b77982fffd527ef8a7 /perl-install
parentfc99e8fcd79926758c7cdee405a7fb38f7e84feb (diff)
downloaddrakx-backup-do-not-use-87afa97f39aad9e27f1116a2821b817208a0875b.tar
drakx-backup-do-not-use-87afa97f39aad9e27f1116a2821b817208a0875b.tar.gz
drakx-backup-do-not-use-87afa97f39aad9e27f1116a2821b817208a0875b.tar.bz2
drakx-backup-do-not-use-87afa97f39aad9e27f1116a2821b817208a0875b.tar.xz
drakx-backup-do-not-use-87afa97f39aad9e27f1116a2821b817208a0875b.zip
A trimmed-down version of the supplementary media handling routine of
10.1 community. It handles only supplementary CDs.
Diffstat (limited to 'perl-install')
-rw-r--r--perl-install/install_any.pm56
1 files changed, 56 insertions, 0 deletions
diff --git a/perl-install/install_any.pm b/perl-install/install_any.pm
index 65e13c91f..6acf32439 100644
--- a/perl-install/install_any.pm
+++ b/perl-install/install_any.pm
@@ -307,7 +307,63 @@ sub preConfigureTimezone {
add2hash_($o->{timezone}, { UTC => $utc, ntp => $ntp });
}
+sub ask_if_suppl_media {
+ my ($o) = @_;
+ return $o->ask_yesorno('', N("Do you have a supplementary CD to install?"), 0) ? "CD-ROM" : "None";
+}
+
sub selectSupplMedia {
+ my ($o, $suppl_method) = @_;
+ #- ask whether there are supplementary media
+ my $prev_asked_medium = $asked_medium;
+ if ($suppl_method && (my $suppl = ask_if_suppl_media($o)) ne 'None') {
+ #- translate to method name
+ $suppl_method = 'cdrom';
+ #- by convention, the media names for suppl. CDs match /^\d+s$/
+ my $medium_name = (max(map { $_->{medium} =~ /^(\d+)s$/ ? $1 : 0 } values %{$o->{packages}{mediums}}) + 1) . "s";
+ local $::isWizard = 0;
+ my $main_method = $o->{method};
+ local $o->{method} = $suppl_method;
+ (my $cdromdev) = detect_devices::cdroms();
+ $o->ask_warn('', N("No device found")), return 'error' if !$cdromdev;
+ $cdrom = $cdromdev->{device};
+ devices::make($cdrom);
+ ejectCdrom($cdrom);
+ if ($o->ask_okcancel('', N("Insert the CD"), 1)) {
+ #- mount suppl CD in /mnt/cdrom to avoid umounting /tmp/image
+ mountCdrom("/mnt/cdrom", $cdrom);
+ log::l($@) if $@;
+ useMedium($medium_name);
+
+ #- probe for an hdlists file and then look for all hdlists listed herein
+ eval { pkgs::psUsingHdlists($o, $suppl_method, "/mnt/cdrom", $o->{packages}, $medium_name) };
+ log::l("psUsingHdlists failed: $@") if $@;
+
+ #- copy latest compssUsers.pl and rpmsrate somewhere locally
+ getAndSaveFile("/mnt/cdrom/media/media_info/compssUsers.pl", "/tmp/compssUsers.pl");
+ getAndSaveFile("/mnt/cdrom/media/media_info/rpmsrate", "/tmp/rpmsrate");
+
+ #- umount supplementary CD. Will re-ask for it later
+ getFile("XXX"); #- close still opened filehandles
+ log::l("Umounting suppl. CD, back to medium 1");
+ eval { fs::umount("/mnt/cdrom") };
+ #- re-mount CD 1 if this was a cdrom install
+ if ($main_method eq 'cdrom') {
+ eval {
+ my $dev = detect_devices::tryOpen($cdrom);
+ ioctl($dev, c::CDROMEJECT(), 1);
+ };
+ $o->ask_warn('', N("Insert the CD 1 again"));
+ mountCdrom("/tmp/image", $cdrom);
+ log::l($@) if $@;
+ $asked_medium = 1;
+ }
+ }
+ } else {
+ $suppl_method = '';
+ }
+ useMedium($prev_asked_medium); #- back to main medium
+ return $suppl_method;
}
sub load_rate_files {