summaryrefslogtreecommitdiffstats
path: root/debian/signing_templates/rules.real
blob: c4d47c990306efd31e499a195ea0912de6df812a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
include /usr/share/dpkg/default.mk

SHELL := bash -e

include debian/rules.defs

export DH_OPTIONS

export DEB_RULES_REQUIRES_ROOT ?= no

GENCONTROL_ARGS := -v@signedtemplate_binaryversion@
BUILDDEB_ARGS := -Zxz $(if $(filter pkg.linux.quick,$(DEB_BUILD_PROFILES)),-z0)

stamp = [ -d $(dir $@) ] || mkdir $(dir $@); touch $@

define dh_binary_pre
	dh_testroot
	dh_prep
	dh_installdirs
endef

define dh_binary_post
	dh_install $(DH_INSTALL_ARGS)
	# Workaround #1068189. By Debian policy and aligned debhelper behaviour /usr/share/doc/package
	# is permitted to be a symbolic link to another directory in /usr/share/doc only if the two
	# packages come from the same source package. The package build will fail with the new debhelper
	# version since debhelper/13.15. As the linux-signed-* packages are quite special in the eco-
	# system, make the workaround to fallback to the old behaviour until it is agreed on how to
	# resolve the situation policy conformant.
	# https://www.debian.org/doc/debian-policy/ch-docs.html#copyright-information
	$(if $(INSTALLDOCS_LINK_DOC),
		mkdir -p debian/$(PACKAGE_NAME)/usr/share/doc && ln -sf $(INSTALLDOCS_LINK_DOC) debian/$(PACKAGE_NAME)/usr/share/doc/$(PACKAGE_NAME),
		dh_installdocs)
	dh_installchangelogs
	dh_installexamples
	dh_installman
	dh_installudev
	dh_bugfiles
	dh_ucf
	dh_lintian
	dh_icons
	dh_link
	dh_compress
	dh_fixperms
	dh_missing
	dh_strip $(DH_STRIP_ARGS) -Xvmlinux -Xvmlinuz
	dh_makeshlibs -Xvmlinux -Xvmlinuz
	dh_shlibdeps $(DH_SHLIBDEPS_ARGS)
	dh_installdeb
	if command -v dh_movetousr >/dev/null; then dh_movetousr; fi
	dh_gencontrol -- $(GENCONTROL_ARGS)
	dh_md5sums
	dh_builddeb -- $(BUILDDEB_ARGS)
endef

build-indep:

$(STAMPS_DIR)/install_$(ARCH)_$(FEATURESET)_$(FLAVOUR): REAL_VERSION = $(ABINAME)$(LOCALVERSION)
$(STAMPS_DIR)/install_$(ARCH)_$(FEATURESET)_$(FLAVOUR): IMAGE_PACKAGE_NAME = linux-image-$(REAL_VERSION)-unsigned
$(STAMPS_DIR)/install_$(ARCH)_$(FEATURESET)_$(FLAVOUR): SIGNATURE_DIR = debian/signatures/$(IMAGE_PACKAGE_NAME)
$(STAMPS_DIR)/install_$(ARCH)_$(FEATURESET)_$(FLAVOUR): INSTALL_DIR=$(BUILD_DIR)/install_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
$(STAMPS_DIR)/install_$(ARCH)_$(FEATURESET)_$(FLAVOUR):
	mkdir -p $(INSTALL_DIR)/boot
	rsync -a $(patsubst %,/boot/%-$(REAL_VERSION),config System.map $(IMAGE_INSTALL_STEM)) \
		$(INSTALL_DIR)/boot/
	sbattach --attach $(SIGNATURE_DIR)/boot/vmlinuz-$(REAL_VERSION).sig \
		$(INSTALL_DIR)/boot/vmlinuz-$(REAL_VERSION)
	mkdir -p $(INSTALL_DIR)/lib/modules/$(REAL_VERSION)
	rsync -a $(addprefix /lib/modules/$(REAL_VERSION)/,kernel modules.builtin modules.builtin.modinfo modules.order) \
		$(INSTALL_DIR)/lib/modules/$(REAL_VERSION)/
# Copy any device tree files
	if [ -d /usr/lib/linux-image-$(REAL_VERSION) ]; then \
		mkdir -p $(INSTALL_DIR)/usr/lib/linux-image-$(REAL_VERSION); \
		rsync -a /usr/lib/linux-image-$(REAL_VERSION)/ \
			$(INSTALL_DIR)/usr/lib/linux-image-$(REAL_VERSION)/; \
	fi
	$(stamp)

build_image:

binary_image: DH_OPTIONS = -p$(PACKAGE_NAME)
binary_image: DH_STRIP_ARGS = --no-automatic-dbgsym
binary_image: REAL_VERSION = $(ABINAME)$(LOCALVERSION)
binary_image: IMAGE_PACKAGE_NAME = linux-image-$(REAL_VERSION)-unsigned
binary_image: DIR2 = $(BUILD_DIR)/install_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
binary_image: PACKAGE_DIR = debian/$(PACKAGE_NAME)
binary_image: $(STAMPS_DIR)/install_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
binary_image:
	$(dh_binary_pre)
	dh_install --sourcedir=$(DIR2) boot
	dh_install --sourcedir=$(DIR2) lib
	if [ -d $(DIR2)/usr ]; then dh_install --sourcedir=$(DIR2) usr; fi
# Copy bug scripts but change the info file to refer to the right package
	mkdir -p $(PACKAGE_DIR)/usr/share/bug/$(PACKAGE_NAME)
	rsync -a /usr/share/bug/$(IMAGE_PACKAGE_NAME)/ \
		$(PACKAGE_DIR)/usr/share/bug/$(PACKAGE_NAME)/
	sed -i -e 's/^PACKAGE_NAME=.*/PACKAGE_NAME=$(PACKAGE_NAME)/' \
		-e 's/^PACKAGE_VERSION=.*/PACKAGE_VERSION=$(PACKAGE_VERSION)/' \
		$(PACKAGE_DIR)/usr/share/bug/$(PACKAGE_NAME)/info
	$(dh_binary_post)

build_meta:

binary_meta:
	$(dh_binary_pre)
	$(dh_binary_post)

build_installer:

binary_installer: REAL_VERSION = $(ABINAME)$(LOCALVERSION)
binary_installer: export KW_DEFCONFIG_DIR=debian/installer
binary_installer: export KW_CONFIG_DIR=debian/installer
binary_installer: export SOURCEDIR = $(BUILD_DIR)/install_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
binary_installer: DH_OPTIONS_IMAGE = -p$(IMAGE_PACKAGE_NAME) --sourcedir=$(SOURCEDIR)
binary_installer: $(STAMPS_DIR)/install_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
binary_installer:
	$(dh_binary_pre)
	DH_OPTIONS="$(DH_OPTIONS_IMAGE)" dh_install boot/$(IMAGE_INSTALL_STEM)-$(REAL_VERSION)
	DH_OPTIONS="$(DH_OPTIONS_IMAGE)" dh_install lib/modules/$(REAL_VERSION)/modules.builtin
	DH_OPTIONS="$(DH_OPTIONS_IMAGE)" dh_install lib/modules/$(REAL_VERSION)/modules.order
ifneq ($(filter arm64 armel armhf mipsel mips64el mipsr6 mipsr6el mips64r6 mips64r6el riscv64,$(ARCH)),)
	DH_OPTIONS="$(DH_OPTIONS_IMAGE)" dh_install usr/lib/linux-image-$(REAL_VERSION)
endif
	kernel-wedge copy-modules $(ABINAME) $(FLAVOUR) $(REAL_VERSION)
	kernel-wedge find-dups $(REAL_VERSION)
	kernel-wedge find-unpackaged $(REAL_VERSION) $(REAL_VERSION)
	kernel-wedge check $$(dh_listpackages)
	dh_fixperms
	dh_gencontrol -- $(GENCONTROL_ARGS)
	dh_builddeb -- $(BUILDDEB_ARGS)

.PHONY: build_% binary_%