[Unstable][PATCH 04/10] UBUNTU: [Packaging] rules: Introduce global build_dir variable
Juerg Haefliger
juerg.haefliger at canonical.com
Tue Dec 17 09:25:21 UTC 2024
It's defined in one place and used twice. Make it a 'global' and use it
in countless places instead of '$(builddir)/build-$*'.
Signed-off-by: Juerg Haefliger <juerg.haefliger at canonical.com>
---
debian/rules.d/2-binary-arch.mk | 94 ++++++++++++++++-----------------
1 file changed, 47 insertions(+), 47 deletions(-)
diff --git a/debian/rules.d/2-binary-arch.mk b/debian/rules.d/2-binary-arch.mk
index 5cd64a8b1d29..030c5b45ee79 100644
--- a/debian/rules.d/2-binary-arch.mk
+++ b/debian/rules.d/2-binary-arch.mk
@@ -3,6 +3,7 @@
# Per-flavor variables (evaluated at runtime)
abi_dir = $(builddir)/abi-$*
+build_dir = $(builddir)/build-$*
# TODO this is probably wrong, and should be using $(DEB_HOST_MULTIARCH)
shlibdeps_opts = $(if $(CROSS_COMPILE),-- -l$(CROSS_COMPILE:%-=/usr/%)/lib)
@@ -13,16 +14,16 @@ debian/scripts/fix-filenames: debian/scripts/fix-filenames.c
$(stampdir)/stamp-prepare-%: target_flavour = $*
$(stampdir)/stamp-prepare-%: debian/scripts/fix-filenames
@echo Debug: $@
- install -d $(builddir)/build-$*
- touch $(builddir)/build-$*/ubuntu-build
- python3 debian/scripts/misc/annotations --export --arch $(arch) --flavour $(target_flavour) > $(builddir)/build-$*/.config
- sed -i 's/.*CONFIG_VERSION_SIGNATURE.*/CONFIG_VERSION_SIGNATURE="Ubuntu $(DEB_VERSION_UPSTREAM)-$(DEB_REVISION)-$* $(raw_kernelversion)"/' $(builddir)/build-$*/.config
- find $(builddir)/build-$* -name "*.ko" | xargs rm -f
- $(kmake) O=$(builddir)/build-$* $(conc_level) rustavailable || true
- $(kmake) O=$(builddir)/build-$* $(conc_level) olddefconfig
+ install -d $(build_dir)
+ touch $(build_dir)/ubuntu-build
+ python3 debian/scripts/misc/annotations --export --arch $(arch) --flavour $(target_flavour) > $(build_dir)/.config
+ sed -i 's/.*CONFIG_VERSION_SIGNATURE.*/CONFIG_VERSION_SIGNATURE="Ubuntu $(DEB_VERSION_UPSTREAM)-$(DEB_REVISION)-$* $(raw_kernelversion)"/' $(build_dir)/.config
+ find $(build_dir) -name "*.ko" | xargs rm -f
+ $(kmake) O=$(build_dir) $(conc_level) rustavailable || true
+ $(kmake) O=$(build_dir) $(conc_level) olddefconfig
ifneq ($(do_skip_checks),true)
python3 debian/scripts/misc/annotations -f $(CURDIR)/$(DEBIAN)/config/annotations \
- --arch $(arch) --flavour $* --check $(builddir)/build-$*/.config
+ --arch $(arch) --flavour $* --check $(build_dir)/.config
endif
$(stamp)
@@ -38,29 +39,29 @@ $(stampdir)/stamp-build-%: target_flavour = $*
$(stampdir)/stamp-build-%: bldimg = $(call custom_override,build_image,$*)
$(stampdir)/stamp-build-%: $(stampdir)/stamp-build-perarch $(stampdir)/stamp-prepare-%
@echo Debug: $@ build_image $(build_image) bldimg $(bldimg)
- $(kmake) O=$(builddir)/build-$* $(conc_level) $(bldimg) modules $(if $(filter true,$(do_dtbs)),dtbs)
+ $(kmake) O=$(build_dir) $(conc_level) $(bldimg) modules $(if $(filter true,$(do_dtbs)),dtbs)
ifeq ($(do_dbgsym_package),true)
# The target scripts_gdb is part of "all", so we need to call it manually
- if grep -q CONFIG_GDB_SCRIPTS=y $(builddir)/build-$*/.config; then \
- $(kmake) O=$(builddir)/build-$* $(conc_level) scripts_gdb ; \
+ if grep -q CONFIG_GDB_SCRIPTS=y $(build_dir)/.config; then \
+ $(kmake) O=$(build_dir) $(conc_level) scripts_gdb ; \
fi
endif
ifeq ($(do_tools_bpftool),true)
ifeq ($(do_tools_bpftool_stub),true)
- echo '#error "Kernel does not support CONFIG_DEBUG_INFO_BTF"' > $(builddir)/build-$*/vmlinux.h
+ echo '#error "Kernel does not support CONFIG_DEBUG_INFO_BTF"' > $(build_dir)/vmlinux.h
else
- $(builddirpa)/tools/bpf/bpftool/bpftool btf dump file $(builddir)/build-$*/vmlinux format c > $(builddir)/build-$*/vmlinux.h
+ $(builddirpa)/tools/bpf/bpftool/bpftool btf dump file $(build_dir)/vmlinux format c > $(build_dir)/vmlinux.h
endif
endif
# Collect the list of kernel source files used for this build. Need to do this early
# before modules are stripped. Fail if the resulting file is empty.
- find $(builddir)/build-$* \( -name vmlinux -o -name \*.ko \) -exec dwarfdump -i {} \; | \
+ find $(build_dir) \( -name vmlinux -o -name \*.ko \) -exec dwarfdump -i {} \; | \
grep -E 'DW_AT_(call|decl)_file' | sed -n 's|.*\s/|/|p' | sort -u > \
- $(builddir)/build-$*/sources.list
- test -s $(builddir)/build-$*/sources.list
+ $(build_dir)/sources.list
+ test -s $(build_dir)/sources.list
$(stamp)
@@ -73,7 +74,7 @@ define build_dkms_sign =
)
endef
define build_dkms =
- rc=0; unset MAKEFLAGS; ARCH=$(build_arch) CROSS_COMPILE=$(CROSS_COMPILE) $(SHELL) debian/scripts/dkms-build $(dkms_dir) $(abi_release)-$* '$(call build_dkms_sign,$(builddir)/build-$*)' $(1) $(2) $(3) $(4) $(5) || rc=$$?; if [ "$$rc" = "9" -o "$$rc" = "77" ]; then echo do_$(4)_$*=false >> $(builddir)/skipped-dkms.mk; rc=0; fi; if [ "$$rc" != "0" ]; then exit $$rc; fi
+ rc=0; unset MAKEFLAGS; ARCH=$(build_arch) CROSS_COMPILE=$(CROSS_COMPILE) $(SHELL) debian/scripts/dkms-build $(dkms_dir) $(abi_release)-$* '$(call build_dkms_sign,$(build_dir))' $(1) $(2) $(3) $(4) $(5) || rc=$$?; if [ "$$rc" = "9" -o "$$rc" = "77" ]; then echo do_$(4)_$*=false >> $(builddir)/skipped-dkms.mk; rc=0; fi; if [ "$$rc" != "0" ]; then exit $$rc; fi
endef
define install_control =
@@ -119,10 +120,9 @@ $(stampdir)/stamp-install-%: hdrdir = $(CURDIR)/debian/$(basepkg)-$*/usr/src/$(b
$(stampdir)/stamp-install-%: rustdir = $(CURDIR)/debian/$(baserustpkg)-$*/usr/src/$(baserustpkg)-$*
$(stampdir)/stamp-install-%: target_flavour = $*
$(stampdir)/stamp-install-%: MODHASHALGO=sha512
-$(stampdir)/stamp-install-%: MODSECKEY=$(builddir)/build-$*/certs/signing_key.pem
-$(stampdir)/stamp-install-%: MODPUBKEY=$(builddir)/build-$*/certs/signing_key.x509
-$(stampdir)/stamp-install-%: build_dir=$(builddir)/build-$*
-$(stampdir)/stamp-install-%: dkms_dir=$(call dkms_dir_prefix,$(builddir)/build-$*)
+$(stampdir)/stamp-install-%: MODSECKEY=$(build_dir)/certs/signing_key.pem
+$(stampdir)/stamp-install-%: MODPUBKEY=$(build_dir)/certs/signing_key.x509
+$(stampdir)/stamp-install-%: dkms_dir=$(call dkms_dir_prefix,$(build_dir))
$(foreach _m,$(all_dkms_modules), \
$(eval $$(stampdir)/stamp-install-%: enable_$(_m) = $$(filter true,$$(call custom_override,do_$(_m),$$*))) \
$(eval $$(stampdir)/stamp-install-%: dkms_$(_m)_pkgdir = $$(CURDIR)/debian/$(dkms_$(_m)_pkg_name)-$$*) \
@@ -158,32 +158,32 @@ endif
# compress_file logic required because not all architectures
# generate a zImage automatically out of the box
ifeq ($(compress_file),)
- install -m600 -D $(builddir)/build-$*/$(kernfile) \
+ install -m600 -D $(build_dir)/$(kernfile) \
$(pkgdir_bin)/boot/$(instfile)-$(abi_release)-$*
else
install -d $(pkgdir_bin)/boot
- gzip -c9v $(builddir)/build-$*/$(kernfile) > \
+ gzip -c9v $(build_dir)/$(kernfile) > \
$(pkgdir_bin)/boot/$(instfile)-$(abi_release)-$*
chmod 600 $(pkgdir_bin)/boot/$(instfile)-$(abi_release)-$*
endif
install -d $(pkgdir)/boot
- install -m644 $(builddir)/build-$*/.config \
+ install -m644 $(build_dir)/.config \
$(pkgdir)/boot/config-$(abi_release)-$*
- install -m600 $(builddir)/build-$*/System.map \
+ install -m600 $(build_dir)/System.map \
$(pkgdir)/boot/System.map-$(abi_release)-$*
ifeq ($(do_dtbs),true)
- $(kmake) O=$(builddir)/build-$* $(conc_level) dtbs_install \
+ $(kmake) O=$(build_dir) $(conc_level) dtbs_install \
INSTALL_DTBS_PATH=$(pkgdir)/lib/firmware/$(abi_release)-$*/device-tree
endif
ifeq ($(no_dumpfile),)
makedumpfile -g $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* \
- -x $(builddir)/build-$*/vmlinux
+ -x $(build_dir)/vmlinux
chmod 0600 $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$*
endif
- $(kmake) O=$(builddir)/build-$* $(conc_level) modules_install $(vdso) \
+ $(kmake) O=$(build_dir) $(conc_level) modules_install $(vdso) \
INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=$(pkgdir)
#
@@ -235,7 +235,7 @@ endif
ifeq ($(no_dumpfile),)
makedumpfile -g $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* \
- -x $(builddir)/build-$*/vmlinux
+ -x $(build_dir)/vmlinux
chmod 0600 $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$*
endif
rm -f $(pkgdir)/lib/modules/$(abi_release)-$*/build
@@ -269,13 +269,13 @@ endif
ifeq ($(do_dbgsym_package),true)
# Debug image is simple
- install -m644 -D $(builddir)/build-$*/vmlinux \
+ install -m644 -D $(build_dir)/vmlinux \
$(dbgpkgdir)/usr/lib/debug/boot/vmlinux-$(abi_release)-$*
- if [ -d $(builddir)/build-$*/scripts/gdb/linux ]; then \
- install -m644 -D $(builddir)/build-$*/vmlinux-gdb.py \
+ if [ -d $(build_dir)/scripts/gdb/linux ]; then \
+ install -m644 -D $(build_dir)/vmlinux-gdb.py \
$(dbgpkgdir)/usr/share/gdb/auto-load/boot/vmlinux-$(abi_release)-$*/vmlinuz-$(abi_release)-$*-gdb.py; \
fi
- $(kmake) O=$(builddir)/build-$* modules_install $(vdso) \
+ $(kmake) O=$(build_dir) modules_install $(vdso) \
INSTALL_MOD_PATH=$(dbgpkgdir)/usr/lib/debug
# Add .gnu_debuglink sections only after all/DKMS modules are built.
rm -f $(dbgpkgdir)/usr/lib/debug/lib/modules/$(abi_release)-$*/build
@@ -287,7 +287,7 @@ endif
# The flavour specific headers image
# TODO: Would be nice if we didn't have to dupe the original builddir
install -d -m755 $(hdrdir)
- cp $(builddir)/build-$*/.config $(hdrdir)
+ cp $(build_dir)/.config $(hdrdir)
chmod 644 $(hdrdir)/.config
$(kmake) O=$(hdrdir) -j1 syncconfig prepare scripts
# Makefile may need per-arch-flavour CC settings, which are
@@ -301,23 +301,23 @@ endif
grep '^CC .*$(gcc)$$' $(hdrdir)/Makefile
rm -rf $(hdrdir)/include2 $(hdrdir)/source
# Copy over the compilation version.
- cp "$(builddir)/build-$*/include/generated/compile.h" \
+ cp "$(build_dir)/include/generated/compile.h" \
"$(hdrdir)/include/generated/compile.h"
# Add UTS_UBUNTU_RELEASE_ABI since UTS_RELEASE is difficult to parse.
echo "#define UTS_UBUNTU_RELEASE_ABI $(abinum)" >> $(hdrdir)/include/generated/utsrelease.h
# powerpc kernel arch seems to need some .o files for external module linking. Add them in.
ifeq ($(build_arch),powerpc)
mkdir -p $(hdrdir)/arch/powerpc/lib
- cp $(builddir)/build-$*/arch/powerpc/lib/*.o $(hdrdir)/arch/powerpc/lib
+ cp $(build_dir)/arch/powerpc/lib/*.o $(hdrdir)/arch/powerpc/lib
endif
ifeq ($(build_arch),s390)
- if [ -n "$$(find $(builddir)/build-$*/arch/s390/lib/expoline -maxdepth 1 -name '*.o' -print -quit)" ]; then \
+ if [ -n "$$(find $(build_dir)/arch/s390/lib/expoline -maxdepth 1 -name '*.o' -print -quit)" ]; then \
mkdir -p $(hdrdir)/arch/s390/lib/expoline/; \
- cp $(builddir)/build-$*/arch/s390/lib/expoline/*.o $(hdrdir)/arch/s390/lib/expoline/; \
+ cp $(build_dir)/arch/s390/lib/expoline/*.o $(hdrdir)/arch/s390/lib/expoline/; \
fi
endif
# Copy over scripts/module.lds for building external modules
- cp $(builddir)/build-$*/scripts/module.lds $(hdrdir)/scripts
+ cp $(build_dir)/scripts/module.lds $(hdrdir)/scripts
# Script to symlink everything up
$(SHELL) debian/scripts/link-headers "$(hdrdir)" "$(indeppkg)" "$*"
# The build symlink
@@ -325,7 +325,7 @@ endif
$(LN) /usr/src/$(basepkg)-$* \
debian/$(basepkg)-$*/lib/modules/$(abi_release)-$*/build
# And finally the symvers
- install -m644 $(builddir)/build-$*/Module.symvers \
+ install -m644 $(build_dir)/Module.symvers \
$(hdrdir)/Module.symvers
# Now the header scripts
@@ -373,7 +373,7 @@ ifeq ($(do_tools_bpftool),true)
# linux-bpf-dev is broken: It provides vmlinux.h which is a flavored header file!
if [ $* = $(firstword $(flavours)) ] ; then \
install -d -m755 $(bpfdevpkgdir)/usr/include/$(DEB_HOST_MULTIARCH)/linux/ ; \
- install -m644 $(builddir)/build-$*/vmlinux.h \
+ install -m644 $(build_dir)/vmlinux.h \
$(bpfdevpkgdir)/usr/include/$(DEB_HOST_MULTIARCH)/linux/ ; \
fi
endif
@@ -403,9 +403,9 @@ ifeq ($(do_dbgsym_package),true)
$(CROSS_COMPILE)objcopy \
--add-gnu-debuglink=$(dbgpkgdir)/usr/lib/debug/$$module \
$$path_module; \
- if grep -q CONFIG_MODULE_SIG=y $(builddir)/build-$*/.config && \
+ if grep -q CONFIG_MODULE_SIG=y $(build_dir)/.config && \
[ "$$signature" = $$'~Module signature appended~\n' ]; then \
- $(builddir)/build-$*/scripts/sign-file $(MODHASHALGO) \
+ $(build_dir)/scripts/sign-file $(MODHASHALGO) \
$(MODSECKEY) \
$(MODPUBKEY) \
$$path_module; \
@@ -419,7 +419,7 @@ endif
# Build the final ABI information.
install -d $(abi_dir)
sed -e 's/^\(.\+\)[[:space:]]\+\(.\+\)[[:space:]]\(.\+\)$$/\3 \2 \1/' \
- $(builddir)/build-$*/Module.symvers | sort > $(abi_dir)/$*
+ $(build_dir)/Module.symvers | sort > $(abi_dir)/$*
# Build the final ABI modules information.
find $(pkgdir_bin) $(pkgdir) $(pkgdir_ex) \( -name '*.ko' -o -name '*.ko.*' \) | \
@@ -457,7 +457,7 @@ endif
# Build the buildinfo package content.
install -d $(pkgdir_bldinfo)/usr/lib/linux/$(abi_release)-$*
- install -m644 $(builddir)/build-$*/.config \
+ install -m644 $(build_dir)/.config \
$(pkgdir_bldinfo)/usr/lib/linux/$(abi_release)-$*/config
install -m644 $(abi_dir)/$* \
$(pkgdir_bldinfo)/usr/lib/linux/$(abi_release)-$*/abi
@@ -478,7 +478,7 @@ endif
install -m644 debian/canonical-certs.pem $(pkgdir_bldinfo)/usr/lib/linux/$(abi_release)-$*/canonical-certs.pem
install -m644 debian/canonical-revoked-certs.pem $(pkgdir_bldinfo)/usr/lib/linux/$(abi_release)-$*/canonical-revoked-certs.pem
# List of source files used for this build
- install -m644 $(builddir)/build-$*/sources.list $(pkgdir_bldinfo)/usr/lib/linux/$(abi_release)-$*/sources
+ install -m644 $(build_dir)/sources.list $(pkgdir_bldinfo)/usr/lib/linux/$(abi_release)-$*/sources
# Get rid of .o and .cmd artifacts in headers
find $(hdrdir) -name \*.o -or -name \*.cmd -exec rm -f {} \;
@@ -495,7 +495,7 @@ endif
ifneq ($(do_full_build),false)
# Clean out this flavours build directory.
- rm -rf $(builddir)/build-$*
+ rm -rf $(build_dir)
rm -rf $(abi_dir)
endif
$(stamp)
--
2.43.0
More information about the kernel-team
mailing list