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 \
16 # Binaries usable by admins
18 proxmox-backup-manager
20 # Binaries for services:
23 proxmox-backup-banner \
24 proxmox-backup-proxy \
27 ifeq ($(BUILD_MODE
), release
)
28 CARGO_BUILD_ARGS
+= --release
29 COMPILEDIR
:= target
/release
31 COMPILEDIR
:= target
/debug
34 ifeq ($(valgrind
), yes
)
35 CARGO_BUILD_ARGS
+= --features valgrind
41 $(addprefix $(COMPILEDIR
)/,$(USR_BIN
) $(USR_SBIN
) $(SERVICE_BIN
))
43 export DEB_VERSION DEB_VERSION_UPSTREAM
45 SERVER_DEB
=${PACKAGE}-server_
${DEB_VERSION}_
${ARCH}.deb
46 SERVER_DBG_DEB
=${PACKAGE}-server-dbgsym_
${DEB_VERSION}_
${ARCH}.deb
47 CLIENT_DEB
=${PACKAGE}-client_
${DEB_VERSION}_
${ARCH}.deb
48 CLIENT_DBG_DEB
=${PACKAGE}-client-dbgsym_
${DEB_VERSION}_
${ARCH}.deb
49 DOC_DEB
=${PACKAGE}-docs_
${DEB_VERSION}_all.deb
51 DEBS
=${SERVER_DEB} ${SERVER_DBG_DEB} ${CLIENT_DEB} ${CLIENT_DBG_DEB}
53 DSC
= rust-
${PACKAGE}_
${DEB_VERSION}.dsc
57 all: cargo-build
$(SUBDIRS
)
64 #cargo test test_broadcast_future
65 #cargo test $(CARGO_BUILD_ARGS)
66 $(CARGO
) test $(tests
) $(CARGO_BUILD_ARGS
)
69 $(CARGO
) doc
--no-deps
$(CARGO_BUILD_ARGS
)
71 # always re-create this dir
76 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/-.*//')
77 sed
-e
'1,/^$$/ ! d' build
/debian
/control
> build
/debian
/control.src
78 cat build
/debian
/control.src build
/debian
/control.in
> build
/debian
/control
79 rm build
/debian
/control.in build
/debian
/control.src
80 cp build
/debian
/control debian
/control
82 find build
/debian
-name
"*.hint" -delete
83 $(foreach i
,$(SUBDIRS
), \
84 $(MAKE
) -C build
/$(i
) clean ;)
87 .PHONY
: proxmox-backup-docs
88 $(DOC_DEB
) $(DEBS
): proxmox-backup-docs
89 proxmox-backup-docs
: build
90 cd build
; dpkg-buildpackage
-b
-us
-uc
--no-pre-clean
93 # copy the local target/ dir as a build-cache
97 cd build
; dpkg-buildpackage
-b
-us
-uc
--no-pre-clean
--build-profiles
=nodoc
101 deb-all
: $(DOC_DEB
) $(DEBS
)
106 cd build
; dpkg-buildpackage
-S
-us
-uc
-d
-nc
112 $(foreach i
,$(SUBDIRS
), \
113 $(MAKE
) -C
$(i
) clean ;)
115 rm -rf
*.deb
*.dsc
*.
tar.gz
*.buildinfo
*.changes build
116 find .
-name
'*~' -exec
rm {} ';'
122 # make sure we build binaries before docs
127 $(CARGO
) build
$(CARGO_BUILD_ARGS
)
129 $(COMPILED_BINS
): cargo-build
133 cargo clippy
-- -A clippy
::all -D clippy
::correctness
135 install: $(COMPILED_BINS
)
136 install -dm755
$(DESTDIR
)$(BINDIR
)
137 install -dm755
$(DESTDIR
)$(ZSH_COMPL_DEST
)
138 $(foreach i
,$(USR_BIN
), \
139 install -m755
$(COMPILEDIR
)/$(i
) $(DESTDIR
)$(BINDIR
)/ ; \
140 install -m644 zsh-completions
/_
$(i
) $(DESTDIR
)$(ZSH_COMPL_DEST
)/ ;)
141 install -dm755
$(DESTDIR
)$(SBINDIR
)
142 $(foreach i
,$(USR_SBIN
), \
143 install -m755
$(COMPILEDIR
)/$(i
) $(DESTDIR
)$(SBINDIR
)/ ; \
144 install -m644 zsh-completions
/_
$(i
) $(DESTDIR
)$(ZSH_COMPL_DEST
)/ ;)
145 install -dm755
$(DESTDIR
)$(LIBEXECDIR
)/proxmox-backup
146 # install sg-tape-cmd as setuid binary
147 install -m4755
-o root
-g root
$(COMPILEDIR
)/sg-tape-cmd
$(DESTDIR
)$(LIBEXECDIR
)/proxmox-backup
/sg-tape-cmd
148 $(foreach i
,$(SERVICE_BIN
), \
149 install -m755
$(COMPILEDIR
)/$(i
) $(DESTDIR
)$(LIBEXECDIR
)/proxmox-backup
/ ;)
150 $(MAKE
) -C www
install
151 $(MAKE
) -C docs
install
154 upload
: ${SERVER_DEB} ${CLIENT_DEB} ${DOC_DEB}
155 # check if working directory is clean
156 git diff
--exit-code
--stat
&& git diff
--exit-code
--stat
--staged
157 tar cf
- ${SERVER_DEB} ${SERVER_DBG_DEB} ${DOC_DEB} | ssh
-X repoman@repo.proxmox.com upload
--product pbs
--dist buster
158 tar cf
- ${CLIENT_DEB} ${CLIENT_DBG_DEB} | ssh
-X repoman@repo.proxmox.com upload
--product
"pbs,pve,pmg" --dist buster