a few tweaks for having modules.list correctly updated
[build.git] / kupdate.sh
1 #!/bin/bash
2
3 kernelrpm=$1
4 vnetrpm=$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 vnet.rpm"
20     echo "   where kernel.rpm and vnet.rpm are 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" -a $(rpm -qip $filename | wc -l) -eq 1 ] ; then
29         echo "$filename not a valid rpm file"
30         usage
31     fi
32 }
33
34 [ -z "$kernelrpm" -o  -z "$vnetrpm" ] && usage
35 checkrpm $kernelrpm
36 checkrpm $vnetrpm
37
38 isofs=/plc/root/usr/share/bootcd/build/isofs
39 tmpdir=$(mktemp -d /tmp/bootcd.XXXXXX)
40 cur=`pwd`
41 if [ -f ${cur}/merge_hw_tables.py ] ; then
42     MERGE=${cur}/merge_hw_tables.py
43     chmod +x ${cur}/merge_hw_tables.py
44 else
45     echo "fetching merge_hw_tables.py from cvs repository"
46     cvs -d :pserver:anonymous@cvs.planet-lab.org:/cvs co -p bootmanager/source/merge_hw_tables.py > ${cur}/merge_hw_tables.py
47     chmod +x ${cur}/merge_hw_tables.py
48     MERGE=${cur}/merge_hw_tables.py
49 fi
50
51 myplcwebdir=/plc/data/var/www/html
52
53 echo -n "Updating myplc planetlab yum repository with $kernelrpm"
54 rm -f ${myplcwebdir}/install-rpms/planetlab/kernel-*
55 cp $cur/$kernelrpm ${myplcwebdir}/install-rpms/planetlab
56
57 echo -n " and $vnetrpm"
58 rm -f ${myplcwebdir}/install-rpms/planetlab/vnet-*
59 cp $cur/$vnetrpm ${myplcwebdir}/install-rpms/planetlab
60 echo " ... done"
61
62 trap "bail" ERR INT
63 echo "Updating bootcd image with $kernelrpm"
64 pushd $tmpdir
65 mkdir bootcd
66 pushd bootcd
67 gzip -d -c $isofs/bootcd.img | cpio -diu
68 rm -rf boot/*
69 rm -rf lib/modules
70 rpm2cpio  $cur/$kernelrpm | cpio -diu
71 version=$(cd ./boot && ls vmlinuz* | sed 's,vmlinuz-,,')
72 depmod -b . $version
73 pci_map_file=./lib/modules/${version}/modules.pcimap
74 module_dep_file=./lib/modules/${version}/modules.dep
75 pci_table=./usr/share/hwdata/pcitable
76 $MERGE $module_dep_file $pci_map_file $pci_table ./etc/pl_pcitable
77 cp boot/vmlinuz* ${tmpdir}/kernel
78 find . | cpio --quiet -c -o | gzip -9 > ${tmpdir}/bootcd.img
79 popd
80 popd
81 mv ${tmpdir}/kernel $isofs
82 mv ${tmpdir}/bootcd.img $isofs
83 rm -rf $tmpdir
84 echo " ... done"
85 trap - ERR
86
87 echo -n "update PlanetLab-Bootstrap.tar.bz2 with $kernelrpm"
88 tmpdir=$(mktemp -d ${myplcwebdir}/boot/bootstrap.XXXXXX)
89 trap "bail" ERR INT
90 cur=`pwd`
91 cp $cur/$kernelrpm ${tmpdir}/kernel.rpm
92 cp $cur/$vnetrpm ${tmpdir}/vnet.rpm
93 echo -n " ... untarring PlanetLab-Bootstrap.tar.bz2"
94 pushd $tmpdir
95 tar -jxpf ${myplcwebdir}/boot/PlanetLab-Bootstrap.tar.bz2
96 popd
97 chroot $tmpdir rpm -e --allmatches --nodeps --noscripts vnet
98 chroot $tmpdir rpm -e --allmatches --nodeps kernel
99 files="${tmpdir}/kernel.rpm ${tmpdir}/vnet.rpm"
100 chroot $tmpdir rpm -Uvh kernel.rpm
101 chroot $tmpdir rpm -Uvh vnet.rpm
102 rm -f ./kernel.rpm
103 rm -f ./vnet.rpm
104 echo -n " ... tarring PlanetLab-Bootstrap.tar.bz2"
105 pushd $tmpdir
106 tar -jcpf ${myplcwebdir}/boot/PlanetLab-Bootstrap.tar.bz2.new ./
107 popd
108 mv ${myplcwebdir}/boot/PlanetLab-Bootstrap.tar.bz2.new ${myplcwebdir}/boot/PlanetLab-Bootstrap.tar.bz2
109 rm -rf $tmpdir
110 echo " ... done"
111 trap - ERR
112
113 exit 0