summaryrefslogtreecommitdiffstats
path: root/Makefile
Commit message (Collapse)AuthorAgeFilesLines
* don't upload live_update (tis deprecated)Pascal Rigaux2003-09-161-1/+0
|
* no need to upload rpmtools.pm anymore (in /misc)Pascal Rigaux2003-09-091-1/+0
|
* - Strip modules on AMD64 with K. O. scriptGwenolé Beauchesne2003-08-201-1/+1
| | | | | - Split network_gigabit_usb.img into network_{gigabit,usb}.img on AMD64
* Fix typo in last-minute-change commitGwenolé Beauchesne2003-08-201-1/+1
|
* Merge from AMD64 branch, also fix all.rdz generation.Gwenolé Beauchesne2003-08-191-1/+12
|
* hd_usb.img -> hdcdrom_usb.imgGuillaume Cottenceau2003-02-281-1/+1
|
* remove other.img & usb.img, add hd_usb.img & network_gigabit_usb.imgPascal Rigaux2003-01-301-1/+1
|
* add a "cdrom-changedisk.img" special bootdisk for CD #2, for people who ↵Guillaume Cottenceau2002-09-111-0/+1
| | | | can't boot the isolinux
* ensure rescue is built and uploadedPascal Rigaux2002-07-261-2/+3
|
* all.rdz is needed to update isolinuxPascal Rigaux2002-07-171-1/+1
|
* put back "make check" when uploadingPascal Rigaux2002-07-081-1/+1
|
* have the default rule be "install" (willplizfpons)Pascal Rigaux2002-07-081-3/+3
|
* new directory "kernel" containing:Pascal Rigaux2002-07-041-84/+36
| | | | | | | | | | - all.modules all.kernels update_kernel - part of perl-install/modules.pm now in kernel/list_modules.pm and kernel/modules.pl - update_kernel cleaned (it doesn't mention module names anymore, it is now in kernel/modules.pl) - cleanup Makefile - mdk-stage1 doesn't depend on perl-install anymore (more precisely mdk-stage1/pci-resource/update-pci-ids.pl)
* upload the various compssUsers* (esp. compssUsers.server)Pascal Rigaux2002-03-111-1/+1
|
* upload on ken Mandrake/share/advertisingPascal Rigaux2002-02-191-0/+1
|
* advertising installation cleanupPascal Rigaux2002-02-191-1/+1
|
* unifieddamien2002-02-191-3/+0
|
* modified to handle adsdamien2002-02-191-1/+5
|
* re-enable make checkPascal Rigaux2002-01-251-1/+1
|
* use latest /RPMS/kernel-BOOT-*.rpm (and some hacks to update tftpboot directory)Pascal Rigaux2002-01-251-1/+1
|
* s/kenobi/ken/Pascal Rigaux2001-12-171-1/+1
|
* (dirs): cleanup + ensure errors make "make" stopPascal Rigaux2001-12-041-2/+2
|
* add target upload_only (useful when make check fails)Pascal Rigaux2001-12-041-0/+2
|
* support install from USB CDROMS (using usb-storage)Guillaume Cottenceau2001-12-041-2/+2
|
* add isolinux stuff generationPascal Rigaux2001-09-191-1/+7
|
* build the all.rdz's for isolinuxPascal Rigaux2001-09-031-1/+1
|
* cleanup unneeded stuffPascal Rigaux2001-08-301-1/+1
|
* check presence of '$' in DrakX.potPascal Rigaux2001-08-211-0/+1
|
* - Makefile (ia64): RELEASE_BOOT_IMG is all.imgGwenolé Beauchesne2001-07-271-0/+4
| | | | | | - make_boot_img (initrd): ia64: increased image to 16 MB, don't try to copy /etc/pcmcia since we don't have it
* add support for install from USB Network AdaptersGuillaume Cottenceau2001-07-031-2/+2
|
* re-adding with -kbPascal Rigaux2001-07-031-0/+1
|
* refine all.modules deps so we won't rebuild kernel stuff everytimeGuillaume Cottenceau2001-06-111-1/+4
|
* check all files are world-readable before uploadingPascal Rigaux2001-06-071-0/+4
|
* (tar): s/cfy/cfj/Pascal Rigaux2001-04-151-1/+1
|
* work when I have no alternatives kernelGuillaume Cottenceau2001-04-121-2/+4
|
* (install): clean old images/alternativesPascal Rigaux2001-04-121-1/+1
|
* move special images to dir alternativesPascal Rigaux2001-04-121-1/+4
|
* make generating MD5SUM workPascal Rigaux2001-04-021-3/+3
|
* update MD5SUM according to imagesGuillaume Cottenceau2001-04-021-1/+4
|
* (upload): fix uploading of imagesPascal Rigaux2001-04-021-2/+2
|
* - "install" requires all.modules which require "mar" and "perl-install"Pascal Rigaux2001-04-021-6/+10
| | | | | - cleanup
* update for *.img and *.rdz in directory imagesPascal Rigaux2001-03-301-24/+16
|
* support more than one boot kernel :-)Guillaume Cottenceau2001-03-291-9/+11
|
* (RELEASE_BOOT_IMG): re-add other.imgPascal Rigaux2001-03-261-1/+1
|
* mods to create/move image, to /export for PPC, use vmlinux for PPCStew Benedict2001-03-231-0/+9
| | | | | | | prepend of_dev to initrd stanza in yaboot.conf add 1-button mouse for PPC
* (upload): don't upload rpm2header (a static one made by warly is better)Pascal Rigaux2001-03-041-1/+0
|
* (upload): update the misc progsPascal Rigaux2001-02-281-2/+4
|
* have perl-install be make'd sooner in order to succeed with update_kernelGuillaume Cottenceau2001-01-291-1/+1
|
* - deprecate "hdreiser.img" since we have room for "reiserfs.o" in "hd.img"Guillaume Cottenceau2001-01-291-1/+1
| | | | | - following deprecation of "other.img", reintegrate big modules in relevant boot disks
* (upload): mdkinst_stage2 is now bzip2'ed, so upload *_stage2.bz2 instead of ↵Pascal Rigaux2001-01-291-2/+2
| | | | *_stage2.gz
an class="hl num">0; }; my @servers = qw(FBDev VGA16); #-) if (arch() eq "alpha") { require Xconfigurator; my $card = Xconfigurator::cardConfigurationAuto(); Xconfigurator::updateCardAccordingName($card, $card->{type}) if $card && $card->{type}; @servers = $card->{server} || "TGA"; #-@servers = qw(SVGA 3DLabs TGA) } elsif (arch() =~ /^sparc/) { local $_ = cat_("/proc/fb"); if (/Mach64/) { @servers = qw(Mach64) } elsif (/Permedia2/) { @servers = qw(3DLabs) } else { @servers = qw(Xsun24) } } elsif (arch() eq "ppc") { @servers = qw(Xpmac); } foreach (@servers) { log::l("Trying with server $_"); my $dir = "/usr/X11R6/bin"; my $prog = /Xsun|Xpmac/ ? $_ : "XF86_$_"; unless (-x "$dir/$prog") { unlink $_ foreach glob_("$dir/X*"); install_any::getAndSaveFile("Mandrake/mdkinst$dir/$prog", "$dir/$prog") or die "failed to get server $prog: $!"; chmod 0755, "$dir/$prog"; } if (/FB/) { !$o->{vga16} && $o->{allowFB} or next; $o->{allowFB} = &$launchX($prog) #- keep in mind FB is used. and goto OK; } else { $o->{vga16} = 1 if /VGA16/; &$launchX($prog) and goto OK; } } return undef; } } OK: install_gtk::init_sizes(); install_gtk::default_theme($o); install_gtk::create_logo_window($o); $my_gtk::force_center = [ $::rootwidth - $::windowwidth, $::logoheight, $::windowwidth, $::windowheight ]; (bless {}, ref $type || $type)->SUPER::new($o); } sub enteringStep { my ($o, $step) = @_; printf "Entering step `%s'\n", $o->{steps}{$step}{text}; $o->SUPER::enteringStep($step); install_gtk::create_steps_window($o); install_gtk::create_help_window($o); } sub leavingStep { my ($o, $step) = @_; $o->SUPER::leavingStep($step); } #-###################################################################################### #- Steps Functions #-###################################################################################### sub selectLanguage { my ($o, $first_time) = @_; $o->SUPER::selectLanguage; Gtk->set_locale; install_gtk::install_theme($o); $o->ask_warn('', _("Your system is low on resource. You may have some problem installing Linux-Mandrake. If that occurs, you can try a text install instead. For this, press `F1' when booting on CDROM, then enter `text'.")) if $first_time && availableRamMB() < 60; # 60MB } #------------------------------------------------------------------------------ sub selectInstallClass1 { my ($o, $verif, $l, $def, $l2, $def2) = @_; $::live || @$l == 1 and return $o->SUPER::selectInstallClass1($verif, $l, $def, $l2, $def2); my $w = my_gtk->new(''); my ($radio, $focused); gtkadd($w->{window}, gtkpack($o->create_box_with_title(_("Please, choose one of the following classes of installation:")), (my @radios = map { $radio = new Gtk::RadioButton($_, $radio ? $radio : ()); $radio->set_active($_ eq $def); $radio } @$l), gtkadd(create_hbox(), map { my $v = $_; my $b = new Gtk::Button(translate($_)); $focused = $b if $_ eq $def2; gtksignal_connect($b, "clicked" => sub { $w->{retval} = $v; Gtk->main_quit }); } @$l2) )); $focused->grab_focus if $focused; $w->main; mapn { $verif->($_[1]) if $_[0]->active } \@radios, $l; install_gtk::create_steps_window($o); $w->{retval}; } #------------------------------------------------------------------------------ sub selectMouse { my ($o, $force) = @_; my %old = %{$o->{mouse}}; $o->SUPER::selectMouse($force); my $mouse = $o->{mouse}; $mouse->{type} eq 'none' || $old{type} eq $mouse->{type} && $old{name} eq $mouse->{name} && $old{device} eq $mouse->{device} && !$force and return; local $my_gtk::grab = 1; #- unsure a crazy mouse don't go wild clicking everywhere while (1) { log::l("telling X server to use another mouse"); eval { modules::load('serial') } if $mouse->{device} =~ /ttyS/; if (!$::testing) { symlinkf($mouse->{device}, "/dev/mouse"); c::setMouseLive($ENV{DISPLAY}, mouse::xmouse2xId($mouse->{XMOUSETYPE}), $mouse->{nbuttons} < 3); } install_gtk::test_mouse($mouse) and return; $o->SUPER::selectMouse(1); $mouse = $o->{mouse}; } } #------------------------------------------------------------------------------ sub chooseSizeToInstall { my ($o, $packages, $min_size, $def_size, $max_size_, $availableC, $individual) = @_; my $max_size = min($max_size_, $availableC); my $enough = $max_size == $max_size_; my $percentage = int 100 * $max_size / $max_size_; #- don't ask anything if the difference between min and max is too small log::l("chooseSizeToInstall: min_size=$min_size, def_size=$def_size, max_size=$max_size_, available=$availableC"); return $max_size if $min_size && $max_size / $min_size < 1.05; log::l("choosing size to install between $min_size and $max_size"); my $w = my_gtk->new(''); my $adj = create_adjustment(int(100 * $def_size / $max_size_), $min_size * 100 / $max_size_, $percentage); my $spin = gtkset_usize(new Gtk::SpinButton($adj, 0, 0), 20, 0); my $val; require pkgs; gtkadd($w->{window}, gtkpack(new Gtk::VBox(0,20), _("The total size for the groups you have selected is approximately %d MB.\n", pkgs::correctSize($max_size_ / sqr(1024))) . ($enough ? _("If you wish to install less than this size, select the percentage of packages that you want to install. A low percentage will install only the most important packages; a percentage of 100%% will install all selected packages.") : _("You have space on your disk for only %d%% of these packages. If you wish to install less than this, select the percentage of packages that you want to install. A low percentage will install only the most important packages; a percentage of %d%% will install as many packages as possible.", $percentage, $percentage)) . ($individual ? "\n\n" . _("You will be able to choose them more specifically in the next step.") : ''), create_packtable({}, [ _("Percentage of packages to install") . ' ', $spin, "%", my $mb = new Gtk::Label ], [ undef, new Gtk::HScrollbar($adj) ], ), create_okcancel($w) ) ); $spin->signal_connect(changed => my $changed = sub { $val = $spin->get_value_as_int / 100 * $max_size_; $mb->set(sprintf("(%dMB)", pkgs::correctSize($val / sqr(1024)))); }); &$changed(); $spin->signal_connect(activate => sub { $w->{retval} = 1; Gtk->main_quit }); $spin->grab_focus(); $w->main and $val + 1; #- add a single byte (hack?) to make selection of 0 bytes ok. } sub choosePackagesTree { my ($o, $packages, $compss) = @_; $o->set_help('choosePackagesTree'); my ($curr, $parent, $info_widget, $w_size, $go, $idle, $flat, $auto_deps); my (%wtree, %ptree); my $w = my_gtk->new(''); my $details = new Gtk::VBox(0,0); my $tree = Gtk::CTree->new(3, 0); $tree->set_selection_mode('browse'); $tree->set_column_width(0, 200); $tree->set_column_auto_resize($_, 1) foreach 1..2; gtkadd($w->{window}, gtkpack_(new Gtk::VBox(0,5), 0, _("Choose the packages you want to install"), 1, gtkpack(new Gtk::HBox(0,0), createScrolledWindow($tree), gtkadd(gtkset_usize(new Gtk::Frame(_("Info")), $::windowwidth - 490, 0), createScrolledWindow($info_widget = new Gtk::Text), )), 0, my $l = new Gtk::HBox(0,15), 0, gtkpack(new Gtk::HBox(0,10), $go = gtksignal_connect(new Gtk::Button(_("Install")), "clicked" => sub { $w->{retval} = 1; Gtk->main_quit }), ) )); gtkpack__($l, my $toolbar = new Gtk::Toolbar('horizontal', 'icons')); gtkpack__($l, gtksignal_connect(new Gtk::CheckButton(_("Automatic dependencies")), clicked => sub { invbool \$auto_deps })); $l->pack_end($w_size = new Gtk::Label(''), 0, 1, 20); $w->{window}->set_usize(map { $_ - 2 * $my_gtk::border - 4 } $::windowwidth, $::windowheight); $go->grab_focus; $w->{rwindow}->show_all; my $pix_base = [ gtkcreate_xpm($w->{window}, "$ENV{SHARE_PATH}/rpm-base.xpm") ]; my $pix_selected = [ gtkcreate_xpm($w->{window}, "$ENV{SHARE_PATH}/rpm-selected.xpm") ]; my $pix_unselect = [ gtkcreate_xpm($w->{window}, "$ENV{SHARE_PATH}/rpm-unselected.xpm") ]; my $pix_semisele = [ gtkcreate_xpm($w->{window}, "$ENV{SHARE_PATH}/rpm-semiselected.xpm") ]; my $pix_installed= [ gtkcreate_xpm($w->{window}, "$ENV{SHARE_PATH}/rpm-installed.xpm") ]; my $add_parent; $add_parent = sub { $_[0] or return undef; if (my $w = $wtree{$_[0]}) { return $w } my $s; foreach (split '/', $_[0]) { my $s2 = $s ? "$s/$_" : $_; $wtree{$s2} ||= do { my $n = $tree->insert_node($s ? $add_parent->($s) : undef, undef, [$_, '', ''], 5, (undef) x 4, 0, 0); $n; }; $s = $s2; } $tree->node_set_pixmap($wtree{$s}, 1, $pix_semisele->[0], $pix_semisele->[1]); $wtree{$s}; }; my $add_node = sub { my ($leaf, $root) = @_; my $p = pkgs::packageByName($packages,$leaf) or return; pkgs::packageMedium($p)->{selected} or return; my $node = $tree->insert_node($add_parent->($root), undef, [$leaf, '', ''], 5, (undef) x 4, 1, 0); my $pix = pkgs::packageFlagBase($p) ? $pix_base : pkgs::packageFlagSelected($p) ? $pix_selected : pkgs::packageFlagInstalled($p) ? $pix_installed : $pix_unselect; $tree->node_set_pixmap($node, 1, $pix->[0], $pix->[1]); push @{$ptree{$leaf}}, $node; }; my $add_nodes = sub { %ptree = %wtree = (); $tree->freeze; while (1) { $tree->remove_node($tree->node_nth(0) || last) } my ($root, $leaf); if ($flat = $_[0]) { $add_node->($_, undef) foreach sort grep { my $pkg = pkgs::packageByName($packages, $_); pkgs::packageMedium($pkg)->{selected} } keys %{$packages->{names}}; } else { foreach (sort @$compss) { ($root, $leaf) = m|(.*)/(.+)|o or ($root, $leaf) = ('', $_); my $pkg = pkgs::packageByName($packages, $leaf); $add_node->($leaf, $root) if pkgs::packageMedium($pkg)->{selected}; } } $tree->thaw; }; $add_nodes->($flat); my %toolbar = my @toolbar = ( ftout => [ _("Expand Tree") , sub { $tree->expand_recursive(undef) } ], ftin => [ _("Collapse Tree") , sub { $tree->collapse_recursive(undef) } ], reload=> [ _("Toggle between flat and group sorted"), sub { $add_nodes->(!$flat) } ], ); $toolbar->set_button_relief("none"); foreach (grep_index { $::i % 2 == 0 } @toolbar) { gtksignal_connect($toolbar->append_item(undef, $toolbar{$_}[0], undef, gtkxpm($tree, "$ENV{SHARE_PATH}/$_.xpm")), clicked => $toolbar{$_}[1]); } $toolbar->set_style("icons"); my $display_info = sub { my $p = pkgs::packageByName($packages, $curr) or return gtktext_insert($info_widget, ''); pkgs::extractHeaders($o->{prefix}, [$p], pkgs::packageMedium($p)); pkgs::packageHeader($p) or die; my $imp = translate($pkgs::compssListDesc{pkgs::packageFlagBase($p) ? 5 : pkgs::packageRate($p)}); gtktext_insert($info_widget, $@ ? _("Bad package") : _("Name: %s\n", pkgs::packageName($p)) . _("Version: %s\n", pkgs::packageVersion($p) . '-' . pkgs::packageRelease($p)) . _("Size: %d KB\n", pkgs::packageSize($p) / 1024) . ($imp && _("Importance: %s\n", $imp)) . "\n" . formatLines(c::headerGetEntry(pkgs::packageHeader($p), 'description'))); pkgs::packageFreeHeader($p); #c::headerFree(delete $p->[$HEADER]); 0; }; my $update_size = sub { my $size = pkgs::selectedSize($packages); $w_size->set(_("Total size: %d / %d MB", pkgs::correctSize($size / sqr(1024)), install_any::getAvailableSpace($o) / sqr(1024))); }; my $select = sub { my %l; my $isSelection = !pkgs::packageFlagSelected($_[0]); foreach (@_) { pkgs::togglePackageSelection($packages, $_, my $l = {}); @l{grep {$l->{$_}} keys %$l} = (); } if (my @l = keys %l) { #- check for size before trying to select. my $size = pkgs::selectedSize($packages); foreach (@l) { my $p = $packages->{names}{$_}; pkgs::packageFlagSelected($p) or $size += pkgs::packageSize($p); } if (pkgs::correctSize($size / sqr(1024)) > install_any::getAvailableSpace($o) / sqr(1024)) { return $o->ask_warn('', _("You can't select this package as there is not enough space left to install it")); } @l > @_ && !$auto_deps and $o->ask_okcancel('', [ $isSelection ? _("The following packages are going to be installed") : _("The following packages are going to be removed"), join(", ", common::truncate_list(20, sort @l)) ], 1) || return; $isSelection ? pkgs::selectPackage($packages, $_) : pkgs::unselectPackage($packages, $_) foreach @_; foreach (@l) { my $p = $packages->{names}{$_}; my $pix = pkgs::packageFlagSelected($p) ? $pix_selected : $pix_unselect; $tree->node_set_pixmap($_, 1, $pix->[0], $pix->[1]) foreach @{$ptree{$_}}; } &$update_size; } else { $o->ask_warn('', _("You can't select/unselect this package")); } }; my $children = sub { map { $packages->{names}{($tree->node_get_pixtext($_, 0))[0]} } gtkctree_children($_[0]) }; my $toggle = sub { if (ref $curr && ! $_[0]) { $tree->toggle_expansion($curr); } else { if (ref $curr) { my @l = grep { !pkgs::packageFlagBase($_) } $children->($curr) or return; my @unsel = grep { !pkgs::packageFlagSelected($_) } @l; my @p = @unsel ? @unsel : # not all is selected, select all @l; $select->(@p); $parent = $curr; } else { my $p = $packages->{names}{$curr} or return; if (pkgs::packageFlagBase($p)) { return $o->ask_warn('', _("This is a mandatory package, it can't be unselected")); } elsif (pkgs::packageFlagInstalled($p)) { return $o->ask_warn('', _("You can't unselect this package. It is already installed")); } elsif (pkgs::packageFlagUpgrade($p)) { if ($::expert) { if (pkgs::packageFlagSelected($p)) { $o->ask_yesorno('', _("This package must be upgraded\nAre you sure you want to deselect it?")) or return; } } else { return $o->ask_warn('', _("You can't unselect this package. It must be upgraded")); } } $select->($p); } if (my @l = $children->($parent)) { my $nb = grep { pkgs::packageFlagSelected($_) } @l; my $pix = $nb==0 ? $pix_unselect : $nb<@l ? $pix_semisele : $pix_selected; $tree->node_set_pixmap($parent, 1, $pix->[0], $pix->[1]); } } }; $tree->signal_connect(key_press_event => sub { my ($w, $e) = @_; my $c = chr($e->{keyval} & 0xff); $toggle->(0) if $e->{keyval} >= 0x100 ? $c eq "\r" || $c eq "\x8d" : $c eq ' '; 1; }); $tree->signal_connect(tree_select_row => sub { Gtk->timeout_remove($idle) if $idle; if ($_[1]->row->is_leaf) { ($curr) = $tree->node_get_pixtext($_[1], 0); $parent = $_[1]->row->parent; $idle = Gtk->timeout_add(100, $display_info); } else { $curr = $_[1]; } $toggle->(1) if $_[2] == 1; }); &$update_size; $w->main; } #------------------------------------------------------------------------------ sub installPackages { my ($o, $packages) = @_; my ($current_total_size, $last_size, $nb, $total_size, $start_time, $last_dtime, $trans_progress_total); my $w = my_gtk->new(_("Installing")); $w->{window}->set_usize($::windowwidth * 0.8, 260); my $text = new Gtk::Label; my ($msg, $msg_time_remaining, $msg_time_total) = map { new Gtk::Label($_) } '', (_("Estimating")) x 2; my ($progress, $progress_total) = map { new Gtk::ProgressBar } (1..2); gtkadd($w->{window}, gtkpack(new Gtk::VBox(0,10), _("Please wait, "), $msg, $progress, create_packtable({}, [_("Time remaining "), $msg_time_remaining], [_("Total time "), $msg_time_total], ), $text, $progress_total, '', gtkadd(create_hbox(), my $cancel = new Gtk::Button(_("Cancel"))), )); $w->sync; $msg->set(_("Preparing installation")); gtkset_mousecursor_normal($cancel->window); $cancel->signal_connect(clicked => sub { $pkgs::cancel_install = 1 }); my $oldInstallCallback = \&pkgs::installCallback; local *pkgs::installCallback = sub { my $m = shift; if ($m =~ /^Starting installation/) { $nb = $_[0]; $total_size = $_[1]; $current_total_size = 0; $start_time = time(); $msg->set(_("%d packages", $nb)); $w->flush; } elsif ($m =~ /^Starting installing package/) { $progress->update(0); my $name = $_[0]; $msg->set(_("Installing package %s", $name)); $current_total_size += $last_size; my $p = pkgs::packageByName($o->{packages}, $name); $last_size = c::headerGetEntry(pkgs::packageHeader($p), 'size'); $text->set((split /\n/, c::headerGetEntry(pkgs::packageHeader($p), 'summary'))[0] || ''); $w->flush; } elsif ($m =~ /^Progressing installing package/) { $progress->update($_[2] ? $_[1] / $_[2] : 0); my $dtime = time() - $start_time; my $ratio = $total_size ? ($_[1] + $current_total_size) / $total_size : 0; my $total_time = $ratio ? $dtime / $ratio : time(); $progress_total->update($ratio); if ($dtime != $last_dtime && $current_total_size > 10 * 1024 * 1024) { $msg_time_total->set(formatTime(10 * round($total_time / 10) + 10)); $msg_time_remaining->set(formatTime(10 * round(max($total_time - $dtime, 0) / 10) + 10)); $last_dtime = $dtime; } $w->flush; } else { unshift @_, $m; goto $oldInstallCallback } }; #- the modification is not local as the box should be living for other package installation. undef *install_any::changeMedium; *install_any::changeMedium = sub { my ($method, $medium) = @_; #- if not using a cdrom medium, always abort. $method eq 'cdrom' and do { local $my_gtk::grab = 1; my $name = pkgs::mediumDescr($o->{packages}, $medium); print "\a"; $name !~ /Application/ || ($o->{useless_thing_accepted2} ||= $o->ask_from_list_('', formatAlaTeX(_(" Warning Please read carefully the terms below. If you disagree with any portion, you are not allowed to install the next CD media. Press 'Refuse' to continue the installation without using these media. Some components contained in the next CD media are not governed by the GPL License or similar agreements. Each such component is then governed by the terms and conditions of its own specific license. Please read carefully and comply with such specific licenses before you use or redistribute the said components. Such licenses will in general prevent the transfer, duplication (except for backup purposes), redistribution, reverse engineering, de-assembly, de-compilation or modification of the component. Any breach of agreement will immediately terminate your rights under the specific license. Unless the specific license terms grant you such rights, you usually cannot install the programs on more than one system, or adapt it to be used on a network. In doubt, please contact directly the distributor or editor of the component. Transfer to third parties or copying of such components including the documentation is usually forbidden. All rights to the components of the next CD media belong to their respective authors and are protected by intellectual property and copyright laws applicable to software programs. ")), [ __("Accept"), __("Refuse") ], "Accept") eq "Accept") and $o->ask_okcancel('', _("Change your Cd-Rom! Please insert the Cd-Rom labelled \"%s\" in your drive and press Ok when done. If you don't have it, press Cancel to avoid installation from this Cd-Rom.", $name)); }; }; catch_cdie { $o->install_steps::installPackages($packages); } sub { if ($@ =~ /^error ordering package list: (.*)/) { $o->ask_yesorno('', [ _("There was an error ordering packages:"), $1, _("Go on anyway?") ], 1) and return 1; ${$_[0]} = "already displayed"; } elsif ($@ =~ /^error installing package list: (.*)/) { $o->ask_yesorno('', [ _("There was an error installing packages:"), $1, _("Go on anyway?") ], 1) and return 1; ${$_[0]} = "already displayed"; } 0; }; if ($pkgs::cancel_install) { $pkgs::cancel_install = 0; die "setstep choosePackages\n"; } $w->destroy; } sub set_help { my ($o, @l) = @_; $o->{current_help} = formatAlaTeX(join "\n", map { _ deref($help::steps{$_}) } @l); gtktext_insert($o->{help_window_text}, $o->{current_help}); 1; } #-###################################################################################### #- Wonderful perl :( #-###################################################################################### 1; #