[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .

fml8 Boot Loader To Resolve Version Dependence Dynamically

Table of Contents
Case: Distribution
FML::Process:: Class Structure
Modules In Process Execution
Discussion: Where Function Should Resolve $ml_name And $ml_domain.

fml8 provides a boot loader to resolve version dependence dynamically. For example, the loader boot straps fml8 as follows:

fml (libexec/distribute) boots like this ...

       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

Case: Distribution

fml8 loader boot straps like this in the case of distribution.

/usr/local/libexec/fml/distributre (is same as /usr/local/libexec/fml/loader in fact) reads /usr/local/etc/fml/main.cf and resolvers the version it should use from $fml_version variable. Let $fml_version current-20010501. The loader uses library perl modules under /usr/local/lib/fml/current-20010501/.

The loader resets @INC (perl include path). It loads FML::Process::Switch and checks $0 (program name in process table). The loader resolves from the name that the role is distribution. It loads FML::Process::Distribute and switches to the class.

The relation between program name and class (perl module) is defined at /usr/local/etc/fml/defaults/$fml_version/modules file.

FML::Process::Flow::ProcessStart() function drives these sequential steps. ProcessStart() takes FML::Process::Distribute object as an argument and drives the object.

[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .
Copyright (C) 1993-2022 Ken'ichi Fukamachi mail:< fukachan at fml.org >