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

36 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 依存関係とビルド記録
2026-09-19のLinux検証で使用した構成。依存ライブラリは動的リンク、DocView内部のライブラリは静的リンクで本体・ワーカーに組み込む。
| 要素 | 検証版 | 固定・取得方法 |
|---|---|---|
| Qt Base | 6.11.2-3(Arch) | CMakeで6.11.2 EXACT |
| Qt Declarative | 6.11.2-2(Arch) | 同上 |
| Qt WebEngine | 6.11.2-1(Arch) | 同上。文書JavaScript・通信をアプリ側で制限 |
| PDFium | 155.0.8057.0 / chromium/8057 | [lock](../cmake/pdfium.lock.json)の取得URL・SHA-256を照合 |
| libzip | 1.11.4-1 | システムライブラリ、CMake下限1.11 |
| toml++ | 3.4.0-2 | システムライブラリ、CMake下限3.4 |
| libseccomp | 2.6.0-1 | Linuxのみ、CMake下限2.5 |
| Fontconfig | 2.18.3 | LinuxのMain側FontBrokerのみ、CMake下限2.13。OS font索引・選択に利用 |
| GCC | 16.2.1+r23+gd564253eb6c8-1 | C++20、Releaseビルド |
| CMake / Ninja | 4.4.3 / 1.13.2 | ビルド・CTest |
| Poppler | 26.08.0-1 | 試験のみ。PDFiumと独立した比較器 |
| libqpdf / qpdf | 12.4.1-1 | CMakeで12.4.1 EXACT。PDFWorker内でリンク注釈辞書・構造見出しの共有メタデータ読取り。CLIは試験資料の暗号化生成にも利用 |
| Xvfb | 21.1.24-1 | GUI自動試験の仮想X11画面 |
PDFiumの上流コミットは`a5a7089234f121990b336b3841008009dca143bf`。配布元はbblanchon/pdfium-binariesのLinux x64成果物で、V8・XFAは無効。アーカイブSHA-256は`7788fa57a2996ebd21afc4090eb0a42b9f95ef3a72e7ef4c0756f1ea703c0415`。公開APIだけを利用するが、構造タグのAPIと`FPDF_SYSFONTINFO` version 2にはExperimental指定があるため、更新時にタグ・MCID・座標に加え、TTCのface選択とshort-buffer callbackの回帰試験を行う。
FontBrokerはPDFiumをMainにリンクせず、LinuxではFontconfig、WindowsではOSのGDI(`gdi32`)を専用threadで利用する。選択済みfontは上限付きのバイト列としてPDFWorkerへ転送し、Workerにはfontディレクトリーの読取り権限を与えない。static TTF/OpenType/collectionを初期対象とし、候補順と実際の選択情報を[font broker契約](font-broker-contract.md)に記録する。WindowsのGDI実装はソースと補助コンパイルまでで、native実行は未検証である。
Linuxの実行にはシステムのQt WebEngineプロセス、資源、ロケール、Qtプラグインも必要。Linuxでの`cmake --install`はPDFium本体とLICENSE/licensesを同梱し、Qtその他はシステムから利用する開発用配置である。クリーンOS向けの自己完結した配布物ではない。
libqpdfはPDFWorkerにだけリンクし、MainにはPDFパーサーを追加しない。同じ継承済みの読み取り専用ファイルから、PDFium公開APIでは取得できないリンク枠のdash配列・Border Style辞書を読む。ファイル名による再openや書込みは行わない。CMakeパッケージとtargetは[公式のライブラリー利用方法](https://qpdf.readthedocs.io/en/stable/library.html)に従う。使用したLinuxパッケージのApache-2.0ライセンス本文を[resources/licenses/qpdf](../resources/licenses/qpdf/README.txt)に複写し、installへ含める。各配布物の推移依存と告知の最終確認は残る。
Windows x64の同一版PDFiumアーカイブも取得し、SHA-256 `e307d519e42f2e69b1b531f0c2a32dffcdf3891ec0eba60328ba51a57cec01ed`、非V8・非XFAのビルド引数、DLLとimport library、Linux版と公開ヘッダー22件の一致を確認した。Windows上でのロード・実行は未検証。WindowsではCMakeパッケージのlibzip/toml++とqpdf 12.4.1 EXACT、libqpdfの推移依存DLL、MSVC x64、対応する公式Visual C++ Redistributableを必要とし、Qt資源は`windeployqt`を呼ぶ配置コードを用意した。[Windowsの準備手順](WINDOWS-BUILD.md)
PDFiumのBSD系ライセンスと同梱第三者ライセンス、Qtの利用するモジュールごとのライセンス、libzip、toml++、libseccomp、Fontconfigのライセンスを配布方式に応じて収集・表示する工程が残る。DocView自身の公開ライセンスはこの作業では指定していない。
試験文書の本文・図形は本リポジトリーの生成スクリプトで作成した。追加日本語PDFはBIZ UDPGothic Regularをsubset埋込し、[OFL本文](../tests/fixtures/pdf/extended/FONT-OFL.txt)と元フォントSHA-256を[manifest](../tests/fixtures/pdf/extended/manifest.json)に保存している。フォント自体をアプリのランタイム依存として追加してはいない。
セキュリティ修正版の導入時は、Qt、PDFium、libqpdf、libzipを独立に更新せず、版・ハッシュを更新して全CTest、PDF独立比較、WebEngine隔離試験を再実施する。記載版の将来のサポート継続や無脆弱性を保証するものではない。