From e2bab5b49df2bcf956a8a596a74dcf0d1c0cd83c Mon Sep 17 00:00:00 2001 From: Lierfang Support Team Date: Thu, 31 Jul 2025 12:37:32 +0000 Subject: [PATCH] Add crossbuild --- .cargo/config.toml | 34 +++++++++++++--- Makefile | 15 +++---- debian/control | 4 +- debian/proxmox-backup-file-restore.install | 2 +- debian/rules | 47 ++++++++++++++++++++-- 5 files changed, 83 insertions(+), 19 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index a439c97b2..88a11a06f 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,8 +1,32 @@ -[source] -[source.debian-packages] -directory = "/usr/share/cargo/registry" [source.crates-io] -replace-with = "debian-packages" +replace-with = "dh-cargo-registry" + +[source.dh-cargo-registry] +directory = "/root/proxmox-backup/debian/cargo_registry" + +[build] +rustflags = ['-C', 'debuginfo=2', '-C', 'strip=none', '--cap-lints', 'warn', '--remap-path-prefix', '/root/proxmox-backup=/usr/share/cargo/registry/proxmox-backup-4.0.6', '--remap-path-prefix', '/root/proxmox-backup/debian/cargo_registry=/usr/share/cargo/registry'] [profile.release] -debug=true +debug = true + +[target.x86_64-unknown-linux-gnu] +linker = "x86_64-linux-gnu-gcc" +ar = "x86_64-linux-gnu-ar" +rustflags = [ + "-L", "/usr/lib/x86_64-linux-gnu", +] + +[target.riscv64gc-unknown-linux-gnu] +linker = "riscv64-linux-gnu-gcc" +ar = "riscv64-linux-gnu-ar" +rustflags = [ + "-L", "/usr/lib/riscv64-linux-gnu", +] + +[target.aarch64-unknown-linux-gnu] +linker = "aarch64-linux-gnu-gcc" +ar = "aarch64-linux-gnu-ar" +rustflags = [ + "-L", "/usr/lib/aarch64-linux-gnu", +] diff --git a/Makefile b/Makefile index 276fa1692..e95a9dc15 100644 --- a/Makefile +++ b/Makefile @@ -90,7 +90,7 @@ DESTDIR= tests ?= --workspace -all: proxmox-backup-client-static $(SUBDIRS) +all: $(SUBDIRS) .PHONY: $(SUBDIRS) $(SUBDIRS): @@ -129,21 +129,21 @@ build: .PHONY: proxmox-backup-docs $(DOC_DEB) $(DEBS): proxmox-backup-docs proxmox-backup-docs: build - cd build; dpkg-buildpackage -b -us -uc --no-pre-clean + cd build; dpkg-buildpackage -b -us -uc --no-pre-clean -a$(ARCH) lintian $(DOC_DEB) .PHONY: deb dsc deb-nodoc deb-nostrip deb-nodoc: build - cd build; dpkg-buildpackage -b -us -uc --no-pre-clean --build-profiles=nodoc + cd build; dpkg-buildpackage -b -us -uc --no-pre-clean --build-profiles=nodoc -a$(ARCH) lintian $(DEBS) deb-nostrip: build - cd build; DEB_BUILD_OPTIONS=nostrip dpkg-buildpackage -b -us -uc + cd build; DEB_BUILD_OPTIONS=nostrip dpkg-buildpackage -b -us -uc -a$(ARCH) lintian $(DEBS) $(DOC_DEB) $(DEBS): deb deb: build - cd build; dpkg-buildpackage -b -us -uc + cd build; dpkg-buildpackage -b -us -uc -a$(ARCH) lintian $(DEBS) $(DOC_DEB) .PHONY: dsc @@ -212,6 +212,7 @@ $(COMPILED_BINS) $(COMPILEDIR)/dump-catalog-shell-cli $(COMPILEDIR)/docgen &: .PHONY: proxmox-backup-client-static proxmox-backup-client-static: + export CRATE_CC_NO_DEFAULTS=0 $(MAKE) $(STATIC_BINS) $(STATIC_BINS) &: @@ -247,8 +248,8 @@ install: $(COMPILED_BINS) $(STATIC_BINS) 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/ ;) - install -m755 $(STATIC_COMPILEDIR)/proxmox-backup-client $(DESTDIR)$(BINDIR)/proxmox-backup-client-static - install -m755 $(STATIC_COMPILEDIR)/pxar $(DESTDIR)$(BINDIR)/pxar-static + # install -m755 $(STATIC_COMPILEDIR)/proxmox-backup-client $(DESTDIR)$(BINDIR)/proxmox-backup-client-static + # install -m755 $(STATIC_COMPILEDIR)/pxar $(DESTDIR)$(BINDIR)/pxar-static $(MAKE) -C www install $(MAKE) -C docs install $(MAKE) -C templates install diff --git a/debian/control b/debian/control index 052cb519f..945a55654 100644 --- a/debian/control +++ b/debian/control @@ -65,7 +65,7 @@ Build-Depends: bash-completion, librust-proxmox-apt-0.99+default-dev, librust-proxmox-apt-api-types-2+default-dev, librust-proxmox-async-0.5+default-dev, - librust-proxmox-auth-api-1+api-dev (>= 1.0.2), + librust-proxmox-auth-api-1+api-dev , librust-proxmox-auth-api-1+default-dev, librust-proxmox-auth-api-1+pam-authenticator-dev, librust-proxmox-base64-1+default-dev, @@ -161,11 +161,9 @@ Build-Depends: bash-completion, librust-zstd-0.13+default-dev, librust-zstd-safe-7+default-dev, libsgutils2-dev, - libstd-rust-dev, libsystemd-dev (>= 246-~~), patchelf, proxmox-widget-toolkit-dev , - proxmox-biome, python3-docutils, python3-pygments, python3-sphinx , diff --git a/debian/proxmox-backup-file-restore.install b/debian/proxmox-backup-file-restore.install index 409988a34..1dc6e87c6 100644 --- a/debian/proxmox-backup-file-restore.install +++ b/debian/proxmox-backup-file-restore.install @@ -1,4 +1,4 @@ usr/bin/proxmox-file-restore -usr/lib/x86_64-linux-gnu/proxmox-backup/file-restore/proxmox-restore-daemon +usr/lib/riscv64-linux-gnu/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/rules b/debian/rules index ab48cce19..1b78394eb 100755 --- a/debian/rules +++ b/debian/rules @@ -22,6 +22,50 @@ export CARGO=/usr/share/cargo/bin/cargo export CFLAGS CXXFLAGS CPPFLAGS LDFLAGS export DEB_HOST_RUST_TYPE DEB_HOST_GNU_TYPE +export CRATE_CC_NO_DEFAULTS=1 +# Set cross-compilation environment variables for OpenSSL and C libraries +# ifeq ($(DEB_HOST_ARCH),riscv64) +# export CC_riscv64gc_unknown_linux_gnu=riscv64-linux-gnu-gcc +# export CXX_riscv64gc_unknown_linux_gnu=riscv64-linux-gnu-g++ +# export AR_riscv64gc_unknown_linux_gnu=riscv64-linux-gnu-ar +# export CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_LINKER=riscv64-linux-gnu-gcc +# export CRATE_CC_NO_DEFAULTS=1 +# export CFLAGS_riscv64gc_unknown_linux_gnu=-fPIC +# export CXXFLAGS_riscv64gc_unknown_linux_gnu=-fPIC +# export PKG_CONFIG_riscv64gc_unknown_linux_gnu=riscv64-linux-gnu-pkg-config +# export PKG_CONFIG_PATH_riscv64gc_unknown_linux_gnu=/usr/lib/riscv64-linux-gnu/pkgconfig +# export PKG_CONFIG_LIBDIR_riscv64gc_unknown_linux_gnu=/usr/lib/riscv64-linux-gnu/pkgconfig +# export RISCV64GC_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR=/usr/lib/riscv64-linux-gnu +# export RISCV64GC_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR=/usr/include +# endif +# ifeq ($(DEB_HOST_ARCH),arm64) +# export CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc +# export CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++ +# export AR_aarch64_unknown_linux_gnu=aarch64-linux-gnu-ar +# export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc +# export CFLAGS_aarch64_unknown_linux_gnu=-fPIC +# export CXXFLAGS_aarch64_unknown_linux_gnu=-fPIC +# export PKG_CONFIG_aarch64_unknown_linux_gnu=aarch64-linux-gnu-pkg-config +# export PKG_CONFIG_PATH_aarch64_unknown_linux_gnu=/usr/lib/aarch64-linux-gnu/pkgconfig +# export PKG_CONFIG_LIBDIR_aarch64_unknown_linux_gnu=/usr/lib/aarch64-linux-gnu/pkgconfig +# export AARCH64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR=/usr/lib/aarch64-linux-gnu +# export AARCH64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR=/usr/include +# endif + +# ifeq ($(DEB_HOST_ARCH),loong64) +# export CC_loongarch64_unknown_linux_gnu=loongarch64-linux-gnu-gcc +# export CXX_loongarch64_unknown_linux_gnu=loongarch64-linux-gnu-g++ +# export AR_loongarch64_unknown_linux_gnu=loongarch64-linux-gnu-ar +# export CARGO_TARGET_LOONGARCH64_UNKNOWN_LINUX_GNU_LINKER=loongarch64-linux-gnu-gcc +# export CFLAGS_loongarch64_unknown_linux_gnu=-fPIC +# export CXXFLAGS_loongarch64_unknown_linux_gnu=-fPIC +# export PKG_CONFIG_loongarch64_unknown_linux_gnu=loongarch64-linux-gnu-pkg-config +# export PKG_CONFIG_PATH_loongarch64_unknown_linux_gnu=/usr/lib/loongarch64-linux-gnu/pkgconfig +# export PKG_CONFIG_LIBDIR_loongarch64_unknown_linux_gnu=/usr/lib/loongarch64-linux-gnu/pkgconfig +# export LOONGARCH64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR=/usr/lib/loongarch64-linux-gnu +# export LOONGARCH64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR=/usr/include +# endif + export CARGO_HOME = $(CURDIR)/debian/cargo_home export DEB_CARGO_CRATE=proxmox-backup_$(DEB_VERSION_UPSTREAM) @@ -60,9 +104,6 @@ override_dh_auto_install: dh_auto_install -- \ PROXY_USER=backup \ LIBDIR=/usr/lib/$(DEB_HOST_MULTIARCH) - mkdir -p debian/proxmox-backup-client-static/usr/bin - mv debian/tmp/usr/bin/proxmox-backup-client-static debian/proxmox-backup-client-static/usr/bin/proxmox-backup-client - mv debian/tmp/usr/bin/pxar-static debian/proxmox-backup-client-static/usr/bin/pxar override_dh_installsystemd: dh_installsystemd -pproxmox-backup-server proxmox-backup-daily-update.timer