...
as you can see, we have to explicitly select version of the actor. An alternative approach would be importing actors by embedding version as a part of package (sort of: from actor_demo.1_0.actor_demo import wrapper
). Anyway, there is no simple way of making the very same workflow to be compatible with different versions of actor without altering workflow's code, environment variables, whatever the way of selecting the version we choose.
...
Alternative approach: One common installation of
...
Idea
...
...
Layout of actor directory
TBD (the same as previously?)
IMAS Workspace
Code Block |
---|
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
Open points
...
The whole imas related directory (
$KEPLER/imas
) ?- How to achieve this? Kepler module or just CLASSPATH?
...