Add provenance specific to git ref installs

This commit is contained in:
psakiev 2024-04-26 09:04:40 -06:00
parent 9cd7fd1c98
commit c8ab35edfa

View File

@ -114,7 +114,9 @@ class Provenance(enum.IntEnum):
# A 'package.py' file
PACKAGE_PY = enum.auto()
# An installed spec
INSTALLED = enum.auto()
INSTALLED_STANDARD_VERSION = enum.auto()
# lower provenance for installed git refs so concretizer prefers StandardVersion installs
INSTALLED_GIT_VERSION = enum.auto()
# A runtime injected from another package (e.g. a compiler)
RUNTIME = enum.auto()
@ -1999,10 +2001,10 @@ def define_ad_hoc_versions_from_specs(
# best possible, so they're guaranteed to be used preferentially.
version = s.versions.concrete
if version is None or (not isinstance(version, vn.GitVersion) and any(
v == version
for v in self.possible_versions[s.name]
)):
if version is None or (
not isinstance(version, vn.GitVersion)
and any((v == version) for v in self.possible_versions[s.name])
):
continue
if require_checksum and not _is_checksummed_git_version(version):
@ -2316,9 +2318,20 @@ def concrete_specs(self):
# - Add OS to possible OS's
for dep in spec.traverse():
self.possible_versions[dep.name].add(dep.version)
self.declared_versions[dep.name].append(
DeclaredVersion(version=dep.version, idx=0, origin=Provenance.INSTALLED)
)
if isinstance(dep.version, vn.GitVersion):
self.declared_versions[dep.name].append(
DeclaredVersion(
version=dep.version, idx=0, origin=Provenance.INSTALLED_GIT_VERSION
)
)
else:
self.declared_versions[dep.name].append(
DeclaredVersion(
version=dep.version,
idx=0,
origin=Provenance.INSTALLED_STANDARD_VERSION,
)
)
self.possible_oses.add(dep.os)
def define_concrete_input_specs(self, specs, possible):