Skip to content

Pin prebuilt riscv64 binary to glibc 2.31 (cargo-zigbuild) - #19

Merged
kako-jun merged 2 commits into
mainfrom
18-release-binary-glibc-floor
Sep 17, 2026
Merged

kako-jun merged 2 commits into
mainfrom
18-release-binary-glibc-floor

Conversation

@kako-jun

@kako-jun kako-jun commented Sep 17, 2026

Copy link
Copy Markdown
Owner

closes #18

Rebased on main after #17 merged.

変更内容

riscfetch-linux-riscv64 が v2.3.1 で GLIBC_2.39 を要求してしまい、Ubuntu 22.04 (glibc 2.35) の RISC-V ボード (Allwinner D1 系) で動かない退行を修正。

  • release.yml / ci.yml (build-riscv): apt の gcc-riscv64-linux-gnu + .cargo/config.toml linker 追記をやめ、cargo-zigbuildriscv64gc-unknown-linux-gnu.2.31 を明示ターゲットにビルド(ランナー image の glibc に依存しない)。mlugg/setup-zig@v2version: 0.16.0 を明示固定
  • 両 workflow のビルド直後に objdump -T ... | grep GLIBC_ で GLIBC_2.31 超のシンボルが無いことを機械検証するステップを追加(違反すればジョブが落ちる、set -euo pipefail 明示)
  • ci.ymlbuild-riscvupload-artifact を追加し、PR 段階でも実機スモークできるようにした
  • Build for RISC-V ステップに zig の非致命的警告に関する注記コメントを追加
  • CHANGELOG.md: Sync ratified extensions (Ziccid/Sspmp/Zicfilp/Zicfiss) and tier vendor detection keywords #17 でリリース済みの [2.4.0] - 2026-09-17 セクション内に ### Fixed として統合([Unreleased] は削除)
  • README / README.ja / README.zh-CN: GitHub Releases のインストール手順に glibc >= 2.31 の注記を追加

Verification

  • floor 比較式 test "$(printf 'GLIBC_2.31\n%s\n' "$max" | sort -V | tail -1)" = "GLIBC_2.31" をローカル bash で実行して確認: max=GLIBC_2.35(floor超過)は非0終了、max=GLIBC_2.30(floor未満)は0終了。floor 違反時に検証が確実に落ちることを確認した
  • 手元の dist-ci/riscfetch(cargo-zigbuild ビルド済み riscv64 バイナリ)に strings dist-ci/riscfetch | grep -o 'GLIBC_[0-9.]*' | sort -uV | tail -1 を実行し、実測最大シンボルは GLIBC_2.30(floor 2.31 を満たす)と確認した(Mac に riscv64 用 objdump が無いため strings で代替)
  • CI artifact runs on Ubuntu 22.04 (glibc 2.35, Allwinner D1) and Ubuntu 24.04 (SpacemiT K1)

@kako-jun
kako-jun changed the base branch from main to 15-16-sync-extensions-vendor-detection September 17, 2026 01:57
@kako-jun
kako-jun force-pushed the 18-release-binary-glibc-floor branch from 718c426 to f4afb27 Compare September 17, 2026 01:59
release.yml と ci.yml の build-riscv を apt の gcc-riscv64-linux-gnu クロス
ツールチェーンから cargo-zigbuild ベースのビルドに置き換え、
riscv64gc-unknown-linux-gnu.2.31 を明示指定してランナー image の glibc に
依存しないようにした。ビルド直後に objdump で GLIBC_2.31 超のシンボルが
無いことを機械検証し、ci.yml の build-riscv にも upload-artifact を追加して
PR 段階で実機スモークできるようにした。
レビュー指摘を反映:
- mlugg/setup-zig@v2 に version: 0.16.0 を明示(CI実測ログで取得されていたバージョン)
- glibc floor 検証ステップの run: | 冒頭に set -euo pipefail を明示
- Build for RISC-V ステップ直前に zig の非致命的警告に関する注記コメントを追加
- リベースにより CHANGELOG.md の [Unreleased] を削除し、[2.4.0] - 2026-09-17 の
  Added/Changed の後ろに Fixed セクションとして統合(#17 のバージョン更新と競合しないように)

Verification:
- floor 比較式 `test "$(printf 'GLIBC_2.31\n%s\n' "$max" | sort -V | tail -1)" = "GLIBC_2.31"` を
  ローカル bash で実行して確認: max=GLIBC_2.35(floor超過)は非0終了、max=GLIBC_2.30(floor未満)は0終了。
  floor 違反時に検証が確実に落ちることを確認した。
- 手元の dist-ci/riscfetch(cargo-zigbuild ビルド済み riscv64 バイナリ)に対し
  `strings dist-ci/riscfetch | grep -o 'GLIBC_[0-9.]*' | sort -uV | tail -1` を実行し、
  実測最大シンボルは GLIBC_2.30(floor 2.31 を満たす)と確認した(Mac に riscv64 用 objdump が無いため strings で代替)。
@kako-jun
kako-jun force-pushed the 18-release-binary-glibc-floor branch from f4afb27 to 0fd982a Compare September 17, 2026 02:30
@kako-jun
kako-jun changed the base branch from 15-16-sync-extensions-vendor-detection to main September 17, 2026 02:30
@kako-jun kako-jun closed this Sep 17, 2026
@kako-jun kako-jun reopened this Sep 17, 2026
@kako-jun
kako-jun merged commit 5523c75 into main Sep 17, 2026
4 checks passed
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.

Release binary requires GLIBC_2.39 and fails on Ubuntu 22.04 boards (Allwinner D1 etc.)

1 participant