initial commit
This commit is contained in:
@@ -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の完了は示さない。
|
||||
Reference in New Issue
Block a user