initial commit

This commit is contained in:
2026-09-21 13:41:40 +09:00
commit 855c7328df
411 changed files with 85352 additions and 0 deletions
+86
View File
@@ -0,0 +1,86 @@
# Arch recipe とローカル依存版の対応
最終開発版の[依存由来台帳](DEPENDENCY-PROVENANCE.md)に記録した 4 件について、
キャッシュ `.BUILDINFO` の `pkgbuild_sha256sum` と**完全一致する**公式 Arch packaging
Git の固定 commit を確認した。latest recipe で代用していない。
全 SHA-256、URL、Git blob ID、取得ファイル一覧は
[correspondence.json](../tests/results/source-correspondence/arch/correspondence.json)に保存した。
| パッケージ版 | 一致した公式 Arch commit | recipe SHA-256 の先頭 |
|---|---|---|
| qt6-base 6.11.2-3 | [dc5728701868](https://gitlab.archlinux.org/archlinux/packaging/packages/qt6-base/-/commit/dc5728701868792b88f1a3e7f9b56aa3362c5474) | `217bd5ea50a3c721` |
| qt6-declarative 6.11.2-2 | [9eac2c716283](https://gitlab.archlinux.org/archlinux/packaging/packages/qt6-declarative/-/commit/9eac2c716283905721fdcbc5bb18494f0a486325) | `f955fe1f3f93ca32` |
| qt6-webengine 6.11.2-1 | [f701f0aa989dc](https://gitlab.archlinux.org/archlinux/packaging/packages/qt6-webengine/-/commit/f701f0aa989dcbc653805d696118f48d6a70dd0d) | `e4395367f03fd6ca` |
| tomlplusplus 3.4.0-2 | [69b0e478ef49](https://gitlab.archlinux.org/archlinux/packaging/packages/tomlplusplus/-/commit/69b0e478ef49b2a5636346d8c9b64c1effc39cfa) | `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 未取得だった。後続の[取得・検査](../tests/results/source-archives/README.md)で両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`](../tests/results/source-correspondence/qt-credits/resource-extraction.json) と整合する。
[取得した固定 source とハッシュ](../tests/results/source-correspondence/arch/upstream-metadata/version-sources.json)
一方、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](../tests/results/source-correspondence/arch/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 を照合する。
```sh
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](../tests/results/source-archives/README.md)を公開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の完了は示さない。