91e8b7765e1d0665c47addefd543d2d7dc35bc60
[kvmfornfv.git] / ci / kernel_build.sh
1 #!/bin/bash
2
3 source ./ci/kernelConfigValidate.sh
4
5 kernel_build_validate $@
6 kernel_build_prep
7
8 kernel_rpm_build() {
9    rpmbuild_dir=/tmp/kvmfornfv_rpmbuild.$$
10    artifact_dir=${rpmbuild_dir}/RPMS/x86_64
11    mkdir -p $artifact_dir
12    # Make timestamp part of version string for automated kernel boot verification
13    date "+-%y%m%d%H%M" > "${kernel_src_dir}/localversion-zzz"
14
15    (cd ${kernel_src_dir}; make RPMOPTS="--define '_topdir ${rpmbuild_dir}'" rpm-pkg)
16    if [ ${?} -ne 0 ] ; then
17       echo "${0}: Kernel build failed"
18       rm -rf ${rpmbuild_dir}
19       exit 1
20    fi
21    cp -f ${artifact_dir}/* ${output_dir}
22    rm -rf ${rpmbuild_dir}
23 }
24
25 quirks(){
26    #
27    # Apply out of tree patches
28    #
29    SRC=/root
30    for i in $SRC/kvmfornfv/patches/$1/*.patch
31    do
32       if [ -f "$i" ]
33       then
34          echo "Applying: $i"
35          patch -p1 <$i
36       fi
37    done
38 }
39
40 kernel_deb_build(){
41    VERSION="1.0.OPNFV"
42    # Configure the kernel
43    cd kernel
44
45 # Workaround build bug on Ubuntu 14.04
46 cat <<EOF > arch/x86/boot/install.sh
47 #!/bin/sh
48 cp -a -- "\$2" "\$4/vmlinuz-\$1"
49 EOF
50
51 # Build the kernel debs
52 make-kpkg clean
53 fakeroot make-kpkg --initrd --revision=$VERSION kernel_image kernel_headers
54 make
55 mv /root/kvmfornfv/linux-* /root/kvmfornfv/build_output
56 }
57
58 if [ $pkg_type == "centos" ];then
59    kernel_rpm_build
60 elif [ $pkg_type == "ubuntu" ];then
61    quirks kernel
62    kernel_deb_build
63 fi
64