Cubox headers auto creation while install, initial RAM drive on kernel install and others packaging related fixes. Tested on one and two partition setup, fat or ext4

This commit is contained in:
Igor Pecovnik 2016-04-07 16:16:40 +02:00
parent 4d72f2f9ab
commit fd91d5920f
2 changed files with 83 additions and 33 deletions

View file

@ -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 <<EOF >> debian/control
Package: $kernel_headers_packagename

View file

@ -1,6 +1,8 @@
diff --git a/scripts/package/builddeb b/scripts/package/builddeb
index 152d4d2..9b30ad2 100644
--- a/scripts/package/builddeb --- a/scripts/package/builddeb
+++ b/scripts/package/builddeb +++ b/scripts/package/builddeb
@@ -35,13 +35,15 @@ @@ -35,13 +35,15 @@ create_package() {
sparc*) sparc*)
debarch=sparc ;; debarch=sparc ;;
s390*) s390*)
@ -18,16 +20,39 @@
arm*) arm*)
debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el || true) ;; debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el || true) ;;
*) *)
@@ -62,7 +64,7 @@ @@ -61,8 +63,30 @@ create_package() {
forcearch="-DArchitecture=$debarch"
fi 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 # Create the package
- dpkg-gencontrol -isp $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-gencontrol $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" .. dpkg --build "$pdir" ..
} }
@@ -78,11 +80,13 @@ @@ -78,11 +102,13 @@ tmpdir="$objtree/debian/tmp"
fwdir="$objtree/debian/fwtmp" fwdir="$objtree/debian/fwtmp"
kernel_headers_dir="$objtree/debian/hdrtmp" kernel_headers_dir="$objtree/debian/hdrtmp"
libc_headers_dir="$objtree/debian/headertmp" libc_headers_dir="$objtree/debian/headertmp"
@ -45,7 +70,7 @@
dbg_packagename=$packagename-dbg dbg_packagename=$packagename-dbg
if [ "$ARCH" = "um" ] ; then if [ "$ARCH" = "um" ] ; then
@@ -106,13 +110,17 @@ @@ -106,13 +132,17 @@ esac
BUILD_DEBUG="$(grep -s '^CONFIG_DEBUG_INFO=y' $KCONFIG_CONFIG || true)" BUILD_DEBUG="$(grep -s '^CONFIG_DEBUG_INFO=y' $KCONFIG_CONFIG || true)"
# Setup the directory structure # Setup the directory structure
@ -59,12 +84,12 @@
mkdir -p "$libc_headers_dir/usr/share/doc/$libc_headers_packagename" 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/dtb" "$dtb_dir/usr/share/doc/$dtb_packagename" +mkdir -p "$dtb_dir/boot/dtb-$version" "$dtb_dir/usr/share/doc/$dtb_packagename"
+ +
mkdir -m 755 -p "$kernel_headers_dir/DEBIAN" mkdir -m 755 -p "$kernel_headers_dir/DEBIAN"
mkdir -p "$kernel_headers_dir/usr/share/doc/$kernel_headers_packagename" mkdir -p "$kernel_headers_dir/usr/share/doc/$kernel_headers_packagename"
mkdir -p "$kernel_headers_dir/lib/modules/$version/" mkdir -p "$kernel_headers_dir/lib/modules/$version/"
@@ -130,7 +138,7 @@ @@ -130,7 +160,7 @@ if [ "$ARCH" = "um" ] ; then
cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map" cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"
cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config" cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config"
gzip "$tmpdir/usr/share/doc/$packagename/config" gzip "$tmpdir/usr/share/doc/$packagename/config"
@ -73,7 +98,7 @@
cp System.map "$tmpdir/boot/System.map-$version" cp System.map "$tmpdir/boot/System.map-$version"
cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version" cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version"
fi fi
@@ -150,21 +158,25 @@ @@ -150,21 +180,25 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
rmdir "$tmpdir/lib/modules/$version" rmdir "$tmpdir/lib/modules/$version"
fi fi
if [ -n "$BUILD_DEBUG" ] ; then if [ -n "$BUILD_DEBUG" ] ; then
@ -103,15 +128,15 @@
fi fi
+if grep -q '^CONFIG_OF=y' $KCONFIG_CONFIG ; then +if grep -q '^CONFIG_OF=y' $KCONFIG_CONFIG ; then
+ mkdir -p "$tmpdir/boot/dtb" + mkdir -p "$tmpdir/boot/dtb-""$version"
+ cp $objtree/arch/arm/boot/dts/*.dtb $dtb_dir/boot/dtb + cp $objtree/arch/arm/boot/dts/*.dtb $dtb_dir/boot/dtb-$version
+ #INSTALL_DTBS_PATH="$dtb_dir/boot/dtb" $MAKE KBUILD_SRC= dtbs_install + #INSTALL_DTBS_PATH="$dtb_dir/boot/dtb" $MAKE KBUILD_SRC= dtbs_install
+fi +fi
+ +
if [ "$ARCH" != "um" ]; then if [ "$ARCH" != "um" ]; then
$MAKE headers_check KBUILD_SRC= $MAKE headers_check KBUILD_SRC=
$MAKE headers_install KBUILD_SRC= INSTALL_HDR_PATH="$libc_headers_dir/usr" $MAKE headers_install KBUILD_SRC= INSTALL_HDR_PATH="$libc_headers_dir/usr"
@@ -189,9 +201,11 @@ @@ -189,9 +223,11 @@ for script in postinst postrm preinst prerm ; do
set -e set -e
# Pass maintainer script parameters to hook scripts # Pass maintainer script parameters to hook scripts
@ -123,7 +148,7 @@
export INITRD=$want_initrd export INITRD=$want_initrd
test -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d test -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d
@@ -200,6 +214,15 @@ @@ -200,6 +236,51 @@ EOF
chmod 755 "$tmpdir/DEBIAN/$script" chmod 755 "$tmpdir/DEBIAN/$script"
done done
@ -131,15 +156,51 @@
+## Create sym link to kernel image +## Create sym link to kernel image
+## +##
+kernel_tmp_version="${installed_image_path////\\/}" +kernel_tmp_version="${installed_image_path////\\/}"
+sed -e "s#exit 0#ln -sf $(basename $kernel_tmp_version) /boot/zImage || cp /$kernel_tmp_version /boot/zImage#g" -i $tmpdir/DEBIAN/postinst +sed -e "s/set -e//g" -i $tmpdir/DEBIAN/postinst
+#echo "touch /boot/.next" >> $tmpdir/DEBIAN/postinst +sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/postinst
+echo "exit 0" >> $tmpdir/DEBIAN/postinst +cat >> $tmpdir/DEBIAN/postinst <<EOT
+ln -sf $(basename $kernel_tmp_version) /boot/zImage > /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 <<EOT
+# exit if we are running chroot
+if [ "\$(stat -c %d:%i /)" != "\$(stat -c %d:%i /proc/1/root/.)" ]; then exit 0; fi
+
+check_and_unmount (){
+boot_device=\$(mountpoint -d /boot)
+
+for file in /dev/* ; do
+ CURRENT_DEVICE=\$(printf "%d:%d" \$(stat --printf="0x%t 0x%T" \$file))
+ if [ \$CURRENT_DEVICE = \$boot_device ]; then
+ boot_partition=\$file
+ break;
+ fi
+done
+
+bootfstype=\$(blkid -s TYPE -o value \$boot_partition)
+if [ "\$bootfstype" = "vfat" ]; then
+rm -f /boot/System.map* /boot/config* /boot/vmlinuz* /boot/zImage /boot/uImage /boot/*nitrd*
+fi
+}
+mountpoint -q /boot && check_and_unmount
+EOT
+echo "exit 0" >> $tmpdir/DEBIAN/preinst
+ +
# Try to determine maintainer and email values # Try to determine maintainer and email values
if [ -n "$DEBEMAIL" ]; then if [ -n "$DEBEMAIL" ]; then
email=$DEBEMAIL email=$DEBEMAIL
@@ -217,9 +240,20 @@ @@ -217,9 +298,20 @@ else
fi fi
maintainer="$name <$email>" maintainer="$name <$email>"
@ -161,7 +222,7 @@
* Custom built Linux kernel. * Custom built Linux kernel.
@@ -233,10 +267,10 @@ @@ -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: The sources may be found at most Linux ftp sites, including:
ftp://ftp.kernel.org/pub/linux/kernel ftp://ftp.kernel.org/pub/linux/kernel
@ -174,7 +235,7 @@
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@@ -287,14 +321,22 @@ @@ -287,22 +379,32 @@ EOF
fi fi
@ -203,7 +264,9 @@
(cd $objtree; cp $KCONFIG_CONFIG $destdir/.config) # copy .config manually to be where it's expected to be (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" ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build"
rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles" rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles"
@@ -302,7 +344,7 @@
+(cd "$destdir"; make M=scripts clean)
+
cat <<EOF >> debian/control cat <<EOF >> debian/control
Package: $kernel_headers_packagename Package: $kernel_headers_packagename
@ -212,7 +275,7 @@
Architecture: any Architecture: any
Description: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch} Description: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch}
This package provides kernel header files for $KERNELRELEASE on \${kernel:debarch} This package provides kernel header files for $KERNELRELEASE on \${kernel:debarch}
@@ -328,6 +370,16 @@ @@ -328,6 +430,16 @@ fi
cat <<EOF >> debian/control cat <<EOF >> debian/control
@ -229,7 +292,7 @@
Package: $libc_headers_packagename Package: $libc_headers_packagename
Section: devel Section: devel
Provides: linux-kernel-headers Provides: linux-kernel-headers
@@ -339,7 +391,7 @@ @@ -339,7 +451,7 @@ EOF
if [ "$ARCH" != "um" ]; then if [ "$ARCH" != "um" ]; then
create_package "$kernel_headers_packagename" "$kernel_headers_dir" create_package "$kernel_headers_packagename" "$kernel_headers_dir"