Within Submitty, we have a number of third-party dependencies to help augment the system. These can be broken down largely into a couple of categories:
- Other Submitty Repositories
- Third-Party Repositories
- Third-Party Distributions
- Third-Party Dependencies
Other Submitty Repositories
While much of the code that makes up Submitty resides within the primary Submitty/Submitty repository, there are some components that reside outside of it. These include:
Each of these dependencies are installed/updated as part of the process of running INSTALL_SUBMITTY.sh,
which in-turn calls .setup/bin/update_repos.sh
to either clone or update the repo as necessary. The
version that gets installed for each of these is defined in .setup/bin/versions.sh
. Each of these
are cloned into ${SUBMITTY_INSTALL_DIR}/GIT_CHECKOUT/
. Additionally, we do download the
generated binaries for the appropriate version of Submitty/AnalysisTools into
${SUBMITTY_INSTALL_DIR}/SubmittyAnalysisTools
to avoid the expensive process of getting the
whole stack toolchain to compile it on the spot.
Third-Party Repositories
While the GIT_CHECKOUT
folder mostly holds Submitty related repos, it does also contain these
third-party repos:
These repos are cloned under ${SUBMITTY_INSTALL_DIR}/GIT_CHECKOUT/vendor/
. Currently they are
not versioned.
Third-Party Distributions
For autograding, Submitty relies on a handful of third-party tools to handle stuff like memory analysis and test runners for some languages. These are:
The versions that we install of these is defined in .setup/bin/versions.sh
. These are only
installed at initial system installation as part of .setup/install_system.sh
. For
each of these, we download the compiled versions of the tool and then install into the
appropriate directory (e.g. ${SUBMITTY_INSTALL_DIR}/java_tools
for Java stuff,
${SUBMITTY_INSTALL_DIR}/drmemory
).
Third-Party Dependencies
To manage PHP dependencies, we use composer, and the packages it installs can be found in site/composer.json.
To manage JS/CSS dependencies, we use npm, and the packages it installs can be found in site/package.json.
As Submitty is an application, not a library, each dependency in both of those files are pinned to a specific
version, and should not be set to use a range (e.g. use 1.0.0
over ^1.0.0
).
For python dependencies, we use pip. These are installed currently only at installation time, and not managed by Submitty currently. The current list of packages can be found in .setup/install_system. You should search for “pip3 install” to find all things that pip installs.