opensim-org / opensim-core

SimTK OpenSim C++ libraries and command-line applications, and Java/Python wrapping.
https://opensim.stanford.edu
Apache License 2.0
759 stars 308 forks source link

Add ci task to build opensim-gui on one platform #3706

Closed aymanhab closed 3 months ago

aymanhab commented 4 months ago

With recent and upcoming API changes, it seems impractical to track if opensim-gui builds after the fact with opensim-core commits. This issue proposes building the GUI master/main against the branch before merging to catch these issues before a commit/merge.

nickbianco commented 4 months ago

This is a great idea. The return-dispatch GitHub Action (which I've used to draft automated perf testing) may be useful here.

aymanhab commented 4 months ago

Just to document the change in behavior due to the change/improvements made in https://github.com/opensim-org/opensim-core/pull/3678, As a side effect we lost the copy constructor for ArrayDouble, ArrayStr (I assume also for all other ArrayXXX types) on the Java side resulting in the build failure below:

2024-02-14T02:48:59.6974827Z [nb-javac] D:\a\opensim-gui\opensim-gui\Gui\opensim\plotter\src\org\opensim\plotter\JPlotterPanel.java:1658: error: incompatible types: ArrayDouble cannot be converted to double 2024-02-14T02:48:59.6977462Z [nb-javac] ArrayDouble statesForAnalysis = new ArrayDouble(statevec.getData()); 2024-02-14T02:48:59.7004784Z [nb-javac] ^ 2024-02-14T02:48:59.7090324Z [nb-javac] D:\a\opensim-gui\opensim-gui\Gui\opensim\plotter\src\org\opensim\plotter\JPlotterPanel.java:2215: error: incompatible types: ArrayStr cannot be converted to String 2024-02-14T02:48:59.7092767Z [nb-javac] ArrayStr stateNamesWithTime = new ArrayStr(stateNames);

While this didn't show up in diffs, we'll need to restore it on the opensim-core side so that GUI and client code don't need to change.