Fetching from URLs falls back to mirrors if they exist (#13881)
Users can now list mirrors of the main url in packages. - [x] Instead of just a single `url` attribute, users can provide a list (`urls`) in the package, and these will be tried by in order by the fetch strategy. - [x] To handle one of the most common mirror cases, define a `GNUMirrorPackage` mixin to handle all the standard GNU mirrors. GNU packages can set `gnu_mirror_path` to define the path within a mirror, and the mixin handles setting up all the requisite GNU mirror URLs. - [x] update all GNU packages in `builtin` to use the `GNUMirrorPackage` mixin.
This commit is contained in:

committed by
Todd Gamblin

parent
1b93320848
commit
497fddfcb9
@@ -553,6 +553,34 @@ version. This is useful for packages that have an easy to extrapolate URL, but
|
||||
keep changing their URL format every few releases. With this method, you only
|
||||
need to specify the ``url`` when the URL changes.
|
||||
|
||||
"""""""""""""""""""""""
|
||||
Mirrors of the main URL
|
||||
"""""""""""""""""""""""
|
||||
|
||||
Spack supports listing mirrors of the main URL in a package by defining
|
||||
the ``urls`` attribute:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
class Foo(Package):
|
||||
|
||||
urls = [
|
||||
'http://example.com/foo-1.0.tar.gz',
|
||||
'http://mirror.com/foo-1.0.tar.gz'
|
||||
]
|
||||
|
||||
instead of just a single ``url``. This attribute is a list of possible URLs that
|
||||
will be tried in order when fetching packages. Notice that either one of ``url``
|
||||
or ``urls`` can be present in a package, but not both at the same time.
|
||||
|
||||
A well-known case of packages that can be fetched from multiple mirrors is that
|
||||
of GNU. For that, Spack goes a step further and defines a mixin class that
|
||||
takes care of all of the plumbing and requires packagers to just define a proper
|
||||
``gnu_mirror_path`` attribute:
|
||||
|
||||
.. literalinclude:: _spack_root/var/spack/repos/builtin/packages/autoconf/package.py
|
||||
:lines: 9-18
|
||||
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Skipping the expand step
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
Reference in New Issue
Block a user