Export to GitHub

geeklog-jp - SourceCodeStrucure.wiki


はじめに

本ドキュメントはソースコードの構成について説明します。


ソースコードの構成

現在のソースコードの構成は、オリジナルのGeeklogの配布を元にしつつ、そこに日本語版独自のファイルを加えています。そして、GNU makeコマンドを使用して、日本語通常版や日本語拡張版の配布形態とする内容のファイルを生成できるようにしています。

この生成する処理は、GNU makeコマンドを含むUNIX系オペレーティング・システムのコマンドに依存しています。確認はしていませんが、cygwinの環境でも十分に可能なはずです。しかし、通常のWindowsのコマンド・プロンプトからは不可能でしょう。

以下では、trunk/geeklog-jp直下の独自のファイルやディレクトリについて説明します。

トップのディレクトリのGNUmakefile

GNU makeで処理を行う内容を記述したファイルです。一般的なMakefileといった名前でも良いのですが、GNU make独自の内容を含んでいるので、GNU makeコマンドだけが認識するmakefileの名前を使用しています。

トップのディレクトリには、共通に使用するための以下のGNUmakefileで始まる名前のファイルがあります。

| 名前 | 内容 | |:---|:---| | Gnumakefile.common | 各サブ・ディレクトリのGNUmakefileが参照する共通の内容を含んでいます。 | | GNUmakefile.plugins | 各プラグインのディレクトリのGNUmakefileが参照する共通の内容を含んでいます。 |

custom

日本語版用のカスタム関数のファイルを置いてあります。これらのファイルは同じディレクトリのGNUmakefileの内容に従って、日本語通常版や日本語拡張版のsystem/customディレクトリにコピーされます。

custom/GNUmakefileの中では、以下のマクロにファイルを指定します。(マクロの複数の値はスペースで区切って指定します。)

| マクロ名 | 内容 | |:-----|:---| | FILES | 日本語通常版と日本語拡張版の両方でインストールするファイルを指定します。 | | EFILES | 日本語拡張版だけでインストールするファイルを指定します。 |

extended

日本語拡張版だけに含まれたり、日本語拡張版で内容が異なるファイルを、このディレクトリを起点としたツリー構造で置きます。

例えば、system/lib-custom.php というファイルは日本語拡張版で異なる内容となっていたり、public_html/layout/WAIproCSS といったディレクトリ以下のファイルは日本語拡張版だけに存在します。このようなファイルは、それぞれ extended/system/lib-custom.php や extended/public_html/layout/WAIproCSS といった場所に置きます。

GNU makeコマンドで日本語拡張版の配布ファイルを作成する場合に、extended以下のファイルのツリー構造は、日本語基本版の内容に上書きされる形となります。

なお、現在のところ日本語通常版にだけに含まれていて、日本語拡張版に存在しないといったファイルやディレクトリを用意する方法はありません。そのようなものが本当に必要となった時点で検討することになります。

plugins-jp

日本語版独自のプラグインを、単独配布のツリー構造で置きます。

plugins-jp/GNUmakefile には、インストールする各プラグインのディレクトリを、以下のようなマクロに指定します。

| マクロ名 | 内容 | |:-----|:---| | SUBDIR | 日本語通常版と日本語拡張版の両方に含めるプラグインを指定します。 | | ESUBDIR | 日本語拡張版にだけ含めるプラグインを指定します。 |

各プラグインのディレクトリのディレクトリのGNUmakefileには、以下のマクロを定義します。

| マクロ名 | 内容 | デフォルト値 | |:-----|:---|:-------| | PLUGIN | プラグインのディレクトリ名に使用される名前を定義します。 | 必須定義(デフォルトなし) | | FILES | 非公開領域のプラグインのディレクトリにインストールするファイルを指定します。 | 空 | | DIRS | 非公開領域のプラグインのディレクトリに再帰的にインストールするディレクトリを指定します。 | language sql templates | | MAKEPUBDIRS | 公開領域にデータを置くディレクトリが必要なディレクトリを指定します。 | 空 | | PUBDIRMODE | MAKEPUBDIRSで作成するディレクトリのアクセス権を8進数で指定します。 | 0755 |


GNU makeコマンドによる処理

チェックアウトしたソース・ツリーのトップのディレクトリで、GNU makeコマンドを実行して、サーバにインストールするためのソース・ツリーを作成します。なお、以下ではGNU makeのコマンドをmakeとして例を記述していますが、環境によってはgmakeといったコマンドで実行が必要な場合もあります。

配布用のファイル・ツリーの作成

GNU makeにinstallを引数として実行すると、GNUmakefile.common のTOPDIRで定義されたディレクトリ(デフォルト: /var/tmp)以下にリリースに応じたディレクトリを作成して、そこに日本語通常版の配布用のファイル・ツリーを作成します。

% make install

リリースに応じたディレクトリは、トップ・ディレクトリの GNUmakefile.common で定義されたGL_VERSIONGL_JPVERSIONといったマクロに従って名前が決まります。

日本語拡張版の配布用のファイル・ツリーを作成するには、EXTENDEDというマクロを定義して実行します。

% env EXTENDED= make install

配布用のファイル・ツリーの作成

前の章のGNU makeの引数のinstallに代えてreleaseを指定すると、配布用のファイル・ツリーの作成に続いて、配布用のアーカイブ・ファイルを作成します。

作成する配布用のファイルは、以下の2つの形式となります。

  • tar形式にまとめてからgzipで圧縮したファイル
  • zip形式にまとめたファイル

日本語通常版の場合は次のようになります。

% make release

日本語拡張版の場合は次のようになります。

% env EXTENDED= make release


必要なUNIXのコマンド

配布ファイルの作成等のmakefileでは以下のコマンドを使用しています。

  • chmod
  • cmp
  • dirname
  • find
  • gzip
  • install
  • mv
  • pax
  • rm
  • sed
  • tar
  • true
  • false
  • zip