<!-- -*- mode:text coding:euc-jp -*-
   derived from $FML: cvstree.sgml,v 1.11 2005/06/25 15:11:30 fukachan Exp $
-->


<appendix id="repository.dirhier">
	<title>
	repository リポジトリの構造
	</title>


<!-- ===================================================== -->
<sect1 id="repository.dirhier.summary">
	<title>
	ソースツリー構造の概要
	</title>

<para>
&fml4; と異なり、
「使えるもの(たとえば CPAN )は何でも使え」が &fml8; の基本方針です。
そうしないと、自分で保守するべき項目が増えるだけだからです。
</para>

<para>
ただし、保守する人もしくはライセンスをはっきりさせておくために、
ベンダーごとにディレクトリを分けています。
たとえば CPAN で保守されているものは cpan/ ディレクトリ以下に入れています。
ライセンスなどによっては、将来さらに区分を分ける必要が出てくるかもしれません。
</para>

<para>
cpan/ や 3rdparty/ 以下のモジュールを変更したい場合は fml/ 以下で、
なんらかのラップ(wrap)をするか、パッチをオリジナルに反映してもらったうえで
cpan/ 以下をアップデートをすることが望ましいやり方です。
cpan/lib/ に直接変更を加えることもありますが、
cpan/dist/ はオリジナルを保存する場所なので、変更してはいけません。
</para>

<para>
なお site_local/ (予約語、配布セットには存在しないディレクトリ)は、
そのサイト独自の module を置くディレクトリと定義されています。
つまり fml プロジェクトとは無関係です。
</para>

</sect1>


<!-- ===================================================== -->
<sect1>
	<title>
	リポジトリ内のディレクトリ構造
	</title>

   <sect2>
	 <title> / 以下のディレクトリ構造 </title>

	<table>
	 <title> / 以下のディレクトリ構造 </title>
	 <tgroup cols=2>

	  <thead>
		<row>
		<entry>	ベンダー名
		</entry>
		<entry>	そのディレクトリにおくモジュールの説明
		</entry>
		</row>
	   </thead>

	  <tbody>
		<row>
		<entry>
			Documentation/
		</entry>
		<entry>
			ドキュメントとして公開する場所。

			ベンダー境界を越えて混ざりうるので
			このディレクトリが創設されました。
		</entry>
		</row>

		<row>
		<entry>	fml/
		</entry>
		<entry>	&fml8; プロジェクト直轄
		</entry>
		</row>

		<row>
		<entry>	cpan/
		</entry>
		<entry>	CPAN で保守されているもの

			この下のモジュールについては上述の説明のとおり。
			単に標準モジュールでないため、ないしは
			&fml8; のバージョン管理や保守のために、ここに収容。

			なお
			cpan/dist/
			に輸入したモジュールの元パッケージ全体をおき、
			cpan/lib/
			にライブラリを正しいクラス階層にあうように配置します。
		</entry>
		</row>

		<row>
		<entry>	img/
		</entry>
		<entry>
		Internet Message Group
		(IM は解散したが、保守を引き継いだ偉い人がいるので OK。
		IMG ではないが IMG という名前のまま使う)
		</entry>
		</row>

		<row>
		<entry> 	3rdparty/
		</entry>
		<entry>	サードパーティ用(予約)

			予約されているだけで、
			&fml8; プロジェクトとしては使いません。
		</entry>
		</row>


		<row>
		<entry> 	site_local/
		</entry>
		<entry>
			デフォルトではリポジトリ・ツリー内にはありません。
			そのサイト独自に保守したいモジュールをおくための
			ディレクトリ。
			名前を予約されているだけで、
			&fml8; プロジェクトとしては使いません。
		</entry>
		</row>

	   </tbody>
	 </tgroup>
	</table>
   </sect2>

   <sect2>
	<title> fml/ 以下 </title>

	<table>
	 <title> fml/ 以下のディレクトリの説明 </title>

	 <tgroup cols=2>

	   <thead>
		<row>
		<entry> ディレクトリ	</entry>
		<entry> 説明		</entry>
		</row>
	   </thead>

	   <tbody>
		<row>
		<entry>	fml/bin/	</entry>
		<entry> /usr/local/bin/ にインストールするプログラム </entry>
		</row>

		<row>
		<entry>	fml/doc/	</entry>
		<entry> Documentation/ のソース	</entry>
		</row>

		<row>
		<entry>	fml/etc/	</entry>
		<entry> 設定ファイルやテンプレート群 </entry>
		</row>


		<row>
		<entry>	fml/lib/ 		</entry>
		<entry>	perl モジュール群	</entry>
		</row>


		<row>
		<entry>	fml/libexec/	 	</entry>
		<entry>
			実行されるプログラムの実体。
			すぐにモジュールを呼び出すので、
			正確には wrapper です。
			重要なのは loader だけです。
		</entry>
		</row>

		<row>
		<entry>	fml/share/ 		</entry>
		<entry>	メッセージのテンプレートなど	</entry>
		</row>

		<row>
		<entry>	fml/utils/	</entry>
		<entry> ユーティリティですが、
			これは開発者が fml のソース内で使うだけのものです。 
			インストール対象ではありません。
		</entry>
		</row>
	   </tbody>

	 </tgroup>
	</table>
   </sect2>

</sect1>

</appendix>
