From b4222fa105800fd7ad0c75d92fbe00c558f2cee3 Mon Sep 17 00:00:00 2001 From: Pascal Rigaux Date: Thu, 9 Aug 2007 10:45:56 +0000 Subject: - update_kernel: now require install rpms or rpm files as arguments (this allow specifying precisely which installed kernels are used) nb: - RPMS/ is not used anymore, pkgs given an command line are installed directly in all.kernels/ - RPMS/.main is replaced by all.kernels/.list which keeps the ordering of kernels given to update_kernel --- images/Makefile | 3 ++- images/NEWS | 3 +++ images/make_boot_img | 6 ++---- images/update_kernel | 47 ++++++++++++++++------------------------------- 4 files changed, 23 insertions(+), 36 deletions(-) (limited to 'images') diff --git a/images/Makefile b/images/Makefile index 0bd56c910..668a0c58f 100644 --- a/images/Makefile +++ b/images/Makefile @@ -2,6 +2,7 @@ include ../Makefile.config VERSION=1.13 PRODUCT=drakx-installer-images +KERNELS=$(shell rpm -qf /lib/modules/2.*) IMAGES_DEST = $(ROOTDEST)/install/images @@ -16,7 +17,7 @@ images: all.kernels cd images ; md5sum *.{img,iso}* > MD5SUM all.kernels: update_kernel ../kernel/list_modules.pm - ./update_kernel + ./update_kernel $(KERNELS) tar: rm -rf $(PRODUCT)*.tar* $(PRODUCT)-$(VERSION) diff --git a/images/NEWS b/images/NEWS index 94db91b6b..7a63e22b7 100644 --- a/images/NEWS +++ b/images/NEWS @@ -1,3 +1,6 @@ +- update_kernel: now require install rpms or rpm files as arguments + (this allow specifying precisely which installed kernels are used) + Version 1.13 - 8 August 2007, by Pascal "Pixel" Rigaux - add modules.alias in /modules/ as required by stage2 with new libldetect diff --git a/images/make_boot_img b/images/make_boot_img index ed56e0ec3..e08e50ef5 100755 --- a/images/make_boot_img +++ b/images/make_boot_img @@ -32,9 +32,7 @@ sub mke2fs { _ "mkdir -p $tmp_mnt"; mkdir "images"; -my @kernels = all('all.kernels'); -my $main = chomp_(cat_('RPMS/.main')) || $kernels[0]; -@kernels = uniq($main, @kernels); +my @kernels = chomp_(cat_('all.kernels/.list')); my @all_images = ( if_($arch =~ /i.86/, 'isolinux', 'boot.iso', 'all.img', 'hd_grub.img'), @@ -63,7 +61,7 @@ foreach my $img (@images) { } elsif ($extension eq 'img') { print STDERR "calling boot_img_$arch for $img\n"; $::{"boot_img_$arch"}->($type, $I, "$img-$_", "all.kernels/$_/vmlinuz") foreach @kernels; - rename("$img-$main", $img); + rename("$img-$kernels[0]", $img); } else { die "unknown image $img"; } diff --git a/images/update_kernel b/images/update_kernel index b39342c33..9429a209a 100755 --- a/images/update_kernel +++ b/images/update_kernel @@ -1,6 +1,6 @@ #!/usr/bin/perl -# this script takes kernels rpms from RPMS/ or /lib/modules/ +# this script takes command kernel rpms (either installed rpms or rpm files) # and create various files in all_kernels/: # all.kernels/VER/all_modules.tar (used for all.rdz) # all.kernels/VER/modules.dep @@ -17,50 +17,37 @@ my $rpm = 'rpm --nosignature'; my $MOVE = $ARGV[0] eq '--move' && shift; -@ARGV <= 1 or die "usage: ./update_kernel [--move] []\n"; +@ARGV or die "usage: ./update_kernel [--move] ( ... | ...)\n"; eval { rm_rf('all.kernels') }; #- remove old things mkdir 'all.kernels'; -my $main = chomp_(cat_('RPMS/.main')); +my @kernels = map { + my $kern_ver = rpm2version($_); + if (/\.rpm$/) { + extract_kernel($_, $kern_ver); + } else { + extract_installed_rpm('', $kern_ver); + } + $kern_ver; +} @ARGV; -if (@ARGV) { - install_kernel($ARGV[0]); -} +sys('cp', '-f', "all.kernels/$kernels[0]/modules.description", '.'); -if (glob("RPMS/*.rpm")) { - extract_kernel($_) foreach glob("RPMS/*.rpm"); -} else { - my @l = all('/lib/modules'); - @l = grep { /legacy/ } @l if arch() =~ /i.86/; - extract_installed_rpm('/', $_) foreach @l; -} +output('all.kernels/.list', map { "$_\n" } @kernels); sub system_verbose { print join(' ', @_), "\n"; system(@_) } sub sys { &system_verbose; $? and die } sub rpm2version { my ($kernel_rpm) = @_; - `$rpm -qpl $kernel_rpm` =~ m!/boot/vmlinuz-(.*)! && $1 or die "can't find vmlinuz in $kernel_rpm\n"; -} - -sub install_kernel { - my ($kernel_rpm) = @_; - my $basename = basename($kernel_rpm); - warn "Installing rpm $basename in RPMS\n"; - mkdir 'RPMS'; - cp_af($kernel_rpm, "RPMS/$basename"); - - if (!$main) { - $main = rpm2version($kernel_rpm); - output('RPMS/.main', "$main\n"); - } + my $opt = -e $kernel_rpm ? '-qpl' : '-ql'; + `$rpm $opt $kernel_rpm` =~ m!/boot/vmlinuz-(.*)! && $1 or die "can't find vmlinuz in $kernel_rpm (is it installed?)\n"; } sub extract_kernel { - my ($kernel_rpm) = @_; + my ($kernel_rpm, $kern_ver) = @_; - my $kern_ver = rpm2version($kernel_rpm); my $dir = "all.kernels/$kern_ver"; warn "Extracting kernel $kern_ver\n"; @@ -90,9 +77,7 @@ sub extract_installed_rpm { } sys('perl', '../kernel/modules.pl', 'remove_unneeded_modules', $kern_ver); - sys('perl', '../kernel/modules.pl', 'make_modules_per_image', $kern_ver); - sys('cp', '-f', "$local_dir/modules.description", '.') if $kern_ver eq $main || !$main; rm_rf("$local_dir/modules"); } -- cgit v1.2.1