Skip to content

Commit e9a4ab4

Browse files
committed
packaging: sync builddeb changes
Signed-off-by: Robert Nelson <[email protected]>
1 parent 3de6b1e commit e9a4ab4

File tree

2 files changed

+60
-9
lines changed

2 files changed

+60
-9
lines changed

scripts/package/Makefile

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,14 @@ MKSPEC := $(srctree)/scripts/package/mkspec
3232

3333
quiet_cmd_src_tar = TAR $(2).tar.gz
3434
cmd_src_tar = \
35+
set -e; \
3536
if test "$(objtree)" != "$(srctree)"; then \
36-
echo "Building source tarball is not possible outside the"; \
37-
echo "kernel source tree. Don't set KBUILD_OUTPUT, or use the"; \
38-
echo "binrpm-pkg or bindeb-pkg target instead."; \
37+
echo >&2; \
38+
echo >&2 " ERROR:"; \
39+
echo >&2 " Building source tarball is not possible outside the"; \
40+
echo >&2 " kernel source tree. Don't set KBUILD_OUTPUT, or use the"; \
41+
echo >&2 " binrpm-pkg or bindeb-pkg target instead."; \
42+
echo >&2; \
3943
false; \
4044
fi ; \
4145
$(srctree)/scripts/setlocalversion --save-scmversion; \
@@ -45,11 +49,12 @@ rm -f $(objtree)/.scmversion
4549

4650
# rpm-pkg
4751
# ---------------------------------------------------------------------------
48-
rpm-pkg rpm: FORCE
52+
rpm-pkg: FORCE
4953
$(MAKE) clean
5054
$(CONFIG_SHELL) $(MKSPEC) >$(objtree)/kernel.spec
5155
$(call cmd,src_tar,$(KERNELPATH),kernel.spec)
52-
+rpmbuild $(RPMOPTS) --target $(UTS_MACHINE) -ta $(KERNELPATH).tar.gz
56+
+rpmbuild $(RPMOPTS) --target $(UTS_MACHINE) -ta $(KERNELPATH).tar.gz \
57+
--define='_smp_mflags %{nil}'
5358

5459
# binrpm-pkg
5560
# ---------------------------------------------------------------------------
@@ -93,6 +98,21 @@ bindeb-pkg: FORCE
9398

9499
clean-dirs += $(objtree)/debian/
95100

101+
# snap-pkg
102+
# ---------------------------------------------------------------------------
103+
snap-pkg: FORCE
104+
rm -rf $(objtree)/snap
105+
mkdir $(objtree)/snap
106+
$(MAKE) clean
107+
$(call cmd,src_tar,$(KERNELPATH))
108+
sed "s@KERNELRELEASE@$(KERNELRELEASE)@; \
109+
s@SRCTREE@$(shell realpath $(KERNELPATH).tar.gz)@" \
110+
$(srctree)/scripts/package/snapcraft.template > \
111+
$(objtree)/snap/snapcraft.yaml
112+
cd $(objtree)/snap && \
113+
snapcraft --target-arch=$(UTS_MACHINE)
114+
115+
clean-dirs += $(objtree)/snap/
96116

97117
# tarball targets
98118
# ---------------------------------------------------------------------------
@@ -137,6 +157,7 @@ help: FORCE
137157
@echo ' binrpm-pkg - Build only the binary kernel RPM package'
138158
@echo ' deb-pkg - Build both source and binary deb kernel packages'
139159
@echo ' bindeb-pkg - Build only the binary kernel deb package'
160+
@echo ' snap-pkg - Build only the binary kernel snap package (will connect to external hosts)'
140161
@echo ' tar-pkg - Build the kernel as an uncompressed tarball'
141162
@echo ' targz-pkg - Build the kernel as a gzip compressed tarball'
142163
@echo ' tarbz2-pkg - Build the kernel as a bzip2 compressed tarball'

scripts/package/builddeb

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,12 @@ else
9292
fi
9393
sourcename=$KDEB_SOURCENAME
9494
tmpdir="$objtree/debian/tmp"
95+
fwdir="$objtree/debian/fwtmp"
9596
kernel_headers_dir="$objtree/debian/hdrtmp"
9697
libc_headers_dir="$objtree/debian/headertmp"
9798
dbg_dir="$objtree/debian/dbgtmp"
9899
packagename=linux-image-$version
100+
fwpackagename=linux-firmware-image-$version
99101
kernel_headers_packagename=linux-headers-$version
100102
libc_headers_packagename=linux-libc-dev
101103
dbg_packagename=$packagename-dbg
@@ -124,9 +126,10 @@ esac
124126
BUILD_DEBUG="$(grep -s '^CONFIG_DEBUG_INFO=y' $KCONFIG_CONFIG || true)"
125127

126128
# Setup the directory structure
127-
rm -rf "$tmpdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" $objtree/debian/files
129+
rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" $objtree/debian/files
128130
mkdir -m 755 -p "$tmpdir/DEBIAN"
129131
mkdir -p "$tmpdir/lib" "$tmpdir/boot"
132+
mkdir -p "$fwdir/lib/firmware/$version/"
130133
mkdir -p "$kernel_headers_dir/lib/modules/$version/"
131134

132135
# Build and install the kernel
@@ -143,9 +146,18 @@ fi
143146
cp "$($MAKE -s image_name)" "$tmpdir/$installed_image_path"
144147

145148
if grep -q "^CONFIG_OF=y" $KCONFIG_CONFIG ; then
149+
mkdir -p "$tmpdir/boot/dtbs/$version"
146150
# Only some architectures with OF support have this target
147151
if grep -q dtbs_install "${srctree}/arch/$SRCARCH/Makefile"; then
148-
$MAKE KBUILD_SRC= INSTALL_DTBS_PATH="$tmpdir/usr/lib/$packagename" dtbs_install
152+
$MAKE KBUILD_SRC= INSTALL_DTBS_PATH="$tmpdir/boot/dtbs/$version" dtbs_install
153+
else
154+
$MAKE KBUILD_SRC= dtbs
155+
find arch/arm/boot/ -iname "*.dtb" -exec cp -v '{}' "$tmpdir/boot/dtbs/$version" \;
156+
fi
157+
158+
#make dtbs_install seems to add an .old directory
159+
if [ -d "$tmpdir/boot/dtbs/$version.old" ] ; then
160+
rm -rf "$tmpdir/boot/dtbs/$version.old"
149161
fi
150162
fi
151163

@@ -303,7 +315,9 @@ else
303315
cat <<EOF >> debian/control
304316
305317
Package: $packagename
318+
Suggests: $fwpackagename
306319
Architecture: any
320+
Depends: initramfs-tools
307321
Description: Linux kernel, version $version
308322
This package contains the Linux kernel, modules and corresponding other
309323
files, version: $version.
@@ -341,6 +355,22 @@ Description: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch}
341355
This is useful for people who need to build external modules
342356
EOF
343357

358+
# Do we have firmware? Move it out of the way and build it into a package.
359+
if [ -e "$tmpdir/lib/firmware" ]; then
360+
mv "$tmpdir/lib/firmware"/* "$fwdir/lib/firmware/$version/"
361+
rmdir "$tmpdir/lib/firmware"
362+
363+
cat <<EOF >> debian/control
364+
365+
Package: $fwpackagename
366+
Architecture: all
367+
Description: Linux kernel firmware, version $version
368+
This package contains firmware from the Linux kernel, version $version.
369+
EOF
370+
371+
create_package "$fwpackagename" "$fwdir"
372+
fi
373+
344374
cat <<EOF >> debian/control
345375
346376
Package: $libc_headers_packagename
@@ -408,9 +438,9 @@ EOF
408438
dpkg-source -cdebian/control -ldebian/changelog --format="3.0 (custom)" --target-format="3.0 (quilt)" \
409439
-b / ../${sourcename}_${version}.orig.tar.gz ../${sourcename}_${packageversion}.debian.tar.gz
410440
mv ${sourcename}_${packageversion}*dsc ..
411-
dpkg-genchanges > ../${sourcename}_${packageversion}_${debarch}.changes
441+
dpkg-genchanges -Vkernel:debarch="${debarch}" > ../${sourcename}_${packageversion}_${debarch}.changes
412442
else
413-
dpkg-genchanges -b > ../${sourcename}_${packageversion}_${debarch}.changes
443+
dpkg-genchanges -b -Vkernel:debarch="${debarch}" > ../${sourcename}_${packageversion}_${debarch}.changes
414444
fi
415445

416446
exit 0

0 commit comments

Comments
 (0)