]> git.proxmox.com Git - proxmox-perl-rs.git/blob - pve-rs/Makefile
buildsys: fail when trying to install non-existent files
[proxmox-perl-rs.git] / pve-rs / Makefile
1 include /usr/share/dpkg/default.mk
2
3 PACKAGE=libpve-rs-perl
4 export PERLMOD_PRODUCT=PVE
5
6 ARCH:=$(shell dpkg-architecture -qDEB_BUILD_ARCH)
7 export GITVERSION:=$(shell git rev-parse HEAD)
8
9 PERL_INSTALLVENDORARCH != perl -MConfig -e 'print $$Config{installvendorarch};'
10 PERL_INSTALLVENDORLIB != perl -MConfig -e 'print $$Config{installvendorlib};'
11
12 MAIN_DEB=${PACKAGE}_${DEB_VERSION}_${ARCH}.deb
13 DBGSYM_DEB=${PACKAGE}-dbgsym_${DEB_VERSION}_${ARCH}.deb
14 DEBS=$(MAIN_DEB) $(DBGSYM_DEB)
15
16 DESTDIR=
17
18 PM_DIRS := \
19 Proxmox/Lib \
20 PVE/RS/APT
21
22 PM_FILES := \
23 Proxmox/Lib/PVE.pm \
24 PVE/RS/APT/Repositories.pm \
25 PVE/RS/CalendarEvent.pm \
26 PVE/RS/OpenId.pm \
27 PVE/RS/TFA.pm
28
29 ifeq ($(BUILD_MODE), release)
30 CARGO_BUILD_ARGS += --release
31 endif
32
33 all:
34 ifneq ($(BUILD_MODE), skip)
35 cargo build $(CARGO_BUILD_ARGS)
36 endif
37
38 # always re-create this dir
39 # but also copy the local target/ and PVE/ dirs as a build-cache
40 .PHONY: build
41 build:
42 rm -rf build
43 cargo build --release
44 rsync -a debian Makefile Cargo.toml Cargo.lock src target PVE build/
45
46 .PHONY: install
47 install: target/release/libpve_rs.so
48 install -d -m755 $(DESTDIR)$(PERL_INSTALLVENDORARCH)/auto
49 install -m644 target/release/libpve_rs.so $(DESTDIR)$(PERL_INSTALLVENDORARCH)/auto/libpve_rs.so
50 install -d -m755 $(DESTDIR)$(PERL_INSTALLVENDORLIB)/PVE/RS
51 set -e && for i in $(PM_DIRS); do \
52 install -d -m755 $(DESTDIR)$(PERL_INSTALLVENDORLIB)/$$i; \
53 done
54 set -e && for i in $(PM_FILES); do \
55 install -m644 $$i $(DESTDIR)$(PERL_INSTALLVENDORLIB)/$$i; \
56 done
57
58 .PHONY: deb
59 deb: $(MAIN_DEB)
60 $(MAIN_DEB): build
61 cd build; dpkg-buildpackage -b -us -uc --no-pre-clean
62 lintian $(DEBS)
63
64 distclean: clean
65
66 clean:
67 cargo clean
68 rm -rf *.deb *.dsc *.tar.gz *.buildinfo *.changes Cargo.lock build
69 find . -name '*~' -exec rm {} ';'
70
71 .PHONY: dinstall
72 dinstall: ${DEBS}
73 dpkg -i ${DEBS}
74
75 .PHONY: upload
76 upload: ${DEBS}
77 # check if working directory is clean
78 git diff --exit-code --stat && git diff --exit-code --stat --staged
79 tar cf - ${DEBS} | ssh -X repoman@repo.proxmox.com upload --product pve --dist bullseye