1
0
Fork 0
mirror of https://github.com/imjasonh/krust synced 2026-07-18 06:56:13 +00:00

feat: Expand platform support to match Alpine's supported architectures

- Add support for linux/386 (i686-unknown-linux-musl)
- Add support for linux/arm/v6 (arm-unknown-linux-musleabihf)
- Add support for linux/ppc64le (powerpc64le-unknown-linux-musl)
- Add support for linux/s390x (s390x-unknown-linux-musl)
- Add support for linux/riscv64 (riscv64gc-unknown-linux-musl)
- Update platform detection to include all new platforms
- Add tests for all new platform mappings
- Update documentation with installation instructions for all targets
- Add CI job to test extended platform support
- Update development setup docs to mention cargo-zigbuild for full platform support

This allows krust to build images for all platforms supported by Alpine Linux,
making it more versatile for multi-architecture container deployments.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Jason Hall 2025-06-08 00:07:56 -04:00
parent 2517939b30
commit 1f730645c3
Failed to extract signature
5 changed files with 145 additions and 3 deletions

View file

@ -42,6 +42,32 @@ rustup target add aarch64-unknown-linux-musl
# For linux/arm/v7
rustup target add armv7-unknown-linux-musleabihf
# For linux/arm/v6
rustup target add arm-unknown-linux-musleabihf
# For linux/386
rustup target add i686-unknown-linux-musl
# For linux/ppc64le
rustup target add powerpc64le-unknown-linux-musl
# For linux/s390x
rustup target add s390x-unknown-linux-musl
# For linux/riscv64
rustup target add riscv64gc-unknown-linux-musl
# Or install all supported targets at once
rustup target add \
x86_64-unknown-linux-musl \
aarch64-unknown-linux-musl \
armv7-unknown-linux-musleabihf \
arm-unknown-linux-musleabihf \
i686-unknown-linux-musl \
powerpc64le-unknown-linux-musl \
s390x-unknown-linux-musl \
riscv64gc-unknown-linux-musl
```
#### macOS Cross-compilation Setup
@ -52,6 +78,9 @@ On macOS, you'll need a cross-compilation toolchain:
# Install musl cross-compilation tools
brew install filosottile/musl-cross/musl-cross
# Note: The musl-cross formula typically only includes x86_64 and aarch64 toolchains.
# For other architectures, you may need additional toolchains or use Docker/remote builders.
# Create a .cargo/config.toml in your project with:
cat > .cargo/config.toml << 'EOF'
[target.x86_64-unknown-linux-musl]
@ -59,6 +88,11 @@ linker = "x86_64-linux-musl-gcc"
[target.aarch64-unknown-linux-musl]
linker = "aarch64-linux-musl-gcc"
# For other architectures, you'll need to install the appropriate cross-compiler
# or use cargo-zigbuild which can target all platforms:
# cargo install cargo-zigbuild
# Then build with: cargo zigbuild --target <target>
EOF
```
@ -125,6 +159,11 @@ krust build -- --features=prod
- `linux/amd64` (x86_64-unknown-linux-musl)
- `linux/arm64` (aarch64-unknown-linux-musl)
- `linux/arm/v7` (armv7-unknown-linux-musleabihf)
- `linux/arm/v6` (arm-unknown-linux-musleabihf)
- `linux/386` (i686-unknown-linux-musl)
- `linux/ppc64le` (powerpc64le-unknown-linux-musl)
- `linux/s390x` (s390x-unknown-linux-musl)
- `linux/riscv64` (riscv64gc-unknown-linux-musl)
### Multi-Architecture Images
@ -320,9 +359,21 @@ cd krust
brew install messense/macos-cross-toolchains/x86_64-unknown-linux-musl
brew install messense/macos-cross-toolchains/aarch64-unknown-linux-musl
# Install Rust targets
# For full platform support, consider using cargo-zigbuild:
cargo install cargo-zigbuild
# Install Rust targets (at minimum for tests)
rustup target add x86_64-unknown-linux-musl
rustup target add aarch64-unknown-linux-musl # Optional, for ARM64 support
rustup target add aarch64-unknown-linux-musl
# For full platform support, add all targets:
rustup target add \
armv7-unknown-linux-musleabihf \
arm-unknown-linux-musleabihf \
i686-unknown-linux-musl \
powerpc64le-unknown-linux-musl \
s390x-unknown-linux-musl \
riscv64gc-unknown-linux-musl
# Install pre-commit hooks
pip install pre-commit