summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNavya <navyax.bathula@intel.com>2017-04-10 19:03:58 +0530
committerNavya Bathula <navyax.bathula@intel.com>2017-05-15 04:44:00 +0000
commit2fde080c8c418c0474b285b823e9d7f2346f05a3 (patch)
tree795fcffdeaf3ac734adb19d324dd0739c00e251c
parent39928e5e9503db6f1971c74a84e3d10a4e4f6a6e (diff)
To generate debug rpm and debian package for kvmfornfv kernel
This patch is used to strip the debug information from binary files and generate separate debug package along with binary package while building the kernel.The debuginfo package is uploaded only for daily job. Upstream status: Pending Change-Id: Iad2cfd8e252d218a9d603e9dbed2aa557d83e263 Co-Authored by:shravani paladugula <shravani.p@tcs.com> Signed-off-by: Navya Bathula <navyax.bathula@intel.com>
-rwxr-xr-xci/build.sh17
-rwxr-xr-xci/kernel_build.sh2
-rwxr-xr-xci/kernel_debug.sh16
-rw-r--r--kernel/scripts/package/Makefile2
-rwxr-xr-xkernel/scripts/package/mkspec16
5 files changed, 44 insertions, 9 deletions
diff --git a/ci/build.sh b/ci/build.sh
index ef06a716c..a52055940 100755
--- a/ci/build.sh
+++ b/ci/build.sh
@@ -119,6 +119,8 @@ then
output_dir=$WORKSPACE/build_output
fi
+job_type=`echo $JOB_NAME | cut -d '-' -f 2`
+
echo ""
echo "Building for $type package in $output_dir"
echo ""
@@ -139,3 +141,18 @@ if [ ${apex_build_flag} -eq 1 ];then
variable=`ls kvmfornfv-* | grep "devel" | awk -F "_" '{print $3}' | awk -F "." '{print $1}'`
rename "s/${variable}/centos/" kvmfornfv-*
fi
+
+# Uploading rpms only for daily job
+if [ $job_type == "verify" ]; then
+ if [ $type == "centos" ]; then
+ echo "Removing kernel-debuginfo rpm from output_dir"
+ rm -f ${output_dir}/kernel-debug*
+ echo "Checking packages in output_dir"
+ ls -lrth ${output_dir}
+ else
+ echo "Removing debug debian from output_dir"
+ rm -f ${output_dir}/*dbg*
+ echo "Checking packages in output_dir"
+ ls -lrth ${output_dir}
+ fi
+fi \ No newline at end of file
diff --git a/ci/kernel_build.sh b/ci/kernel_build.sh
index 91e8b7765..6071ca760 100755
--- a/ci/kernel_build.sh
+++ b/ci/kernel_build.sh
@@ -50,7 +50,7 @@ EOF
# Build the kernel debs
make-kpkg clean
-fakeroot make-kpkg --initrd --revision=$VERSION kernel_image kernel_headers
+fakeroot make-kpkg --initrd --revision=$VERSION kernel_image kernel_headers kernel_debug -j$(nproc)
make
mv /root/kvmfornfv/linux-* /root/kvmfornfv/build_output
}
diff --git a/ci/kernel_debug.sh b/ci/kernel_debug.sh
new file mode 100755
index 000000000..5ccf1af76
--- /dev/null
+++ b/ci/kernel_debug.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+tmpdir=$1 #/tmp/kvmfornfv_rpmbuild.1/BUILD/kernel-4.4.50_rt62nfv
+OBJCOPY=objcopy
+if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
+for module in $(find $tmpdir/lib/modules/ -name *.ko -printf '%P\n'); do
+ module=lib/modules/$module
+ mkdir -p $(dirname $tmpdir/usr/lib/debug/$module)
+ # only keep debug symbols in the debug file
+ $OBJCOPY --only-keep-debug $tmpdir/$module $tmpdir/usr/lib/debug/$module
+ # strip original module from debug symbols
+ $OBJCOPY --strip-debug $tmpdir/$module
+ # then add a link to those
+ $OBJCOPY --add-gnu-debuglink=$tmpdir/usr/lib/debug/$module $tmpdir/$module
+ done
+fi \ No newline at end of file
diff --git a/kernel/scripts/package/Makefile b/kernel/scripts/package/Makefile
index 493e22635..a7ed59597 100644
--- a/kernel/scripts/package/Makefile
+++ b/kernel/scripts/package/Makefile
@@ -52,7 +52,7 @@ rpm-pkg rpm: FORCE
$(call cmd,src_tar,$(KERNELPATH),kernel.spec)
$(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version
mv -f $(objtree)/.tmp_version $(objtree)/.version
- rpmbuild $(RPMOPTS) --target $(UTS_MACHINE) -ta $(KERNELPATH).tar.gz
+ QA_SKIP_BUILD_ROOT=1 rpmbuild $(RPMOPTS) --target $(UTS_MACHINE) -ta $(KERNELPATH).tar.gz
rm $(KERNELPATH).tar.gz kernel.spec
# binrpm-pkg
diff --git a/kernel/scripts/package/mkspec b/kernel/scripts/package/mkspec
index fe44d68e9..0f96d4f8d 100755
--- a/kernel/scripts/package/mkspec
+++ b/kernel/scripts/package/mkspec
@@ -39,10 +39,9 @@ if ! $PREBUILT; then
echo "Source: kernel-$__KERNELRELEASE.tar.gz"
fi
+echo "%undefine _missing_build_ids_terminate_build"
echo "BuildRoot: %{_tmppath}/%{name}-%{PACKAGE_VERSION}-root"
echo "Provides: $PROVIDES"
-echo "%define __spec_install_post /usr/lib/rpm/brp-compress || :"
-echo "%define debug_package %{nil}"
echo ""
echo "%description"
echo "The Linux Kernel, the operating system core itself"
@@ -81,6 +80,8 @@ echo "make clean && make %{?_smp_mflags}"
echo ""
fi
+echo ""
+
echo "%install"
echo 'KBUILD_IMAGE=$(make image_name)'
echo "%ifarch ia64"
@@ -91,6 +92,7 @@ echo "%endif"
echo 'mkdir -p $RPM_BUILD_ROOT'"/lib/firmware/$KERNELRELEASE"
echo 'INSTALL_MOD_PATH=$RPM_BUILD_ROOT make %{?_smp_mflags} KBUILD_SRC= mod-fw= modules_install'
+echo '/opt/kvmfornfv/ci/kernel_debug.sh $RPM_BUILD_ROOT'
echo 'INSTALL_FW_PATH=$RPM_BUILD_ROOT'"/lib/firmware/$KERNELRELEASE"
echo 'make INSTALL_FW_PATH=$INSTALL_FW_PATH' firmware_install
echo "%ifarch ia64"
@@ -110,15 +112,15 @@ echo 'cp System.map $RPM_BUILD_ROOT'"/boot/System.map-$KERNELRELEASE"
echo 'cp .config $RPM_BUILD_ROOT'"/boot/config-$KERNELRELEASE"
-echo "%ifnarch ppc64"
-echo 'bzip2 -9 --keep vmlinux'
-echo 'mv vmlinux.bz2 $RPM_BUILD_ROOT'"/boot/vmlinux-$KERNELRELEASE.bz2"
-echo "%endif"
+#echo "%ifnarch ppc64"
+#echo 'bzip2 -9 --keep vmlinux'
+#echo 'mv vmlinux.bz2 $RPM_BUILD_ROOT'"/boot/vmlinux-$KERNELRELEASE.bz2"
+#echo "%endif"
if ! $PREBUILT; then
echo 'rm -f $RPM_BUILD_ROOT'"/lib/modules/$KERNELRELEASE/{build,source}"
echo "mkdir -p "'$RPM_BUILD_ROOT'"/usr/src/kernels/$KERNELRELEASE"
-echo "EXCLUDES=\"$RCS_TAR_IGNORE --exclude .tmp_versions --exclude=*vmlinux* --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation --exclude=firmware --exclude .config.old --exclude .missing-syscalls.d\""
+echo "EXCLUDES=\"$RCS_TAR_IGNORE --exclude .tmp_versions --exclude=*.o --exclude=*vmlinux* --exclude=*.ko --exclude=*.cmd --exclude=Documentation --exclude=firmware --exclude .config.old --exclude .missing-syscalls.d\""
echo "tar "'$EXCLUDES'" -cf- . | (cd "'$RPM_BUILD_ROOT'"/usr/src/kernels/$KERNELRELEASE;tar xvf -)"
echo 'cd $RPM_BUILD_ROOT'"/lib/modules/$KERNELRELEASE"
echo "ln -sf /usr/src/kernels/$KERNELRELEASE build"