diff --git a/build.sh b/build.sh index 1f41d6a..01f5981 100755 --- a/build.sh +++ b/build.sh @@ -274,9 +274,9 @@ EOF cd "${SOURCES}" -PROXMOX_BACKUP_VER="3.2.7-1" -PROXMOX_BACKUP_GIT="cb3d41e838dec0e1002aaf5ee4c0e6cd28284c74" -PROXMOX_GIT="0652d81977a3a35a6f1b046faf0768246a71a8bf" +PROXMOX_BACKUP_VER="3.2.8-1" +PROXMOX_BACKUP_GIT="6c44f3e584ceefdb24dd7ae016965542229200f2" +PROXMOX_GIT="1b70270b2d5ca6ee38c8ea8610135b74cd786d30" PATHPATTERNS_GIT="281894a5b66099e919d167cd5f0644fff6aca234" # 0.3.0-1 PXAR_GIT="ebe402c01c736eb6b822d984cda48538c0b7bf87" # 0.12.0-1 PROMXOX_FUSE_GIT="8d57fb64f044ea3dcfdef77ed5f1888efdab0708" # 0.1.4 @@ -298,6 +298,11 @@ if [ ! -e "${PACKAGES}/proxmox-backup-${BUILD_PACKAGE}_${PROXMOX_BACKUP_VER}_${P sed -i '/dh-cargo\|cargo:native\|rustc:native\|librust-/d' proxmox-backup/debian/control sed -i 's/\(patchelf\|xindy\)\b/\1:native/' proxmox-backup/debian/control sed -i 's/\(latexmk\|proxmox-widget-toolkit-dev\|pve-eslint\|python3-sphinx\)/\1:all/' proxmox-backup/debian/control + sed -i '/patch.crates-io/,/pxar/s/^#//' proxmox-backup/Cargo.toml + # Add missing proxmox-shared-cache in 3.2.8-1 + sed -i '/^proxmox-shared-memory.*path/aproxmox-shared-cache = { path = "../proxmox/proxmox-shared-cache" }' proxmox-backup/Cargo.toml + # fix compile error due different http versions + sed -i 's#^h2 = { version = "0.4"#h2 = { version = "0.3"#' proxmox-backup/Cargo.toml patch -p1 -d proxmox-backup/ < "${PATCHES}/proxmox-backup-build.patch" if [ "${BUILD_PACKAGE}" = "client" ]; then patch -p1 -d proxmox-backup/ < "${PATCHES}/proxmox-backup-client.patch" diff --git a/patches/proxmox-arm64.patch b/patches/proxmox-arm64.patch index 6384a2b..f384c8a 100644 --- a/patches/proxmox-arm64.patch +++ b/patches/proxmox-arm64.patch @@ -1,22 +1,13 @@ -diff --git a/proxmox-sys/src/crypt.rs b/proxmox-sys/src/crypt.rs -index 3313f668..c254e761 100644 ---- a/proxmox-sys/src/crypt.rs -+++ b/proxmox-sys/src/crypt.rs -@@ -71,7 +71,7 @@ pub fn crypt(password: &[u8], salt: &[u8]) -> Result { - // > output field of their data argument, and crypt writes an invalid hash to its static - // > storage area. This string will be shorter than 13 characters, will begin with a ‘*’, - // > and will not compare equal to setting. -- if data.output.first().is_none() || Some(&('*' as i8)) == data.output.first() { -+ if data.output.first().is_none() || Some(&('*' as u8)) == data.output.first() { - bail!("internal error: crypt_r returned invalid hash"); - } - CStr::from_ptr(&data.output as *const _) -@@ -133,7 +133,7 @@ pub fn crypt_gensalt(prefix: &str, count: u64, rbytes: &[u8]) -> Result>( + // Push NULL byte so that we have a proper NULL-terminated string + template.push(0); +- let returned_buffer = unsafe { libc::mkdtemp(template.as_mut_ptr() as *mut i8) }; ++ let returned_buffer = unsafe { libc::mkdtemp(template.as_mut_ptr() as *mut u8) }; + + // Check errno immediately, so that nothing else can overwrite it. + let err = std::io::Error::last_os_error(); diff --git a/patches/proxmox-backup-build.patch b/patches/proxmox-backup-build.patch index e9fd7ac..e9b6cce 100644 --- a/patches/proxmox-backup-build.patch +++ b/patches/proxmox-backup-build.patch @@ -27,80 +27,8 @@ index a439c97b..a95ae483 100644 [profile.release] debug=true -diff --git a/Cargo.toml b/Cargo.toml -index 7013a468..632f3b80 100644 ---- a/Cargo.toml -+++ b/Cargo.toml -@@ -247,37 +247,37 @@ proxmox-rrd.workspace = true - # NOTE: You must run `cargo update` after changing this for it to take effect! - [patch.crates-io] - --#proxmox-apt = { path = "../proxmox/proxmox-apt" } --#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-notify = { path = "../proxmox/proxmox-notify" } --#proxmox-openid = { path = "../proxmox/proxmox-openid" } --#proxmox-rest-server = { path = "../proxmox/proxmox-rest-server" } --#proxmox-router = { path = "../proxmox/proxmox-router" } --#proxmox-rrd = { path = "../proxmox/proxmox-rrd" } --#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/proxmox-apt" } -+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-notify = { path = "../proxmox/proxmox-notify" } -+proxmox-openid = { path = "../proxmox/proxmox-openid" } -+proxmox-rest-server = { path = "../proxmox/proxmox-rest-server" } -+proxmox-router = { path = "../proxmox/proxmox-router" } -+proxmox-rrd = { path = "../proxmox/proxmox-rrd" } -+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-acme = { path = "../proxmox/proxmox-acme" } --#pathpatterns = {path = "../pathpatterns" } --#pxar = { path = "../pxar" } -+proxmox-acme = { path = "../proxmox/proxmox-acme" } -+pathpatterns = {path = "../pathpatterns" } -+pxar = { path = "../pxar" } - - [features] - default = [] diff --git a/debian/rules b/debian/rules -index a82c3e12..79c1ad76 100755 +index a03fe11b..79c1ad76 100755 --- a/debian/rules +++ b/debian/rules @@ -4,12 +4,9 @@ @@ -116,11 +44,16 @@ index a82c3e12..79c1ad76 100755 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 +@@ -27,12 +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 +- # `cargo build` and `cargo install` have different config precedence, symlink +- # the wrapper config into a place where `build` picks it up as well.. +- # https://doc.rust-lang.org/cargo/commands/cargo-install.html#configuration-discovery +- mkdir -p .cargo +- ln -s $(CARGO_HOME)/config.toml $(CURDIR)/.cargo/config.toml dh_auto_configure override_dh_auto_build: diff --git a/patches/proxmox-backup-client.patch b/patches/proxmox-backup-client.patch index 927afe2..93e596c 100644 --- a/patches/proxmox-backup-client.patch +++ b/patches/proxmox-backup-client.patch @@ -210,64 +210,64 @@ index 79c1ad76..95b1b1bf 100755 override_dh_fixperms: dh_fixperms --exclude sg-tape-cmd diff --git a/docs/Makefile b/docs/Makefile -index d23796b7..950cd644 100644 +index d98302ff..8ee7d4e9 100644 --- a/docs/Makefile +++ b/docs/Makefile -@@ -1,53 +1,15 @@ +@@ -1,57 +1,18 @@ 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/notifications/config.rst \ -- config/notifications-priv/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 +- config/domains/config.rst \ +- config/media-pool/config.rst \ +- config/notifications-priv/config.rst \ +- config/notifications/config.rst \ +- config/remote/config.rst \ +- config/sync/config.rst \ +- config/tape-job/config.rst \ +- config/tape/config.rst \ +- config/user/config.rst \ +- config/verification/config.rst \ +- pmt/synopsis.rst \ +- pmtx/synopsis.rst \ + proxmox-backup-client/catalog-shell-synopsis.rst \ + proxmox-backup-client/synopsis.rst \ +- proxmox-backup-debug/synopsis.rst \ +- proxmox-backup-manager/synopsis.rst \ +- proxmox-file-restore/synopsis.rst \ +- proxmox-tape/synopsis.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 \ +- pmt.1 \ +- pmtx.1 \ + proxmox-backup-client.1 \ +- proxmox-backup-debug.1 \ +- proxmox-backup-manager.1 \ +- proxmox-backup-proxy.1 \ +- proxmox-file-restore.1 \ +- proxmox-tape.1 \ + pxar.1 \ + + # FIXME: prefix all man pages that are not directly relating to an existing executable with + # `proxmox-backup.`, like the newer added proxmox-backup.node.cfg but add backwards compatible + # symlinks, e.g. with a "5pbs" man page "suffix section". + MAN5_PAGES := \ - acl.cfg.5 \ -- user.cfg.5 \ -- remote.cfg.5 \ -- sync.cfg.5 \ -- verification.cfg.5 \ - datastore.cfg.5 \ - domains.cfg.5 \ -- notifications.cfg.5 \ +- media-pool.cfg.5 \ +- proxmox-backup.node.cfg.5 \ - notifications-priv.cfg.5 \ -+ proxmox-backup-client.1 -+ -+MAN5_PAGES := +- notifications.cfg.5 \ +- remote.cfg.5 \ +- sync.cfg.5 \ +- tape-job.cfg.5 \ +- tape.cfg.5 \ +- user.cfg.5 \ +- verification.cfg.5 \ PRUNE_SIMULATOR_FILES := \ prune-simulator/index.html \ diff --git a/patches/proxmox-backup-cross.patch b/patches/proxmox-backup-cross.patch index c3792c0..0a37ebb 100644 --- a/patches/proxmox-backup-cross.patch +++ b/patches/proxmox-backup-cross.patch @@ -1,8 +1,8 @@ diff --git a/docs/Makefile b/docs/Makefile -index 950cd644..1ba51c00 100644 +index d98302ff..72af586d 100644 --- a/docs/Makefile +++ b/docs/Makefile -@@ -65,16 +65,16 @@ ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(SPHINXOPTS) . +@@ -107,16 +107,16 @@ ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(SPHINXOPTS) . all: ${MAN1_PAGES} ${MAN5_PAGES} config/%/config.rst: ${COMPILEDIR}/docgen @@ -23,7 +23,7 @@ index 950cd644..1ba51c00 100644 ${MAN1_PAGES} ${MAN5_PAGES}: man-pages -@@ -89,7 +89,7 @@ onlinehelpinfo: +@@ -131,7 +131,7 @@ onlinehelpinfo: @echo "Build finished. OnlineHelpInfo.js is in $(BUILDDIR)/scanrefs." api-viewer/apidata.js: ${COMPILEDIR}/docgen @@ -33,7 +33,7 @@ index 950cd644..1ba51c00 100644 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 23559bad..2b6f9a4a 100644 +index 2da02990..0d54716d 100644 --- a/pxar-bin/tests/pxar.rs +++ b/pxar-bin/tests/pxar.rs @@ -17,7 +17,8 @@ fn pxar_create_and_extract() { @@ -56,13 +56,33 @@ index 23559bad..2b6f9a4a 100644 .arg("extract") .arg("./tests/archive.pxar") .arg("--target") -@@ -91,7 +93,8 @@ fn pxar_list_with_payload_input() { - format!("../target/{target_subdir}/release/pxar") - }; +@@ -96,7 +98,8 @@ fn pxar_split_archive_test() { -- let output = Command::new(exec_path) + println!("run '{exec_path} create archive.mpxar {src_dir} --payload-output archive.ppxar'"); + +- Command::new(&exec_path) ++ Command::new("qemu-aarch64") ++ .arg(&exec_path) + .arg("create") + .arg("./tests/archive.mpxar") + .arg(src_dir) +@@ -104,7 +107,8 @@ fn pxar_split_archive_test() { + .status() + .unwrap_or_else(|err| panic!("Failed to invoke '{exec_path}': {err}")); + +- let output = Command::new(&exec_path) + let output = Command::new("qemu-aarch64") + .arg(&exec_path) - .args([ - "list", - "../tests/pxar/backup-client-pxar-expected.mpxar", + .arg("list") + .arg("./tests/archive.mpxar") + .arg("--payload-input=./tests/archive.ppxar") +@@ -125,7 +129,8 @@ fn pxar_split_archive_test() { + + println!("run '{exec_path} extract archive.mpxar {dest_dir} --payload-input archive.ppxar'"); + +- Command::new(&exec_path) ++ Command::new("qemu-aarch64") ++ .arg(&exec_path) + .arg("extract") + .arg("./tests/archive.mpxar") + .arg("--payload-input=./tests/archive.ppxar")