Skip to content

Commit 4693b32

Browse files
authored
spack.mirror: split into submodules (spack#47936)
1 parent 1f2a68f commit 4693b32

32 files changed

+578
-532
lines changed

lib/spack/docs/conf.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,9 @@ def setup(sphinx):
222222
("py:class", "spack.traverse.EdgeAndDepth"),
223223
("py:class", "archspec.cpu.microarchitecture.Microarchitecture"),
224224
("py:class", "spack.compiler.CompilerCache"),
225+
("py:class", "spack.mirrors.mirror.Mirror"),
226+
("py:class", "spack.mirrors.layout.MirrorLayout"),
227+
("py:class", "spack.mirrors.utils.MirrorStats"),
225228
# TypeVar that is not handled correctly
226229
("py:class", "llnl.util.lang.T"),
227230
]

lib/spack/spack/binary_distribution.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
import spack.hash_types as ht
4141
import spack.hooks
4242
import spack.hooks.sbang
43-
import spack.mirror
43+
import spack.mirrors.mirror
4444
import spack.oci.image
4545
import spack.oci.oci
4646
import spack.oci.opener
@@ -369,7 +369,7 @@ def update(self, with_cooldown=False):
369369
on disk under ``_index_cache_root``)."""
370370
self._init_local_index_cache()
371371
configured_mirror_urls = [
372-
m.fetch_url for m in spack.mirror.MirrorCollection(binary=True).values()
372+
m.fetch_url for m in spack.mirrors.mirror.MirrorCollection(binary=True).values()
373373
]
374374
items_to_remove = []
375375
spec_cache_clear_needed = False
@@ -1176,7 +1176,7 @@ def _url_upload_tarball_and_specfile(
11761176

11771177

11781178
class Uploader:
1179-
def __init__(self, mirror: spack.mirror.Mirror, force: bool, update_index: bool):
1179+
def __init__(self, mirror: spack.mirrors.mirror.Mirror, force: bool, update_index: bool):
11801180
self.mirror = mirror
11811181
self.force = force
11821182
self.update_index = update_index
@@ -1224,7 +1224,7 @@ def tag(self, tag: str, roots: List[spack.spec.Spec]):
12241224
class OCIUploader(Uploader):
12251225
def __init__(
12261226
self,
1227-
mirror: spack.mirror.Mirror,
1227+
mirror: spack.mirrors.mirror.Mirror,
12281228
force: bool,
12291229
update_index: bool,
12301230
base_image: Optional[str],
@@ -1273,7 +1273,7 @@ def tag(self, tag: str, roots: List[spack.spec.Spec]):
12731273
class URLUploader(Uploader):
12741274
def __init__(
12751275
self,
1276-
mirror: spack.mirror.Mirror,
1276+
mirror: spack.mirrors.mirror.Mirror,
12771277
force: bool,
12781278
update_index: bool,
12791279
signing_key: Optional[str],
@@ -1297,7 +1297,7 @@ def push(
12971297

12981298

12991299
def make_uploader(
1300-
mirror: spack.mirror.Mirror,
1300+
mirror: spack.mirrors.mirror.Mirror,
13011301
force: bool = False,
13021302
update_index: bool = False,
13031303
signing_key: Optional[str] = None,
@@ -1953,9 +1953,9 @@ def download_tarball(spec, unsigned: Optional[bool] = False, mirrors_for_spec=No
19531953
"signature_verified": "true-if-binary-pkg-was-already-verified"
19541954
}
19551955
"""
1956-
configured_mirrors: Iterable[spack.mirror.Mirror] = spack.mirror.MirrorCollection(
1957-
binary=True
1958-
).values()
1956+
configured_mirrors: Iterable[spack.mirrors.mirror.Mirror] = (
1957+
spack.mirrors.mirror.MirrorCollection(binary=True).values()
1958+
)
19591959
if not configured_mirrors:
19601960
tty.die("Please add a spack mirror to allow download of pre-compiled packages.")
19611961

@@ -1980,7 +1980,7 @@ def fetch_url_to_mirror(url):
19801980
for mirror in configured_mirrors:
19811981
if mirror.fetch_url == url:
19821982
return mirror
1983-
return spack.mirror.Mirror(url)
1983+
return spack.mirrors.mirror.Mirror(url)
19841984

19851985
mirrors = [fetch_url_to_mirror(url) for url in mirror_urls]
19861986

@@ -2650,7 +2650,7 @@ def try_direct_fetch(spec, mirrors=None):
26502650
specfile_is_signed = False
26512651
found_specs = []
26522652

2653-
binary_mirrors = spack.mirror.MirrorCollection(mirrors=mirrors, binary=True).values()
2653+
binary_mirrors = spack.mirrors.mirror.MirrorCollection(mirrors=mirrors, binary=True).values()
26542654

26552655
for mirror in binary_mirrors:
26562656
buildcache_fetch_url_json = url_util.join(
@@ -2711,7 +2711,7 @@ def get_mirrors_for_spec(spec=None, mirrors_to_check=None, index_only=False):
27112711
if spec is None:
27122712
return []
27132713

2714-
if not spack.mirror.MirrorCollection(mirrors=mirrors_to_check, binary=True):
2714+
if not spack.mirrors.mirror.MirrorCollection(mirrors=mirrors_to_check, binary=True):
27152715
tty.debug("No Spack mirrors are currently configured")
27162716
return {}
27172717

@@ -2750,7 +2750,7 @@ def clear_spec_cache():
27502750

27512751
def get_keys(install=False, trust=False, force=False, mirrors=None):
27522752
"""Get pgp public keys available on mirror with suffix .pub"""
2753-
mirror_collection = mirrors or spack.mirror.MirrorCollection(binary=True)
2753+
mirror_collection = mirrors or spack.mirrors.mirror.MirrorCollection(binary=True)
27542754

27552755
if not mirror_collection:
27562756
tty.die("Please add a spack mirror to allow " + "download of build caches.")
@@ -2805,7 +2805,7 @@ def get_keys(install=False, trust=False, force=False, mirrors=None):
28052805

28062806

28072807
def _url_push_keys(
2808-
*mirrors: Union[spack.mirror.Mirror, str],
2808+
*mirrors: Union[spack.mirrors.mirror.Mirror, str],
28092809
keys: List[str],
28102810
tmpdir: str,
28112811
update_index: bool = False,
@@ -2872,7 +2872,7 @@ def check_specs_against_mirrors(mirrors, specs, output_file=None):
28722872
28732873
"""
28742874
rebuilds = {}
2875-
for mirror in spack.mirror.MirrorCollection(mirrors, binary=True).values():
2875+
for mirror in spack.mirrors.mirror.MirrorCollection(mirrors, binary=True).values():
28762876
tty.debug("Checking for built specs at {0}".format(mirror.fetch_url))
28772877

28782878
rebuild_list = []
@@ -2916,7 +2916,7 @@ def _download_buildcache_entry(mirror_root, descriptions):
29162916

29172917

29182918
def download_buildcache_entry(file_descriptions, mirror_url=None):
2919-
if not mirror_url and not spack.mirror.MirrorCollection(binary=True):
2919+
if not mirror_url and not spack.mirrors.mirror.MirrorCollection(binary=True):
29202920
tty.die(
29212921
"Please provide or add a spack mirror to allow " + "download of buildcache entries."
29222922
)
@@ -2925,7 +2925,7 @@ def download_buildcache_entry(file_descriptions, mirror_url=None):
29252925
mirror_root = os.path.join(mirror_url, BUILD_CACHE_RELATIVE_PATH)
29262926
return _download_buildcache_entry(mirror_root, file_descriptions)
29272927

2928-
for mirror in spack.mirror.MirrorCollection(binary=True).values():
2928+
for mirror in spack.mirrors.mirror.MirrorCollection(binary=True).values():
29292929
mirror_root = os.path.join(mirror.fetch_url, BUILD_CACHE_RELATIVE_PATH)
29302930

29312931
if _download_buildcache_entry(mirror_root, file_descriptions):

lib/spack/spack/bootstrap/core.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
import spack.binary_distribution
3838
import spack.config
3939
import spack.detection
40-
import spack.mirror
40+
import spack.mirrors.mirror
4141
import spack.platforms
4242
import spack.spec
4343
import spack.store
@@ -91,7 +91,7 @@ def __init__(self, conf: ConfigDictionary) -> None:
9191
self.metadata_dir = spack.util.path.canonicalize_path(conf["metadata"])
9292

9393
# Promote (relative) paths to file urls
94-
self.url = spack.mirror.Mirror(conf["info"]["url"]).fetch_url
94+
self.url = spack.mirrors.mirror.Mirror(conf["info"]["url"]).fetch_url
9595

9696
@property
9797
def mirror_scope(self) -> spack.config.InternalConfigScope:

lib/spack/spack/ci.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@
3737
import spack.config as cfg
3838
import spack.error
3939
import spack.main
40-
import spack.mirror
40+
import spack.mirrors.mirror
41+
import spack.mirrors.utils
4142
import spack.paths
4243
import spack.repo
4344
import spack.spec
@@ -204,7 +205,7 @@ def _print_staging_summary(spec_labels, stages, rebuild_decisions):
204205
if not stages:
205206
return
206207

207-
mirrors = spack.mirror.MirrorCollection(binary=True)
208+
mirrors = spack.mirrors.mirror.MirrorCollection(binary=True)
208209
tty.msg("Checked the following mirrors for binaries:")
209210
for m in mirrors.values():
210211
tty.msg(f" {m.fetch_url}")
@@ -797,7 +798,7 @@ def ensure_expected_target_path(path):
797798
path = path.replace("\\", "/")
798799
return path
799800

800-
pipeline_mirrors = spack.mirror.MirrorCollection(binary=True)
801+
pipeline_mirrors = spack.mirrors.mirror.MirrorCollection(binary=True)
801802
buildcache_destination = None
802803
if "buildcache-destination" not in pipeline_mirrors:
803804
raise SpackCIError("spack ci generate requires a mirror named 'buildcache-destination'")
@@ -1323,7 +1324,7 @@ def push_to_build_cache(spec: spack.spec.Spec, mirror_url: str, sign_binaries: b
13231324
"""
13241325
tty.debug(f"Pushing to build cache ({'signed' if sign_binaries else 'unsigned'})")
13251326
signing_key = bindist.select_signing_key() if sign_binaries else None
1326-
mirror = spack.mirror.Mirror.from_url(mirror_url)
1327+
mirror = spack.mirrors.mirror.Mirror.from_url(mirror_url)
13271328
try:
13281329
with bindist.make_uploader(mirror, signing_key=signing_key) as uploader:
13291330
uploader.push_or_raise([spec])
@@ -1343,7 +1344,7 @@ def remove_other_mirrors(mirrors_to_keep, scope=None):
13431344
mirrors_to_remove.append(name)
13441345

13451346
for mirror_name in mirrors_to_remove:
1346-
spack.mirror.remove(mirror_name, scope)
1347+
spack.mirrors.utils.remove(mirror_name, scope)
13471348

13481349

13491350
def copy_files_to_artifacts(src, artifacts_dir):

lib/spack/spack/cmd/bootstrap.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import spack.bootstrap.config
1717
import spack.bootstrap.core
1818
import spack.config
19-
import spack.mirror
19+
import spack.mirrors.utils
2020
import spack.spec
2121
import spack.stage
2222
import spack.util.path
@@ -400,7 +400,7 @@ def _mirror(args):
400400
llnl.util.tty.set_msg_enabled(False)
401401
spec = spack.spec.Spec(spec_str).concretized()
402402
for node in spec.traverse():
403-
spack.mirror.create(mirror_dir, [node])
403+
spack.mirrors.utils.create(mirror_dir, [node])
404404
llnl.util.tty.set_msg_enabled(True)
405405

406406
if args.binary_packages:

lib/spack/spack/cmd/buildcache.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import spack.deptypes as dt
2222
import spack.environment as ev
2323
import spack.error
24-
import spack.mirror
24+
import spack.mirrors.mirror
2525
import spack.oci.oci
2626
import spack.spec
2727
import spack.stage
@@ -392,7 +392,7 @@ def push_fn(args):
392392
roots = spack.cmd.require_active_env(cmd_name="buildcache push").concrete_roots()
393393

394394
mirror = args.mirror
395-
assert isinstance(mirror, spack.mirror.Mirror)
395+
assert isinstance(mirror, spack.mirrors.mirror.Mirror)
396396

397397
push_url = mirror.push_url
398398

@@ -750,7 +750,7 @@ def manifest_copy(manifest_file_list, dest_mirror=None):
750750
copy_buildcache_file(copy_file["src"], dest)
751751

752752

753-
def update_index(mirror: spack.mirror.Mirror, update_keys=False):
753+
def update_index(mirror: spack.mirrors.mirror.Mirror, update_keys=False):
754754
# Special case OCI images for now.
755755
try:
756756
image_ref = spack.oci.oci.image_from_mirror(mirror)

lib/spack/spack/cmd/ci.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import spack.config as cfg
2121
import spack.environment as ev
2222
import spack.hash_types as ht
23-
import spack.mirror
23+
import spack.mirrors.mirror
2424
import spack.util.gpg as gpg_util
2525
import spack.util.timer as timer
2626
import spack.util.url as url_util
@@ -240,7 +240,7 @@ def ci_reindex(args):
240240
ci_mirrors = yaml_root["mirrors"]
241241
mirror_urls = [url for url in ci_mirrors.values()]
242242
remote_mirror_url = mirror_urls[0]
243-
mirror = spack.mirror.Mirror(remote_mirror_url)
243+
mirror = spack.mirrors.mirror.Mirror(remote_mirror_url)
244244

245245
buildcache.update_index(mirror, update_keys=True)
246246

@@ -328,7 +328,7 @@ def ci_rebuild(args):
328328

329329
full_rebuild = True if rebuild_everything and rebuild_everything.lower() == "true" else False
330330

331-
pipeline_mirrors = spack.mirror.MirrorCollection(binary=True)
331+
pipeline_mirrors = spack.mirrors.mirror.MirrorCollection(binary=True)
332332
buildcache_destination = None
333333
if "buildcache-destination" not in pipeline_mirrors:
334334
tty.die("spack ci rebuild requires a mirror named 'buildcache-destination")

lib/spack/spack/cmd/common/arguments.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
import spack.config
1515
import spack.deptypes as dt
1616
import spack.environment as ev
17-
import spack.mirror
17+
import spack.mirrors.mirror
18+
import spack.mirrors.utils
1819
import spack.reporters
1920
import spack.spec
2021
import spack.store
@@ -689,31 +690,31 @@ def mirror_name_or_url(m):
689690

690691
# If there's a \ or / in the name, it's interpreted as a path or url.
691692
if "/" in m or "\\" in m or m in (".", ".."):
692-
return spack.mirror.Mirror(m)
693+
return spack.mirrors.mirror.Mirror(m)
693694

694695
# Otherwise, the named mirror is required to exist.
695696
try:
696-
return spack.mirror.require_mirror_name(m)
697+
return spack.mirrors.utils.require_mirror_name(m)
697698
except ValueError as e:
698699
raise argparse.ArgumentTypeError(f"{e}. Did you mean {os.path.join('.', m)}?") from e
699700

700701

701702
def mirror_url(url):
702703
try:
703-
return spack.mirror.Mirror.from_url(url)
704+
return spack.mirrors.mirror.Mirror.from_url(url)
704705
except ValueError as e:
705706
raise argparse.ArgumentTypeError(str(e)) from e
706707

707708

708709
def mirror_directory(path):
709710
try:
710-
return spack.mirror.Mirror.from_local_path(path)
711+
return spack.mirrors.mirror.Mirror.from_local_path(path)
711712
except ValueError as e:
712713
raise argparse.ArgumentTypeError(str(e)) from e
713714

714715

715716
def mirror_name(name):
716717
try:
717-
return spack.mirror.require_mirror_name(name)
718+
return spack.mirrors.utils.require_mirror_name(name)
718719
except ValueError as e:
719720
raise argparse.ArgumentTypeError(str(e)) from e

lib/spack/spack/cmd/gpg.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import tempfile
99

1010
import spack.binary_distribution
11-
import spack.mirror
11+
import spack.mirrors.mirror
1212
import spack.paths
1313
import spack.stage
1414
import spack.util.gpg
@@ -217,11 +217,11 @@ def gpg_publish(args):
217217
mirror = None
218218
if args.directory:
219219
url = spack.util.url.path_to_file_url(args.directory)
220-
mirror = spack.mirror.Mirror(url, url)
220+
mirror = spack.mirrors.mirror.Mirror(url, url)
221221
elif args.mirror_name:
222-
mirror = spack.mirror.MirrorCollection(binary=True).lookup(args.mirror_name)
222+
mirror = spack.mirrors.mirror.MirrorCollection(binary=True).lookup(args.mirror_name)
223223
elif args.mirror_url:
224-
mirror = spack.mirror.Mirror(args.mirror_url, args.mirror_url)
224+
mirror = spack.mirrors.mirror.Mirror(args.mirror_url, args.mirror_url)
225225

226226
with tempfile.TemporaryDirectory(dir=spack.stage.get_stage_root()) as tmpdir:
227227
spack.binary_distribution._url_push_keys(

0 commit comments

Comments
 (0)