def gpg_init(args): import_dir = args.import_dir if import_dir is None: import_dir = spack.paths.gpg_keys_path for root, _, filenames in os.walk(import_dir): for filename in filenames: if not filename.endswith('.key'): continue Gpg.trust(os.path.join(root, filename))
def get_keys(install=False, trust=False, force=False): """ Get pgp public keys available on mirror with suffix .key or .pub """ if not spack.mirror.MirrorCollection(): tty.die("Please add a spack mirror to allow " + "download of build caches.") keys = set() for mirror in spack.mirror.MirrorCollection().values(): fetch_url_build_cache = url_util.join(mirror.fetch_url, _build_cache_relative_path) mirror_dir = url_util.local_file_path(fetch_url_build_cache) if mirror_dir: tty.msg("Finding public keys in %s" % mirror_dir) files = os.listdir(str(mirror_dir)) for file in files: if re.search(r'\.key', file) or re.search(r'\.pub', file): link = url_util.join(fetch_url_build_cache, file) keys.add(link) else: tty.msg("Finding public keys at %s" % url_util.format(fetch_url_build_cache)) # For s3 mirror need to request index.html directly p, links = web_util.spider(url_util.join(fetch_url_build_cache, 'index.html'), depth=1) for link in links: if re.search(r'\.key', link) or re.search(r'\.pub', link): keys.add(link) for link in keys: with Stage(link, name="build_cache", keep=True) as stage: if os.path.exists(stage.save_filename) and force: os.remove(stage.save_filename) if not os.path.exists(stage.save_filename): try: stage.fetch() except fs.FetchError: continue tty.msg('Found key %s' % link) if install: if trust: Gpg.trust(stage.save_filename) tty.msg('Added this key to trusted keys.') else: tty.msg('Will not add this key to trusted keys.' 'Use -t to install all downloaded keys')
def get_keys(install=False, trust=False, force=False): """ Get pgp public keys available on mirror """ mirrors = spack.config.get('mirrors') if len(mirrors) == 0: tty.die("Please add a spack mirror to allow " + "download of build caches.") keys = set() for mirror_name, mirror_url in mirrors.items(): if mirror_url.startswith('file'): mirror = os.path.join( mirror_url.replace('file://', ''), _build_cache_relative_path) tty.msg("Finding public keys in %s" % mirror) files = os.listdir(mirror) for file in files: if re.search(r'\.key', file): link = 'file://' + mirror + '/' + file keys.add(link) else: tty.msg("Finding public keys on %s" % mirror_url) p, links = spider(mirror_url + "/build_cache", depth=1) for link in links: if re.search(r'\.key', link): keys.add(link) for link in keys: with Stage(link, name="build_cache", keep=True) as stage: if os.path.exists(stage.save_filename) and force: os.remove(stage.save_filename) if not os.path.exists(stage.save_filename): try: stage.fetch() except fs.FetchError: continue tty.msg('Found key %s' % link) if install: if trust: Gpg.trust(stage.save_filename) tty.msg('Added this key to trusted keys.') else: tty.msg('Will not add this key to trusted keys.' 'Use -t to install all downloaded keys')
def get_keys(install=False, trust=False, force=False): """ Get pgp public keys available on mirror """ mirrors = spack.config.get('mirrors') if len(mirrors) == 0: tty.die("Please add a spack mirror to allow " + "download of build caches.") keys = set() for key in mirrors: url = mirrors[key] if url.startswith('file'): mirror = url.replace('file://', '') + '/build_cache' tty.msg("Finding public keys in %s" % mirror) files = os.listdir(mirror) for file in files: if re.search('\.key', file): link = 'file://' + mirror + '/' + file keys.add(link) else: tty.msg("Finding public keys on %s" % url) p, links = spider(url + "/build_cache", depth=1) for link in links: if re.search("\.key", link): keys.add(link) for link in keys: with Stage(link, name="build_cache", keep=True) as stage: if os.path.exists(stage.save_filename) and force: os.remove(stage.save_filename) if not os.path.exists(stage.save_filename): try: stage.fetch() except fs.FetchError: continue tty.msg('Found key %s' % link) if install: if trust: Gpg.trust(stage.save_filename) tty.msg('Added this key to trusted keys.') else: tty.msg('Will not add this key to trusted keys.' 'Use -t to install all downloaded keys')
def get_keys(install=False, yes_to_all=False): """ Get pgp public keys available on mirror """ mirrors = spack.config.get_config('mirrors') if len(mirrors) == 0: tty.die("Please add a spack mirror to allow " + "download of build caches.") keys = set() for key in mirrors: url = mirrors[key] if url.startswith('file'): mirror = url.replace('file://', '') + '/build_cache' tty.msg("Finding public keys in %s" % mirror) files = os.listdir(mirror) for file in files: if re.search('\.key', file): link = 'file://' + mirror + '/' + file keys.add(link) else: tty.msg("Finding public keys on %s" % url) p, links = spider(url + "/build_cache", depth=1) for link in links: if re.search("\.key", link): keys.add(link) for link in keys: with Stage(link, name="build_cache", keep=True) as stage: try: stage.fetch() except fs.FetchError: continue tty.msg('Found key %s' % link) if install: if yes_to_all: Gpg.trust(stage.save_filename) tty.msg('Added this key to trusted keys.') else: tty.msg('Will not add this key to trusted keys.' 'Use -y to override')
def gpg_trust(args): """add a key to the keyring""" Gpg.trust(args.keyfile)
def gpg_trust(args): Gpg.trust(args.keyfile)