3.1. One common installation of actor resources

3.1.1. Idea

  • To keep all (common) actor resources for both: Python and Kepler actors in one place (directory)
  • To allow switching between "workspaces" (user defined sets of actors)
  • To load actor libraries only for current version of IMAS (if actor is IMAS dependent)

3.1.2. Layout of actor directory

TBD (the same as previously?)

3.1.3. IMAS Workspace


workspaces/
|-- workspaceX
|-- workspaceY
`-- workspaceZ
    |-- common
    |   |-- actor1
    |   |   `-- lib
    |   |       `-- libActor1.so
    |   |-- actor2
    |   |   `-- lib
    |   |       `-- libActor2.so
    |   `-- lib
    |       |-- libActor1.so -> ../actor1/lib/libActor1.so
    |       `-- libActor2.so -> ../actor2/lib/libActor2.so
    `-- imas
        |-- 3.23.2
        |   |-- actorA
        |   |   `-- lib
        |   |       `-- libActorA.so
        |   |-- actorB
        |   |   `-- lib
        |   |       `-- libActorB.so
        |   |-- actorC
        |   |   `-- lib
        |   |       `-- libActorC.so
        |   `-- lib
        |       |-- libActorA.so -> ../actorA/lib/libActorA.so
        |       |-- libActorB.so -> ../actorB/lib/libActorB.so
        |       `-- libActorC.so -> ../actorC/lib/libActorC.so
        `-- 3.24.0
            |-- actorA
            |   `-- lib
            |       `-- libActorA.so
            |-- actorB
            |   `-- lib
            |       `-- libActorB.so
            |-- actorD
            |   `-- lib
            |       `-- libActorD.so
            `-- lib
                |-- libActorA.so -> ../actorA/lib/libActorA.so
                |-- libActorB.so -> ../actorB/lib/libActorB.so
                `-- libActorD.so -> ../actorD/lib/libActorD.so


Workspace layout:

  • directory common - keeps all actors with no IMAS dependencies
  • directory imas/$IMAS_VERSION - keeps all actors build for given version of IMAS
  • directories common/lib and imas/$IMAS_VERSION/lib - keeps links to libraries (to simplify LD_LIBRARY_PATH )


Actor generation:

  • Generated code (wrapper) will be saved under $ACTIVE_WORKSPACE/imas/$IMAS_VERSION/<actor_name> 


Switching workspace

  • LD_LIBRARY_PATH = $ACTIVE_WORKSPACE/common/lib + $ACTIVE_WORKSPACE/imas/$IMAS_VERSION/lib
  • java.lib.path = $LD_LIBRARY_PATH
  • Kepler: rm target/* ? ant compile?


Scripts:

  • list workspaces
  • switch workspace
  • remove workspace
  • create workspace


3.1.4. Open points

  • Do we need directory "common"? Should we care about "no-IMAS" actors (usually there are none of them)...
  • At which level Kepler actor should be separated from their "resources" (i.e. what can be put within workspace)
    • The whole imas related directory ( $KEPLER/imas  )  ?

    • How to achieve this? Kepler module or just CLASSPATH?
  • Could we separate Kepler Core Actors to be independent module?
  • No labels