summaryrefslogtreecommitdiffstats
path: root/ci/build_deb
diff options
context:
space:
mode:
Diffstat (limited to 'ci/build_deb')
-rw-r--r--ci/build_deb/Dockerfile22
-rwxr-xr-xci/build_deb/build_debs.sh20
-rwxr-xr-xci/build_deb/build_debs_docker.sh22
-rwxr-xr-xci/build_deb/kernel_deb_build.sh69
-rwxr-xr-xci/build_deb/mkcontrol.sh8
-rwxr-xr-xci/build_deb/qemu_deb_build.sh60
6 files changed, 201 insertions, 0 deletions
diff --git a/ci/build_deb/Dockerfile b/ci/build_deb/Dockerfile
new file mode 100644
index 000000000..676afcf67
--- /dev/null
+++ b/ci/build_deb/Dockerfile
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+FROM ubuntu:14.04.3
+RUN apt-get update && apt-get install -y \
+ git \
+ fakeroot \
+ build-essential \
+ ncurses-dev xz-utils \
+ kernel-package \
+ bc \
+ autoconf \
+ python \
+ pkg-config \
+ zlibc \
+ zlib1g \
+ zlib1g-dev \
+ libglib2.0-dev \
+ libtool \
+ flex \
+ bison
+RUN echo "ALL ALL=NOPASSWD: ALL" > /etc/sudoers.d/open-sudo
+RUN chmod 0440 /etc/sudoers.d/open-sudo
diff --git a/ci/build_deb/build_debs.sh b/ci/build_deb/build_debs.sh
new file mode 100755
index 000000000..2fcd3629b
--- /dev/null
+++ b/ci/build_deb/build_debs.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+set -eux
+BUILD_FOR=${BUILD_FOR:-ubuntu}
+
+function build_deb_pkg {
+ case $1 in
+ ubuntu)
+ sudo docker build -t kvm_deb .
+ sudo docker run -v $WORKSPACE:/opt/kvmfornfv -t kvm_deb \
+ /opt/kvmfornfv/ci/build_deb/build_debs_docker.sh
+ ;;
+ *) echo "Not supported system"; exit 1;;
+ esac
+}
+
+for system in $BUILD_FOR
+do
+ build_deb_pkg $system
+done
diff --git a/ci/build_deb/build_debs_docker.sh b/ci/build_deb/build_debs_docker.sh
new file mode 100755
index 000000000..3fd35ff54
--- /dev/null
+++ b/ci/build_deb/build_debs_docker.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+tmp_deb_build_dir=/root/kvmfornfv
+deb_build_dir=/opt/kvmfornfv
+tmp_deb_output_dir=$tmp_deb_build_dir/build_output
+deb_output_dir=$deb_build_dir/build_output
+cp -r $deb_build_dir $tmp_deb_build_dir
+
+# Build qemu debian packages
+cd $tmp_deb_build_dir/qemu
+make clean
+./configure
+make
+cd $tmp_deb_build_dir
+./ci/build_deb/qemu_deb_build.sh build_output
+
+# Build kernel debian packages
+./ci/build_deb/kernel_deb_build.sh build_output
+
+# Move Kernel and Qemu Debian builds from tmp_output_dir to output_dir
+mv $tmp_deb_output_dir/qemu-* $deb_output_dir
+mv $tmp_deb_output_dir/linux-* $deb_output_dir
diff --git a/ci/build_deb/kernel_deb_build.sh b/ci/build_deb/kernel_deb_build.sh
new file mode 100755
index 000000000..824960e7f
--- /dev/null
+++ b/ci/build_deb/kernel_deb_build.sh
@@ -0,0 +1,69 @@
+#!/bin/bash
+
+SRC=/root
+kernel_src_dir=kernel
+config_file="arch/x86/configs/opnfv.config"
+VERSION="1.0.OPNFV"
+output_dir="$1"
+
+usage () {
+ echo "usage: ${0} output_dir"
+ exit 1
+}
+
+if [[ -z "$@" ]]; then
+ usage
+fi
+
+if [ ! -d ${output_dir} -o ! -w ${output_dir} ] ; then
+ echo "${0}: Output directory '${output_dir}' does not exist or cannot be written"
+ exit 1
+fi
+
+if [ ! -d ${kernel_src_dir} ] ; then
+ echo "${0}: Directory '${kernel_src_dir}' does not exist, run this script from the root of kvmfornfv source tree"
+ exit 1
+fi
+
+quirks() {
+#
+# Apply out of tree patches
+#
+for i in $SRC/kvmfornfv/patches/$1/*.patch
+do
+ if [ -f "$i" ]
+ then
+ echo "Applying: $i"
+ patch -p1 <$i
+ fi
+done
+}
+
+quirks kernel
+
+cd kernel
+
+if [ ! -f ${config_file} ] ; then
+ echo "${0}: ${config_file} does not exist"
+ exit 1
+fi
+
+# Workaround build bug on Ubuntu 14.04
+cat <<EOF > arch/x86/boot/install.sh
+#!/bin/sh
+cp -a -- "\$2" "\$4/vmlinuz-\$1"
+EOF
+
+# Configure the kernel
+cp $config_file .config
+
+make oldconfig </dev/null
+
+# Build the kernel debs
+make-kpkg clean
+
+fakeroot make-kpkg --initrd --revision=$VERSION kernel_image kernel_headers
+
+make
+
+mv /root/kvmfornfv/linux-* /root/kvmfornfv/build_output
diff --git a/ci/build_deb/mkcontrol.sh b/ci/build_deb/mkcontrol.sh
new file mode 100755
index 000000000..7eb504a0e
--- /dev/null
+++ b/ci/build_deb/mkcontrol.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+echo "Package: qemu"
+echo "Version: $1"
+echo "Section: base"
+echo "Priority: optional"
+echo "Architecture: all"
+echo "Maintainer: Intel"
+echo "Description: control file for qemu debian build on centos"
diff --git a/ci/build_deb/qemu_deb_build.sh b/ci/build_deb/qemu_deb_build.sh
new file mode 100755
index 000000000..f6d398a36
--- /dev/null
+++ b/ci/build_deb/qemu_deb_build.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+
+qemu_src_dir=qemu
+workspace=/root
+debbuild_dir=$workspace/debbuild
+scripts_dir=ci/build_deb
+output_dir="$1"
+VERSION=`grep -m 1 "VERSION" ${qemu_src_dir}/config-host.mak | cut -d= -f2-`
+
+usage () {
+ echo "usage: ${0} output_dir"
+ exit 1
+}
+
+if [[ -z "$@" ]]; then
+ usage
+fi
+
+if [ ! -d ${output_dir} -o ! -w ${output_dir} ] ; then
+ echo "${0}: Output directory '${output_dir}' does not exist or cannot \
+ be written"
+ exit 1
+fi
+
+if [ ! -d ${qemu_src_dir} ] ; then
+ echo "${0}: Directory '${qemu_src_dir}' does not exist, run this script \
+ from the root of kvmfornfv source tree"
+ exit 1
+fi
+
+echo
+echo "Build"
+echo
+
+qemu_deb_build() {
+ mkdir -p $debbuild_dir/qemu-$VERSION
+ cp -r $qemu_src_dir $debbuild_dir/qemu-$VERSION
+ mkdir -p $debbuild_dir/qemu-$VERSION/DEBIAN
+ touch control
+
+#creating control file for debian build.
+ (cd ${scripts_dir}; ./mkcontrol.sh $VERSION > control)
+ mv $scripts_dir/control $debbuild_dir/qemu-$VERSION/DEBIAN/control
+
+#building the qemu debian with control file developed.
+ dpkg-deb --build $debbuild_dir/qemu-$VERSION
+ if [ ${?} -ne 0 ] ; then
+ echo "${0}: qemu build failed"
+ exit 1
+ fi
+}
+
+if [ ! -d ${debbuild_dir} ] ; then
+ echo "creating debbuild directory"
+ mkdir -p $debbuild_dir
+fi
+
+qemu_deb_build
+latest_qemu_build=`ls -rt $debbuild_dir | tail -1`
+cp $debbuild_dir/$latest_qemu_build build_output