all lists on lists.proxmox.com
 help / color / mirror / Atom feed
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


             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.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal