Merge pull request #450 from LebedevRI/debian

Debian: cross-build support
This commit is contained in:
koverstreet 2025-10-06 18:17:10 -04:00 committed by GitHub
commit c98059d35e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 74 additions and 52 deletions

View File

@ -247,14 +247,6 @@ jobs:
if [ "${{ inputs.dist-name }}" = "debian" ]; if [ "${{ inputs.dist-name }}" = "debian" ];
then then
MIRROR="http://deb.debian.org/debian" MIRROR="http://deb.debian.org/debian"
elif [ "${{ inputs.dist-name }}" = "ubuntu" ] && [ "${{ inputs.build-arch }}" = "amd64" ];
then
MIRROR="http://archive.ubuntu.com/ubuntu"
elif [ "${{ inputs.dist-name }}" = "ubuntu" ] && [ "${{ inputs.build-arch }}" != "amd64" ];
then
MIRROR="http://ports.ubuntu.com/ubuntu-ports"
else
exit 1
fi fi
if [ "${{ inputs.dist-name }}" = "debian" ]; if [ "${{ inputs.dist-name }}" = "debian" ];
then then
@ -287,16 +279,27 @@ jobs:
fi fi
if [ "${{ inputs.dist-name }}" = "ubuntu" ]; if [ "${{ inputs.dist-name }}" = "ubuntu" ];
then then
MIRROR="http://archive.ubuntu.com/ubuntu"
tee -a ~/.sbuildrc > /dev/null <<EOT tee -a ~/.sbuildrc > /dev/null <<EOT
push @{\$unshare_mmdebstrap_extra_args}, "*", [ push @{\$unshare_mmdebstrap_extra_args}, "*", [
'$MIRROR',
'--keyring=$KEYRING', '--keyring=$KEYRING',
'--components=main,universe' '--components=main,universe',
'deb [arch=amd64] $MIRROR ${{ inputs.dist-version }} main universe',
'deb [arch=amd64] $MIRROR ${{ inputs.dist-version }}-updates main universe',
'deb [arch=amd64] $MIRROR ${{ inputs.dist-version }}-security main universe',
'deb [arch=amd64] $MIRROR ${{ inputs.dist-version }}-backports main universe',
]; ];
\$extra_repositories = [ EOT
'deb $MIRROR ${{ inputs.dist-version }}-updates main universe', fi
'deb $MIRROR ${{ inputs.dist-version }}-security main universe', if [ "${{ inputs.dist-name }}" = "ubuntu" ] && [ "${{ inputs.host-arch }}" != "amd64" ];
'deb $MIRROR ${{ inputs.dist-version }}-backports main universe', then
MIRROR_PORTS="http://ports.ubuntu.com/ubuntu-ports"
tee -a ~/.sbuildrc > /dev/null <<EOT
push @{\$unshare_mmdebstrap_extra_args}, "*", [
'deb [arch=${{ inputs.host-arch }}] $MIRROR_PORTS ${{ inputs.dist-version }} main universe',
'deb [arch=${{ inputs.host-arch }}] $MIRROR_PORTS ${{ inputs.dist-version }}-updates main universe',
'deb [arch=${{ inputs.host-arch }}] $MIRROR_PORTS ${{ inputs.dist-version }}-security main universe',
'deb [arch=${{ inputs.host-arch }}] $MIRROR_PORTS ${{ inputs.dist-version }}-backports main universe',
]; ];
EOT EOT
fi fi

View File

@ -37,7 +37,7 @@ jobs:
matrix: matrix:
stack: stack:
- { runs-on: "ubuntu-24.04", machine-arch: "amd64", build-arch: "amd64", host-arch: "amd64" } - { runs-on: "ubuntu-24.04", machine-arch: "amd64", build-arch: "amd64", host-arch: "amd64" }
- { runs-on: "ubuntu-24.04", machine-arch: "amd64", build-arch: "ppc64el", host-arch: "ppc64el" } - { runs-on: "ubuntu-24.04", machine-arch: "amd64", build-arch: "amd64", host-arch: "ppc64el" }
- { runs-on: "ubuntu-24.04-arm", machine-arch: "arm64", build-arch: "arm64", host-arch: "arm64" } - { runs-on: "ubuntu-24.04-arm", machine-arch: "arm64", build-arch: "arm64", host-arch: "arm64" }
dist: dist:
- { name: debian, version: unstable } - { name: debian, version: unstable }
@ -45,6 +45,19 @@ jobs:
- { name: debian, version: trixie } # Debian 13 - { name: debian, version: trixie } # Debian 13
- { name: ubuntu, version: questing } # Ubuntu 25.10 (Questing Quokka) Beta - { name: ubuntu, version: questing } # Ubuntu 25.10 (Questing Quokka) Beta
- { name: ubuntu, version: plucky } # Ubuntu 25.04 (Plucky Puffin) - { name: ubuntu, version: plucky } # Ubuntu 25.04 (Plucky Puffin)
exclude:
- stack: { runs-on: "ubuntu-24.04", machine-arch: "amd64", build-arch: "amd64", host-arch: "ppc64el" }
dist: { name: ubuntu, version: questing }
# cross-build broken, package conflicts
- stack: { runs-on: "ubuntu-24.04", machine-arch: "amd64", build-arch: "amd64", host-arch: "ppc64el" }
dist: { name: ubuntu, version: plucky }
# cross-build broken, broken packages
# # If someone asks for ubuntu ppc64el packages, these can be reenabled:
# include:
# - stack: { runs-on: "ubuntu-24.04", machine-arch: "amd64", build-arch: "ppc64el", host-arch: "ppc64el" }
# dist: { name: ubuntu, version: questing }
# - stack: { runs-on: "ubuntu-24.04", machine-arch: "amd64", build-arch: "ppc64el", host-arch: "ppc64el" }
# dist: { name: ubuntu, version: plucky }
uses: ./.github/workflows/deb-buildd.yml uses: ./.github/workflows/deb-buildd.yml
with: with:
deb-src-artifact-id: ${{ needs.source-only.outputs.deb-src-artifact-id }} deb-src-artifact-id: ${{ needs.source-only.outputs.deb-src-artifact-id }}

12
debian/control vendored
View File

@ -4,17 +4,21 @@ Section: utils
Priority: optional Priority: optional
Standards-Version: 4.7.0 Standards-Version: 4.7.0
Build-Depends: debhelper-compat (= 13), Build-Depends: debhelper-compat (= 13),
cargo, cargo:native,
dh-cargo,
dh-dkms, dh-dkms,
gcc:native,
jq, jq,
libaio-dev, libaio-dev,
libblkid-dev, libblkid-dev,
libclang-dev, libclang-dev:native,
libfuse3-dev, libfuse3-dev,
libkeyutils-dev, libkeyutils-dev,
liblz4-dev, liblz4-dev,
libscrypt-dev, libscrypt-dev,
libsodium-dev, libsodium-dev,
libstd-rust-dev,
libstd-rust-dev:native,
libudev-dev, libudev-dev,
liburcu-dev (>= 0.15), liburcu-dev (>= 0.15),
libzstd-dev, libzstd-dev,
@ -22,7 +26,7 @@ Build-Depends: debhelper-compat (= 13),
pkgconf, pkgconf,
python3-docutils, python3-docutils,
python3:native, python3:native,
rustc (>= 1.77), rustc:native (>= 1.77),
systemd-dev, systemd-dev,
uuid-dev, uuid-dev,
zlib1g-dev, zlib1g-dev,
@ -41,6 +45,8 @@ Breaks: bcachefs-kernel-dkms (<< ${binary:Version}),
bcachefs-kernel-dkms (>> ${binary:Version}), bcachefs-kernel-dkms (>> ${binary:Version}),
Replaces: bcachefs-kernel-dkms (<< ${binary:Version}), Replaces: bcachefs-kernel-dkms (<< ${binary:Version}),
bcachefs-kernel-dkms (>> ${binary:Version}), bcachefs-kernel-dkms (>> ${binary:Version}),
Built-Using: ${cargo:Built-Using}
Static-Built-Using: ${cargo:Static-Built-Using}
Description: bcachefs userspace tools Description: bcachefs userspace tools
Userspace tools for bcachefs, a modern copy on write, checksumming, multi Userspace tools for bcachefs, a modern copy on write, checksumming, multi
device filesystem. device filesystem.

68
debian/rules vendored
View File

@ -1,35 +1,37 @@
#!/usr/bin/make -f #!/usr/bin/make -f
include /usr/share/dpkg/architecture.mk export DH_VERBOSE = 1
export DPKG_EXPORT_BUILDFLAGS = 1
export DPKG_EXPORT_BUILDTOOLS = 1
export DEB_BUILD_OPTIONS += nolto
export DEB_BUILD_MAINT_OPTIONS += optimize=-lto
export DEB_BUILD_MAINT_OPTIONS += hardening=+all
include /usr/share/dpkg/default.mk
include /usr/share/rustc/architecture.mk include /usr/share/rustc/architecture.mk
export DH_VERBOSE=1 export DEB_HOST_RUST_TYPE
export DEB_HOST_GNU_TYPE
export DEB_HOST_RUST_TYPE DEB_HOST_GNU_TYPE export PATH := /usr/share/cargo/bin:$(PATH)
export CARGO = /usr/share/cargo/bin/cargo
export CARGO_HOME = $(CURDIR)/debian/cargo_home
export DEB_CARGO_CRATE = bcachefs-tools_$(DEB_VERSION_UPSTREAM)
export DEB_BUILD_MAINT_OPTIONS=hardening=+all export PKG_CONFIG = ${DEB_HOST_MULTIARCH}-pkg-config
export CARGO=/usr/share/cargo/bin/cargo export PKG_CONFIG_PATH = /usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig:/usr/share/pkgconfig
export CARGO_HOME=$(CURDIR)/debian/cargo_home export PKG_CONFIG_LIBDIR = /usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig
export DEB_CARGO_CRATE=bcachefs-tools_$(DEB_VERSION_UPSTREAM)
NUMJOBS = 1
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
MAKEFLAGS += -j$(NUMJOBS)
endif
PREFIX := /usr PREFIX := /usr
ROOT_SBINDIR := /usr/sbin ROOT_SBINDIR := /usr/sbin
export PREFIX ROOT_SBINDIR export PREFIX ROOT_SBINDIR
DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH) export CARGO_ARGS = --frozen
export CARGO_BUILD_TARGET = ${DEB_HOST_RUST_TYPE}
ifeq ($(DEB_BUILD_ARCH),amd64)
DEB_BUILD_MAINT_OPTIONS += optimize=-lto
endif
export CARGO_ARGS = "--frozen"
# WARNING: split debug info makes the package unreproducible! # WARNING: split debug info makes the package unreproducible!
# #
@ -49,25 +51,23 @@ export CARGO_ARGS = "--frozen"
%: %:
dh $@ --parallel --with dkms dh $@ --parallel --with dkms
override_dh_auto_clean:
$(CARGO) prepare-debian vendor
dh_auto_clean
override_dh_auto_configure:
$(CARGO) prepare-debian vendor
dh_auto_configure
override_dh_clean: override_dh_clean:
# HACK: breaks cargo checksumming by deleting some vendored files. # HACK: breaks cargo checksumming by deleting some vendored files.
cargo_config:
rm -rf .cargo
mkdir -p .cargo
cp debian/cargo.config .cargo/config.toml
override_dh_auto_build:
$(MAKE) -f debian/rules cargo_config
dh_auto_build
override_dh_auto_clean:
$(MAKE) -f debian/rules cargo_config
dh_auto_clean
rm -rf .cargo
override_dh_usrlocal: override_dh_usrlocal:
# FIXME: fails with # FIXME: fails with
# dh_usrlocal: error: debian/bcachefs-tools/usr/local/libexec/bcachefsck_all is not a directory # dh_usrlocal: error: debian/bcachefs-tools/usr/local/libexec/bcachefsck_all is not a directory
override_dh_auto_test: override_dh_auto_test:
# Generate (Static-)Built-Using
execute_after_dh_auto_install:
/usr/share/cargo/bin/dh-cargo-built-using bcachefs-tools