Inplement Yocto support for the fesa-eclipse-plugin

The current fesa-eclipse-plugin on acc9 does not support the usage of yocto codegen, build and deployment (python script)

In addition, there are several other major issues with the current fesa-eclipse-plugin
  • The build is rather complex
  • CERN specific folders and code, while we actually already forked from the CERN implementation
  • Caused by the build-structure, logging only works partially
  • A lot of build warnings due to eclipse API changes and weird build dependencies
Currently, it is a pain to even only get the plugin to build correctly. So the idea is, to rather start from scratch (or from the silecs-eclipse-plugin) and port relevant code, instead of further modifying the existing plugin

The silecs-eclipse-plugin is rather slim and provides a short README.md which shows step-by step on how the plugin can be built, run and installed.

Furthermore, using that plugin as a base would already fix several issues/make them obsolete: The idea would be, to only support yocto-builds as a first step, and later on as well support native-builds, by providing a python script which as well supports native building.

The new plugin only should be an extension of the "yocto-fesa3" python script. So any business logic should first be added to the python script, and then only be called by the eclipse plugin.

Preparation: Do some tidy-up on the silecs-eclipse-plugin

In order to have a clean base to start from. Each step should result in one or more gitlab pull-requests, which can be reviewed/merged:

  1. Simplifications, drop CERN specific part
  2. Fix build warnings, if possible
  3. Apply the same formatting style to all files

Getting a first usable plugin with yocto support

In order to reach that target, intermediate steps need to be defined, so that after each step, the software is still buildable (ideally usable). Each step should result in one or more gitlab issues and pull-requests, which can be reviewed:
  1. Clone the project silecs-eclipse-plugin, rename it everywhere to "fesa3-eclipse-plugin" (in order to prevent name-clashes with "fesa-eclipse-plugin") and push the new project to https://git.acc.gsi.de/FESA3-Eclipse-Plug-In
  2. Update README.md according to the new name
  3. Drop the support of * .silecesdesign and * .silecsdeploy files. Instead, add support for *.design , *.deploy and *.instance files
  4. Copy validation code from the old fesa-eclipse-plugin to the new plugin. Simplify the code as much as possible. Add dependencies when needed (XSD Validation + Java Validation + CLX Validation) … don't use a python script for validation, as done by the silecs plugin.
  5. Use the yocto-fesa3 script for code generation of *.design and *.deploy instead of the silecs script
  6. Add a button to build fesa design/deploy, as well use the yocto-fesa3 for that (no eclipse make targets)
  7. Add possibility to create a new Design/Deploy projects (Basic logic should be added to the yocto-fesa3 python script, the plugin should only add eclipse specifics) (File --> New --> Project ... --> Fesa)
  8. Check for any silecs remains and either remove them or modify them to fit for Fesa
  9. Add a button to deploy Fesa software. (For design, deploy and instance file), use the yocto-fesa3 for that
  10. Add a button to open the FesaExplorer (only instance file), if available (location configurable) .. see code from old plugin
  11. Add button to add a FEC (on a *.deploy) Basic logic should be added to the yocto-fesa3 python script, the plugin should only add eclipse specifics .. see code from old plugin
  12. Find a way to (re)-enable auto-completion for the XML-Editor (drop-down to select from for XSD Key-Refs)

When these basic functionalities are available, the plugin should already be usable for yocto development. A first release should be done, so that it can be used by Fesa developers.

Support for native builds

After that, let's add support for native builds:

Yet another release should be done now (besides intermediate bugfix releases, if required)

Additional enhancements

When that is done, all remaining issues for the old plugin should be re-evaluated, and possibly implemented for the new plugin (To be decided case by case)

If users do report missing functionality, it should be added on demand
  • Carefully check if the functionality indeed is required in the plugin. Functionality which is seldom used, should be done by hand, or by python-script-only, in order to keep the plugin simple.
  • Keep in mind that the plugin should only be an extension of the "yocto-fesa3" script. So all business logic should first be added to the python script!

Edit: WIP new plugin can be found here: https://git.acc.gsi.de/FESA3-Eclipse-Plug-In/fesa3-eclipse-plugin
Topic revision: r4 - 16 Sep 2024, AlexanderSchwinn
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback