diff options
author | Thomas Dickerson <elfprince13@gmail.com> | 2022-04-04 04:32:25 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-04 10:32:25 +0200 |
commit | ee505e6c69528825d269cf90277654ff93a343e0 (patch) | |
tree | f2cea852f2007c992e222a050f7c732c56a3d3a4 /lib/spack/docs/build_systems | |
parent | d61e54b4c7da6ceaee098447f6d1baa5ee4e1668 (diff) | |
download | spack-ee505e6c69528825d269cf90277654ff93a343e0.tar.gz spack-ee505e6c69528825d269cf90277654ff93a343e0.tar.bz2 spack-ee505e6c69528825d269cf90277654ff93a343e0.tar.xz spack-ee505e6c69528825d269cf90277654ff93a343e0.zip |
Add support for racket packages (#27564)
- Add variants for various common build flags, including support for both versions of the Racket VM environment.
- Prevent `-j` flags to `make`, which has been known to cause problems with Racket builds.
- Prefer the minimal release to improve install times. Bells and whistles carry their own runtime dependencies and should be installed via `raco`. An enterprising user may even create a `RacketPackage` class to make spack aware of `raco` installed packages.
- Match the official version numbering scheme.
Diffstat (limited to 'lib/spack/docs/build_systems')
-rw-r--r-- | lib/spack/docs/build_systems/racketpackage.rst | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/spack/docs/build_systems/racketpackage.rst b/lib/spack/docs/build_systems/racketpackage.rst new file mode 100644 index 0000000000..8ba37ceeba --- /dev/null +++ b/lib/spack/docs/build_systems/racketpackage.rst @@ -0,0 +1,46 @@ +.. Copyright 2013-2021 Lawrence Livermore National Security, LLC and other + Spack Project Developers. See the top-level COPYRIGHT file for details. + + SPDX-License-Identifier: (Apache-2.0 OR MIT) + +.. _racketpackage: + +------------- +RacketPackage +------------- + +Much like Python, Racket packages and modules have their own special build system. +To learn more about the specifics of Racket package system, please refer to the +`Racket Docs <https://docs.racket-lang.org/pkg/cmdline.html>`_. + +^^^^^^ +Phases +^^^^^^ + +The ``RacketPackage`` base class provides an ``install`` phase that +can be overridden, corresponding to the use of: + +.. code-block:: console + + $ raco pkg install + +^^^^^^^ +Caveats +^^^^^^^ + +In principle, ``raco`` supports a second, ``setup`` phase; however, we have not +implemented this separately, as in normal circumstances, ``install`` also handles +running ``setup`` automatically. + +Unlike Python, Racket currently on supports two installation scopes for packages, user +or system, and keeps a registry of installed packages at each scope in its configuration files. +This means we can't simply compose a "``RACKET_PATH``" environment variable listing all of the +places packages are installed, and update this at will. + +Unfortunately this means that all currently installed packages which extend Racket via ``raco pkg install`` +are accessible whenever Racket is accessible. + +Additionally, because Spack does not implement uninstall hooks, uninstalling a Spack ``rkt-`` package +will have no effect on the ``raco`` installed packages visible to your Racket installation. +Instead, you must manually run ``raco pkg remove`` to keep the two package managers in a mutually +consistent state. |