diff --git a/debian/.gitignore b/debian/.gitignore index 7e265767ec..7d5db65971 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -28,6 +28,7 @@ /linux-* /rules.gen /tests/control +!/linux-bpf-dev.* # Ignore compiled Python files __pycache__/ diff --git a/debian/bin/gencontrol.py b/debian/bin/gencontrol.py index 3f22eac995..79c5ebf224 100755 --- a/debian/bin/gencontrol.py +++ b/debian/bin/gencontrol.py @@ -438,6 +438,15 @@ linux-signed-{vars['arch']} (@signedtemplate_sourceversion@) {dist}; urgency={ur self.bundle.add('image-dbg.meta', ruleid, makeflags, vars, arch=arch) ) + if ( + config.defs_flavour.is_default + # XXX + and not self.vars['source_suffix'] + ): + packages_own.extend( + self.bundle.add('image-extra-dev', ruleid, makeflags, vars, arch=arch) + ) + # In a quick build, only build the quick flavour (if any). if not config.defs_flavour.is_quick: for package in packages_own: diff --git a/debian/changelog b/debian/changelog index 2a0b4a8092..83814079df 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,6 +8,7 @@ linux (6.9.7-2~exp1) UNRELEASED; urgency=medium [ Bastian Blank ] * Use debhelper compatibility level 13. + * Add linux-bpf-dev package for BPF header. -- Ben Hutchings Sun, 30 Jun 2024 21:54:51 +0200 diff --git a/debian/linux-bpf-dev.install b/debian/linux-bpf-dev.install new file mode 100644 index 0000000000..7dd3cddabb --- /dev/null +++ b/debian/linux-bpf-dev.install @@ -0,0 +1 @@ +vmlinux.h /usr/include/${DEB_HOST_MULTIARCH}/linux/bpf/ diff --git a/debian/rules.real b/debian/rules.real index 40e7420e76..ed6b33fa2f 100644 --- a/debian/rules.real +++ b/debian/rules.real @@ -162,16 +162,6 @@ $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(STAMPS_DIR)/setup_$(ARCH $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR): +$(MAKE_CLEAN) -C '$(DIR)' - - mkdir -p $(DIR)/tools/bpf/bpftool - +$(MAKE_CLEAN) -C '$(SOURCE_DIR)/tools/bpf/bpftool' O=$(DIR)/tools/bpf/bpftool CROSS_COMPILE= FEATURE_TESTS= FEATURE_DISPLAY= - - if grep -q CONFIG_DEBUG_INFO_BTF=y $(DIR)/.config; then \ - $(DIR)/tools/bpf/bpftool/bpftool btf dump file $(DIR)/vmlinux format c > $(DIR)/vmlinux.h; \ - else \ - echo '#error "Kernel build without CONFIG_DEBUG_INFO_BTF, no type info available"' > $(DIR)/vmlinux.h; \ - fi - debian/bin/buildcheck.py $(DIR) $(ARCH) $(FEATURESET) $(FLAVOUR) @$(stamp) @@ -323,7 +313,7 @@ binary_headers: $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR) $(dh_binary_pre) mkdir -p $(DIR)/arch/$(KERNEL_ARCH)/kernel - cp -a $(SOURCE_DIR)/{.config,.kernel*,Module.symvers,include,vmlinux.h} $(DIR) + cp -a $(SOURCE_DIR)/{.config,.kernel*,Module.symvers,include} $(DIR) cp -a $(SOURCE_DIR)/arch/$(KERNEL_ARCH)/include $(DIR)/arch/$(KERNEL_ARCH) find $(DIR) -name '*.cmd' -delete @@ -371,6 +361,23 @@ binary_libc-dev: $(STAMPS_DIR)/build_libc-dev $(dh_binary_post) +build_bpf-dev: SOURCE_DIR=$(BUILD_DIR)/source_$(FEATURESET) +build_bpf-dev: DIR=$(BUILD_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR) +build_bpf-dev: $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR) + mkdir -p $(DIR)/tools/bpf/bpftool + +$(MAKE_CLEAN) -C '$(SOURCE_DIR)/tools/bpf/bpftool' O=$(DIR)/tools/bpf/bpftool CROSS_COMPILE= FEATURE_TESTS= FEATURE_DISPLAY= + + if grep -q CONFIG_DEBUG_INFO_BTF=y $(DIR)/.config; then \ + $(DIR)/tools/bpf/bpftool/bpftool btf dump file $(DIR)/vmlinux format c > $(DIR)/vmlinux.h; \ + else \ + echo '#error "Kernel build without CONFIG_DEBUG_INFO_BTF, no type info available"' > $(DIR)/vmlinux.h; \ + fi + +binary_bpf-dev: DH_INSTALL_ARGS = --sourcedir=$(BUILD_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR) +binary_bpf-dev: build_bpf-dev + $(dh_binary_pre) + $(dh_binary_post) + build_support: binary_support: PACKAGE_ROOT = /usr/share/$(PACKAGE_NAME) diff --git a/debian/templates/image-extra-dev.control.in b/debian/templates/image-extra-dev.control.in new file mode 100644 index 0000000000..beaca6a66e --- /dev/null +++ b/debian/templates/image-extra-dev.control.in @@ -0,0 +1,8 @@ +Package: linux-bpf-dev +Meta-Rules-Target: bpf-dev +Build-Profiles: +Section: devel +Depends: ${misc:Depends} +Description: Headers for BPF development + The vmlinux.h header is provided to allow userspace to build BPF CO-RE + programs targeting the packaged kernel.