バージョン依存性を解決するための fml ブートローダ

fml8 チュートリアル (バージョン 7.99.1-20180910)
Prev |  | Next

# Chapter 32. バージョン依存性を解決するための fml ブートローダ

fml8 にはインストールされている fml のバージョン依存性を考慮するため に、本章で述べるようなブートストラップの過程があります。

    fml (libexec/distribute) が boot していく様子

           functions                class
           ----------------------------------------

           main::Bootstrap()        libexec/loader
                |
                V
           main::Bootstrap2()       FML::Process::Switch
                |
                V
           ProcessSwitch()          FML::Process::Switch
                |
                |
                | switch to ($obj = FML::Process:Distribute)
                |
                V
           ProcessStart($obj,$args) FML::Process::Flow

# 例: 配送の場合

たとえば配送処理の場合、 loader から次々とモジュールが呼ばれていく様子は次のようになります。

/usr/local/libexec/fml/distributre (の実体 /usr/local/libexec/fml/loader) は /usr/local/etc/fml/main.cf を読みこ み、fml_version 変数から使うべきライブラリのバージョンを決めます。 たとえば fml_vesrion が current-20010501 となっていたら /usr/local/lib/fml/current-20010501/ 以下にあるライブラリを使うといっ たぐあいです。

@INC を再設定した後、 loader は FML::Process::Switch をロードし、 $0 (プロセス名)を調べます。 その名前から自分の仕事は配送処理なので FML::Process::Distribute クラスをロードし、配送処理に移ります。

なお、プログラム名とクラスの対応関係は /usr/local/etc/fml/defaults/バージョン/modules で定義されています。

こういった処理は見かけ上 FML::Process::Flow::ProcessStart() という関数 が制御しています。ProcessStart() が引数として FML::Process::Distribute オブジェクトを渡され、FML::Process::Distribute オブジェクトを実行して いくという流れになります。

Prev | Home | Next
内部構造 | Up | FML::Process:: クラスの階層構造

fml 8.0 (fml-devel) project homepage is www.fml.org/software/fml8/.
fml 4.0 project homepage is www.fml.org/software/fml4/.
about one floppy bsd routers, see www.bsdrouter.org/.
other free softwares are found at www.fml.org/software/.

author's homepage is www.fml.org/home/fukachan/.
Also, visit nuinui's world :) at www.nuinui.net.

For questions about FML, e-mail <fml-bugs@fml.org>.