1 include /usr
/share
/dpkg
/default.mk
4 PACKAGE
:= proxmox-backup
5 ARCH
:= $(DEB_BUILD_ARCH
)
7 SUBDIRS
:= etc www docs
9 # Binaries usable by users
11 proxmox-backup-client \
12 proxmox-file-restore \
18 # Binaries usable by admins
20 proxmox-backup-manager \
21 proxmox-backup-debug \
23 # Binaries for services:
26 proxmox-backup-banner \
27 proxmox-backup-proxy \
30 # Single file restore daemon
32 proxmox-restore-daemon
46 proxmox-backup-banner \
47 proxmox-backup-client \
48 proxmox-backup-debug \
49 proxmox-file-restore \
50 proxmox-restore-daemon \
53 ifeq ($(BUILD_MODE
), release
)
54 CARGO_BUILD_ARGS
+= --release
55 COMPILEDIR
:= target
/release
57 COMPILEDIR
:= target
/debug
60 ifeq ($(valgrind
), yes
)
61 CARGO_BUILD_ARGS
+= --features valgrind
67 $(addprefix $(COMPILEDIR
)/,$(USR_BIN
) $(USR_SBIN
) $(SERVICE_BIN
) $(RESTORE_BIN
))
69 export DEB_VERSION DEB_VERSION_UPSTREAM
71 SERVER_DEB
=${PACKAGE}-server_
${DEB_VERSION}_
${ARCH}.deb
72 SERVER_DBG_DEB
=${PACKAGE}-server-dbgsym_
${DEB_VERSION}_
${ARCH}.deb
73 CLIENT_DEB
=${PACKAGE}-client_
${DEB_VERSION}_
${ARCH}.deb
74 CLIENT_DBG_DEB
=${PACKAGE}-client-dbgsym_
${DEB_VERSION}_
${ARCH}.deb
75 RESTORE_DEB
=proxmox-backup-file-restore_
${DEB_VERSION}_
${ARCH}.deb
76 RESTORE_DBG_DEB
=proxmox-backup-file-restore-dbgsym_
${DEB_VERSION}_
${ARCH}.deb
77 DOC_DEB
=${PACKAGE}-docs_
${DEB_VERSION}_all.deb
79 DEBS
=${SERVER_DEB} ${SERVER_DBG_DEB} ${CLIENT_DEB} ${CLIENT_DBG_DEB} \
80 ${RESTORE_DEB} ${RESTORE_DBG_DEB} ${DEBUG_DEB} ${DEBUG_DBG_DEB}
82 DSC
= rust-
${PACKAGE}_
${DEB_VERSION}.dsc
95 #cargo test test_broadcast_future
96 #cargo test $(CARGO_BUILD_ARGS)
97 $(CARGO
) test $(tests
) $(CARGO_BUILD_ARGS
)
100 $(CARGO
) doc
--workspace
--no-deps
$(CARGO_BUILD_ARGS
)
102 # always re-create this dir
105 @echo
"Setting pkg-buildcfg version to: $(DEB_VERSION_UPSTREAM)"
106 sed
-i
-e
's/^version =.*$$/version = "$(DEB_VERSION_UPSTREAM)"/' \
107 pbs-buildcfg
/Cargo.toml
113 docs etc examples tests www zsh-completions \
114 defines.mk Makefile \
116 rm -f build
/Cargo.lock
117 find build
/debian
-name
"*.hint" -delete
118 $(foreach i
,$(SUBDIRS
), \
119 $(MAKE
) -C build
/$(i
) clean ;)
122 .PHONY
: proxmox-backup-docs
123 $(DOC_DEB
) $(DEBS
): proxmox-backup-docs
124 proxmox-backup-docs
: build
125 cd build
; dpkg-buildpackage
-b
-us
-uc
--no-pre-clean
128 # copy the local target/ dir as a build-cache
132 cd build
; dpkg-buildpackage
-b
-us
-uc
--no-pre-clean
--build-profiles
=nodoc
137 cd build
; dpkg-buildpackage
-b
-us
-uc
--no-pre-clean
138 lintian
$(DEBS
) $(DOC_DEB
)
143 cd build
; dpkg-buildpackage
-S
-us
-uc
-d
-nc
146 .PHONY
: clean distclean deb
clean
149 $(foreach i
,$(SUBDIRS
), \
150 $(MAKE
) -C
$(i
) clean ;)
152 rm -f .do-cargo-build
153 find .
-name
'*~' -exec
rm {} ';'
155 # allows one to avoid running cargo clean when one just wants to tidy up after a packgae build
157 rm -rf
*.deb
*.dsc
*.
tar.gz
*.buildinfo
*.changes build
/
160 dinstall
: ${SERVER_DEB} ${SERVER_DBG_DEB} ${CLIENT_DEB} ${CLIENT_DBG_DEB} \
161 ${DEBUG_DEB} ${DEBUG_DBG_DEB}
164 # make sure we build binaries before docs
165 docs
: $(COMPILEDIR
)/dump-catalog-shell-cli
$(COMPILEDIR
)/docgen
169 rm -f .do-cargo-build
170 $(MAKE
) $(COMPILED_BINS
)
172 $(COMPILED_BINS
) $(COMPILEDIR
)/dump-catalog-shell-cli
$(COMPILEDIR
)/docgen
: .do-cargo-build
174 RUSTFLAGS
="--cfg openid" $(CARGO
) build
$(CARGO_BUILD_ARGS
) \
175 --bin proxmox-backup-api \
176 --bin proxmox-backup-proxy \
177 --bin proxmox-backup-manager \
179 $(CARGO
) build
$(CARGO_BUILD_ARGS
) \
180 --package proxmox-backup-banner \
181 --bin proxmox-backup-banner \
182 --package proxmox-backup-client \
183 --bin proxmox-backup-client \
184 --package proxmox-backup-debug \
185 --bin proxmox-backup-debug \
186 --package proxmox-file-restore \
187 --bin proxmox-file-restore \
193 --package proxmox-restore-daemon \
194 --bin proxmox-restore-daemon \
195 --package proxmox-backup \
196 --bin dump-catalog-shell-cli \
197 --bin proxmox-daily-update \
198 --bin proxmox-file-restore \
206 cargo clippy
-- -A clippy
::all -D clippy
::correctness
208 install: $(COMPILED_BINS
)
209 install -dm755
$(DESTDIR
)$(BINDIR
)
210 install -dm755
$(DESTDIR
)$(ZSH_COMPL_DEST
)
211 $(foreach i
,$(USR_BIN
), \
212 install -m755
$(COMPILEDIR
)/$(i
) $(DESTDIR
)$(BINDIR
)/ ; \
213 install -m644 zsh-completions
/_
$(i
) $(DESTDIR
)$(ZSH_COMPL_DEST
)/ ;)
214 install -dm755
$(DESTDIR
)$(SBINDIR
)
215 $(foreach i
,$(USR_SBIN
), \
216 install -m755
$(COMPILEDIR
)/$(i
) $(DESTDIR
)$(SBINDIR
)/ ; \
217 install -m644 zsh-completions
/_
$(i
) $(DESTDIR
)$(ZSH_COMPL_DEST
)/ ;)
218 install -dm755
$(DESTDIR
)$(LIBEXECDIR
)/proxmox-backup
219 install -dm755
$(DESTDIR
)$(LIBEXECDIR
)/proxmox-backup
/file-restore
220 $(foreach i
,$(RESTORE_BIN
), \
221 install -m755
$(COMPILEDIR
)/$(i
) $(DESTDIR
)$(LIBEXECDIR
)/proxmox-backup
/file-restore
/ ;)
222 # install sg-tape-cmd as setuid binary
223 install -m4755
-o root
-g root
$(COMPILEDIR
)/sg-tape-cmd
$(DESTDIR
)$(LIBEXECDIR
)/proxmox-backup
/sg-tape-cmd
224 $(foreach i
,$(SERVICE_BIN
), \
225 install -m755
$(COMPILEDIR
)/$(i
) $(DESTDIR
)$(LIBEXECDIR
)/proxmox-backup
/ ;)
226 $(MAKE
) -C www
install
227 $(MAKE
) -C docs
install
228 ifeq (,$(filter nocheck
,$(DEB_BUILD_OPTIONS
)))
229 $(MAKE
) test # HACK, only test now to avoid clobbering build files with wrong config
233 upload
: ${SERVER_DEB} ${CLIENT_DEB} ${RESTORE_DEB} ${DOC_DEB} ${DEBUG_DEB}
234 # check if working directory is clean
235 git diff
--exit-code
--stat
&& git diff
--exit-code
--stat
--staged
236 tar cf
- ${SERVER_DEB} ${SERVER_DBG_DEB} ${DOC_DEB} ${CLIENT_DEB} \
237 ${CLIENT_DBG_DEB} ${DEBUG_DEB} ${DEBUG_DBG_DEB} \
238 | ssh
-X repoman@repo.proxmox.com upload
--product pbs
--dist bullseye
239 tar cf
- ${CLIENT_DEB} ${CLIENT_DBG_DEB} | ssh
-X repoman@repo.proxmox.com upload
--product
"pve,pmg,pbs-client" --dist bullseye
240 tar cf
- ${RESTORE_DEB} ${RESTORE_DBG_DEB} | ssh
-X repoman@repo.proxmox.com upload
--product
"pve" --dist bullseye