From 198c9ba59dc5b41948a1c014b7fa5f8f57b0843a Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Sat, 27 May 2023 17:45:45 +0200 Subject: [PATCH] buildsys: use actual build-dir and improve reproducability Signed-off-by: Thomas Lamprecht --- Makefile | 48 ++++++++++++++++++++++++++++-------------------- debian/rules | 2 +- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/Makefile b/Makefile index 25937d5..4e811cf 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ include /usr/share/dpkg/default.mk -PACKAGE=libproxmox-backup-qemu0 +PACKAGE = libproxmox-backup-qemu0 +BUILDDIR = $(PACKAGE)-$(DEB_VERSION_UPSTREAM) ARCH:=$(DEB_HOST_ARCH) export GITVERSION:=$(shell git rev-parse HEAD) @@ -13,47 +14,54 @@ DEBS=$(MAIN_DEB) $(OTHER_DEBS) DESTDIR= +TARGETDIR := target/debug + ifeq ($(BUILD_MODE), release) CARGO_BUILD_ARGS += --release +TARGETDIR := target/release endif -all: -ifneq ($(BUILD_MODE), skip) +.PHONY: all build +# source target +all: build + +# source target +build: $(TARGETDIR)/libproxmox_backup_qemu.so +$(TARGETDIR)/libproxmox_backup_qemu.so: Cargo.toml src/ cargo build $(CARGO_BUILD_ARGS) - diff -up current-api.h proxmox-backup-qemu.h -endif - -# always re-create this dir -# but also copy the local target/ dir as a build-cache -.PHONY: build -build: - rm -rf build - cargo build --release - diff -I 'PROXMOX_BACKUP_QEMU_VERSION' -up current-api.h proxmox-backup-qemu.h - rsync -a debian submodules Makefile Cargo.toml Cargo.lock build.rs proxmox-backup-qemu.h src target current-api.h build/ +# source / packaging target .PHONY: install -install: target/release/libproxmox_backup_qemu.so - install -D -m 0755 target/release/libproxmox_backup_qemu.so $(DESTDIR)/usr/lib//libproxmox_backup_qemu.so.0 +install: $(TARGETDIR)/libproxmox_backup_qemu.so + install -D -m 0755 $(TARGETDIR)/libproxmox_backup_qemu.so $(DESTDIR)/usr/lib/libproxmox_backup_qemu.so.0 cd $(DESTDIR)/usr/lib/; ls *; ln -s libproxmox_backup_qemu.so.0 libproxmox_backup_qemu.so +.PHONY: test +test: current-api.h proxmox-backup-qemu.h + diff -I 'PROXMOX_BACKUP_QEMU_VERSION' -up current-api.h proxmox-backup-qemu.h + +# packaging target +$(BUILDDIR): submodule + rm -rf $@ $@.tmp && mkdir $@.tmp + cp -a submodules debian Makefile .cargo Cargo.toml build.rs src header-preamble.c current-api.h $@.tmp/ + mv $@.tmp $@ + submodule: [ -e submodules/proxmox-backup/Cargo.toml ] || git submodule update --init --recursive .PHONY: deb deb: $(OTHER_DEBS) $(OTHER_DEBS): $(MAIN_DEB) -$(MAIN_DEB): build +$(MAIN_DEB): $(BUILDDIR) cd build; dpkg-buildpackage -b -us -uc --no-pre-clean lintian $(DEBS) -proxmox-backup-qemu.h: build +proxmox-backup-qemu.h: $(TARGETDIR)/libproxmox_backup_qemu.so simpletest: simpletest.c proxmox-backup-qemu.h - gcc simpletest.c -o simpletest -lc -Wl,-rpath=./target/$(BUILD_MODE) -L ./target/$(BUILD_MODE) -l proxmox_backup_qemu + gcc simpletest.c -o simpletest -lc -Wl,-rpath=./$(TARGETDIR) -L ./$(TARGETDIR) -l proxmox_backup_qemu distclean: clean - clean: cargo clean rm -rf *.deb *.dsc *.tar.gz *.buildinfo *.changes Cargo.lock proxmox-backup-qemu.h build diff --git a/debian/rules b/debian/rules index 44aaeb4..88f9942 100755 --- a/debian/rules +++ b/debian/rules @@ -5,7 +5,7 @@ include /usr/share/dpkg/pkg-info.mk -export BUILD_MODE=skip +export BUILD_MODE=release %: dh $@