From 687af006c90e34a37f655ea8e8b3f45548f44e0b Mon Sep 17 00:00:00 2001 From: Wolfgang Date: Sun, 6 Aug 2023 20:46:49 +0000 Subject: [PATCH] add build support for version 3.x - automatically build version 2.x on bullseye and 3.x on bookworm - force build version 3.x on bullseye with pbs3 option --- .gitignore | 1 + build.sh | 54 +++- patches/{ => pbs2}/proxmox-backup-build.patch | 0 .../{ => pbs2}/proxmox-backup-client.patch | 0 patches/{ => pbs2}/proxmox-backup-cross.patch | 0 patches/pbs3/proxmox-backup-build.patch | 149 ++++++++++ patches/pbs3/proxmox-backup-client.patch | 265 ++++++++++++++++++ patches/pbs3/proxmox-backup-cross.patch | 89 ++++++ 8 files changed, 546 insertions(+), 12 deletions(-) rename patches/{ => pbs2}/proxmox-backup-build.patch (100%) rename patches/{ => pbs2}/proxmox-backup-client.patch (100%) rename patches/{ => pbs2}/proxmox-backup-cross.patch (100%) create mode 100644 patches/pbs3/proxmox-backup-build.patch create mode 100644 patches/pbs3/proxmox-backup-client.patch create mode 100644 patches/pbs3/proxmox-backup-cross.patch diff --git a/.gitignore b/.gitignore index 2569ba9..af1c8c0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /packages /packages_build /sources +rust-toolchain.toml diff --git a/build.sh b/build.sh index 78ff174..f38f841 100755 --- a/build.sh +++ b/build.sh @@ -166,6 +166,16 @@ BUILD_PACKAGE="server" BUILD_PROFILES="" GITHUB_ACTION="" +. /etc/os-release + +if [ "${VERSION_CODENAME}" = "bookworm" ]; then + DISTNAME="bookworm" + PBSVERSION="pbs3" +else + DISTNAME="bullseye" + PBSVERSION="pbs2" +fi + [ ! -d "${PACKAGES}" ] && mkdir -p "${PACKAGES}" while [ "$#" -ge 1 ] @@ -204,6 +214,9 @@ do [[ ${BUILD_PROFILES} =~ nocheck ]] || BUILD_PROFILES=${BUILD_PROFILES}",nocheck" export DEB_BUILD_OPTIONS="nocheck" ;; + pbs*) + PBSVERSION=${1} + ;; debug) exec &> >(tee "${LOGFILE}") echo $@ @@ -231,9 +244,9 @@ fi echo "Download packages list from proxmox devel repository" -PACKAGES_DEVEL=$(load_packages http://download.proxmox.com/debian/devel/dists/bullseye/main/binary-amd64/Packages.gz) +PACKAGES_DEVEL=$(load_packages http://download.proxmox.com/debian/devel/dists/${DISTNAME}/main/binary-amd64/Packages.gz) echo "Download packages list from pbs-no-subscription repository" -PACKAGES_PBS=$(load_packages http://download.proxmox.com/debian/pbs/dists/bullseye/pbs-no-subscription/binary-amd64/Packages.gz) +PACKAGES_PBS=$(load_packages http://download.proxmox.com/debian/pbs/dists/${DISTNAME}/pbs-no-subscription/binary-amd64/Packages.gz) echo "Download dependencies" @@ -263,16 +276,27 @@ fi echo "Install build dependencies" ${SUDO} apt install -y "${packages_install[@]}" +cat <rust-toolchain.toml +[toolchain] +channel="stable" +targets = [ "${CARGO_BUILD_TARGET:-$(rustc -vV 2>/dev/null | awk '/^host/ { print $2 }')}" ] +EOF cd "${SOURCES}" -PROXMOX_BACKUP_VER="2.4.3-1" -PROXMOX_BACKUP_GIT="682bb42edd01c9ebe6595f2aeef6c56dee6f91cf" +if [ "${PBSVERSION}" = "pbs3" ]; then + PROXMOX_BACKUP_VER="3.0.2-1" + PROXMOX_BACKUP_GIT="a13b3d7e1c9b93fbb54691074b5008ccd9c8f1f3" + PROXMOX_GIT="5859017061e7e722c601aab47016a445e776740e" +else + PROXMOX_BACKUP_VER="2.4.3-1" + PROXMOX_BACKUP_GIT="682bb42edd01c9ebe6595f2aeef6c56dee6f91cf" + PROXMOX_GIT="286c55d5b493a1e76fa3e70ae1c874cf82ca39aa" + PROXMOX_OPENID_GIT="ecf59cbb74278ea0e9710466508158ed6a6828c4" # 0.9.9-1 +fi PATHPATTERNS_GIT="8a0dce93d535ef04bfa9c8317edc0ef0216e9042" # 0.1.3-1 PROXMOX_ACME_RS_GIT="abc0bdd09d5c3501534510d49da0ae8fa5c05c05" # 0.4.0 PROMXOX_FUSE_GIT="8d57fb64f044ea3dcfdef77ed5f1888efdab0708" # 0.1.4 -PROXMOX_GIT="286c55d5b493a1e76fa3e70ae1c874cf82ca39aa" -PROXMOX_OPENID_GIT="ecf59cbb74278ea0e9710466508158ed6a6828c4" # 0.9.9-1 PXAR_GIT="29cbeed3e1b52f5eef455cdfa8b5e93f4e3e88f5" # 0.10.2-1 if [ ! -e "${PACKAGES}/proxmox-backup-${BUILD_PACKAGE}_${PROXMOX_BACKUP_VER}_${PACKAGE_ARCH}.deb" ]; then git_clone_or_fetch https://git.proxmox.com/git/proxmox.git @@ -285,22 +309,28 @@ if [ ! -e "${PACKAGES}/proxmox-backup-${BUILD_PACKAGE}_${PROXMOX_BACKUP_VER}_${P git_clean_and_checkout ${PATHPATTERNS_GIT} pathpatterns git_clone_or_fetch https://git.proxmox.com/git/proxmox-acme-rs.git git_clean_and_checkout ${PROXMOX_ACME_RS_GIT} proxmox-acme-rs - git_clone_or_fetch https://git.proxmox.com/git/proxmox-openid-rs.git - git_clean_and_checkout ${PROXMOX_OPENID_GIT} proxmox-openid-rs + if [ "${PBSVERSION}" = "pbs2" ]; then + git_clone_or_fetch https://git.proxmox.com/git/proxmox-openid-rs.git + git_clean_and_checkout ${PROXMOX_OPENID_GIT} proxmox-openid-rs + fi git_clone_or_fetch https://git.proxmox.com/git/proxmox-backup.git git_clean_and_checkout ${PROXMOX_BACKUP_GIT} proxmox-backup sed -i '/dh-cargo\|cargo:native\|rustc:native\|librust-/d' proxmox-backup/debian/control - patch -p1 -d proxmox-backup/ < "${PATCHES}/proxmox-backup-build.patch" - [ "${BUILD_PACKAGE}" = "client" ] && \ - patch -p1 -d proxmox-backup/ < "${PATCHES}/proxmox-backup-client.patch" + if [ "${PBSVERSION}" = "pbs3" -a "${DISTNAME}" = "bullseye" ]; then + sed -i 's/libsgutils2-.*-2/libsgutils2-2/' proxmox-backup/debian/control + fi + patch -p1 -d proxmox-backup/ < "${PATCHES}/${PBSVERSION}/proxmox-backup-build.patch" + if [ "${BUILD_PACKAGE}" = "client" ]; then + patch -p1 -d proxmox-backup/ < "${PATCHES}/${PBSVERSION}/proxmox-backup-client.patch" + fi if [ "${PACKAGE_ARCH}" = "arm64" ]; then sed -i "s/x86_64-linux-gnu/aarch64-linux-gnu/" proxmox-backup/debian/proxmox-backup-file-restore.install sed -i "s/x86_64-linux-gnu/aarch64-linux-gnu/" proxmox-backup/debian/proxmox-backup-file-restore.postinst sed -i "s/x86_64-linux-gnu/aarch64-linux-gnu/" proxmox-backup/debian/proxmox-backup-server.install fi [[ "${BUILD_PROFILES}" =~ cross ]] && \ - patch -p1 -d proxmox-backup/ < "${PATCHES}/proxmox-backup-cross.patch" + patch -p1 -d proxmox-backup/ < "${PATCHES}/${PBSVERSION}/proxmox-backup-cross.patch" cd proxmox-backup/ set_package_info cargo vendor diff --git a/patches/proxmox-backup-build.patch b/patches/pbs2/proxmox-backup-build.patch similarity index 100% rename from patches/proxmox-backup-build.patch rename to patches/pbs2/proxmox-backup-build.patch diff --git a/patches/proxmox-backup-client.patch b/patches/pbs2/proxmox-backup-client.patch similarity index 100% rename from patches/proxmox-backup-client.patch rename to patches/pbs2/proxmox-backup-client.patch diff --git a/patches/proxmox-backup-cross.patch b/patches/pbs2/proxmox-backup-cross.patch similarity index 100% rename from patches/proxmox-backup-cross.patch rename to patches/pbs2/proxmox-backup-cross.patch diff --git a/patches/pbs3/proxmox-backup-build.patch b/patches/pbs3/proxmox-backup-build.patch new file mode 100644 index 0000000..175a8c4 --- /dev/null +++ b/patches/pbs3/proxmox-backup-build.patch @@ -0,0 +1,149 @@ +diff --git a/.cargo/config b/.cargo/config +index 3b5b6e48..50908c05 100644 +--- a/.cargo/config ++++ b/.cargo/config +@@ -1,5 +1,17 @@ +-[source] +-[source.debian-packages] +-directory = "/usr/share/cargo/registry" + [source.crates-io] +-replace-with = "debian-packages" ++replace-with = "vendored-sources" ++ ++[source."git://git.proxmox.com/git/pathpatterns.git"] ++git = "git://git.proxmox.com/git/pathpatterns.git" ++replace-with = "vendored-sources" ++ ++[source."git://git.proxmox.com/git/proxmox-fuse.git"] ++git = "git://git.proxmox.com/git/proxmox-fuse.git" ++replace-with = "vendored-sources" ++ ++[source."git://git.proxmox.com/git/pxar.git"] ++git = "git://git.proxmox.com/git/pxar.git" ++replace-with = "vendored-sources" ++ ++[source.vendored-sources] ++directory = "vendor" +diff --git a/Cargo.toml b/Cargo.toml +index 3662cf84..9e2a4a3a 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -239,31 +239,35 @@ proxmox-rrd.workspace = true + # Local path overrides + # NOTE: You must run `cargo update` after changing this for it to take effect! + [patch.crates-io] +-#proxmox-acme-rs = { path = "../proxmox-acme-rs" } +-#proxmox-async = { path = "../proxmox/proxmox-async" } +-#proxmox-auth-api = { path = "../proxmox/proxmox-auth-api" } +-#proxmox-borrow = { path = "../proxmox/proxmox-borrow" } +-#proxmox-compression = { path = "../proxmox/proxmox-compression" } +-#proxmox-fuse = { path = "../proxmox-fuse" } +-#proxmox-http = { path = "../proxmox/proxmox-http" } +-#proxmox-io = { path = "../proxmox/proxmox-io" } +-#proxmox-lang = { path = "../proxmox/proxmox-lang" } +-#proxmox-rest-server = { path = "../proxmox/proxmox-rest-server" } +-#proxmox-router = { path = "../proxmox/proxmox-router" } +-#proxmox-schema = { path = "../proxmox/proxmox-schema" } +-#proxmox-section-config = { path = "../proxmox/proxmox-section-config" } +-#proxmox-serde = { path = "../proxmox/proxmox-serde" } +-#proxmox-shared-memory = { path = "../proxmox/proxmox-shared-memory" } +-#proxmox-subscription = { path = "../proxmox/proxmox-subscription" } +-#proxmox-sys = { path = "../proxmox/proxmox-sys" } +-#proxmox-tfa = { path = "../proxmox/proxmox-tfa" } +-#proxmox-time = { path = "../proxmox/proxmox-time" } +-#proxmox-uuid = { path = "../proxmox/proxmox-uuid" } ++proxmox-acme-rs = { path = "../proxmox-acme-rs" } ++proxmox-async = { path = "../proxmox/proxmox-async" } ++proxmox-auth-api = { path = "../proxmox/proxmox-auth-api" } ++proxmox-borrow = { path = "../proxmox/proxmox-borrow" } ++proxmox-compression = { path = "../proxmox/proxmox-compression" } ++proxmox-fuse = { path = "../proxmox-fuse" } ++proxmox-http = { path = "../proxmox/proxmox-http" } ++proxmox-human-byte = { path = "../proxmox/proxmox-human-byte" } ++proxmox-io = { path = "../proxmox/proxmox-io" } ++proxmox-lang = { path = "../proxmox/proxmox-lang" } ++proxmox-ldap = { path = "../proxmox/proxmox-ldap" } ++proxmox-metrics = { path = "../proxmox/proxmox-metrics" } ++proxmox-rest-server = { path = "../proxmox/proxmox-rest-server" } ++proxmox-router = { path = "../proxmox/proxmox-router" } ++proxmox-schema = { path = "../proxmox/proxmox-schema" } ++proxmox-section-config = { path = "../proxmox/proxmox-section-config" } ++proxmox-serde = { path = "../proxmox/proxmox-serde" } ++proxmox-shared-memory = { path = "../proxmox/proxmox-shared-memory" } ++proxmox-sortable-macro = { path = "../proxmox/proxmox-sortable-macro" } ++proxmox-subscription = { path = "../proxmox/proxmox-subscription" } ++proxmox-sys = { path = "../proxmox/proxmox-sys" } ++proxmox-tfa = { path = "../proxmox/proxmox-tfa" } ++proxmox-time = { path = "../proxmox/proxmox-time" } ++proxmox-uuid = { path = "../proxmox/proxmox-uuid" } + +-#proxmox-apt = { path = "../proxmox-apt" } +-#proxmox-openid = { path = "../proxmox-openid-rs" } ++proxmox-apt = { path = "../proxmox/proxmox-apt" } ++proxmox-openid = { path = "../proxmox/proxmox-openid" } + +-#pxar = { path = "../pxar" } ++pxar = { path = "../pxar" } + + [features] + default = [] +diff --git a/debian/control b/debian/control +index 0b51f697..fcf0759a 100644 +--- a/debian/control ++++ b/debian/control +@@ -9,24 +9,24 @@ Build-Depends: bash-completion, + fonts-open-sans , + graphviz , + jq, +- latexmk , ++ latexmk:all , + libacl1-dev, + libfuse3-dev, + libsgutils2-dev, + libstd-rust-dev, + libsystemd-dev (>= 246-~~), +- patchelf, +- proxmox-widget-toolkit-dev , +- pve-eslint (>= 7.18.0~), ++ patchelf:native, ++ proxmox-widget-toolkit-dev:all , ++ pve-eslint:all (>= 7.18.0~), + python3-docutils, + python3-pygments, +- python3-sphinx , ++ python3-sphinx:all , + rsync, + texlive-fonts-extra , + texlive-fonts-recommended , + texlive-xetex , + uuid-dev, +- xindy , ++ xindy:native , + Maintainer: Proxmox Support Team + Standards-Version: 4.5.1 + Vcs-Git: git://git.proxmox.com/git/proxmox-backup.git +diff --git a/debian/rules b/debian/rules +index 54a3c22b..79c1ad76 100755 +--- a/debian/rules ++++ b/debian/rules +@@ -4,12 +4,9 @@ + DH_VERBOSE = 1 + + include /usr/share/dpkg/pkg-info.mk +-include /usr/share/rustc/architecture.mk + + export BUILD_MODE=release + +-CARGO=/usr/share/cargo/bin/cargo +- + export CFLAGS CXXFLAGS CPPFLAGS LDFLAGS + export DEB_HOST_RUST_TYPE DEB_HOST_GNU_TYPE + export CARGO_HOME = $(CURDIR)/debian/cargo_home +@@ -27,7 +24,6 @@ endif + override_dh_auto_configure: + @perl -ne 'if (/^version\s*=\s*"(\d+(?:\.\d+)+)"/) { my $$v_cargo = $$1; my $$v_deb = "$(DEB_VERSION_UPSTREAM)"; \ + die "ERROR: d/changelog <-> Cargo.toml version mismatch: $$v_cargo != $$v_deb\n" if $$v_cargo ne $$v_deb; exit(0); }' Cargo.toml +- $(CARGO) prepare-debian $(CURDIR)/debian/cargo_registry --link-from-system + dh_auto_configure + + override_dh_auto_build: diff --git a/patches/pbs3/proxmox-backup-client.patch b/patches/pbs3/proxmox-backup-client.patch new file mode 100644 index 0000000..b07bff3 --- /dev/null +++ b/patches/pbs3/proxmox-backup-client.patch @@ -0,0 +1,265 @@ +diff --git a/Makefile b/Makefile +index 92eed8a1..f3d632dc 100644 +--- a/Makefile ++++ b/Makefile +@@ -4,32 +4,21 @@ include defines.mk + PACKAGE := proxmox-backup + ARCH := $(DEB_BUILD_ARCH) + +-SUBDIRS := etc www docs ++SUBDIRS := docs + + # Binaries usable by users + USR_BIN := \ + proxmox-backup-client \ +- proxmox-file-restore \ +- pxar \ +- proxmox-tape \ +- pmtx \ +- pmt ++ pxar + + # Binaries usable by admins +-USR_SBIN := \ +- proxmox-backup-manager \ +- proxmox-backup-debug ++USR_SBIN := + + # Binaries for services: +-SERVICE_BIN := \ +- proxmox-backup-api \ +- proxmox-backup-banner \ +- proxmox-backup-proxy \ +- proxmox-daily-update ++SERVICE_BIN := + + # Single file restore daemon +-RESTORE_BIN := \ +- proxmox-restore-daemon ++RESTORE_BIN := + + SUBCRATES != cargo metadata --no-deps --format-version=1 \ + | jq -r .workspace_members'[]' \ +@@ -61,8 +50,8 @@ 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=${CLIENT_DEB} ${CLIENT_DBG_DEB} ++ + + DSC = rust-$(PACKAGE)_$(DEB_VERSION).dsc + +@@ -160,30 +149,11 @@ cargo-build: + $(COMPILED_BINS) $(COMPILEDIR)/dump-catalog-shell-cli $(COMPILEDIR)/docgen: .do-cargo-build + .do-cargo-build: + $(CARGO) build $(CARGO_BUILD_ARGS) \ +- --package proxmox-backup-banner \ +- --bin proxmox-backup-banner \ + --package proxmox-backup-client \ + --bin proxmox-backup-client \ + --bin dump-catalog-shell-cli \ +- --bin proxmox-backup-debug \ +- --package proxmox-file-restore \ +- --bin proxmox-file-restore \ + --package pxar-bin \ +- --bin pxar \ +- --package pbs-tape \ +- --bin pmt \ +- --bin pmtx \ +- --package proxmox-restore-daemon \ +- --bin proxmox-restore-daemon \ +- --package proxmox-backup \ +- --bin docgen \ +- --bin proxmox-backup-api \ +- --bin proxmox-backup-manager \ +- --bin proxmox-backup-proxy \ +- --bin proxmox-daily-update \ +- --bin proxmox-file-restore \ +- --bin proxmox-tape \ +- --bin sg-tape-cmd ++ --bin pxar + touch "$@" + + +@@ -192,25 +162,26 @@ lint: + cargo clippy -- -A clippy::all -D clippy::correctness + + install: $(COMPILED_BINS) ++ @echo "$(DESTDIR)" + install -dm755 $(DESTDIR)$(BINDIR) + install -dm755 $(DESTDIR)$(ZSH_COMPL_DEST) + $(foreach i,$(USR_BIN), \ +- install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(BINDIR)/ ; \ ++ install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)/$(BINDIR)/ ; \ + install -m644 zsh-completions/_$(i) $(DESTDIR)$(ZSH_COMPL_DEST)/ ;) + install -dm755 $(DESTDIR)$(SBINDIR) + $(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 -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/file-restore/ ;) + # install sg-tape-cmd as setuid binary +- install -m4755 -o root -g root $(COMPILEDIR)/sg-tape-cmd $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/sg-tape-cmd ++ #install -m4755 -o root -g root $(COMPILEDIR)/sg-tape-cmd $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/sg-tape-cmd + $(foreach i,$(SERVICE_BIN), \ + install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/ ;) +- $(MAKE) -C www install ++ #$(MAKE) -C www install + $(MAKE) -C docs install + + .PHONY: upload +diff --git a/debian/control b/debian/control +index 0b51f697..5b41f130 100644 +--- a/debian/control ++++ b/debian/control +@@ -20,7 +20,7 @@ Build-Depends: bash-completion, + pve-eslint:all (>= 7.18.0~), + python3-docutils, + python3-pygments, +- python3-sphinx:all , ++ python3-sphinx:all, + rsync, + texlive-fonts-extra , + texlive-fonts-recommended , +@@ -34,55 +34,9 @@ Vcs-Browser: https://git.proxmox.com/?p=proxmox-backup.git;a=summary + Homepage: https://www.proxmox.com + Rules-Requires-Root: binary-targets + +-Package: proxmox-backup-server +-Architecture: any +-Depends: fonts-font-awesome, +- libjs-extjs (>= 7~), +- libjs-qrcodejs (>= 1.20201119), +- libproxmox-acme-plugins, +- libsgutils2-1.46-2, +- libzstd1 (>= 1.3.8), +- lvm2, +- openssh-server, +- pbs-i18n, +- postfix | mail-transport-agent, +- proxmox-backup-docs, +- proxmox-mini-journalreader, +- proxmox-widget-toolkit (>= 3.5.2), +- pve-xtermjs (>= 4.7.0-1), +- sg3-utils, +- smartmontools, +- ${misc:Depends}, +- ${shlibs:Depends}, +-Recommends: ifupdown2, +- proxmox-mail-forward, +- proxmox-offline-mirror-helper, +- zfsutils-linux, +-Description: Proxmox Backup Server daemon with tools and GUI +- This package contains the Proxmox Backup Server daemons and related +- tools. This includes a web-based graphical user interface. +- + Package: proxmox-backup-client + Architecture: any + Depends: qrencode, ${misc:Depends}, ${shlibs:Depends}, + Description: Proxmox Backup Client tools + This package contains the Proxmox Backup client, which provides a + simple command line tool to create and restore backups. +- +-Package: proxmox-backup-docs +-Build-Profiles: +-Section: doc +-Depends: fonts-font-awesome, libjs-extjs, libjs-mathjax, ${misc:Depends}, +-Architecture: all +-Description: Proxmox Backup Documentation +- This package contains the Proxmox Backup Documentation files. +- +-Package: proxmox-backup-file-restore +-Architecture: any +-Depends: ${misc:Depends}, ${shlibs:Depends}, +-Recommends: proxmox-backup-restore-image, pve-qemu-kvm (>= 5.0.0-9), +-Breaks: proxmox-backup-restore-image (<< 0.3.1), +-Description: Proxmox Backup single file restore tools for pxar and block device backups +- This package contains the Proxmox Backup single file restore client for +- restoring individual files and folders from both host/container and VM/block +- device backups. It includes a block device restore driver using QEMU. +diff --git a/debian/rules b/debian/rules +index 79c1ad76..95b1b1bf 100755 +--- a/debian/rules ++++ b/debian/rules +@@ -37,12 +37,13 @@ override_dh_missing: + override_dh_auto_install: + dh_auto_install -- \ + PROXY_USER=backup \ +- LIBDIR=/usr/lib/$(DEB_HOST_MULTIARCH) ++ LIBDIR=/usr/lib/$(DEB_HOST_MULTIARCH) \ ++ DESTDIR=$(PWD)/debian/tmp + +-override_dh_installsystemd: +- dh_installsystemd -pproxmox-backup-server proxmox-backup-daily-update.timer ++#override_dh_installsystemd: ++# dh_installsystemd -pproxmox-backup-server proxmox-backup-daily-update.timer + # note: we start/try-reload-restart services manually in postinst +- dh_installsystemd --no-start --no-restart-after-upgrade --no-stop-on-upgrade ++# dh_installsystemd --no-start --no-restart-after-upgrade --no-stop-on-upgrade + + override_dh_fixperms: + dh_fixperms --exclude sg-tape-cmd +diff --git a/docs/Makefile b/docs/Makefile +index b06badff..32b51556 100644 +--- a/docs/Makefile ++++ b/docs/Makefile +@@ -1,49 +1,15 @@ + include ../defines.mk + + GENERATED_SYNOPSIS := \ +- proxmox-tape/synopsis.rst \ + proxmox-backup-client/synopsis.rst \ + proxmox-backup-client/catalog-shell-synopsis.rst \ +- proxmox-backup-manager/synopsis.rst \ +- proxmox-backup-debug/synopsis.rst \ +- proxmox-file-restore/synopsis.rst \ +- pxar/synopsis.rst \ +- pmtx/synopsis.rst \ +- pmt/synopsis.rst \ +- config/media-pool/config.rst \ +- config/tape/config.rst \ +- config/tape-job/config.rst \ +- config/user/config.rst \ +- config/remote/config.rst \ +- config/sync/config.rst \ +- config/verification/config.rst \ +- config/acl/roles.rst \ +- config/datastore/config.rst \ +- config/domains/config.rst ++ pxar/synopsis.rst + + MAN1_PAGES := \ + pxar.1 \ +- pmtx.1 \ +- pmt.1 \ +- proxmox-tape.1 \ +- proxmox-backup-proxy.1 \ +- proxmox-backup-client.1 \ +- proxmox-backup-manager.1 \ +- proxmox-file-restore.1 \ +- proxmox-backup-debug.1 \ +- pbs2to3.1 \ +- +-MAN5_PAGES := \ +- media-pool.cfg.5 \ +- tape.cfg.5 \ +- tape-job.cfg.5 \ +- acl.cfg.5 \ +- user.cfg.5 \ +- remote.cfg.5 \ +- sync.cfg.5 \ +- verification.cfg.5 \ +- datastore.cfg.5 \ +- domains.cfg.5 ++ proxmox-backup-client.1 ++ ++MAN5_PAGES := + + PRUNE_SIMULATOR_FILES := \ + prune-simulator/index.html \ diff --git a/patches/pbs3/proxmox-backup-cross.patch b/patches/pbs3/proxmox-backup-cross.patch new file mode 100644 index 0000000..95c6825 --- /dev/null +++ b/patches/pbs3/proxmox-backup-cross.patch @@ -0,0 +1,89 @@ +diff --git a/Makefile b/Makefile +index b307009d..45b2ac3c 100644 +--- a/Makefile ++++ b/Makefile +@@ -37,7 +37,7 @@ SUBCRATES != cargo metadata --no-deps --format-version=1 \ + + ifeq ($(BUILD_MODE), release) + CARGO_BUILD_ARGS += --release +-COMPILEDIR := target/release ++COMPILEDIR := target/aarch64-unknown-linux-gnu/release + else + COMPILEDIR := target/debug + endif +diff --git a/docs/Makefile b/docs/Makefile +index b06badff..a5eb4ce2 100644 +--- a/docs/Makefile ++++ b/docs/Makefile +@@ -85,7 +85,7 @@ SPHINXBUILD = sphinx-build + BUILDDIR = output + + ifeq ($(BUILD_MODE), release) +-COMPILEDIR := ../target/release ++COMPILEDIR := ../target/aarch64-unknown-linux-gnu/release + SPHINXOPTS += -t release + else + COMPILEDIR := ../target/debug +@@ -98,16 +98,16 @@ ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(SPHINXOPTS) . + all: ${MAN1_PAGES} ${MAN5_PAGES} + + config/%/config.rst: ${COMPILEDIR}/docgen +- ${COMPILEDIR}/docgen $*.cfg >$@ ++ qemu-aarch64 ${COMPILEDIR}/docgen $*.cfg >$@ + + config/acl/roles.rst: ${COMPILEDIR}/docgen +- ${COMPILEDIR}/docgen "config::acl::Role" >$@ ++ qemu-aarch64 ${COMPILEDIR}/docgen "config::acl::Role" >$@ + + %/synopsis.rst: ${COMPILEDIR}/% +- $< printdoc > $@ ++ qemu-aarch64 $< printdoc > $@ + + proxmox-backup-client/catalog-shell-synopsis.rst: ${COMPILEDIR}/dump-catalog-shell-cli +- ${COMPILEDIR}/dump-catalog-shell-cli > proxmox-backup-client/catalog-shell-synopsis.rst ++ qemu-aarch64 ${COMPILEDIR}/dump-catalog-shell-cli > proxmox-backup-client/catalog-shell-synopsis.rst + + ${MAN1_PAGES} ${MAN5_PAGES}: man-pages + +@@ -122,7 +122,7 @@ onlinehelpinfo: + @echo "Build finished. OnlineHelpInfo.js is in $(BUILDDIR)/scanrefs." + + api-viewer/apidata.js: ${COMPILEDIR}/docgen +- ${COMPILEDIR}/docgen apidata.js >$@ ++ qemu-aarch64 ${COMPILEDIR}/docgen apidata.js >$@ + + api-viewer/apidoc.js: ${API_VIEWER_FILES} + cat ${API_VIEWER_FILES} >$@.tmp +diff --git a/pxar-bin/tests/pxar.rs b/pxar-bin/tests/pxar.rs +index f2748598..0c31ee4f 100644 +--- a/pxar-bin/tests/pxar.rs ++++ b/pxar-bin/tests/pxar.rs +@@ -8,14 +8,15 @@ fn pxar_create_and_extract() { + let dest_dir = "../tests/catar_data/test_xattrs_dest/"; + + let exec_path = if cfg!(debug_assertions) { +- "../target/debug/pxar" ++ "../target/aarch64-unknown-linux-gnu/debug/pxar" + } else { +- "../target/release/pxar" ++ "../target/aarch64-unknown-linux-gnu/release/pxar" + }; + + println!("run '{} create archive.pxar {}'", exec_path, src_dir); + +- Command::new(exec_path) ++ Command::new("qemu-aarch64") ++ .arg(exec_path) + .arg("create") + .arg("./tests/archive.pxar") + .arg(src_dir) +@@ -24,7 +25,8 @@ fn pxar_create_and_extract() { + + println!("run '{} extract archive.pxar {}'", exec_path, dest_dir); + +- Command::new(exec_path) ++ Command::new("qemu-aarch64") ++ .arg(exec_path) + .arg("extract") + .arg("./tests/archive.pxar") + .arg("--target")