[v2] builddeb: generate multi-arch friendly linux-libc-dev package
diff mbox series

Message ID 1562269332-132-1-git-send-email-Cedric_Hombourger@mentor.com
State New
Headers show
Series
  • [v2] builddeb: generate multi-arch friendly linux-libc-dev package
Related show

Commit Message

Cedric Hombourger July 4, 2019, 7:42 p.m. UTC
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@mentor.com>
Reviewed-by: Henning Schild <henning.schild@siemens.com>
Reviewed-by: Ben Hutchings <ben@decadent.org.uk>
---
 scripts/package/builddeb | 8 ++++++++
 scripts/package/mkdebian | 4 ++--
 2 files changed, 10 insertions(+), 2 deletions(-)

Comments

Ben Hutchings July 4, 2019, 7:49 p.m. UTC | #1
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@mentor.com>
> Reviewed-by: Henning Schild <henning.schild@siemens.com>
> Reviewed-by: Ben Hutchings <ben@decadent.org.uk>

I haven't reviewed this version of the patch.

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

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:
Cedric Hombourger July 4, 2019, 8:28 p.m. UTC | #2
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@mentor.com>
>> Reviewed-by: Henning Schild <henning.schild@siemens.com>
>> Reviewed-by: Ben Hutchings <ben@decadent.org.uk>
> 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:

Patch
diff mbox series

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: