[Chapel Merge] Rework mason new/init and allow external dependencies

Branch: refs/heads/main
Revision: 07eeea9dc9d668184950195490edca2bf8bf3ba9
Author: jabraham17
Link: https://github.com/chapel-lang/chapel/pull/28518
Log Message:
Rework mason new/init and allow external dependencies (#28518)

This PR heavily reworks mason new and mason init. As apart of this,
this PR adds logic to allow Mason to rely on external dependencies.

In this PR

  • rewrote mason new/mason init
  • rewrote the mason build system to allow for building with a different
    chpl compiler. For example, from tools/mason make CHPL_COMPILER=/my/path/to/chpl DEBUG=1 will build mason with an
    arbitrary chpl compiler.
  • added the ability to pull dependencies from the mason repository (in a
    very limited sense) and use them as dependencies for building mason.
    This is also done ahead of time when generating the tarball so that
    mason builds from the tarball do not rely on a network connection

Future work:

  • This PR adds the Manifest.chpl file, which is currently only used in
    a very limited sense. Future work will expand its usage to replace all
    of the raw accesses of Toml.
  • MasonLogger will be moved into an external dep in a later PR
  • This PR has paved the way for improvements to mason new/init, like
    adding the ability to generate projects with existing test structures.
    That work is not done in this PR
  • paratest

[Reviewed by @benharsh]

Compare: Comparing fe4e7247dcbc3b11e7f66f360af53837726381ec...edd61da29bdcd30f02ae2ed0ef7c7df5a6573495 · chapel-lang/chapel · GitHub

Diff:
M doc/rst/usingchapel/prereqs.rst
M test/mason/bashtests/colorOutput.good
M test/mason/chplVersion/mason-chpl-version-new.chpl
M test/mason/chplVersion/mason-chpl-version-new.good
M test/mason/mason-external/masonExternalRanges/mason-external-range.chpl
M test/mason/mason-help-tests/masonHelpTests.chpl
M test/mason/mason-help-tests/masonHelpTests.good
M test/mason/mason-new-init/initErrors.good
M test/mason/mason-new-init/masonNewBadName.good
M test/mason/mason-new-init/new.masontest
M test/mason/mason-new-init/newErrors.good
A test/mason/mason-new-init/noGit/COMPOPTS
A test/mason/mason-new-init/noGit/noGit.chpl
A test/mason/mason-new-init/noGit/noGit.good
R100 test/mason/mason-new-init/nogit.prediff test/mason/mason-new-init/noGit/noGit.prediff
R076 test/mason/mason-new-init/nogit.good test/mason/mason-new-init/nopath.good
R100 test/mason/mason-new-init/nogit.masontest test/mason/mason-new-init/nopath.masontest
A test/mason/mason-new-init/nopath.prediff
A test/mason/mason-system/myDebug.chpl
M test/mason/mason-system/systemadd.good
M test/mason/publish/badDry.chpl
M test/mason/publish/badDry.good
M test/mason/publish/badRegTest.chpl
M test/mason/publish/badRegTest.good
M test/mason/publish/dryTest.chpl
M test/mason/publish/publish.chpl
M test/mason/publish/publish.good
M test/mason/publish/publishGitCheck.chpl
M test/mason/publish/publishGitCheck.good
M test/mason/publish/use-local-registry/localRegistry.good
M tools/mason/Makefile
A tools/mason/Manifest.chpl
M tools/mason/Mason.chpl
M tools/mason/MasonHelp.chpl
D tools/mason/MasonInit.chpl
D tools/mason/MasonNew.chpl
A tools/mason/MasonNewInit.chpl
M tools/mason/MasonPublish.chpl
M tools/mason/MasonUtils.chpl
A tools/mason/ThirdParty.chpl
A tools/mason/ThirdParty/.gitignore
A tools/mason/ThirdParty/masonDeps.txt
M tools/mason/buildMason
A tools/mason/pullMasonDeps
M util/buildRelease/gen_release
https://github.com/chapel-lang/chapel/pull/28518.diff