X-Git-Url: http://git.scottworley.com/pinch/blobdiff_plain/b2bb38e6b9172072458ec1c8aed3e0b4c5f54a43..3b2117a3ff0c74c8cf3dc27bbe9a3105428d03d5:/pinch.py diff --git a/pinch.py b/pinch.py index 130f69a..f95323f 100644 --- a/pinch.py +++ b/pinch.py @@ -644,6 +644,11 @@ def pinCommand(args: argparse.Namespace) -> None: def updateCommand(args: argparse.Namespace) -> None: v = Verification() exprs: Dict[str, str] = {} + profile_manifest = os.path.join(args.profile, "manifest.nix") + search_paths: List[str] = [ + "-I", "pinch_profile=" + args.profile, + "-I", "pinch_profile_manifest=" + os.readlink(profile_manifest) + ] if os.path.exists(profile_manifest) else [] config = { section: read_pinned_config_section(section, conf) for section, conf in read_config_files( @@ -651,10 +656,12 @@ def updateCommand(args: argparse.Namespace) -> None: alias, nonalias = partition_dict( lambda k, v: isinstance(v[0], AliasSearchPath), config) - for section, (sp, pin) in nonalias.items(): + for section, (sp, pin) in sorted(nonalias.items()): assert not isinstance(sp, AliasSearchPath) # mypy can't see through assert not isinstance(pin, AliasPin) # partition_dict() tarball = sp.fetch(v, pin) + search_paths.extend(["-I", "pinch_tarball_for_%s=%s" % + (pin.release_name, tarball)]) exprs[section] = ( 'f: f { name = "%s"; channelName = "%%s"; src = builtins.storePath "%s"; }' % (pin.release_name, tarball)) @@ -671,7 +678,8 @@ def updateCommand(args: argparse.Namespace) -> None: '--file', '', '--install', - '--from-expression'] + [exprs[name] % name for name in sorted(exprs.keys())] + ] + search_paths + ['--from-expression'] + [ + exprs[name] % name for name in sorted(exprs.keys())] if args.dry_run: print(' '.join(map(shlex.quote, command))) else: