Re: [PATCH v2] builddeb: generate multi-arch friendly linux-libc-dev package

From: Cedric Hombourger
Date: Thu Jul 04 2019 - 16:28:48 EST


Greetings,

On 7/4/2019 9:49 PM, Ben Hutchings wrote:
On Thu, 2019-07-04 at 21:42 +0200, Cedric Hombourger wrote:
Debian-based distributions place libc header files in a machine
specific directory (/usr/include/<libc-machine>) instead of
/usr/include/asm to support installation of the linux-libc-dev
package from multiple architectures. Move headers installed by
"make headers_install" accordingly using Debian's tuple from
dpkg-architecture.

Signed-off-by: Cedric Hombourger <Cedric_Hombourger@xxxxxxxxxx>
Reviewed-by: Henning Schild <henning.schild@xxxxxxxxxxx>
Reviewed-by: Ben Hutchings <ben@xxxxxxxxxxxxxxx>
I haven't reviewed this version of the patch.

Sorry about that. it was just an awkward way to note your contribution to this changeset (for the avoidance of doubt, your feedback is greatly appreciated). I'll remove this line for v3

And this doesn't make a multi-arch package; you will have to add a
field to the package's control file too.

Will do. Thanks!

Cedric

Ben.

---
scripts/package/builddeb | 8 ++++++++
scripts/package/mkdebian | 4 ++--
2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/scripts/package/builddeb b/scripts/package/builddeb
index b03dd56a4782..15a034e18c37 100755
--- a/scripts/package/builddeb
+++ b/scripts/package/builddeb
@@ -132,6 +132,14 @@ fi
if [ "$ARCH" != "um" ]; then
$MAKE -f $srctree/Makefile headers_check
$MAKE -f $srctree/Makefile headers_install INSTALL_HDR_PATH="$libc_headers_dir/usr"
+ if [ -n "$debarch" ]; then
+ # move asm headers to /usr/include/<libc-machine>/asm to match the structure
+ # used by Debian-based distros (to support multi-arch) but only if ARCH was
+ # translated to Debian's (debarch) - this is done by mkdebian
+ host_arch=$(dpkg-architecture -a$debarch -qDEB_HOST_MULTIARCH)
+ mkdir $libc_headers_dir/usr/include/$host_arch
+ mv $libc_headers_dir/usr/include/asm $libc_headers_dir/usr/include/$host_arch/
+ fi
fi
# Install the maintainer scripts
diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian
index 8351584cb24e..8ebcb7d67fd2 100755
--- a/scripts/package/mkdebian
+++ b/scripts/package/mkdebian
@@ -212,11 +212,11 @@ cat <<EOF > debian/rules
srctree ?= .
build:
- \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \
+ \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} debarch=${debarch} \
KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile
binary-arch:
- \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \
+ \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} debarch=${debarch} \
KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile intdeb-pkg
clean: