-FW_VER=2.0
-FW_REL=5
-FW_DEB=pve-firmware_${FW_VER}-${FW_REL}_all.deb
+include /usr/share/dpkg/pkg-info.mk
-GITVERSION:=$(shell git rev-parse HEAD)
+PACKAGE = pve-firmware
-export SOURCE_DATE_EPOCH ?= $(shell dpkg-parsechangelog -STimestamp)
+BUILDDIR ?= $(PACKAGE)-$(DEB_VERSION_UPSTREAM)
+ORIG_SRC_TAR=$(PACKAGE)_$(DEB_VERSION_UPSTREAM).orig.tar.gz
-DEBS=${FW_DEB}
+DSC=$(PACKAGE)_$(DEB_VERSION_UPSTREAM_REVISION).dsc
+FW_DEB=$(PACKAGE)_$(DEB_VERSION)_all.deb
+DEBS=$(FW_DEB)
.PHONY: deb
-deb: ${DEBS}
-
-${FW_DEB}: fwdata
- cp -a debian fwdata
- echo "git clone git://git.proxmox.com/git/pve-firmware.git\\ngit checkout ${GITVERSION}" >fwdata/debian/SOURCE
- cd fwdata; dpkg-buildpackage -b -us -uc
-
-fwdata: linux-firmware.git/WHENCE dvb-firmware.git/README fwlist-4.4-and-older-pve fwlist-4.10.5-1-pve fwlist-4.13.1-1-pve
- rm -rf fwdata
- mkdir -p fwdata/lib/firmware
- ./assemble-firmware.pl fwlist-4.15.18-1-pve fwdata/lib/firmware
- # include any files from older/newer kernels here
- ./assemble-firmware.pl fwlist-4.15.3-1-pve fwdata/lib/firmware
- ./assemble-firmware.pl fwlist-4.13.1-1-pve fwdata/lib/firmware
- ./assemble-firmware.pl fwlist-4.4-and-older-pve fwdata/lib/firmware
- ./assemble-firmware.pl fwlist-4.10.5-1-pve fwdata/lib/firmware
- install -d fwdata/usr/share/doc/pve-firmware
- cp linux-firmware.git/WHENCE fwdata/usr/share/doc/pve-firmware/README
- install -d fwdata/usr/share/doc/pve-firmware/licenses
- cp linux-firmware.git/LICEN[CS]E* fwdata/usr/share/doc/pve-firmware/licenses
+deb: $(DEBS)
+
+$(FW_DEB): $(BUILDDIR)
+ cd $(BUILDDIR); dpkg-buildpackage -b -us -uc
+
+.PHONY: dsc
+dsc:
+ $(MAKE) clean
+ $(MAKE) $(DSC)
+ lintian $(DSC)
+
+$(DSC): $(ORIG_SRC_TAR) $(BUILDDIR)
+ cd $(BUILDDIR); dpkg-buildpackage -S -us -uc -d
+
+sbuild: $(DSC)
+ sbuild $(DSC)
+
+# NOTE: when collapsing FW lists keep major.minor still separated, so we can sunset the older ones
+# without user impact safely. The last oldstable list needs to be kept avoid breakage on upgrade
+.PHONY: fw.list
+fw.list: fwlist-5.15.x.y-pve
+fw.list: fwlist-iwlwifi-extra
+fw.list: fwlist-6.2.2-1-pve
+fw.list: fwlist-6.2.6-1-pve
+ rm -f $@.tmp $@
+ sort -u $^ > $@.tmp
+ mv $@.tmp $@
+
+$(ORIG_SRC_TAR): $(BUILDDIR)
+ tar czf $(ORIG_SRC_TAR) --exclude="$(BUILDDIR)/debian" $(BUILDDIR)
+
+$(BUILDDIR): linux-firmware.git/WHENCE dvb-firmware.git/README fw.list
+ rm -rf $@ $@.tmp
+ mkdir -p $@.tmp/lib/firmware
+ cp -a debian $@.tmp
+ echo "git clone git://git.proxmox.com/git/pve-firmware.git\\ngit checkout $$(git rev-parse HEAD)" >$@.tmp/debian/SOURCE
+ cd linux-firmware.git; ./copy-firmware.sh -v ../$@.tmp/lib/firmware/
+ ./assemble-firmware.pl fw.list $@.tmp/lib/firmware
+ find $@.tmp/lib/firmware -empty -type d -delete
+ install -d $@.tmp/usr/share/doc/pve-firmware
+ cp linux-firmware.git/WHENCE $@.tmp/usr/share/doc/pve-firmware/README
+ install -d $@.tmp/usr/share/doc/pve-firmware/licenses
+ cp linux-firmware.git/LICEN[CS]E* $@.tmp/usr/share/doc/pve-firmware/licenses
+ # we only compress big ones that almost definitively ain't required in the initrd
+ # or are so big and unbuyable (netronome...)
+ cd $@.tmp/lib/firmware; find . -type f \( -name 'i[wb][lt]*' -o -path '*/netronome/*' \) -print0 | xargs -0 -n1 -P0 -- xz -C crc32
+ cd $@.tmp/lib/firmware; find . -xtype l -print0 | xargs -0 -n1 -P0 -- sh -c 'ln -sf "$$(readlink "$$0").xz" "$$0"; mv "$$0" "$$0.xz"'
+ mv $@.tmp $@
# upgrade to current master
.PHONY: update_modules
test -f "linux-firmware.git/WHENCE" || git submodule update --init
.PHONY: upload
-upload: ${DEBS}
- tar cf - ${DEBS} | ssh repoman@repo.proxmox.com -- upload --product pve,pmg --dist stretch
+upload: UPLOAD_DIST ?= $(DEB_DISTRIBUTION)
+upload: $(DEBS)
+ tar cf - $(DEBS) | ssh repoman@repo.proxmox.com -- upload --product pve,pmg,pbs --dist $(UPLOAD_DIST)
.PHONY: clean
clean:
- rm -rf fwdata *.deb *.buildinfo *.dsc *.changes
+ rm -rf $(PACKAGE)-[0-9]*/
+ rm -f $(PACKAGE)*.tar* *.deb *.dsc *.changes *.dsc *.buildinfo *.build