buildsys: use actual build-dir and improve reproducability

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2023-05-27 17:45:45 +02:00
parent afe4512f30
commit 198c9ba59d
2 changed files with 29 additions and 21 deletions

View File

@ -1,6 +1,7 @@
include /usr/share/dpkg/default.mk
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

2
debian/rules vendored
View File

@ -5,7 +5,7 @@
include /usr/share/dpkg/pkg-info.mk
export BUILD_MODE=skip
export BUILD_MODE=release
%:
dh $@