]> git.proxmox.com Git - proxmox-backup.git/blame - Makefile
api2/tape/restore: return backup manifest in try_restore_snapshot_archive
[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
13b77d10
WB
33ifeq ($(BUILD_MODE), release)
34CARGO_BUILD_ARGS += --release
6285b251 35COMPILEDIR := target/release
13b77d10
WB
36else
37COMPILEDIR := target/debug
38endif
39
6f0069ae
WB
40ifeq ($(valgrind), yes)
41CARGO_BUILD_ARGS += --features valgrind
42endif
43
da0e1e40
FG
44CARGO ?= cargo
45
6285b251 46COMPILED_BINS := \
dd9cef56 47 $(addprefix $(COMPILEDIR)/,$(USR_BIN) $(USR_SBIN) $(SERVICE_BIN) $(RESTORE_BIN))
6285b251 48
1f6a4f58
TL
49export DEB_VERSION DEB_VERSION_UPSTREAM
50
10426c17 51SERVER_DEB=${PACKAGE}-server_${DEB_VERSION}_${ARCH}.deb
3ec6e249 52SERVER_DBG_DEB=${PACKAGE}-server-dbgsym_${DEB_VERSION}_${ARCH}.deb
10426c17 53CLIENT_DEB=${PACKAGE}-client_${DEB_VERSION}_${ARCH}.deb
3ec6e249 54CLIENT_DBG_DEB=${PACKAGE}-client-dbgsym_${DEB_VERSION}_${ARCH}.deb
a5322f3c
TL
55RESTORE_DEB=proxmox-backup-file-restore_${DEB_VERSION}_${ARCH}.deb
56RESTORE_DBG_DEB=proxmox-backup-file-restore-dbgsym_${DEB_VERSION}_${ARCH}.deb
da0e1e40 57DOC_DEB=${PACKAGE}-docs_${DEB_VERSION}_all.deb
36d74cd6 58
76425d84
DC
59DEBS=${SERVER_DEB} ${SERVER_DBG_DEB} ${CLIENT_DEB} ${CLIENT_DBG_DEB} \
60 ${RESTORE_DEB} ${RESTORE_DBG_DEB}
10426c17 61
e881b8a5 62DSC = rust-${PACKAGE}_${DEB_VERSION}.dsc
209bb433
DM
63
64DESTDIR=
de779814 65
13b77d10
WB
66all: cargo-build $(SUBDIRS)
67
68.PHONY: $(SUBDIRS)
69$(SUBDIRS):
70 $(MAKE) -C $@
de779814 71
cd3b9a06 72test:
cc119edb 73 #cargo test test_broadcast_future
3dceb9b3 74 #cargo test $(CARGO_BUILD_ARGS)
c47a900c 75 $(CARGO) test $(tests) $(CARGO_BUILD_ARGS)
f7dd683b 76
cd3b9a06 77doc:
da0e1e40 78 $(CARGO) doc --no-deps $(CARGO_BUILD_ARGS)
d78345bc 79
13b77d10
WB
80# always re-create this dir
81.PHONY: build
82build:
de779814 83 rm -rf build
5d95558b 84 rm -f debian/control
e881b8a5
FG
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
724de093 89 cp build/debian/control debian/control
e881b8a5
FG
90 rm build/Cargo.lock
91 find build/debian -name "*.hint" -delete
b369f720
WB
92 $(foreach i,$(SUBDIRS), \
93 $(MAKE) -C build/$(i) clean ;)
de779814 94
e881b8a5 95
720776b8 96.PHONY: proxmox-backup-docs
37e53b4c
TL
97$(DOC_DEB) $(DEBS): proxmox-backup-docs
98proxmox-backup-docs: build
720776b8
DM
99 cd build; dpkg-buildpackage -b -us -uc --no-pre-clean
100 lintian $(DOC_DEB)
101
da0e1e40 102# copy the local target/ dir as a build-cache
13b77d10 103.PHONY: deb
37e53b4c
TL
104$(DEBS): deb
105deb: build
720776b8 106 cd build; dpkg-buildpackage -b -us -uc --no-pre-clean --build-profiles=nodoc
36d74cd6 107 lintian $(DEBS)
18fad344 108
37e53b4c
TL
109.PHONY: deb-all
110deb-all: $(DOC_DEB) $(DEBS)
111
18fad344
WB
112.PHONY: dsc
113dsc: $(DSC)
114$(DSC): build
115 cd build; dpkg-buildpackage -S -us -uc -d -nc
116 lintian $(DSC)
de779814 117
209bb433 118distclean: clean
de779814
DM
119
120clean:
b369f720
WB
121 $(foreach i,$(SUBDIRS), \
122 $(MAKE) -C $(i) clean ;)
da0e1e40 123 $(CARGO) clean
1a9cb80c 124 rm -rf *.deb *.dsc *.tar.gz *.buildinfo *.changes build
d3cb69c4
DM
125 find . -name '*~' -exec rm {} ';'
126
209bb433 127.PHONY: dinstall
c287b287
TL
128dinstall: ${SERVER_DEB} ${SERVER_DBG_DEB} ${CLIENT_DEB} ${CLIENT_DBG_DEB}
129 dpkg -i $^
6285b251 130
bb5c7707
DM
131# make sure we build binaries before docs
132docs: cargo-build
133
13b77d10 134.PHONY: cargo-build
cd3b9a06 135cargo-build:
da0e1e40 136 $(CARGO) build $(CARGO_BUILD_ARGS)
6285b251 137
13b77d10 138$(COMPILED_BINS): cargo-build
6285b251 139
d1596102
WB
140.PHONY: lint
141lint:
142 cargo clippy -- -A clippy::all -D clippy::correctness
143
6285b251
WB
144install: $(COMPILED_BINS)
145 install -dm755 $(DESTDIR)$(BINDIR)
6dea60aa 146 install -dm755 $(DESTDIR)$(ZSH_COMPL_DEST)
6285b251 147 $(foreach i,$(USR_BIN), \
6dea60aa
CE
148 install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(BINDIR)/ ; \
149 install -m644 zsh-completions/_$(i) $(DESTDIR)$(ZSH_COMPL_DEST)/ ;)
6285b251
WB
150 install -dm755 $(DESTDIR)$(SBINDIR)
151 $(foreach i,$(USR_SBIN), \
6dea60aa
CE
152 install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(SBINDIR)/ ; \
153 install -m644 zsh-completions/_$(i) $(DESTDIR)$(ZSH_COMPL_DEST)/ ;)
304db5da 154 install -dm755 $(DESTDIR)$(LIBEXECDIR)/proxmox-backup
dd9cef56
SR
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/ ;)
b27c3282 158 # install sg-tape-cmd as setuid binary
df3a74d7 159 install -m4755 -o root -g root $(COMPILEDIR)/sg-tape-cmd $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/sg-tape-cmd
6285b251 160 $(foreach i,$(SERVICE_BIN), \
304db5da 161 install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/ ;)
6285b251 162 $(MAKE) -C www install
bb5c7707 163 $(MAKE) -C docs install
729e38f4
DM
164
165.PHONY: upload
76425d84 166upload: ${SERVER_DEB} ${CLIENT_DEB} ${RESTORE_DEB} ${DOC_DEB}
729e38f4
DM
167 # check if working directory is clean
168 git diff --exit-code --stat && git diff --exit-code --stat --staged
59648eac
TL
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
279e7eb4 171 tar cf - ${CLIENT_DEB} ${CLIENT_DBG_DEB} | ssh -X repoman@repo.proxmox.com upload --product "pve,pmg,pbs-client" --dist buster
5b6b5bba 172 tar cf - ${RESTORE_DEB} ${RESTORE_DBG_DEB} | ssh -X repoman@repo.proxmox.com upload --product "pve" --dist buster