4af448724f
Support mirroring all packages with `spack mirror create --all`. In this mode there is no concretization: * Spack pulls every version of every package into the created mirror. * It also makes multiple attempts for each package/version combination (if there is a temporary connection failure). * Continues if all attempts fail. i.e., this makes its best effort to fetch evrerything, even if all attempts to fetch one package fail. This also changes mirroring logic to prefer storing sources by their hash or by a unique name derived from the source. For example: * Archives with checksums are named by the sha256 sum, i.e., `archive/f6/f6cf3bd233f9ea6147b21c7c02cac24e5363570ce4fd6be11dab9f499ed6a7d8.tar.gz` vs the previous `<package-name>-package-version>.tar.gz` * VCS repositories are stored by a path derived from their URL, e.g. `git/google/leveldb.git/master.tar.gz`. The new mirror layout allows different packages to refer to the same resource or source without duplicating that download in the mirror/cache. This change is not essential to mirroring everything but is expected to save space when mirroring packages that all use the same resource. The new structure of the mirror is: ``` <base directory>/ _source-cache/ <-- the _source-cache directory is new archive/ <-- archives/resources/patches stored by hash 00/ <-- 2-letter sha256 prefix 002748bdd0319d5ab82606cf92dc210fc1c05d0607a2e1d5538f60512b029056.tar.gz 01/ 0154c25c45b5506b6d618ca8e18d0ef093dac47946ac0df464fb21e77b504118.tar.gz 0173a74a515211997a3117a47e7b9ea43594a04b865b69da5a71c0886fa829ea.tar.gz ... git/ OpenFAST/ openfast.git/ master.tar.gz <-- repo by branch name PHASTA/ phasta.git/ 11f431f2d1a53a529dab4b0f079ab8aab7ca1109.tar.gz <-- repo by commit ... svn/ <-- each fetch strategy has its own subdirectory ... openmpi/ <-- the remaining package directories have the old format openmpi-1.10.1.tar.gz <-- human-readable name is symlink to _source-cache ``` In addition to the archive names as described above, `mirror create` now also creates symlinks with the old format to help users understand which package each mirrored archive is associated with, and to allow mirrors to work with old spack versions. The symlinks are relative so the mirror directory can still itself be archived. Other improvements: * `spack mirror create` will not re-download resources that have already been placed in it. * When creating a mirror, the resources downloaded to the mirror will not be cached (things are not stored twice). |
||
---|---|---|
.. | ||
spack |