This script can be used to update a local myplc installation with a newly
[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     echo "$0 kernel.rpm vnet.rpm"
18     exit -1
19 }
20
21 checkrpm ()
22 {
23     filename=$1
24     if [ -f "$filename" -a $(rpm -qip $filename | wc -l) -eq 1 ] ; then
25         echo "$filename not a valid rpm file"
26         usage
27     fi
28 }
29
30 [ -z "$kernelrpm" -o  -z "$vnetrpm" ] && usage
31 checkrpm $kernelrpm
32 checkrpm $vnetrpm
33
34 isofs=/plc/root/usr/share/bootcd/build/isofs
35 tmpdir=$(mktemp -d /tmp/bootcd.XXXXXX)
36 cur=`pwd`
37 if [ -d ../bootmanager ] ; then
38     MERGE=${cur}/../bootmanager/source/merge_hw_tables.py
39 else
40     echo "cannot find merge_hw_tables.py"
41     exit -1
42 fi
43
44 myplcwebdir=/plc/data/var/www/html
45
46 echo -n "Updating myplc planetlab yum repository with $kernelrpm"
47 rm -f ${myplcwebdir}/install-rpms/planetlab/kernel-*
48 cp $cur/$kernelrpm ${myplcwebdir}/install-rpms/planetlab
49
50 echo -n " and $vnetrpm"
51 rm -f ${myplcwebdir}/install-rpms/planetlab/vnet-*
52 cp $cur/$vnetrpm ${myplcwebdir}/install-rpms/planetlab
53 echo " ... done"
54
55 trap "bail" ERR INT
56 echo "Updating bootcd image with $kernelrpm"
57 pushd $tmpdir
58 mkdir bootcd
59 pushd bootcd
60 gzip -d -c $isofs/bootcd.img | cpio -diu
61 rm -rf boot/*
62 rm -rf lib/modules
63 rpm2cpio  $cur/$kernelrpm | cpio -diu
64 version=$(cd ./boot && ls vmlinuz* | sed 's,vmlinuz-,,')
65 depmod -b . $version
66 pci_map_file=./lib/modules/${version}/modules.pcimap
67 module_dep_file=./lib/modules/${version}/modules.dep
68 pci_table=./usr/share/hwdata/pcitable
69 $MERGE $module_dep_file $pci_map_file $pci_table ./etc/pl_pcitable
70 cp boot/vmlinuz* ${tmpdir}/kernel
71 find . | cpio --quiet -c -o | gzip -9 > ${tmpdir}/bootcd.img
72 popd
73 popd
74 mv ${tmpdir}/kernel $isofs
75 mv ${tmpdir}/bootcd.img $isofs
76 rm -rf $tmpdir
77 echo " ... done"
78 trap - ERR
79
80 echo -n "update PlanetLab-Bootstrap.tar.bz2 with $kernelrpm"
81 tmpdir=$(mktemp -d ${myplcwebdir}/boot/bootstrap.XXXXXX)
82 trap "bail" ERR INT
83 cur=`pwd`
84 cp $cur/$kernelrpm ${tmpdir}/kernel.rpm
85 cp $cur/$vnetrpm ${tmpdir}/vnet.rpm
86 echo -n " ... untarring PlanetLab-Bootstrap.tar.bz2"
87 pushd $tmpdir
88 tar -jxpf ${myplcwebdir}/boot/PlanetLab-Bootstrap.tar.bz2
89 popd
90 chroot $tmpdir rpm -e --allmatches --nodeps --noscripts vnet
91 chroot $tmpdir rpm -e --allmatches --nodeps kernel
92 files="${tmpdir}/kernel.rpm ${tmpdir}/vnet.rpm"
93 chroot $tmpdir rpm -Uvh kernel.rpm
94 chroot $tmpdir rpm -Uvh vnet.rpm
95 rm -f ./kernel.rpm
96 rm -f ./vnet.rpm
97 echo -n " ... tarring PlanetLab-Bootstrap.tar.bz2"
98 pushd $tmpdir
99 tar -jcpf ${myplcwebdir}/boot/PlanetLab-Bootstrap.tar.bz2.new ./
100 popd
101 mv ${myplcwebdir}/boot/PlanetLab-Bootstrap.tar.bz2.new ${myplcwebdir}/boot/PlanetLab-Bootstrap.tar.bz2
102 rm -rf $tmpdir
103 echo " ... done"
104 trap - ERR
105
106 exit 0