PACKAGE := proxmox-backup
ARCH := $(DEB_BUILD_ARCH)
-SUBDIRS := etc www docs
+SUBDIRS := etc www docs templates
# Binaries usable by users
USR_BIN := \
# Binaries usable by admins
USR_SBIN := \
proxmox-backup-manager \
- proxmox-backup-debug \
+ proxmox-backup-debug
# Binaries for services:
SERVICE_BIN := \
RESTORE_BIN := \
proxmox-restore-daemon
-SUBCRATES := \
- pbs-api-types \
- pbs-buildcfg \
- pbs-client \
- pbs-config \
- pbs-datastore \
- pbs-fuse-loop \
- pbs-runtime \
- pbs-systemd \
- pbs-tape \
- pbs-tools \
- proxmox-backup-banner \
- proxmox-backup-client \
- proxmox-backup-debug \
- proxmox-file-restore \
- pxar-bin
+SUBCRATES != cargo metadata --no-deps --format-version=1 \
+ | jq -r .workspace_members'[]' \
+ | grep "$$PWD/" \
+ | sed -e "s!.*$$PWD/!!g" -e 's/\#.*$$//g' -e 's/)$$//g'
ifeq ($(BUILD_MODE), release)
CARGO_BUILD_ARGS += --release
-COMPILEDIR := target/release
+COMPILEDIR := target/$(DEB_HOST_RUST_TYPE)/release
else
-COMPILEDIR := target/debug
+COMPILEDIR := target/$(DEB_HOST_RUST_TYPE)/debug
endif
ifeq ($(valgrind), yes)
export DEB_VERSION DEB_VERSION_UPSTREAM
-SERVER_DEB=${PACKAGE}-server_${DEB_VERSION}_${ARCH}.deb
-SERVER_DBG_DEB=${PACKAGE}-server-dbgsym_${DEB_VERSION}_${ARCH}.deb
-CLIENT_DEB=${PACKAGE}-client_${DEB_VERSION}_${ARCH}.deb
-CLIENT_DBG_DEB=${PACKAGE}-client-dbgsym_${DEB_VERSION}_${ARCH}.deb
-RESTORE_DEB=proxmox-backup-file-restore_${DEB_VERSION}_${ARCH}.deb
-RESTORE_DBG_DEB=proxmox-backup-file-restore-dbgsym_${DEB_VERSION}_${ARCH}.deb
-DOC_DEB=${PACKAGE}-docs_${DEB_VERSION}_all.deb
+SERVER_DEB=$(PACKAGE)-server_$(DEB_VERSION)_$(ARCH).deb
+SERVER_DBG_DEB=$(PACKAGE)-server-dbgsym_$(DEB_VERSION)_$(ARCH).deb
+CLIENT_DEB=$(PACKAGE)-client_$(DEB_VERSION)_$(ARCH).deb
+CLIENT_DBG_DEB=$(PACKAGE)-client-dbgsym_$(DEB_VERSION)_$(ARCH).deb
+RESTORE_DEB=proxmox-backup-file-restore_$(DEB_VERSION)_$(ARCH).deb
+RESTORE_DBG_DEB=proxmox-backup-file-restore-dbgsym_$(DEB_VERSION)_$(ARCH).deb
+DOC_DEB=$(PACKAGE)-docs_$(DEB_VERSION)_all.deb
-DEBS=${SERVER_DEB} ${SERVER_DBG_DEB} ${CLIENT_DEB} ${CLIENT_DBG_DEB} \
- ${RESTORE_DEB} ${RESTORE_DBG_DEB} ${DEBUG_DEB} ${DEBUG_DBG_DEB}
+DEBS=$(SERVER_DEB) $(SERVER_DBG_DEB) $(CLIENT_DEB) $(CLIENT_DBG_DEB) \
+ $(RESTORE_DEB) $(RESTORE_DBG_DEB)
-DSC = rust-${PACKAGE}_${DEB_VERSION}.dsc
+DSC = rust-$(PACKAGE)_$(DEB_VERSION).dsc
DESTDIR=
# always re-create this dir
.PHONY: build
build:
- @echo "Setting pkg-buildcfg version to: $(DEB_VERSION_UPSTREAM)"
- sed -i -e 's/^version =.*$$/version = "$(DEB_VERSION_UPSTREAM)"/' \
- pbs-buildcfg/Cargo.toml
rm -rf build
mkdir build
+ git rev-parse HEAD > build/.repoid
cp -a debian \
Cargo.toml src \
$(SUBCRATES) \
- docs etc examples tests www zsh-completions \
+ docs etc examples tests www zsh-completions templates \
defines.mk Makefile \
./build/
rm -f build/Cargo.lock
cd build; dpkg-buildpackage -b -us -uc --no-pre-clean
lintian $(DOC_DEB)
-# copy the local target/ dir as a build-cache
-.PHONY: deb
-$(DEBS): deb
-deb: build
+.PHONY: deb dsc deb-nodoc deb-nostrip
+deb-nodoc: build
cd build; dpkg-buildpackage -b -us -uc --no-pre-clean --build-profiles=nodoc
lintian $(DEBS)
-.PHONY: deb-all
-deb-all: build
- cd build; dpkg-buildpackage -b -us -uc --no-pre-clean
+deb-nostrip: build
+ cd build; DEB_BUILD_OPTIONS=nostrip dpkg-buildpackage -b -us -uc
+ lintian $(DEBS) $(DOC_DEB)
+
+$(DEBS): deb
+deb: build
+ cd build; dpkg-buildpackage -b -us -uc
lintian $(DEBS) $(DOC_DEB)
.PHONY: dsc
-dsc: $(DSC)
-$(DSC): build
- cd build; dpkg-buildpackage -S -us -uc -d -nc
+dsc:
+ rm -rf $(DSC) build/
+ $(MAKE) $(DSC)
lintian $(DSC)
+$(DSC): build
+ cd build; dpkg-buildpackage -S -us -uc -d
+
+sbuild: $(DSC)
+ sbuild $<
+
.PHONY: clean distclean deb clean
distclean: clean
clean: clean-deb
$(MAKE) -C $(i) clean ;)
$(CARGO) clean
rm -f .do-cargo-build
- find . -name '*~' -exec rm {} ';'
-# allows one to avoid running cargo clean when one just wants to tidy up after a packgae build
+# allows one to avoid running cargo clean when one just wants to tidy up after a package build
clean-deb:
- rm -rf *.deb *.dsc *.tar.gz *.buildinfo *.changes build/
+ rm -rf build/
+ rm -f *.deb *.dsc *.tar.* *.buildinfo *.build *.changes
.PHONY: dinstall
-dinstall: ${SERVER_DEB} ${SERVER_DBG_DEB} ${CLIENT_DEB} ${CLIENT_DBG_DEB} \
- ${DEBUG_DEB} ${DEBUG_DBG_DEB}
+dinstall: $(SERVER_DEB) $(SERVER_DBG_DEB) $(CLIENT_DEB) $(CLIENT_DBG_DEB)
dpkg -i $^
# make sure we build binaries before docs
$(COMPILED_BINS) $(COMPILEDIR)/dump-catalog-shell-cli $(COMPILEDIR)/docgen: .do-cargo-build
.do-cargo-build:
- RUSTFLAGS="--cfg openid" $(CARGO) build $(CARGO_BUILD_ARGS) \
- --bin proxmox-backup-api \
- --bin proxmox-backup-proxy \
- --bin proxmox-backup-manager \
- --bin docgen
$(CARGO) build $(CARGO_BUILD_ARGS) \
--package proxmox-backup-banner \
--bin proxmox-backup-banner \
--package proxmox-backup-client \
--bin proxmox-backup-client \
- --package proxmox-backup-debug \
+ --bin dump-catalog-shell-cli \
--bin proxmox-backup-debug \
--package proxmox-file-restore \
--bin proxmox-file-restore \
--package pbs-tape \
--bin pmt \
--bin pmtx \
+ --package proxmox-restore-daemon \
+ --bin proxmox-restore-daemon \
--package proxmox-backup \
- --bin dump-catalog-shell-cli \
+ --bin docgen \
+ --bin pbs2to3 \
+ --bin proxmox-backup-api \
+ --bin proxmox-backup-manager \
+ --bin proxmox-backup-proxy \
--bin proxmox-daily-update \
--bin proxmox-file-restore \
- --bin proxmox-restore-daemon \
--bin proxmox-tape \
--bin sg-tape-cmd
touch "$@"
$(foreach i,$(USR_SBIN), \
install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(SBINDIR)/ ; \
install -m644 zsh-completions/_$(i) $(DESTDIR)$(ZSH_COMPL_DEST)/ ;)
+ install -m755 $(COMPILEDIR)/pbs2to3 $(DESTDIR)$(SBINDIR)/
install -dm755 $(DESTDIR)$(LIBEXECDIR)/proxmox-backup
install -dm755 $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/file-restore
$(foreach i,$(RESTORE_BIN), \
install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/ ;)
$(MAKE) -C www install
$(MAKE) -C docs install
-ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
- $(MAKE) test # HACK, only test now to avoid clobbering build files with wrong config
-endif
+ $(MAKE) -C templates install
.PHONY: upload
-upload: ${SERVER_DEB} ${CLIENT_DEB} ${RESTORE_DEB} ${DOC_DEB} ${DEBUG_DEB}
+upload: UPLOAD_DIST ?= $(DEB_DISTRIBUTION)
+upload: $(SERVER_DEB) $(CLIENT_DEB) $(RESTORE_DEB) $(DOC_DEB)
# check if working directory is clean
git diff --exit-code --stat && git diff --exit-code --stat --staged
- tar cf - ${SERVER_DEB} ${SERVER_DBG_DEB} ${DOC_DEB} ${CLIENT_DEB} \
- ${CLIENT_DBG_DEB} ${DEBUG_DEB} ${DEBUG_DBG_DEB} \
- | ssh -X repoman@repo.proxmox.com upload --product pbs --dist bullseye
- tar cf - ${CLIENT_DEB} ${CLIENT_DBG_DEB} | ssh -X repoman@repo.proxmox.com upload --product "pve,pmg,pbs-client" --dist bullseye
- tar cf - ${RESTORE_DEB} ${RESTORE_DBG_DEB} | ssh -X repoman@repo.proxmox.com upload --product "pve" --dist bullseye
+ tar cf - $(SERVER_DEB) $(SERVER_DBG_DEB) $(DOC_DEB) $(CLIENT_DEB) $(CLIENT_DBG_DEB) \
+ | ssh -X repoman@repo.proxmox.com upload --product pbs --dist $(UPLOAD_DIST)
+ tar cf - $(CLIENT_DEB) $(CLIENT_DBG_DEB) | ssh -X repoman@repo.proxmox.com upload --product "pve,pmg,pbs-client" --dist $(UPLOAD_DIST)
+ tar cf - $(RESTORE_DEB) $(RESTORE_DBG_DEB) | ssh -X repoman@repo.proxmox.com upload --product "pve" --dist $(UPLOAD_DIST)