[pve-devel] [PATCH kernel] add pve-kernel-X.Y-libc-dev package

Fabian Grünbichler f.gruenbichler at proxmox.com
Thu May 28 13:31:15 CEST 2020


On May 27, 2020 7:03 pm, Thomas Lamprecht wrote:
> This was long overdue, allows to access the full feature set of our
> kernel for some tools using the Linux API directly.
> 
> Packaging mostly taken from Debian[0]
> 
> [0]: https://salsa.debian.org/kernel-team/linux/-/blob/debian/4.19.118-2/debian/rules.real#L367
> 
> Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
> ---
> 
> Package name could be probably better, just took the first thing coming to my
> mind. Also, the approach of butting Kernel MAJ.MIN version in there or using
> the kernel package version, or none at all, should be evaluated.
> 
> I'd guess none could be preferred as it should be backwards compatible anyway
> (never break userspace™) so the newest one is always wanted.

IMHO we should not encode the version in the package name, since we 
always only want one version of the package installed and different 
-libc packages for different kernel versions are not co-installable 
anyway. The only caveat is that we need to be careful when building new 
opt-in kernels and NOT upload the -libc package until we switch over the 
default kernel series, but even if we do, it should not break anything.

Besides that, but without a full rebuild-test:

Reviewed-By: Fabian Grünbichler <f.gruenbichler at proxmox.com>

> 
> note: This was working really quick, almost suspicious... Tested by building
> QEMU (which inspired my doing this now in the first place due to the sizeof bug
> we have with Debian's plin linux-libc-dev package on build)
> 
>  debian/control.in | 12 ++++++++++++
>  debian/rules      | 22 ++++++++++++++++++++--
>  2 files changed, 32 insertions(+), 2 deletions(-)
> 
> diff --git a/debian/control.in b/debian/control.in
> index 9b807c1d40c5..c457564eafe9 100644
> --- a/debian/control.in
> +++ b/debian/control.in
> @@ -69,3 +69,15 @@ Depends: busybox,
>  Recommends: grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub-efi-arm64,
>  Description: The Proxmox PVE Kernel Image
>   This package contains the linux kernel and initial ramdisk used for booting
> +
> +Package: pve-kernel- at KVMAJMIN@-libc-dev
> +Section: devel
> +Priority: optional
> +Architecture: any
> +Provides: linux-libc-dev,
> +Conflicts: linux-libc-dev,
> +Replaces: linux-libc-dev,
> +Depends: ${misc:Depends}
> +Description: Linux support headers for userspace development
> + This package provides userspaces headers from the Linux kernel.  These headers
> + are used by the installed headers for GNU libc and other system libraries.
> diff --git a/debian/rules b/debian/rules
> index e530eb548707..dc839b127507 100755
> --- a/debian/rules
> +++ b/debian/rules
> @@ -15,6 +15,7 @@ CHANGELOG_DATE:=$(shell dpkg-parsechangelog -SDate)
>  
>  PVE_KERNEL_PKG=pve-kernel-${KVNAME}
>  PVE_HEADER_PKG=pve-headers-${KVNAME}
> +PVE_USR_HEADER_PKG=pve-kernel-${KERNEL_MAJMIN}-libc-dev
>  LINUX_TOOLS_PKG=linux-tools-${KERNEL_MAJMIN}
>  KERNEL_SRC_COPY=${KERNEL_SRC}_tmp
>  
> @@ -87,7 +88,7 @@ debian/control: $(wildcard debian/*.in)
>  
>  build: .compile_mark .tools_compile_mark .modules_compile_mark
>  
> -install: .install_mark .tools_install_mark .headers_install_mark
> +install: .install_mark .tools_install_mark .headers_install_mark .usr_headers_install_mark
>  	dh_installdocs -A debian/copyright debian/SOURCE
>  	dh_installchangelogs
>  	dh_installman
> @@ -97,7 +98,7 @@ install: .install_mark .tools_install_mark .headers_install_mark
>  
>  binary: install
>  	debian/rules fwcheck abicheck
> -	dh_strip -N${PVE_HEADER_PKG}
> +	dh_strip -N${PVE_HEADER_PKG} -N${PVE_USR_HEADER_PKG}
>  	dh_makeshlibs
>  	dh_shlibdeps
>  	dh_installdeb
> @@ -207,6 +208,23 @@ binary: install
>  	ln -sf /usr/src/linux-headers-${KVNAME} debian/${PVE_HEADER_PKG}/lib/modules/${KVNAME}/build
>  	touch $@
>  
> +.usr_headers_install_mark: PKG_DIR = debian/${PVE_USR_HEADER_PKG}
> +.usr_headers_install_mark: OUT_DIR = ${PKG_DIR}/usr
> +.usr_headers_install_mark: .config_mark
> +	rm -rf '${PKG_DIR}'
> +	mkdir -p  '${PKG_DIR}'
> +	$(MAKE) -C ${KERNEL_SRC} headers_check ARCH=$(KERNEL_HEADER_ARCH)
> +	$(MAKE) -C ${KERNEL_SRC} headers_install ARCH=$(KERNEL_HEADER_ARCH) INSTALL_HDR_PATH='$(CURDIR)'/$(OUT_DIR)
> +	rm -rf $(OUT_DIR)/include/drm $(OUT_DIR)/include/scsi
> +	find $(OUT_DIR)/include \( -name .install -o -name ..install.cmd \) -execdir rm {} +
> +
> +# Move include/asm to arch-specific directory
> +	mkdir -p $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH)
> +	mv $(OUT_DIR)/include/asm $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH)/
> +	test ! -d $(OUT_DIR)/include/arch || \
> +		mv $(OUT_DIR)/include/arch $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH)/
> +	touch $@
> +
>  .modules_compile_mark: ${MODULES}/zfs.ko
>  	touch $@
>  
> -- 
> 2.20.1
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel at pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 




More information about the pve-devel mailing list