mirror of
https://github.com/Fishwaldo/build.git
synced 2025-03-24 15:52:02 +00:00
Next branch kernel is currently broken DVFS can be safely enabled on C2 since the max reported frequency is 1.5GHz
202 lines
7.1 KiB
Diff
202 lines
7.1 KiB
Diff
diff --git a/scripts/package/builddeb b/scripts/package/builddeb
|
|
index 0bc8747..9dab810 100755
|
|
--- a/scripts/package/builddeb
|
|
+++ b/scripts/package/builddeb
|
|
@@ -29,6 +29,28 @@ create_package() {
|
|
# in case we are in a restrictive umask environment like 0077
|
|
chmod -R a+rX "$pdir"
|
|
|
|
+ # 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 ...\"; 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 $forcearch -Vkernel:debarch="${debarch}" -p$pname -P"$pdir"
|
|
dpkg --build "$pdir" ..
|
|
@@ -94,10 +116,13 @@ sourcename=$KDEB_SOURCENAME
|
|
tmpdir="$objtree/debian/tmp"
|
|
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
|
|
-kernel_headers_packagename=linux-headers-$version
|
|
-libc_headers_packagename=linux-libc-dev
|
|
+packagename=linux-image-dev"$LOCALVERSION"
|
|
+fwpackagename=linux-firmware-image-dev"$LOCALVERSION"
|
|
+kernel_headers_packagename=linux-headers-dev"$LOCALVERSION"
|
|
+dtb_packagename=linux-dtb-dev"$LOCALVERSION"
|
|
+libc_headers_packagename=linux-libc-dev-dev"$LOCALVERSION"
|
|
dbg_packagename=$packagename-dbg
|
|
debarch=
|
|
forcearch=
|
|
@@ -124,7 +149,9 @@ esac
|
|
BUILD_DEBUG="$(grep -s '^CONFIG_DEBUG_INFO=y' $KCONFIG_CONFIG || true)"
|
|
|
|
# Setup the directory structure
|
|
-rm -rf "$tmpdir" "$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 "$kernel_headers_dir/lib/modules/$version/"
|
|
@@ -177,6 +204,11 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
|
|
fi
|
|
fi
|
|
|
|
+if grep -q '^CONFIG_OF=y' $KCONFIG_CONFIG ; then
|
|
+ #mkdir -p "$tmpdir/boot/dtb"
|
|
+ INSTALL_DTBS_PATH="$dtb_dir/boot/dtb-$version" $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,21 +221,23 @@ fi
|
|
# so do we; recent versions of dracut and initramfs-tools will obey this.
|
|
debhookdir=${KDEB_HOOKDIR:-/etc/kernel}
|
|
if grep -q '^CONFIG_BLK_DEV_INITRD=y' $KCONFIG_CONFIG; then
|
|
- want_initrd=Yes
|
|
+ want_initrd=Yes
|
|
else
|
|
want_initrd=No
|
|
fi
|
|
for script in postinst postrm preinst prerm ; do
|
|
mkdir -p "$tmpdir$debhookdir/$script.d"
|
|
cat <<EOF > "$tmpdir/DEBIAN/$script"
|
|
-#!/bin/sh
|
|
+#!/bin/bash
|
|
|
|
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
|
|
@@ -212,6 +246,55 @@ 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 <<EOT
|
|
+if [ "\$(grep nand /proc/partitions)" != "" ] && [ "\$(grep mmc /proc/partitions)" = "" ]; then
|
|
+mkimage -A arm -O linux -T kernel -C none -a "0x40008000" -e "0x40008000" -n "Linux kernel" -d /$installed_image_path /boot/uImage > /dev/null 2>&1
|
|
+cp /boot/uImage /tmp/uImage
|
|
+sync
|
|
+mountpoint -q /boot || mount /boot
|
|
+cp /tmp/uImage /boot/uImage
|
|
+rm -f /$installed_image_path
|
|
+else
|
|
+ln -sf $(basename $installed_image_path) /boot/Image > /dev/null 2>&1 || mv /$installed_image_path /boot/Image
|
|
+fi
|
|
+touch /boot/.next
|
|
+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
|
|
+umount /boot;
|
|
+rm -f /boot/System.map* /boot/config* /boot/vmlinuz* /boot/Image /boot/uImage
|
|
+fi
|
|
+}
|
|
+mountpoint -q /boot && check_and_unmount
|
|
+EOT
|
|
+echo "exit 0" >> $tmpdir/DEBIAN/preinst
|
|
+
|
|
# Try to determine maintainer and email values
|
|
if [ -n "$DEBEMAIL" ]; then
|
|
email=$DEBEMAIL
|
|
@@ -325,12 +408,20 @@ if grep -q '^CONFIG_GCC_PLUGINS=y' $KCONFIG_CONFIG ; then
|
|
fi
|
|
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 $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 <<EOF >> debian/control
|
|
|
|
Package: $kernel_headers_packagename
|
|
@@ -343,6 +434,16 @@ EOF
|
|
|
|
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
|
|
@@ -354,7 +455,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"
|