opensim-org / opensim-core

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

Need to create a mechanism to pull together required repos for creating OpenSim distributable #467

Closed jenhicks closed 7 years ago

chrisdembia commented 9 years ago

Please keep me in the loop on this.

aymanhab commented 9 years ago

Sure @chrisdembia The GUI repository has a branch that uses the opensim-core as a submodule and it seems to do what I wanted but I haven't tried to update it yet. Will let you know when I'm back n this trail. Thanks.

chrisdembia commented 9 years ago

Thank you. I like the use of submodules. Will the GUI repo be a "CMake project"?

jenhicks commented 8 years ago

@aymanhab Will start working on this soon, asking for help from @klshrinidhi @chrisdembia @jimmyDunne

chrisdembia commented 8 years ago

I suppose the options are superbuild (CMake ExternalProject_Add) and submodules. It is not clear to me which is better. So I suppose we should just choose one and be willing to change in the future. My hunch is that ExternalProject is better for opensim-core, and submodule is better for opensim-models.

Another question: Should the GUI repo be the repo used for creating the distributable, or should there be yet another repo used for that (which pulls in core, gui, and models)? My hunch is no, but just wanted to raise the idea.

Another option similar to superbuild would be cget: https://github.com/pfultz2/cget

chrisdembia commented 8 years ago

@sherm1 do you have any wisdom to share with us, based on your collaboration with Kitware? We are trying to figure out how to combine the opensim-core and opensim-models repos with opensim-gui for packaging the distribution.

sherm1 commented 8 years ago

do you have any wisdom to share with us, based on your collaboration with Kitware?

We haven't gotten anywhere close to packaging yet with Drake. It's still build-from-source. For that Kitware made us switch to git submodules for our externals (we have a lot of them). Very nice conceptually but some sketchy behavior. Submodule glitches have ruined some of my local branches. Mostly works though, at least with Kitware working on it.

chrisdembia commented 8 years ago

Okay thank you for sharing.

jenhicks commented 7 years ago

Who is working on this one?

aymanhab commented 7 years ago

@klshrinidhi is working on this per @chrisdembia

chrisdembia commented 7 years ago

This issue will be addressed when @klshrinidhi edits the CMake files to organize dependencies for distribution.

aymanhab commented 7 years ago

The layout we proposed was intended to keep the layout for each dependency matching the native distribution of that dependency. This allows for reusing/distributing the CMake files from our own environment as is to build user projects. On windows, the layout would contain :

On osx -/Applications/OpenSim 4.0/OpenSim 4.0.app/Contents/.... -/Applications/OpenSim 4.0/bin/.. has symbolic links inside Contents -/Applications/OpenSim 4.0/sdk/.. has symbolic links inside Contents -/Applications/OpenSim 4.0/CMake/...

Thanks @chrisdembia for the refresher and please let me know if I got something wrong or the extra issues to be accounted for.

klshrinidhi commented 7 years ago

Okay. Got it. I will get back soon.

chrisdembia commented 7 years ago

Thank you @aymanhab and @klshrinidhi. Some other things to consider:

  1. It might be nice to copy Simbody doxygen from Simbody's installation, but I think we should not copy Simbody examples (source or binaries).
  2. simbody-visualizer: On Windows, I think it's fine if this goes in the root /bin/. But on macOS and Linux, it should stay in sdk/Simbody/libexec/simbody; otherwise, it won't be found properly.

For macOS/Linux, It is important that we retain a CMake variable like the current OPENSIM_INSTALL_UNIX_FHS setting. When packaging opensim-core for homebrew or debian, we would not want an sdk folder, etc.

On macOS, the symlinks would be set up by the GUI installer, not by opensim-core's CMake scripts. I expect that within the Contents folder is the same layout as on Windows (except for simbody-visualizer, as mentioned above).

klshrinidhi commented 7 years ago

Can you remind me what was the layout for Linux ? Also, I don't have access to OSX/Windows locally to develop/test the build.

chrisdembia commented 7 years ago

We didn't discuss a layout for Linux. It seems like we are using the same layout for macOS and Windows except for simbody-visualizer, so perhaps we should use the same layout on Linux as well.

You can get 90-day VirtualBox VMs of Windows (https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/).

I can test on macOS.

chrisdembia commented 7 years ago

You could also use AppVeyor to test on Windows, though that workflow might not be very pleasant.

aymanhab commented 7 years ago

@klshrinidhi the layout for the application install on OSX mirrors the NetBeans install (since the GUI uses the same code base). If you install NetBeans on linux you should get a good idea about what the layout should look like.

chrisdembia commented 7 years ago

PR #1664 addresses this issue, and @aymanhab and I just chatted about current progress. Some decisions we made: