宇田川が提唱するライブラリーの上位概念。
新旧の記述が入り交じり,重複も多くなって見通しの悪い Cμ 換配周りのスクリプト等の整理。といっても,混沌ぶりを眺めながらどうしたものかと考えていた時間が長い。悩んで時間を潰すくらいなら違了は承知で手を動かすべきか。
とりあえず,pkg-config を置換する _kn cfg-bld は追加した。
そろそろ寝るかという頃,換配失敗時に undefined reference to ... を検出して再換配するという _kn run の「自動輪結」機能を nm –demangle で書き直し,さらに辞書化してミュージアム外でも汎用的に使えるようにするという閃きを得た。
この自動検出機能は _kn lib で実装することにした。
Extended Program Object,拡張論組客体
希哲12年3月3日エキスポにかけて考案。当初は Extended PostgreSQL Object(拡張 PostgreSQL 客体)の略で,将来的に P は procedure に変えてもいい,としていた。ミュージアムにおける PostgreSQL 向けの「展示」,というような意味合いだった。他案に XPD(Extended PostgreSQL Database/Definition)など。譜名は libxpo.so を想定。
同日,概念を拡張し,とりあえず Extended Program Object の略として汎用的に扱えるようにした(P は〈plug-in〉や〈pluggable〉などでもいい)。PostgreSQL 向けは XPO/Pg などとしておき,xpo_ を接頭子として使うことにした(例:xpo_Pg.so)。汎用的ではないので接頭子 lib は使わないことにした。
希哲11年6月16日,放置していた lib/(/kn/lib/)から名称変更。知機関連のライブラリ群を統合的に格納するミュージアム。
これまでは,/usr/ か /usr/local/ の lib(64)/ 以下にミュージアム用のライブラリを何らかの統一的な接頭辞(案:libmus,libCu,libkn,libkt,libkt_std,libxtd 等々)を付けて格納することを考えていた。
/kn/lib/ はその考え方を引きずったまま /kn/ 以下での管理をしようとした中途半端な痕跡だが,最近になって(SLFS 開発で概念整理が進んだこともあり)/kn/ ディレクトリの役割が明確化し,全ての知機関連ファイルを厳密に /kn/ 以下に置き独立性を高める方針が定まったことで,ミュージアム用のライブラリ群を mus/ 以下に置くという表現も自然に考えられるようになった(希哲11年6月15日)。
ただし,これまでの「ミュージアム」は,厳密に体系化されたライブラリ群という概念だったため,この変更によって多少ミュージアムの概念が変わる(拡張される)可能性はある。mus/ を汎用的なライブラリ参照ディレクトリとして使うなら,Cμ ライブラリ以外の補助的なライブラリも置けた方が良い。また,用者が独自に開発したライブラリをどこに置くのかという問題もある。
こうした問題を解決する案として mus/ のパスを /kn/lib/mus/ とし,各用者は ~/kn/lib/ に固有のライブラリを置けるようにすれば整合的ではあるが,問題は冗長化してまでする必要があるかどうか。/kn/mus/ にしたいのは,lib という接頭辞との組合せで無駄が無いからというのも大きい。とはいえ /kn/lib/ と /kn/mus/ を併置するのもまとまりが無い。
あるいは接頭辞の方を mus にしてしまう。ld の -l 応変子は -l:[ファイル名] でファイル名を直接検索出来るのでこれを利用する手もある。ただし,拡張子も付けなくてはならず簡略的ではない(シンボリック リンクで誤魔化すのも美しくない)。lib/mus/ にするくらいなら,いっそのこと libmus で妥協するか。この場合,Cμ の xtd 記法や libxtd との整合性も考える必要がある。
/kn/mus/libxtd.so なら,知機・ミュージアム・ライブラリ・拡張標準の関係を適切に表現出来ている。これを暫定案としてしばらく検討を続ける。
希哲11年6月17日,試験的に libxtd の引装先を /_kn/mus/ へ変更,ld.so.conf にも追加。