]> git.proxmox.com Git - pve-kernel.git/blob - Makefile
makefile: convert to use simple parenthesis
[pve-kernel.git] / Makefile
1 # also bump pve-kernel-meta if either of MAJ.MIN, PATCHLEVEL or KREL change
2 KERNEL_MAJ=6
3 KERNEL_MIN=2
4 KERNEL_PATCHLEVEL=11
5 # increment KREL if the ABI changes (abicheck target in debian/rules)
6 # rebuild packages with new KREL and run 'make abiupdate'
7 KREL=2
8
9 PKGREL=2
10
11 KERNEL_MAJMIN=$(KERNEL_MAJ).$(KERNEL_MIN)
12 KERNEL_VER=$(KERNEL_MAJMIN).$(KERNEL_PATCHLEVEL)
13
14 EXTRAVERSION=-$(KREL)-pve
15 KVNAME=$(KERNEL_VER)$(EXTRAVERSION)
16 PACKAGE=pve-kernel-$(KVNAME)
17 HDRPACKAGE=pve-headers-$(KVNAME)
18
19 ARCH=$(shell dpkg-architecture -qDEB_BUILD_ARCH)
20
21 # amd64/x86_64/x86 share the arch subdirectory in the kernel, 'x86' so we need
22 # a mapping
23 KERNEL_ARCH=x86
24 ifneq ($(ARCH), amd64)
25 KERNEL_ARCH=$(ARCH)
26 endif
27
28 GITVERSION:=$(shell git rev-parse HEAD)
29
30 SKIPABI=0
31
32 BUILD_DIR=build
33
34 KERNEL_SRC=ubuntu-kernel
35 KERNEL_SRC_SUBMODULE=submodules/$(KERNEL_SRC)
36 KERNEL_CFG_ORG=config-$(KERNEL_VER).org
37
38 ZFSONLINUX_SUBMODULE=submodules/zfsonlinux
39 ZFSDIR=pkg-zfs
40
41 MODULES=modules
42 MODULE_DIRS=$(ZFSDIR)
43
44 # exported to debian/rules via debian/rules.d/dirs.mk
45 DIRS=KERNEL_SRC ZFSDIR MODULES
46
47 DST_DEB=$(PACKAGE)_$(KERNEL_VER)-$(PKGREL)_$(ARCH).deb
48 HDR_DEB=$(HDRPACKAGE)_$(KERNEL_VER)-$(PKGREL)_$(ARCH).deb
49 USR_HDR_DEB=pve-kernel-libc-dev_$(KERNEL_VER)-$(PKGREL)_$(ARCH).deb
50 LINUX_TOOLS_DEB=linux-tools-$(KERNEL_MAJMIN)_$(KERNEL_VER)-$(PKGREL)_$(ARCH).deb
51 LINUX_TOOLS_DBG_DEB=linux-tools-$(KERNEL_MAJMIN)-dbgsym_$(KERNEL_VER)-$(PKGREL)_$(ARCH).deb
52
53 DEBS=$(DST_DEB) $(HDR_DEB) $(LINUX_TOOLS_DEB) $(LINUX_TOOLS_DBG_DEB) # $(USR_HDR_DEB)
54
55 all: deb
56 deb: $(DEBS)
57
58 $(LINUX_TOOLS_DEB) $(HDR_DEB): $(DST_DEB)
59 $(DST_DEB): $(BUILD_DIR).prepared
60 cd $(BUILD_DIR); dpkg-buildpackage --jobs=auto -b -uc -us
61 lintian $(DST_DEB)
62 #lintian $(HDR_DEB)
63 lintian $(LINUX_TOOLS_DEB)
64
65 $(BUILD_DIR).prepared: $(addsuffix .prepared,$(KERNEL_SRC) $(MODULES) debian)
66 cp -a fwlist-previous $(BUILD_DIR)/
67 cp -a abi-prev-* $(BUILD_DIR)/
68 cp -a abi-blacklist $(BUILD_DIR)/
69 touch $@
70
71 debian.prepared: debian
72 rm -rf $(BUILD_DIR)/debian
73 mkdir -p $(BUILD_DIR)
74 cp -a debian $(BUILD_DIR)/debian
75 echo "git clone git://git.proxmox.com/git/pve-kernel.git\\ngit checkout $(GITVERSION)" > $(BUILD_DIR)/debian/SOURCE
76 @$(foreach dir, $(DIRS),echo "$(dir)=$($(dir))" >> $(BUILD_DIR)/debian/rules.d/env.mk;)
77 echo "KVNAME=$(KVNAME)" >> $(BUILD_DIR)/debian/rules.d/env.mk
78 echo "KERNEL_MAJMIN=$(KERNEL_MAJMIN)" >> $(BUILD_DIR)/debian/rules.d/env.mk
79 cd $(BUILD_DIR); debian/rules debian/control
80 touch $@
81
82 $(KERNEL_SRC).prepared: $(KERNEL_SRC_SUBMODULE) | submodule
83 rm -rf $(BUILD_DIR)/$(KERNEL_SRC) $@
84 mkdir -p $(BUILD_DIR)
85 cp -a $(KERNEL_SRC_SUBMODULE) $(BUILD_DIR)/$(KERNEL_SRC)
86 # TODO: split for archs, track and diff in our repository?
87 cd $(BUILD_DIR)/$(KERNEL_SRC); python3 debian/scripts/misc/annotations --arch amd64 --export >../../$(KERNEL_CFG_ORG)
88 cp $(KERNEL_CFG_ORG) $(BUILD_DIR)/$(KERNEL_SRC)/.config
89 sed -i $(BUILD_DIR)/$(KERNEL_SRC)/Makefile -e 's/^EXTRAVERSION.*$$/EXTRAVERSION=$(EXTRAVERSION)/'
90 rm -rf $(BUILD_DIR)/$(KERNEL_SRC)/debian $(BUILD_DIR)/$(KERNEL_SRC)/debian.master
91 set -e; cd $(BUILD_DIR)/$(KERNEL_SRC); for patch in ../../patches/kernel/*.patch; do echo "applying patch '$$patch'" && patch -p1 < $${patch}; done
92 touch $@
93
94 $(MODULES).prepared: $(addsuffix .prepared,$(MODULE_DIRS))
95 touch $@
96
97 $(ZFSDIR).prepared: $(ZFSONLINUX_SUBMODULE)
98 rm -rf $(BUILD_DIR)/$(MODULES)/$(ZFSDIR) $(BUILD_DIR)/$(MODULES)/tmp $@
99 mkdir -p $(BUILD_DIR)/$(MODULES)/tmp
100 cp -a $(ZFSONLINUX_SUBMODULE)/* $(BUILD_DIR)/$(MODULES)/tmp
101 cd $(BUILD_DIR)/$(MODULES)/tmp; make kernel
102 rm -rf $(BUILD_DIR)/$(MODULES)/tmp
103 touch $(ZFSDIR).prepared
104
105 .PHONY: upload
106 upload: $(DEBS)
107 tar cf - $(DEBS)|ssh -X repoman@repo.proxmox.com -- upload --product pve,pmg,pbs --dist bullseye --arch $(ARCH)
108
109 .PHONY: distclean
110 distclean: clean
111 git submodule deinit --all
112
113 # upgrade to current master
114 .PHONY: update_modules
115 update_modules: submodule
116 git submodule foreach 'git pull --ff-only origin master'
117 cd $(ZFSONLINUX_SUBMODULE); git pull --ff-only origin master
118
119 # make sure submodules were initialized
120 .PHONY: submodule
121 submodule:
122 test -f "$(KERNEL_SRC_SUBMODULE)/README" || git submodule update --init $(KERNEL_SRC_SUBMODULE)
123 test -f "$(ZFSONLINUX_SUBMODULE)/Makefile" || git submodule update --init --recursive $(ZFSONLINUX_SUBMODULE)
124
125 # call after ABI bump with header deb in working directory
126 .PHONY: abiupdate
127 abiupdate: abi-prev-$(KVNAME)
128 abi-prev-$(KVNAME): abi-tmp-$(KVNAME)
129 ifneq ($(strip $(shell git status --untracked-files=no --porcelain -z)),)
130 @echo "working directory unclean, aborting!"
131 @false
132 else
133 git rm "abi-prev-*"
134 mv $< $@
135 git add $@
136 git commit -s -m "update ABI file for $(KVNAME)" -m "(generated with debian/scripts/abi-generate)"
137 @echo "update abi-prev-$(KVNAME) committed!"
138 endif
139
140 abi-tmp-$(KVNAME):
141 @ test -e $(HDR_DEB) || (echo "need $(HDR_DEB) to extract ABI data!" && false)
142 debian/scripts/abi-generate $(HDR_DEB) $@ $(KVNAME) 1
143
144 .PHONY: clean
145 clean:
146 rm -rf *~ build *.prepared $(KERNEL_CFG_ORG)
147 rm -f *.deb *.changes *.buildinfo