spack/share/spack
Omar Padron 2d93154119
Streamline key management for build caches (#17792)
* Rework spack.util.web.list_url()

list_url() now accepts an optional recursive argument (default: False)
for controlling whether to only return files within the prefix url or to
return all files whose path starts with the prefix url.  Allows for the
most effecient implementation for the given prefix url scheme.  For
example, only recursive queries are supported for S3 prefixes, so the
returned list is trimmed down if recursive == False, but the native
search is returned as-is when recursive == True.  Suitable
implementations for each case are also used for file system URLs.

* Switch to using an explicit index for public keys

Switches to maintaining a build cache's keys under build_cache/_pgp.
Within this directory is an index.json file listing all the available
keys and a <fingerprint>.pub file for each such key.

 - Adds spack.binary_distribution.generate_key_index()
   - (re)generates a build cache's key index

 - Modifies spack.binary_distribution.build_tarball()
   - if tarball is signed, automatically pushes the key used for signing
     along with the tarball
   - if regenerate_index == True, automatically (re)generates the build
     cache's key index along with the build cache's package index; as in
     spack.binary_distribution.generate_key_index()

 - Modifies spack.binary_distribution.get_keys()
   - a build cache's key index is now used instead of programmatic
     listing

 - Adds spack.binary_distribution.push_keys()
   - publishes keys from Spack's keyring to a given list of mirrors

 - Adds new spack subcommand: spack gpg publish
   - publishes keys from Spack's keyring to a given list of mirrors

 - Modifies spack.util.gpg.Gpg.signing_keys()
   - Accepts optional positional arguments for filtering the set of keys
     returned

 - Adds spack.util.gpg.Gpg.public_keys()
   - As spack.util.gpg.Gpg.signing_keys(), except public keys are
     returned

 - Modifies spack.util.gpg.Gpg.export_keys()
   - Fixes an issue where GnuPG would prompt for user input if trying to
     overwrite an existing file

 - Modifies spack.util.gpg.Gpg.untrust()
   - Fixes an issue where GnuPG would fail for input that were not key
     fingerprints

 - Modifies spack.util.web.url_exists()
   - Fixes an issue where url_exists() would throw instead of returning
     False

* rework gpg module/fix error with very long GNUPGHOME dir

* add a shim for functools.cached_property

* handle permission denied error in gpg util

* fix tests/make gpgconf optional if no socket dir is available
2020-09-25 12:54:24 -04:00
..
bash Added alias and bash completion for spacktivate (#16472) 2020-05-13 12:02:38 -06:00
csh macos: use DYLD_FALLBACK_LIBRARY_PATH instead of DYLD_LIBRARY_PATH 2020-04-16 17:23:33 -07:00
docker Make the largest layer of the docker image cacheable (#17553) 2020-07-16 13:15:04 -04:00
docs/docker/module-file-tutorial autotools: remove FORCE_UNSAFE_CONFIGURE from docs, commands, code (#16145) 2020-04-20 08:32:03 -07:00
gitlab OLCF Ascent gitlab ci trigger: pass SPACK_REF (#18875) 2020-09-23 09:35:29 -07:00
keys add tutorial public key to share/spack/keys dir (#17684) 2020-07-23 14:35:25 -07:00
logo add artisanal handcrafted SVG Spack logo. (#6165) 2017-11-06 22:42:16 -08:00
qa Add new RubyPackage build system base class (#18199) 2020-09-02 16:26:36 -07:00
templates spack containerize: added --fail-fast argument to containerize install. (#17533) 2020-07-15 11:13:04 +02:00
setup-env.csh bugfix: no infinite recursion in setup-env.sh on Cray 2020-07-06 13:55:14 -07:00
setup-env.fish Bugfix for fish support: overly zealous arg matching (#18528) 2020-09-10 10:01:44 -05:00
setup-env.sh bugfix: no infinite recursion in setup-env.sh on Cray 2020-07-06 13:55:14 -07:00
setup-tutorial-env.sh tutorial: Add boto3 installation to setup script (#17722) 2020-07-27 16:55:33 -07:00
spack-completion.bash Streamline key management for build caches (#17792) 2020-09-25 12:54:24 -04:00