diff --git a/scripts/package/builddeb b/scripts/package/builddeb index e15159d..33790aa 100755 --- a/scripts/package/builddeb +++ b/scripts/package/builddeb @@ -29,6 +29,31 @@ 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,9 +119,11 @@ 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 +packagename=linux-image"$LOCALVERSION" +kernel_headers_packagename=linux-headers"$LOCALVERSION" +dtb_packagename=linux-dtb"$LOCALVERSION" libc_headers_packagename=linux-libc-dev dbg_packagename=$packagename-dbg debarch= @@ -124,8 +151,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 -mkdir -m 755 -p "$tmpdir/DEBIAN" +rm -rf "$tmpdir" "$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/" @@ -145,7 +173,7 @@ cp "$($MAKE -s image_name)" "$tmpdir/$installed_image_path" 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 + $MAKE KBUILD_SRC= INSTALL_DTBS_PATH="$dtb_dir/boot/dtb-$version" dtbs_install fi fi @@ -212,6 +240,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 < /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/zImage > /dev/null 2>&1 || mv /$installed_image_path /boot/zImage + 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 <> $tmpdir/DEBIAN/preinst + # Try to determine maintainer and email values if [ -n "$DEBEMAIL" ]; then email=$DEBEMAIL @@ -325,11 +402,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 +mkdir -p "$destdir"/net/wireguard; + touch "$destdir"/net/wireguard/{Kconfig,Makefile} # workaround for Wireguard (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 @@ -343,6 +429,16 @@ EOF 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 @@ -354,7 +450,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"