Skip to content

Commit

Permalink
packaging: sync builddeb changes
Browse files Browse the repository at this point in the history
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
  • Loading branch information
RobertCNelson committed Sep 21, 2018
1 parent 978a5a0 commit 42ce830
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 9 deletions.
31 changes: 26 additions & 5 deletions scripts/package/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,14 @@ MKSPEC := $(srctree)/scripts/package/mkspec

quiet_cmd_src_tar = TAR $(2).tar.gz
cmd_src_tar = \
set -e; \
if test "$(objtree)" != "$(srctree)"; then \
echo "Building source tarball is not possible outside the"; \
echo "kernel source tree. Don't set KBUILD_OUTPUT, or use the"; \
echo "binrpm-pkg or bindeb-pkg target instead."; \
echo >&2; \
echo >&2 " ERROR:"; \
echo >&2 " Building source tarball is not possible outside the"; \
echo >&2 " kernel source tree. Don't set KBUILD_OUTPUT, or use the"; \
echo >&2 " binrpm-pkg or bindeb-pkg target instead."; \
echo >&2; \
false; \
fi ; \
$(srctree)/scripts/setlocalversion --save-scmversion; \
Expand All @@ -45,11 +49,12 @@ rm -f $(objtree)/.scmversion

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

# binrpm-pkg
# ---------------------------------------------------------------------------
Expand Down Expand Up @@ -93,6 +98,21 @@ bindeb-pkg: FORCE

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

# snap-pkg
# ---------------------------------------------------------------------------
snap-pkg: FORCE
rm -rf $(objtree)/snap
mkdir $(objtree)/snap
$(MAKE) clean
$(call cmd,src_tar,$(KERNELPATH))
sed "s@KERNELRELEASE@$(KERNELRELEASE)@; \
s@SRCTREE@$(shell realpath $(KERNELPATH).tar.gz)@" \
$(srctree)/scripts/package/snapcraft.template > \
$(objtree)/snap/snapcraft.yaml
cd $(objtree)/snap && \
snapcraft --target-arch=$(UTS_MACHINE)

clean-dirs += $(objtree)/snap/

# tarball targets
# ---------------------------------------------------------------------------
Expand Down Expand Up @@ -137,6 +157,7 @@ help: FORCE
@echo ' binrpm-pkg - Build only the binary kernel RPM package'
@echo ' deb-pkg - Build both source and binary deb kernel packages'
@echo ' bindeb-pkg - Build only the binary kernel deb package'
@echo ' snap-pkg - Build only the binary kernel snap package (will connect to external hosts)'
@echo ' tar-pkg - Build the kernel as an uncompressed tarball'
@echo ' targz-pkg - Build the kernel as a gzip compressed tarball'
@echo ' tarbz2-pkg - Build the kernel as a bzip2 compressed tarball'
Expand Down
38 changes: 34 additions & 4 deletions scripts/package/builddeb
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,12 @@ else
fi
sourcename=$KDEB_SOURCENAME
tmpdir="$objtree/debian/tmp"
fwdir="$objtree/debian/fwtmp"
kernel_headers_dir="$objtree/debian/hdrtmp"
libc_headers_dir="$objtree/debian/headertmp"
dbg_dir="$objtree/debian/dbgtmp"
packagename=linux-image-$version
fwpackagename=linux-firmware-image-$version
kernel_headers_packagename=linux-headers-$version
libc_headers_packagename=linux-libc-dev
dbg_packagename=$packagename-dbg
Expand Down Expand Up @@ -124,9 +126,10 @@ 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" $objtree/debian/files
mkdir -m 755 -p "$tmpdir/DEBIAN"
mkdir -p "$tmpdir/lib" "$tmpdir/boot"
mkdir -p "$fwdir/lib/firmware/$version/"
mkdir -p "$kernel_headers_dir/lib/modules/$version/"

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

if grep -q "^CONFIG_OF=y" $KCONFIG_CONFIG ; then
mkdir -p "$tmpdir/boot/dtbs/$version"
# 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="$tmpdir/boot/dtbs/$version" dtbs_install
else
$MAKE KBUILD_SRC= dtbs
find arch/arm/boot/ -iname "*.dtb" -exec cp -v '{}' "$tmpdir/boot/dtbs/$version" \;
fi

#make dtbs_install seems to add an .old directory
if [ -d "$tmpdir/boot/dtbs/$version.old" ] ; then
rm -rf "$tmpdir/boot/dtbs/$version.old"
fi
fi

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

# Do we have firmware? Move it out of the way and build it into a package.
if [ -e "$tmpdir/lib/firmware" ]; then
mv "$tmpdir/lib/firmware"/* "$fwdir/lib/firmware/$version/"
rmdir "$tmpdir/lib/firmware"

cat <<EOF >> debian/control
Package: $fwpackagename
Architecture: all
Description: Linux kernel firmware, version $version
This package contains firmware from the Linux kernel, version $version.
EOF

create_package "$fwpackagename" "$fwdir"
fi

cat <<EOF >> debian/control
Package: $libc_headers_packagename
Expand Down Expand Up @@ -408,9 +438,9 @@ EOF
dpkg-source -cdebian/control -ldebian/changelog --format="3.0 (custom)" --target-format="3.0 (quilt)" \
-b / ../${sourcename}_${version}.orig.tar.gz ../${sourcename}_${packageversion}.debian.tar.gz
mv ${sourcename}_${packageversion}*dsc ..
dpkg-genchanges > ../${sourcename}_${packageversion}_${debarch}.changes
dpkg-genchanges -Vkernel:debarch="${debarch}" > ../${sourcename}_${packageversion}_${debarch}.changes
else
dpkg-genchanges -b > ../${sourcename}_${packageversion}_${debarch}.changes
dpkg-genchanges -b -Vkernel:debarch="${debarch}" > ../${sourcename}_${packageversion}_${debarch}.changes
fi

exit 0

0 comments on commit 42ce830

Please sign in to comment.