CMake syntax for downloading python scripts from GitHub

I'd really like to move some paths like avogadrolibs/avogadro/qtplugins/quantuminput to download scripts from separate GitHub repositories, e.g.

This way, we can move fileFormat scripts, etc. out of the main repository and into separate repos that also work with the downloader feature.

What's the best CMake syntax for this? I mean, should this be put into the quantuminput/CMakeLists.txt file or higher up?


I was thinking about this on the plane, and I think we need to support shipping a default version with releases and offering a way of downloading/updating them. Many people I work with don’t want us automatically accessing the network, and I think we need a default package that has everything in it without any further work.

The best way of achieving this would be moving the Python code to its own repo, having avogadroapp depend on the projects with the Python code, they can be added to the superbuild, and install their scripts to the right place. I can make sure that they get packaged, and then we need a little logic to override the packaged version with local versions, I think in the first instance matching local versions in the home directory should always override packaged versions, but am open.

I don’t think the plugins in quantuminput should download the files, and we should use CMake so that I can create packages with tags that could be recreated in the future.

I think we’re basically saying the same thing - as a start, I have a repo for avogenerators - that can and should be downloaded in the superbuild. (I’ll create one for file formats and workflows shortly.)

I agree 100% that the default version should install with the latest set of scripts at the time of release. I was asking for help with the CMake syntax to download the repo, so I can remove the duplicated scripts currently in avogadrolibs/avogadro/qtplugins/quantuminput/inputGenerators/

My comment was that by having the scripts in separate repos (rather than living in avogadrolibs) then users who want to install newer versions (e.g., use the downloader feature) can do so. That feature should be optional (e.g., users who can’t access the network).

I already have code to load Python scripts - as you said, the local version overrides the installed version. The code actually checks the individual menu paths for each script - this way if ORCA or GAMESS or Q-Chem create separate plugins, that could be installed locally and replace the default scripts.

In short:

  • I want to see the superbuild use CMake to grab scripts from a separate repo
  • I’m not quite sure how to do that myself
  • Plugin downloads and/or updates will always be optional