「Eosの構造」の版間の差分

提供: Eospedia
移動: 案内検索
(Eosのディレクトリ構造)
(Eos/src/Objects)
 
(2人の利用者による、間の29版が非表示)
行1: 行1:
ここでは、Eosの構造に関して、説明します。
+
ここでは、Eosのシステムとしての構造を説明します。
 
+
ここでは、Eosのシステムとしての構造を説明します。
+
  
 
== Eosのディレクトリ構造 ==
 
== Eosのディレクトリ構造 ==
行8: 行6:
 
Eosのホームディレクトリです。$EOS_HOMEの環境変数によって指定されています。
 
Eosのホームディレクトリです。$EOS_HOMEの環境変数によって指定されています。
 
環境設定ファイル以外のEosに関係したファイル/ディレクトリはすべてこのなかに存在しています。
 
環境設定ファイル以外のEosに関係したファイル/ディレクトリはすべてこのなかに存在しています。
 +
 
<pre>
 
<pre>
 
Eos
 
Eos
 
</pre>
 
</pre>
  
=== Eos/bin ===
+
=== EosBase ===
 +
Eosにおいて中心的な役割を果たすものです。開発環境も含んだディレクトリです。bin/sbin/lib/hostdependは実行の際に必要、src/include/sbinは開発に必要なものを含んでいます。
 +
 
 +
==== Eos/bin ====
 
Eosの[[コマンド]]([[Small Tools]])に関する実行ファイル等があるディレクトリです。
 
Eosの[[コマンド]]([[Small Tools]])に関する実行ファイル等があるディレクトリです。
<pre>
 
Eos/bin
 
Eos/bin/XXXXXX
 
Eos/wish
 
</pre>
 
  
 XXXXXXは、それぞれのホストのタイプ($EOS_HOST)毎に異なるディレクトリになっています。
+
Eos/bin
 +
Eos/bin/XXXXXX
 +
Eos/bin/wish
 +
Eos/bin/ruby
 +
Eos/bin/shell
 +
Eos/bin/perl
  
=== Eos/sbin ===
+
XXXXXXは、それぞれのホストのタイプ($EOS_HOST)毎に異なるディレクトリになっており、コンパイル・リンクされた実体が格納されています。ただし、実際には、Eos/hostdependにあり、是までとの継続性を考慮して、リンクとなっています。
 +
 
 +
/wish, /ruby, /shell, /perlは、それぞれ、Tcl/Tk, Ruyb, Bash, perl等のシェルスクリプト用のディレクトリです。Eos/binから呼び出されるようになっています。
 +
 
 +
==== Eos/hostdepend ====
 +
ホストに依存したバイナリが保存されています。詳細は、本頁の[[#Eosのホスト毎の制御]]をご覧下さい。
 +
 
 +
==== Eos/sbin ====
 
Eosの[[システムコマンド]]が格納されているディレクトリです。
 
Eosの[[システムコマンド]]が格納されているディレクトリです。
<pre>
 
Eos/sbin
 
</pre>
 
  
=== Eos/lib ===
+
Eos/sbin
Eos/lib
+
Eos/sbin/sed
 +
Eos/sbin/awk
 +
Eos/sbin/config
 +
 +
/sed, /awkはそれぞれ、sed, awk用のコマンドが格納されています。
 +
/configには、sbin内で利用する設定ファイルが格納されています。
  
=== Eos/include ===
+
==== Eos/lib ====
Eos/include
+
Eosの[[ライブラリ]]が格納されているディレクトリです。
  
=== Eos/data ===
+
Eos/lib
Eosのテストなどのためのdataが格納されたディレクトリです。
+
Eos/lib/XXXXXX
<pre>
+
Eos/lib/*.rb
Eos/data
+
Eos/lib/*.wish
</pre>
+
  
=== Eos/doc ===
+
XXXXXXは、それぞれ異なるホストタイプ($EOS_HOST)毎のディレクトリになっており、コンパイルされたバイナリがライブラリとして格納されています。
Eosのためのドキュメントが格納されているディレクトリです。
+
<pre>
+
Eos/doc
+
</pre>
+
  
=== Eos/src ===
+
*.rb, *.wishはそれぞれ、ruby, Tcl/Tk用の関数群です。
#
+
Eos/src
+
Eos/src/Config
+
  
==== Eos/src/Objects ====
+
==== Eos/include ====
Eos/src/Objects
+
Eosをコンパイルするためのincludeファイルが格納されているディレクトリです。
  
==== Eos/src/Tools ====
+
Eos/include
Eos/src/Tools
+
  
=== Eos/util ===
+
 
 +
==== Eos/src ====
 +
EosのObjects/Toolsのソースファイルのディレクトリです。
 +
 
 +
Eos/src
 +
 
 +
===== Eos/src/Config =====
 +
ソースファイルをコンパイルするためのホストタイプ毎の環境を設定しているディレクトリです。コンパイルのための各ディレクトリのMakefileのテンプレートも存在しています。
 +
 
 +
Eos/src/Config
 +
 
 +
===== Eos/src/Objects =====
 +
EosのObjects([[ライブラリ]])のソースコードがあるディレクトリです。ここでコンパイルされるとEos/lib及びEos/includeにコピーされ、Tools等から利用できる様になります。
 +
 
 +
Eos/src/Objects
 +
 
 +
これより下部のディレクトリ構成は、[[Eos/src/Objects]]を参照して下さい。
 +
 
 +
===== Eos/src/Tools =====
 +
Eosの[[コマンド]]([[Small Tools]])のソースコードがあるディレクトリです。ここでコンパイル・リンクされたコマンドは、Eos/binのディレクトリにインストールされます。
 +
 
 +
Eos/src/Tools
 +
 
 +
このディレクトリの下の構造に関しては、[[Eos/src/Tools]]を参照して下さい。
 +
 
 +
==== Eos/util ====
 +
 
 +
Eosのために必要な他のシステムのライブラリが格納されています。過去との継続のために残しています。
 +
実際の実体は、Eos/hostdepend/XXXXXX/util/XXXXXXのなかに格納されています。
 +
 
 +
<pre>
 
Eos/util
 
Eos/util
 
Eos/util/src
 
Eos/util/src
 
Eos/util/srcXXXXXX
 
Eos/util/srcXXXXXX
 
Eos/util/XXXXXX
 
Eos/util/XXXXXX
 +
</pre>
 +
 +
srcにはダウンロードしてきたソースコードのtgzファイルをおいています。ただし、再配布が困難であるため、gitの中にはアップロードしていません。srcXXXXXは、それらをホストタイプ毎に解凍したものが置かれます。それぞれのディレクトリにMakefileが用意されています。
 +
 +
<pre>
 +
$ make Init
 +
$ make Config
 +
$ make All
 +
</pre>
 +
 +
の順に実行すればコンパイルされるはずです。ただ環境に応じて、必ずしもコンパイルできない場合があります。
 +
 +
現在、必要となるライブラリは下記の様になります。
 +
 +
===== TclTk =====
 +
[[Display2]]のようなInterativeなツールのために必要です。[[BLT]]を使って、グラフ等を作成しているアプリケーションでは、Tcl/Tkだけではなく、BLTまで必要です。OpenGL等の三次元グラフィックスを利用しやすくするには、[[vtk]]も必要で、[[smolet]]などで必要としています。
 +
 +
===== Graphics =====
 +
[[libtif]]、[[libjpg]]など、主として、各種の画像ファイルフォーマット等に対応するために必要です。
 +
 +
===== MATH =====
 +
[[fftw]]などの数値計算のためのライブラリのために準備しています。
 +
 +
=== EosData ===
 +
==== Eos/data ====
 +
Eosのテストなどのためのdataが格納されたディレクトリです。まだ整理が十分とは言えませんので、大きく内容が変更になる可能性があります。
 +
 +
Eos/data
 +
 +
=== EosOptional ===
 +
==== Eos/doc ====
 +
Eosのためのドキュメントが格納されているディレクトリです。
 +
 +
Eos/doc
 +
 +
=== EosOthers ===
 +
==== Eos/others ====
 +
Eos以外のオープンソースが提供するソースコード等を保管したディレクトリです。
 +
それぞれのバージョン毎に仕様が異なるために、Eosが保証しているソースコードを保管しています。
 +
 +
utilsrc    # ライブラリ等のソースファイル
 +
utiltools  # 単独のアプリケーション(インストールが自由で無い場合向け)
 +
 +
の二つのディレクトリからなっています。
 +
 +
これらをコンパイルしたライブラリがhostdepend/XXXXXX/util/XXXXXXの下に格納されており、動作を保証しています。
 +
このファイルは、util/XXXXXXXからリンクが張られており、そちらを利用します。
 +
 +
 +
ただし、glibcなどのLINUX等が提供するバイナリのバージョンによってはうまく動作しない可能性があります。その場合には、こちらのothersからリンクを設定されているutil/srcXXXXXXの直下でコンパイルし、ライブラリを作成する事になります。
 +
 +
== Eosのホスト毎の制御 ==
 +
 Eosでは、ヘテロな環境でも一つのディレクトリで管理し、実行できるような仕組みをとることにしています。
 +
 +
 +
=== 環境変数による切り替え ===
 +
Eosのホスト毎の管理は、$EOS_HOSTと$EOS_HOSTDIRの二つの環境変数により、切り替えを行っています。
 +
 +
=== Eosのホスト毎のファイルの管理方法の変更 ===
 +
最近、git管理に変えた際に、ホスト毎の切り替えが大変困難になってしまいました。そこで、バイナリ毎にダウンロード出来るようにディレクトリ構成を変更しました。(2013/02/01版より)
 +
 +
以前のものを使われている方は、src直下のツール(Tools)やオブジェクト(Objects)のそれぞれのディレクトリにバイナリが置かれています。現在のものをダウンロードするとそれらは全て下記のホストごとのディレクトリへのリンクに変更になっています。ご注意下さい。
 +
 +
2013/02/01以降は、各ホスト毎のバイナリ等は、すべてEosの直下のhostdependのディレクトリ以下に、$EOS_HOSTDIRに従って保存するように移動しました。これにより、ホストタイプ毎にそのディレクトリをコピーやバックアップすれば済むようになりました。これが現在のダウンロードサイトからダウンロード出来るようにしています。
 +
 +
現在のバージョンのホスト毎のディレクトリ構成
 +
 +
$EOS_HOME/hostdepend/$EOS_HOSTDIR/bin
 +
                                  lib
 +
                                  util
 +
                                  src/WORLD/CLASS/NAME/src/

2014年10月14日 (火) 00:14時点における最新版

ここでは、Eosのシステムとしての構造を説明します。

Eosのディレクトリ構造

Eos

Eosのホームディレクトリです。$EOS_HOMEの環境変数によって指定されています。 環境設定ファイル以外のEosに関係したファイル/ディレクトリはすべてこのなかに存在しています。

Eos

EosBase

Eosにおいて中心的な役割を果たすものです。開発環境も含んだディレクトリです。bin/sbin/lib/hostdependは実行の際に必要、src/include/sbinは開発に必要なものを含んでいます。

Eos/bin

Eosのコマンド(Small Tools)に関する実行ファイル等があるディレクトリです。

Eos/bin
Eos/bin/XXXXXX
Eos/bin/wish
Eos/bin/ruby
Eos/bin/shell
Eos/bin/perl

XXXXXXは、それぞれのホストのタイプ($EOS_HOST)毎に異なるディレクトリになっており、コンパイル・リンクされた実体が格納されています。ただし、実際には、Eos/hostdependにあり、是までとの継続性を考慮して、リンクとなっています。

/wish, /ruby, /shell, /perlは、それぞれ、Tcl/Tk, Ruyb, Bash, perl等のシェルスクリプト用のディレクトリです。Eos/binから呼び出されるようになっています。

Eos/hostdepend

ホストに依存したバイナリが保存されています。詳細は、本頁の#Eosのホスト毎の制御をご覧下さい。

Eos/sbin

Eosのシステムコマンドが格納されているディレクトリです。

Eos/sbin
Eos/sbin/sed
Eos/sbin/awk
Eos/sbin/config

/sed, /awkはそれぞれ、sed, awk用のコマンドが格納されています。 /configには、sbin内で利用する設定ファイルが格納されています。

Eos/lib

Eosのライブラリが格納されているディレクトリです。

Eos/lib
Eos/lib/XXXXXX
Eos/lib/*.rb
Eos/lib/*.wish

XXXXXXは、それぞれ異なるホストタイプ($EOS_HOST)毎のディレクトリになっており、コンパイルされたバイナリがライブラリとして格納されています。

  • .rb, *.wishはそれぞれ、ruby, Tcl/Tk用の関数群です。

Eos/include

Eosをコンパイルするためのincludeファイルが格納されているディレクトリです。

Eos/include


Eos/src

EosのObjects/Toolsのソースファイルのディレクトリです。

Eos/src
Eos/src/Config

ソースファイルをコンパイルするためのホストタイプ毎の環境を設定しているディレクトリです。コンパイルのための各ディレクトリのMakefileのテンプレートも存在しています。

Eos/src/Config
Eos/src/Objects

EosのObjects(ライブラリ)のソースコードがあるディレクトリです。ここでコンパイルされるとEos/lib及びEos/includeにコピーされ、Tools等から利用できる様になります。

Eos/src/Objects

これより下部のディレクトリ構成は、Eos/src/Objectsを参照して下さい。

Eos/src/Tools

Eosのコマンド(Small Tools)のソースコードがあるディレクトリです。ここでコンパイル・リンクされたコマンドは、Eos/binのディレクトリにインストールされます。

Eos/src/Tools

このディレクトリの下の構造に関しては、Eos/src/Toolsを参照して下さい。

Eos/util

Eosのために必要な他のシステムのライブラリが格納されています。過去との継続のために残しています。 実際の実体は、Eos/hostdepend/XXXXXX/util/XXXXXXのなかに格納されています。

Eos/util
Eos/util/src
Eos/util/srcXXXXXX
Eos/util/XXXXXX

srcにはダウンロードしてきたソースコードのtgzファイルをおいています。ただし、再配布が困難であるため、gitの中にはアップロードしていません。srcXXXXXは、それらをホストタイプ毎に解凍したものが置かれます。それぞれのディレクトリにMakefileが用意されています。

$ make Init
$ make Config
$ make All

の順に実行すればコンパイルされるはずです。ただ環境に応じて、必ずしもコンパイルできない場合があります。

現在、必要となるライブラリは下記の様になります。

TclTk

Display2のようなInterativeなツールのために必要です。BLTを使って、グラフ等を作成しているアプリケーションでは、Tcl/Tkだけではなく、BLTまで必要です。OpenGL等の三次元グラフィックスを利用しやすくするには、vtkも必要で、smoletなどで必要としています。

Graphics

libtiflibjpgなど、主として、各種の画像ファイルフォーマット等に対応するために必要です。

MATH

fftwなどの数値計算のためのライブラリのために準備しています。

EosData

Eos/data

Eosのテストなどのためのdataが格納されたディレクトリです。まだ整理が十分とは言えませんので、大きく内容が変更になる可能性があります。

Eos/data

EosOptional

Eos/doc

Eosのためのドキュメントが格納されているディレクトリです。

Eos/doc

EosOthers

Eos/others

Eos以外のオープンソースが提供するソースコード等を保管したディレクトリです。 それぞれのバージョン毎に仕様が異なるために、Eosが保証しているソースコードを保管しています。

utilsrc     # ライブラリ等のソースファイル
utiltools   # 単独のアプリケーション(インストールが自由で無い場合向け)

の二つのディレクトリからなっています。

これらをコンパイルしたライブラリがhostdepend/XXXXXX/util/XXXXXXの下に格納されており、動作を保証しています。 このファイルは、util/XXXXXXXからリンクが張られており、そちらを利用します。


ただし、glibcなどのLINUX等が提供するバイナリのバージョンによってはうまく動作しない可能性があります。その場合には、こちらのothersからリンクを設定されているutil/srcXXXXXXの直下でコンパイルし、ライブラリを作成する事になります。

Eosのホスト毎の制御

 Eosでは、ヘテロな環境でも一つのディレクトリで管理し、実行できるような仕組みをとることにしています。


環境変数による切り替え

Eosのホスト毎の管理は、$EOS_HOSTと$EOS_HOSTDIRの二つの環境変数により、切り替えを行っています。

Eosのホスト毎のファイルの管理方法の変更

最近、git管理に変えた際に、ホスト毎の切り替えが大変困難になってしまいました。そこで、バイナリ毎にダウンロード出来るようにディレクトリ構成を変更しました。(2013/02/01版より)

以前のものを使われている方は、src直下のツール(Tools)やオブジェクト(Objects)のそれぞれのディレクトリにバイナリが置かれています。現在のものをダウンロードするとそれらは全て下記のホストごとのディレクトリへのリンクに変更になっています。ご注意下さい。

2013/02/01以降は、各ホスト毎のバイナリ等は、すべてEosの直下のhostdependのディレクトリ以下に、$EOS_HOSTDIRに従って保存するように移動しました。これにより、ホストタイプ毎にそのディレクトリをコピーやバックアップすれば済むようになりました。これが現在のダウンロードサイトからダウンロード出来るようにしています。

現在のバージョンのホスト毎のディレクトリ構成

$EOS_HOME/hostdepend/$EOS_HOSTDIR/bin
                                 lib
                                 util
                                 src/WORLD/CLASS/NAME/src/