From 52e3bf6f64fb09f3313a9b3c99e5177bc215d397 Mon Sep 17 00:00:00 2001 From: Igor Pecovnik Date: Sun, 10 Apr 2016 09:52:00 +0200 Subject: [PATCH] Udoo Neo and Udoo quad packaging update / fix --- ...20-fix.patch => 01-udoo_pre_package.patch} | 202 ++++++------ .../neo-default/02-headers-packing.patch | 13 - ....14-DEFAULT-with-postinstall-scripts.patch | 303 ++++++++++++++++++ ...20-fix.patch => 01-udoo_pre_package.patch} | 202 ++++++------ .../udoo-default/02-headers-packing.patch | 13 - ....14-DEFAULT-with-postinstall-scripts.patch | 303 ++++++++++++++++++ 6 files changed, 786 insertions(+), 250 deletions(-) rename patch/kernel/neo-default/{01-udoo-packaging-v20-fix.patch => 01-udoo_pre_package.patch} (73%) delete mode 100644 patch/kernel/neo-default/02-headers-packing.patch create mode 100644 patch/kernel/neo-default/packaging-3.14-DEFAULT-with-postinstall-scripts.patch rename patch/kernel/udoo-default/{01-udoo-packaging-v20-fix.patch => 01-udoo_pre_package.patch} (73%) delete mode 100644 patch/kernel/udoo-default/02-headers-packing.patch create mode 100644 patch/kernel/udoo-default/packaging-3.14-DEFAULT-with-postinstall-scripts.patch diff --git a/patch/kernel/neo-default/01-udoo-packaging-v20-fix.patch b/patch/kernel/neo-default/01-udoo_pre_package.patch similarity index 73% rename from patch/kernel/neo-default/01-udoo-packaging-v20-fix.patch rename to patch/kernel/neo-default/01-udoo_pre_package.patch index be2baf0e2..243efd05c 100644 --- a/patch/kernel/neo-default/01-udoo-packaging-v20-fix.patch +++ b/patch/kernel/neo-default/01-udoo_pre_package.patch @@ -1,8 +1,32 @@ diff --git a/scripts/package/builddeb b/scripts/package/builddeb -index 01ad1fc..d6b844d 100755 +index 152d4d2..9b30ad2 100644 --- a/scripts/package/builddeb +++ b/scripts/package/builddeb -@@ -69,38 +69,24 @@ create_package() { +@@ -35,15 +35,13 @@ + sparc*) + debarch=sparc ;; + s390*) +- debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;; ++ debarch=s390 ;; + ppc*) +- debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo powerpc) ;; ++ debarch=powerpc ;; + parisc*) + debarch=hppa ;; + mips*) + debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;; +- arm64) +- debarch=arm64 ;; + arm*) + debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el || true) ;; + *) +@@ -64,42 +62,26 @@ + fi + + # Create the package +- dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch:-$(dpkg --print-architecture)}" -p$pname -P"$pdir" ++ dpkg-gencontrol -isp $forcearch -Vkernel:debarch="${debarch:-$(dpkg --print-architecture)}" -p$pname -P"$pdir" + dpkg --build "$pdir" .. } # Some variables and settings used throughout the script @@ -33,23 +57,16 @@ index 01ad1fc..d6b844d 100755 kernel_headers_dir="$objtree/debian/hdrtmp" libc_headers_dir="$objtree/debian/headertmp" -dtb_dir="$objtree/debian/tmp" -+dtb_dir="$objtree/debian/dtbtmp" dbg_dir="$objtree/debian/dbgtmp" -metadir="$objtree/debian/metatmp" --packagename=linux-image-$version --fwpackagename=linux-firmware-image-$version --kernel_headers_packagename=linux-headers-$version + packagename=linux-image-$version + fwpackagename=linux-firmware-image-$version + kernel_headers_packagename=linux-headers-$version -dtb_packagename=linux-dtb-$version --libc_headers_packagename=linux-libc-dev -+packagename=linux-image"$LOCALVERSION" -+fwpackagename=linux-firmware-image"$LOCALVERSION" -+kernel_headers_packagename=linux-headers"$LOCALVERSION" -+dtb_packagename=linux-dtb"$LOCALVERSION" -+libc_headers_packagename=linux-libc-dev"$LOCALVERSION" + libc_headers_packagename=linux-libc-dev dbg_packagename=$packagename-dbg - if [ "$ARCH" = "um" ] ; then -@@ -118,32 +104,28 @@ parisc|mips|powerpc) +@@ -118,32 +100,24 @@ installed_image_path="boot/vmlinux-$version" ;; *) @@ -62,7 +79,7 @@ index 01ad1fc..d6b844d 100755 # Setup the directory structure -rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" \ - "$dbg_dir" "$dtb_dir" "$metadir" 2>/dev/null -+rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" "$dtb_dir" ++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" @@ -70,14 +87,13 @@ index 01ad1fc..d6b844d 100755 +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 "$dtb_dir/DEBIAN" +- +-mkdir -m 755 -p "$dtb_dir/DEBIAN" -mkdir -p "$dtb_dir/boot/dts" "$dtb_dir/usr/share/doc/$dtb_packagename" - -mkdir -m 755 -p "$metadir/DEBIAN" -mkdir -p "$metadir/usr/share/doc/linux-$version" -+mkdir -p "$dtb_dir/boot/dtb" "$dtb_dir/usr/share/doc/$dtb_packagename" - +- mkdir -m 755 -p "$kernel_headers_dir/DEBIAN" mkdir -p "$kernel_headers_dir/usr/share/doc/$kernel_headers_packagename" -mkdir -p "$kernel_headers_dir/lib/modules/$KERNELRELEASE/" @@ -88,7 +104,7 @@ index 01ad1fc..d6b844d 100755 fi if [ -n "$BUILD_DEBUG" ] ; then mkdir -p "$dbg_dir/usr/share/doc/$dbg_packagename" -@@ -153,12 +135,12 @@ fi +@@ -153,12 +127,12 @@ # Build and install the kernel if [ "$ARCH" = "um" ] ; then $MAKE linux @@ -96,15 +112,16 @@ index 01ad1fc..d6b844d 100755 + cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map" cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config" gzip "$tmpdir/usr/share/doc/$packagename/config" - else +-else - cp System.map "$tmpdir/boot/System.map-$KERNELRELEASE" - cp $KCONFIG_CONFIG "$tmpdir/boot/config-$KERNELRELEASE" ++else + cp System.map "$tmpdir/boot/System.map-$version" + cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version" fi # Not all arches include the boot path in KBUILD_IMAGE if [ -e $KBUILD_IMAGE ]; then -@@ -169,11 +151,11 @@ fi +@@ -169,41 +143,33 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then INSTALL_MOD_PATH="$tmpdir" $MAKE KBUILD_SRC= modules_install @@ -119,21 +136,39 @@ index 01ad1fc..d6b844d 100755 + rmdir "$tmpdir/lib/modules/$version" fi if [ -n "$BUILD_DEBUG" ] ; then - for module in $(find $tmpdir/lib/modules/ -name *.ko -printf '%P\n'); do -@@ -190,9 +172,9 @@ 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 $dbg_dir/usr/lib/debug/$module) +- # only keep debug symbols in the debug file +- $OBJCOPY --only-keep-debug $tmpdir/$module $dbg_dir/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=$dbg_dir/usr/lib/debug/$module $tmpdir/$module +- done ++ ( ++ cd $tmpdir ++ for module in $(find lib/modules/ -name *.ko); do ++ mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module) ++ # only keep debug symbols in the debug file ++ $OBJCOPY --only-keep-debug $module $dbg_dir/usr/lib/debug/$module ++ # strip original module from debug symbols ++ $OBJCOPY --strip-debug $module ++ # then add a link to those ++ $OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $module ++ done ++ ) + fi fi - if grep -q '^CONFIG_OF=y' $KCONFIG_CONFIG ; then +-if grep -q '^CONFIG_OF=y' $KCONFIG_CONFIG ; then - mkdir -p "$tmpdir/boot/dts" - cp $objtree/arch/arm/boot/dts/*.dtb $dtb_dir/boot/dts - #INSTALL_DTBS_PATH="$dtb_dir/boot/dts" $MAKE KBUILD_SRC= dtbs_install -+ mkdir -p "$tmpdir/boot/dtb" -+ cp $objtree/arch/arm/boot/dts/*.dtb $dtb_dir/boot/dtb -+ #INSTALL_DTBS_PATH="$dtb_dir/boot/dtb" $MAKE KBUILD_SRC= dtbs_install - fi - +-fi +- if [ "$ARCH" != "um" ]; then -@@ -200,10 +182,6 @@ if [ "$ARCH" != "um" ]; then + $MAKE headers_check KBUILD_SRC= $MAKE headers_install KBUILD_SRC= INSTALL_HDR_PATH="$libc_headers_dir/usr" fi @@ -144,7 +179,7 @@ index 01ad1fc..d6b844d 100755 # Install the maintainer scripts # Note: hook scripts under /etc/kernel are also executed by official Debian # kernel packages, as well as kernel packages built using make-kpkg. -@@ -217,23 +195,11 @@ else +@@ -217,33 +183,18 @@ fi for script in postinst postrm preinst prerm ; do mkdir -p "$tmpdir$debhookdir/$script.d" @@ -166,10 +201,11 @@ index 01ad1fc..d6b844d 100755 -$metascript - # Pass maintainer script parameters to hook scripts - +- export DEB_MAINT_PARAMS="\$*" -@@ -242,13 +208,36 @@ export DEB_MAINT_PARAMS="\$*" + # Tell initramfs builder whether it's wanted +- export INITRD=$want_initrd -#ubuntu dont evaluate INITRD variable. why? @@ -178,36 +214,7 @@ index 01ad1fc..d6b844d 100755 exit 0 EOF chmod 755 "$tmpdir/DEBIAN/$script" - done - -+## -+## Create sym link to kernel image -+## -+sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/postinst -+cat >> $tmpdir/DEBIAN/postinst < /dev/null 2>&1 -+rm -f /$installed_image_path /boot/zImage -+else -+ln -sf $(basename $installed_image_path) /boot/zImage > /dev/null 2>&1 || mv /$installed_image_path /boot/zImage -+fi -+rm -f /boot/.next -+exit 0 -+EOT -+## -+## FAT install workaround -+## -+sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/preinst -+cat >> $tmpdir/DEBIAN/preinst <> $tmpdir/DEBIAN/preinst -+ -+ - # Try to determine maintainer and email values - if [ -n "$DEBEMAIL" ]; then - email=$DEBEMAIL -@@ -270,7 +259,7 @@ maintainer="$name <$email>" +@@ -270,7 +221,7 @@ cat < debian/changelog linux-upstream ($packageversion) unstable; urgency=low @@ -216,7 +223,7 @@ index 01ad1fc..d6b844d 100755 -- $maintainer $(date -R) EOF -@@ -303,7 +292,6 @@ Priority: optional +@@ -303,7 +254,6 @@ Maintainer: $maintainer Standards-Version: 3.8.4 Homepage: http://www.kernel.org/ @@ -224,7 +231,7 @@ index 01ad1fc..d6b844d 100755 EOF if [ "$ARCH" = "um" ]; then -@@ -327,46 +315,40 @@ else +@@ -327,43 +277,29 @@ cat <> debian/control Package: $packagename @@ -233,15 +240,15 @@ index 01ad1fc..d6b844d 100755 Suggests: $fwpackagename -Replaces: linux-image, linux-image-2.6, linux-modules-$version, $dtb_packagename -Conflicts: linux-image, linux-image-2.6, linux-modules-$version, $dtb_packagename --Architecture: any --Description: Linux kernel, version $version + Architecture: any + Description: Linux kernel, version $version - This package contains the Linux kernel, modules, device tree blobs - and corresponding other files, version: $version. - -Package: linux-$version -Depends: $dtb_packagename, $packagename, $fwpackagename - Architecture: any - Description: Linux kernel, version $version +-Architecture: any +-Description: Linux kernel, version $version - This metapackage contains the Linux kernel, modules, device tree blobs - and corresponding other files, version: $version. - @@ -251,7 +258,7 @@ index 01ad1fc..d6b844d 100755 fi - # Build kernel header package +-# Build kernel header package -if [ -n "$BUILD_HEADERS" ] ; then - - (cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles" @@ -266,36 +273,24 @@ index 01ad1fc..d6b844d 100755 - (cd $objtree; cp $KCONFIG_CONFIG $destdir/.config) # copy .config manually to be where it's expected to be - ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$KERNELRELEASE/build" - rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles" -- -- cat <> debian/control -+(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles" -+(cd $srctree; find arch/$SRCARCH/include include scripts -type f) >> "$objtree/debian/hdrsrcfiles" -+(cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles" -+(cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles" -+(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles" ++# Build header package ++(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl > "$objtree/debian/hdrsrcfiles") ++(cd $srctree; find arch/$SRCARCH/include include scripts -type f >> "$objtree/debian/hdrsrcfiles") ++(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f >> "$objtree/debian/hdrobjfiles") +destdir=$kernel_headers_dir/usr/src/linux-headers-$version +mkdir -p "$destdir" -+######################## headers patch -+ZACNI=$(pwd) -+cd $destdir -+patch -p1 < /tmp/headers-debian-byteshift.patch -+cd $ZACNI -+######################## headers patch -+(cd $srctree; tar -c -f - -T -) < "$objtree/debian/hdrsrcfiles" | (cd $destdir; tar -xf -) -+(cd $objtree; tar -c -f - -T -) < "$objtree/debian/hdrobjfiles" | (cd $destdir; tar -xf -) ++(cd $srctree; tar -c -f - -T "$objtree/debian/hdrsrcfiles") | (cd $destdir; tar -xf -) ++(cd $objtree; tar -c -f - -T "$objtree/debian/hdrobjfiles") | (cd $destdir; tar -xf -) +(cd $objtree; cp $KCONFIG_CONFIG $destdir/.config) # copy .config manually to be where it's expected to be +ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build" +rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles" -+ + +- cat <> debian/control +cat <> debian/control Package: $kernel_headers_packagename --Provides: linux-headers, linux-headers-2.6 -+Provides: linux-headers - Architecture: any - Description: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch} - This package provides kernel header files for $KERNELRELEASE on \${kernel:debarch} -@@ -374,35 +356,15 @@ Description: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch} + Provides: linux-headers, linux-headers-2.6 +@@ -374,35 +310,15 @@ This is useful for people who need to build external modules EOF @@ -332,20 +327,10 @@ index 01ad1fc..d6b844d 100755 Description: Linux kernel firmware, version $version This package contains firmware from the Linux kernel, version $version. EOF -@@ -410,20 +372,45 @@ EOF +@@ -410,20 +326,35 @@ create_package "$fwpackagename" "$fwdir" fi -+cat <> debian/control -+ -+Package: $dtb_packagename -+Architecture: any -+Description: Linux DTB, version $version -+ This package contains device blobs from the Linux kernel, version $version. -+EOF -+ -+create_package "$dtb_packagename" "$dtb_dir" -+ +cat <> debian/control + +Package: $libc_headers_packagename @@ -359,7 +344,7 @@ index 01ad1fc..d6b844d 100755 + +if [ "$ARCH" != "um" ]; then + create_package "$kernel_headers_packagename" "$kernel_headers_dir" -+# create_package "$libc_headers_packagename" "$libc_headers_dir" ++ create_package "$libc_headers_packagename" "$libc_headers_dir" +fi + create_package "$packagename" "$tmpdir" @@ -383,10 +368,3 @@ index 01ad1fc..d6b844d 100755 cat <> debian/control -@@ -439,4 +426,4 @@ EOF - create_package "$dbg_packagename" "$dbg_dir" - fi - --exit 0 -+exit 0 -\ No newline at end of file diff --git a/patch/kernel/neo-default/02-headers-packing.patch b/patch/kernel/neo-default/02-headers-packing.patch deleted file mode 100644 index d27fd190d..000000000 --- a/patch/kernel/neo-default/02-headers-packing.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/scripts/package/builddeb b/scripts/package/builddeb -index 6c3b038..616aa9b 100755 ---- a/scripts/package/builddeb -+++ b/scripts/package/builddeb -@@ -334,6 +334,8 @@ mkdir -p "$destdir" - ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build" - rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles" - -+(cd "$destdir"; make M=scripts clean) -+ - cat <> debian/control - - Package: $kernel_headers_packagename diff --git a/patch/kernel/neo-default/packaging-3.14-DEFAULT-with-postinstall-scripts.patch b/patch/kernel/neo-default/packaging-3.14-DEFAULT-with-postinstall-scripts.patch new file mode 100644 index 000000000..a524864e1 --- /dev/null +++ b/patch/kernel/neo-default/packaging-3.14-DEFAULT-with-postinstall-scripts.patch @@ -0,0 +1,303 @@ +diff --git a/scripts/package/builddeb b/scripts/package/builddeb +index 152d4d2..9b30ad2 100644 +--- a/scripts/package/builddeb ++++ b/scripts/package/builddeb +@@ -35,13 +35,15 @@ create_package() { + sparc*) + debarch=sparc ;; + s390*) +- debarch=s390 ;; ++ debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;; + ppc*) +- debarch=powerpc ;; ++ debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo powerpc) ;; + parisc*) + debarch=hppa ;; + mips*) + debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;; ++ arm64) ++ debarch=arm64 ;; + arm*) + debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el || true) ;; + *) +@@ -61,8 +63,30 @@ create_package() { + forcearch="-DArchitecture=$debarch" + fi + ++ # Create preinstall and post install script to remove dtb ++ if [[ "$1" == *dtb* ]]; then ++ echo "if [ -d /boot/dtb ]; then rm -rf /boot/dtb; fi" >> $pdir/DEBIAN/preinst ++ echo "if [ -d /boot/dtb-$version ]; then rm -rf /boot/dtb-$version; fi" >> $pdir/DEBIAN/preinst ++ echo "if [ -d /boot/dtb.old ]; then rm -rf /boot/dtb.old; fi" >> $pdir/DEBIAN/preinst ++ echo "if [ -d /dtb ]; then rm -rf /dtb; fi" >> $pdir/DEBIAN/preinst ++ echo "exit 0" >> $pdir/DEBIAN/preinst ++ chmod 775 $pdir/DEBIAN/preinst ++ # ++ echo "if [ -d /boot/dtb.old ]; then rm -rf /boot/dtb.old; fi" >> $pdir/DEBIAN/postinst ++ echo "ln -sf dtb-$version /boot/dtb > /dev/null 2>&1 || mv /boot/dtb-$version /boot/dtb" >> $pdir/DEBIAN/postinst ++ echo "exit 0" >> $pdir/DEBIAN/postinst ++ chmod 775 $pdir/DEBIAN/postinst ++ fi ++ ++ # Create postinstall script for headers ++ if [[ "$1" == *headers* ]]; then ++ echo "cd /usr/src/linux-headers-$version; echo \"Compiling headers - please wait ...\"; make -s scripts >/dev/null 2>&1" >> $pdir/DEBIAN/postinst ++ echo "exit 0" >> $pdir/DEBIAN/postinst ++ chmod 775 $pdir/DEBIAN/postinst ++ fi ++ + # Create the package +- dpkg-gencontrol -isp $forcearch -Vkernel:debarch="${debarch:-$(dpkg --print-architecture)}" -p$pname -P"$pdir" ++ dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch:-$(dpkg --print-architecture)}" -p$pname -P"$pdir" + dpkg --build "$pdir" .. + } + +@@ -78,11 +102,13 @@ tmpdir="$objtree/debian/tmp" + fwdir="$objtree/debian/fwtmp" + kernel_headers_dir="$objtree/debian/hdrtmp" + libc_headers_dir="$objtree/debian/headertmp" ++dtb_dir="$objtree/debian/dtbtmp" + dbg_dir="$objtree/debian/dbgtmp" +-packagename=linux-image-$version +-fwpackagename=linux-firmware-image-$version +-kernel_headers_packagename=linux-headers-$version +-libc_headers_packagename=linux-libc-dev ++packagename=linux-image"$LOCALVERSION" ++fwpackagename=linux-firmware-image"$LOCALVERSION" ++kernel_headers_packagename=linux-headers"$LOCALVERSION" ++dtb_packagename=linux-dtb"$LOCALVERSION" ++libc_headers_packagename=linux-libc-dev"$LOCALVERSION" + dbg_packagename=$packagename-dbg + + if [ "$ARCH" = "um" ] ; then +@@ -106,13 +132,17 @@ esac + 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" ++rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" "$dtb_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 "$dtb_dir/DEBIAN" ++mkdir -p "$dtb_dir/boot/dtb-$version" "$dtb_dir/usr/share/doc/$dtb_packagename" ++ + mkdir -m 755 -p "$kernel_headers_dir/DEBIAN" + mkdir -p "$kernel_headers_dir/usr/share/doc/$kernel_headers_packagename" + mkdir -p "$kernel_headers_dir/lib/modules/$version/" +@@ -130,7 +160,7 @@ if [ "$ARCH" = "um" ] ; then + cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map" + cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config" + gzip "$tmpdir/usr/share/doc/$packagename/config" +-else ++else + cp System.map "$tmpdir/boot/System.map-$version" + cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version" + fi +@@ -150,21 +180,25 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then + rmdir "$tmpdir/lib/modules/$version" + fi + if [ -n "$BUILD_DEBUG" ] ; then +- ( +- cd $tmpdir +- for module in $(find lib/modules/ -name *.ko); do +- mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module) +- # only keep debug symbols in the debug file +- $OBJCOPY --only-keep-debug $module $dbg_dir/usr/lib/debug/$module +- # strip original module from debug symbols +- $OBJCOPY --strip-debug $module +- # then add a link to those +- $OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $module +- done +- ) ++ for module in $(find $tmpdir/lib/modules/ -name *.ko -printf '%P\n'); do ++ module=lib/modules/$module ++ mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module) ++ # only keep debug symbols in the debug file ++ $OBJCOPY --only-keep-debug $tmpdir/$module $dbg_dir/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=$dbg_dir/usr/lib/debug/$module $tmpdir/$module ++ done + fi + fi + ++if grep -q '^CONFIG_OF=y' $KCONFIG_CONFIG ; then ++ mkdir -p "$tmpdir/boot/dtb-""$version" ++ cp $objtree/arch/arm/boot/dts/*.dtb $dtb_dir/boot/dtb-$version ++ #INSTALL_DTBS_PATH="$dtb_dir/boot/dtb" $MAKE KBUILD_SRC= dtbs_install ++fi ++ + if [ "$ARCH" != "um" ]; then + $MAKE headers_check KBUILD_SRC= + $MAKE headers_install KBUILD_SRC= INSTALL_HDR_PATH="$libc_headers_dir/usr" +@@ -189,9 +223,11 @@ for script in postinst postrm preinst prerm ; do + set -e + + # Pass maintainer script parameters to hook scripts ++ + export DEB_MAINT_PARAMS="\$*" + + # Tell initramfs builder whether it's wanted ++ + export INITRD=$want_initrd + + test -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d +@@ -200,6 +236,51 @@ EOF + chmod 755 "$tmpdir/DEBIAN/$script" + done + ++## ++## Create sym link to kernel image ++## ++kernel_tmp_version="${installed_image_path////\\/}" ++sed -e "s/set -e//g" -i $tmpdir/DEBIAN/postinst ++sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/postinst ++cat >> $tmpdir/DEBIAN/postinst < /dev/null 2>&1 || mv /$kernel_tmp_version /boot/zImage ++ ++if [ -f "/boot/initrd.img-$version" ]; then ++mkimage -A $UTS_MACHINE -O linux -T ramdisk -C gzip -a 0 -e 0 -n uInitrd -d /boot/initrd.img-$version /boot/uInitrd > /dev/null 2>&1 ++rm /boot/initrd.img-$version ++fi ++exit 0 ++EOT ++ ++## ++## FAT install workaround ++## ++sed -e "s/set -e//g" -i $tmpdir/DEBIAN/preinst ++sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/preinst ++cat >> $tmpdir/DEBIAN/preinst <> $tmpdir/DEBIAN/preinst ++ + # Try to determine maintainer and email values + if [ -n "$DEBEMAIL" ]; then + email=$DEBEMAIL +@@ -217,9 +298,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 < debian/changelog +-linux-upstream ($packageversion) unstable; urgency=low ++linux-upstream ($packageversion) $distribution; urgency=low + + * Custom built Linux kernel. + +@@ -233,10 +325,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 +@@ -287,22 +379,32 @@ EOF + + fi + +-# Build header package +-(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl > "$objtree/debian/hdrsrcfiles") +-(cd $srctree; find arch/$SRCARCH/include include scripts -type f >> "$objtree/debian/hdrsrcfiles") +-(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f >> "$objtree/debian/hdrobjfiles") ++# Build kernel header package ++(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles" ++(cd $srctree; find arch/$SRCARCH/include include scripts -type f) >> "$objtree/debian/hdrsrcfiles" ++(cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles" ++(cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles" ++(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles" + destdir=$kernel_headers_dir/usr/src/linux-headers-$version + mkdir -p "$destdir" +-(cd $srctree; tar -c -f - -T "$objtree/debian/hdrsrcfiles") | (cd $destdir; tar -xf -) +-(cd $objtree; tar -c -f - -T "$objtree/debian/hdrobjfiles") | (cd $destdir; tar -xf -) ++######################## headers patch ++ZACNI=$(pwd) ++cd $destdir ++patch -p1 < /tmp/headers-debian-byteshift.patch ++cd $ZACNI ++######################## headers patch ++(cd $srctree; tar -c -f - -T -) < "$objtree/debian/hdrsrcfiles" | (cd $destdir; tar -xf -) ++(cd $objtree; tar -c -f - -T -) < "$objtree/debian/hdrobjfiles" | (cd $destdir; tar -xf -) + (cd $objtree; cp $KCONFIG_CONFIG $destdir/.config) # copy .config manually to be where it's expected to be + ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build" + rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles" + ++(cd "$destdir"; make M=scripts clean) ++ + cat <> debian/control + + Package: $kernel_headers_packagename +-Provides: linux-headers, linux-headers-2.6 ++Provides: linux-headers + Architecture: any + Description: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch} + This package provides kernel header files for $KERNELRELEASE on \${kernel:debarch} +@@ -328,6 +430,16 @@ fi + + cat <> debian/control + ++Package: $dtb_packagename ++Architecture: any ++Description: Linux DTB, version $version ++ This package contains device blobs from the Linux kernel, version $version. ++EOF ++ ++create_package "$dtb_packagename" "$dtb_dir" ++ ++cat <> debian/control ++ + Package: $libc_headers_packagename + Section: devel + Provides: linux-kernel-headers +@@ -339,7 +451,7 @@ EOF + + if [ "$ARCH" != "um" ]; then + create_package "$kernel_headers_packagename" "$kernel_headers_dir" +- create_package "$libc_headers_packagename" "$libc_headers_dir" ++# create_package "$libc_headers_packagename" "$libc_headers_dir" + fi + + create_package "$packagename" "$tmpdir" diff --git a/patch/kernel/udoo-default/01-udoo-packaging-v20-fix.patch b/patch/kernel/udoo-default/01-udoo_pre_package.patch similarity index 73% rename from patch/kernel/udoo-default/01-udoo-packaging-v20-fix.patch rename to patch/kernel/udoo-default/01-udoo_pre_package.patch index be2baf0e2..243efd05c 100644 --- a/patch/kernel/udoo-default/01-udoo-packaging-v20-fix.patch +++ b/patch/kernel/udoo-default/01-udoo_pre_package.patch @@ -1,8 +1,32 @@ diff --git a/scripts/package/builddeb b/scripts/package/builddeb -index 01ad1fc..d6b844d 100755 +index 152d4d2..9b30ad2 100644 --- a/scripts/package/builddeb +++ b/scripts/package/builddeb -@@ -69,38 +69,24 @@ create_package() { +@@ -35,15 +35,13 @@ + sparc*) + debarch=sparc ;; + s390*) +- debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;; ++ debarch=s390 ;; + ppc*) +- debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo powerpc) ;; ++ debarch=powerpc ;; + parisc*) + debarch=hppa ;; + mips*) + debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;; +- arm64) +- debarch=arm64 ;; + arm*) + debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el || true) ;; + *) +@@ -64,42 +62,26 @@ + fi + + # Create the package +- dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch:-$(dpkg --print-architecture)}" -p$pname -P"$pdir" ++ dpkg-gencontrol -isp $forcearch -Vkernel:debarch="${debarch:-$(dpkg --print-architecture)}" -p$pname -P"$pdir" + dpkg --build "$pdir" .. } # Some variables and settings used throughout the script @@ -33,23 +57,16 @@ index 01ad1fc..d6b844d 100755 kernel_headers_dir="$objtree/debian/hdrtmp" libc_headers_dir="$objtree/debian/headertmp" -dtb_dir="$objtree/debian/tmp" -+dtb_dir="$objtree/debian/dtbtmp" dbg_dir="$objtree/debian/dbgtmp" -metadir="$objtree/debian/metatmp" --packagename=linux-image-$version --fwpackagename=linux-firmware-image-$version --kernel_headers_packagename=linux-headers-$version + packagename=linux-image-$version + fwpackagename=linux-firmware-image-$version + kernel_headers_packagename=linux-headers-$version -dtb_packagename=linux-dtb-$version --libc_headers_packagename=linux-libc-dev -+packagename=linux-image"$LOCALVERSION" -+fwpackagename=linux-firmware-image"$LOCALVERSION" -+kernel_headers_packagename=linux-headers"$LOCALVERSION" -+dtb_packagename=linux-dtb"$LOCALVERSION" -+libc_headers_packagename=linux-libc-dev"$LOCALVERSION" + libc_headers_packagename=linux-libc-dev dbg_packagename=$packagename-dbg - if [ "$ARCH" = "um" ] ; then -@@ -118,32 +104,28 @@ parisc|mips|powerpc) +@@ -118,32 +100,24 @@ installed_image_path="boot/vmlinux-$version" ;; *) @@ -62,7 +79,7 @@ index 01ad1fc..d6b844d 100755 # Setup the directory structure -rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" \ - "$dbg_dir" "$dtb_dir" "$metadir" 2>/dev/null -+rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" "$dtb_dir" ++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" @@ -70,14 +87,13 @@ index 01ad1fc..d6b844d 100755 +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 "$dtb_dir/DEBIAN" +- +-mkdir -m 755 -p "$dtb_dir/DEBIAN" -mkdir -p "$dtb_dir/boot/dts" "$dtb_dir/usr/share/doc/$dtb_packagename" - -mkdir -m 755 -p "$metadir/DEBIAN" -mkdir -p "$metadir/usr/share/doc/linux-$version" -+mkdir -p "$dtb_dir/boot/dtb" "$dtb_dir/usr/share/doc/$dtb_packagename" - +- mkdir -m 755 -p "$kernel_headers_dir/DEBIAN" mkdir -p "$kernel_headers_dir/usr/share/doc/$kernel_headers_packagename" -mkdir -p "$kernel_headers_dir/lib/modules/$KERNELRELEASE/" @@ -88,7 +104,7 @@ index 01ad1fc..d6b844d 100755 fi if [ -n "$BUILD_DEBUG" ] ; then mkdir -p "$dbg_dir/usr/share/doc/$dbg_packagename" -@@ -153,12 +135,12 @@ fi +@@ -153,12 +127,12 @@ # Build and install the kernel if [ "$ARCH" = "um" ] ; then $MAKE linux @@ -96,15 +112,16 @@ index 01ad1fc..d6b844d 100755 + cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map" cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config" gzip "$tmpdir/usr/share/doc/$packagename/config" - else +-else - cp System.map "$tmpdir/boot/System.map-$KERNELRELEASE" - cp $KCONFIG_CONFIG "$tmpdir/boot/config-$KERNELRELEASE" ++else + cp System.map "$tmpdir/boot/System.map-$version" + cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version" fi # Not all arches include the boot path in KBUILD_IMAGE if [ -e $KBUILD_IMAGE ]; then -@@ -169,11 +151,11 @@ fi +@@ -169,41 +143,33 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then INSTALL_MOD_PATH="$tmpdir" $MAKE KBUILD_SRC= modules_install @@ -119,21 +136,39 @@ index 01ad1fc..d6b844d 100755 + rmdir "$tmpdir/lib/modules/$version" fi if [ -n "$BUILD_DEBUG" ] ; then - for module in $(find $tmpdir/lib/modules/ -name *.ko -printf '%P\n'); do -@@ -190,9 +172,9 @@ 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 $dbg_dir/usr/lib/debug/$module) +- # only keep debug symbols in the debug file +- $OBJCOPY --only-keep-debug $tmpdir/$module $dbg_dir/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=$dbg_dir/usr/lib/debug/$module $tmpdir/$module +- done ++ ( ++ cd $tmpdir ++ for module in $(find lib/modules/ -name *.ko); do ++ mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module) ++ # only keep debug symbols in the debug file ++ $OBJCOPY --only-keep-debug $module $dbg_dir/usr/lib/debug/$module ++ # strip original module from debug symbols ++ $OBJCOPY --strip-debug $module ++ # then add a link to those ++ $OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $module ++ done ++ ) + fi fi - if grep -q '^CONFIG_OF=y' $KCONFIG_CONFIG ; then +-if grep -q '^CONFIG_OF=y' $KCONFIG_CONFIG ; then - mkdir -p "$tmpdir/boot/dts" - cp $objtree/arch/arm/boot/dts/*.dtb $dtb_dir/boot/dts - #INSTALL_DTBS_PATH="$dtb_dir/boot/dts" $MAKE KBUILD_SRC= dtbs_install -+ mkdir -p "$tmpdir/boot/dtb" -+ cp $objtree/arch/arm/boot/dts/*.dtb $dtb_dir/boot/dtb -+ #INSTALL_DTBS_PATH="$dtb_dir/boot/dtb" $MAKE KBUILD_SRC= dtbs_install - fi - +-fi +- if [ "$ARCH" != "um" ]; then -@@ -200,10 +182,6 @@ if [ "$ARCH" != "um" ]; then + $MAKE headers_check KBUILD_SRC= $MAKE headers_install KBUILD_SRC= INSTALL_HDR_PATH="$libc_headers_dir/usr" fi @@ -144,7 +179,7 @@ index 01ad1fc..d6b844d 100755 # Install the maintainer scripts # Note: hook scripts under /etc/kernel are also executed by official Debian # kernel packages, as well as kernel packages built using make-kpkg. -@@ -217,23 +195,11 @@ else +@@ -217,33 +183,18 @@ fi for script in postinst postrm preinst prerm ; do mkdir -p "$tmpdir$debhookdir/$script.d" @@ -166,10 +201,11 @@ index 01ad1fc..d6b844d 100755 -$metascript - # Pass maintainer script parameters to hook scripts - +- export DEB_MAINT_PARAMS="\$*" -@@ -242,13 +208,36 @@ export DEB_MAINT_PARAMS="\$*" + # Tell initramfs builder whether it's wanted +- export INITRD=$want_initrd -#ubuntu dont evaluate INITRD variable. why? @@ -178,36 +214,7 @@ index 01ad1fc..d6b844d 100755 exit 0 EOF chmod 755 "$tmpdir/DEBIAN/$script" - done - -+## -+## Create sym link to kernel image -+## -+sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/postinst -+cat >> $tmpdir/DEBIAN/postinst < /dev/null 2>&1 -+rm -f /$installed_image_path /boot/zImage -+else -+ln -sf $(basename $installed_image_path) /boot/zImage > /dev/null 2>&1 || mv /$installed_image_path /boot/zImage -+fi -+rm -f /boot/.next -+exit 0 -+EOT -+## -+## FAT install workaround -+## -+sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/preinst -+cat >> $tmpdir/DEBIAN/preinst <> $tmpdir/DEBIAN/preinst -+ -+ - # Try to determine maintainer and email values - if [ -n "$DEBEMAIL" ]; then - email=$DEBEMAIL -@@ -270,7 +259,7 @@ maintainer="$name <$email>" +@@ -270,7 +221,7 @@ cat < debian/changelog linux-upstream ($packageversion) unstable; urgency=low @@ -216,7 +223,7 @@ index 01ad1fc..d6b844d 100755 -- $maintainer $(date -R) EOF -@@ -303,7 +292,6 @@ Priority: optional +@@ -303,7 +254,6 @@ Maintainer: $maintainer Standards-Version: 3.8.4 Homepage: http://www.kernel.org/ @@ -224,7 +231,7 @@ index 01ad1fc..d6b844d 100755 EOF if [ "$ARCH" = "um" ]; then -@@ -327,46 +315,40 @@ else +@@ -327,43 +277,29 @@ cat <> debian/control Package: $packagename @@ -233,15 +240,15 @@ index 01ad1fc..d6b844d 100755 Suggests: $fwpackagename -Replaces: linux-image, linux-image-2.6, linux-modules-$version, $dtb_packagename -Conflicts: linux-image, linux-image-2.6, linux-modules-$version, $dtb_packagename --Architecture: any --Description: Linux kernel, version $version + Architecture: any + Description: Linux kernel, version $version - This package contains the Linux kernel, modules, device tree blobs - and corresponding other files, version: $version. - -Package: linux-$version -Depends: $dtb_packagename, $packagename, $fwpackagename - Architecture: any - Description: Linux kernel, version $version +-Architecture: any +-Description: Linux kernel, version $version - This metapackage contains the Linux kernel, modules, device tree blobs - and corresponding other files, version: $version. - @@ -251,7 +258,7 @@ index 01ad1fc..d6b844d 100755 fi - # Build kernel header package +-# Build kernel header package -if [ -n "$BUILD_HEADERS" ] ; then - - (cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles" @@ -266,36 +273,24 @@ index 01ad1fc..d6b844d 100755 - (cd $objtree; cp $KCONFIG_CONFIG $destdir/.config) # copy .config manually to be where it's expected to be - ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$KERNELRELEASE/build" - rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles" -- -- cat <> debian/control -+(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles" -+(cd $srctree; find arch/$SRCARCH/include include scripts -type f) >> "$objtree/debian/hdrsrcfiles" -+(cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles" -+(cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles" -+(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles" ++# Build header package ++(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl > "$objtree/debian/hdrsrcfiles") ++(cd $srctree; find arch/$SRCARCH/include include scripts -type f >> "$objtree/debian/hdrsrcfiles") ++(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f >> "$objtree/debian/hdrobjfiles") +destdir=$kernel_headers_dir/usr/src/linux-headers-$version +mkdir -p "$destdir" -+######################## headers patch -+ZACNI=$(pwd) -+cd $destdir -+patch -p1 < /tmp/headers-debian-byteshift.patch -+cd $ZACNI -+######################## headers patch -+(cd $srctree; tar -c -f - -T -) < "$objtree/debian/hdrsrcfiles" | (cd $destdir; tar -xf -) -+(cd $objtree; tar -c -f - -T -) < "$objtree/debian/hdrobjfiles" | (cd $destdir; tar -xf -) ++(cd $srctree; tar -c -f - -T "$objtree/debian/hdrsrcfiles") | (cd $destdir; tar -xf -) ++(cd $objtree; tar -c -f - -T "$objtree/debian/hdrobjfiles") | (cd $destdir; tar -xf -) +(cd $objtree; cp $KCONFIG_CONFIG $destdir/.config) # copy .config manually to be where it's expected to be +ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build" +rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles" -+ + +- cat <> debian/control +cat <> debian/control Package: $kernel_headers_packagename --Provides: linux-headers, linux-headers-2.6 -+Provides: linux-headers - Architecture: any - Description: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch} - This package provides kernel header files for $KERNELRELEASE on \${kernel:debarch} -@@ -374,35 +356,15 @@ Description: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch} + Provides: linux-headers, linux-headers-2.6 +@@ -374,35 +310,15 @@ This is useful for people who need to build external modules EOF @@ -332,20 +327,10 @@ index 01ad1fc..d6b844d 100755 Description: Linux kernel firmware, version $version This package contains firmware from the Linux kernel, version $version. EOF -@@ -410,20 +372,45 @@ EOF +@@ -410,20 +326,35 @@ create_package "$fwpackagename" "$fwdir" fi -+cat <> debian/control -+ -+Package: $dtb_packagename -+Architecture: any -+Description: Linux DTB, version $version -+ This package contains device blobs from the Linux kernel, version $version. -+EOF -+ -+create_package "$dtb_packagename" "$dtb_dir" -+ +cat <> debian/control + +Package: $libc_headers_packagename @@ -359,7 +344,7 @@ index 01ad1fc..d6b844d 100755 + +if [ "$ARCH" != "um" ]; then + create_package "$kernel_headers_packagename" "$kernel_headers_dir" -+# create_package "$libc_headers_packagename" "$libc_headers_dir" ++ create_package "$libc_headers_packagename" "$libc_headers_dir" +fi + create_package "$packagename" "$tmpdir" @@ -383,10 +368,3 @@ index 01ad1fc..d6b844d 100755 cat <> debian/control -@@ -439,4 +426,4 @@ EOF - create_package "$dbg_packagename" "$dbg_dir" - fi - --exit 0 -+exit 0 -\ No newline at end of file diff --git a/patch/kernel/udoo-default/02-headers-packing.patch b/patch/kernel/udoo-default/02-headers-packing.patch deleted file mode 100644 index d27fd190d..000000000 --- a/patch/kernel/udoo-default/02-headers-packing.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/scripts/package/builddeb b/scripts/package/builddeb -index 6c3b038..616aa9b 100755 ---- a/scripts/package/builddeb -+++ b/scripts/package/builddeb -@@ -334,6 +334,8 @@ mkdir -p "$destdir" - ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build" - rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles" - -+(cd "$destdir"; make M=scripts clean) -+ - cat <> debian/control - - Package: $kernel_headers_packagename diff --git a/patch/kernel/udoo-default/packaging-3.14-DEFAULT-with-postinstall-scripts.patch b/patch/kernel/udoo-default/packaging-3.14-DEFAULT-with-postinstall-scripts.patch new file mode 100644 index 000000000..a524864e1 --- /dev/null +++ b/patch/kernel/udoo-default/packaging-3.14-DEFAULT-with-postinstall-scripts.patch @@ -0,0 +1,303 @@ +diff --git a/scripts/package/builddeb b/scripts/package/builddeb +index 152d4d2..9b30ad2 100644 +--- a/scripts/package/builddeb ++++ b/scripts/package/builddeb +@@ -35,13 +35,15 @@ create_package() { + sparc*) + debarch=sparc ;; + s390*) +- debarch=s390 ;; ++ debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;; + ppc*) +- debarch=powerpc ;; ++ debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo powerpc) ;; + parisc*) + debarch=hppa ;; + mips*) + debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;; ++ arm64) ++ debarch=arm64 ;; + arm*) + debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el || true) ;; + *) +@@ -61,8 +63,30 @@ create_package() { + forcearch="-DArchitecture=$debarch" + fi + ++ # Create preinstall and post install script to remove dtb ++ if [[ "$1" == *dtb* ]]; then ++ echo "if [ -d /boot/dtb ]; then rm -rf /boot/dtb; fi" >> $pdir/DEBIAN/preinst ++ echo "if [ -d /boot/dtb-$version ]; then rm -rf /boot/dtb-$version; fi" >> $pdir/DEBIAN/preinst ++ echo "if [ -d /boot/dtb.old ]; then rm -rf /boot/dtb.old; fi" >> $pdir/DEBIAN/preinst ++ echo "if [ -d /dtb ]; then rm -rf /dtb; fi" >> $pdir/DEBIAN/preinst ++ echo "exit 0" >> $pdir/DEBIAN/preinst ++ chmod 775 $pdir/DEBIAN/preinst ++ # ++ echo "if [ -d /boot/dtb.old ]; then rm -rf /boot/dtb.old; fi" >> $pdir/DEBIAN/postinst ++ echo "ln -sf dtb-$version /boot/dtb > /dev/null 2>&1 || mv /boot/dtb-$version /boot/dtb" >> $pdir/DEBIAN/postinst ++ echo "exit 0" >> $pdir/DEBIAN/postinst ++ chmod 775 $pdir/DEBIAN/postinst ++ fi ++ ++ # Create postinstall script for headers ++ if [[ "$1" == *headers* ]]; then ++ echo "cd /usr/src/linux-headers-$version; echo \"Compiling headers - please wait ...\"; make -s scripts >/dev/null 2>&1" >> $pdir/DEBIAN/postinst ++ echo "exit 0" >> $pdir/DEBIAN/postinst ++ chmod 775 $pdir/DEBIAN/postinst ++ fi ++ + # Create the package +- dpkg-gencontrol -isp $forcearch -Vkernel:debarch="${debarch:-$(dpkg --print-architecture)}" -p$pname -P"$pdir" ++ dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch:-$(dpkg --print-architecture)}" -p$pname -P"$pdir" + dpkg --build "$pdir" .. + } + +@@ -78,11 +102,13 @@ tmpdir="$objtree/debian/tmp" + fwdir="$objtree/debian/fwtmp" + kernel_headers_dir="$objtree/debian/hdrtmp" + libc_headers_dir="$objtree/debian/headertmp" ++dtb_dir="$objtree/debian/dtbtmp" + dbg_dir="$objtree/debian/dbgtmp" +-packagename=linux-image-$version +-fwpackagename=linux-firmware-image-$version +-kernel_headers_packagename=linux-headers-$version +-libc_headers_packagename=linux-libc-dev ++packagename=linux-image"$LOCALVERSION" ++fwpackagename=linux-firmware-image"$LOCALVERSION" ++kernel_headers_packagename=linux-headers"$LOCALVERSION" ++dtb_packagename=linux-dtb"$LOCALVERSION" ++libc_headers_packagename=linux-libc-dev"$LOCALVERSION" + dbg_packagename=$packagename-dbg + + if [ "$ARCH" = "um" ] ; then +@@ -106,13 +132,17 @@ esac + 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" ++rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" "$dtb_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 "$dtb_dir/DEBIAN" ++mkdir -p "$dtb_dir/boot/dtb-$version" "$dtb_dir/usr/share/doc/$dtb_packagename" ++ + mkdir -m 755 -p "$kernel_headers_dir/DEBIAN" + mkdir -p "$kernel_headers_dir/usr/share/doc/$kernel_headers_packagename" + mkdir -p "$kernel_headers_dir/lib/modules/$version/" +@@ -130,7 +160,7 @@ if [ "$ARCH" = "um" ] ; then + cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map" + cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config" + gzip "$tmpdir/usr/share/doc/$packagename/config" +-else ++else + cp System.map "$tmpdir/boot/System.map-$version" + cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version" + fi +@@ -150,21 +180,25 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then + rmdir "$tmpdir/lib/modules/$version" + fi + if [ -n "$BUILD_DEBUG" ] ; then +- ( +- cd $tmpdir +- for module in $(find lib/modules/ -name *.ko); do +- mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module) +- # only keep debug symbols in the debug file +- $OBJCOPY --only-keep-debug $module $dbg_dir/usr/lib/debug/$module +- # strip original module from debug symbols +- $OBJCOPY --strip-debug $module +- # then add a link to those +- $OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $module +- done +- ) ++ for module in $(find $tmpdir/lib/modules/ -name *.ko -printf '%P\n'); do ++ module=lib/modules/$module ++ mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module) ++ # only keep debug symbols in the debug file ++ $OBJCOPY --only-keep-debug $tmpdir/$module $dbg_dir/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=$dbg_dir/usr/lib/debug/$module $tmpdir/$module ++ done + fi + fi + ++if grep -q '^CONFIG_OF=y' $KCONFIG_CONFIG ; then ++ mkdir -p "$tmpdir/boot/dtb-""$version" ++ cp $objtree/arch/arm/boot/dts/*.dtb $dtb_dir/boot/dtb-$version ++ #INSTALL_DTBS_PATH="$dtb_dir/boot/dtb" $MAKE KBUILD_SRC= dtbs_install ++fi ++ + if [ "$ARCH" != "um" ]; then + $MAKE headers_check KBUILD_SRC= + $MAKE headers_install KBUILD_SRC= INSTALL_HDR_PATH="$libc_headers_dir/usr" +@@ -189,9 +223,11 @@ for script in postinst postrm preinst prerm ; do + set -e + + # Pass maintainer script parameters to hook scripts ++ + export DEB_MAINT_PARAMS="\$*" + + # Tell initramfs builder whether it's wanted ++ + export INITRD=$want_initrd + + test -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d +@@ -200,6 +236,51 @@ EOF + chmod 755 "$tmpdir/DEBIAN/$script" + done + ++## ++## Create sym link to kernel image ++## ++kernel_tmp_version="${installed_image_path////\\/}" ++sed -e "s/set -e//g" -i $tmpdir/DEBIAN/postinst ++sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/postinst ++cat >> $tmpdir/DEBIAN/postinst < /dev/null 2>&1 || mv /$kernel_tmp_version /boot/zImage ++ ++if [ -f "/boot/initrd.img-$version" ]; then ++mkimage -A $UTS_MACHINE -O linux -T ramdisk -C gzip -a 0 -e 0 -n uInitrd -d /boot/initrd.img-$version /boot/uInitrd > /dev/null 2>&1 ++rm /boot/initrd.img-$version ++fi ++exit 0 ++EOT ++ ++## ++## FAT install workaround ++## ++sed -e "s/set -e//g" -i $tmpdir/DEBIAN/preinst ++sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/preinst ++cat >> $tmpdir/DEBIAN/preinst <> $tmpdir/DEBIAN/preinst ++ + # Try to determine maintainer and email values + if [ -n "$DEBEMAIL" ]; then + email=$DEBEMAIL +@@ -217,9 +298,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 < debian/changelog +-linux-upstream ($packageversion) unstable; urgency=low ++linux-upstream ($packageversion) $distribution; urgency=low + + * Custom built Linux kernel. + +@@ -233,10 +325,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 +@@ -287,22 +379,32 @@ EOF + + fi + +-# Build header package +-(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl > "$objtree/debian/hdrsrcfiles") +-(cd $srctree; find arch/$SRCARCH/include include scripts -type f >> "$objtree/debian/hdrsrcfiles") +-(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f >> "$objtree/debian/hdrobjfiles") ++# Build kernel header package ++(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles" ++(cd $srctree; find arch/$SRCARCH/include include scripts -type f) >> "$objtree/debian/hdrsrcfiles" ++(cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles" ++(cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles" ++(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles" + destdir=$kernel_headers_dir/usr/src/linux-headers-$version + mkdir -p "$destdir" +-(cd $srctree; tar -c -f - -T "$objtree/debian/hdrsrcfiles") | (cd $destdir; tar -xf -) +-(cd $objtree; tar -c -f - -T "$objtree/debian/hdrobjfiles") | (cd $destdir; tar -xf -) ++######################## headers patch ++ZACNI=$(pwd) ++cd $destdir ++patch -p1 < /tmp/headers-debian-byteshift.patch ++cd $ZACNI ++######################## headers patch ++(cd $srctree; tar -c -f - -T -) < "$objtree/debian/hdrsrcfiles" | (cd $destdir; tar -xf -) ++(cd $objtree; tar -c -f - -T -) < "$objtree/debian/hdrobjfiles" | (cd $destdir; tar -xf -) + (cd $objtree; cp $KCONFIG_CONFIG $destdir/.config) # copy .config manually to be where it's expected to be + ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build" + rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles" + ++(cd "$destdir"; make M=scripts clean) ++ + cat <> debian/control + + Package: $kernel_headers_packagename +-Provides: linux-headers, linux-headers-2.6 ++Provides: linux-headers + Architecture: any + Description: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch} + This package provides kernel header files for $KERNELRELEASE on \${kernel:debarch} +@@ -328,6 +430,16 @@ fi + + cat <> debian/control + ++Package: $dtb_packagename ++Architecture: any ++Description: Linux DTB, version $version ++ This package contains device blobs from the Linux kernel, version $version. ++EOF ++ ++create_package "$dtb_packagename" "$dtb_dir" ++ ++cat <> debian/control ++ + Package: $libc_headers_packagename + Section: devel + Provides: linux-kernel-headers +@@ -339,7 +451,7 @@ EOF + + if [ "$ARCH" != "um" ]; then + create_package "$kernel_headers_packagename" "$kernel_headers_dir" +- create_package "$libc_headers_packagename" "$libc_headers_dir" ++# create_package "$libc_headers_packagename" "$libc_headers_dir" + fi + + create_package "$packagename" "$tmpdir"