vector icon indicating copy to clipboard operation
vector copied to clipboard

feat(platforms): add s390x architecture support

Open binhnguyenduc opened this issue 1 month ago • 2 comments

Summary

This PR adds complete s390x (IBM System/390) architecture support to Vector, enabling the project to be built, packaged, and published for s390x Linux systems. The implementation follows the existing patterns used for other architectures (aarch64, armv7, arm) and includes:

  • Cross-compilation configuration
  • CI/CD workflow integration for building packages
  • Package generation (tar.gz, DEB, RPM)
  • Multi-platform Docker image support
  • Integration with the publish workflow for S3, GitHub releases, and Docker Hub

This change enables Vector to run natively on IBM Z and LinuxONE systems, expanding platform support for users in enterprise and mainframe environments.

Vector configuration

No Vector configuration changes are required. This PR only adds build and packaging infrastructure for the s390x architecture. Users on s390x systems will be able to use Vector with the same configuration options as other supported architectures.

How did you test this PR?

Testing approach:

  1. Verified all modified workflow files pass YAML validation
  2. Confirmed Cross.toml configuration follows the established pattern for other architectures
  3. Verified Makefile targets follow naming conventions used for arm/aarch64 targets
  4. Confirmed Cargo.toml metadata is consistent with other architecture variants
  5. Validated that the publish.yml workflow correctly includes s390x in all relevant jobs:
    • Build job for s390x packages
    • Artifact downloads in publish-docker, publish-s3, publish-github
    • SHA256 checksum generation
    • Docker multi-platform build with linux/s390x

Note: Full end-to-end testing requires s390x hardware or emulation and will be validated through the CI pipeline once merged.

Change Type

  • [ ] Bug fix
  • [x] New feature
  • [ ] Non-functional (chore, refactoring, docs)
  • [ ] Performance

Is this a breaking change?

  • [ ] Yes
  • [x] No

Does this PR include user facing changes?

  • [ ] Yes. Please add a changelog fragment based on our guidelines.
  • [x] No. A maintainer will apply the no-changelog label to this PR.

User-facing impact: Users on s390x architecture will now be able to download and install pre-built Vector packages (tar.gz, DEB, RPM) and use the official Docker images on s390x systems.

References

N/A - This is a new platform support addition without an associated issue.

Notes

Implementation Details

Modified Files:

  1. .github/workflows/cross.yml - Added s390x to cross-compilation matrix
  2. .github/workflows/publish.yml - Added complete s390x build and publish pipeline integration
  3. Cross.toml - Added s390x Docker image configuration for cross-compilation
  4. Cargo.toml - Added s390x target features and DEB package metadata
  5. Makefile - Added build, package, DEB, and RPM targets for s390x

Key Design Decisions:

  • Follows the exact same pattern as existing architectures (arm, aarch64, armv7)
  • Uses the generic parameterized scripts/cross/Dockerfile (no architecture-specific dockerfile needed)
  • Includes full integration with all publish workflows (Docker, S3, GitHub releases, checksums)
  • Targets s390x-unknown-linux-gnu (GNU libc) which is the standard for enterprise s390x Linux distributions

Pre-push Checklist Completed:

  • [x] make fmt - Code formatting applied
  • [x] Configuration files validated (YAML syntax, Makefile syntax, TOML syntax)
  • [x] Changes follow existing patterns and conventions
  • [ ] make check-clippy - N/A (no Rust code changes)
  • [ ] make test - N/A (no functional code changes)
  • [ ] make build-licenses - N/A (no dependency changes)

binhnguyenduc avatar Nov 06 '25 04:11 binhnguyenduc

Could you please add the no-changelog label to this PR? This PR only adds build and packaging infrastructure for the s390x architecture. Users on s390x architecture will now be able to download and install pre-built Vector packages (tar.gz, DEB, RPM) and use the official Docker images on s390x systems. Existing users of other platforms are not affected in anyway.

Thanks!

binhnguyenduc avatar Nov 06 '25 14:11 binhnguyenduc

Thank you @binhnguyenduc for taking the time to put together this comprehensive PR. However, we have some concerns about accepting s390x (or any new platform) as an officially supported platform mainly due to the support burden it introduces. We understand this isn't the answer you were hoping for, but we I have to be transparent about our capacity constraints.

An alternative that might work for you: Create a third-party distribution for s390x. This PR already demonstrates how to create and publish a build, you should be able to just publish to another image registry. Maintaining a fork with a custom publish.yml should be easy but it would be even better and cleaner if you introduce a new workflow just for this build (avoids merge conflcits). Happy to discuss how to make third party builds easier to maintain (feel free to create an discussion or issue).

pront avatar Nov 18 '25 15:11 pront