For Development HEAD DRAFTSearch (procedure/syntax/module):

9.23 gauche.package - パッケージメタ情報

Module: gauche.package

Gaucheは外部のライブラリや拡張モジュールをパッケージとして管理します。

各パッケージのソースツリーのトップディレクトリにはpackage.scmが置かれていて、 その中ではdefine-gauche-packageフォームによってパッケージの メタ情報が記されています。パッケージ名、バージョン、作者、依存関係等です。

パッケージのインストールに標準のインストール手順を使えば、 このメタ情報にパッケージをビルドしたGaucheのバージョン情報などが付け加えられ、 ライブラリインストールパスの.packagesサブディレクトリの下に PACKAGENAME.gpdという名前で保存されます。ここで PACKAGENAMEはパッケージの名前です。

package.scm*.gpdファイルをパッケージ記述ファイルと 総称することにします。

このモジュールはパッケージ記述ファイルの読み書きと、 インストールされたパッケージのパッケージ記述ファイルを探すユーティリティ手続きを 提供します。

package.scm

パッケージファイルpackage.scmは、 下に示すひとつのパッケージ定義を含みます。このフォームは評価されません。 単にリテラルデータとして読まれます。

package.scmはソースリポジトリにあるものが直接参照されることもあります。 GaucheのパッケージはリポジトリURLによって一意に識別され、そのリポジトリにある package.scmがメタ情報の一次ソースとして扱われます。

Package definition: define-gauche-package name key-value-list …

パッケージ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が次のとおり用意されています。

ユーティリティ手続き

Class: <gauche-package-description>

{gauche.package} プログラム的にパッケージ記述を扱うためのオブジェクトです。 以下のスロットを持ちます。

Instance Variable of <gauche-package-description>: name

パッケージの名前 (文字列)。

Instance Variable of <gauche-package-description>: repository

このパッケージのリポジトリURL(文字列)。 パッケージはリポジトリURLによってユニークに同定されます。

Instance Variable of <gauche-package-description>: version

パッケージのバージョン(文字列)。例:"1.0"

Instance Variable of <gauche-package-description>: description

パッケージの説明 (文字列)。最初の改行文字までの1行がサマリとして扱われます。

Instance Variable of <gauche-package-description>: require

(package-name version-spec)のリストで、 このパッケージが必要とする他のパッケージおよびそのバージョンを指定します。

Instance Variable of <gauche-package-description>: providing-modules

このパッケージが提供するモジュール名(シンボル)のリスト。

Instance Variable of <gauche-package-description>: authors

作者の名前と連絡先のリスト。

Instance Variable of <gauche-package-description>: maintainers

パッケージメンテナが作者と異なる場合、メンテナの名前と連絡先のリスト。

Instance Variable of <gauche-package-description>: licenses

ライセンスのリスト。例: "BSD""MIT""GPL2""GPL3""Apache2"等。

Instance Variable of <gauche-package-description>: homepage

このパッケージのホームページがあれば、そのURL。

Instance Variable of <gauche-package-description>: superseded-by

#fでなければ、このパッケージを引き継いだパッケージのリポジトリURL。 パッケージの開発が停止し、他の誰かが将来の開発を引き継いだ場合、 元のパッケージはこのスロットで後継者を指定することで「正式に」継承を示すことができます。

Instance Variable of <gauche-package-description>: gauche-version

このモジュールがインストールされた時に使われたGaucheのバージョン。

Instance Variable of <gauche-package-description>: configure

このモジュールがビルド/インストールされた時に与えられたconfigureの コマンドライン。

Function: path->gauche-package-description filename

{gauche.package} filenamegpdファイルでなければなりません。 この手続きはファイルをパーズし、<gauche-package-description>のインスタンスを 返します。

filenameが読めなかったり、ファイルが正しいdefine-gauche-packageフォームを 含んでいなかった場合はエラーが投げられます。

インストール済みのgpdファイルを見つけるには、 下のfind-gauche-package-descriptionが使えます。

Function: write-gauche-package-description description :optional oport

{gauche.package} <gauche-package-description>のインスタンスである descriptionの内容を、define-gauche-package形式として 出力ポートoportに書き出します。oportが省略された場合は 現在の出力ポートが使われます。

Function: make-gauche-package-description name :key version description require maintainers authors licenses homepage repository gauche-version configure providing-modules

{gauche.package} <gauche-package-description>の新たなインスタンスを作って返します。 スロットは対応するキーワード引数によって初期化されます。

Function: gauche-package-description-paths :key all-versions

{gauche.package} システムの標準の場所にインストールされている全てのgpdファイルのパスを 探し、そのリストを返します。 デフォルトでは*load-path*にあるパスにインストールされたパッケージを探します。 all-versionキーワード引数に真の値が指定された場合は、 それ以外のGaucheバージョン向けにインストールされたパッケージも探します。

Function: find-gauche-package-description name :key all-versions

{gauche.package} 名前name (文字列) を持つパッケージ記述を、標準的な場所にインストールされている パッケージから探します。見つかればそのパッケージの <gauche-package-description>インスタンスを、 見つからなければ#fを返します。

デフォルトでは*load-path*に含まれるディレクトリにインストールされた パッケージから探します。all-versionキーワード引数に真の値が与えられた 場合は、それに加えて他のGaucheバージョンのためにインストールされたパッケージも 探します。



For Development HEAD DRAFTSearch (procedure/syntax/module):
DRAFT