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.lampre...@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.

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-@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@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to