Skip to content

Commit c3884f5

Browse files
committed
script: fixup builddeb
1 parent fd85a33 commit c3884f5

File tree

1 file changed

+80
-11
lines changed

1 file changed

+80
-11
lines changed

scripts/package/builddeb

Lines changed: 80 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,28 @@ create_package() {
2727
chown -R root:root "$pdir"
2828
chmod -R go-w "$pdir"
2929

30+
# Create preinstall and post install script to remove dtb
31+
if [[ "$1" == *dtb* ]]; then
32+
echo "if [ -d /boot/dtb-$version ]; then mv /boot/dtb-$version /boot/dtb-$version.old; fi" >> $pdir/DEBIAN/preinst
33+
echo "if [ -d /boot/dtb.old ]; then rm -rf /boot/dtb.old; fi" >> $pdir/DEBIAN/preinst
34+
echo "if [ -d /dtb ]; then mv /dtb /dtb.old; fi" >> $pdir/DEBIAN/preinst
35+
echo "if [ -d /boot/dtb ]; then mv /boot/dtb /boot/dtb.old; fi" >> $pdir/DEBIAN/preinst
36+
echo "exit 0" >> $pdir/DEBIAN/preinst
37+
chmod 775 $pdir/DEBIAN/preinst
38+
#
39+
echo "if [ -d /boot/dtb-$version.old ]; then rm -rf /boot/dtb-$version.old; fi" >> $pdir/DEBIAN/postinst
40+
echo "ln -sf dtb-$version /boot/dtb > /dev/null 2>&1 || mv /boot/dtb-$version /boot/dtb" >> $pdir/DEBIAN/postinst
41+
echo "exit 0" >> $pdir/DEBIAN/postinst
42+
chmod 775 $pdir/DEBIAN/postinst
43+
fi
44+
45+
# Create postinstall script for headers
46+
if [[ "$1" == *headers* ]]; then
47+
echo "cd /usr/src/linux-headers-$version; echo \"Compiling headers - please wait ...\"; make -s scripts >/dev/null 2>&1" >> $pdir/DEBIAN/postinst
48+
echo "exit 0" >> $pdir/DEBIAN/postinst
49+
chmod 775 $pdir/DEBIAN/postinst
50+
fi
51+
3052
# Create the package
3153
dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch}" -p$pname -P"$pdir"
3254
dpkg --build "$pdir" ..
@@ -93,11 +115,13 @@ tmpdir="$objtree/debian/tmp"
93115
fwdir="$objtree/debian/fwtmp"
94116
kernel_headers_dir="$objtree/debian/hdrtmp"
95117
libc_headers_dir="$objtree/debian/headertmp"
118+
dtb_dir="$objtree/debian/dtbtmp"
96119
dbg_dir="$objtree/debian/dbgtmp"
97-
packagename=linux-image-$version
98-
fwpackagename=linux-firmware-image-$version
99-
kernel_headers_packagename=linux-headers-$version
100-
libc_headers_packagename=linux-libc-dev
120+
packagename=linux-image"$LOCAL_VERSION"
121+
fwpackagename=linux-firmware-image"$LOCAL_VERSION"
122+
kernel_headers_packagename=linux-headers"$LOCAL_VERSION"
123+
dtb_packagename=linux-dtb"$LOCAL_VERSION"
124+
libc_headers_packagename=linux-libc-dev"$LOCAL_VERSION"
101125
dbg_packagename=$packagename-dbg
102126
debarch=
103127
forcearch=
@@ -124,7 +148,9 @@ esac
124148
BUILD_DEBUG="$(grep -s '^CONFIG_DEBUG_INFO=y' $KCONFIG_CONFIG || true)"
125149

126150
# Setup the directory structure
127-
rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" $objtree/debian/files
151+
rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" "$dtb_dir" $objtree/debian/files
152+
mkdir -m 755 -p "$dtb_dir/DEBIAN"
153+
mkdir -p "$dtb_dir/boot/dtb-$version" "$dtb_dir/usr/share/doc/$dtb_packagename"
128154
mkdir -m 755 -p "$tmpdir/DEBIAN"
129155
mkdir -p "$tmpdir/lib" "$tmpdir/boot"
130156
mkdir -p "$fwdir/lib/firmware/$version/"
@@ -141,12 +167,8 @@ else
141167
cp System.map "$tmpdir/boot/System.map-$version"
142168
cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version"
143169
fi
144-
# Not all arches include the boot path in KBUILD_IMAGE
145-
if [ -e $KBUILD_IMAGE ]; then
146-
cp $KBUILD_IMAGE "$tmpdir/$installed_image_path"
147-
else
148-
cp arch/$ARCH/boot/$KBUILD_IMAGE "$tmpdir/$installed_image_path"
149-
fi
170+
171+
cp arch/$ARCH/boot/Image "$tmpdir/$installed_image_path"
150172

151173
if grep -q "^CONFIG_OF=y" $KCONFIG_CONFIG ; then
152174
# Only some architectures with OF support have this target
@@ -183,6 +205,12 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
183205
fi
184206
fi
185207

208+
if grep -q '^CONFIG_ARM64=y' $KCONFIG_CONFIG ; then
209+
mkdir -p "$tmpdir/boot/dtb-""$version"
210+
cp $objtree/arch/$SRCARCH/boot/dts/rockchip/*.dtb $dtb_dir/boot/dtb-$version
211+
fi
212+
213+
186214
if [ "$ARCH" != "um" ]; then
187215
$MAKE headers_check KBUILD_SRC=
188216
$MAKE headers_install KBUILD_SRC= INSTALL_HDR_PATH="$libc_headers_dir/usr"
@@ -218,6 +246,37 @@ EOF
218246
chmod 755 "$tmpdir/DEBIAN/$script"
219247
done
220248

249+
##
250+
## Create sym link to kernel image
251+
##
252+
sed -e "s/set -e//g" -i $tmpdir/DEBIAN/postinst
253+
sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/postinst
254+
cat >> $tmpdir/DEBIAN/postinst <<EOF
255+
ln -sf $(basename $installed_image_path) /boot/zImage > /dev/null 2>&1 || mv /$installed_image_path /boot/zImage
256+
exit 0
257+
EOF
258+
259+
## backup kernel image, config and System.map, fixup kernel upgrade issue
260+
sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/preinst
261+
cat >> $tmpdir/DEBIAN/preinst <<EOF
262+
if [ -f /$installed_image_path ]; then
263+
mv /$installed_image_path /$installed_image_path.old
264+
fi
265+
266+
if [ -f /boot/zImage ]; then
267+
mv /boot/zImage /boot/zImage.old
268+
fi
269+
270+
if [ -f /boot/System.map-$version ]; then
271+
mv /boot/System.map-$version /boot/System.map-$version.old
272+
fi
273+
274+
if [ -f /boot/config-$version ]; then
275+
mv /boot/config-$version /boot/config-$version.old
276+
fi
277+
exit 0
278+
EOF
279+
221280
# Try to determine maintainer and email values
222281
if [ -n "$DEBEMAIL" ]; then
223282
email=$DEBEMAIL
@@ -363,6 +422,16 @@ fi
363422

364423
cat <<EOF >> debian/control
365424
425+
Package: $dtb_packagename
426+
Architecture: any
427+
Description: Linux DTB, version $version
428+
This package contains device blobs from the Linux kernel, version $version.
429+
EOF
430+
431+
create_package "$dtb_packagename" "$dtb_dir"
432+
433+
cat <<EOF >> debian/control
434+
366435
Package: $libc_headers_packagename
367436
Section: devel
368437
Provides: linux-kernel-headers

0 commit comments

Comments
 (0)