Skip to content

Refactor most workflows, add cross-rs for cross-compilation, and add new build targets - #584

Open
7d4d9e33 wants to merge 19 commits into
redlib-org:mainfrom
7d4d9e33:gh-actions-rebase2
Open

7d4d9e33 wants to merge 19 commits into
redlib-org:mainfrom
7d4d9e33:gh-actions-rebase2

Conversation

@7d4d9e33

@7d4d9e33 7d4d9e33 commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

Overview

Cleaned up and split GitHub Actions setup, added cross-rs, and introduced a few new build targets.

Changes

  • Workflow Split & Cleanup:

    • Replaced pull-request.yml by splitting tests into code-test.yml and lints/formatting into lint-check.yml. Both run on push.
    • Use actions-rust-lang/rustfmt action instead of running rustfmt directly on lint-check.yml for its GitHub problem matcher output in the UI.
    • Moved version extraction into its own reusable workflow (parse-version.yml).
    • Added dedicated pr-*.yml workflows so PR workflow runs don't clutter up regular push runs in GitHub Actions history.
  • Artifacts & Releases:

    • build-artifacts.yaml now just uploads workflow artifacts on push/PR instead of creating GitHub releases.
    • Added optional debug profile builds alongside release in build-artifacts.yaml.
    • Added create-release.yml with workflow_dispatch to manually bundle release archives and create a draft release on GitHub when needed.
  • Cross-Compilation (cross-rs) & Target Updates:

    • Added Cross.toml and switched compilation steps to use cross. This makes cross-compiling easier in general and avoids header/LLVM conflict issues during MinGW builds on Ubuntu environments.
    • New build targets added:
      • x86_64-pc-windows-gnu (Windows 10+ 64-bit) (7728447)
      • i686-unknown-linux-musl (Linux 32-bit musl)
      • i586-unknown-linux-musl (Older Linux 32-bit musl, disabled for now due to low demand)
      • i686-pc-windows-gnu (Windows 10+ 32-bit, disabled for now due to boring-sys2 build failures)
    • Existing targets (x86_64-unknown-linux-musl, aarch64-unknown-linux-musl, armv7-unknown-linux-musleabihf) were kept and now build through cross.

Notes

  • create-release.yml hasn't been tested on draft release creation yet, but I tested generating the release artifact bundle containing all files.

@7d4d9e33 7d4d9e33 changed the title Refactor workflows, add cross-rs for cross-compilation, and add new build targets Refactor most workflows, add cross-rs for cross-compilation, and add new build targets Oct 11, 2026
boringssl either require sse2 as baseline or disable assembly optimizations, otherwise compilation will fail
latest cross image seems to not include clang (headers) anymore, so we have to install them ourselves
just in case anyone needs it
follow upstream
…onfig

i am not sure this can be touched, comment for that packages kept for reference later on
Comment thread Cross.toml
]

[target.x86_64-pc-windows-gnu]
image = "ghcr.io/cross-rs/x86_64-pc-windows-gnu:main"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The main reason i used main version instead of default cross-rs image is to be able to pick newer nasm, otherwise compilation will fail because curent stable cross-rs image uses very old version of Ubuntu (18.04) thus nasm also outdated.

Linux targets seems to not suffer from this issue.

Same goes for i686-pc-windows-gnu target

musl-tools still required outside cross-rs environment
usually not needed on GitHub Actions, but just to be safe
didn't review changes properly again...
it needs libstdc++-6.dll (btls requires this) and possibly others now which cannot be easily provided within artifact
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant