]> git.proxmox.com Git - proxmox-backup.git/blame - Makefile
d/control: update build dependencies
[proxmox-backup.git] / Makefile
CommitLineData
da0e1e40 1include /usr/share/dpkg/default.mk
6285b251 2include defines.mk
de779814 3
e881b8a5 4PACKAGE := proxmox-backup
da0e1e40 5ARCH := $(DEB_BUILD_ARCH)
209bb433 6
bb5c7707 7SUBDIRS := etc www docs
13b77d10 8
6285b251
WB
9# Binaries usable by users
10USR_BIN := \
c9727044 11 proxmox-backup-client \
76425d84 12 proxmox-file-restore \
c9727044 13 pxar \
cc2c5c77 14 proxmox-tape \
4c209d6b
DM
15 pmtx \
16 pmt
6285b251
WB
17
18# Binaries usable by admins
b69b8af2
TL
19USR_SBIN := \
20 proxmox-backup-manager
6285b251
WB
21
22# Binaries for services:
23SERVICE_BIN := \
24 proxmox-backup-api \
b69b8af2 25 proxmox-backup-banner \
bc00289b 26 proxmox-backup-proxy \
b27c3282 27 proxmox-daily-update
6285b251 28
dd9cef56
SR
29# Single file restore daemon
30RESTORE_BIN := \
31 proxmox-restore-daemon
32
01fd2447 33SUBCRATES := \
86fb3877 34 pbs-api-types \
d420962f 35 pbs-buildcfg \
2b7f8dd5 36 pbs-client \
f323e906 37 pbs-datastore \
770a36e5 38 pbs-runtime \
067dc06d 39 pbs-systemd \
b9c5cd82 40 pbs-tools \
58a3fae7
WB
41 proxmox-backup-banner \
42 pxar-bin
01fd2447 43
13b77d10
WB
44ifeq ($(BUILD_MODE), release)
45CARGO_BUILD_ARGS += --release
6285b251 46COMPILEDIR := target/release
13b77d10
WB
47else
48COMPILEDIR := target/debug
49endif
50
6f0069ae
WB
51ifeq ($(valgrind), yes)
52CARGO_BUILD_ARGS += --features valgrind
53endif
54
da0e1e40
FG
55CARGO ?= cargo
56
6285b251 57COMPILED_BINS := \
dd9cef56 58 $(addprefix $(COMPILEDIR)/,$(USR_BIN) $(USR_SBIN) $(SERVICE_BIN) $(RESTORE_BIN))
6285b251 59
1f6a4f58
TL
60export DEB_VERSION DEB_VERSION_UPSTREAM
61
10426c17 62SERVER_DEB=${PACKAGE}-server_${DEB_VERSION}_${ARCH}.deb
3ec6e249 63SERVER_DBG_DEB=${PACKAGE}-server-dbgsym_${DEB_VERSION}_${ARCH}.deb
10426c17 64CLIENT_DEB=${PACKAGE}-client_${DEB_VERSION}_${ARCH}.deb
3ec6e249 65CLIENT_DBG_DEB=${PACKAGE}-client-dbgsym_${DEB_VERSION}_${ARCH}.deb
a5322f3c
TL
66RESTORE_DEB=proxmox-backup-file-restore_${DEB_VERSION}_${ARCH}.deb
67RESTORE_DBG_DEB=proxmox-backup-file-restore-dbgsym_${DEB_VERSION}_${ARCH}.deb
da0e1e40 68DOC_DEB=${PACKAGE}-docs_${DEB_VERSION}_all.deb
36d74cd6 69
76425d84
DC
70DEBS=${SERVER_DEB} ${SERVER_DBG_DEB} ${CLIENT_DEB} ${CLIENT_DBG_DEB} \
71 ${RESTORE_DEB} ${RESTORE_DBG_DEB}
10426c17 72
e881b8a5 73DSC = rust-${PACKAGE}_${DEB_VERSION}.dsc
209bb433
DM
74
75DESTDIR=
de779814 76
314d360f
WB
77tests ?= --workspace
78
424d2d68 79all: $(SUBDIRS)
13b77d10
WB
80
81.PHONY: $(SUBDIRS)
82$(SUBDIRS):
83 $(MAKE) -C $@
de779814 84
cd3b9a06 85test:
cc119edb 86 #cargo test test_broadcast_future
3dceb9b3 87 #cargo test $(CARGO_BUILD_ARGS)
c47a900c 88 $(CARGO) test $(tests) $(CARGO_BUILD_ARGS)
f7dd683b 89
cd3b9a06 90doc:
314d360f 91 $(CARGO) doc --workspace --no-deps $(CARGO_BUILD_ARGS)
d78345bc 92
13b77d10
WB
93# always re-create this dir
94.PHONY: build
95build:
de779814 96 rm -rf build
01fd2447
WB
97 mkdir build
98 cp -a debian \
a6eac535 99 Cargo.toml src \
01fd2447
WB
100 $(SUBCRATES) \
101 docs etc examples tests www zsh-completions \
102 defines.mk Makefile \
103 ./build/
104 rm -f build/Cargo.lock
e881b8a5 105 find build/debian -name "*.hint" -delete
b369f720
WB
106 $(foreach i,$(SUBDIRS), \
107 $(MAKE) -C build/$(i) clean ;)
de779814 108
e881b8a5 109
720776b8 110.PHONY: proxmox-backup-docs
37e53b4c
TL
111$(DOC_DEB) $(DEBS): proxmox-backup-docs
112proxmox-backup-docs: build
720776b8
DM
113 cd build; dpkg-buildpackage -b -us -uc --no-pre-clean
114 lintian $(DOC_DEB)
115
da0e1e40 116# copy the local target/ dir as a build-cache
13b77d10 117.PHONY: deb
37e53b4c
TL
118$(DEBS): deb
119deb: build
720776b8 120 cd build; dpkg-buildpackage -b -us -uc --no-pre-clean --build-profiles=nodoc
36d74cd6 121 lintian $(DEBS)
18fad344 122
37e53b4c 123.PHONY: deb-all
a2c73c78
TL
124deb-all: build
125 cd build; dpkg-buildpackage -b -us -uc --no-pre-clean
126 lintian $(DEBS) $(DOC_DEB)
37e53b4c 127
18fad344
WB
128.PHONY: dsc
129dsc: $(DSC)
130$(DSC): build
131 cd build; dpkg-buildpackage -S -us -uc -d -nc
132 lintian $(DSC)
de779814 133
1900d781 134.PHONY: clean distclean deb clean
209bb433 135distclean: clean
6b85671d 136clean: clean-deb
b369f720
WB
137 $(foreach i,$(SUBDIRS), \
138 $(MAKE) -C $(i) clean ;)
da0e1e40 139 $(CARGO) clean
424d2d68 140 rm -f .do-cargo-build
d3cb69c4
DM
141 find . -name '*~' -exec rm {} ';'
142
1900d781
TL
143# allows one to avoid running cargo clean when one just wants to tidy up after a packgae build
144clean-deb:
145 rm -rf *.deb *.dsc *.tar.gz *.buildinfo *.changes build/
146
209bb433 147.PHONY: dinstall
c287b287
TL
148dinstall: ${SERVER_DEB} ${SERVER_DBG_DEB} ${CLIENT_DEB} ${CLIENT_DBG_DEB}
149 dpkg -i $^
6285b251 150
bb5c7707 151# make sure we build binaries before docs
424d2d68 152docs: $(COMPILEDIR)/dump-catalog-shell-cli $(COMPILEDIR)/docgen
bb5c7707 153
13b77d10 154.PHONY: cargo-build
cd3b9a06 155cargo-build:
424d2d68
TL
156 rm -f .do-cargo-build
157 $(MAKE) $(COMPILED_BINS)
158
159$(COMPILED_BINS) $(COMPILEDIR)/dump-catalog-shell-cli $(COMPILEDIR)/docgen: .do-cargo-build
160.do-cargo-build:
991be99c
TL
161 RUSTFLAGS="--cfg openid" $(CARGO) build $(CARGO_BUILD_ARGS) \
162 --bin proxmox-backup-api --bin proxmox-backup-proxy \
163 --bin proxmox-backup-manager --bin docgen
164 $(CARGO) build $(CARGO_BUILD_ARGS) \
b9c5cd82
WB
165 --package proxmox-backup-banner \
166 --bin proxmox-backup-banner \
58a3fae7
WB
167 --package pxar-bin \
168 --bin pxar \
b9c5cd82 169 --package proxmox-backup \
991be99c
TL
170 --bin dump-catalog-shell-cli \
171 --bin pmt --bin pmtx \
991be99c
TL
172 --bin proxmox-backup-client \
173 --bin proxmox-daily-update \
174 --bin proxmox-file-restore \
175 --bin proxmox-restore-daemon \
176 --bin proxmox-tape \
177 --bin pxar \
178 --bin sg-tape-cmd
424d2d68 179 touch "$@"
6285b251 180
6285b251 181
d1596102
WB
182.PHONY: lint
183lint:
184 cargo clippy -- -A clippy::all -D clippy::correctness
185
6285b251
WB
186install: $(COMPILED_BINS)
187 install -dm755 $(DESTDIR)$(BINDIR)
6dea60aa 188 install -dm755 $(DESTDIR)$(ZSH_COMPL_DEST)
6285b251 189 $(foreach i,$(USR_BIN), \
6dea60aa
CE
190 install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(BINDIR)/ ; \
191 install -m644 zsh-completions/_$(i) $(DESTDIR)$(ZSH_COMPL_DEST)/ ;)
6285b251
WB
192 install -dm755 $(DESTDIR)$(SBINDIR)
193 $(foreach i,$(USR_SBIN), \
6dea60aa
CE
194 install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(SBINDIR)/ ; \
195 install -m644 zsh-completions/_$(i) $(DESTDIR)$(ZSH_COMPL_DEST)/ ;)
304db5da 196 install -dm755 $(DESTDIR)$(LIBEXECDIR)/proxmox-backup
dd9cef56
SR
197 install -dm755 $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/file-restore
198 $(foreach i,$(RESTORE_BIN), \
199 install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/file-restore/ ;)
b27c3282 200 # install sg-tape-cmd as setuid binary
df3a74d7 201 install -m4755 -o root -g root $(COMPILEDIR)/sg-tape-cmd $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/sg-tape-cmd
6285b251 202 $(foreach i,$(SERVICE_BIN), \
304db5da 203 install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/ ;)
6285b251 204 $(MAKE) -C www install
bb5c7707 205 $(MAKE) -C docs install
729e38f4
DM
206
207.PHONY: upload
76425d84 208upload: ${SERVER_DEB} ${CLIENT_DEB} ${RESTORE_DEB} ${DOC_DEB}
729e38f4
DM
209 # check if working directory is clean
210 git diff --exit-code --stat && git diff --exit-code --stat --staged
59648eac 211 tar cf - ${SERVER_DEB} ${SERVER_DBG_DEB} ${DOC_DEB} ${CLIENT_DEB} ${CLIENT_DBG_DEB} | \
d9d81741
TL
212 ssh -X repoman@repo.proxmox.com upload --product pbs --dist bullseye
213 tar cf - ${CLIENT_DEB} ${CLIENT_DBG_DEB} | ssh -X repoman@repo.proxmox.com upload --product "pve,pmg,pbs-client" --dist bullseye
214 tar cf - ${RESTORE_DEB} ${RESTORE_DBG_DEB} | ssh -X repoman@repo.proxmox.com upload --product "pve" --dist bullseye