3 # also update proxmox-ve/changelog if you change KERNEL_VER or KREL
6 # also include firmware of previous version into
7 # the fw package: fwlist-2.6.32-PREV-pve
10 export EXTRAVERSION
=-${KREL}-pve
11 KVNAME
=${KERNEL_VER}${EXTRAVERSION}
12 PACKAGE
=pve-kernel-
${KVNAME}
13 HDRPACKAGE
=pve-headers-
${KVNAME}
15 ARCH
=$(shell dpkg-architecture
-qDEB_BUILD_ARCH
)
17 # amd64/x86_64/x86 share the arch subdirectory in the kernel, 'x86' so we need
20 ifneq (${ARCH}, amd64
)
24 GITVERSION
:=$(shell git rev-parse HEAD
)
35 # TODO: maybe move exported paths to a sourced file in ${BUILD_DIR}?
36 export BUILD_DIR
=${TOP}/build
38 export KERNEL_SRC
=ubuntu-artful
39 KERNEL_SRC_SUBMODULE
=submodules
/ubuntu-artful
40 KERNEL_CFG_ORG
=config-
${KERNEL_VER}.org
43 export E1000EDIR
=e1000e-3
.3.6
44 E1000ESRC
=${E1000EDIR}.
tar.gz
46 export IGBDIR
=igb-5.3
.5.10
47 IGBSRC
=${IGBDIR}.
tar.gz
49 export IXGBEDIR
=ixgbe-5.3
.3
50 IXGBESRC
=${IXGBEDIR}.
tar.gz
52 ZFSONLINUX_SUBMODULE
=submodules
/zfsonlinux
54 SPLSRC
=${ZFSONLINUX_SUBMODULE}/spl-debian
56 ZFSSRC
=${ZFSONLINUX_SUBMODULE}/zfs-debian
58 export MODULES
=modules
59 MODULE_DIRS
=${E1000EDIR} ${IGBDIR} ${IXGBEDIR} ${SPLDIR} ${ZFSDIR}
61 DST_DEB
=${PACKAGE}_
${KERNEL_VER}-${PKGREL}_
${ARCH}.deb
62 HDR_DEB
=${HDRPACKAGE}_
${KERNEL_VER}-${PKGREL}_
${ARCH}.deb
63 LINUX_TOOLS_DEB
=linux-tools-4.13_
${KERNEL_VER}-${PKGREL}_
${ARCH}.deb
65 DEBS
=${DST_DEB} ${HDR_DEB} ${LINUX_TOOLS_DEB}
71 $(GCC
) --version|grep
"6\.3" || false
72 @
$(GCC
) -Werror
-mindirect-branch
=thunk-extern
-mindirect-branch-register
-c
-x c
/dev
/null
-o check_gcc.o \
73 ||
( rm -f check_gcc.o
; \
74 echo
"Please install gcc-6 packages with indirect thunk / RETPOLINE support"; \
78 ${LINUX_TOOLS_DEB} ${HDR_DEB}: ${DST_DEB}
79 ${DST_DEB}: ${BUILD_DIR}.prepared
80 cd
${BUILD_DIR}; debian
/rules debian
/control
81 cd
${BUILD_DIR}; dpkg-buildpackage
--jobs
=auto
-b
-uc
-us
84 lintian
${LINUX_TOOLS_DEB}
86 ${BUILD_DIR}.prepared
: $(addsuffix .prepared
,${KERNEL_SRC} ${MODULES}) debian
87 rm -rf
${BUILD_DIR}/debian
88 cp
-a debian
${BUILD_DIR}/debian
89 cp
-a fwlist-previous
${BUILD_DIR}/
90 cp
-a abi-previous
${BUILD_DIR}/
91 cp
-a abi-blacklist
${BUILD_DIR}/
92 echo
"git clone git://git.proxmox.com/git/pve-kernel.git\\ngit checkout ${GITVERSION}" > ${BUILD_DIR}/debian
/SOURCE
95 ${KERNEL_SRC}.prepared
: ${KERNEL_SRC_SUBMODULE} | submodule
96 rm -rf
${BUILD_DIR}/${KERNEL_SRC} $@
98 mkdir
${BUILD_DIR}/${KERNEL_SRC}
99 cp
-a
${KERNEL_SRC_SUBMODULE}/* ${BUILD_DIR}/${KERNEL_SRC}/
100 # TODO: split for archs, track and diff in our repository?
101 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}
102 cp
${KERNEL_CFG_ORG} ${BUILD_DIR}/${KERNEL_SRC}/.config
103 sed
-i
${BUILD_DIR}/${KERNEL_SRC}/Makefile
-e
's/^EXTRAVERSION.*$$/EXTRAVERSION=${EXTRAVERSION}/'
104 rm -rf
${BUILD_DIR}/${KERNEL_SRC}/debian
${BUILD_DIR}/${KERNEL_SRC}/debian.master
105 cd
${BUILD_DIR}/${KERNEL_SRC}; for patch in ..
/..
/patches
/kernel
/*.patch
; do patch
-p1
< $${patch}; done
108 ${MODULES}.prepared
: $(addsuffix .prepared
,${MODULE_DIRS})
111 ${E1000EDIR}.prepared
: ${E1000ESRC}
112 rm -rf
${BUILD_DIR}/${MODULES}/${E1000EDIR} $@
113 mkdir
-p
${BUILD_DIR}/${MODULES}/${E1000EDIR}
114 tar --strip-components
=1 -C
${BUILD_DIR}/${MODULES}/${E1000EDIR} -xf
${E1000ESRC}
115 cd
${BUILD_DIR}/${MODULES}/${E1000EDIR}; patch
-p1
< ..
/..
/..
/patches
/intel
/intel-module-gcc6-compat.patch
116 cd
${BUILD_DIR}/${MODULES}/${E1000EDIR}; patch
-p1
< ..
/..
/..
/patches
/intel
/e1000e
/e1000e_4.10_max-mtu.patch
119 ${IGBDIR}.prepared
: ${IGBSRC}
120 rm -rf
${BUILD_DIR}/${MODULES}/${IGBDIR} $@
121 mkdir
-p
${BUILD_DIR}/${MODULES}/${IGBDIR}
122 tar --strip-components
=1 -C
${BUILD_DIR}/${MODULES}/${IGBDIR} -xf
${IGBSRC}
123 cd
${BUILD_DIR}/${MODULES}/${IGBDIR}; patch
-p1
< ..
/..
/..
/patches
/intel
/igb
/igb_4.10_max-mtu.patch
124 cd
${BUILD_DIR}/${MODULES}/${IGBDIR}; patch
-p1
< ..
/..
/..
/patches
/intel
/igb
/igb_4.12_compat.patch
127 ${IXGBEDIR}.prepared
: ${IXGBESRC}
128 rm -rf
${BUILD_DIR}/${MODULES}/${IXGBEDIR} $@
129 mkdir
-p
${BUILD_DIR}/${MODULES}/${IXGBEDIR}
130 tar --strip-components
=1 -C
${BUILD_DIR}/${MODULES}/${IXGBEDIR} -xf
${IXGBESRC}
133 $(SPLDIR
).prepared
: ${SPLSRC}
134 rm -rf
${BUILD_DIR}/${MODULES}/${SPLDIR} $@
135 mkdir
-p
${BUILD_DIR}/${MODULES}/${SPLDIR}
136 cp
-a
${SPLSRC}/* ${BUILD_DIR}/${MODULES}/${SPLDIR}
137 cd
${BUILD_DIR}/${MODULES}/${SPLDIR}; for patch in ..
/..
/..
/${SPLSRC}/..
/spl-patches
/*.patch
; do patch
-p1
< $${patch}; done
140 $(ZFSDIR
).prepared
: ${ZFSSRC}
141 rm -rf
${BUILD_DIR}/${MODULES}/${ZFSDIR} $@
142 mkdir
-p
${BUILD_DIR}/${MODULES}/${ZFSDIR}
143 cp
-a
${ZFSSRC}/* ${BUILD_DIR}/${MODULES}/${ZFSDIR}
144 cd
${BUILD_DIR}/${MODULES}/${ZFSDIR}; for patch in ..
/..
/..
/${ZFSSRC}/..
/zfs-patches
/*.patch
; do patch
-p1
< $${patch}; done
149 tar cf
- ${DEBS}|ssh repoman@repo.proxmox.com
-- upload
--product pve
--dist stretch
--arch
${ARCH}
153 git submodule deinit
--all
155 # upgrade to current master
156 .PHONY
: update_modules
157 update_modules
: submodule
158 git submodule
foreach 'git pull --ff-only origin master'
159 cd
${ZFSSRC}; git pull
--ff-only
origin master
160 cd
${SPLSRC}; git pull
--ff-only
origin master
162 # make sure submodules were initialized
165 test -f
"${KERNEL_SRC_SUBMODULE}/README" || git submodule update
--init
${KERNEL_SRC_SUBMODULE}
166 test -f
"${ZFSONLINUX_SUBMODULE}/Makefile" || git submodule update
--init
${ZFSONLINUX_SUBMODULE}
167 (test -f
"${ZFSSRC}/debian/changelog" && test -f
"${SPLZRC}/debian/changelog") ||
(cd
${ZFSONLINUX_SUBMODULE}; git submodule update
--init
)
172 rm -rf
*~ build
*.prepared
${KERNEL_CFG_ORG}