escet merge requestshttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests2023-04-28T11:05:21Zhttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/565#573 Print extra help text for ToolDef exit codes.2023-04-28T11:05:21ZDennis Hendriks#573 Print extra help text for ToolDef exit codes.See individual commits for details.
Closes #573See individual commits for details.
Closes #573v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/564#570 Ensure 'dsmclustering' command line script is executable.2023-04-28T10:20:37ZDennis Hendriks#570 Ensure 'dsmclustering' command line script is executable.Closes #570Closes #570v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/563#571 ToolDef readlines/writefile improvements2023-04-28T12:24:26ZDennis Hendriks#571 ToolDef readlines/writefile improvements* `readlines`/`writefile`: use try-with-resources.
* `readlines`: use UTF-8 encoding, to match `writefile`. Also, we always use UTF-8, rather than the default (platform) encoding, and especially ToolDef should be platform-independent.
* ...* `readlines`/`writefile`: use try-with-resources.
* `readlines`: use UTF-8 encoding, to match `writefile`. Also, we always use UTF-8, rather than the default (platform) encoding, and especially ToolDef should be platform-independent.
* `writefile`: different way of handling new lines.
* Added new optional `newline` argument.
* Default of `newline` is `platform`, for backward compatibility.
* Allows `preserve` for writing `text` to write raw `text`.
* Allows custom specific new lines to be used as well.
* No `preserve` when writing `lines` as then may be get mixed new lines.
* Extended ToolDef documentation for the `readlines`/`writefile` tools.
Closes #571v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/561#567 Handle dark-theme and theme update in standalone applications.2023-04-25T18:28:34ZPatrick van Berkel#567 Handle dark-theme and theme update in standalone applications.This merge request implements a possible solution to the breaking dependency to the Eclipse Workbench environment and workspace location for stand-alone application which implement dark mode.
### Support Dark mode
To be able to run the...This merge request implements a possible solution to the breaking dependency to the Eclipse Workbench environment and workspace location for stand-alone application which implement dark mode.
### Support Dark mode
To be able to run the stand-alone application, it needs to be able to do this without relying on the Eclipse theming facility. This however causes some issues because the OS mode (Dark or Light) also affects the color displayed by SWT. This means the stand-alone application still needs to change its colors based on the OS mode. For macOS and Linux, this can be solved as SWT supports the `org.eclipse.swt.widgets.Display#isSystemDarkTheme()` method. On Windows, however, this does not work as I would expect. SWT will only show Light theme, even when it detects Windows is set to Dark Mode.
### Registering to runtime theme changes
Directly related to the previous problem is the fact that when the application depends on the theme, it also needs to register to dynamic theme changes. The initial, direct, issue is that currently theme changes are detected using the preferences in the Eclipse workspace which is not available to the stand-alone application. A secondary issue is the problem that SWT has some issues supporting OS mode changes dynamically. See discussion https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/555#note_1104386.
This merge request implements the solution discussed in https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/555#note_1104386.
Addresses #567v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/560#399 #468 #221 Upgrade to Eclipse 2023-03 with in-place upgrade2023-05-30T18:55:39ZDennis Hendriks#399 #468 #221 Upgrade to Eclipse 2023-03 with in-place upgradeGeneral info on merge request:
* This upgrades from Eclipse 2022-06 to 2023-03. See the individual commits for details. Best reviewed per commit.
* You can set up a new development environment from scratch, but you can also in-place upgr...General info on merge request:
* This upgrades from Eclipse 2022-06 to 2023-03. See the individual commits for details. Best reviewed per commit.
* You can set up a new development environment from scratch, but you can also in-place upgrade your existing development environment now. See the `dependency-upgrades.asciidoc` file for the instructions. **It would be nice if you could all try that out**, so that we can mature the instructions listed there.
In this particular instance, you need to remove the 'Tycho Project Configurators' manually, if you have them still in your development environment. See the step-by-step instructions for details.
Some issues I had while trying out the in-place update. I was trying things out and did not use the step-by-step instructions as they are now, so hopefully you will not encounter them, but it **would be good if you could try**, to see how 'stable' and in-place update is in practice:
* When pressing 'Ctrl+Shift+T' for 'Open Type' I at some point had two commands associated to it. I restored all default keybindings to resolve this.
* Using the 'Open Type' dialog and choosing a class from the JDK led to errors like: `Type 'java.lang.String' could not be found in '.org.eclipse.jdt.core.external.folders/.link23/jre/lib/jrt-fs.jar'. Make sure all workspace resources are refreshed.`. A workspace refresh and full clean/rebuild did not resolve this. I solved it by removing all projects from my workspace and re-importing them.
* Commiting the provisioning operation (for P2 or target platform) by Oomph would fail with `java.lang.ClassCastException: class org.bouncycastle.openpgp.PGPPublicKey cannot be cast to class org.bouncycastle.openpgp.PGPPublicKey (org.bouncycastle.openpgp.PGPPublicKey is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @685f5d0d; org.bouncycastle.openpgp.PGPPublicKey is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @4e2f2438)`.
I resolved this by updating the Oomph version in my development environment: 'Help' -> 'Check for updates...', which only listed Oomph updates, and then 'Next' -> 'Next', accepting all licenses, 'Finish', 'Select all' -> 'Trust selected' -> 'Restart Now'.
Important further details on the changes, some of which affect our way of working into the future:
* I got rid of the Apache XML serializer specific version pinning that was needed for the previous Eclipse version. However, I also got rid of that dependency altogether later on (see next point).
* I had quite some issues with getting Apache Xalan, Apache Xerces and Apache XML resolver to work properly. They were complaining about missing `Import-Package` dependencies.
The packages were JDK packages, so should always be present. I spent hours on this, but didn't manage.
Then I realized that (probably about a decade ago) I introduced them as the XML functionality of the JDK itself at that time wasn't working.
But we use much newer JDKs now, so these dependencies are no longer needed. I thus reduced the dependencies and no longer needed code/comments related to them.
This also fixes issues with saving SVG files from the SVG viewer/visualizer to paths with characters that get encoded as special characters in URLs, such as spaces.
This issue is unresolved for Apache Xalan, but my tests show that the JDK implementation handles this properly.
* I added the Eclipse PDE runtime (with 'Plug-in Registry' view) to the product, to enable debugging of dependency problems.
* The version of `org.apache.commons.lang3` got updated, deprecating its `StringEscapeUtils`. The class essentially got moved to `org.apache.commons.text`, but that is not available on Orbit, nor in the Eclipse 2023-03 update site.
Eclipse Platform and its projects are now using dependencies directly from Maven Central, if they are available there, and have proper OSGi metadata in their manifest (see [here](https://www.eclipse.org/lists/cross-project-issues-dev/msg19288.html), [here](https://www.eclipse.org/eclipse/news/4.25/pde.php#default-3rd-party-bundles) and [here](https://github.com/eclipse-platform/eclipse.platform.common/blob/master/bundles/org.eclipse.platform.doc.isv/porting/4.25/incompatibilities.html)).
In fact, they plan to no longer update or add such dependencies to Orbit at all, in the future (see [here](https://www.eclipse.org/lists/cross-project-issues-dev/msg19616.html)).
Hence, it makes sense that if we need additional dependencies, that we go the same route.
Eclipse PDE and Eclipse Tycho both support target platforms with Maven targets.
However, Oomph does not.
We therefore can no longer generate our target platform using Oomph, and have to switch to a manually crafted target platform.
This has the additional benefit that there will be less unneeded 'crap' in the target platform.
I implemented this change, removing target platform generation from the Oomph setup, and I manually cleaned up the target platform.
It is still possible to let Oomph reactive the target platform, after having edited it. This works in the same way as previous we generated a new target platform using Oomph. The Oomph task has a slightly different name, but is named in such a way that it is clear which one to use.
You can also just open the target platform file and pressing the 'Reload Target Platform' button at the top-right of the 'Definition' tab.
* Since our previous Eclipse upgrade, I get a lot of info-level items in the 'Problems' view when opening XML-based files that don't link to their schema. I configured Wild Web Developer's XML tools to ignore such 'issues'.
* We have M2E settings in our development environment configuration (set by Oomph) to ignore missing M2E lifecycle mappings. However, I still got some, and thus explicitly ignored them in `pom.xml` files.
* The Eclipse JDT compiler tool is no longer provided as a plug-in fragment, but is now provided as a regular plugin. Hence, we don't need special configuration for it anymore for our Maven build. See also [here](https://www.eclipse.org/eclipse/news/4.27/jdt.php#ecj-separated-from-core).
* When upgrading to Eclipse 2022-06, we had to ensure all projects have a project-specific encoding, or projects would get a warning. How, this can be configured to be ignored (see [here](https://www.eclipse.org/eclipse/news/4.25/platform.php#specify-project-encoding-severity) and [here](https://github.com/eclipse-platform/eclipse.platform.resources/issues/166)). We already configure the global encoding in the Eclipse ESCET product, so there is no need for project-specific encodings. Especially for projects of the user, this was annoying. Also, the changes we previously made to ensure the CIF examples and benchmarks had no such warnings (see !331, comment 828762), are no longer needed, and I thus reverted them.
* The development environment now contains Maven 3.8.7, but the Eclipse Foundation Jenkins servers only have 3.8.6, so they don't match, but hopefully that is not a big deal.
Other issues resolved by upgrading to a newer Eclipse version:
* The SVG viewer/visualizer 'Save as' dialog now properly starts in the right initial proposed directory. This fixes #221.
* We can now use records in our Java code without getting warnings about JavaDocs.
Remaining issues:
* We now require PGP signing, for the dependencies we take directly from Maven Central. This requires a PGP key that we have to request from the Eclipse IT team, so I'll do this in a separate isuse.
Closes #399 #468 #221v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/559#567 Fix CIF synthesis analysis tool command line script ending prematurely2023-04-24T19:07:16ZPatrick van Berkel#567 Fix CIF synthesis analysis tool command line script ending prematurelyCurrently the Synthesis Analysis Application ends immediately after the creation of the UI causing the application and UI to close.
To enable the standalone application `./bin/cifsynthanalys` to wait for the editor to complete the publi...Currently the Synthesis Analysis Application ends immediately after the creation of the UI causing the application and UI to close.
To enable the standalone application `./bin/cifsynthanalys` to wait for the editor to complete the public method `waitUntilClosed()` has been added to the `ControlEditor`. This method blocks the calling thread using `wait()`. To release the waiting thread a `DisposeListener` has been added which will notify all waiting threads when the editors `contents` is being disposed.
Addresses #567v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/558#567 Added launch configuration to run stand-alone cifsim for tank model from...2023-04-22T20:14:44ZPatrick van Berkel#567 Added launch configuration to run stand-alone cifsim for tank model from devenvThis merge request adds launch configuration `test-cif-simulator-tank` to simplify testing and debugging the CIF simulator application in stand-alone mode.
This contribution has been tested by running the configuration on Ubuntu and Win...This merge request adds launch configuration `test-cif-simulator-tank` to simplify testing and debugging the CIF simulator application in stand-alone mode.
This contribution has been tested by running the configuration on Ubuntu and Windows. Running this configuration will correctly start the application in the desired mode but will also trigger the error discussed in issue #567.
Addresses #567v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/557#567 Reference correct plugin_name in eventbased standalone application.2023-04-20T20:53:05ZPatrick van Berkel#567 Reference correct plugin_name in eventbased standalone application.All scripts which execute the stand-alone application based on the org.eclipse.escet.cif.eventbased package now reference the correct plugin name i.s.o. the package name.
This merge request has been tested by executing the following sta...All scripts which execute the stand-alone application based on the org.eclipse.escet.cif.eventbased package now reference the correct plugin name i.s.o. the package name.
This merge request has been tested by executing the following standalone applications (on both Windows and Ubuntu) using the `-h` argument.
```
cifabstr, cifctrlchk, cifdfamin, ciflngeqv, cifncchk,
cifnfadfa, cifobschk, cifprod, cifproj, cifsupsynth,
cifsynthanalys, ciftrim, ciftrimchk
```
These scripts have not been tested on MacOS.
Addresses #567.v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/556#566 DEPENDENCIES.txt update for Dash license check tool output change.2023-04-16T19:44:57ZDennis Hendriks#566 DEPENDENCIES.txt update for Dash license check tool output change.Closes #566Closes #566v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/554#565 DEPENDENCIES.txt update for Dash license check tool output change.2023-04-15T09:10:30ZDennis Hendriks#565 DEPENDENCIES.txt update for Dash license check tool output change.Closes #565Closes #565v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/553#559 Add PLCgen expression generator.2023-04-25T05:41:24ZAlbert Hofkamp#559 Add PLCgen expression generator.Theoretically this should convert CIF expressions to PLC equivalents. Given a CIF expression it outputs a PLC expression with additional PLC statements if necessary.
@jverbakel I added an interface for getting PLC equivalents of CIF dat...Theoretically this should convert CIF expressions to PLC equivalents. Given a CIF expression it outputs a PLC expression with additional PLC statements if necessary.
@jverbakel I added an interface for getting PLC equivalents of CIF data at `org.eclipse.escet.cif.plcgen.conversion.expressions.CifDataProvider`, you may want to have a look at it.
I haven't run this code yet it needs tests, but I thought it to be a good idea to show what I have so far.
I'll write and add tests (with fixes most likely).
Commits are meant to be read in sequence although at the end I fixed a few things.
The generator started as a mostly commented-out copy of the cif2plc generator, and then parts are replaced. Hopefully if you read it side-by-side you can use that old information.
Fixes #559
Addresses #397 #418
[[Removed the "draft" state]]v0.10Albert HofkampAlbert Hofkamphttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/552#564 CIF benchmark script: use normal output instead of debug output.2023-04-03T13:29:00ZDennis Hendriks#564 CIF benchmark script: use normal output instead of debug output.* Makes synthesis faster, without affecting the platform-independent BDD metrics.
* Also makes benchmarking require less less disk space, as there is less output to store.
Closes #564* Makes synthesis faster, without affecting the platform-independent BDD metrics.
* Also makes benchmarking require less less disk space, as there is less output to store.
Closes #564v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/551#377 Legacy hyper-edge creator: consider location invariants.2023-04-05T06:29:57ZDennis Hendriks#377 Legacy hyper-edge creator: consider location invariants.- Previously, for each location, the automaton invariants were handled, where the location invariants were to be processed.
- It was a copy/paste bug.
- This could affect synthesis performance.
Closes #377- Previously, for each location, the automaton invariants were handled, where the location invariants were to be processed.
- It was a copy/paste bug.
- This could affect synthesis performance.
Closes #377v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/550#563 Improve CIF data-synthesis main fixed point loop sections2023-04-04T18:43:49ZDennis Hendriks#563 Improve CIF data-synthesis main fixed point loop sections- Changes: clearer comments to indicate which section belongs to which operation.
- Dedicated 'end of fixed point loop' detections for 2nd and 3rd operations. No more split or shared functionality.
- All changes of this branch are backwa...- Changes: clearer comments to indicate which section belongs to which operation.
- Dedicated 'end of fixed point loop' detections for 2nd and 3rd operations. No more split or shared functionality.
- All changes of this branch are backward compatible. None of these changes change synthesis behavior (hence to test output has changed either). Only the code is changed to make it easier to follow.
- I made separate commits to reduce the Git diff per commit as much as possible. The one where indentation is changed looks complicated, but only two code blocks changed indentation.
- I know a lot else can be improved in the data-based synthesis tool, but the only goal here is to make the sections dedicated per operation, and to then make it clear to which operation each section belongs.
Closes #563v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/549#279 pom.xml surefire updates: 3.0.0-M5 to 3.0.0.2023-04-03T13:40:18ZDennis Hendriks#279 pom.xml surefire updates: 3.0.0-M5 to 3.0.0.Closes #279Closes #279v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/548#560 Development/release process updates: no more CQs and IP Logs.2023-04-03T13:27:27ZDennis Hendriks#560 Development/release process updates: no more CQs and IP Logs.Closes #560Closes #560v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/547#557 Prepare Git repo for v0.10 development2023-04-03T13:27:39ZDennis Hendriks#557 Prepare Git repo for v0.10 developmentCloses #557Closes #557v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/546#562 Release process: fixed setting standard website and removing old websites2023-04-03T13:26:54ZDennis Hendriks#562 Release process: fixed setting standard website and removing old websites* Switch standard website script: proper committer for Git commit.
* Remove old websites in similar way to setting new standard ones.
Closes #562* Switch standard website script: proper committer for Git commit.
* Remove old websites in similar way to setting new standard ones.
Closes #562v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/545#481 develop to master for v0.92023-03-31T10:30:57ZDennis Hendriks#481 develop to master for v0.9Addresses #481Addresses #481v0.9https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/544#481 Update release notes for v0.9.2023-03-31T10:02:28ZDennis Hendriks#481 Update release notes for v0.9.Addresses #481Addresses #481v0.9