From 1a2aac919209a9b8302eacbd18897e7f2bbd5fed Mon Sep 17 00:00:00 2001 From: Olivier Blin Date: Wed, 3 Oct 2007 22:44:07 +0000 Subject: use new module dependencies functions from list_modules (such as modname2path) --- draklive | 31 +++++++++---------------------- 1 file 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"; -- cgit v1.2.1