From db02946e5f58e282d5056a57d50208022f2fc796 Mon Sep 17 00:00:00 2001 From: Pascal Rigaux Date: Mon, 2 Aug 2004 06:52:22 +0000 Subject: introduce ->ensure_binary_is_installed and use it --- perl-install/any.pm | 2 +- perl-install/diskdrake/dav.pm | 2 +- perl-install/do_pkgs.pm | 15 +++++++++++++++ perl-install/harddrake/sound.pm | 2 +- perl-install/lvm.pm | 2 +- perl-install/network/drakfirewall.pm | 2 +- perl-install/network/netconnect.pm | 2 +- perl-install/network/network.pm | 6 +++--- perl-install/network/nfs.pm | 2 +- perl-install/network/smb.pm | 2 +- perl-install/standalone/drakups | 2 +- perl-install/standalone/drakxtv | 2 +- 12 files changed, 28 insertions(+), 13 deletions(-) (limited to 'perl-install') diff --git a/perl-install/any.pm b/perl-install/any.pm index 33b90956e..c0c25ed13 100644 --- a/perl-install/any.pm +++ b/perl-install/any.pm @@ -249,7 +249,7 @@ sub setupBootloader__general { delete $b->{bios} if $b->{boot} ne $prev_boot; if ($b->{method} eq 'grub') { - $in->do_pkgs->ensure_is_installed('grub', "/usr/sbin/grub", 1) or return 0; + $in->do_pkgs->ensure_binary_is_installed('grub', "grub", 1) or return 0; } bootloader::set_profiles($b, $profiles); diff --git a/perl-install/diskdrake/dav.pm b/perl-install/diskdrake/dav.pm index 51b6699a1..7481cb631 100644 --- a/perl-install/diskdrake/dav.pm +++ b/perl-install/diskdrake/dav.pm @@ -11,7 +11,7 @@ sub main { my ($in, $all_hds) = @_; my $davs = $all_hds->{davs}; - $in->do_pkgs->ensure_is_installed('davfs', '/sbin/mount.davfs') or return; + $in->do_pkgs->ensure_binary_is_installed('davfs', 'mount.davfs') or return; my $quit; do { diff --git a/perl-install/do_pkgs.pm b/perl-install/do_pkgs.pm index 005e61c9a..f0feda785 100644 --- a/perl-install/do_pkgs.pm +++ b/perl-install/do_pkgs.pm @@ -24,6 +24,21 @@ sub ensure_is_installed { 1; } +sub ensure_binary_is_installed { + my ($do, $pkg, $binary, $b_auto) = @_; + + if (!whereis_binary($binary, $::prefix)) { + $do->in->ask_okcancel('', N("The package %s needs to be installed. Do you want to install it?", $pkg), 1) + or return if !$b_auto; + $do->install($pkg) or return; + } + if (!whereis_binary($binary, $::prefix)) { + $do->in->ask_warn('', N("Mandatory package %s is missing", $pkg)); + return; + } + 1; +} + sub ensure_is_installed_if_available { my ($do, $pkg, $file) = @_; if (! -e "$::prefix$file" && !$::testing) { diff --git a/perl-install/harddrake/sound.pm b/perl-install/harddrake/sound.pm index 438d4b8b0..a13608201 100644 --- a/perl-install/harddrake/sound.pm +++ b/perl-install/harddrake/sound.pm @@ -161,7 +161,7 @@ sub do_switch { $modules_conf->set_sound_slot("sound-slot-$index", $new_driver); $modules_conf->write; if ($new_driver =~ /^snd-/) { # new driver is an alsa one - $in->do_pkgs->ensure_is_installed('alsa-utils', '/usr/sbin/alsactl'); + $in->do_pkgs->ensure_binary_is_installed('alsa-utils', 'alsactl'); rooted("service alsa start") if $::isStandalone && !$blacklisted; rooted("/sbin/chkconfig --add alsa") if $::isStandalone; load($modules_conf, $new_driver) if $::isStandalone; # service alsa is buggy diff --git a/perl-install/lvm.pm b/perl-install/lvm.pm index e63daa1ff..baf8e6f00 100644 --- a/perl-install/lvm.pm +++ b/perl-install/lvm.pm @@ -64,7 +64,7 @@ sub lvm_cmd_or_die { sub check { my ($in) = @_; - $in->do_pkgs->ensure_is_installed('lvm2', '/sbin/lvm2') or return; + $in->do_pkgs->ensure_binary_is_installed('lvm2', 'lvm2') or return; init(); 1; } diff --git a/perl-install/network/drakfirewall.pm b/perl-install/network/drakfirewall.pm index 5ade3db27..6fe4a629c 100644 --- a/perl-install/network/drakfirewall.pm +++ b/perl-install/network/drakfirewall.pm @@ -130,7 +130,7 @@ sub set_ports { my ($in, $disabled, $ports) = @_; my $shorewall = network::shorewall::read($in, 'not_silent') || network::shorewall::default_interfaces($in) or die N("No network card"); if (!$disabled || -x "$::prefix/sbin/shorewall") { - $in->do_pkgs->ensure_is_installed('shorewall', '/sbin/shorewall', $::isInstall) or return; + $in->do_pkgs->ensure_binary_is_installed('shorewall', 'shorewall', $::isInstall) or return; $shorewall->{disabled} = $disabled; $shorewall->{ports} = $$ports; diff --git a/perl-install/network/netconnect.pm b/perl-install/network/netconnect.pm index 1cfa15075..e08914a7e 100644 --- a/perl-install/network/netconnect.pm +++ b/perl-install/network/netconnect.pm @@ -634,7 +634,7 @@ killall pppd post => sub { network::modem::ppp_configure($in, $modem); $netc->{$_} = 'ppp0' foreach 'NET_DEVICE', 'NET_INTERFACE'; - $in->do_pkgs->ensure_is_installed('kdenetwork-kppp', '/usr/bin/kppp'); + $in->do_pkgs->ensure_binary_is_installed('kdenetwork-kppp', 'kppp'); $handle_multiple_cnx->(); }, }, diff --git a/perl-install/network/network.pm b/perl-install/network/network.pm index 1af6b6a44..06e86155c 100644 --- a/perl-install/network/network.pm +++ b/perl-install/network/network.pm @@ -410,7 +410,7 @@ sub configureNetwork2 { my ($in, $_prefix, $netc, $intf) = @_; my $etc = "$::prefix/etc"; if (!$::testing) { - $netc->{wireless_eth} and $in->do_pkgs->ensure_is_installed('wireless-tools', '/sbin/iwconfig', 'auto'); + $netc->{wireless_eth} and $in->do_pkgs->ensure_binary_is_installed('wireless-tools', 'iwconfig', 'auto'); write_conf("$etc/sysconfig/network", $netc); write_resolv_conf("$etc/resolv.conf", $netc) if ! $netc->{DHCP}; write_interface_conf("$etc/sysconfig/network-scripts/ifcfg-$_->{DEVICE}", $_, $netc, $::prefix) foreach grep { $_->{DEVICE} ne 'ppp0' } values %$intf; @@ -419,8 +419,8 @@ sub configureNetwork2 { any { $_->{BOOTPROTO} eq "dhcp" } values %$intf and $in->do_pkgs->install($netc->{dhcp_client} || 'dhcp-client'); if ($netc->{ZEROCONF_HOSTNAME}) { - $in->do_pkgs->ensure_is_installed('tmdns', '/sbin/tmdns', 'auto') if !$in->do_pkgs->is_installed('bind'); - $in->do_pkgs->ensure_is_installed('zcip', '/sbin/zcip', 'auto'); + $in->do_pkgs->ensure_binary_is_installed('tmdns', 'tmdns', 'auto') if !$in->do_pkgs->is_installed('bind'); + $in->do_pkgs->ensure_binary_is_installed('zcip', 'zcip', 'auto'); write_zeroconf("$etc/tmdns.conf", $netc->{ZEROCONF_HOSTNAME}); } else { run_program::rooted($::prefix, "chkconfig", "--del", $_) foreach qw(tmdns zcip) } # disable zeroconf any { $_->{BOOTPROTO} =~ /^(pump|bootp)$/ } values %$intf and $in->do_pkgs->install('pump'); diff --git a/perl-install/network/nfs.pm b/perl-install/network/nfs.pm index 39faa716e..37dd954e5 100644 --- a/perl-install/network/nfs.pm +++ b/perl-install/network/nfs.pm @@ -29,7 +29,7 @@ sub to_dev_raw { sub check { my ($_class, $in) = @_; - $in->do_pkgs->ensure_is_installed('nfs-utils-clients', '/usr/sbin/showmount') or return; + $in->do_pkgs->ensure_binary_is_installed('nfs-utils-clients', 'showmount') or return; system('/etc/init.d/portmap start') if system('/etc/init.d/portmap status') != 0; 1; } diff --git a/perl-install/network/smb.pm b/perl-install/network/smb.pm index 2deeb9507..26b61c518 100644 --- a/perl-install/network/smb.pm +++ b/perl-install/network/smb.pm @@ -32,7 +32,7 @@ sub to_dev_raw { sub check { my ($_class, $in) = @_; - $in->do_pkgs->ensure_is_installed('samba-client', '/usr/bin/nmblookup'); + $in->do_pkgs->ensure_binary_is_installed('samba-client', 'nmblookup'); } sub smbclient { diff --git a/perl-install/standalone/drakups b/perl-install/standalone/drakups index 9ebadc838..a3027d098 100755 --- a/perl-install/standalone/drakups +++ b/perl-install/standalone/drakups @@ -380,6 +380,6 @@ foreach my $i (@pages) { #------------------------------------------------------------------ # let's start the show: -$in->do_pkgs->ensure_is_installed('nut-server', '/usr/sbin/upsd') if !$::testing; +$in->do_pkgs->ensure_binary_is_installed('nut-server', 'upsd') if !$::testing; $w->{rwindow}->show_all; $w->main; diff --git a/perl-install/standalone/drakxtv b/perl-install/standalone/drakxtv index 40e78fb09..b57547113 100755 --- a/perl-install/standalone/drakxtv +++ b/perl-install/standalone/drakxtv @@ -35,7 +35,7 @@ sub scan4channels() { # xawtv has been installed by DrakX when/if it's detected a tv # card. - $in->do_pkgs->ensure_is_installed('xawtv', '/usr/bin/scantv'); + $in->do_pkgs->ensure_binary_is_installed('xawtv', 'scantv'); my ($ftable_id, $norm); # this table must be checked on each xawtv release: -- cgit v1.2.1