-
Notifications
You must be signed in to change notification settings - Fork 85
chore: add standalone toolchain build scripts #2400
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
chore: add standalone toolchain build scripts #2400
Conversation
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
How to use the Graphite Merge QueueAdd the label merge-queue to this PR to add it to the merge queue. You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
d341e1a
to
e987134
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PR Summary
Added comprehensive cross-platform build system for the Rivet CLI, enabling static binary compilation for Linux, macOS (x86_64/ARM64), and Windows platforms using Docker-based toolchains.
- Added
/docker/toolchain/linux.Dockerfile
with musl-based static linking and OpenSSL 1.1.1w configuration for portable Linux builds - Added
/docker/toolchain/macos.Dockerfile
with osxcross toolchain setup for both x86_64 and ARM64 macOS builds - Added
/docker/toolchain/windows.Dockerfile
with MinGW-w64 cross-compilation support for Windows builds - Added
/docker/toolchain/build.sh
with unified build orchestration supporting platform-specific compilation flags - Simplified Sentry integration in
/packages/toolchain/cli/Cargo.toml
by reducing feature flags to core functionality
7 file(s) reviewed, 6 comment(s)
Edit PR Review Bot Settings | Greptile
RUN --mount=type=cache,target=/usr/local/cargo/registry \ | ||
--mount=type=cache,target=/usr/local/cargo/git \ | ||
--mount=type=cache,target=/build/target \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
syntax: Inconsistent indentation between lines (tab vs spaces)
RUN for platform in ${PLATFORMS}; do \ | ||
echo "Building for $platform..." && \ | ||
cargo build --bin rivet --release --target $platform; \ | ||
done |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
logic: Build process should check for and handle build failures for individual platforms instead of continuing silently
RUN for platform in ${PLATFORMS}; do \ | |
echo "Building for $platform..." && \ | |
cargo build --bin rivet --release --target $platform; \ | |
done | |
RUN for platform in ${PLATFORMS}; do \ | |
echo "Building for $platform..." && \ | |
cargo build --bin rivet --release --target $platform || exit 1; \ | |
done |
BINARY="rivet-x86-linux" | ||
;; | ||
macos) | ||
if [ "$ARCH" == "arm64" ] || [ "$ARCH" == "aarch64" ]; then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
style: Use single equals for string comparison in shell scripts for better POSIX compatibility
if [ "$ARCH" == "arm64" ] || [ "$ARCH" == "aarch64" ]; then | |
if [ "$ARCH" = "arm64" ] || [ "$ARCH" = "aarch64" ]; then |
RUN --mount=type=cache,target=/usr/local/cargo/registry \ | ||
--mount=type=cache,target=/usr/local/cargo/git \ | ||
--mount=type=cache,target=/build/target \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
logic: Cache mounts should be unique per architecture to prevent potential conflicts between x86_64 and ARM64 builds
UNATTENDED=yes OSX_VERSION_MIN=10.7 ./build.sh | ||
echo 'export PATH="/root/osxcross/target/bin:$PATH"' >> ~/.bashrc |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
logic: PATH modification in .bashrc won't take effect in non-interactive shells. Consider exporting PATH directly in the script.
UNATTENDED=yes OSX_VERSION_MIN=10.7 ./build.sh | |
echo 'export PATH="/root/osxcross/target/bin:$PATH"' >> ~/.bashrc | |
UNATTENDED=yes OSX_VERSION_MIN=10.7 ./build.sh | |
export PATH="/root/osxcross/target/bin:$PATH" |
ENV CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER=x86_64-w64-mingw32-gcc \ | ||
RUSTFLAGS="--cfg tokio_unstable" \ | ||
CARGO_INCREMENTAL=0 \ | ||
CARGO_NET_GIT_FETCH_WITH_CLI=true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
style: Consider adding CARGO_TARGET_X86_64_PC_WINDOWS_GNU_RUSTFLAGS to ensure Windows-specific flags are properly isolated from other targets
Deploying rivet with
|
Latest commit: |
332e7ff
|
Status: | ✅ Deploy successful! |
Preview URL: | https://5607c8f0.rivet.pages.dev |
Branch Preview URL: | https://04-26-chore-add-standalone-t.rivet.pages.dev |
c0718f7
to
90ca82c
Compare
Dockerfiles don't work identical to GitHub Actions, unsure why |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PR Summary
The PR updates the release workflow to integrate the new standalone toolchain build system, focusing on Docker-based builds and artifact management.
- Modified
.github/workflows/release.yaml
to use new Docker-based toolchain scripts instead of direct dependency installation - Added R2 storage integration for binary artifacts with AWS CLI configuration in release workflow
- Added platform-specific build matrix configuration with ARM64 support for macOS builds
- Streamlined Docker image tagging and pushing with consistent naming conventions across architectures
8 file(s) reviewed, 1 comment(s)
Edit PR Review Bot Settings | Greptile
RUN --mount=type=cache,target=/usr/local/cargo/registry \ | ||
--mount=type=cache,target=/usr/local/cargo/git \ | ||
--mount=type=cache,target=/build/target \ | ||
cargo build --bin rivet --release --target x86_64-unknown-linux-musl -v && \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
style: Add --locked flag to cargo build to ensure reproducible builds
cargo build --bin rivet --release --target x86_64-unknown-linux-musl -v && \ | |
cargo build --bin rivet --release --target x86_64-unknown-linux-musl --locked -v && \ |
90ca82c
to
78080b4
Compare
4648476
to
ff549fe
Compare
78080b4
to
37a6983
Compare
Deploying rivet-studio with
|
Latest commit: |
78080b4
|
Status: | ✅ Deploy successful! |
Preview URL: | https://266444e1.rivet-studio.pages.dev |
Branch Preview URL: | https://graphite-base-2406.rivet-studio.pages.dev |
e029e29
to
0a94837
Compare
37a6983
to
e0734e0
Compare
e0734e0
to
332e7ff
Compare
Changes