Skip to content

Shared, eMoflon-specific component for incremental unidirectional and bidirectional graph transformations

License

Notifications You must be signed in to change notification settings

eMoflon/emoflon-ibex

Repository files navigation

eMoflon::IBeX

eMoflon::IBeX is an Eclipse-based incremental interpreter for bidirectional graph transformations based on Triple Graph Grammars (TGGs) and unidirectional graph transformations. It uses eMoflon::IBeX UI for the textual rule specification.

This repository contains only the part which is independent from a concrete pattern matcher.

There are 4 ways how to use eMoflon::IBeX:

  1. Use our pre-built Eclipse download with eMoflon::IBeX installed (or the version without eMoflon::IBeX to develop it).
  2. Use our pre-built virtual machine (VM) with eMoflon::IBeX installed.
  3. Prepare your Eclipse environment step-by-step with the section how to develop.
  4. Install eMoflon::IBeX into your existing Eclipse installation.

Pre-built Eclipse

  1. Install GraphViz.
  2. Choose the right pre-built Eclipse version for your need. A comparisson table can be found in the readme of the emoflon-ibex-eclipse-build repository. Typically, you want to download:
    • eclipse-emoflon-$yourOS-dev.zip if you want to develop eMoflon::IBeX
    • eclipse-emoflon-$yourOS-user.zip if you want to use eMoflon::IBeX without developing it
  3. Download your chosen Eclipse archive.
  4. Extract the archive to a folder, e.g., to ~/eclipse-apps/emoflon-ibex.
  5. Start your Eclipse (= the binary in the extracted folder) and create a new workspace.

eclipse-emoflon-user

You can now create eMoflon projects and/or start using it with existing projects, e.g., from the tutorial.

eclipse-emoflon-dev

Some additional steps are needed: Complete steps 9, 10, 12-15 from the next section to clone the code and verify your build.

Pre-built virtual machine (VM)

You can download the latest version of our pre-built virtual machine image from the release section. For detailed installation instructions, please refer to the README.md file within the repository.

How to develop

  1. Install a Java JDK >= 21.
  2. Install GraphViz.
  3. Get the latest version of the Eclipse Modeling Tools. You need at least Eclipse 2024-06.
  4. Install Xtext from this update site (or use the Eclipse Marketplace): http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases/
  5. Install PlantUML from this update site (or use the Eclipse Marketplace): http://hallvard.github.io/plantuml/
  6. Install HiPE from this update site: https://hipe-devops.github.io/HiPE-Updatesite/hipe.updatesite/
  7. Install the EPackage Registration Feature from http://www.kermeta.org/k2/update
  8. Check the encoding for Xtend files.
    • In Eclipse: Go to Window->Preferences->General->Workspace.
    • Change the text file encoding to 'Other: UTF-8'.
  9. (Important!) Set standard git folder to (workspace) relative path, e.g., (Eclipse ->) Window -> Preferences -> Team (or Version Control) -> Git -> Default Repository Folder = ${workspace_loc}\git (for Windows) or ${workspace_loc}/git (for Linux and macOS)
  10. Go to File/Import.../Team/Team Project Set, check URL and enter in and import this PSF file:
  11. Execute MWE2
    • Open package org.emoflon.ibex.common/launch.
    • Right-click on Run all eMoflon MWE2 files.mwe2.
    • Press Run As -> Run all eMoflon MWE2 files.
    • In case any error warning pops up, simply click Proceed.
  12. Set UTF-8 as file encoding for the development workspace (Window → Preferences → General/Workspace) and manually build all projects by clicking (Project → Clean... → Clean all projects) to trigger code generation (and get rid of errors). Make sure to check Project → Build Automatically.
  13. Set up your runtime and test workspaces by starting a runtime Eclipse workspace from your development workspace:
    • To start the runtime workspace, do the following steps inside your development workspace: Run → Run Configurations...; double click on Eclipse Application, give it a name (e.g., test-workspace) and click on Run.
      • Your development Eclipse should now start another Eclipse instance with all eMoflon plug-ins installed.
    • Inside your runtime workspace:
  14. Execute MWE2
    • Open package /org.emoflon.express/src/org.emoflon.express
    • Right-click on GenerateExpress.mwe2
    • Press Run As -> MWE2 Workflow
    • If you can not find the package, open the eMoflon perspective (Window -> Perspective -> Open Perspective -> Other... -> eMoflon).
  15. Inside the runtime workspace, build all projects (Project → Clean... → Clean all projects) to trigger code generation.
    • Hint: It may be required to trigger a full eMoflon build on all projects. Select all projects in Package Explorer and click on the black hammer symbol.
  16. Run the JUnit tests to ensure that all is well by right-clicking one of the Testsuite_*.launch in the Testsuite project and TestsuiteGT_*.launch in the TestsuiteGT project and start the tests by selecting Run As/<name-of-the-file>. If everything is set up correctly, all tests should be green.
    • If you get an error Class not found, select all projects on the package explorer and click F5/Refresh.

In a standard scenario, you want to run:

  • TestSuite_HiPE.launch
  • TestSuiteGT_HiPE.launch

Other options:

  • Running Testsuite_GLPK.launch requires GLPK (see installation step 5).
  • Running Testsuite_Gurobi.launch requires Gurobi (see installation step 6).
  • Running Testsuite_CBC.launch requires Google OR tools (see installation step 7).
  • Testsuite_SAT4J.launch uses the SAT4J (automatically installed, but the slowest option).

How to install

eMoflon::IBeX can be installed via its updatesite: https://github.com/eMoflon/emoflon-ibex-updatesite

Please notice: You need at least Eclipse 2024-06.

Please notice: Ensure that your Eclipse runs with an OpenJDK >= 21.

(Please notice: This section is for installation purpose only. If you already setup your development workspace as described above, this section is irrelevant for you. Furthermore, you may need to install some additional dependencies if Eclipse tells you to.)