#!/usr/bin/perl use list_modules; my %kinds = ( scsi => 'disk/scsi|hardware_raid', network => 'network/main|usb', ); my %kinds2all_modules = map { $_ => [ list_modules::category2modules($kinds{$_}) ]; } keys %kinds; $kinds2all_modules{usb} = [ qw(usb-uhci usb-ohci ehci-hcd) ]; use Data::Dumper; print Data::Dumper->Dump([\%kinds2all_modules], ['$kinds2all_modules']); print <<'EOF'; my @l = map { /^(\S+)\s*:/ ? $1 : () } `lspcidrake`; my %kinds2modules = map { $_ => [ intersection(\@l, $kinds2all_modules->{$_}) ]; } keys %$kinds2all_modules; if (my @scsi = @{$kinds2modules{scsi}}) { print "probeall scsi_hostadapter ", join(" ", @scsi), "\n"; } if (my @usb = @{$kinds2modules{usb}}) { print "probeall usb-interface ", join(" ", @usb), "\n"; } my $eth = 0; foreach (@{$kinds2modules{network}}) { print "alias eth$eth $_\n"; $eth++; } sub intersection { my (%l, @m); @l{@{shift @_}} = (); foreach (@_) { @m = grep { exists $l{$_} } @$_; %l = (); @l{@m} = () } keys %l } EOF