]> git.proxmox.com Git - pve-kernel.git/blame - Makefile
cherry-pick improved erratum 1386 workaround
[pve-kernel.git] / Makefile
CommitLineData
6d345395
TL
1include /usr/share/dpkg/pkg-info.mk
2
6e72c5b2 3# also bump proxmox-kernel-meta if the default MAJ.MIN version changes!
67ec0da2 4KERNEL_MAJ=6
c1dba3d5 5KERNEL_MIN=8
ab748744 6KERNEL_PATCHLEVEL=4
6e72c5b2 7# increment KREL for every published package release!
8b4e1fa9 8# rebuild packages with new KREL and run 'make abiupdate'
f337b5da 9KREL=2
44403fcc 10
5fd5ec0e
SI
11KERNEL_MAJMIN=$(KERNEL_MAJ).$(KERNEL_MIN)
12KERNEL_VER=$(KERNEL_MAJMIN).$(KERNEL_PATCHLEVEL)
13
8fbdb63a
TL
14EXTRAVERSION=-$(KREL)-pve
15KVNAME=$(KERNEL_VER)$(EXTRAVERSION)
6e72c5b2
FG
16PACKAGE=proxmox-kernel-$(KVNAME)
17HDRPACKAGE=proxmox-headers-$(KVNAME)
ba2f1a67 18
37d1225d 19ARCH=$(shell dpkg-architecture -qDEB_BUILD_ARCH)
6490543b
TL
20
21# amd64/x86_64/x86 share the arch subdirectory in the kernel, 'x86' so we need
22# a mapping
23KERNEL_ARCH=x86
8fbdb63a
TL
24ifneq ($(ARCH), amd64)
25KERNEL_ARCH=$(ARCH)
6490543b
TL
26endif
27
41f5ee98
FG
28SKIPABI=0
29
6e72c5b2 30BUILD_DIR=proxmox-kernel-$(KERNEL_VER)
ba2f1a67 31
00d66e96 32KERNEL_SRC=ubuntu-kernel
5fd5ec0e 33KERNEL_SRC_SUBMODULE=submodules/$(KERNEL_SRC)
8fbdb63a 34KERNEL_CFG_ORG=config-$(KERNEL_VER).org
ba2f1a67 35
2e38f6f9 36ZFSONLINUX_SUBMODULE=submodules/zfsonlinux
66aed5b8 37ZFSDIR=pkg-zfs
e96d2ab3 38
66aed5b8 39MODULES=modules
8fbdb63a 40MODULE_DIRS=$(ZFSDIR)
ba2f1a67 41
66aed5b8 42# exported to debian/rules via debian/rules.d/dirs.mk
5fa6b6ae 43DIRS=KERNEL_SRC ZFSDIR MODULES
66aed5b8 44
de185308
FG
45DSC=proxmox-kernel-$(KERNEL_MAJMIN)_$(KERNEL_VER)-$(KREL).dsc
46DST_DEB=$(PACKAGE)_$(KERNEL_VER)-$(KREL)_$(ARCH).deb
08f167c9 47SIGNED_TEMPLATE_DEB=$(PACKAGE)-signed-template_$(KERNEL_VER)-$(KREL)_$(ARCH).deb
de185308
FG
48META_DEB=proxmox-kernel-$(KERNEL_MAJMIN)_$(KERNEL_VER)-$(KREL)_all.deb
49HDR_DEB=$(HDRPACKAGE)_$(KERNEL_VER)-$(KREL)_$(ARCH).deb
50META_HDR_DEB=proxmox-headers-$(KERNEL_MAJMIN)_$(KERNEL_VER)-$(KREL)_all.deb
51USR_HDR_DEB=proxmox-kernel-libc-dev_$(KERNEL_VER)-$(KREL)_$(ARCH).deb
52LINUX_TOOLS_DEB=linux-tools-$(KERNEL_MAJMIN)_$(KERNEL_VER)-$(KREL)_$(ARCH).deb
53LINUX_TOOLS_DBG_DEB=linux-tools-$(KERNEL_MAJMIN)-dbgsym_$(KERNEL_VER)-$(KREL)_$(ARCH).deb
ba2f1a67 54
08f167c9 55DEBS=$(DST_DEB) $(META_DEB) $(HDR_DEB) $(META_HDR_DEB) $(LINUX_TOOLS_DEB) $(LINUX_TOOLS_DBG_DEB) $(SIGNED_TEMPLATE_DEB) # $(USR_HDR_DEB)
ba2f1a67 56
2135c723 57all: deb
8fbdb63a
TL
58deb: $(DEBS)
59
6e72c5b2 60$(META_DEB) $(META_HDR_DEB) $(LINUX_TOOLS_DEB) $(HDR_DEB): $(DST_DEB)
8fbdb63a
TL
61$(DST_DEB): $(BUILD_DIR).prepared
62 cd $(BUILD_DIR); dpkg-buildpackage --jobs=auto -b -uc -us
63 lintian $(DST_DEB)
64 #lintian $(HDR_DEB)
65 lintian $(LINUX_TOOLS_DEB)
66
e55f32e3
TL
67dsc:
68 $(MAKE) $(DSC)
69 lintian $(DSC)
70
ecf7b6eb
TL
71$(DSC): $(BUILD_DIR).prepared
72 cd $(BUILD_DIR); dpkg-buildpackage -S -uc -us -d
ecf7b6eb 73
8b45a37b
TL
74sbuild: $(DSC)
75 sbuild $(DSC)
76
8fbdb63a
TL
77$(BUILD_DIR).prepared: $(addsuffix .prepared,$(KERNEL_SRC) $(MODULES) debian)
78 cp -a fwlist-previous $(BUILD_DIR)/
79 cp -a abi-prev-* $(BUILD_DIR)/
80 cp -a abi-blacklist $(BUILD_DIR)/
66aed5b8
FG
81 touch $@
82
5ba48a84
TL
83.PHONY: build-dir-fresh
84build-dir-fresh:
85 $(MAKE) clean
86 $(MAKE) $(BUILD_DIR).prepared
87 echo "created build-directory: $(BUILD_DIR).prepared/"
88
66aed5b8 89debian.prepared: debian
8fbdb63a
TL
90 rm -rf $(BUILD_DIR)/debian
91 mkdir -p $(BUILD_DIR)
92 cp -a debian $(BUILD_DIR)/debian
5c467ccb
TL
93 echo "git clone git://git.proxmox.com/git/pve-kernel.git\\ngit checkout $(shell git rev-parse HEAD)" \
94 >$(BUILD_DIR)/debian/SOURCE
8fbdb63a
TL
95 @$(foreach dir, $(DIRS),echo "$(dir)=$($(dir))" >> $(BUILD_DIR)/debian/rules.d/env.mk;)
96 echo "KVNAME=$(KVNAME)" >> $(BUILD_DIR)/debian/rules.d/env.mk
97 echo "KERNEL_MAJMIN=$(KERNEL_MAJMIN)" >> $(BUILD_DIR)/debian/rules.d/env.mk
98 cd $(BUILD_DIR); debian/rules debian/control
ba2f1a67
FG
99 touch $@
100
8fbdb63a
TL
101$(KERNEL_SRC).prepared: $(KERNEL_SRC_SUBMODULE) | submodule
102 rm -rf $(BUILD_DIR)/$(KERNEL_SRC) $@
103 mkdir -p $(BUILD_DIR)
104 cp -a $(KERNEL_SRC_SUBMODULE) $(BUILD_DIR)/$(KERNEL_SRC)
e96d2ab3 105# TODO: split for archs, track and diff in our repository?
8fbdb63a
TL
106 cd $(BUILD_DIR)/$(KERNEL_SRC); python3 debian/scripts/misc/annotations --arch amd64 --export >../../$(KERNEL_CFG_ORG)
107 cp $(KERNEL_CFG_ORG) $(BUILD_DIR)/$(KERNEL_SRC)/.config
108 sed -i $(BUILD_DIR)/$(KERNEL_SRC)/Makefile -e 's/^EXTRAVERSION.*$$/EXTRAVERSION=$(EXTRAVERSION)/'
109 rm -rf $(BUILD_DIR)/$(KERNEL_SRC)/debian $(BUILD_DIR)/$(KERNEL_SRC)/debian.master
8349ace6
TL
110 set -e; cd $(BUILD_DIR)/$(KERNEL_SRC); \
111 for patch in ../../patches/kernel/*.patch; do \
112 echo "applying patch '$$patch'"; \
113 patch --batch -p1 < "$${patch}"; \
114 done
ba2f1a67
FG
115 touch $@
116
8fbdb63a 117$(MODULES).prepared: $(addsuffix .prepared,$(MODULE_DIRS))
e96d2ab3
FG
118 touch $@
119
8fbdb63a
TL
120$(ZFSDIR).prepared: $(ZFSONLINUX_SUBMODULE)
121 rm -rf $(BUILD_DIR)/$(MODULES)/$(ZFSDIR) $(BUILD_DIR)/$(MODULES)/tmp $@
122 mkdir -p $(BUILD_DIR)/$(MODULES)/tmp
123 cp -a $(ZFSONLINUX_SUBMODULE)/* $(BUILD_DIR)/$(MODULES)/tmp
124 cd $(BUILD_DIR)/$(MODULES)/tmp; make kernel
125 rm -rf $(BUILD_DIR)/$(MODULES)/tmp
126 touch $(ZFSDIR).prepared
ba2f1a67 127
ba2f1a67 128.PHONY: upload
6d345395 129upload: UPLOAD_DIST ?= $(DEB_DISTRIBUTION)
8fbdb63a 130upload: $(DEBS)
6d345395 131 tar cf - $(DEBS)|ssh -X repoman@repo.proxmox.com -- upload --product pve,pmg,pbs --dist $(UPLOAD_DIST) --arch $(ARCH)
ba2f1a67
FG
132
133.PHONY: distclean
134distclean: clean
e96d2ab3 135 git submodule deinit --all
ba2f1a67 136
32054ef4
FG
137# upgrade to current master
138.PHONY: update_modules
a6dd515e 139update_modules: submodule
32054ef4 140 git submodule foreach 'git pull --ff-only origin master'
8fbdb63a 141 cd $(ZFSONLINUX_SUBMODULE); git pull --ff-only origin master
32054ef4
FG
142
143# make sure submodules were initialized
a6dd515e
FG
144.PHONY: submodule
145submodule:
8fbdb63a
TL
146 test -f "$(KERNEL_SRC_SUBMODULE)/README" || git submodule update --init $(KERNEL_SRC_SUBMODULE)
147 test -f "$(ZFSONLINUX_SUBMODULE)/Makefile" || git submodule update --init --recursive $(ZFSONLINUX_SUBMODULE)
32054ef4 148
b4ecde23
FG
149# call after ABI bump with header deb in working directory
150.PHONY: abiupdate
8fbdb63a
TL
151abiupdate: abi-prev-$(KVNAME)
152abi-prev-$(KVNAME): abi-tmp-$(KVNAME)
b4ecde23
FG
153ifneq ($(strip $(shell git status --untracked-files=no --porcelain -z)),)
154 @echo "working directory unclean, aborting!"
155 @false
156else
157 git rm "abi-prev-*"
158 mv $< $@
159 git add $@
8fbdb63a
TL
160 git commit -s -m "update ABI file for $(KVNAME)" -m "(generated with debian/scripts/abi-generate)"
161 @echo "update abi-prev-$(KVNAME) committed!"
b4ecde23
FG
162endif
163
8fbdb63a
TL
164abi-tmp-$(KVNAME):
165 @ test -e $(HDR_DEB) || (echo "need $(HDR_DEB) to extract ABI data!" && false)
166 debian/scripts/abi-generate $(HDR_DEB) $@ $(KVNAME) 1
32054ef4 167
ba2f1a67
FG
168.PHONY: clean
169clean:
6e72c5b2
FG
170 rm -rf *~ proxmox-kernel-[0-9]*/ *.prepared $(KERNEL_CFG_ORG)
171 rm -f *.deb *.dsc *.changes *.buildinfo *.build proxmox-kernel*.tar.*