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

3.7 KiB

修正版PDFiumの配置とビルド

現在の候補は v2 です。ICC変換指定、パターンの初期状態、未着色タイルの線色を修正しています。検証記録に、元ソース・パッチ・バイナリーと試験結果の対応を保存しています。

この作業環境での起動

配置済みの .deps/pdfium-context を選択した build-context を使用します。

./build-context/docview "/path/to/book.pdf"

新しいprefixを作る場合は、まだ存在しないパスを指定します。既存prefixを上書きすることはできません。

python3 tools/stage_pdfium_candidate.py --candidate v2 --verify-only
python3 tools/stage_pdfium_candidate.py --candidate v2 --output "$PWD/pdfium-context-prefix"
cmake -S . -B build-context-new -G Ninja -DCMAKE_BUILD_TYPE=Release \
  -DDOCVIEW_PDFIUM_ROOT="$PWD/pdfium-context-prefix"
cmake --build build-context-new -j 6

この配置ツールは、検証済みソース・ツール・結果が保存された本作業環境を入力にします。ネットワーク取得やPDFiumの再ビルドは行いません。CMakeには新しいビルドディレクトリーを使い、別版のライブラリーが残るキャッシュを避けます。

固定値と照合

項目 値
upstream revision a5a7089234f121990b336b3841008009dca143bf
候補library SHA-256 cb049fe434f4c911b5eb047c0aca572d4dd9f5e405dde329b76c05a6aa771403
固定ビルド記録 tests/results/pdfium-intent-context/record.json
記録SHA-256 80af72b06d5c9a6a3ab8b9311373e6a23e8df28668ce575e1124350e69aa160b
配置検証の固定値 cmake/pdfium-candidate-v2.lock.json

配置時は固定記録、パッチ、変更ソース60件、ツールアーカイブ、実際のGN引数、公開ヘッダー24件、告知17件を照合します。ヘッダーはproviderパッチを逆適用して元Git inventoryとの一致も確認します。告知は元ソースとの対応記録に結び付けます。

include/、lib/、告知、VERSION、args.gn、provenance/、BUILDINFO.jsonを配置します。入力のリンクや特殊ファイルを拒否し、検証したバイト列から一時prefixを作成して、既存出力を置換しないrenameで公開します。

CMakeは候補libraryとヘッダーの選択先を確認し、BUILDINFO・原記録・パッチ・告知を固定lockに照合します。配置先へコピーする前に再検証します。配置後とUbuntu deb検証でも同じ対応を確認します。配置済みの告知・由来記録は share/doc/docview/pdfium/ に含まれます。

回帰試験

LinuxのCTestには配置ツールと配布対応の試験を含めています。個別にも実行できます。

python3 -m unittest discover -s tests -p test_stage_pdfium_candidate.py -v
python3 -m unittest discover -s tests -p test_pdfium_candidate_integration.py -v

合成入力の改変、ヘッダーと原本の同時改変、既存出力・リンク・特殊ファイル、書込み途中の失敗、公開時の競合、配置前の改変、自己整合だけを装ったdebを検査します。実debの境界試験には dpkg-deb が必要です。

第1候補は --candidate v1 で履歴再現用に保持しています。パターン状態の問題があり、現在のCMake配置先としては受理しません。CLIの既定値は以前の再現手順を保つv1なので、現在の候補には --candidate v2 を指定してください。

この成果物はLinux x64の検証用です。Windows、物理表示・基準機、人による正解画像承認、公開配布の最終判断は別の未完了条件です。