def fetch_channel(
v: Verification, channel: ChannelSearchPath) -> Tuple[str, str]:
- v.status('Fetching channel')
+ v.status('Fetching channel from %s' % channel.channel_url)
request = urllib.request.urlopen(channel.channel_url, timeout=10)
channel_html = request.read().decode()
forwarded_url = request.geturl()
return Digest16(hasher.hexdigest())
-_experimental_flag_needed = None
+@functools.lru_cache
+def _experimental_flag_needed(v: Verification) -> bool:
+ v.status('Checking Nix version')
+ process = subprocess.run(['nix', '--help'], stdout=subprocess.PIPE)
+ v.result(process.returncode == 0)
+ return b'--experimental-features' in process.stdout
def _nix_command(v: Verification) -> List[str]:
- global _experimental_flag_needed
- if _experimental_flag_needed is None:
- v.status('Checking Nix version')
- process = subprocess.run(['nix', '--help'], stdout=subprocess.PIPE)
- v.result(process.returncode == 0)
- _experimental_flag_needed = b'--experimental-features' in process.stdout
return ['nix', '--experimental-features',
- 'nix-command'] if _experimental_flag_needed else ['nix']
+ 'nix-command'] if _experimental_flag_needed(v) else ['nix']
def to_Digest16(v: Verification, digest32: Digest32) -> Digest16:
assert empty == ''
v.check("Verifying nix-prefetch-url's digest",
to_Digest16(v, Digest32(prefetch_digest)) == digest)
- v.status("Verifying file digest")
+ v.status("Verifying digest of %s" % path)
file_digest = digest_file(path)
v.result(file_digest == digest)
return path # type: ignore # (for old mypy)