summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlivier Blin <oblin@mandriva.com>2007-10-03 22:44:07 +0000
committerOlivier Blin <oblin@mandriva.com>2007-10-03 22:44:07 +0000
commit1a2aac919209a9b8302eacbd18897e7f2bbd5fed (patch)
tree05725e883002f0866eeb04be000746c20cb16980
parentb44485c6469e43fb8b57a4ad20270ddb78cbaf55 (diff)
downloaddraklive-1a2aac919209a9b8302eacbd18897e7f2bbd5fed.tar
draklive-1a2aac919209a9b8302eacbd18897e7f2bbd5fed.tar.gz
draklive-1a2aac919209a9b8302eacbd18897e7f2bbd5fed.tar.bz2
draklive-1a2aac919209a9b8302eacbd18897e7f2bbd5fed.tar.xz
draklive-1a2aac919209a9b8302eacbd18897e7f2bbd5fed.zip
use new module dependencies functions from list_modules (such as modname2path)
-rwxr-xr-xdraklive31
1 files changed, 9 insertions, 22 deletions
diff --git a/draklive b/draklive
index 6cf8c79..21cd9f4 100755
--- a/draklive
+++ b/draklive
@@ -294,22 +294,6 @@ my %overlay = (
},
);
-my %moddeps;
-sub load_moddeps {
- my ($root, $kernel_path) = @_;
- my $get_modname = sub { first($_[0] =~ m!^$kernel_path/kernel/(?:.*/|)(.*?)\.k?o!) };
- %moddeps = (map {
- my ($f, $deps) = split ':';
- my $modname = $get_modname->($f);
- $modname => { full => $f, deps => [ map { $get_modname->($_) } split ' ', $deps ] };
- } cat_($root . $kernel_path . '/modules.dep'));
-}
-sub moddeps_closure {
- my ($module) = @_;
- my @deps = @{$moddeps{$module}{deps}};
- (map { moddeps_closure($_) } @deps), @deps;
-}
-
sub directory_usage { first(split /\s/, `du -sb $_[0]`) }
#- expand only if the pattern contains '*'
@@ -471,11 +455,12 @@ sub create_initrd_for_media {
my $kernel = find_kernel($live);
print "using kernel $kernel\n";
- load_moddeps(get_system_root($live), "/lib/modules/" . $kernel);
+ my $kernel_root = "/lib/modules/" . $kernel;
+ list_modules::load_dependencies(get_system_root($live) . $kernel_root . "/modules.dep");
- my ($modules, $skipped) = partition { exists $moddeps{$_} }
+ my ($modules, $skipped) = partition { list_modules::modname2filename($_) }
uniq(map { modules::cond_mapping_24_26($_) } category2modules(get_media_setting($media, 'modules')));
- my ($extra_modules, $extra_missing) = partition { exists $moddeps{$_} }
+ my ($extra_modules, $extra_missing) = partition { list_modules::modname2filename($_) }
nls_modules($live),
get_media_fs_module($media),
@{get_media_setting($media, 'extra_modules') || []},
@@ -493,9 +478,11 @@ sub create_initrd_for_media {
@$modules = difference2($modules, $live->{system}{exclude_modules});
}
- my @module_deps = uniq(map { moddeps_closure($_) } @$modules);
- run_program::run('gzip', '>', $initrd_tree . "/modules/$_.ko", '-dc', get_system_root($live) . $moddeps{$_}{full})
- foreach @module_deps, @$modules;
+ my @module_deps = uniq(map { list_modules::dependencies_closure($_) } @$modules);
+ foreach my $m (@module_deps, @modules) {
+ my $full = list_modules::modname2path($m);
+ run_program::run('gzip', '>', $initrd_tree . "/modules/$m.ko", '-dc', get_system_root($live) . $full);
+ }
cp_f((map { $live->{settings}{config_root} . '/' . $_ } @{$live->{system}{additional_modules}}), $initrd_tree . "/modules/");
@$skipped and print STDERR "skipped modules: " . join(' ', sort(@$skipped)) . "\n";