ルギア君の戯言

雑多な記事。

中間報告 - その2

現状

  • ビルドには問題はありません (未伸張のファイルが残っているため RPM の作成までは行っていません)
  • PATH や LD_LIBRARY_PATH を弄って $BUILDROOT 以下で実行した場合は pTeX 関係以外は概ね良好です。ただし、実際のインストール後のディレクトリと異なる為 TEXMF を指定する必要があり、いまのところそれは調査できません。
  • ライセンスは Fedora のものそのまま(+ pTeX 用に Modified BSD)では Artistic 2.0 and GPLv2 and GPLv2+ and LGPLv2+ and LPPL and MIT and Public Domain and UCD and Utopia and Modified BSD となりますが --valid-license の中に無い物があるので ../tools/speclint が通りません。
    • もし除くなら該当するファイルを捜し出す必要あり。

確認したいこと

  • インストール DVD に入れるのか (tetex は optional ?)
    • いれない(あるいは依存関係上不要)なら昨今の HDD / ネット事情ではパッケージを細かく分ける理由はほぼない
    • 利用する側からみるとまるごとの巨大な1つのパッケージだとなんか不気味な気もするが。

手伝ってもらいたいこと

あるとすれば以下の2つ

  • Momonga Linux に合わないライセンスのファイルを捜し出す
    • ドキュメントがないものもあり、またあったとしてもライセンスに関する記述はなかったりと、ソースだけでは見付からない。CTAN (http://www.ctan.org/)やそこに貼られている各々のパッケージの公式サイトへのリンクまで見にいく必要がある。
  • パッケージング作業 (細切れにする場合)
    • 以下参照。

書きかけ spec

(もちろん nosrc です。texlive のソース本体は含みません)
(適当な場所に置いてごめんなさい)
(一週間後 (5/25 午前 0 時ぐらい) に自動的に消えます。)
http://www1.axfc.net/uploader/Sc/so/114704.tgz

teckit

こちらは完成しております。texlive に必要ですので、ビルド・インストールしてください。

texmf-not-needed-dirs.lst

このリストに含まれている名前のディレクトリ以下のファイルはインストールされません。
例えば xindy と書かれている場合

%{_datadir}/texmf/doc/xindy
%{_datadir}/texmf/scripts/xindy
%{_datadir}/texmf/xindy
%{_datadir}/texmf-dist/doc/xelatex/xepersian/xindy

がインストールされないことになります。
ワイルドカード * をいれる場合 / を特別扱いしないので注意が必要です。

texmf-not-needed-files.lst

このリスト(正規表現)にマッチするファイルはインストールされません。
ディレクトリにもマッチしても害はありません。
単なる正規表現なので / などは特別扱いしません。
. は任意の1文字ですが、エスケープしなくてもほぼ害はありません。
全文マッチなので、texmf または texmf-dist ないしは .* などで始めないとマッチしません。

texmf-man-files.lst

man ファイルのための正規表現です。この中の何れかにマッチするファイルは man ファイルと見なされ、%{_mandir} に移動されます。

texmf-info-files.lst

同様に info ファイル用です。

texmf-make-file-list.sh

インストールされた texmf texmf-dist を走査し、パッケージに含めるべきファイルを決めるのに使われます。
%{_datadir}/texmf および %{_datadir}/texmf-dist 以外は手動で握ります。


新たにパッケージを足す場合、一度 -r -bi などで %install まで実行して止めます *1

cd %{_builddir}/%{name}-%{version}/%{name}-%{verdate}-texmf
ls

すると *-files なるファイルがいっぱいでるとおもうのですが、これが収集した情報です。

[lugia@arpa-castle texlive-20091107-texmf]$ cat context-files
# /home/lugia/Momonga/TSUPPA4RI/texlive/texlive/SOURCES/texmf-make-file-list.sh context /usr/share /var/tmp/texlive-2009-1m.mo7-root-lugia/usr/share -p context -ed xetex -ed hoekwater/context -f texmf/web2c/context.cnf -p context/third -d bibtex/*/context -f texmf-dist/context -d context/bib -d context/document -d context/manuals -d context/scripts -ed tex-virtual-academy-pl -ed hoekwater -d fonts/*/*/context -d fonts/fea/context -d context/font -d context/base -d latex/context -d generic/context
%defattr(-,root,root)
/usr/share/texmf-dist/bibtex/bst/context
/usr/share/texmf-dist/context
/usr/share/texmf-dist/doc/context/bib
/usr/share/texmf-dist/doc/context/document
/usr/share/texmf-dist/doc/context/manuals
/usr/share/texmf-dist/doc/context/scripts
/usr/share/texmf-dist/fonts/enc/dvips/context
/usr/share/texmf-dist/fonts/fea/context
/usr/share/texmf-dist/fonts/map/dvips/context
/usr/share/texmf-dist/fonts/map/luatex/context
/usr/share/texmf-dist/fonts/map/pdftex/context
/usr/share/texmf-dist/metapost/context/base
/usr/share/texmf-dist/metapost/context/font
/usr/share/texmf-dist/tex/context/base
/usr/share/texmf-dist/tex/context/bib
/usr/share/texmf-dist/tex/generic/context
/usr/share/texmf-dist/tex/latex/context
%dir /usr/share/texmf-dist/doc/context
%dir /usr/share/texmf-dist/doc/context/third
%dir /usr/share/texmf-dist/metapost/context
%dir /usr/share/texmf-dist/metapost/context/third
%dir /usr/share/texmf-dist/scripts/context
%dir /usr/share/texmf-dist/source/context
%dir /usr/share/texmf-dist/source/context/third
%dir /usr/share/texmf-dist/tex/context
%dir /usr/share/texmf-dist/tex/context/third

1 行目に実行したコマンドを記録してあります。


なお、このスクリプトでは通常ディレクトリ毎にファイルを捌いていきます。ファイル単位で捌く必要があるのは *.ini と *.fmt とその他のいくつかのみです。

スクリプトの引数は次のようになっています。

texmf-make-file-list.sh [パッケージ名] [実際に texmf{,-dist} がインストールされるディレクトリ] [今 texmf{,-dist} がインストールされているディレクトリ] [選別引数...]

選別用の引数は以下の通りです

  • -d [名前]: [名前] で終るディレクトリとそのサブディレクトリを握ります。
  • -ed [名前]: [名前] で終るディレクトリとそのサブディレクトリは何があっても握りません。
  • -f [完全な正規表現]: 正規表現に一致するファイル(またはディレクトリ)を握ります。
  • -ef [完全な正規表現]: 正規表現に一致するファイル(またはディレクトリ)を収集したリストから除きます。
  • -p [名前]: [名前] で終るディレクトリを %dir として握ります。

-ed を使う場合、通常は他のパッケージのパッケージ名にしておくと移動した場合などに対処しやすいと思われます。
-p と -d や -f でおなじ物が被った場合 -d や -f が優先されます。

この *-files のあるディレクトリで試しに実行してください。問題があれば出力されたファイル [パッケージ名]-files を削除すればもう一度実行できます。気に入ったリストができるまで繰り返してください。


このスクリプトでは簡易に Conflict のチェックもしてくれます(そのため *-files のあるディレクトリへの移動が必要なのです。)。
ただし例えば /usr/share/texmf-dist/tex/latex 以下を握っているパッケージがあったとして

%dir /usr/share/texmf-dist/tex/latex/listings

しようとする Conflict は、いまのところ見付けられない。

何か問題があったら

ここのコメント欄、Twitter、IRC... でお願いします。

*1:現在は終っていないため、指定しなくても残ります。あるいはファイルが増えた場合にも同様でしょう。