]> git.proxmox.com Git - proxmox-perl-rs.git/blob - pve-rs/Makefile
pve: build fix
[proxmox-perl-rs.git] / pve-rs / Makefile
1 include /usr/share/dpkg/pkg-info.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 DSC=$(PACKAGE)_$(DEB_VERSION_UPSTREAM_REVISION).dsc
16 BUILDDIR ?= $(PACKAGE)-$(DEB_VERSION_UPSTREAM)
17
18 DESTDIR=
19
20 PM_DIR := PVE
21
22 PERLMOD_GENPACKAGE := /usr/lib/perlmod/genpackage.pl \
23 --lib=pve_rs \
24 --lib-tag=proxmox \
25 --lib-package=Proxmox::Lib::PVE \
26 --lib-prefix=PVE
27
28 PERLMOD_PACKAGES := \
29 PVE::RS::APT::Repositories \
30 PVE::RS::OpenId \
31 PVE::RS::ResourceScheduling::Static \
32 PVE::RS::TFA
33
34 ifeq ($(BUILD_MODE), release)
35 CARGO_BUILD_ARGS += --release
36 TARGET_DIR=release
37 else
38 TARGET_DIR=debug
39 endif
40
41 all: PVE
42 cargo build $(CARGO_BUILD_ARGS)
43 mkdir -p test/Proxmox/Lib
44 sed -r -e \
45 's@^sub libdirs.*$$@sub libdirs { return ("./target/$(TARGET_DIR)", "./../target/$(TARGET_DIR)"); }@' \
46 Proxmox/Lib/PVE.pm >test/Proxmox/Lib/PVE.pm
47
48 Proxmox PVE: Proxmox/Lib/PVE.pm
49 Proxmox/Lib/PVE.pm: Fixup.pm
50 $(PERLMOD_GENPACKAGE) $(PERLMOD_PACKAGES)
51 sed -i -e '/package Proxmox/rFixup.pm' Proxmox/Lib/PVE.pm
52
53 check: all
54 $(MAKE) -C test test
55
56 .PHONY: install
57 install: target/release/libpve_rs.so Proxmox/Lib/PVE.pm PVE
58 install -d -m755 $(DESTDIR)$(PERL_INSTALLVENDORARCH)/auto
59 install -m644 target/release/libpve_rs.so $(DESTDIR)$(PERL_INSTALLVENDORARCH)/auto/libpve_rs.so
60 install -d -m755 $(DESTDIR)$(PERL_INSTALLVENDORLIB)
61 install -d -m755 $(DESTDIR)$(PERL_INSTALLVENDORLIB)/Proxmox/Lib
62 install -m644 Proxmox/Lib/PVE.pm $(DESTDIR)$(PERL_INSTALLVENDORLIB)/Proxmox/Lib/PVE.pm
63 find $(PM_DIR) \! -type d -print -exec install -Dm644 '{}' $(DESTDIR)$(PERL_INSTALLVENDORLIB)'/{}' ';'
64
65 clean:
66 rm -rf PVE Proxmox
67 cargo clean
68 rm -f *.deb *.dsc *.tar.* *.build *.buildinfo *.changes Cargo.lock
69 rm -rf $(PACKAGE)-[0-9]*/
70
71 .PHONY: dinstall
72 dinstall: $(DEBS)
73 dpkg -i $(DEBS)
74
75 .PHONY: upload
76 upload: UPLOAD_DIST ?= $(DEB_DISTRIBUTION)
77 upload: $(DEBS)
78 # check if working directory is clean
79 git diff --exit-code --stat && git diff --exit-code --stat --staged
80 tar cf - $(DEBS) | ssh -X repoman@repo.proxmox.com upload --product pve --dist $(DEB_DISTRIBUTION)
81
82 $(BUILDDIR): src debian test common/src Cargo.toml Makefile .cargo/config
83 rm -rf $(BUILDDIR) $(BUILDDIR).tmp
84 mkdir $(BUILDDIR).tmp
85 mkdir $(BUILDDIR).tmp/common
86 cp -a -t $(BUILDDIR).tmp src debian test Cargo.toml Makefile .cargo Fixup.pm
87 cp -a -t $(BUILDDIR).tmp/common common/src
88 mv $(BUILDDIR).tmp $(BUILDDIR)
89
90 .PHONY: deb
91 deb: $(DEBS)
92 $(DEBS): $(BUILDDIR)
93 cd $(BUILDDIR); PATH="/usr/local/bin:/usr/bin" dpkg-buildpackage -b -us -uc
94 lintian $(DEBS)
95
96 .PHONY: dsc
97 dsc: $(DSC)
98 $(DSC): $(BUILDDIR)
99 cd $(BUILDDIR); PATH="/usr/local/bin:/usr/bin" dpkg-buildpackage -S -us -uc -d
100 lintian $(DSC)
101
102 sbuild: $(DSC)
103 sbuild $(DSC)