Finalize version 3.3.2
We are almost done with a new version of ExternalMedia that uses a dynamically linked library for the external functions and works on Dymola and OpenModelica both under Windows and Linux, see the dynamiclib branch
There are a few remaining things to be done:
- [x] #65
- [x] #63
- [x] #66
- [x] #68
- [x] Clean up and re-order the test models
- [ ] Have some beta-users do some testing with the library built by the Actions CI
Once the 3.3.2 library has been tested, release it, then convert it to MSL 4.0.0 and release 3.4.0 (or 4.0.0, on-going discussion on the modelica-design mailing list on what is the best choice for the new version name).
I have opened a couple of issues and I may need some assistance. It looks like we are close to the finish line!
Thanks @jowr, I will look into it ASAP, going through a few busy days now.
In the meantime we've found a solution for the issue with #55, see OpenModelica/OpenModelica#8591. @mahge should open a PR soon to fix that, then ExternalMedia should really work fine in the latest nightly build of OpenModelica as well.
At that point I would suggest we meet online to celebrate, sharing a (real) beer or something 😄
Good news: we now merged to the master branch a development version of 3.3.2 that works out of the box under Linux and Windows, Dymola and OpenModelica. Credits to @fedetftpolimi for helping me sorting out all issues with OpenModelica, while keeping compatibility with Dymola, under two different operating systems. I wouldn't have managed myself.
Less good news: the fix for #55 in OpenModelica that was proposed a couple of weeks ago created a lot of other problems, because it changed the integer type across the whole compiler, causing countless glitches; hence, we had to roll it back, and we'll need to figure out something else to fix the problem; see OpenModelica/OpenModelica#8591 for the latest developments. In the meantime, models working in the one-phase region will work fine in OpenModelica, while models working in the two-phase region may have issues because of that.
You can test the current development version by going to the Actions tab, selecting the last successful build, downloading the Binaries artifact, and then extracting the library to your file system from the zip file. The library should work out of the box, just open the package.mo file.
Beta testers are encouraged to try it out and post tickets on this issue tracker if they find some problems.
Only project collaborators have access to the binaries produced by the GitHub actions. Here is a public link for beta testers who would like to try the libraries compiled for commit 97fb739e6a91c242b4c5c8598438b1e559889c7a: ExternalMedia_97fb739.zip
In the meantime, models working in the one-phase region will work fine in OpenModelica, while models working in the two-phase region may have issues because of that.
You can test the current development version by going to the Actions tab, selecting the last successful build, downloading the Binaries artifact, and then extracting the library to your file system from the zip file. The library should work out of the box, just open the package.mo file.
I was able to download the binary for 97fb739 from the CI run, that is quite neat/useful! (I have commits in the repo, do you mean that with "collaborator"?) @casella do you think it's time soon to add ExternalMedia master to the OM library test suite (with Dymola reference results?), to get better visibility which tests work now and which don't work yet? In some spot checks, I found that
- the tests in Test.TestMedium that don't have
Statein the name seem to mostly run to completion, although many print a lot of assertion failures - the
Test.MSL_Modelstests don't seem to simulate successfully (one reports a lot of root finding errors). - Some tests in
Test.CoolProp, e.g.Test.CoolProp.Misc.WaterComparison, crashed OM 1.19.2 (without crash report dialog) when run for the first time (but not thereafter).
@casella do you think it's time soon to add ExternalMedia master to the OM library test suite (with Dymola reference results?), to get better visibility which tests work now and which don't work yet?
In principle, yes, and I'd like to test both the released versions (to look for omc regressions) and the development version (to look for library regressions). The only problem is that the CI needs to have access to a built version including the libraries. @jowr, is it possible to set up a link that always points to the latest build made using the master branch?
The only problem is that the CI needs to have access to a built version including the libraries.
At least for the released library versions, this should be possible by using the artifacts from the "Releases" tab. The links follow a human-readable scheme (so not hashes involved), e.g. https://github.com/modelica-3rdparty/ExternalMedia/releases/download/v3.3.1/ExternalMedia_v3.3.1.zip
For branch-based access (e.g. the master version), this will be more complicated; you'll probably need to use the Github API to get the run ID of the latest CI run, and get at the zip file artifact available there.
For branch-based access (e.g. the
masterversion), this will be more complicated; you'll probably need to use the Github API to get the run ID of the latest CI run, and get at the zip file artifact available there.
It seems this is not possible out-of-the-box (bad), but some kind soul made a service that creates links for exactly what we need: https://nightly.link
https://nightly.link/modelica-3rdparty/ExternalMedia/workflows/ci/master/binaries.zip points to the binaries artifact of the latest successful run on master. I tried this link in a private browser session, so it seems to work without Github login. This should serve nicely as a URL for the OM CI. (I'm not sure if the OM CI is caching those downloads, but it might be a good idea to do that)
Note: the author writes on the above website
If you'll be publishing a link to your own repository's artifacts, please install the GitHub App anyway, so that downloads for your repositories don't share the global API rate limit. The throttling will likely become very bad over time.
so one of the EM maintainers might consider doing that.
Good for testing. For the final release, we are actually now using our servers as backups, because the bandwidth for releases out of GitHub was quite disappointing, recently, and we got lots of timeout issues.
All is ready for the 3.3.2 release, you can get a pre-release from the binaries here. We are fixing a few last issues and then officially release 3.3.2 and 4.0.0.