From: Jiang, Yunhong Date: Mon, 15 May 2017 14:34:57 +0000 (+0000) Subject: Merge "To generate debug rpm and debian package for kvmfornfv kernel" X-Git-Tag: opnfv-5.0.0~18 X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?p=kvmfornfv.git;a=commitdiff_plain;h=4bfeded9ee7ddc1cf05f6bd2c388894a7d736291;hp=2bf84b75999440debecf456168a7c3bb0750dd06 Merge "To generate debug rpm and debian package for kvmfornfv kernel" --- 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"