+include /usr/share/dpkg/default.mk
# source form https://github.com/zfsonlinux/
-ZFSPKG=debian
-ZFSVER != dpkg-parsechangelog -l ${ZFSPKG}/changelog -Sversion | cut -d- -f1
-ZFSPKGVER != dpkg-parsechangelog -l ${ZFSPKG}/changelog -Sversion
-ZFSDIR=zfs-linux_${ZFSVER}
-ZFSSRC=upstream
-
-ZFS_DEB1= libnvpair3linux_${ZFSPKGVER}_amd64.deb
-ZFS_DEB2= \
-libpam-zfs_${ZFSPKGVER}_amd64.deb \
-libuutil3linux_${ZFSPKGVER}_amd64.deb \
-libzfs4linux_${ZFSPKGVER}_amd64.deb \
-libzfsbootenv1linux_${ZFSPKGVER}_amd64.deb \
-libzfslinux-dev_${ZFSPKGVER}_amd64.deb \
-libzpool4linux_${ZFSPKGVER}_amd64.deb \
-zfs-dbg_${ZFSPKGVER}_amd64.deb \
-python3-pyzfs_${ZFSPKGVER}_amd64.deb \
-pyzfs-doc_${ZFSPKGVER}_all.deb \
-spl_${ZFSPKGVER}_all.deb \
-zfs-initramfs_${ZFSPKGVER}_all.deb \
-zfs-test_${ZFSPKGVER}_amd64.deb \
-zfsutils-linux_${ZFSPKGVER}_amd64.deb \
-zfs-zed_${ZFSPKGVER}_amd64.deb
-ZFS_DEBS= ${ZFS_DEB1} ${ZFS_DEB2}
-ZFS_DSC = zfs-linux_${ZFSPKGVER}.dsc
+PACKAGE = zfs-linux
+
+SRCDIR = upstream
+BUILDDIR ?= $(PACKAGE)-$(DEB_VERSION_UPSTREAM)
+ORIG_SRC_TAR = $(PACKAGE)_$(DEB_VERSION_UPSTREAM).orig.tar.gz
+
+ZFS_DEB1= libnvpair3linux_$(DEB_VERSION)_amd64.deb
+
+ZFS_DEB_BINARY = \
+libpam-zfs_$(DEB_VERSION)_amd64.deb \
+libuutil3linux_$(DEB_VERSION)_amd64.deb \
+libzfs4linux_$(DEB_VERSION)_amd64.deb \
+libzfsbootenv1linux_$(DEB_VERSION)_amd64.deb \
+libzpool5linux_$(DEB_VERSION)_amd64.deb \
+zfs-test_$(DEB_VERSION)_amd64.deb \
+zfsutils-linux_$(DEB_VERSION)_amd64.deb \
+zfs-zed_$(DEB_VERSION)_amd64.deb
+
+ZFS_DBG_DEBS = $(patsubst %_$(DEB_VERSION)_amd64.deb, %-dbgsym_$(DEB_VERSION)_amd64.deb, $(ZFS_DEB1) $(ZFS_DEB_BINARY))
+
+ZFS_DEB2= $(ZFS_DEB_BINARY) \
+libzfslinux-dev_$(DEB_VERSION)_amd64.deb \
+python3-pyzfs_$(DEB_VERSION)_amd64.deb \
+pyzfs-doc_$(DEB_VERSION)_all.deb \
+spl_$(DEB_VERSION)_all.deb \
+zfs-initramfs_$(DEB_VERSION)_all.deb
+DEBS= $(ZFS_DEB1) $(ZFS_DEB2) $(ZFS_DBG_DEBS)
+
+ZFS_DSC = zfs-linux_$(DEB_VERSION).dsc
all: deb
-.PHONY: deb
-deb: ${ZFS_DEBS}
-.PHONY: dsc
-dsc: ${ZFS_DSC}
+
+.PHONY: deb dsc
+deb: $(DEBS)
+
+dsc:
+ rm -rf *.dsc $(BUILDDIR)
+ $(MAKE) $(ZFS_DSC)
+ lintian $(ZFS_DSC)
# called from pve-kernel's Makefile to get patched sources
.PHONY: kernel
-kernel: dsc
- dpkg-source -x ${ZFS_DSC} ../pkg-zfs
- ${MAKE} -C ../pkg-zfs -f debian/rules adapt_meta_file
+kernel: $(ZFS_DSC)
+ dpkg-source -x $(ZFS_DSC) ../pkg-zfs
+ $(MAKE) -C ../pkg-zfs -f debian/rules adapt_meta_file
.PHONY: dinstall
-dinstall: ${DEBS}
- dpkg -i ${DEBS}
+dinstall: $(DEBS)
+ dpkg -i $(DEBS)
.PHONY: submodule
submodule:
- test -f "${ZFSSRC}/README.md" || git submodule update --init
-${ZFSSRC}/README.md: submodule
+ test -f "$(SRCDIR)/README.md" || git submodule update --init
+
+$(SRCDIR)/README.md: submodule
.PHONY: zfs
-zfs: ${ZFS_DEBS}
-${ZFS_DEB2}: ${ZFS_DEB1}
-${ZFS_DEB1}: ${ZFSDIR}
- cd ${ZFSDIR}; dpkg-buildpackage -b -uc -us
- lintian ${ZFS_DEBS}
+zfs: $(DEBS)
+$(ZFS_DEB2) $(ZFS_DBG_DEBS): $(ZFS_DEB1)
+$(ZFS_DEB1): $(BUILDDIR)
+ cd $(BUILDDIR); dpkg-buildpackage -b -uc -us
+ lintian $(DEBS)
+
+$(ORIG_SRC_TAR): $(BUILDDIR)
+ tar czf $(ORIG_SRC_TAR) --exclude="$(BUILDDIR)/debian" $(BUILDDIR)
-${ZFS_DSC}: ${ZFSDIR}
- tar czf zfs-linux_${ZFSVER}.orig.tar.gz ${ZFSDIR}
- cd ${ZFSDIR}; dpkg-buildpackage -S -uc -us -d
- lintian $@
+$(ZFS_DSC): $(BUILDDIR) $(ORIG_SRC_TAR)
+ cd $(BUILDDIR); dpkg-buildpackage -S -uc -us -d
-${ZFSDIR}: ${ZFSSRC}/README.md ${ZFSSRC} ${ZFSPKG}
- rm -rf ${ZFSDIR} ${ZFSDIR}.tmp
- cp -a ${ZFSSRC} ${ZFSDIR}.tmp
- cp -a ${ZFSPKG} ${ZFSDIR}.tmp/debian
- mv ${ZFSDIR}.tmp ${ZFSDIR}
+sbuild: $(ZFS_DSC)
+ sbuild $(ZFS_DSC)
+$(BUILDDIR): $(SRCDIR)/README.md $(SRCDIR) debian
+ rm -rf $@ $@.tmp
+ cp -a $(SRCDIR) $@.tmp
+ cp -a debian $@.tmp/debian
+ mv $@.tmp $@
.PHONY: clean
clean:
- rm -rf *~ *.deb *.changes *.buildinfo *.dsc *.orig.tar.* *.debian.tar.* ${ZFSDIR}
+ rm -rf $(PACKAGE)-[0-9]*/
+ rm -f *~ *.deb *.changes *.buildinfo *.build *.dsc *.orig.tar.* *.debian.tar.*
.PHONY: distclean
distclean: clean
.PHONY: upload
-upload: ${DEBS}
- tar -cf - ${DEBS} | ssh repoman@repo.proxmox.com -- upload --product pve,pmg --dist buster --arch amd64
+upload: UPLOAD_DIST ?= $(DEB_DISTRIBUTION)
+upload: $(DEBS)
+ tar -cf - $(DEBS) | ssh repoman@repo.proxmox.com -- upload --product pve,pmg,pbs --dist $(UPLOAD_DIST) --arch $(DEB_HOST_ARCH)