Scripts + Packaging Overhaul

I want to refactor/improve our scripts directory for better management of dependencies, packaging, and deploying. Here is an assessment of what currently exists and what I envision changing:

  • docgen.sh: generates HTML documentation (sues gitlab_style.txt for formatting)
    • Change:
      • update to make sure all tutorials are generated
      • run docgen.sh as a part of merging development into master to ensure it works
  • package_pyarc.sh: packages pyarc into a tar file to deploy independently
    • Change:
      • Possibly remove altogether as it 1) doesn't work and 2) may be unnecessary if we expect users to use it from workbench
      • If keeping then need to ensure it works and add packing of OpenMC, DASSH, and PyGriffin as well.
  • setup_dependencies.sh: builds WASP, invokes setup_joblib.sh
    • Change:
      • remove as it currently is setup because these things are no longer necessary to build separately
      • setup all other dependencies that are necessary (OpenMC, DASSH, PyGriffin, joblib, pandoc)- see below
  • setup_joblib.sh: downloads joblib repo and builds from source
    • Change:
      • remove, joblib should be installed into Workbench conda env from pip
  • setup_conda.sh: source this file to enter the Workbench conda env
    • Change:
      • keep this as it is necessary to install other dependencies, but probably rename
  • dassh_insall.sh: installs DASSH from a supplied repo path or downloads from github and installs it into a new conda environment using the Workbench Conda
    • Change:
      • It is not necessary to create a new environment just for DASSH, so install directly into the Workbench env
      • possibly rename for consistency and call from a generalized install_dependencies script
  • dassh_run.sh: invokes the DASSH conda environment to run dassh from bash
    • Change:
      • Remove because it is not necessary if DASSH changes to being installed directly into the Workbench env
      • Note: I already started on updating just the DASSH scripts since I need to update the DASSH version being called anyway
  • setup_openmc.sh: installs OpenMC into Workbench env
    • Change:
      • rename for consistency
      • call from a generalized install_dependencies script
      • Possibly add option for users to supply a repository path and build from source instead of conda (could be very complicated but beneficial)
  • pygriffin_setup.sh: installs pygriffin into Workbench env from a user-supplied repository path
    • Change:
      • rename for consistency
      • call from a generalized install_dependencies script
      • allow users to not provide a repository path and automatically download repo at a specific commit/release

After making these changes, this is what I envision as scripts and how they are to be used:

  • docgen.sh - use as currently being used
  • requirements.txt: list of pip/conda installable packages
    • includes joblib and pandoc
  • install_dependencies.sh: invoked by the user to install all open-source dependencies into Workbench environment. Steps:
    1. called by user supplying optional arguments for repository paths (or maybe we make them set a X_src path in the .pyarc.rc file if they want to use a specific path)
    2. source the workbench conda environment (what is currently done with setup_conda.sh)
    3. install requirements.txt
    4. call _openmc_install.sh to install OpenMC
    5. call _dassh_install.sh to install DASSH
    6. call _pygriffin_install.sh to install PyGriffin
  • _openmc_install.sh: not intended to be called independently by user, installs openmc from conda or builds from source from provided path
  • _dassh_install.sh: not intended to be called independently by user, installs dassh by downloading repo or installing from provided path
  • _pygriffin_install.sh: not intended to be called independently by user, installs pygriffin by downloading repo or installing from provided path
Edited by Kiesling, Kalin Rose