]> git.proxmox.com Git - proxmox-backup.git/blob - Makefile
tape restore: do not verify restored files
[proxmox-backup.git] / Makefile
1 include /usr/share/dpkg/default.mk
2 include defines.mk
3
4 PACKAGE := proxmox-backup
5 ARCH := $(DEB_BUILD_ARCH)
6
7 SUBDIRS := etc www docs
8
9 # Binaries usable by users
10 USR_BIN := \
11 proxmox-backup-client \
12 proxmox-file-restore \
13 pxar \
14 proxmox-tape \
15 pmtx \
16 pmt
17
18 # Binaries usable by admins
19 USR_SBIN := \
20 proxmox-backup-manager
21
22 # Binaries for services:
23 SERVICE_BIN := \
24 proxmox-backup-api \
25 proxmox-backup-banner \
26 proxmox-backup-proxy \
27 proxmox-daily-update
28
29 # Single file restore daemon
30 RESTORE_BIN := \
31 proxmox-restore-daemon
32
33 ifeq ($(BUILD_MODE), release)
34 CARGO_BUILD_ARGS += --release
35 COMPILEDIR := target/release
36 else
37 COMPILEDIR := target/debug
38 endif
39
40 ifeq ($(valgrind), yes)
41 CARGO_BUILD_ARGS += --features valgrind
42 endif
43
44 CARGO ?= cargo
45
46 COMPILED_BINS := \
47 $(addprefix $(COMPILEDIR)/,$(USR_BIN) $(USR_SBIN) $(SERVICE_BIN) $(RESTORE_BIN))
48
49 export DEB_VERSION DEB_VERSION_UPSTREAM
50
51 SERVER_DEB=${PACKAGE}-server_${DEB_VERSION}_${ARCH}.deb
52 SERVER_DBG_DEB=${PACKAGE}-server-dbgsym_${DEB_VERSION}_${ARCH}.deb
53 CLIENT_DEB=${PACKAGE}-client_${DEB_VERSION}_${ARCH}.deb
54 CLIENT_DBG_DEB=${PACKAGE}-client-dbgsym_${DEB_VERSION}_${ARCH}.deb
55 RESTORE_DEB=proxmox-backup-file-restore_${DEB_VERSION}_${ARCH}.deb
56 RESTORE_DBG_DEB=proxmox-backup-file-restore-dbgsym_${DEB_VERSION}_${ARCH}.deb
57 DOC_DEB=${PACKAGE}-docs_${DEB_VERSION}_all.deb
58
59 DEBS=${SERVER_DEB} ${SERVER_DBG_DEB} ${CLIENT_DEB} ${CLIENT_DBG_DEB} \
60 ${RESTORE_DEB} ${RESTORE_DBG_DEB}
61
62 DSC = rust-${PACKAGE}_${DEB_VERSION}.dsc
63
64 DESTDIR=
65
66 all: cargo-build $(SUBDIRS)
67
68 .PHONY: $(SUBDIRS)
69 $(SUBDIRS):
70 $(MAKE) -C $@
71
72 test:
73 #cargo test test_broadcast_future
74 #cargo test $(CARGO_BUILD_ARGS)
75 $(CARGO) test $(tests) $(CARGO_BUILD_ARGS)
76
77 doc:
78 $(CARGO) doc --no-deps $(CARGO_BUILD_ARGS)
79
80 # always re-create this dir
81 .PHONY: build
82 build:
83 rm -rf build
84 rm -f debian/control
85 debcargo package --config debian/debcargo.toml --changelog-ready --no-overlay-write-back --directory build proxmox-backup $(shell dpkg-parsechangelog -l debian/changelog -SVersion | sed -e 's/-.*//')
86 sed -e '1,/^$$/ ! d' build/debian/control > build/debian/control.src
87 cat build/debian/control.src build/debian/control.in > build/debian/control
88 rm build/debian/control.in build/debian/control.src
89 cp build/debian/control debian/control
90 rm build/Cargo.lock
91 find build/debian -name "*.hint" -delete
92 $(foreach i,$(SUBDIRS), \
93 $(MAKE) -C build/$(i) clean ;)
94
95
96 .PHONY: proxmox-backup-docs
97 $(DOC_DEB) $(DEBS): proxmox-backup-docs
98 proxmox-backup-docs: build
99 cd build; dpkg-buildpackage -b -us -uc --no-pre-clean
100 lintian $(DOC_DEB)
101
102 # copy the local target/ dir as a build-cache
103 .PHONY: deb
104 $(DEBS): deb
105 deb: build
106 cd build; dpkg-buildpackage -b -us -uc --no-pre-clean --build-profiles=nodoc
107 lintian $(DEBS)
108
109 .PHONY: deb-all
110 deb-all: $(DOC_DEB) $(DEBS)
111
112 .PHONY: dsc
113 dsc: $(DSC)
114 $(DSC): build
115 cd build; dpkg-buildpackage -S -us -uc -d -nc
116 lintian $(DSC)
117
118 distclean: clean
119
120 clean:
121 $(foreach i,$(SUBDIRS), \
122 $(MAKE) -C $(i) clean ;)
123 $(CARGO) clean
124 rm -rf *.deb *.dsc *.tar.gz *.buildinfo *.changes build
125 find . -name '*~' -exec rm {} ';'
126
127 .PHONY: dinstall
128 dinstall: ${SERVER_DEB} ${SERVER_DBG_DEB} ${CLIENT_DEB} ${CLIENT_DBG_DEB}
129 dpkg -i $^
130
131 # make sure we build binaries before docs
132 docs: cargo-build
133
134 .PHONY: cargo-build
135 cargo-build:
136 $(CARGO) build $(CARGO_BUILD_ARGS)
137
138 $(COMPILED_BINS): cargo-build
139
140 .PHONY: lint
141 lint:
142 cargo clippy -- -A clippy::all -D clippy::correctness
143
144 install: $(COMPILED_BINS)
145 install -dm755 $(DESTDIR)$(BINDIR)
146 install -dm755 $(DESTDIR)$(ZSH_COMPL_DEST)
147 $(foreach i,$(USR_BIN), \
148 install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(BINDIR)/ ; \
149 install -m644 zsh-completions/_$(i) $(DESTDIR)$(ZSH_COMPL_DEST)/ ;)
150 install -dm755 $(DESTDIR)$(SBINDIR)
151 $(foreach i,$(USR_SBIN), \
152 install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(SBINDIR)/ ; \
153 install -m644 zsh-completions/_$(i) $(DESTDIR)$(ZSH_COMPL_DEST)/ ;)
154 install -dm755 $(DESTDIR)$(LIBEXECDIR)/proxmox-backup
155 install -dm755 $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/file-restore
156 $(foreach i,$(RESTORE_BIN), \
157 install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/file-restore/ ;)
158 # install sg-tape-cmd as setuid binary
159 install -m4755 -o root -g root $(COMPILEDIR)/sg-tape-cmd $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/sg-tape-cmd
160 $(foreach i,$(SERVICE_BIN), \
161 install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/ ;)
162 $(MAKE) -C www install
163 $(MAKE) -C docs install
164
165 .PHONY: upload
166 upload: ${SERVER_DEB} ${CLIENT_DEB} ${RESTORE_DEB} ${DOC_DEB}
167 # check if working directory is clean
168 git diff --exit-code --stat && git diff --exit-code --stat --staged
169 tar cf - ${SERVER_DEB} ${SERVER_DBG_DEB} ${DOC_DEB} ${CLIENT_DEB} ${CLIENT_DBG_DEB} | \
170 ssh -X repoman@repo.proxmox.com upload --product pbs --dist buster
171 tar cf - ${CLIENT_DEB} ${CLIENT_DBG_DEB} | ssh -X repoman@repo.proxmox.com upload --product "pve,pmg,pbs-client" --dist buster
172 tar cf - ${RESTORE_DEB} ${RESTORE_DBG_DEB} | ssh -X repoman@repo.proxmox.com upload --product "pve" --dist buster