Files
docview/docs/DEPENDENCY-PROVENANCE.md
2026-09-21 13:41:40 +09:00

12 KiB

開発版パッケージの依存由来台帳

URL比較修正前のArch開発版について、ui-final台帳は、焦点・Web倍率・失敗案内の修正後のArch開発版を対象にする。561ファイル、圧縮6,378,914 bytes、展開内容17,504,986 bytes。tarは2回生成してSHA-256 83e69c6c6354f99a8666c94cbdd669a7d4e1a86ee87d956f566132a0ea6f1153が一致し、台帳も2回生成してbe6ed689820ce414ff23831fee2266e08bbdb3e2bf617b2324c4a924b21cad35が一致した。

146件の同版cache metadata、system告知530件、PDFium告知17件を照合した。追加したQtの7本文は13資源・2 DataPack・固定版/hash/元全文との対応を検証した部分集合であり、completeChromiumNotices=false、runtimeはsystem依存である。この保存台帳のsource欄は当時の未収集状態を保持する。後続のソース取得ではQt 6.11.2一式とtoml++を収集・検査し、現在の収集状況は部分完了となった。抽出の証拠と境界試験を保存した。Qt資源調査の旧「credits文字列の検索結果」と、後から抽出した完全な告知コメント7件は区別する。

告知補足版では、固定ソースのWebM/WebPメタデータが指定するPatentファイル2件をUbuntu用debへ追加した。本文は同一だが元の2パスを保持する。IDのみのmini_chromium/libdrmは、上流メタデータが非同梱と記すことを保存し、実SDKのリンク構成未確認という制約を分けて記録した。全告知の完全性判定は引き続き未完了。

Ubuntu専用環境の配置確認

Ubuntuの別台帳は公式Qt SDK 6.11.2、専用prefixのqpdf/libzip、Ubuntu 24.04の85 packageを対象にし、1,740ファイルの依存解決を確認した。告知104件、SDK SBOM43件、PDFium出典metadata1件を保存した。Qtの選択位置の告知本文とqpdf/libzipのinstall先告知directoryの欠落3件を明示し、後者2件は選択sourceから各告知を別途採取した。完全なChromium告知・対応sourceとはしない。Archの固定告知pinは流用していない。この台帳の採取後に、Ubuntu用debを生成して配置・起動・削除を検証した。範囲と実起動の記録を併読する。

後続のSDK告知抽出で、保存済みSBOMに含まれていたChromium告知129entry・105本文を採取し、Qt source原文・元SDK archive・Ubuntu実行時inventoryと照合した。元SBOMの外部package参照不整合1件と本文のない2部品、生成器の除外を明示しており、完全性は未判定。旧台帳の採取時点の本文件数は変更していない。

日本語UI修正時の前回台帳

Arch Linux 開発版 tar に何が含まれ、どの資料まで照合できたかを記録する。 前回の台帳は、 日本語UI・Web操作等の修正後に生成した completion-final パッケージを対象にする。 前回tarのSHA-256はe384c8c21da11343f845a5ca7310ee6ca944e51c9585de4b2b5c7c73ca352e0e。 553ファイル、圧縮後6,367,967 bytes、展開内容17,460,237 bytesを全照合した。 2回の台帳生成はbyte一致し、台帳SHA-256は 9d43b6ae79bb8e7d4ced790ef25f399b4c616ad0d02cf286f59ae93d29d3220b。 146件のcache metadata、PDFium告知17件とsystem告知523件を照合し、限定23試験が成功した。 Qtの日本語QMはsystem依存の qt6-translations 6.11.2-1 に対応する。 DocView自身の日本語catalogは本体に含むが、QtのQMをtarへコピーしたとは扱わない。 限定試験・再生成の結果は前回結果 README、 従来版は履歴 README、 固定recipe・告知原文と実ファイルの照合は別の記録にある。

追加告知を収録した従来版

従来の台帳は、 固定ソースとの照合で見つかったPDFiumの2告知を補った時点のパッケージを対象とする。 そのtarのSHA-256はdf9c0cc5396d7d952804a4611c85e5e2130fad821311e76f880a17e78be49c06。 553ファイル、圧縮後6,342,588 bytes、展開内容17,418,141 bytesを照合した。 追加はlibc++/libc++abi告知と出典metadataの3ファイル。変更は説明文・告知一覧・manifestの5ファイルで、 当時の本体・2ワーカー・PDFiumの全バイナリーは、下記550ファイル版と同一だった。 今回の現行バイナリーとの同一性を主張する記録ではない。 追加告知はソースrevision・版・実ライブラリー・本文hashを結び付けて検証する。 2回の独立パッケージ生成はbyte一致し、別展開先から6条件のGUI起動が成功した。

元のローカル採取で確認した範囲

対象は docview-0.1.0-arch-x86_64-development.tar.gz、SHA-256 は fe1cbeb7af6bf53c82dbee3a571b369454115b5c0f1561674cdb09e26c089c4d。 圧縮後 6,338,459 bytes、展開ファイル合計 17,369,299 bytes、550 ファイルを tar 内の payload manifest と照合した。manifest 自身は自己ハッシュから除外されるが、 そのハッシュも台帳へ保存する。元の dependency manifest のハッシュも記録する。

対象 実際の含有・参照 追加で採取した証拠
DocView と 2 ワーカー tar 内の実行ファイル 3 本 全ファイル SHA-256 と readelf の直接 DT_NEEDED
独立 PDFium 155.0.8057.0 lib/libpdfium.so を同梱 ローカルのライブラリ・15 告知文が tar と一致。VERSION、全 10 項目の args.gn、固定 lock のハッシュと値を照合
Qt 6.11.2 Qt/WebEngine の runtime 本体はシステムから動的に参照 tar 内の 3 実行ファイルから Qt の直接リンクを確認。元の依存 inventory の Qt 共有ライブラリ 42 行を保持
toml++ 3.4.0-2 共有ライブラリはシステム側。ヘッダー由来コードは DocView 本体に含む 本体に定義された toml:: シンボル 27 件、toml++/toml.h の include、同梱 MIT 告知文のハッシュ
システム依存候補 146 パッケージ 元 inventory が記録した共有ライブラリ・Qt 資源など。runtime 本体をこの tar へコピーしていない 全 146 件で同版・同 architecture・同 package base の cache .PKGINFO / .BUILDINFO を照合。各 raw metadata と PKGBUILD の SHA-256

システム共有ライブラリの非同梱は、ヘッダー・テンプレート由来コードが実行ファイルに 含まれないという意味ではない。toml++ は両方を実物で確認した。Qt を含むその他全依存の ヘッダー由来コードの列挙までは実施していない。また、146 件の一覧は元 inventory の 依存候補集合であり、各資料を開くたびに全件を実際にロードしたとの主張ではない。

PDFium の先頭 LICENSE は binary provider の MIT 文である。 PDFium upstream の BSD 条件は licenses/pdfium.txt にあり、残りのライセンス文も別々に 対応させた。上位の LICENSE だけを PDFium 全体の条件として扱っていない。 lock 記載の provider archive SHA-256 は既存の固定値として記録し、今回その取得 archive を 再ダウンロード・再検証したとは扱わない。

キャッシュ証拠の意味

Qt base/declarative/webengine と toml++ の 4 archive は全体の SHA-256 も記録した。 他の 142 archive は展開を進めず、最大 8 MiB の先頭領域にある metadata のみ採取する。 raw metadata はハッシュだけを保存し、本文からは package 名・版・architecture・license label・ build date・build tool・PKGBUILD hash を選択する。氏名、メール、build directory、 builder の全 installed-package 一覧は保存しない。利用者のホーム内データも探索しない。

このcollector単独では、recipe本文やcacheのruntime payloadを検査しない。 後続の照合では主要4パッケージの 実行時ファイル1,581件と現在のtoml++ヘッダー51件をcache payloadと照合し、全て一致した。 4つのPKGBUILD本文もBUILDINFOのhashに一致する公式commitへ対応させ、patchを取得した。 残り142パッケージのpayload比較、cacheの署名認証、過去のコンパイル時点のヘッダー証明、 システム全体のソース回収を行ったという意味ではない。

再実行

Python 3.14 以上の zstd 対応 tarfile、GNU nm / readelf、既存の最終 tar、 .deps/pdfium、ローカル Arch package cache を使う。既存結果は上書きしないため、 --output は新しいディレクトリーにする。

python3 tools/record_dependency_provenance.py \
  --archive tests/results/ui-final/linux-development-package/package/docview-0.1.0-arch-x86_64-development.tar.gz \
  --output tests/results/ui-final/dependency-provenance/new-run
python3 tests/test_dependency_provenance_qt.py -v

別配置の入力は --archive、--pdfium-root、--package-cache で指定できる。 同じ tar・ローカル PDFium・cache metadata・調査ツール・source include から同じ JSON を生成する。 時刻や作業ディレクトリーを出力に含めない。cache がない項目は明示的に未採取と記録し、 版不一致や壊れた metadata は成功へ変換しない。本体やワーカー、ldd は実行しない。

原設計に対して残る作業

設計 09 §4 G-DISTRIBUTION と §5 は、 実配布物と対応ソース・告知・依存一覧の対応、および対象 OS での配布確認を求める。 この台帳だけで合格とはしない。sourceCollectionStatus: not-collected は資料収集状況であり、 全 146 システム依存のソースを一律に再配布する法的義務が確定したという判定でもない。

  1. 対応ソースと告知の整理: 主要4つのArch recipe/patch、PDFium providerの固定recipe・ 依存pin・既存15告知の原文対応は確認した。見つかったlibc++/libc++abiの告知不足は現行tarへ 反映した。Qt一式とtoml++のsource取得・固定hash照合、Archの4差分の適用確認は追加記録で完了した。PDFiumのGitソース収集では本体と27依存・追加gitlinkを保管し、公開ヘッダー24件と告知15件の一致、Linux/Windows用パッチの適用を確認した。全linked component・compiler runtime/sysroot・完全な対応ソース、 Qt WebEngineの実GN構成に対応する全Chromium告知は未完了。 追加の資源調査で7件の完全な告知本文を収集したが、全Chromium告知は取得できておらず、 当該buildの生成物または同じ構成による生成が必要になる。これらを対象OS試験の不在だけで説明しない。
  2. 公開方針の決定を伴う整理: DocView 自身の公開ライセンス、採用する Qt の条件、 製品で実際に同梱する範囲・形式を決め、その具体的な配布に適用する告知・ソース提供等を 確認する。この台帳は条件の選択や法的適合の断定を行わない。
  3. 追加環境が必要な確認: Windows 11 x64 の署名済み配布・削除、対象OSの物理GPU・表示・入力の受入は残る。Ubuntu 24.04については新しいOSから作成した専用VMで依存解決・sandbox・X11/Waylandの起動・削除を検証し、URL修正版では更新と実ファイル選択も確認した。これらをWindowsや物理環境の代わりとはしない。