The source code of the [GEMOC Studio](http://gemoc.org/studio/) is currently spread among different git repositories in Eclipse organization.
This project relies on the presence of the correct git repositories (cloned with the correct name) to locally build a working studio.
First checkout the git repositories :
git clone https://github.com/eclipse/gemoc-studio git clone https://github.com/eclipse/gemoc-studio-modeldebugging
Note: the repositories must keep their names (Ie. do not change the destination folder name) as the maven pom file expects to find them at specific locations.
Then compile using maven:
cd gemoc-studio/dev_support/full_compilation mvn package -Dmaven.repo.local=$PWD/localm2
We use one options:
-Dmaven.repo.local=$PWD/localm2: use a folder called localm2 to cache all the external dependencies of the studio, instead of using the user local maven repository. Since the GEMOC Studio a full eclipse package and has around 1GB of dependencies, this avoids using this much space in a hidden folder of the user home dir.If you prefer to use your own local maven repository (ie. in <HOME>/.m2/repository), remove the use of -Dmaven.repo.local, ie. use this command:
mvn package
If you already compiled and resolved all dependencies at least once (ie. if you filled your local maven repository with everything needed for the build), add the option -o to perform an offline only build, which is significantly faster since it skips checking all maven repositories online.
In the end, the result can be found in gemoc_studio/gemoc_studio/releng/org.eclipse.gemoc.gemoc_studio.product/target/products/, with one studio zip per platform.
The build also assemble complementary results:
gemoc_studio/gemoc_studio/releng/org.eclipse.gemoc.gemoc_studio.product/target/repository/gemoc-studio/docs/org.eclipse.gemoc.studio.doc/target/publish/webhelp/GEMOC addons mecanism is the simpliest way to contribute new features to GEMOC. Most of the features in GEMOC have been developed using it.
Basically, it uses Eclipse plugin extension point in order to provide additional feature to an existing engine.
The main extension point is org.eclipse.gemoc.gemoc_language_workbench.engine_addon which allows to declare a new class that implements the IEngineAddon interface.
Minimal steps to get an addons:
org.eclipse.gemoc.gemoc_language_workbench.engine_addon extension point, accept to add the dependency to the plugin. (see Figure 17.1, “New Extension forEngine Addon screenshot”)The calls from the engine to the methods of IEngineAddons block the model execution. Thus, except if this is the expected behavior, the addons should avoid to do complex/long running/blocking task directly in the
For a given notification to IEngineAddon (for example aboutToExecuteStep), the order of calls to all registered addons is currently not ensured.
Help is welcome in order to implement a way to specify partial order between addons as it might be useful when several collaborating addons must react on the same notification.
In the extension declaration, setting Default to true will activate the addon by default when creating a new launch configuration. The user is still able to disable the addon manually.
See Section 16.2, “GEMOC Framework” for more details about the extension point and other supported features.
As seen in Figure 16.1, “Components overview”, the framework is organized in several layers. The most complete layer is the GEMOC Framework which offers most of the advanced features. Thus, implementing an engine for a new technology consist in 2 main parts:
The GEMOC documentation (this document) structure is designed to:
As it supports include directives, we chose Asciidoc syntax with the appropriate tool chain.
Some of the diagrams are generated using plantuml.
The document is organized as follow:
include directive in order to embed all the chapters and sections. (https://github.com/eclipse/gemoc-studio/tree/master/docs/org.eclipse.gemoc.studio.doc/src/main/asciidoc/master.asciidoc)included sections are spread across the repositories according to their content
* headContent.asciidoc are headers of a chapter/section defined in master.asciidoc, the other files are contributions to a chapter/section.one pom.xml which allows to build the whole document. (https://github.com/eclipse/gemoc-studio/tree/master/docs/org.eclipse.gemoc.studio.doc/pom.xml).
In order to ease modifications, every files must start with a footnote allowing to retrieve the source file in the git repositories.
To edit the documentation we recommand the use of plantuml eclipse plugin and eclipse asciidoc editor . You can install them in an Eclipse using either the market place or the following update site: https://ascii-uml.github.io/eclipse/
[41] asciidoc source of this page: https://github.com/eclipse/gemoc-studio/tree/master/docs/org.eclipse.gemoc.studio.doc/src/main/asciidoc/dev/DevelopingNewAddons.asciidoc.