all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH proxmox-backup] buildsys: make the build multi-arch
@ 2025-08-11  9:06 Kamil Trzcinski
  2025-09-03  8:58 ` Fabian Grünbichler
  0 siblings, 1 reply; 2+ messages in thread
From: Kamil Trzcinski @ 2025-08-11  9:06 UTC (permalink / raw)
  To: pbs-devel; +Cc: Kamil Trzcinski

- 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


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [pbs-devel] [PATCH proxmox-backup] buildsys: make the build multi-arch
  2025-08-11  9:06 [pbs-devel] [PATCH proxmox-backup] buildsys: make the build multi-arch Kamil Trzcinski
@ 2025-09-03  8:58 ` Fabian Grünbichler
  0 siblings, 0 replies; 2+ messages in thread
From: Fabian Grünbichler @ 2025-09-03  8:58 UTC (permalink / raw)
  To: Proxmox Backup Server development discussion; +Cc: Kamil Trzcinski

hi!

thanks for this patch, some comments below to make this simpler/easier
to maintain going forward..

On August 11, 2025 11:06 am, Kamil Trzcinski wrote:
> - 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

this can instead use a * wildcard, since the package build should never
install for more than one architecture anyway..

>  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

this is already available in $DPKG_MAINTSCRIPT_ARCH

> +        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

same as above

>  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) 

and then this could be skipped

>  
>  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";

we could move the base dir to buildcfg above, then we only need a single
#cfg-ed definition instead of repeating it for all paths..

> +
>  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
> 
> 
> 


_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-09-03  8:58 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-08-11  9:06 [pbs-devel] [PATCH proxmox-backup] buildsys: make the build multi-arch Kamil Trzcinski
2025-09-03  8:58 ` Fabian Grünbichler

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