]> git.proxmox.com Git - proxmox-backup.git/blame - Makefile
ui: tape/TapeManagement: change Text of Backup/Tape Inventory
[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
DM
11 proxmox-backup-client \
12 pxar \
4c209d6b
DM
13 pmtx \
14 pmt
6285b251
WB
15
16# Binaries usable by admins
b69b8af2
TL
17USR_SBIN := \
18 proxmox-backup-manager
6285b251
WB
19
20# Binaries for services:
21SERVICE_BIN := \
22 proxmox-backup-api \
b69b8af2 23 proxmox-backup-banner \
bc00289b 24 proxmox-backup-proxy \
b27c3282 25 proxmox-daily-update
6285b251 26
13b77d10
WB
27ifeq ($(BUILD_MODE), release)
28CARGO_BUILD_ARGS += --release
6285b251 29COMPILEDIR := target/release
13b77d10
WB
30else
31COMPILEDIR := target/debug
32endif
33
6f0069ae
WB
34ifeq ($(valgrind), yes)
35CARGO_BUILD_ARGS += --features valgrind
36endif
37
da0e1e40
FG
38CARGO ?= cargo
39
6285b251
WB
40COMPILED_BINS := \
41 $(addprefix $(COMPILEDIR)/,$(USR_BIN) $(USR_SBIN) $(SERVICE_BIN))
42
1f6a4f58
TL
43export DEB_VERSION DEB_VERSION_UPSTREAM
44
10426c17 45SERVER_DEB=${PACKAGE}-server_${DEB_VERSION}_${ARCH}.deb
3ec6e249 46SERVER_DBG_DEB=${PACKAGE}-server-dbgsym_${DEB_VERSION}_${ARCH}.deb
10426c17 47CLIENT_DEB=${PACKAGE}-client_${DEB_VERSION}_${ARCH}.deb
3ec6e249 48CLIENT_DBG_DEB=${PACKAGE}-client-dbgsym_${DEB_VERSION}_${ARCH}.deb
da0e1e40 49DOC_DEB=${PACKAGE}-docs_${DEB_VERSION}_all.deb
36d74cd6 50
3ec6e249 51DEBS=${SERVER_DEB} ${SERVER_DBG_DEB} ${CLIENT_DEB} ${CLIENT_DBG_DEB}
10426c17 52
e881b8a5 53DSC = rust-${PACKAGE}_${DEB_VERSION}.dsc
209bb433
DM
54
55DESTDIR=
de779814 56
13b77d10
WB
57all: cargo-build $(SUBDIRS)
58
59.PHONY: $(SUBDIRS)
60$(SUBDIRS):
61 $(MAKE) -C $@
de779814 62
cd3b9a06 63test:
cc119edb 64 #cargo test test_broadcast_future
3dceb9b3 65 #cargo test $(CARGO_BUILD_ARGS)
c47a900c 66 $(CARGO) test $(tests) $(CARGO_BUILD_ARGS)
f7dd683b 67
cd3b9a06 68doc:
da0e1e40 69 $(CARGO) doc --no-deps $(CARGO_BUILD_ARGS)
d78345bc 70
13b77d10
WB
71# always re-create this dir
72.PHONY: build
73build:
de779814 74 rm -rf build
5d95558b 75 rm -f debian/control
e881b8a5
FG
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
724de093 80 cp build/debian/control debian/control
e881b8a5
FG
81 rm build/Cargo.lock
82 find build/debian -name "*.hint" -delete
b369f720
WB
83 $(foreach i,$(SUBDIRS), \
84 $(MAKE) -C build/$(i) clean ;)
de779814 85
e881b8a5 86
720776b8 87.PHONY: proxmox-backup-docs
37e53b4c
TL
88$(DOC_DEB) $(DEBS): proxmox-backup-docs
89proxmox-backup-docs: build
720776b8
DM
90 cd build; dpkg-buildpackage -b -us -uc --no-pre-clean
91 lintian $(DOC_DEB)
92
da0e1e40 93# copy the local target/ dir as a build-cache
13b77d10 94.PHONY: deb
37e53b4c
TL
95$(DEBS): deb
96deb: build
720776b8 97 cd build; dpkg-buildpackage -b -us -uc --no-pre-clean --build-profiles=nodoc
36d74cd6 98 lintian $(DEBS)
18fad344 99
37e53b4c
TL
100.PHONY: deb-all
101deb-all: $(DOC_DEB) $(DEBS)
102
18fad344
WB
103.PHONY: dsc
104dsc: $(DSC)
105$(DSC): build
106 cd build; dpkg-buildpackage -S -us -uc -d -nc
107 lintian $(DSC)
de779814 108
209bb433 109distclean: clean
de779814
DM
110
111clean:
b369f720
WB
112 $(foreach i,$(SUBDIRS), \
113 $(MAKE) -C $(i) clean ;)
da0e1e40 114 $(CARGO) clean
1a9cb80c 115 rm -rf *.deb *.dsc *.tar.gz *.buildinfo *.changes build
d3cb69c4
DM
116 find . -name '*~' -exec rm {} ';'
117
209bb433 118.PHONY: dinstall
36d74cd6
DM
119dinstall: ${DEBS}
120 dpkg -i ${DEBS}
6285b251 121
bb5c7707
DM
122# make sure we build binaries before docs
123docs: cargo-build
124
13b77d10 125.PHONY: cargo-build
cd3b9a06 126cargo-build:
da0e1e40 127 $(CARGO) build $(CARGO_BUILD_ARGS)
6285b251 128
13b77d10 129$(COMPILED_BINS): cargo-build
6285b251 130
d1596102
WB
131.PHONY: lint
132lint:
133 cargo clippy -- -A clippy::all -D clippy::correctness
134
6285b251
WB
135install: $(COMPILED_BINS)
136 install -dm755 $(DESTDIR)$(BINDIR)
6dea60aa 137 install -dm755 $(DESTDIR)$(ZSH_COMPL_DEST)
6285b251 138 $(foreach i,$(USR_BIN), \
6dea60aa
CE
139 install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(BINDIR)/ ; \
140 install -m644 zsh-completions/_$(i) $(DESTDIR)$(ZSH_COMPL_DEST)/ ;)
6285b251
WB
141 install -dm755 $(DESTDIR)$(SBINDIR)
142 $(foreach i,$(USR_SBIN), \
6dea60aa
CE
143 install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(SBINDIR)/ ; \
144 install -m644 zsh-completions/_$(i) $(DESTDIR)$(ZSH_COMPL_DEST)/ ;)
304db5da 145 install -dm755 $(DESTDIR)$(LIBEXECDIR)/proxmox-backup
b27c3282 146 # install sg-tape-cmd as setuid binary
df3a74d7 147 install -m4755 -o root -g root $(COMPILEDIR)/sg-tape-cmd $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/sg-tape-cmd
6285b251 148 $(foreach i,$(SERVICE_BIN), \
304db5da 149 install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/ ;)
6285b251 150 $(MAKE) -C www install
bb5c7707 151 $(MAKE) -C docs install
729e38f4
DM
152
153.PHONY: upload
10426c17 154upload: ${SERVER_DEB} ${CLIENT_DEB} ${DOC_DEB}
729e38f4
DM
155 # check if working directory is clean
156 git diff --exit-code --stat && git diff --exit-code --stat --staged
3ec6e249 157 tar cf - ${SERVER_DEB} ${SERVER_DBG_DEB} ${DOC_DEB} | ssh -X repoman@repo.proxmox.com upload --product pbs --dist buster
e15b7636 158 tar cf - ${CLIENT_DEB} ${CLIENT_DBG_DEB} | ssh -X repoman@repo.proxmox.com upload --product "pbs,pve,pmg" --dist buster