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 commite80e3f0cebae9c3a45a1b7ce81d6454c699d89c6を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/3rdpartygitlink は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の完了は示さない。