
In ThinPro, we use the convention <upstream_ver>+hp<patchlevel> for the kernel package. This does not have a dash in the name or version. This is built by editing ".version" before a build, and setting EXTRAVERSION="+hp" and KDEB_PKGVERSION make variables: echo 68 > .version make -j<n> EXTRAVERSION="+hp" bindeb-pkg KDEB_PKGVERSION=6.12.2+hp69 .deb name: linux-image-6.12.2+hp_6.12.2+hp69_amd64.deb Since commit7d4f07d5cb
("kbuild: deb-pkg: squash scripts/package/deb-build-option to debian/rules"), this no longer works. The deb build logic changed, even though, the commit message implies that the logic should be unmodified. Before, KBUILD_BUILD_VERSION was not set if the KDEB_PKGVERSION did not contain a dash. After the change KBUILD_BUILD_VERSION is always set to KDEB_PKGVERSION. Since this determines UTS_VERSION, the uname output to look off: (now) uname -a: version 6.12.2+hp ... #6.12.2+hp69 (expected) uname -a: version 6.12.2+hp ... #69 Update the debian/rules logic to restore the original behavior. Fixes:7d4f07d5cb
("kbuild: deb-pkg: squash scripts/package/deb-build-option to debian/rules") Signed-off-by: Alexandru Gagniuc <alexandru.gagniuc@hp.com> Reviewed-by: Nicolas Schier <nicolas@fjasle.eu> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
3.4 KiB
Executable File
#!/usr/bin/make -f
SPDX-License-Identifier: GPL-2.0-only
in case debian/rules is executed directly
export DEB_RULES_REQUIRES_ROOT := no
include debian/rules.vars
ifneq (,$(filter-out parallel=1,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))) NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) MAKEFLAGS += -j$(NUMJOBS) endif
When KBUILD_VERBOSE is undefined (presumably you are directly working with
the debianized tree), show verbose logs unless DEB_BUILD_OPTION=terse is set.
ifeq ($(origin KBUILD_VERBOSE),undefined) ifeq (,$(filter terse,$(DEB_BUILD_OPTIONS))) export KBUILD_VERBOSE := 1 else Q := @ endif endif
revision = $(shell dpkg-parsechangelog -S Version | sed -n 's/.*-//p')
CROSS_COMPILE ?= $(filter-out $(DEB_BUILD_GNU_TYPE)-, $(DEB_HOST_GNU_TYPE)-)
make-opts = ARCH=$(ARCH) KERNELRELEASE=$(KERNELRELEASE)
$(addprefix KBUILD_BUILD_VERSION=,$(revision))
$(addprefix CROSS_COMPILE=,$(CROSS_COMPILE))
binary-targets := $(addprefix binary-, image image-dbg headers libc-dev)
all-packages = $(shell dh_listpackages) image-package = $(filter linux-image-% user-%, $(filter-out %-dbg, $(all-packages))) image-dbg-package = $(filter %-dbg, $(all-packages)) libc-dev-package = $(filter linux-libc-dev, $(all-packages)) headers-package = $(filter linux-headers-%, $(all-packages))
mk-files = $(patsubst binary-%,debian/%.files,$1) package = $($(@:binary-%=%-package))
DH_OPTION is an environment variable common for all debhelper commands.
We could 'export' it, but here it is passed from the command line to clarify
which package is being processed in the build log.
DH_OPTIONS = -p$(package)
Note: future removal of KDEB_COMPRESS
dpkg-deb >= 1.21.10 supports the DPKG_DEB_COMPRESSOR_TYPE environment
variable, which provides the same functionality as KDEB_COMPRESS. The
KDEB_COMPRESS variable will be removed in the future.
define binary $(Q)dh_testdir $(DH_OPTIONS) $(Q)dh_testroot $(DH_OPTIONS) $(Q)dh_prep $(DH_OPTIONS) $(Q)+$(MAKE) $(make-opts) run-command KBUILD_RUN_COMMAND='+$$(srctree)/scripts/package/builddeb $(package)' $(Q)dh_installdocs $(DH_OPTIONS) $(Q)dh_installchangelogs $(DH_OPTIONS) $(Q)dh_compress $(DH_OPTIONS) $(Q)dh_fixperms $(DH_OPTIONS) $(Q)dh_gencontrol $(DH_OPTIONS) -- -f$(call mk-files,$@) $(Q)dh_md5sums $(DH_OPTIONS) $(Q)dh_builddeb $(DH_OPTIONS) -- $(addprefix -Z,$(KDEB_COMPRESS)) endef
.PHONY: $(binary-targets) $(binary-targets): build-arch $(Q)truncate -s0 $(call mk-files,$@) $(if $(package),$(binary))
.PHONY: binary binary-indep binary-arch binary: binary-arch binary-indep binary-indep: build-indep binary-arch: $(binary-targets) $(Q)cat $(call mk-files,$^) > debian/files
.PHONY: build build-indep build-arch build: build-arch build-indep build-indep: build-arch: $(Q)$(MAKE) $(make-opts) olddefconfig $(Q)$(MAKE) $(make-opts) $(if $(filter um,$(ARCH)),,headers) all
.PHONY: clean clean: $(Q)dh_clean $(Q)rm -rf debian/deb-env.vars* debian/*.files $(Q)$(MAKE) ARCH=$(ARCH) clean
If DEB_HOST_ARCH is empty, it is likely that debian/rules was executed
directly. Run 'dpkg-architecture --print-set --print-format=make' to
generate a makefile construct that exports all DEB_* variables.
ifndef DEB_HOST_ARCH include debian/deb-env.vars
debian/deb-env.vars: $(Q)dpkg-architecture -a$$(cat debian/arch) --print-set --print-format=make > $@.tmp $(Q)mv $@.tmp $@ endif