From: Kamil Trzcinski <ayufan@ayufan.eu>
To: pbs-devel@lists.proxmox.com
Cc: Kamil Trzcinski <ayufan@ayufan.eu>
Subject: [pbs-devel] [PATCH proxmox-backup] buildsys: make the build multi-arch
Date: Mon, 11 Aug 2025 11:06:28 +0200 [thread overview]
Message-ID: <20250811090628.184607-1-ayufan@ayufan.eu> (raw)
- fixes debian .install scripts to be `dh-exec`
- fixes hardcoded .rs paths to be platform-dependent
- fixes postinst to deduce architecture
Signed-off-by: Kamil Trzcinski <ayufan@ayufan.eu>
---
debian/proxmox-backup-file-restore.install | 3 ++-
debian/proxmox-backup-file-restore.postinst | 10 +++++++++-
debian/proxmox-backup-server.install | 11 ++++++-----
debian/rules | 1 +
pbs-buildcfg/src/lib.rs | 9 +++++++++
src/tape/drive/lto/mod.rs | 9 +++++++--
6 files changed, 34 insertions(+), 9 deletions(-)
mode change 100644 => 100755 debian/proxmox-backup-file-restore.install
mode change 100644 => 100755 debian/proxmox-backup-server.install
diff --git a/debian/proxmox-backup-file-restore.install b/debian/proxmox-backup-file-restore.install
old mode 100644
new mode 100755
index 409988a3..8b4034bd
--- a/debian/proxmox-backup-file-restore.install
+++ b/debian/proxmox-backup-file-restore.install
@@ -1,4 +1,5 @@
+#! /usr/bin/dh-exec
usr/bin/proxmox-file-restore
-usr/lib/x86_64-linux-gnu/proxmox-backup/file-restore/proxmox-restore-daemon
+usr/lib/${DEB_HOST_MULTIARCH}/proxmox-backup/file-restore/proxmox-restore-daemon
usr/share/man/man1/proxmox-file-restore.1
usr/share/zsh/vendor-completions/_proxmox-file-restore
diff --git a/debian/proxmox-backup-file-restore.postinst b/debian/proxmox-backup-file-restore.postinst
index c73893dd..86faf43a 100755
--- a/debian/proxmox-backup-file-restore.postinst
+++ b/debian/proxmox-backup-file-restore.postinst
@@ -3,8 +3,16 @@
set -e
update_initramfs() {
+ case "$(dpkg --print-architecture)" in
+ amd64) INST_PATH="/usr/lib/x86_64-linux-gnu/proxmox-backup/file-restore" ;;
+ arm64) INST_PATH="/usr/lib/aarch64-linux-gnu/proxmox-backup/file-restore" ;;
+ *)
+ echo "proxmox-backup-file-restore: architecture not supported, skipping update." >&2
+ exit 0
+ ;;
+ esac
+
# regenerate initramfs for single file restore VM
- INST_PATH="/usr/lib/x86_64-linux-gnu/proxmox-backup/file-restore"
CACHE_PATH="/var/cache/proxmox-backup/file-restore-initramfs.img"
CACHE_PATH_DBG="/var/cache/proxmox-backup/file-restore-initramfs-debug.img"
diff --git a/debian/proxmox-backup-server.install b/debian/proxmox-backup-server.install
old mode 100644
new mode 100755
index d06f026c..f305af37
--- a/debian/proxmox-backup-server.install
+++ b/debian/proxmox-backup-server.install
@@ -1,3 +1,4 @@
+#! /usr/bin/dh-exec
etc/pbs-enterprise.sources /etc/apt/sources.list.d/
etc/pbs-network-config-commit.service /usr/lib/systemd/system/
etc/proxmox-backup-banner.service /usr/lib/systemd/system/
@@ -9,11 +10,11 @@ etc/removable-device-attach@.service /usr/lib/systemd/system/
usr/bin/pmt
usr/bin/pmtx
usr/bin/proxmox-tape
-usr/lib/x86_64-linux-gnu/proxmox-backup/proxmox-backup-api
-usr/lib/x86_64-linux-gnu/proxmox-backup/proxmox-backup-banner
-usr/lib/x86_64-linux-gnu/proxmox-backup/proxmox-backup-proxy
-usr/lib/x86_64-linux-gnu/proxmox-backup/proxmox-daily-update
-usr/lib/x86_64-linux-gnu/proxmox-backup/sg-tape-cmd
+usr/lib/${DEB_HOST_MULTIARCH}/proxmox-backup/proxmox-backup-api
+usr/lib/${DEB_HOST_MULTIARCH}/proxmox-backup/proxmox-backup-banner
+usr/lib/${DEB_HOST_MULTIARCH}/proxmox-backup/proxmox-backup-proxy
+usr/lib/${DEB_HOST_MULTIARCH}/proxmox-backup/proxmox-daily-update
+usr/lib/${DEB_HOST_MULTIARCH}/proxmox-backup/sg-tape-cmd
usr/sbin/pbs3to4
usr/sbin/proxmox-backup-debug
usr/sbin/proxmox-backup-manager
diff --git a/debian/rules b/debian/rules
index ab48cce1..a5419da7 100755
--- a/debian/rules
+++ b/debian/rules
@@ -2,6 +2,7 @@
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
DH_VERBOSE = 1
+DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
include /usr/share/dpkg/pkg-info.mk
include /usr/share/rustc/architecture.mk
diff --git a/pbs-buildcfg/src/lib.rs b/pbs-buildcfg/src/lib.rs
index 3d087015..793d4cfd 100644
--- a/pbs-buildcfg/src/lib.rs
+++ b/pbs-buildcfg/src/lib.rs
@@ -52,12 +52,21 @@ macro_rules! PROXMOX_BACKUP_CACHE_DIR_M {
}
#[macro_export]
+#[cfg(target_arch = "x86_64")]
macro_rules! PROXMOX_BACKUP_FILE_RESTORE_BIN_DIR_M {
() => {
"/usr/lib/x86_64-linux-gnu/proxmox-backup/file-restore"
};
}
+#[macro_export]
+#[cfg(target_arch = "aarch64")]
+macro_rules! PROXMOX_BACKUP_FILE_RESTORE_BIN_DIR_M {
+ () => {
+ "/usr/lib/aarch64-linux-gnu/proxmox-backup/file-restore"
+ };
+}
+
/// namespaced directory for in-memory (tmpfs) run state
pub const PROXMOX_BACKUP_RUN_DIR: &str = PROXMOX_BACKUP_RUN_DIR_M!();
diff --git a/src/tape/drive/lto/mod.rs b/src/tape/drive/lto/mod.rs
index bd5ec8ae..0df15933 100644
--- a/src/tape/drive/lto/mod.rs
+++ b/src/tape/drive/lto/mod.rs
@@ -284,9 +284,14 @@ impl TapeDriver for LtoTapeHandle {
}
}
+#[cfg(target_arch = "x86_64")]
+const SG_TAPE_PATH: &str = "/usr/lib/x86_64-linux-gnu/proxmox-backup/sg-tape-cmd";
+
+#[cfg(target_arch = "aarch64")]
+const SG_TAPE_PATH: &str = "/usr/lib/aarch64-linux-gnu/proxmox-backup/sg-tape-cmd";
+
fn run_sg_tape_cmd(subcmd: &str, args: &[&str], fd: RawFd) -> Result<String, Error> {
- let mut command =
- std::process::Command::new("/usr/lib/x86_64-linux-gnu/proxmox-backup/sg-tape-cmd");
+ let mut command = std::process::Command::new(SG_TAPE_PATH);
command.args([subcmd]);
command.args(["--stdin"]);
command.args(args);
--
2.47.2
_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
next reply other threads:[~2025-08-21 9:04 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-11 9:06 Kamil Trzcinski [this message]
2025-09-03 8:58 ` Fabian Grünbichler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250811090628.184607-1-ayufan@ayufan.eu \
--to=ayufan@ayufan.eu \
--cc=pbs-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.