Skip to content

Commit bfd6ae3

Browse files
committed
packaging: sync builddeb changes
Signed-off-by: Robert Nelson <[email protected]>
1 parent 39005de commit bfd6ae3

File tree

1 file changed

+86
-26
lines changed

1 file changed

+86
-26
lines changed

scripts/package/builddeb

Lines changed: 86 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ set -e
1515
create_package() {
1616
local pname="$1" pdir="$2"
1717

18+
mkdir -m 755 -p "$pdir/DEBIAN"
19+
mkdir -p "$pdir/usr/share/doc/$pname"
1820
cp debian/copyright "$pdir/usr/share/doc/$pname/"
1921
cp debian/changelog "$pdir/usr/share/doc/$pname/changelog.Debian"
2022
gzip -9 "$pdir/usr/share/doc/$pname/changelog.Debian"
@@ -25,8 +27,13 @@ create_package() {
2527
chown -R root:root "$pdir"
2628
chmod -R go-w "$pdir"
2729

30+
# Create the package
31+
dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch}" -p$pname -P"$pdir"
32+
dpkg --build "$pdir" ..
33+
}
34+
35+
set_debarch() {
2836
# Attempt to find the correct Debian architecture
29-
local forcearch="" debarch=""
3037
case "$UTS_MACHINE" in
3138
i386|ia64|alpha)
3239
debarch="$UTS_MACHINE" ;;
@@ -45,8 +52,18 @@ create_package() {
4552
arm64)
4653
debarch=arm64 ;;
4754
arm*)
48-
debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el || true) ;;
55+
if grep -q CONFIG_AEABI=y $KCONFIG_CONFIG; then
56+
if grep -q CONFIG_VFP=y $KCONFIG_CONFIG; then
57+
debarch=armhf
58+
else
59+
debarch=armel
60+
fi
61+
else
62+
debarch=arm
63+
fi
64+
;;
4965
*)
66+
debarch=$(dpkg --print-architecture)
5067
echo "" >&2
5168
echo "** ** ** WARNING ** ** **" >&2
5269
echo "" >&2
@@ -59,13 +76,8 @@ create_package() {
5976
if [ -n "$KBUILD_DEBARCH" ] ; then
6077
debarch="$KBUILD_DEBARCH"
6178
fi
62-
if [ -n "$debarch" ] ; then
63-
forcearch="-DArchitecture=$debarch"
64-
fi
79+
forcearch="-DArchitecture=$debarch"
6580

66-
# Create the package
67-
dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch:-$(dpkg --print-architecture)}" -p$pname -P"$pdir"
68-
dpkg --build "$pdir" ..
6981
}
7082

7183
# Some variables and settings used throughout the script
@@ -76,6 +88,7 @@ if [ -n "$KDEB_PKGVERSION" ]; then
7688
else
7789
packageversion=$version-$revision
7890
fi
91+
sourcename=$KDEB_SOURCENAME
7992
tmpdir="$objtree/debian/tmp"
8093
fwdir="$objtree/debian/fwtmp"
8194
kernel_headers_dir="$objtree/debian/hdrtmp"
@@ -86,6 +99,9 @@ fwpackagename=linux-firmware-image-$version
8699
kernel_headers_packagename=linux-headers-$version
87100
libc_headers_packagename=linux-libc-dev
88101
dbg_packagename=$packagename-dbg
102+
debarch=
103+
forcearch=
104+
set_debarch
89105

90106
if [ "$ARCH" = "um" ] ; then
91107
packagename=user-mode-linux-$version
@@ -108,26 +124,15 @@ esac
108124
BUILD_DEBUG="$(grep -s '^CONFIG_DEBUG_INFO=y' $KCONFIG_CONFIG || true)"
109125

110126
# Setup the directory structure
111-
rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir"
127+
rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" $objtree/debian/files
112128
mkdir -m 755 -p "$tmpdir/DEBIAN"
113-
mkdir -p "$tmpdir/lib" "$tmpdir/boot" "$tmpdir/usr/share/doc/$packagename"
114-
mkdir -m 755 -p "$fwdir/DEBIAN"
115-
mkdir -p "$fwdir/lib/firmware/$version/" "$fwdir/usr/share/doc/$fwpackagename"
116-
mkdir -m 755 -p "$libc_headers_dir/DEBIAN"
117-
mkdir -p "$libc_headers_dir/usr/share/doc/$libc_headers_packagename"
118-
mkdir -m 755 -p "$kernel_headers_dir/DEBIAN"
119-
mkdir -p "$kernel_headers_dir/usr/share/doc/$kernel_headers_packagename"
129+
mkdir -p "$tmpdir/lib" "$tmpdir/boot"
130+
mkdir -p "$fwdir/lib/firmware/$version/"
120131
mkdir -p "$kernel_headers_dir/lib/modules/$version/"
121-
if [ "$ARCH" = "um" ] ; then
122-
mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin"
123-
fi
124-
if [ -n "$BUILD_DEBUG" ] ; then
125-
mkdir -p "$dbg_dir/usr/share/doc/$dbg_packagename"
126-
mkdir -m 755 -p "$dbg_dir/DEBIAN"
127-
fi
128132

129133
# Build and install the kernel
130134
if [ "$ARCH" = "um" ] ; then
135+
mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin" "$tmpdir/usr/share/doc/$packagename"
131136
$MAKE linux
132137
cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"
133138
cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config"
@@ -143,6 +148,22 @@ else
143148
cp arch/$ARCH/boot/$KBUILD_IMAGE "$tmpdir/$installed_image_path"
144149
fi
145150

151+
if grep -q "^CONFIG_OF=y" $KCONFIG_CONFIG ; then
152+
mkdir -p "$tmpdir/boot/dtbs/$version"
153+
# Only some architectures with OF support have this target
154+
if grep -q dtbs_install "${srctree}/arch/$SRCARCH/Makefile"; then
155+
$MAKE KBUILD_SRC= INSTALL_DTBS_PATH="$tmpdir/boot/dtbs/$version" dtbs_install
156+
else
157+
$MAKE KBUILD_SRC= dtbs
158+
find arch/arm/boot/ -iname "*.dtb" -exec cp -v '{}' "$tmpdir/boot/dtbs/$version" \;
159+
fi
160+
161+
#make dtbs_install seems to add an .old directory
162+
if [ -d "$tmpdir/boot/dtbs/$version.old" ] ; then
163+
rm -rf "$tmpdir/boot/dtbs/$version.old"
164+
fi
165+
fi
166+
146167
if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
147168
INSTALL_MOD_PATH="$tmpdir" $MAKE KBUILD_SRC= modules_install
148169
rm -f "$tmpdir/lib/modules/$version/build"
@@ -162,6 +183,12 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
162183
# then add a link to those
163184
$OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $tmpdir/$module
164185
done
186+
187+
# resign stripped modules
188+
MODULE_SIG_ALL="$(grep -s '^CONFIG_MODULE_SIG_ALL=y' $KCONFIG_CONFIG || true)"
189+
if [ -n "$MODULE_SIG_ALL" ]; then
190+
INSTALL_MOD_PATH="$tmpdir" $MAKE KBUILD_SRC= modules_sign
191+
fi
165192
fi
166193
fi
167194

@@ -206,7 +233,7 @@ if [ -n "$DEBEMAIL" ]; then
206233
elif [ -n "$EMAIL" ]; then
207234
email=$EMAIL
208235
else
209-
email=$(id -nu)@$(hostname -f)
236+
email=$(id -nu)@$(hostname -f 2>/dev/null || hostname)
210237
fi
211238
if [ -n "$DEBFULLNAME" ]; then
212239
name=$DEBFULLNAME
@@ -230,7 +257,7 @@ fi
230257

231258
# Generate a simple changelog template
232259
cat <<EOF > debian/changelog
233-
linux-upstream ($packageversion) $distribution; urgency=low
260+
$sourcename ($packageversion) $distribution; urgency=low
234261
235262
* Custom built Linux kernel.
236263
@@ -257,12 +284,16 @@ On Debian GNU/Linux systems, the complete text of the GNU General Public
257284
License version 2 can be found in \`/usr/share/common-licenses/GPL-2'.
258285
EOF
259286

287+
288+
build_depends="bc, kmod, cpio "
289+
260290
# Generate a control file
261291
cat <<EOF > debian/control
262-
Source: linux-upstream
292+
Source: $sourcename
263293
Section: kernel
264294
Priority: optional
265295
Maintainer: $maintainer
296+
Build-Depends: $build_depends
266297
Standards-Version: 3.8.4
267298
Homepage: http://www.kernel.org/
268299
EOF
@@ -383,4 +414,33 @@ EOF
383414
create_package "$dbg_packagename" "$dbg_dir"
384415
fi
385416

417+
if [ "x$1" = "xdeb-pkg" ]
418+
then
419+
cat <<EOF > debian/rules
420+
#!/usr/bin/make -f
421+
422+
build:
423+
\$(MAKE)
424+
425+
binary-arch:
426+
\$(MAKE) KDEB_SOURCENAME=${sourcename} KDEB_PKGVERSION=${packageversion} bindeb-pkg
427+
428+
clean:
429+
rm -rf debian/*tmp debian/files
430+
mv debian/ debian.backup # debian/ might be cleaned away
431+
\$(MAKE) clean
432+
mv debian.backup debian
433+
434+
binary: binary-arch
435+
EOF
436+
mv ${sourcename}.tar.gz ../${sourcename}_${version}.orig.tar.gz
437+
tar caf ../${sourcename}_${packageversion}.debian.tar.gz debian/{copyright,rules,changelog,control}
438+
dpkg-source -cdebian/control -ldebian/changelog --format="3.0 (custom)" --target-format="3.0 (quilt)" \
439+
-b / ../${sourcename}_${version}.orig.tar.gz ../${sourcename}_${packageversion}.debian.tar.gz
440+
mv ${sourcename}_${packageversion}*dsc ..
441+
dpkg-genchanges > ../${sourcename}_${packageversion}_${debarch}.changes
442+
else
443+
dpkg-genchanges -b > ../${sourcename}_${packageversion}_${debarch}.changes
444+
fi
445+
386446
exit 0

0 commit comments

Comments
 (0)