2009年12月8日火曜日

XEmacs package system

XEmacs、ほぼ初めていじったといってよいのですが、このpackage systemは結構ちゃんとしていてびっくりです。依存関係管理を装備すれば、完備かと。

うーん。GNU Emacsにもこういうものが欲しい。。。


* XEmacs package system
- パッケージの置き場所
- パッケージの置き場所は、file system上のpathで
系統づけている。その系統を'パッケージ階層'と呼
ぶ。デフォルトでは3つの系統がある。
- startupの際に、パッケージ階層をXEmacsは見るこ
とができる。load-pathにする、ということではな
いようだ。M-x describe-installationでpackage
pathの値をみることができる。
- パッケージ階層 (package hierarchies)
- Local and 3rd party packages go here:
- $prefix/lib/xemacs/site-packages
- Only searched by MULE-enabled XEmacsen:
- $prefix/lib/xemacs/mule-packages
- Normal packages go here:
- $prefix/lib/xemacs/xemacs-packages
- Infodock development environments
- $prefix/lib/xemacs/infodock-packages

- $prefixはconfigure scriptに渡したパラメータ。
- 典型的には'/usr/local/'。
- ユーザのパッケージ階層
- '.xemacs/'配下
に、'site-packages'、'xemacs-packages'、
'mule-packages'ディレクトリをつくると、認識
される。
- パッケージ階層とload-path
- パッケージ階層達の優先度はXEmacsのコンパイ
ル時に指定する。
- 前項の指定順にしたがって、パッケージ階層を
調べて、load-pathを構成する。

- パッケージ
- バイナリパッケージとソースパッケージがある。
- ソースパッケージからバイナリパッケージを生成
する。'バイナリ'と言うが、実際はバイトコード
(コンパイルされたelispファイル)。

- バイナリパッケージアーカイブ
- XEmacs公式
- Official XEmacs Packages:
- XEmacs開発者によってテスト済み。
These packages have received testing from XEmacs developers and bleeding-edge users
and are available as documented in our Release Notice Archive.
- Pre-Release XEmacs Packages:
- テスト中またはテスト待ちのパッケージ。
- アーカイブではなく、パケージ個別に独立管理し
ているもの
- http://www.xemacs.org/Download/elispPackages.html
- ただし、このリストにあるもので、XEmacs
packagesに含まれることもあるとのこと。なん
のこっちゃ。
- http://ftp.xemacs.org/pub/packages/
- 130前後のパッケージあり。

- ソースパッケージリポジトリ
- XEmacs CVSリポジトリの一部。次の構造。

<repo-root>/
packages/
Makefile
iterate.rules
meta-iterate.rules
XEmacs.rules
Local.rules
Local.rules.template
Local.rules.mk
Local.rules.inc
package-compile.el
xemacs-packages/
Makefile
pkg-A-name/
pkg-B-name/
...
mule-packages/
Makefile
pkg-1-name/
pkg-2-name/
...
- 再帰的makeによって、パッケージ全体をビルドす
るようだ。

- パッケージの作法
- パッケージのflavor
- 2つのflavorがある。
- Regular Packages
- elispファイル達総体として機能をなすもの。
- 部分的に削除すると、機能しなくなる。
- Single-File Packages
- 個別elispファイルで機能するもの。そういっ
たものを共通テーマでくくったもの。
- 部分的に削除しても残りのものは機能する。
- ファイル名
- pkgname--pkg.tar.gz
- バイナリパッケージの中身の構成

_pkg.el
auto-autoloads.el
custom-load.el
ChangeLog
lib/pkgname/
lib-src/pkgname/
etc/pkgname/
info/
lisp/maybe-pkgname/
man/maybe-pkgname/
pkginfo/MANIFEST.pkgname

- _pkg.el
- パッケージ管理システム向け情報。
- auto-autoloads.el
- autoloadを中心に、pkgを使う(使えるように
する)ための設定を含む。
- custom-load.el
- customに対する設定を含む。
- pkginfo/MANIFEST.pkgname
- インストール対象ファイルの一覧を含む。

- ソースパッケージの構成
- バイナリパッケージの '_pkg.el' 、
'auto-autoloads.el'、'custom-load.el' は生
成物。そのかわりに、次のものがある。

Makefile
package-info.in

- 制御ファイル (Control Files)
- ソースとバイナリにまたがって、制御系のファ
イル達のことを制御ファイルと呼ぶ。具体的に
は、次のとおり。

Makefile
package-info.in
_pkg.el
auto-autoloads.el
custom-load.el

- インストール
- 基本的にはパッケージ階層のトップにてuntarする
だけ。
- elispによるインストールフロントエンドもあり。

- アンインストール
- 関数:package-admin-delete-binary-packageにて
削除可能。

- 依存関係
- 依存関係を扱う機構は無い。

こつこつ。

0 件のコメント: