Skip to content

deps: fix aarch64 and macOS builds - #232

Merged
AndreaGuarracino merged 7 commits into
mainfrom
ag/onecode-aarch64
Jul 25, 2026
Merged

deps: fix aarch64 and macOS builds#232
AndreaGuarracino merged 7 commits into
mainfrom
ag/onecode-aarch64

Conversation

@AndreaGuarracino

@AndreaGuarracino AndreaGuarracino commented Jul 25, 2026

Copy link
Copy Markdown
Member

Fixes the three platforms that v0.5.1 still could not build. linux-64 already passes on bioconda.

linux-aarch64. onecode cast line types and string pointers to a concrete i8, the same c_char width bug as lib_wfa2: i8 on x86-64, u8 on aarch64-linux. 19 type errors. Fixed upstream in onecode-rs 5fa1e93.

osx-64. wfmash-rs forced Homebrew GCC even when CC and CXX were already set. Under conda that GCC cannot parse the Xcode SDK headers and fails with unknown type name 'FILE'. The environment now wins.

osx-arm64. With no Homebrew GCC it fell back to clang 19, which rejects Base::template do_pop_any(...) in the vendored atomic_queue.h, since there is no template argument list. GCC accepts it. Removed in 4 places.

onecode and fastga-rs were pinned in several crates and every copy gets compiled, so all were bumped. The lock file now holds one copy each of onecode, fastga-rs, wfmash-rs, lib_wfa2 and sweepga.

572 tests pass.

onecode cast line types and string pointers to a concrete i8, the same c_char
width bug that broke lib_wfa2 on aarch64. Pinning onecode in fastga-rs and
sweepga as well collapses the duplicate copies, so one build of each remains.
wfmash-rs forced Homebrew GCC on macOS even when CC and CXX were already set.
Under conda that GCC cannot parse the Xcode SDK headers. Its vendored
atomic_queue.h also used the template keyword with no argument list, which
clang 19 rejects.
@AndreaGuarracino AndreaGuarracino changed the title deps: fix onecode on aarch64 deps: fix aarch64 and macOS builds Jul 25, 2026
No repo tested aarch64-linux, which is why the c_char bugs in lib_wfa2 and
onecode reached a release. macos-latest is arm64 but c_char is signed there, so
those casts compiled fine and only bioconda's linux-aarch64 job caught them.
Found by the new linux-aarch64 CI job: fastga-rs cast 'g' to a concrete i8 when
calling onecode's oneGoto.
syng passed *mut i8 to syng_ffi, which takes c_char. That is u8 on
aarch64-linux, so the build failed there while x86-64 and macOS were fine.
syng.rs:3081 already used the c_char form; the rest now match.
char is signed on x86-64 and unsigned on aarch64. syng assumes signed, and on
aarch64 syngBWTadvanceRank reached a negative node and aborted the test suite.
The flag is a no-op where char is already signed.
@AndreaGuarracino
AndreaGuarracino merged commit 11d2f07 into main Jul 25, 2026
3 checks passed
@AndreaGuarracino
AndreaGuarracino deleted the ag/onecode-aarch64 branch July 25, 2026 18:56
@AndreaGuarracino AndreaGuarracino mentioned this pull request Jul 25, 2026
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