[Chapel Merge] Add TOML checking of mason git dependencies and re

Branch: refs/heads/main
Revision: b96122b
Author: bmcdonald3
Link: Unavailable
Log Message:

Merge pull request #20324 from bmcdonald3/mason-git-head

Add TOML checking of mason git dependencies and revision locking

[ reviewed by @arezaii - thanks ]

Previously, support was added to mason for using git repositories
outside of a mason registry as dependencies, but the TOML files of
those dependencies were not checked and their revisions were not
locked in. This meant that if the git repo specified as a dependency
used another required mason package, it would not be pulled into the
new build and wouldn't compile.

This PR adds support for checking the TOML file and adding the
dependencies to the lock file of the package using the git repo, so
all dependencies should be resolved.

Additionally, the specific git revision is now always locked in
to ensure build reproducibility. Upon building with a git dep
specified, a directory will be created a and the repo pulled down at
$MASON_HOME/git/<dep-name>-<branch>. Then, while generating the
lock file, the TOML file in the git dependency will be checked and
the dependencies pulled into the lock file. Finally, the git revision
is retrieved from the repo and stored in the lock file to ensure
that the build will be reproducible.

The git revision will then only be updated when running the
mason update command without having a rev field in the TOML file.
If a rev field is specified, the revision will never be updated.
This means that running mason build will never update the revision,
but will instead checkout the revision specified in Mason.lock
everytime.

Modified Files:
M tools/mason/MasonBuild.chpl

M tools/mason/MasonExample.chpl
M tools/mason/MasonModules.chpl
M tools/mason/MasonUpdate.chpl
M tools/mason/MasonUtils.chpl

Compare: https://github.com/chapel-lang/chapel/compare/349f0bc0bbc0...b96122bc3556