gauche.package
- パッケージメタ情報 ¶Gaucheは外部のライブラリや拡張モジュールをパッケージとして管理します。
各パッケージのソースツリーのトップディレクトリにはpackage.scmが置かれていて、
その中ではdefine-gauche-package
フォームによってパッケージの
メタ情報が記されています。パッケージ名、バージョン、作者、依存関係等です。
パッケージのインストールに標準のインストール手順を使えば、
このメタ情報にパッケージをビルドしたGaucheのバージョン情報などが付け加えられ、
ライブラリインストールパスの.packagesサブディレクトリの下に
PACKAGENAME.gpdという名前で保存されます。ここで
PACKAGENAME
はパッケージの名前です。
package.scmと*.gpdファイルをパッケージ記述ファイルと 総称することにします。
このモジュールはパッケージ記述ファイルの読み書きと、 インストールされたパッケージのパッケージ記述ファイルを探すユーティリティ手続きを 提供します。
パッケージファイルpackage.scmは、 下に示すひとつのパッケージ定義を含みます。このフォームは評価されません。 単にリテラルデータとして読まれます。
package.scmはソースリポジトリにあるものが直接参照されることもあります。 GaucheのパッケージはリポジトリURLによって一意に識別され、そのリポジトリにある package.scmがメタ情報の一次ソースとして扱われます。
パッケージnameを定義します。nameはシンボルでなければなりません。 続くのはキーワード-値リストです。以下のキーワードが認識されます。
repository
(文字列) パッケージのソースリポジトリのURL。パッケージを公開する際には、 これがパッケージを一意に識別します。
version
(文字列) パッケージのバージョン。例: "1.0"
。
description
(文字列) パッケージの説明。最初の行 (最初の改行文字まで) はパッケージの1行のサマリに なっていなければなりません。
require
(リスト) 依存パッケージのリスト。各依存パッケージは、
(<package-name> <version-spec>)
と記述されます。
ここで<package-name>
は文字列のパッケージ名、
<version-spec>
はパッケージの必要なバージョン範囲を示します。
<version-spec>
についてはgauche.version
- バージョン番号の比較を参照してください。
providing-modules
(リスト) このパッケージが提供するモジュール名(シンボル)のリストです。
authors
(リスト) このパッケージの作者名とコンタクト情報のリストです。
maintainers
(リスト) このパッケージのメンテナの名前とコンタクト情報のリストです 作者とメンテナが別の場合のみ必要です。
licenses
(リスト) ライセンス(文字列)のリストです。
homepage
(文字列) パッケージのホームページURL (もしあれば)。
superseded-by
(文字列) もし開発者がこのパッケージの開発・メンテナンスをやめることにして、 他の開発者がフォークしたリポジトリで開発の継続を希望した場合、 元の開発者はここに新たなリポジトリのURLを指定することで、 正式にリポジトリの継承を示すことができます。
configure
スクリプトと*.gpd
ファイルの生成 ¶gauche.configure
を用いたconfigure
スクリプトを使っている場合
Gaucheパッケージ記述ファイル(*.gpd)はそれによって作成されます
(see gauche.configure
- ビルド用ファイルの生成)。gpd
ファイルはpackage.scm
の情報に加え、configure
スクリプトが集めたインストール先プラットフォームについての
情報を保持しています。
生成されたgpd
ファイルはパッケージと一緒にインストールされ、
gauche-package
コマンドで参照できます。
また、プログラム的に扱うためのユーティリティAPIが次のとおり用意されています。
{gauche.package
}
プログラム的にパッケージ記述を扱うためのオブジェクトです。
以下のスロットを持ちます。
<gauche-package-description>
: name ¶パッケージの名前 (文字列)。
<gauche-package-description>
: repository ¶このパッケージのリポジトリURL(文字列)。 パッケージはリポジトリURLによってユニークに同定されます。
<gauche-package-description>
: version ¶パッケージのバージョン(文字列)。例:"1.0"
。
<gauche-package-description>
: description ¶パッケージの説明 (文字列)。最初の改行文字までの1行がサマリとして扱われます。
<gauche-package-description>
: require ¶(package-name version-spec)
のリストで、
このパッケージが必要とする他のパッケージおよびそのバージョンを指定します。
<gauche-package-description>
: providing-modules ¶このパッケージが提供するモジュール名(シンボル)のリスト。
<gauche-package-description>
: authors ¶作者の名前と連絡先のリスト。
<gauche-package-description>
: maintainers ¶パッケージメンテナが作者と異なる場合、メンテナの名前と連絡先のリスト。
<gauche-package-description>
: licenses ¶ライセンスのリスト。例: "BSD"
、
"MIT"
、"GPL2"
、"GPL3"
、"Apache2"
等。
<gauche-package-description>
: homepage ¶このパッケージのホームページがあれば、そのURL。
<gauche-package-description>
: superseded-by ¶#f
でなければ、このパッケージを引き継いだパッケージのリポジトリURL。
パッケージの開発が停止し、他の誰かが将来の開発を引き継いだ場合、
元のパッケージはこのスロットで後継者を指定することで「正式に」継承を示すことができます。
<gauche-package-description>
: gauche-version ¶このモジュールがインストールされた時に使われたGaucheのバージョン。
<gauche-package-description>
: configure ¶このモジュールがビルド/インストールされた時に与えられたconfigure
の
コマンドライン。
{gauche.package
}
filenameはgpd
ファイルでなければなりません。
この手続きはファイルをパーズし、<gauche-package-description>
のインスタンスを
返します。
filenameが読めなかったり、ファイルが正しいdefine-gauche-package
フォームを
含んでいなかった場合はエラーが投げられます。
インストール済みのgpd
ファイルを見つけるには、
下のfind-gauche-package-description
が使えます。
{gauche.package
}
<gauche-package-description>
のインスタンスである
descriptionの内容を、define-gauche-package
形式として
出力ポートoportに書き出します。oportが省略された場合は
現在の出力ポートが使われます。
{gauche.package
}
<gauche-package-description>
の新たなインスタンスを作って返します。
スロットは対応するキーワード引数によって初期化されます。
{gauche.package
}
システムの標準の場所にインストールされている全てのgpdファイルのパスを
探し、そのリストを返します。
デフォルトでは*load-path*
にあるパスにインストールされたパッケージを探します。
all-versionキーワード引数に真の値が指定された場合は、
それ以外のGaucheバージョン向けにインストールされたパッケージも探します。
{gauche.package
}
名前name (文字列) を持つパッケージ記述を、標準的な場所にインストールされている
パッケージから探します。見つかればそのパッケージの
<gauche-package-description>
インスタンスを、
見つからなければ#f
を返します。
デフォルトでは*load-path*
に含まれるディレクトリにインストールされた
パッケージから探します。all-versionキーワード引数に真の値が与えられた
場合は、それに加えて他のGaucheバージョンのためにインストールされたパッケージも
探します。