Files
docview/docs/ARCH-RECIPE-CORRESPONDENCE.md
2026-09-21 13:41:40 +09:00

6.9 KiB

Arch recipe とローカル依存版の対応

最終開発版の依存由来台帳に記録した 4 件について、 キャッシュ .BUILDINFO の pkgbuild_sha256sum と完全一致する公式 Arch packaging Git の固定 commit を確認した。latest recipe で代用していない。 全 SHA-256、URL、Git blob ID、取得ファイル一覧は correspondence.jsonに保存した。

パッケージ版 一致した公式 Arch commit recipe SHA-256 の先頭
qt6-base 6.11.2-3 dc5728701868 217bd5ea50a3c721
qt6-declarative 6.11.2-2 9eac2c716283 f955fe1f3f93ca32
qt6-webengine 6.11.2-1 f701f0aa989dc e4395367f03fd6ca
tomlplusplus 3.4.0-2 69b0e478ef49 08383384ca64c9cd

同 commit の packaging ファイル 30 件、25,299 bytes を取得した。PKGBUILD、展開済み 参照一覧 .SRCINFO、local patch、packaging 自体の LICENSE/REUSE 等を含む。 全件の SHA-256 と Git blob ID を照合した。recipe のコードは実行していない。 元の本体・ワーカー・PDFium lock・最終 tar は変更していない。

元ソースと適用差分

  • Qt base: qtbase の v6.11.2 を参照。Qt 公式 tag の現在の解決先は ef55f427f2c8b410d34f8a7681020a3000cf6866。Arch の qt6-base-cflags.patch と qt6-base-nostrip.patch は取得し、recipe 内 SHA-256 と一致。 さらに upstream commit e80e3f0cebae9c3a45a1b7ce81d6454c699d89c6 を cherry-pick -n する。対応する公式 patch 本文も取得した。
  • Qt declarative: qtdeclarative の v6.11.2 を参照し、現在の解決先は 4e3399c26ec57246c08de019cfcbda8d23604cfa。 2efb7c60ef45952cc8e04b9c9a07965d14c30446 の cherry-pick patch 本文を取得した。
  • Qt WebEngine: qtwebengine の v6.11.2 と別取得する qtwebengine-chromium を参照。 Qt tag の現在の解決先は a33fa2a897e5ee58e385b3f88dc247d99fca56db、その src/3rdparty gitlink は 5170777d28bee1ce92cc693a0dbf2ad01492e5cf。 この exact recipe の _chromium は空なので、prepare は git submodule update の gitlink を使い、別 commit の checkout は行わない。packaging にある bump-chromium-commit は保守用 helper で、この recipe からは実行されない。 Chromium source 行の checksum は SKIP。これを検証済み source hash と扱っていない。
  • toml++: GitHub の公式 v3.4.0.tar.gz を tomlplusplus-3.4.0.tar.gz として参照。 recipe の SHA-512 / BLAKE2b を記録した。当時は元 archive 未取得だった。後続の取得・検査で両checksumと現在の51ヘッダー・LICENSEの一致を確認した。tag の Git commit 解決はこの追加作業には含まない。

上の Qt tag 解決は今回の公式 metadata の観測であり、当時の builder が受け取った source bytes を再現した証明とは異なる。Git source に宣言された SHA-256 も台帳へ保持したが、 全 checkout を取得してその checksum を計算したとは扱わない。

Chromium の版表記

固定 gitlink の chromium/chrome/VERSION は 140.0.7339.225。 Qt の src/core/configure/BUILD.root.gn.in は build/util/version.py へ //chrome/VERSION を渡し、その結果を CHROMIUM_VERSION macro にする。 QtGnGen.cmake が指定する GN root は submodule の chromium ディレクトリーである。 web_engine_context.cpp の qWebEngineChromiumVersion() はこの macro を文字列化する。 したがって、この source から得られる版は実ライブラリで別途観測した 140.0.7339.225 と整合する。 取得した固定 source とハッシュ

一方、Qt repository 上位の説明ファイル CHROMIUM_VERSION は base 140.0.7339.264 / security patches 151.0.7922.71 を記載する。 この説明ファイルは上記 API の生成元ではない。 qWebEngineChromiumSecurityPatchVersion() の source は 151.0.7922.71 の固定文字列を返す。 base API、security patch API、説明 metadata の値を混ぜて単一の runtime 版としない。 個々の security patch の完全性を、この版表記だけから保証するものでもない。

再検証と未完了範囲

collect.py は既定で保存済み証拠を オフライン検証する。--fetch --output NEW_DIRECTORY は固定 commit の小ファイルと metadata だけを再取得する。1 ファイル 512 KiB、保存対象合計 4 MiB、packaging 64 ファイルを上限とし、 対象は公式 Arch/Qt の HTTPS に限定する。source archive、clone、build は実施しない。 HTML metadata には生成時刻が入り得るため、再取得時は semantic commit を照合し、 recipe・patch・固定 source 本文は byte hash を照合する。

python3 tests/results/source-correspondence/arch/collect.py
python3 tests/results/source-correspondence/arch/test_collect.py
python3 tests/results/source-correspondence/arch/collect.py --fetch \
  --output tests/results/source-correspondence/arch/new-fetch

正式な G-DISTRIBUTION は引き続き未達。この作業で、4 recipe の版・commit・付属 patch・source 参照の対応は進んだが、全対応ソース、build toolchain、生成物の再ビルド再現、署名の真正性、 全第三者告知や適用条件の判定、対象 OS のクリーン配布検証まで完了したものではない。 DocView の公開ライセンスや製品版の同梱方針も選択していない。

公式リリースソース取得の追加結果

Qt 6.11.2一式の公式archiveを公開SHA-256と照合し、全390,976通常ファイルを検査した。上記WebEngineの固定source 8件が一致し、base/declarativeの4差分は専用コピーへ適用できた。CFLAGS patchは元recipeのGNU patch既定許容範囲でfuzz 1を必要とし、upstream 2差分はfuzz 0で確認した。適用後のmkspec 2件は現在のArchファイルと一致した。実ビルド、全コンパイル入力・全告知の照合、G-DISTRIBUTIONの完了は示さない。