script: fixup builddeb
authorNick <nick@khadas.com>
Tue, 16 Apr 2019 03:07:50 +0000 (11:07 +0800)
committerNick <nick@khadas.com>
Fri, 17 May 2019 02:16:46 +0000 (10:16 +0800)
scripts/package/builddeb

index 0a2a737..8d0351d 100755 (executable)
@@ -23,6 +23,28 @@ create_package() {
        sh -c "cd '$pdir'; find . -type f ! -path './DEBIAN/*' -printf '%P\0' \
                | xargs -r0 md5sum > DEBIAN/md5sums"
 
+       # Create preinstall and post install script to remove dtb
+       if [[ "$1" == *dtb* ]]; then
+               echo "if [ -d /boot/dtb-$version ]; then mv /boot/dtb-$version /boot/dtb-$version.old; 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 mv /dtb /dtb.old; fi" >> $pdir/DEBIAN/preinst
+               echo "if [ -d /boot/dtb ]; then mv /boot/dtb /boot/dtb.old; fi" >> $pdir/DEBIAN/preinst
+               echo "exit 0" >> $pdir/DEBIAN/preinst
+               chmod 775 $pdir/DEBIAN/preinst
+               #
+               echo "if [ -d /boot/dtb-$version.old ]; then rm -rf /boot/dtb-$version.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 ...\";find -type f -exec touch {} +; make -s scripts >/dev/null 2>&1" >> $pdir/DEBIAN/postinst
+               echo "exit 0" >> $pdir/DEBIAN/postinst
+               chmod 775 $pdir/DEBIAN/postinst
+       fi
+
        # Fix ownership and permissions
        chown -R root:root "$pdir"
        chmod -R go-w "$pdir"
@@ -95,11 +117,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"$LOCAL_VERSION"
+fwpackagename=linux-firmware-image"$LOCAL_VERSION"
+kernel_headers_packagename=linux-headers"$LOCAL_VERSION"
+dtb_packagename=linux-dtb"$LOCAL_VERSION"
+libc_headers_packagename=linux-libc-dev"$LOCAL_VERSION"
 dbg_packagename=$packagename-dbg
 debarch=
 forcearch=
@@ -126,7 +150,9 @@ 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" $objtree/debian/files
+rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" "$dtb_dir" $objtree/debian/files
+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 "$tmpdir/DEBIAN"
 mkdir -p "$tmpdir/lib" "$tmpdir/boot"
 mkdir -p "$fwdir/lib/firmware/$version/"
@@ -143,12 +169,8 @@ 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
-       cp $KBUILD_IMAGE "$tmpdir/$installed_image_path"
-else
-       cp arch/$ARCH/boot/$KBUILD_IMAGE "$tmpdir/$installed_image_path"
-fi
+
+cp arch/$ARCH/boot/Image "$tmpdir/$installed_image_path"
 
 if grep -q "^CONFIG_OF=y" $KCONFIG_CONFIG ; then
        # Only some architectures with OF support have this target
@@ -185,6 +207,11 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
        fi
 fi
 
+if grep -q '^CONFIG_ARM64=y' $KCONFIG_CONFIG ; then
+       mkdir -p "$tmpdir/boot/dtb-""$version"
+       cp $objtree/arch/$SRCARCH/boot/dts/amlogic/*.dtb $dtb_dir/boot/dtb-$version
+fi
+
 if [ "$ARCH" != "um" ]; then
        $MAKE headers_check KBUILD_SRC=
        $MAKE headers_install KBUILD_SRC= INSTALL_HDR_PATH="$libc_headers_dir/usr"
@@ -220,6 +247,37 @@ EOF
        chmod 755 "$tmpdir/DEBIAN/$script"
 done
 
+##
+## Create sym link to kernel image
+##
+sed -e "s/set -e//g" -i $tmpdir/DEBIAN/postinst
+sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/postinst
+cat >> $tmpdir/DEBIAN/postinst <<EOF
+ln -sf $(basename $installed_image_path) /boot/zImage > /dev/null 2>&1 || mv /$installed_image_path /boot/zImage
+exit 0
+EOF
+
+## backup kernel image, config and System.map, fixup kernel upgrade issue
+sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/preinst
+cat >> $tmpdir/DEBIAN/preinst <<EOF
+if [ -f /$installed_image_path ]; then
+       mv /$installed_image_path /$installed_image_path.old
+fi
+
+if [ -f /boot/zImage ]; then
+       mv /boot/zImage /boot/zImage.old
+fi
+
+if [ -f /boot/System.map-$version ]; then
+       mv /boot/System.map-$version /boot/System.map-$version.old
+fi
+
+if [ -f /boot/config-$version ]; then
+       mv /boot/config-$version /boot/config-$version.old
+fi
+exit 0
+EOF
+
 # Try to determine maintainer and email values
 if [ -n "$DEBEMAIL" ]; then
        email=$DEBEMAIL
@@ -326,6 +384,7 @@ fi
 # Build kernel header package
 (cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles"
 (cd $srctree; find arch/*/include include scripts -type f -o -type l) >> "$objtree/debian/hdrsrcfiles"
+(cd $srctree; find security/*/include -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"
 if grep -q '^CONFIG_STACK_VALIDATION=y' $KCONFIG_CONFIG ; then
@@ -372,6 +431,17 @@ fi
 
 cat <<EOF >> 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 <<EOF >> debian/control
+
+
 Package: $libc_headers_packagename
 Section: devel
 Provides: linux-kernel-headers