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
andimas/$IMAS_VERSION/lib
- keeps links to libraries (to simplifyLD_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?