1 # also bump pve-kernel-meta if either of MAJ.MIN, PATCHLEVEL or KREL change
5 # increment KREL if the ABI changes (abicheck target in debian/rules)
6 # 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
=pve-kernel-
${KVNAME}
17 HDRPACKAGE
=pve-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
)
28 GITVERSION
:=$(shell git rev-parse HEAD
)
34 KERNEL_SRC
=ubuntu-kinetic
35 KERNEL_SRC_SUBMODULE
=submodules
/$(KERNEL_SRC
)
36 KERNEL_CFG_ORG
=config-
${KERNEL_VER}.org
38 ZFSONLINUX_SUBMODULE
=submodules
/zfsonlinux
44 # exported to debian/rules via debian/rules.d/dirs.mk
45 DIRS
=KERNEL_SRC ZFSDIR MODULES
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
53 DEBS
=${DST_DEB} ${HDR_DEB} ${USR_HDR_DEB} ${LINUX_TOOLS_DEB} ${LINUX_TOOLS_DBG_DEB}
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
63 lintian
${LINUX_TOOLS_DEB}
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}/
71 debian.prepared
: debian
72 rm -rf
${BUILD_DIR}/debian
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
82 ${KERNEL_SRC}.prepared
: ${KERNEL_SRC_SUBMODULE} | submodule
83 rm -rf
${BUILD_DIR}/${KERNEL_SRC} $@
85 cp
-a
${KERNEL_SRC_SUBMODULE} ${BUILD_DIR}/${KERNEL_SRC}
86 # TODO: split for archs, track and diff in our repository?
87 cat
${BUILD_DIR}/${KERNEL_SRC}/debian.master
/config
/config.common.ubuntu
${BUILD_DIR}/${KERNEL_SRC}/debian.master
/config
/${ARCH}/config.common.
${ARCH} ${BUILD_DIR}/${KERNEL_SRC}/debian.master
/config
/${ARCH}/config.flavour.generic
> ${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
94 ${MODULES}.prepared
: $(addsuffix .prepared
,${MODULE_DIRS})
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
107 tar cf
- ${DEBS}|ssh
-X repoman@repo.proxmox.com
-- upload
--product pve
,pmg
,pbs
--dist bullseye
--arch
${ARCH}
111 git submodule deinit
--all
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
119 # make sure submodules were initialized
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}
125 # call after ABI bump with header deb in working directory
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!"
136 git commit
-s
-m
"update ABI file for ${KVNAME}" -m
"(generated with debian/scripts/abi-generate)"
137 @echo
"update abi-prev-${KVNAME} committed!"
141 @
test -e
${HDR_DEB} ||
(echo
"need ${HDR_DEB} to extract ABI data!" && false
)
142 debian
/scripts
/abi-generate
${HDR_DEB} $@
${KVNAME} 1
146 rm -rf
*~ build
*.prepared
${KERNEL_CFG_ORG}
147 rm -f
*.deb
*.changes
*.buildinfo