1 include /usr
/share
/dpkg
/pkg-info.mk
3 # also bump proxmox-kernel-meta if the default MAJ.MIN version changes!
7 # increment KREL for every published package release!
8 # rebuild packages with new KREL and run 'make abiupdate'
11 KERNEL_MAJMIN
=$(KERNEL_MAJ
).
$(KERNEL_MIN
)
12 KERNEL_VER
=$(KERNEL_MAJMIN
).
$(KERNEL_PATCHLEVEL
)
14 EXTRAVERSION
=-$(KREL
)-pve
15 KVNAME
=$(KERNEL_VER
)$(EXTRAVERSION
)
16 PACKAGE
=proxmox-kernel-
$(KVNAME
)
17 HDRPACKAGE
=proxmox-headers-
$(KVNAME
)
19 ARCH
=$(shell dpkg-architecture
-qDEB_BUILD_ARCH
)
21 # amd64/x86_64/x86 share the arch subdirectory in the kernel, 'x86' so we need
24 ifneq ($(ARCH
), amd64
)
30 BUILD_DIR
=proxmox-kernel-
$(KERNEL_VER
)
32 KERNEL_SRC
=ubuntu-kernel
33 KERNEL_SRC_SUBMODULE
=submodules
/$(KERNEL_SRC
)
34 KERNEL_CFG_ORG
=config-
$(KERNEL_VER
).org
36 ZFSONLINUX_SUBMODULE
=submodules
/zfsonlinux
42 # exported to debian/rules via debian/rules.d/dirs.mk
43 DIRS
=KERNEL_SRC ZFSDIR MODULES
45 DSC
=proxmox-kernel-
$(KERNEL_MAJMIN
)_
$(KERNEL_VER
)-$(KREL
).dsc
46 DST_DEB
=$(PACKAGE
)_
$(KERNEL_VER
)-$(KREL
)_
$(ARCH
).deb
47 SIGNED_TEMPLATE_DEB
=$(PACKAGE
)-signed-template_
$(KERNEL_VER
)-$(KREL
)_
$(ARCH
).deb
48 META_DEB
=proxmox-kernel-
$(KERNEL_MAJMIN
)_
$(KERNEL_VER
)-$(KREL
)_all.deb
49 HDR_DEB
=$(HDRPACKAGE
)_
$(KERNEL_VER
)-$(KREL
)_
$(ARCH
).deb
50 META_HDR_DEB
=proxmox-headers-
$(KERNEL_MAJMIN
)_
$(KERNEL_VER
)-$(KREL
)_all.deb
51 USR_HDR_DEB
=proxmox-kernel-libc-dev_
$(KERNEL_VER
)-$(KREL
)_
$(ARCH
).deb
52 LINUX_TOOLS_DEB
=linux-tools-
$(KERNEL_MAJMIN
)_
$(KERNEL_VER
)-$(KREL
)_
$(ARCH
).deb
53 LINUX_TOOLS_DBG_DEB
=linux-tools-
$(KERNEL_MAJMIN
)-dbgsym_
$(KERNEL_VER
)-$(KREL
)_
$(ARCH
).deb
55 DEBS
=$(DST_DEB
) $(META_DEB
) $(HDR_DEB
) $(META_HDR_DEB
) $(LINUX_TOOLS_DEB
) $(LINUX_TOOLS_DBG_DEB
) $(SIGNED_TEMPLATE_DEB
) # $(USR_HDR_DEB)
60 $(META_DEB
) $(META_HDR_DEB
) $(LINUX_TOOLS_DEB
) $(HDR_DEB
): $(DST_DEB
)
61 $(DST_DEB
): $(BUILD_DIR
).prepared
62 cd
$(BUILD_DIR
); dpkg-buildpackage
--jobs
=auto
-b
-uc
-us
65 lintian
$(LINUX_TOOLS_DEB
)
71 $(DSC
): $(BUILD_DIR
).prepared
72 cd
$(BUILD_DIR
); dpkg-buildpackage
-S
-uc
-us
-d
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
)/
83 .PHONY
: build-dir-fresh
86 $(MAKE
) $(BUILD_DIR
).prepared
87 echo
"created build-directory: $(BUILD_DIR).prepared/"
89 debian.prepared
: debian
90 rm -rf
$(BUILD_DIR
)/debian
92 cp
-a debian
$(BUILD_DIR
)/debian
93 echo
"git clone git://git.proxmox.com/git/pve-kernel.git\\ngit checkout $(shell git rev-parse HEAD)" \
94 >$(BUILD_DIR
)/debian
/SOURCE
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
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
)
105 # TODO: split for archs, track and diff in our repository?
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
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}"; \
117 $(MODULES
).prepared
: $(addsuffix .prepared
,$(MODULE_DIRS
))
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
129 upload
: UPLOAD_DIST ?
= $(DEB_DISTRIBUTION
)
131 tar cf
- $(DEBS
)|ssh
-X repoman@repo.proxmox.com
-- upload
--product pve
,pmg
,pbs
--dist $(UPLOAD_DIST
) --arch
$(ARCH
)
135 git submodule deinit
--all
137 # upgrade to current master
138 .PHONY
: update_modules
139 update_modules
: submodule
140 git submodule
foreach 'git pull --ff-only origin master'
141 cd
$(ZFSONLINUX_SUBMODULE
); git pull
--ff-only
origin master
143 # make sure submodules were initialized
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
)
149 # call after ABI bump with header deb in working directory
151 abiupdate
: abi-prev-
$(KVNAME
)
152 abi-prev-
$(KVNAME
): abi-tmp-
$(KVNAME
)
153 ifneq ($(strip $(shell git status
--untracked-files
=no
--porcelain
-z
)),)
154 @echo
"working directory unclean, aborting!"
160 git commit
-s
-m
"update ABI file for $(KVNAME)" -m
"(generated with debian/scripts/abi-generate)"
161 @echo
"update abi-prev-$(KVNAME) committed!"
165 @
test -e
$(HDR_DEB
) ||
(echo
"need $(HDR_DEB) to extract ABI data!" && false
)
166 debian
/scripts
/abi-generate
$(HDR_DEB
) $@
$(KVNAME
) 1
170 rm -rf
*~ proxmox-kernel-
[0-9]*/ *.prepared
$(KERNEL_CFG_ORG
)
171 rm -f
*.deb
*.dsc
*.changes
*.buildinfo
*.build proxmox-kernel
*.
tar.
*