#!/usr/bin/perl
#
# Guillaume Cottenceau (gc@mandrakesoft.com)
#
# Copyright 2000 MandrakeSoft
#
# This software may be freely redistributed under the terms of the GNU
# public license.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
local $_ = join '', @ARGV;
"@ARGV" =~ /-h/ and die "usage: drivers_install [drivertype1 drivertype2..]\n";
sub pci_probe {
my @l;
foreach (`/usr/bin/lspcidrake -v`) {
push @l, do {
if (/^(\S+)\s*: (.+) \[([^\]]+)/) {
{ driver => $1, description => $2, type => $3 };
} elsif (/^(\S+)\s*: (.+)/) {
{ driver => $1, description => $2, type => 'NOT_DEFINED' };
} else {
next;
}
};
}
@l;
}
sub install_module($$) {
my ($driver, $descr) = @_;
print "Installing driver $driver (for \"$descr\")\n";
system("/sbin/modprobe", $driver) and print "\tfailed\n";
my $already_usb if 0;
if (!$already_usb && $driver =~ /usb/) {
$already_usb = 1;
print "Installing driver usbkdb\n";
system('/sbin/modprobe', 'usbkbd') and print "\tfailed\n";
print "Installing driver keybdev\n";
system('/sbin/modprobe', 'keybdev') and print "\tfailed\n";
}
}
#- start
foreach $card (pci_probe()) {
$card->{type} eq "DISPLAY_VGA" and next;
$card->{driver} eq "unknown" and next;
$card->{driver} =~ "Card:" and next;
if (!@ARGV || grep { $card->{type} =~ /$_/i } @ARGV) {
install_module($card->{driver}, $card->{description});
}
}
#-------------------------------------------------
#- $Log$
#- Revision 1.6 2002/09/10 10:07:23 gc
#- drvinst is broken when we don't -v
#-
#- Revision 1.5 2001/09/27 16:00:05 gc
#- don't install usb keyboard drivers more than once
#-
#- Revision 1.4 2001/09/27 15:57:55 gc
#- try to fix usb keyboards
#-
#- Revision 1.3 2001/03/29 11:33:28 gc
#- test for "Card:" and not install, some videoboards are not reported as DISPLAY_VGA :-(
#-
#- Revision 1.2 2001/02/12 18:42:17 uid553
#- pixelization
#-
#- Revision 1.1 2001/02/12 14:31:10 uid535
#- - add lspci, lspcidrake, vim-minimal
#- - better /etc/issue
#- - better PS1
#- - write embryonic tool (installation of detected drivers according to pci cards)
#-
-branch
Mageia Installer and base platform for many utilities