Repository navigation
fix(build): pin proot 5.1.107.97, the version Termux still serves - #393
Merged
Merged
Conversation
Termux dropped proot 5.1.107.96 from packages.termux.dev (404 on every mirror it was on; grimler.se answers with a body that does not match the pinned SHA-256). A CI run that misses the generated-runtime cache then fails in :app:prepareOpenCodeRuntimeAssets before any test starts, as the re-run of the #388 merge commit did twice. - Refresh runtime_tools/termux_assets.lock.json with `prepare_android_runtime_assets.py --lock-only`. Only proot changes (5.1.107.96 -> 5.1.107.97, new filename and SHA-256 for arm64-v8a and x86_64); libandroid-shmem and libtalloc are unchanged. - Mirror the matching termux-packages recipe: only TERMUX_PKG_VERSION and TERMUX_PKG_SHA256 differ from the previous one. - Point THIRD_PARTY_NOTICES.md and its offline copy at the 5.1.107.97 source archive and SHA-256. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xw2ucui6t6dQdyGRrnCbHb
The mirror is now at proot 5.1.107.97 while the fdroid pin still builds 5.1.107.94, so "a version or two" no longer describes the gap. Applies a non-blocking suggestion of the pre-PR review, in both the root document and its offline copy. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xw2ucui6t6dQdyGRrnCbHb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Termux removed
proot5.1.107.96 frompackages.termux.dev. Every mirror that carried it now answers 404, and grimler.se returns a body that does not match the pinned SHA-256 (a different hash on each attempt). A CI run that misses the generated-runtime cache then fails in:app:prepareOpenCodeRuntimeAssetsbefore any test starts. That is what happened to theAndroid CIrun of the #388 merge commit (2dbba4c8), twice; the run of the next merge commit (6268d158) passed, so the code onmainis fine and only the pinned download is stale.scripts/prepare_android_runtime_assets.py --lock-only. Onlyprootchanges (5.1.107.96 → 5.1.107.97, new filename and SHA-256 forarm64-v8aandx86_64);libandroid-shmem0.7 andlibtalloc2.5.0 are unchanged.runtime_tools/termux-packaging-recipes/proot.build.sh): the matching termux-packages recipe. Compared with the previous copy, onlyTERMUX_PKG_VERSIONandTERMUX_PKG_SHA256differ, plus the header's retrieval date and commit.THIRD_PARTY_NOTICES.mdand its offline copyapp/src/main/assets/legal/oss_licenses.mdnow point at the 5.1.107.97 source archive and SHA-256. The fdroid paragraph says the pin can lag the mirror by "a few versions" (follow-up commita4a90386, applying a non-blocking suggestion of the review below).The cache key hashes the lock file, so this PR's own CI cannot hit the old cache: its
test-and-buildjob downloads and extracts the new packages for real, which is the verification of the fix.Testing
prepare_android_runtime_assets.pywith the new lock (default lock file, nothing refreshed): all three packages downloaded for both ABIs with SHA-256 verification, assets extracted,manifest.jsonwritten forarm64-v8aandx86_64.Validate runtime build scriptsstep ofandroid.ymlrun locally:py_compile,--help, and the lock assertions../gradlew spotlessCheck: passed. No Kotlin or XML changes. The fulldetekt/unit-test/build run is left to CI (no Android SDK in this environment).THIRD_PARTY_NOTICES.mdandoss_licenses.mdare byte-identical (whatLegalDisclosureComplianceTestchecks).Not verified
TERMUX_PKG_SHA256=badd014e…(SHA-256 of thev5.1.107.97.zipsource archive) is copied from the upstream termux-packages recipe. The archive itself could not be downloaded from this environment, so the value was not recomputed. It appears in a legal document ("content-addressed" column); please recompute it withcurl -L https://github.com/termux/proot/archive/v5.1.107.97.zip | sha256sumbefore merging if that matters.mastercommit it was retrieved at (6be420e7…), not thebump(main/proot)commit the older headers record; that commit could not be looked up.Review note
The
repo-reviewersubagent type is not registered in this environment. The review below was produced by a general read-only agent that was told to read.opencode/agents/repo-reviewer.mdand follow it, with the output format it prescribes. The review covered9a687821;a4a90386only applies its first suggestion.Pre-PR review
判定: APPROVE
ブロッカー
なし
提案(非ブロッキング)
proot5.1.107.94 …)」という段落は、今回の更新で不正確になりました。mirror 側が .97、fdroid 側が .94 なので、差は .95/.96/.97 の3パッチになります。括弧内の具体値は pin(TermuxPackages@2a342d4…)を変えていないのでそのまま正しいはずです。直すなら "can lag the mirror by a few patch releases" などに改め、2ファイルを同一内容で揃えてください(drift テストがあるため)。"bump(main/proot): 5.1.107.96")を記録していましたが、今回は取得時点の master HEAD(6be420e7…)を「packages/proot/build.sh at 5.1.107.97」と添えて記録しています。記述としては矛盾しません。ただ、この SHA が master 上に実在し、その時点で .97 のレシピを指すことは確認できませんでした(理由は チェック済み項目 の最終項)。GitHub に届く環境でgit ls-remote https://github.com/termux/termux-packages master等により確認してください。可能なら .97 の bump コミットも併記すると、他レシピと記録方法が揃います。badd014e…(v5.1.107.97.zip): 既知の未検証事項のとおり、独立計算はできていません。法務文書の "content-addressed" 欄に載る値なので、マージ前に GitHub へ届く環境でcurl -L https://github.com/termux/proot/archive/v5.1.107.97.zip | sha256sumを確認するか、PR 本文に「上流レシピからの転記で未検証」と明記するのが安全です。--local-debs-dir)のlocal_locked_packageは lock の version/SHA を照合しません。一方serializable_manifestは lock の値をそのまま manifest.json に書きます。そのため fdroid ビルドの manifest は、実体が .94 でも proot 5.1.107.97 と新しい SHA を名乗ります。アプリ側は opencode-runtime の manifest.json の packages を読まないので動作への影響は無く、今回は対応不要です。チェック済み項目
git fetch origin mainのうえ merge-base が 6268d15(origin/main の先端)と一致することを確認しました。git diff origin/main...HEADは4ファイル・各 +12/-12 行で、全 hunk を読みました。git diff --checkも問題なしです。json.dumps(indent=2, sort_keys=True)+"\n"に再シリアライズし、どちらも元ファイルとバイト単位で一致しました。インデント・キー順・末尾改行は従来の生成物と同じです。filename/sha256/versionの3キーだけです。depends、パッケージの並び順(proot → libandroid-shmem → libtalloc)、root_packages、termux_main_base_url、version、termux_archは不変です。<name>_<version>_<termux_arch>.deb、ディレクトリがpool/main/*/<name>/に一致し、sha256 は64桁の16進数です。build_lock_payload/_package_record_to_json/write_lock_file/load_lock_file/locked_packages/_package_record_from_jsonを読みました。バージョン固有の分岐はありません。download_locked_package→download_termux_main_path(expected_sha256=…)→verify_sha256で検証されます。git grepで5\.1\.107/75f654fe/8199dca0/77ea4554を検索し、旧 proot .96 の値はすべて消えていることを確認しました。残る5.1.107.94は fdroid pin を説明する段落だけです。bin/proot、libexec/proot/loader、loader32、lib/libandroid-shmem.so、lib/libtalloc.so.*)を確認しました。patch_neededの対象であるlibtalloc.so.2の文字列が含まれています。diffとcmpで THIRD_PARTY_NOTICES.md と oss_licenses.md が完全に同一であることを確認しました(base 側も同一)。TERMUX_PKG_VERSIONとTERMUX_PKG_SHA256の2行だけで、ほかはヘッダの2行です。末尾改行も維持されています。.worktree/fix/termux-proot-lockで base は origin/main です(new-worktree.sh の方式どおり)。Kotlin/XML/strings の変更は無いので、i18n・spotless・detekt への影響はありません。badd014e…の実アーカイブとの一致。6be420e7…の実在と意味。scratchpad の commits.atom は GitHub アクセス不可のエラー JSON でした。Generated by Claude Code