OSDN Git Service

Update LDP man-pages part of JM guide
authorAkihiro Motoki <amotoki@gmail.com>
Fri, 12 Mar 2021 05:57:29 +0000 (14:57 +0900)
committerAkihiro Motoki <amotoki@gmail.com>
Fri, 12 Mar 2021 05:57:29 +0000 (14:57 +0900)
guide/LDP_man-pages_update.rst

index b729017..1508d30 100644 (file)
@@ -14,7 +14,7 @@ LDP man-pages 管理ガイド
 
 手順は以下の通り。
 
-1. perkamon の更新
+1. po4a 環境の更新
 2. 原文の更新作業
 3. 単純な fuzzy の更新
 
@@ -29,7 +29,7 @@ Git レポジトリの LDP_man-pages 以下はきれいな状態にした状態
    $ make clean-setup
    $ git status
 
-1. perkamon の更新
+1. po4a 環境の更新
 ------------------
 
 このセクションの操作はすべて ``perkamon`` ディレクトリーで行う。
@@ -52,25 +52,107 @@ LDP man-pages のバージョン番号を更新する。
 
    (必要に応じてダウンロード用の URL を調整)
    man-pages-$(V).tar.xz:
-           wget https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/Archive/$@
+           wget https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/$@
 
 配布されている LDP man-pages の原文に対して
-ローカルの workaround を適用するファイル ``po4a-fixes.patch`` を削除しておく。
+ローカルの workaround を適用するファイル ``workaround.patch`` を削除しておく。
+最新版の LDP man-pages には不要であったり、適用できない可能性があるため。
 
 .. code-block:: console
 
-   $ rm -f po4a-fixes.patch
+   $ rm -f workaround.patch
+
+以下のコマンドを実行すると、指定された LDP man-pages がダウンロードされ、
+po4a による POT/PO ファイルへの変換の準備が行われる。
+``build/C`` 以下に用意されたファイルが po4a による変換で使用される。
+
+.. code-block:: console
+
+   $ make setup
+
+以下のコマンドで、削除されたページの反映を行う。
+削除されたページがある場合は、 ``po4a/*/*.cfg`` の該当ページに対応する
+エントリーがコメントアウトされる。
+コメントアウトされたエントリーは不要なので、手動で削除する。
+
+.. code-block:: console
+
+   $ make disable-removed
+
+以下のコマンドを実行し、追加されたページを確認する。
+
+.. code-block:: console
+
+   $ make print-new-files
+
+追加されたページがあれば、標準出力に ``po4a/*/*.cfg`` に追加する内容が
+表示される。ページの内容を確認し、関連が深い po4a cfg ファイルに追加する。
+明確な基準はないが、 追加ページの SEE ALSO などを見て、関連性を判断する。
+
+以下のコマンドを実行し、po4a による変換が行えるかを確認する。
+
+.. code-block:: console
+
+   $ make translate
+
+po4a が対応している書式が含まれていてエラーが表示される場合がある。
+その場合は po4a のマニュアル (``man po4a``) や ``Locale::Po4a::Man``
+(``perldoc Locale::Po4a::Man``) を見て対処方法を検討する。
+
+例えば、 LDP man-pages 5.10 の tzfile.5 では以下のようなエラーが出たので、
+``Locale::Po4a::Man`` を参考にして ``po4a/time/time.cfg`` の ``tzfile.5``
+のエントリーに ``opt`` 設定を追加した。
 
 .. code-block:: console
 
+   $ make
+   ...
+   po4a -k 100 --variable langs='' --previous --srcdir . --destdir . po4a/time/time.cfg
+   build/C/man5/tzfile.5:10: (po4a::man)
+       This page uses conditionals with '.ie'. Since po4a is not a real groff parser, this is not supported.
+
+   build/C/man5/tzfile.5:34: (po4a::man)
+       Unknown macro '.q "TZif"'. Remove it from the document, or refer to the Locale::Po4a::Man manpage to see how po4a can handle new macros.
+
+.. code-block:: ini
+   :name: po4a/time/time.cfg
+   :caption: po4a/time/time.cfg
+   :emphasize-lines: 3
+
+   [type: man] build/C/man5/tzfile.5 \
+        $lang:build/$lang/man5/tzfile.5 \
+        opt:"-o groff_code=verbatim -o inline=UR,UE,q" \
+        add_$lang:?@po4a/add_$lang/lists/local-pre.list \
+
+po4a のオプションでは対応できず、翻訳上も必要な場合は、
+原文の roff ファイルを変更する手もある。
+その場合は ``build/C/manN/xxxx.N`` を直接変更し、変更後の内容を確認する。
+変更内容は ``workaround.diff`` に反映する
+(``diff -u man-pages/manN/xxxx.N build/C/manN/xxxx.N`` の出力)。
+
+なお、 ``.\`` で始まる行がある場合は以下のようなメッセージが表示されるが、
+JM ではコメント行は翻訳していないので、無視してよい。
+
+.. code-block:: console
+
+   This file contains the line '.\" autogenerated headers with the name "__NR__llseek" (i.e., "_llseek").'. You should translate the source file, but continuing anyway.
+
+上記の作業が一通り終わったら、再度最初に戻して動作確認を行う。
+
+.. code-block:: console
+
+   $ make clean
    $ make setup
-   (build 以下が更新される)
    $ make print-new-files
-   (何か表示されたら、po4a/*/*.cfg に追加)
    $ make disable-removed
-   (何かないか確認)
+   $ make translate
+
+これで po4a 環境の更新は終了です。
+更新があるはずなので、ここで一度コミットしておくとよい。
+
+.. code-block:: console
+
    $ git status
-   (更新があるはずなので、ここで一度 commit を作成しておくとよい)
    $ git add ....
    $ git commit
    $ cd ..
@@ -78,37 +160,48 @@ LDP man-pages のバージョン番号を更新する。
 2. 原文の更新作業
 -----------------
 
-perkamon 作業ディレクトリに最新版に対応した展開する
+``manual/LDP_man-pages`` で以下のコマンドを実行する。
 
 .. code-block:: console
 
-   (manual/LDP_man-pages 以下で実行)
    $ make upgrade
 
 このコマンドでは、以下の作業が行われる。
 
 1. [make jm-setup]
 
-   * 最新版の man-pages の tarball が perkamon/ 直下にダウンロードされる。
-   * tarball が perkamon/man-pages ディレクトリに展開される。
-   * po4a 作業用の source lang が build/C として用意される。
+   * 最新版の man-pages の tarball が ``perkamon/`` 直下にダウンロードされる。
+   * tarball が ``perkamon/man-pages`` ディレクトリに展開される。
+   * po4a 作業用の source lang が ``build/C`` として用意される。
 
-     * 実際にコンテンツがあるファイルが build/C/man? 以下に man-pages 以下から
-       コピーされる。
-     * po4a-fixes.patch がある場合には、build/C/ 以下のファイルに適用される。
-     * リンクファイルは build/C/link に一覧が作成される。
+     * 実際にコンテンツがあるファイルが ``build/C/man?`` 以下に
+       ``man-pages`` 以下からコピーされる。
+     * ``workaround.patch`` がある場合には ``build/C/`` 以下のファイルに
+       適用される。
+     * リンクファイルは ``build/C/link`` に一覧が作成される。
 
-2. original 以下にコピーする
+2. 新しい原文を ``original`` 以下にコピーする。
 
-3. COLOPHON 以下を削除する。
+3. ``original`` 以下の原文から COLOPHON 以下を削除する。
 
    ``translation_list`` を更新する際に、変更点のみを抽出するために行う。
    COLOPHON 部分はリリース毎にバージョン番号が更新されてしまうので、
-   original に登録する際には、この節を削除しておく。
+   ``original`` に登録する際には、この節を削除しておく。
 
-4. original 以下を git で stage する。
+4. ``original`` 以下を git で stage する。
 5. ``translation_list`` の更新
-6. POT の更新
+
+   LDP man-pages の翻訳は、翻訳が完了していない状態でも英語混じりで公開する
+   ことにしていて、かつ翻訳の進捗状況は ``untrans.html`` で確認できるので、
+   ``translation_list`` では翻訳ステータスの更新はせず、バージョン番号を
+   更新するだけになっている。バージョン番号はページ公開時に参照されるので
+   更新が必要。この点は他のマニュアルと異なるので注意。
+
+6. POT/PO の更新
+
+   ``po4a/<category>/po/`` 以下の ``<category>.pot`` (POT ファイル) と
+   ``ja.po`` が更新される。
+
 7. 翻訳統計情報の更新
 
 8. Git commit
@@ -123,8 +216,10 @@ perkamon 作業ディレクトリに最新版に対応した展開する
       git add po4a/ stats/ untrans.html
       git commit -m "LDP: Update POT and ja.po to LDP v3.XX"
 
+上記の処理が ``make upgrade`` の中で行われる。
+
 3. 単純な fuzzy の更新
-----------------------
+======================
 
 COLOPHON が更新されているので、fuzzy が少なくとも一つできる。
 ja.po で fuzzy を探してバージョンを更新する。