diff options
Diffstat (limited to 'make_boot_img')
-rwxr-xr-x | make_boot_img | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/make_boot_img b/make_boot_img index e304f964b..1deb23139 100755 --- a/make_boot_img +++ b/make_boot_img @@ -69,6 +69,32 @@ if ($arch =~ /i.86/ && $img =~ /all/) { sub install_stripped { _ "strip $_[0]"; _ "$sudo install $_[0] $_[1]" } +sub patch_pcmcia_config { + my ($pcmcia_root) = @_; + my @ignore_modules_in_deps = qw(pcmcia_core ds); + + my @conf_contents = cat_("$pcmcia_root/pcmcia/config"); + die "$pcmcia_root/pcmcia/config seems short\n" if listlength(@conf_contents) < 10; + + #- remove all modules with directories since we don't support that during install + /\s+class.*module.*/ and s|"[^"]+/([^"]+)"|"$1"|g foreach @conf_contents; + + #- adjust deps + foreach (cat_("all.modules/$main/modules.dep")) { + /^(\S+): (.*)/ and $deps{$1} = [ split ' ', $2 ] or die "could not understand `$_' in all.modules/$main/modules.dep\n"; + } + foreach my $confline (@conf_contents) { + $confline =~ /class.*\s+module\s+(.*)/ or next; + my @modules = map { /^\s*"([^"]+)"\s*$/ ? $1 : $_ } split ',', $1; + my @modules_with_deps = map { @{$deps{$_}}, $_ } @modules; + my $new_modz = join ', ', map { "\"$_\"" } uniq(difference2(\@modules_with_deps, \@ignore_modules_in_deps)); + $confline =~ s/(class.*\s+module\s+).*/$1$new_modz/; + } + + output("/tmp/make_boot_image_pcmcia_config", @conf_contents); + _ "$sudo mv /tmp/make_boot_image_pcmcia_config $pcmcia_root/pcmcia/config"; +} + sub initrd { my ($mnt, $img) = @_; my ($ltype, $I) = $type =~ /(.*?)(64)/; $ltype ||= $type; @@ -95,7 +121,7 @@ sub initrd { my $ftype = $type =~ /^(all)$/ ? "pcmcia" : $type; if ($ftype eq "pcmcia" && $arch !~ /ppc/ && $arch !~ /ia64/) { _ "$sudo cp -a /etc/pcmcia $mnt/etc"; - _ "$sudo patch --no-backup-if-mismatch -p0 -d $mnt/etc < tools/pcmcia_config.patch"; + patch_pcmcia_config("$mnt/etc"); } my ($ext) = $img =~ /rdz-(.*)/ or die "bad initrd name ($img)"; $modz = "all.modules$I/$ext"; @@ -112,6 +138,7 @@ sub initrd { # _ "rm -f $tmp"; } + sub boot_img_i386 { my ($mnt, $img, $kernel) = @_; |