X-Git-Url: https://git.proxmox.com/?p=pve-kernel.git;a=blobdiff_plain;f=Makefile;h=287c4cd29179c9aed2322c457a87296a158eda0f;hp=94aa0b3f34e17b947e32e36119a8861ff205cbd9;hb=HEAD;hpb=6222eaab7a9c11fc35604aa4bf24fd6847386414 diff --git a/Makefile b/Makefile index 94aa0b3..99c765e 100644 --- a/Makefile +++ b/Makefile @@ -1,110 +1,134 @@ -# also bump pve-kernel-meta if either of MAJ.MIN, PATCHLEVEL or KREL change +include /usr/share/dpkg/pkg-info.mk + +# also bump proxmox-kernel-meta if the default MAJ.MIN version changes! KERNEL_MAJ=6 -KERNEL_MIN=2 -KERNEL_PATCHLEVEL=9 -# increment KREL if the ABI changes (abicheck target in debian/rules) +KERNEL_MIN=8 +KERNEL_PATCHLEVEL=4 +# increment KREL for every published package release! # rebuild packages with new KREL and run 'make abiupdate' -KREL=1 - -PKGREL=1 +KREL=3 KERNEL_MAJMIN=$(KERNEL_MAJ).$(KERNEL_MIN) KERNEL_VER=$(KERNEL_MAJMIN).$(KERNEL_PATCHLEVEL) -EXTRAVERSION=-${KREL}-pve -KVNAME=${KERNEL_VER}${EXTRAVERSION} -PACKAGE=pve-kernel-${KVNAME} -HDRPACKAGE=pve-headers-${KVNAME} +EXTRAVERSION=-$(KREL)-pve +KVNAME=$(KERNEL_VER)$(EXTRAVERSION) +PACKAGE=proxmox-kernel-$(KVNAME) +HDRPACKAGE=proxmox-headers-$(KVNAME) ARCH=$(shell dpkg-architecture -qDEB_BUILD_ARCH) # amd64/x86_64/x86 share the arch subdirectory in the kernel, 'x86' so we need # a mapping KERNEL_ARCH=x86 -ifneq (${ARCH}, amd64) -KERNEL_ARCH=${ARCH} +ifneq ($(ARCH), amd64) +KERNEL_ARCH=$(ARCH) endif -GITVERSION:=$(shell git rev-parse HEAD) - SKIPABI=0 -BUILD_DIR=build +BUILD_DIR=proxmox-kernel-$(KERNEL_VER) KERNEL_SRC=ubuntu-kernel KERNEL_SRC_SUBMODULE=submodules/$(KERNEL_SRC) -KERNEL_CFG_ORG=config-${KERNEL_VER}.org +KERNEL_CFG_ORG=config-$(KERNEL_VER).org ZFSONLINUX_SUBMODULE=submodules/zfsonlinux ZFSDIR=pkg-zfs MODULES=modules -MODULE_DIRS=${ZFSDIR} +MODULE_DIRS=$(ZFSDIR) # exported to debian/rules via debian/rules.d/dirs.mk DIRS=KERNEL_SRC ZFSDIR MODULES -DST_DEB=${PACKAGE}_${KERNEL_VER}-${PKGREL}_${ARCH}.deb -HDR_DEB=${HDRPACKAGE}_${KERNEL_VER}-${PKGREL}_${ARCH}.deb -USR_HDR_DEB=pve-kernel-libc-dev_${KERNEL_VER}-${PKGREL}_${ARCH}.deb -LINUX_TOOLS_DEB=linux-tools-$(KERNEL_MAJMIN)_${KERNEL_VER}-${PKGREL}_${ARCH}.deb -LINUX_TOOLS_DBG_DEB=linux-tools-$(KERNEL_MAJMIN)-dbgsym_${KERNEL_VER}-${PKGREL}_${ARCH}.deb +DSC=proxmox-kernel-$(KERNEL_MAJMIN)_$(KERNEL_VER)-$(KREL).dsc +DST_DEB=$(PACKAGE)_$(KERNEL_VER)-$(KREL)_$(ARCH).deb +SIGNED_TEMPLATE_DEB=$(PACKAGE)-signed-template_$(KERNEL_VER)-$(KREL)_$(ARCH).deb +META_DEB=proxmox-kernel-$(KERNEL_MAJMIN)_$(KERNEL_VER)-$(KREL)_all.deb +HDR_DEB=$(HDRPACKAGE)_$(KERNEL_VER)-$(KREL)_$(ARCH).deb +META_HDR_DEB=proxmox-headers-$(KERNEL_MAJMIN)_$(KERNEL_VER)-$(KREL)_all.deb +USR_HDR_DEB=proxmox-kernel-libc-dev_$(KERNEL_VER)-$(KREL)_$(ARCH).deb +LINUX_TOOLS_DEB=linux-tools-$(KERNEL_MAJMIN)_$(KERNEL_VER)-$(KREL)_$(ARCH).deb +LINUX_TOOLS_DBG_DEB=linux-tools-$(KERNEL_MAJMIN)-dbgsym_$(KERNEL_VER)-$(KREL)_$(ARCH).deb -DEBS=${DST_DEB} ${HDR_DEB} ${LINUX_TOOLS_DEB} ${LINUX_TOOLS_DBG_DEB} # ${USR_HDR_DEB} +DEBS=$(DST_DEB) $(META_DEB) $(HDR_DEB) $(META_HDR_DEB) $(LINUX_TOOLS_DEB) $(LINUX_TOOLS_DBG_DEB) $(SIGNED_TEMPLATE_DEB) # $(USR_HDR_DEB) all: deb -deb: ${DEBS} - -${LINUX_TOOLS_DEB} ${HDR_DEB}: ${DST_DEB} -${DST_DEB}: ${BUILD_DIR}.prepared - cd ${BUILD_DIR}; dpkg-buildpackage --jobs=auto -b -uc -us - lintian ${DST_DEB} - #lintian ${HDR_DEB} - lintian ${LINUX_TOOLS_DEB} - -${BUILD_DIR}.prepared: $(addsuffix .prepared,${KERNEL_SRC} ${MODULES} debian) - cp -a fwlist-previous ${BUILD_DIR}/ - cp -a abi-prev-* ${BUILD_DIR}/ - cp -a abi-blacklist ${BUILD_DIR}/ +deb: $(DEBS) + +$(META_DEB) $(META_HDR_DEB) $(LINUX_TOOLS_DEB) $(HDR_DEB): $(DST_DEB) +$(DST_DEB): $(BUILD_DIR).prepared + cd $(BUILD_DIR); dpkg-buildpackage --jobs=auto -b -uc -us + lintian $(DST_DEB) + #lintian $(HDR_DEB) + lintian $(LINUX_TOOLS_DEB) + +dsc: + $(MAKE) $(DSC) + lintian $(DSC) + +$(DSC): $(BUILD_DIR).prepared + cd $(BUILD_DIR); dpkg-buildpackage -S -uc -us -d + +sbuild: $(DSC) + sbuild $(DSC) + +$(BUILD_DIR).prepared: $(addsuffix .prepared,$(KERNEL_SRC) $(MODULES) debian) + cp -a fwlist-previous $(BUILD_DIR)/ + cp -a abi-prev-* $(BUILD_DIR)/ + cp -a abi-blacklist $(BUILD_DIR)/ touch $@ +.PHONY: build-dir-fresh +build-dir-fresh: + $(MAKE) clean + $(MAKE) $(BUILD_DIR).prepared + echo "created build-directory: $(BUILD_DIR).prepared/" + debian.prepared: debian - rm -rf ${BUILD_DIR}/debian - mkdir -p ${BUILD_DIR} - cp -a debian ${BUILD_DIR}/debian - echo "git clone git://git.proxmox.com/git/pve-kernel.git\\ngit checkout ${GITVERSION}" > ${BUILD_DIR}/debian/SOURCE - @$(foreach dir, ${DIRS},echo "${dir}=${${dir}}" >> ${BUILD_DIR}/debian/rules.d/env.mk;) - echo "KVNAME=${KVNAME}" >> ${BUILD_DIR}/debian/rules.d/env.mk - echo "KERNEL_MAJMIN=${KERNEL_MAJMIN}" >> ${BUILD_DIR}/debian/rules.d/env.mk - cd ${BUILD_DIR}; debian/rules debian/control + rm -rf $(BUILD_DIR)/debian + mkdir -p $(BUILD_DIR) + cp -a debian $(BUILD_DIR)/debian + echo "git clone git://git.proxmox.com/git/pve-kernel.git\\ngit checkout $(shell git rev-parse HEAD)" \ + >$(BUILD_DIR)/debian/SOURCE + @$(foreach dir, $(DIRS),echo "$(dir)=$($(dir))" >> $(BUILD_DIR)/debian/rules.d/env.mk;) + echo "KVNAME=$(KVNAME)" >> $(BUILD_DIR)/debian/rules.d/env.mk + echo "KERNEL_MAJMIN=$(KERNEL_MAJMIN)" >> $(BUILD_DIR)/debian/rules.d/env.mk + cd $(BUILD_DIR); debian/rules debian/control touch $@ -${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} +$(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? - cd ${BUILD_DIR}/${KERNEL_SRC}; python3 debian/scripts/misc/annotations --arch amd64 --export >../../${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 - set -e; cd ${BUILD_DIR}/${KERNEL_SRC}; for patch in ../../patches/kernel/*.patch; do echo "applying patch '$$patch'" && patch -p1 < $${patch}; done + cd $(BUILD_DIR)/$(KERNEL_SRC); python3 debian/scripts/misc/annotations --arch amd64 --export >../../$(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 + set -e; cd $(BUILD_DIR)/$(KERNEL_SRC); \ + for patch in ../../patches/kernel/*.patch; do \ + echo "applying patch '$$patch'"; \ + patch --batch -p1 < "$${patch}"; \ + done touch $@ -${MODULES}.prepared: $(addsuffix .prepared,${MODULE_DIRS}) +$(MODULES).prepared: $(addsuffix .prepared,$(MODULE_DIRS)) touch $@ -${ZFSDIR}.prepared: ${ZFSONLINUX_SUBMODULE} - rm -rf ${BUILD_DIR}/${MODULES}/${ZFSDIR} ${BUILD_DIR}/${MODULES}/tmp $@ - mkdir -p ${BUILD_DIR}/${MODULES}/tmp - cp -a ${ZFSONLINUX_SUBMODULE}/* ${BUILD_DIR}/${MODULES}/tmp - cd ${BUILD_DIR}/${MODULES}/tmp; make kernel - rm -rf ${BUILD_DIR}/${MODULES}/tmp - touch ${ZFSDIR}.prepared +$(ZFSDIR).prepared: $(ZFSONLINUX_SUBMODULE) + rm -rf $(BUILD_DIR)/$(MODULES)/$(ZFSDIR) $(BUILD_DIR)/$(MODULES)/tmp $@ + mkdir -p $(BUILD_DIR)/$(MODULES)/tmp + cp -a $(ZFSONLINUX_SUBMODULE)/* $(BUILD_DIR)/$(MODULES)/tmp + cd $(BUILD_DIR)/$(MODULES)/tmp; make kernel + rm -rf $(BUILD_DIR)/$(MODULES)/tmp + touch $(ZFSDIR).prepared .PHONY: upload -upload: ${DEBS} - tar cf - ${DEBS}|ssh -X repoman@repo.proxmox.com -- upload --product pve,pmg,pbs --dist bullseye --arch ${ARCH} +upload: UPLOAD_DIST ?= $(DEB_DISTRIBUTION) +upload: $(DEBS) + tar cf - $(DEBS)|ssh -X repoman@repo.proxmox.com -- upload --product pve,pmg,pbs --dist $(UPLOAD_DIST) --arch $(ARCH) .PHONY: distclean distclean: clean @@ -114,18 +138,18 @@ distclean: clean .PHONY: update_modules update_modules: submodule git submodule foreach 'git pull --ff-only origin master' - cd ${ZFSONLINUX_SUBMODULE}; git pull --ff-only origin master + cd $(ZFSONLINUX_SUBMODULE); git pull --ff-only origin master # make sure submodules were initialized .PHONY: submodule submodule: - test -f "${KERNEL_SRC_SUBMODULE}/README" || git submodule update --init ${KERNEL_SRC_SUBMODULE} - test -f "${ZFSONLINUX_SUBMODULE}/Makefile" || git submodule update --init --recursive ${ZFSONLINUX_SUBMODULE} + test -f "$(KERNEL_SRC_SUBMODULE)/README" || git submodule update --init $(KERNEL_SRC_SUBMODULE) + test -f "$(ZFSONLINUX_SUBMODULE)/Makefile" || git submodule update --init --recursive $(ZFSONLINUX_SUBMODULE) # call after ABI bump with header deb in working directory .PHONY: abiupdate -abiupdate: abi-prev-${KVNAME} -abi-prev-${KVNAME}: abi-tmp-${KVNAME} +abiupdate: abi-prev-$(KVNAME) +abi-prev-$(KVNAME): abi-tmp-$(KVNAME) ifneq ($(strip $(shell git status --untracked-files=no --porcelain -z)),) @echo "working directory unclean, aborting!" @false @@ -133,15 +157,15 @@ else git rm "abi-prev-*" mv $< $@ git add $@ - git commit -s -m "update ABI file for ${KVNAME}" -m "(generated with debian/scripts/abi-generate)" - @echo "update abi-prev-${KVNAME} committed!" + git commit -s -m "update ABI file for $(KVNAME)" -m "(generated with debian/scripts/abi-generate)" + @echo "update abi-prev-$(KVNAME) committed!" endif -abi-tmp-${KVNAME}: - @ test -e ${HDR_DEB} || (echo "need ${HDR_DEB} to extract ABI data!" && false) - debian/scripts/abi-generate ${HDR_DEB} $@ ${KVNAME} 1 +abi-tmp-$(KVNAME): + @ test -e $(HDR_DEB) || (echo "need $(HDR_DEB) to extract ABI data!" && false) + debian/scripts/abi-generate $(HDR_DEB) $@ $(KVNAME) 1 .PHONY: clean clean: - rm -rf *~ build *.prepared ${KERNEL_CFG_ORG} - rm -f *.deb *.changes *.buildinfo + rm -rf *~ proxmox-kernel-[0-9]*/ *.prepared $(KERNEL_CFG_ORG) + rm -f *.deb *.dsc *.changes *.buildinfo *.build proxmox-kernel*.tar.*