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

Next: , Previous: , Up: ライブラリモジュール - Gauche拡張モジュール   [Contents][Index]

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 script and *.gpd file generation

If you use configure script based on gauche.configure (see gauche.configure - ビルド用ファイルの生成), a Gauche package description file (*.gpd) is created with it. The gpd file contains information from package.scm, plus the information on the installaion platform gathered by configure.

The generated gpd file is installed with the package itself, and will be used by gauche-package command, as well as retrieved by the following utility APIs.

Utility procedures

Class: <gauche-package-description>

{gauche.package} An object to handle package descriptions programatically.

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

The name of the package, a string

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

An URL to the repository of this package.

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

The version of the package, a string, e.g. "1.0".

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

The description of the package. Up to the first newline character may be used as a short summary.

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

A list of (package-name version-spec), to specify the other packages this package requires.

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

A list of module names (symbols) that this package provides.

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

A list of author’s name and contact info.

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

A list of maintainer’s name and contact info, if it differs from authors.

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

A list of licenses.

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

An URL to the homepage of this package.

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

If not #f, the value is a repository URL of the successor of this package.

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

Gauche version with which this module is installed.

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

A command-line string keeping how configure script was run to build and install this package.

Function: path->gauche-package-description filename

{gauche.package} The named file must be a gpd file. This reads the file and returns an instance of <gauche-package-description>.

An error is thrown if filename can’t be read, or doesn’t have a proper define-gauche-package form.

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

{gauche.package} Write out the content of <gauche-package-description> instance, description as a define-gauche-package form, to an output port oport. If oport is omitted, current output port is used.

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

{gauche.package} Creates and returns a new instance of <gauche-package-description>, the slots of which is initialized with the given keyword arguments.

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

{gauche.package} Gather all the gpd file paths installed in the standard location on the system. By default, it collects packages installed in *load-path*. If you give a true value to all-version, it attempts to collect packages installed for other versions of Gauche as well.

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

{gauche.package} Try to find a package description of name installed in the standard location, and returns an instance of <gauche-package-description> if found. Returns #f if the named package isn’t found.

By default, it collects packages installed in *load-path*. If you give a true value to all-version, it attempts to collect packages installed for other versions of Gauche as well.


Next: , Previous: , Up: ライブラリモジュール - Gauche拡張モジュール   [Contents][Index]


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