Eosの構造

提供: Eospedia
2013年4月16日 (火) 21:58時点におけるAdmin (トーク | 投稿記録)による版

移動: 案内検索

ここでは、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/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が保証しているソースコードを保管しています。これらをコンパイルしたライブラリがhostdepend/XXXXXX/util/XXXXXXの下に格納されており、動作を保証しています。ただし、glibcなどのLINUX等が提供するバイナリのバージョンによってはうまく動作しない可能性があります。その場合には、こちらのソースを使うことになります。


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/