summaryrefslogtreecommitdiff
path: root/lib/spack/docs/packaging_guide.rst
diff options
context:
space:
mode:
Diffstat (limited to 'lib/spack/docs/packaging_guide.rst')
-rw-r--r--lib/spack/docs/packaging_guide.rst54
1 files changed, 52 insertions, 2 deletions
diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst
index b9cd85ed82..80ddf98c38 100644
--- a/lib/spack/docs/packaging_guide.rst
+++ b/lib/spack/docs/packaging_guide.rst
@@ -920,12 +920,13 @@ For some packages, source code is provided in a Version Control System
(VCS) repository rather than in a tarball. Spack can fetch packages
from VCS repositories. Currently, Spack supports fetching with `Git
<git-fetch_>`_, `Mercurial (hg) <hg-fetch_>`_, `Subversion (svn)
-<svn-fetch_>`_, and `Go <go-fetch_>`_. In all cases, the destination
+<svn-fetch_>`_, `CVS (cvs) <cvs-fetch_>`_, and `Go <go-fetch_>`_.
+In all cases, the destination
is the standard stage source path.
To fetch a package from a source repository, Spack needs to know which
VCS to use and where to download from. Much like with ``url``, package
-authors can specify a class-level ``git``, ``hg``, ``svn``, or ``go``
+authors can specify a class-level ``git``, ``hg``, ``svn``, ``cvs``, or ``go``
attribute containing the correct download location.
Many packages developed with Git have both a Git repository as well as
@@ -1173,6 +1174,55 @@ you can check out a branch or tag by changing the URL. If you want to
package multiple branches, simply add a ``svn`` argument to each
version directive.
+.. _cvs-fetch:
+
+^^^
+CVS
+^^^
+
+CVS (Concurrent Versions System) is an old centralized version control
+system. It is a predecessor of Subversion.
+
+To fetch with CVS, use the ``cvs``, branch, and ``date`` parameters.
+The destination directory will be the standard stage source path.
+
+Fetching the head
+ Simply add a ``cvs`` parameter to the package:
+
+ .. code-block:: python
+
+ class Example(Package):
+
+ cvs = ":pserver:outreach.scidac.gov/cvsroot%module=modulename"
+
+ version('1.1.2.4')
+
+ CVS repository locations are described using an older syntax that
+ is different from today's ubiquitous URL syntax. ``:pserver:``
+ denotes the transport method. CVS servers can host multiple
+ repositories (called "modules") at the same location, and one needs
+ to specify both the server location and the module name to access.
+ Spack combines both into one string using the ``%module=modulename``
+ suffix shown above.
+
+ This download method is untrusted.
+
+Fetching a date
+ Versions in CVS are commonly specified by date. To fetch a
+ particular branch or date, add a ``branch`` and/or ``date`` argument
+ to the version directive:
+
+ .. code-block:: python
+
+ version('2021.4.22', branch='branchname', date='2021-04-22')
+
+ Unfortunately, CVS does not identify repository-wide commits via a
+ revision or hash like Subversion, Git, or Mercurial do. This makes
+ it impossible to specify an exact commit to check out.
+
+CVS has more features, but since CVS is rarely used these days, Spack
+does not support all of them.
+
.. _go-fetch:
^^