diff options
author | Riku Voipio <riku.voipio@linaro.org> | 2015-06-24 15:33:08 +0300 |
---|---|---|
committer | Fathi Boudra <fathi.boudra@linaro.org> | 2015-06-27 18:32:26 +0300 |
commit | 6d190cb41e9b10dbe6c3857666c2271f9e98754c (patch) | |
tree | 4c2b5ee67f0f24cf4d7cf8b6c6c7f33b2f1d84e7 | |
parent | 0dcdf89d62e20dc3d244ba5e63661fa191165b67 (diff) |
builddeb: sync with latest upstreamed/submitted code
New features:
- builds source package
- builds changes
Copy the builddeb from lci-build-tools universally so the patches
can be removed from linux-linaro
Remaining changes:
- arm64 kernel installed to boot/Image-$version
- dtb's installed to lib/firmware/$version/device-tree
- arm64 boot wrapper installed to boot/
Change-Id: I2afcc2695edb9e45b90db53371a366504c829b01
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
-rw-r--r-- | build-scripts/builddeb | 118 | ||||
-rwxr-xr-x | jenkins_common_lib | 28 | ||||
-rwxr-xr-x | jenkins_kernel_build_inst | 1 |
3 files changed, 100 insertions, 47 deletions
diff --git a/build-scripts/builddeb b/build-scripts/builddeb index 3dfd2ba..09707e4 100644 --- a/build-scripts/builddeb +++ b/build-scripts/builddeb @@ -15,6 +15,8 @@ set -e create_package() { local pname="$1" pdir="$2" + mkdir -m 755 -p "$pdir/DEBIAN" + mkdir -p "$pdir/usr/share/doc/$pname" cp debian/copyright "$pdir/usr/share/doc/$pname/" cp debian/changelog "$pdir/usr/share/doc/$pname/changelog.Debian" gzip -9 "$pdir/usr/share/doc/$pname/changelog.Debian" @@ -25,8 +27,13 @@ create_package() { chown -R root:root "$pdir" chmod -R go-w "$pdir" + # Create the package + dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch}" -p$pname -P"$pdir" + dpkg --build "$pdir" .. +} + +set_debarch() { # Attempt to find the correct Debian architecture - local forcearch="" debarch="" case "$UTS_MACHINE" in i386|ia64|alpha) debarch="$UTS_MACHINE" ;; @@ -45,8 +52,18 @@ create_package() { arm64) debarch=arm64 ;; arm*) - debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el || true) ;; + if grep -q CONFIG_AEABI=y $KCONFIG_CONFIG; then + if grep -q CONFIG_VFP=y $KCONFIG_CONFIG; then + debarch=armhf + else + debarch=armel + fi + else + debarch=arm + fi + ;; *) + debarch=$(dpkg --print-architecture) echo "" >&2 echo "** ** ** WARNING ** ** **" >&2 echo "" >&2 @@ -59,13 +76,8 @@ create_package() { if [ -n "$KBUILD_DEBARCH" ] ; then debarch="$KBUILD_DEBARCH" fi - if [ -n "$debarch" ] ; then - forcearch="-DArchitecture=$debarch" - fi + forcearch="-DArchitecture=$debarch" - # Create the package - dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch:-$(dpkg --print-architecture)}" -p$pname -P"$pdir" - dpkg --build "$pdir" .. } # Some variables and settings used throughout the script @@ -76,6 +88,11 @@ if [ -n "$KDEB_PKGVERSION" ]; then else packageversion=$version-$revision fi +if [ -n "$KDEB_SOURCENAME" ]; then + sourcename=$KDEB_SOURCENAME +else + sourcename=linux-upstream +fi tmpdir="$objtree/debian/tmp" fwdir="$objtree/debian/fwtmp" kernel_headers_dir="$objtree/debian/hdrtmp" @@ -86,6 +103,9 @@ fwpackagename=linux-firmware-image-$version kernel_headers_packagename=linux-headers-$version libc_headers_packagename=linux-libc-dev dbg_packagename=$packagename-dbg +debarch= +forcearch= +set_debarch if [ "$ARCH" = "um" ] ; then packagename=user-mode-linux-$version @@ -113,24 +133,13 @@ BUILD_DEBUG="$(grep -s '^CONFIG_DEBUG_INFO=y' $KCONFIG_CONFIG || true)" # Setup the directory structure rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" mkdir -m 755 -p "$tmpdir/DEBIAN" -mkdir -p "$tmpdir/lib" "$tmpdir/boot" "$tmpdir/usr/share/doc/$packagename" -mkdir -m 755 -p "$fwdir/DEBIAN" -mkdir -p "$fwdir/lib/firmware/$version/" "$fwdir/usr/share/doc/$fwpackagename" -mkdir -m 755 -p "$libc_headers_dir/DEBIAN" -mkdir -p "$libc_headers_dir/usr/share/doc/$libc_headers_packagename" -mkdir -m 755 -p "$kernel_headers_dir/DEBIAN" -mkdir -p "$kernel_headers_dir/usr/share/doc/$kernel_headers_packagename" +mkdir -p "$tmpdir/lib" "$tmpdir/boot" +mkdir -p "$fwdir/lib/firmware/$version/" mkdir -p "$kernel_headers_dir/lib/modules/$version/" -if [ "$ARCH" = "um" ] ; then - mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin" -fi -if [ -n "$BUILD_DEBUG" ] ; then - mkdir -p "$dbg_dir/usr/share/doc/$dbg_packagename" - mkdir -m 755 -p "$dbg_dir/DEBIAN" -fi # Build and install the kernel if [ "$ARCH" = "um" ] ; then + mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin" "$tmpdir/usr/share/doc/$packagename" $MAKE linux cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map" cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config" @@ -146,6 +155,13 @@ else cp arch/$ARCH/boot/$KBUILD_IMAGE "$tmpdir/$installed_image_path" fi +if grep -q "^CONFIG_OF=y" $KCONFIG_CONFIG ; then + # Only some architectures with OF support have this target + if grep -q dtbs_install "${srctree}/arch/$SRCARCH/Makefile"; then + $MAKE KBUILD_SRC= INSTALL_DTBS_PATH="$tmpdir/usr/lib/$packagename" dtbs_install + fi +fi + if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then INSTALL_MOD_PATH="$tmpdir" $MAKE KBUILD_SRC= modules_install rm -f "$tmpdir/lib/modules/$version/build" @@ -165,6 +181,12 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then # then add a link to those $OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $tmpdir/$module done + + # resign stripped modules + MODULE_SIG_ALL="$(grep -s '^CONFIG_MODULE_SIG_ALL=y' $KCONFIG_CONFIG || true)" + if [ -n "$MODULE_SIG_ALL" ]; then + INSTALL_MOD_PATH="$tmpdir" $MAKE KBUILD_SRC= modules_sign + fi fi fi @@ -220,9 +242,20 @@ else fi maintainer="$name <$email>" +# Try to determine distribution +if [ -n "$KDEB_CHANGELOG_DIST" ]; then + distribution=$KDEB_CHANGELOG_DIST +elif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ]; then + : # nothing to do in this case +else + distribution="unstable" + echo >&2 "Using default distribution of 'unstable' in the changelog" + echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly" +fi + # Generate a simple changelog template cat <<EOF > debian/changelog -linux-upstream ($packageversion) unstable; urgency=low +$sourcename ($packageversion) $distribution; urgency=low * Custom built Linux kernel. @@ -236,10 +269,10 @@ This is a packacked upstream version of the Linux kernel. The sources may be found at most Linux ftp sites, including: ftp://ftp.kernel.org/pub/linux/kernel -Copyright: 1991 - 2009 Linus Torvalds and others. +Copyright: 1991 - 2015 Linus Torvalds and others. The git repository for mainline kernel development is at: -git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git +git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -249,12 +282,16 @@ On Debian GNU/Linux systems, the complete text of the GNU General Public License version 2 can be found in \`/usr/share/common-licenses/GPL-2'. EOF + +build_depends="bc, kmod, cpio " + # Generate a control file cat <<EOF > debian/control -Source: linux-upstream +Source: $sourcename Section: kernel Priority: optional Maintainer: $maintainer +Build-Depends: $build_depends Standards-Version: 3.8.4 Homepage: http://www.kernel.org/ EOF @@ -385,4 +422,33 @@ EOF create_package "$dbg_packagename" "$dbg_dir" fi +if [ "x$1" != "xbindeb-pkg" ] +then + cat <<EOF > debian/rules +#!/usr/bin/make -f + +build: + cp debian/config .config + \$(MAKE) oldconfig + +binary-arch: + \$(MAKE) KDEB_SOURCENAME=${sourcename} KDEB_PKGVERSION=${packageversion} bindeb-pkg + +clean: + \$(MAKE) clean + +binary: binary-arch +EOF + + (cd $KBUILD_SRC; git archive --prefix=${sourcename}-${version}/ HEAD)|gzip -9 > ../${sourcename}_${version}.orig.tar.gz + cp $KCONFIG_CONFIG debian/config + tar caf ../${sourcename}_${packageversion}.debian.tar.gz debian/{config,copyright,rules,changelog,control} + dpkg-source -cdebian/control -ldebian/changelog --format="3.0 (custom)" --target-format="3.0 (quilt)" \ + -b / ../${sourcename}_${version}.orig.tar.gz ../${sourcename}_${packageversion}.debian.tar.gz + mv ${sourcename}_${packageversion}*dsc .. + dpkg-genchanges > ../${sourcename}_${packageversion}_${debarch}.changes +else + dpkg-genchanges -b > ../${sourcename}_${packageversion}_${debarch}.changes +fi + exit 0 diff --git a/jenkins_common_lib b/jenkins_common_lib index e141b74..650fd3b 100755 --- a/jenkins_common_lib +++ b/jenkins_common_lib @@ -42,21 +42,11 @@ fi build_setup() { rm -f linux-*.deb - # The builddeb has the changes to successfully build for armhf/arm64 in linux-linaro-tracking tree. - # Hence copy the modified builddeb for other trees only, which is required to do armhf or arm64 builds. - # last-modified: 2014-04-11 - linux-linaro-tracking (ll-20140411.1) - # https://git.linaro.org/kernel/linux-linaro-tracking.git/blob_plain/refs/heads/linux-linaro:/scripts/package/builddeb - repo_name="linux-linaro-tracking" - if [[ ! "$KERNEL_GIT" =~ "$repo_name" ]] + if [ -e $WORKSPACE/lci-build-tools/build-scripts/builddeb ] then - if [[ -e $WORKSPACE/lci-build-tools/build-scripts/builddeb ]] - then - echo "Copying the local builddeb..." - cp scripts/package/builddeb scripts/package/builddeb.orig - cp $WORKSPACE/lci-build-tools/build-scripts/builddeb scripts/package/builddeb - else - echo "Missing builddeb file" - fi + echo "Copying the local builddeb..." + cp scripts/package/builddeb scripts/package/builddeb.orig + cp $WORKSPACE/lci-build-tools/build-scripts/builddeb scripts/package/builddeb else echo "Using the builddeb available in the tree..." fi @@ -200,13 +190,9 @@ build_instructions() fi # Restore the orig buildeb, which was copied to build non linux-linaro-tracking tree - repo_name="linux-linaro-tracking" - if [[ ! "$KERNEL_GIT" =~ "$repo_name" ]] + if [ -e scripts/package/builddeb.orig ] then - if [[ -e scripts/package/builddeb.orig ]] - then - echo "Copying back the builddeb that was replaced.." - cp scripts/package/builddeb.orig scripts/package/builddeb - fi + echo "Copying back the builddeb that was replaced.." + cp scripts/package/builddeb.orig scripts/package/builddeb fi } diff --git a/jenkins_kernel_build_inst b/jenkins_kernel_build_inst index 6bd1b3e..c1e6846 100755 --- a/jenkins_kernel_build_inst +++ b/jenkins_kernel_build_inst @@ -129,6 +129,7 @@ export kernel_version=`make kernelversion` export kernel_release=${kernel_version}-linaro-${kernel_flavour} export KERNELVERSION=${kernel_version} export KERNELRELEASE=${kernel_release} +export KDEB_SOURCENAME=linux-${kernel_release} # Below is the list of values that will be used in the json files export KERNEL_GIT=`git config remote.origin.url` |