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-paths)にあるパスにインストールされたパッケージを探します。
all-versionキーワード引数に真の値が指定された場合は、
それ以外のGaucheバージョン向けにインストールされたパッケージも探します。
{gauche.package}
名前name (文字列) を持つパッケージ記述を、標準的な場所にインストールされている
パッケージから探します。見つかればそのパッケージの
<gauche-package-description>インスタンスを、
見つからなければ#fを返します。
デフォルトでは(load-paths)に含まれるディレクトリにインストールされた
パッケージから探します。all-versionキーワード引数に真の値が与えられた
場合は、それに加えて他のGaucheバージョンのためにインストールされたパッケージも
探します。