Creation of QEMU(rpm and debian builds) 45/16045/7
authorSwati Sharma <swatix.sharma@intel.com>
Tue, 28 Jun 2016 17:34:43 +0000 (02:34 +0900)
committerswatisharma <swatix.sharma@intel.com>
Thu, 21 Jul 2016 05:46:22 +0000 (11:16 +0530)
This includes the scripts that are added to create qemu-rpm
and qemu-debian builds for KVM4NFV.

Co-Authored-By: Gundarapu Reddy <reddyx.gundarapu@intel.com>
Signed-off-by: Swati Sharma <swatix.sharma@intel.com>
ci/build_qemu_rpm_deb/mkcontrol.sh [new file with mode: 0755]
ci/build_qemu_rpm_deb/mkspec [new file with mode: 0755]
ci/build_qemu_rpm_deb/mkversion [new file with mode: 0755]
ci/build_qemu_rpm_deb/qemu_build.sh [new file with mode: 0644]
ci/build_qemu_rpm_deb/qemu_deb_build.sh [new file with mode: 0755]
ci/build_qemu_rpm_deb/qemu_rpm_build.sh [new file with mode: 0755]

diff --git a/ci/build_qemu_rpm_deb/mkcontrol.sh b/ci/build_qemu_rpm_deb/mkcontrol.sh
new file mode 100755 (executable)
index 0000000..7eb504a
--- /dev/null
@@ -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_qemu_rpm_deb/mkspec b/ci/build_qemu_rpm_deb/mkspec
new file mode 100755 (executable)
index 0000000..0b75a18
--- /dev/null
@@ -0,0 +1,43 @@
+#!/bin/sh
+#
+#      Output a simple RPM spec file.
+#
+# starting to output the spec
+
+QEMURELEASE=$1
+
+__QEMURELEASE=`echo $QEMURELEASE | sed -e "s/-/_/g"`
+
+echo $srctree
+echo "Name: qemu"
+echo "Summary: The Linux qemu"
+echo "Version: $__QEMURELEASE"
+# we need to determine the NEXT version number
+# rpm -q will agree
+echo "Release: `sudo sh mkversion`"
+echo "License: GPLv2+ and LGPLv2+ and BSD"
+echo "Group: Development/Tools"
+echo "Vendor: The Linux Community"
+echo "URL: http://www.qemu.org"
+echo "Source: qemu-$__QEMURELEASE.tar.gz"
+echo "%description"
+echo "%prep"
+echo "     "
+echo "%setup -q"
+echo "         "
+echo "%build"
+echo "%_configure"
+echo "make"
+echo "%install"
+echo "rm -rf %{buildroot}"
+echo "make install DESTDIR=%{buildroot}"
+echo "%clean"
+echo "rm -rf %{buildroot}"
+echo "%files"
+echo "%dir"
+echo "/usr/local/share/qemu"
+echo "%doc"
+echo "/usr/local/bin/ivshmem*"
+echo "/usr/local/bin/qemu*"
+echo "/usr/local/libexec/qemu-bridge-helper"
+echo "%changelog"
diff --git a/ci/build_qemu_rpm_deb/mkversion b/ci/build_qemu_rpm_deb/mkversion
new file mode 100755 (executable)
index 0000000..fa4e585
--- /dev/null
@@ -0,0 +1,10 @@
+if [ ! -f .version ]
+then
+    touch .version
+    sudo chmod 777 .version
+    echo 1 > .version
+    echo 1
+else
+    expr 0`cat .version` + 1
+    expr 0`cat .version` + 1 > .version
+fi
diff --git a/ci/build_qemu_rpm_deb/qemu_build.sh b/ci/build_qemu_rpm_deb/qemu_build.sh
new file mode 100644 (file)
index 0000000..a8863c3
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/bash
+qemu_src_dir=qemu
+workspace=/root
+debbuild_dir=$workspace/debbuild
+rpmbuild_dir=$workspace/rpmbuild
+artifact_rpms=$rpmbuild_dir/RPMS
+artifact_dir=$artifact_rpms/x86_64
+scripts_dir=ci/build_qemu_rpm_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
diff --git a/ci/build_qemu_rpm_deb/qemu_deb_build.sh b/ci/build_qemu_rpm_deb/qemu_deb_build.sh
new file mode 100755 (executable)
index 0000000..7a83018
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/bash
+#Build process for generating qemu debain file.
+
+source ci/build_qemu_rpm_deb/qemu_build.sh
+qemu_deb_build() {
+    sudo mkdir -p $debbuild_dir/qemu-$VERSION
+    sudo cp -r $qemu_src_dir $debbuild_dir/qemu-$VERSION
+    sudo mkdir -p $debbuild_dir/qemu-$VERSION/DEBIAN
+    sudo touch control
+
+#creating control file for debian build.
+    (cd ${scripts_dir}; sudo ./mkcontrol.sh $VERSION > control)
+    sudo mv $scripts_dir/control $debbuild_dir/qemu-$VERSION/DEBIAN/control
+
+#building the qemu debian with control file developed.
+    sudo 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"
+    sudo mkdir -p $debbuild_dir
+fi
+
+qemu_deb_build
+latest_qemu_build=`sudo ls -rt $debbuild_dir | tail -1`
+sudo cp $debbuild_dir/$latest_qemu_build build_output
diff --git a/ci/build_qemu_rpm_deb/qemu_rpm_build.sh b/ci/build_qemu_rpm_deb/qemu_rpm_build.sh
new file mode 100755 (executable)
index 0000000..a52ee0f
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/bash
+#Build process for Generating qemu rpm.
+
+source ci/build_qemu_rpm_deb/qemu_build.sh
+qemu_rpm_build() {
+    sudo cp  -r ${qemu_src_dir}  ${qemu_src_dir}-$VERSION
+    sudo tar -zcvf ${qemu_src_dir}-$VERSION.tar.gz ${qemu_src_dir}-$VERSION
+    sudo mv ${qemu_src_dir}-$VERSION.tar.gz ${rpmbuild_dir}/SOURCES/
+
+#create a spec file for rpm creation.
+    (cd ${scripts_dir}; ./mkspec $VERSION > qemu.spec)
+    sudo cp ${scripts_dir}/qemu.spec ${rpmbuild_dir}/SPECS/
+
+#build the qemu rpm with spec file developed
+    sudo rpmbuild -ba ${rpmbuild_dir}/SPECS/qemu.spec
+    if [ ${?} -ne 0 ] ; then
+        echo "${0}: qemu build failed"
+        exit 1
+    fi
+    sudo rm -rf ${qemu_src_dir}-$VERSION
+    sudo rm -rf ${rpmbuild_dir}/SOURCES/${qemu_src_dir}-$VERSION.tar.gz
+}
+
+if [ ! -d ${rpmbuild_dir} ] ; then
+    sudo yum install rpm-build -y
+    mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
+    sudo mv rpmbuild $workspace
+fi
+
+qemu_rpm_build
+latest_qemu_build=`ls -rt $artifact_dir | grep qemu-2.6* | tail -1`
+sudo cp $artifact_dir/$latest_qemu_build build_output