3 # also bump pve-kernel-meta if either of MAJ.MIN, PATCHLEVEL or KREL change
7 # increment KREL if the ABI changes (abicheck target in debian/rules)
8 # rebuild packages with new KREL and run 'make abiupdate'
13 KERNEL_MAJMIN
=$(KERNEL_MAJ
).
$(KERNEL_MIN
)
14 KERNEL_VER
=$(KERNEL_MAJMIN
).
$(KERNEL_PATCHLEVEL
)
16 EXTRAVERSION
=-${KREL}-pve
17 KVNAME
=${KERNEL_VER}${EXTRAVERSION}
18 PACKAGE
=pve-kernel-
${KVNAME}
19 HDRPACKAGE
=pve-headers-
${KVNAME}
21 ARCH
=$(shell dpkg-architecture
-qDEB_BUILD_ARCH
)
23 # amd64/x86_64/x86 share the arch subdirectory in the kernel, 'x86' so we need
26 ifneq (${ARCH}, amd64
)
30 GITVERSION
:=$(shell git rev-parse HEAD
)
42 KERNEL_SRC
=ubuntu-bionic
43 KERNEL_SRC_SUBMODULE
=submodules
/$(KERNEL_SRC
)
44 KERNEL_CFG_ORG
=config-
${KERNEL_VER}.org
46 E1000EDIR
=e1000e-3
.4.1.1
47 E1000ESRC
=${E1000EDIR}.
tar.gz
50 IGBSRC
=${IGBDIR}.
tar.gz
52 ZFSONLINUX_SUBMODULE
=submodules
/zfsonlinux
54 SPLSRC
=${ZFSONLINUX_SUBMODULE}/spl-debian
56 ZFSSRC
=${ZFSONLINUX_SUBMODULE}/zfs-debian
59 MODULE_DIRS
=${E1000EDIR} ${IGBDIR} ${SPLDIR} ${ZFSDIR}
61 # exported to debian/rules via debian/rules.d/dirs.mk
62 DIRS
=KERNEL_SRC E1000EDIR IGBDIR SPLDIR ZFSDIR MODULES
64 DST_DEB
=${PACKAGE}_
${KERNEL_VER}-${PKGREL}_
${ARCH}.deb
65 HDR_DEB
=${HDRPACKAGE}_
${KERNEL_VER}-${PKGREL}_
${ARCH}.deb
66 LINUX_TOOLS_DEB
=linux-tools-
$(KERNEL_MAJMIN
)_
${KERNEL_VER}-${PKGREL}_
${ARCH}.deb
68 DEBS
=${DST_DEB} ${HDR_DEB} ${LINUX_TOOLS_DEB}
74 $(GCC
) --version|grep
"6\.3" || false
75 @
$(GCC
) -Werror
-mindirect-branch
=thunk-extern
-mindirect-branch-register
-c
-x c
/dev
/null
-o check_gcc.o \
76 ||
( rm -f check_gcc.o
; \
77 echo
"Please install gcc-6 packages with indirect thunk / RETPOLINE support"; \
81 ${LINUX_TOOLS_DEB} ${HDR_DEB}: ${DST_DEB}
82 ${DST_DEB}: ${BUILD_DIR}.prepared
83 cd
${BUILD_DIR}; dpkg-buildpackage
--jobs
=auto
-b
-uc
-us
86 lintian
${LINUX_TOOLS_DEB}
88 ${BUILD_DIR}.prepared
: $(addsuffix .prepared
,${KERNEL_SRC} ${MODULES} debian
)
89 cp
-a fwlist-previous
${BUILD_DIR}/
90 cp
-a abi-prev-
* ${BUILD_DIR}/
91 cp
-a abi-blacklist
${BUILD_DIR}/
94 debian.prepared
: debian
95 rm -rf
${BUILD_DIR}/debian
97 cp
-a debian
${BUILD_DIR}/debian
98 echo
"git clone git://git.proxmox.com/git/pve-kernel.git\\ngit checkout ${GITVERSION}" > ${BUILD_DIR}/debian
/SOURCE
99 @
$(foreach dir, ${DIRS},echo
"${dir}=${${dir}}" >> ${BUILD_DIR}/debian
/rules.d
/env.mk
;)
100 echo
"KVNAME=${KVNAME}" >> ${BUILD_DIR}/debian
/rules.d
/env.mk
101 echo
"KERNEL_MAJMIN=${KERNEL_MAJMIN}" >> ${BUILD_DIR}/debian
/rules.d
/env.mk
102 cd
${BUILD_DIR}; debian
/rules debian
/control
105 ${KERNEL_SRC}.prepared
: ${KERNEL_SRC_SUBMODULE} | submodule
106 rm -rf
${BUILD_DIR}/${KERNEL_SRC} $@
107 mkdir
-p
${BUILD_DIR}
108 cp
-a
${KERNEL_SRC_SUBMODULE} ${BUILD_DIR}/${KERNEL_SRC}
109 # TODO: split for archs, track and diff in our repository?
110 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}
111 cp
${KERNEL_CFG_ORG} ${BUILD_DIR}/${KERNEL_SRC}/.config
112 sed
-i
${BUILD_DIR}/${KERNEL_SRC}/Makefile
-e
's/^EXTRAVERSION.*$$/EXTRAVERSION=${EXTRAVERSION}/'
113 rm -rf
${BUILD_DIR}/${KERNEL_SRC}/debian
${BUILD_DIR}/${KERNEL_SRC}/debian.master
114 cd
${BUILD_DIR}/${KERNEL_SRC}; for patch in ..
/..
/patches
/kernel
/*.patch
; do echo
"applying patch '$$patch'" && patch
-p1
< $${patch}; done
117 ${MODULES}.prepared
: $(addsuffix .prepared
,${MODULE_DIRS})
120 ${E1000EDIR}.prepared
: ${E1000ESRC}
121 rm -rf
${BUILD_DIR}/${MODULES}/${E1000EDIR} $@
122 mkdir
-p
${BUILD_DIR}/${MODULES}/${E1000EDIR}
123 tar --strip-components
=1 -C
${BUILD_DIR}/${MODULES}/${E1000EDIR} -xf
${E1000ESRC}
124 cd
${BUILD_DIR}/${MODULES}/${E1000EDIR}; patch
-p1
< ..
/..
/..
/patches
/intel
/intel-module-gcc6-compat.patch
125 cd
${BUILD_DIR}/${MODULES}/${E1000EDIR}; patch
-p1
< ..
/..
/..
/patches
/intel
/e1000e
/e1000e_4.10_max-mtu.patch
126 cd
${BUILD_DIR}/${MODULES}/${E1000EDIR}; patch
-p1
< ..
/..
/..
/patches
/intel
/e1000e
/e1000e_4.15
-new-timer.patch
129 ${IGBDIR}.prepared
: ${IGBSRC}
130 rm -rf
${BUILD_DIR}/${MODULES}/${IGBDIR} $@
131 mkdir
-p
${BUILD_DIR}/${MODULES}/${IGBDIR}
132 tar --strip-components
=1 -C
${BUILD_DIR}/${MODULES}/${IGBDIR} -xf
${IGBSRC}
133 cd
${BUILD_DIR}/${MODULES}/${IGBDIR}; patch
-p1
< ..
/..
/..
/patches
/intel
/igb
/igb_4.15_mtu.patch
136 $(SPLDIR
).prepared
: ${SPLSRC}
137 rm -rf
${BUILD_DIR}/${MODULES}/${SPLDIR} $@
138 mkdir
-p
${BUILD_DIR}/${MODULES}/${SPLDIR}
139 cp
-a
${SPLSRC}/* ${BUILD_DIR}/${MODULES}/${SPLDIR}
140 cd
${BUILD_DIR}/${MODULES}/${SPLDIR}; for patch in ..
/..
/..
/${SPLSRC}/..
/spl-patches
/*.patch
; do patch
-p1
< $${patch}; done
143 $(ZFSDIR
).prepared
: ${ZFSSRC}
144 rm -rf
${BUILD_DIR}/${MODULES}/${ZFSDIR} $@
145 mkdir
-p
${BUILD_DIR}/${MODULES}/${ZFSDIR}
146 cp
-a
${ZFSSRC}/* ${BUILD_DIR}/${MODULES}/${ZFSDIR}
147 cd
${BUILD_DIR}/${MODULES}/${ZFSDIR}; for patch in ..
/..
/..
/${ZFSSRC}/..
/zfs-patches
/*.patch
; do patch
-p1
< $${patch}; done
148 # temporarily since patch does not know about permissions, remove after 0.7.7 was merged properly
149 chmod
+x
${BUILD_DIR}/${MODULES}/${ZFSDIR}/scripts
/enum-extract.pl
154 tar cf
- ${DEBS}|ssh repoman@repo.proxmox.com
-- upload
--product pve
,pmg
--dist stretch
--arch
${ARCH}
158 git submodule deinit
--all
160 # upgrade to current master
161 .PHONY
: update_modules
162 update_modules
: submodule
163 git submodule
foreach 'git pull --ff-only origin master'
164 cd
${ZFSSRC}; git pull
--ff-only
origin master
165 cd
${SPLSRC}; git pull
--ff-only
origin master
167 # make sure submodules were initialized
170 test -f
"${KERNEL_SRC_SUBMODULE}/README" || git submodule update
--init
${KERNEL_SRC_SUBMODULE}
171 test -f
"${ZFSONLINUX_SUBMODULE}/Makefile" || git submodule update
--init
${ZFSONLINUX_SUBMODULE}
172 (test -f
"${ZFSSRC}/debian/changelog" && test -f
"${SPLZRC}/debian/changelog") ||
(cd
${ZFSONLINUX_SUBMODULE}; git submodule update
--init
)
174 # call after ABI bump with header deb in working directory
176 abiupdate
: abi-prev-
${KVNAME}
177 abi-prev-
${KVNAME}: abi-tmp-
${KVNAME}
178 ifneq ($(strip $(shell git status
--untracked-files
=no
--porcelain
-z
)),)
179 @echo
"working directory unclean, aborting!"
185 git commit
-s
-m
"update ABI file for ${KVNAME}" -m
"(generated with debian/scripts/abi-generate)"
186 @echo
"update abi-prev-${KVNAME} committed!"
190 @
test -e
${HDR_DEB} ||
(echo
"need ${HDR_DEB} to extract ABI data!" && false
)
191 debian
/scripts
/abi-generate
${HDR_DEB} $@
${KVNAME} 1
195 rm -rf
*~ build
*.prepared
${KERNEL_CFG_ORG}
196 rm -f
*.deb
*.changes
*.buildinfo