-e1000e.ko e1000e: .compile_mark ${E1000ESRC}
- rm -rf ${E1000EDIR}
- tar xf ${E1000ESRC}
- [ ! -e /lib/modules/${KVNAME}/build ] || (echo "please remove /lib/modules/${KVNAME}/build" && false)
- cd ${E1000EDIR}; patch -p1 < ../intel-module-gcc6-compat.patch
- cd ${E1000EDIR}; patch -p1 < ../e1000e_4.10_compat.patch
- cd ${E1000EDIR}; patch -p1 < ../e1000e_4.10_max-mtu.patch
- cd ${E1000EDIR}/src; make BUILD_KERNEL=${KVNAME} KSRC=${TOP}/${KERNEL_SRC}
- cp ${E1000EDIR}/src/e1000e.ko e1000e.ko
-
-igb.ko igb: .compile_mark ${IGBSRC}
- rm -rf ${IGBDIR}
- tar xf ${IGBSRC}
- [ ! -e /lib/modules/${KVNAME}/build ] || (echo "please remove /lib/modules/${KVNAME}/build" && false)
- cd ${IGBDIR}; patch -p1 < ../intel-module-gcc6-compat.patch
- cd ${IGBDIR}; patch -p1 < ../igb_4.9_compat.patch
- cd ${IGBDIR}; patch -p1 < ../igb_4.10_compat.patch
- cd ${IGBDIR}; patch -p1 < ../igb_4.10_max-mtu.patch
- cd ${IGBDIR}/src; make BUILD_KERNEL=${KVNAME} KSRC=${TOP}/${KERNEL_SRC}
- cp ${IGBDIR}/src/igb.ko igb.ko
-
-ixgbe.ko ixgbe: .compile_mark ${IXGBESRC}
- rm -rf ${IXGBEDIR}
- tar xf ${IXGBESRC}
- [ ! -e /lib/modules/${KVNAME}/build ] || (echo "please remove /lib/modules/${KVNAME}/build" && false)
- cd ${IXGBEDIR}; patch -p1 < ../ixgbe_4.10_compat.patch
- cd ${IXGBEDIR}; patch -p1 < ../ixgbe_4.10_max-mtu.patch
- cd ${IXGBEDIR}/src; make CFLAGS_EXTRA="-DIXGBE_NO_LRO" BUILD_KERNEL=${KVNAME} KSRC=${TOP}/${KERNEL_SRC}
- cp ${IXGBEDIR}/src/ixgbe.ko ixgbe.ko
-
-$(SPL_KO_REST): $(SPL_KO)
-$(SPL_KO): .compile_mark ${SPLSRC}
- rm -rf ${SPLDIR}
- tar xf ${SPLSRC}
- [ ! -e /lib/modules/${KVNAME}/build ] || (echo "please remove /lib/modules/${KVNAME}/build" && false)
- cd ${SPLDIR}; ./autogen.sh
- cd ${SPLDIR}; ./configure --with-config=kernel --with-linux=${TOP}/${KERNEL_SRC} --with-linux-obj=${TOP}/${KERNEL_SRC}
- cd ${SPLDIR}; make
- cp ${SPLDIR}/module/spl/spl.ko spl.ko
- cp ${SPLDIR}/module/splat/splat.ko splat.ko
-
-$(ZFS_KO_REST): $(ZFS_KO)
-$(ZFS_KO): .compile_mark ${ZFSSRC}
- rm -rf ${ZFSDIR}
- tar xf ${ZFSSRC}
- [ ! -e /lib/modules/${KVNAME}/build ] || (echo "please remove /lib/modules/${KVNAME}/build" && false)
- cd ${ZFSDIR}; ./autogen.sh
- cd ${ZFSDIR}; ./configure --with-spl=${TOP}/${SPLDIR} --with-spl-obj=${TOP}/${SPLDIR} --with-config=kernel --with-linux=${TOP}/${KERNEL_SRC} --with-linux-obj=${TOP}/${KERNEL_SRC}
- cd ${ZFSDIR}; make
- cp ${ZFSDIR}/module/zfs/zfs.ko zfs.ko
- cp ${ZFSDIR}/module/avl/zavl.ko zavl.ko
- cp ${ZFSDIR}/module/nvpair/znvpair.ko znvpair.ko
- cp ${ZFSDIR}/module/unicode/zunicode.ko zunicode.ko
- cp ${ZFSDIR}/module/zcommon/zcommon.ko zcommon.ko
- cp ${ZFSDIR}/module/zpios/zpios.ko zpios.ko
-
-headers_tmp := $(CURDIR)/tmp-headers
-headers_dir := $(headers_tmp)/usr/src/linux-headers-${KVNAME}
-
-hdr: $(HDR_DEB)
-${HDR_DEB}: .compile_mark headers-control.in headers-postinst.in
- rm -rf $(headers_tmp)
- install -d $(headers_tmp)/DEBIAN $(headers_dir)/include/
- sed -e 's/@KERNEL_VER@/${KERNEL_VER}/' -e 's/@KVNAME@/${KVNAME}/' -e 's/@PKGREL@/${PKGREL}/' -e 's/@ARCH@/${ARCH}/' <headers-control.in >$(headers_tmp)/DEBIAN/control
- sed -e 's/@@KVNAME@@/${KVNAME}/g' <headers-postinst.in >$(headers_tmp)/DEBIAN/postinst
- chmod 0755 $(headers_tmp)/DEBIAN/postinst
- install -D -m 644 copyright $(headers_tmp)/usr/share/doc/${HDRPACKAGE}/copyright
- install -D -m 644 changelog.Debian $(headers_tmp)/usr/share/doc/${HDRPACKAGE}/changelog.Debian
- echo "git clone git://git.proxmox.com/git/pve-kernel.git\\ngit checkout ${GITVERSION}" > $(headers_tmp)/usr/share/doc/${HDRPACKAGE}/SOURCE
- gzip -n -f --best $(headers_tmp)/usr/share/doc/${HDRPACKAGE}/changelog.Debian
- install -m 0644 ${KERNEL_SRC}/.config $(headers_dir)
- install -m 0644 ${KERNEL_SRC}/Module.symvers $(headers_dir)
- cd ${KERNEL_SRC}; find . -path './debian/*' -prune -o -path './include/*' -prune -o -path './Documentation' -prune \
- -o -path './scripts' -prune -o -type f \
- \( -name 'Makefile*' -o -name 'Kconfig*' -o -name 'Kbuild*' -o \
- -name '*.sh' -o -name '*.pl' \) \
- -print | cpio -pd --preserve-modification-time $(headers_dir)
- cd ${KERNEL_SRC}; cp -a include scripts $(headers_dir)
- cd ${KERNEL_SRC}; (find arch/${KERNEL_ARCH} -name include -type d -print | \
- xargs -n1 -i: find : -type f) | \
- cpio -pd --preserve-modification-time $(headers_dir)
- mkdir -p ${headers_tmp}/lib/modules/${KVNAME}
- ln -sf /usr/src/linux-headers-${KVNAME} ${headers_tmp}/lib/modules/${KVNAME}/build
- dpkg-deb --build $(headers_tmp) ${HDR_DEB}
- #lintian ${HDR_DEB}
+${KERNEL_SRC}.prepared: ${KERNEL_SRC_SUBMODULE} | submodule
+ rm -rf ${BUILD_DIR}/${KERNEL_SRC} $@
+ mkdir -p ${BUILD_DIR}
+ cp -a ${KERNEL_SRC_SUBMODULE} ${BUILD_DIR}/${KERNEL_SRC}
+# TODO: split for archs, track and diff in our repository?
+ 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}
+ cp ${KERNEL_CFG_ORG} ${BUILD_DIR}/${KERNEL_SRC}/.config
+ sed -i ${BUILD_DIR}/${KERNEL_SRC}/Makefile -e 's/^EXTRAVERSION.*$$/EXTRAVERSION=${EXTRAVERSION}/'
+ rm -rf ${BUILD_DIR}/${KERNEL_SRC}/debian ${BUILD_DIR}/${KERNEL_SRC}/debian.master
+ cd ${BUILD_DIR}/${KERNEL_SRC}; for patch in ../../patches/kernel/*.patch; do patch -p1 < $${patch}; done
+ touch $@
+
+${MODULES}.prepared: $(addsuffix .prepared,${MODULE_DIRS})
+ touch $@
+
+${E1000EDIR}.prepared: ${E1000ESRC}
+ rm -rf ${BUILD_DIR}/${MODULES}/${E1000EDIR} $@
+ mkdir -p ${BUILD_DIR}/${MODULES}/${E1000EDIR}
+ tar --strip-components=1 -C ${BUILD_DIR}/${MODULES}/${E1000EDIR} -xf ${E1000ESRC}
+ cd ${BUILD_DIR}/${MODULES}/${E1000EDIR}; patch -p1 < ../../../patches/intel/intel-module-gcc6-compat.patch
+ cd ${BUILD_DIR}/${MODULES}/${E1000EDIR}; patch -p1 < ../../../patches/intel/e1000e/e1000e_4.10_max-mtu.patch
+ touch $@
+
+${IGBDIR}.prepared: ${IGBSRC}
+ rm -rf ${BUILD_DIR}/${MODULES}/${IGBDIR} $@
+ mkdir -p ${BUILD_DIR}/${MODULES}/${IGBDIR}
+ tar --strip-components=1 -C ${BUILD_DIR}/${MODULES}/${IGBDIR} -xf ${IGBSRC}
+ cd ${BUILD_DIR}/${MODULES}/${IGBDIR}; patch -p1 < ../../../patches/intel/igb/igb_4.10_max-mtu.patch
+ cd ${BUILD_DIR}/${MODULES}/${IGBDIR}; patch -p1 < ../../../patches/intel/igb/igb_4.12_compat.patch
+ touch $@
+
+${IXGBEDIR}.prepared: ${IXGBESRC}
+ rm -rf ${BUILD_DIR}/${MODULES}/${IXGBEDIR} $@
+ mkdir -p ${BUILD_DIR}/${MODULES}/${IXGBEDIR}
+ tar --strip-components=1 -C ${BUILD_DIR}/${MODULES}/${IXGBEDIR} -xf ${IXGBESRC}
+ touch $@
+
+$(SPLDIR).prepared: ${SPLSRC}
+ rm -rf ${BUILD_DIR}/${MODULES}/${SPLDIR} $@
+ mkdir -p ${BUILD_DIR}/${MODULES}/${SPLDIR}
+ cp -a ${SPLSRC}/* ${BUILD_DIR}/${MODULES}/${SPLDIR}
+ cd ${BUILD_DIR}/${MODULES}/${SPLDIR}; for patch in ../../../${SPLSRC}/../spl-patches/*.patch; do patch -p1 < $${patch}; done
+ touch $@
+
+$(ZFSDIR).prepared: ${ZFSSRC}
+ rm -rf ${BUILD_DIR}/${MODULES}/${ZFSDIR} $@
+ mkdir -p ${BUILD_DIR}/${MODULES}/${ZFSDIR}
+ cp -a ${ZFSSRC}/* ${BUILD_DIR}/${MODULES}/${ZFSDIR}
+ cd ${BUILD_DIR}/${MODULES}/${ZFSDIR}; for patch in ../../../${ZFSSRC}/../zfs-patches/*.patch; do patch -p1 < $${patch}; done
+ # temporarily since patch does not know about permissions, remove after 0.7.7 was merged properly
+ chmod +x ${BUILD_DIR}/${MODULES}/${ZFSDIR}/scripts/enum-extract.pl
+ touch $@