Don't depend on pyplnet.
[bootcd.git] / kupdate.sh
1 #!/bin/bash
2
3 kernelrpm=$1
4 isofsdir=$2
5
6 tmpdir=
7 files=
8
9 bail () 
10 {
11     rm -rf $tmpdir $files
12     exit -1
13 }
14
15 usage ()
16 {
17     program=$(basename $0)
18     echo "USAGE:"
19     echo " $program kernel.rpm"
20     echo "   where kernel.rpm is the corresponding rpm files,"
21     echo "   which might live in ./RPMS/..."
22     exit -1
23 }
24
25 checkrpm ()
26 {
27     filename=$1
28     if [ -f "$filename" ] ; then
29         if [ $(rpm -qip $filename | wc -l) -eq 1 ] ; then
30             echo "$filename not a valid rpm file"
31             usage
32         fi
33     fi
34 }
35
36 [ -z "$kernelrpm" ] && usage
37 checkrpm $kernelrpm
38
39 tmpdir=$(mktemp -d /var/tmp/bootcd.XXXXXX)
40 trap "bail" ERR INT
41 echo "Updating bootcd image with $kernelrpm"
42 pushd $tmpdir
43 mkdir bootcd
44 pushd bootcd
45 gzip -d -c $isofsdir/bootcd.img | cpio -diu
46 rm -rf boot/*
47 rm -rf lib/modules
48 rpm2cpio  $kernelrpm | cpio -diu
49 version=$(cd ./boot && ls vmlinuz* | sed 's,vmlinuz-,,')
50 depmod -b . $version
51 cp boot/vmlinuz* ${tmpdir}/kernel
52 find . | cpio --quiet -c -o | gzip -9 > ${tmpdir}/bootcd.img
53 popd
54 popd
55
56 #
57 mv ${isofsdir}/kernel ${tmpdir}/kernel.orig
58 mv ${isofsdir}/bootcd.img ${tmpdir}/bootcd.img.orig
59
60 #
61 mv ${tmpdir}/kernel ${isofsdir}/kernel
62 mv ${tmpdir}/bootcd.img ${isofsdir}/bootcd.img
63 rm -rf $tmpdir
64
65 echo " ... done"
66 trap - ERR
67 exit 0