package_base: sort deprecated versions later in preferred_version
(#46025)
This commit is contained in:
parent
aaa7469b92
commit
c47a3ee05b
@ -116,11 +116,10 @@ def preferred_version(pkg: "PackageBase"):
|
|||||||
Arguments:
|
Arguments:
|
||||||
pkg: The package whose versions are to be assessed.
|
pkg: The package whose versions are to be assessed.
|
||||||
"""
|
"""
|
||||||
# Here we sort first on the fact that a version is marked
|
from spack.solver.asp import concretization_version_order
|
||||||
# as preferred in the package, then on the fact that the
|
|
||||||
# version is not develop, then lexicographically
|
version, _ = max(pkg.versions.items(), key=concretization_version_order)
|
||||||
key_fn = lambda v: (pkg.versions[v].get("preferred", False), not v.isdevelop(), v)
|
return version
|
||||||
return max(pkg.versions, key=key_fn)
|
|
||||||
|
|
||||||
|
|
||||||
class WindowsRPath:
|
class WindowsRPath:
|
||||||
|
@ -579,7 +579,7 @@ def _is_checksummed_version(version_info: Tuple[GitOrStandardVersion, dict]):
|
|||||||
return _is_checksummed_git_version(version)
|
return _is_checksummed_git_version(version)
|
||||||
|
|
||||||
|
|
||||||
def _concretization_version_order(version_info: Tuple[GitOrStandardVersion, dict]):
|
def concretization_version_order(version_info: Tuple[GitOrStandardVersion, dict]):
|
||||||
"""Version order key for concretization, where preferred > not preferred,
|
"""Version order key for concretization, where preferred > not preferred,
|
||||||
not deprecated > deprecated, finite > any infinite component; only if all are
|
not deprecated > deprecated, finite > any infinite component; only if all are
|
||||||
the same, do we use default version ordering."""
|
the same, do we use default version ordering."""
|
||||||
@ -2026,7 +2026,7 @@ def define_package_versions_and_validate_preferences(
|
|||||||
# like being a "develop" version or being preferred exist only at a
|
# like being a "develop" version or being preferred exist only at a
|
||||||
# package.py level, sort them in this partial list here
|
# package.py level, sort them in this partial list here
|
||||||
package_py_versions = sorted(
|
package_py_versions = sorted(
|
||||||
pkg_cls.versions.items(), key=_concretization_version_order, reverse=True
|
pkg_cls.versions.items(), key=concretization_version_order, reverse=True
|
||||||
)
|
)
|
||||||
|
|
||||||
if require_checksum and pkg_cls.has_code:
|
if require_checksum and pkg_cls.has_code:
|
||||||
|
@ -2962,7 +2962,7 @@ def test_concretization_version_order():
|
|||||||
result = [
|
result = [
|
||||||
v
|
v
|
||||||
for v, _ in sorted(
|
for v, _ in sorted(
|
||||||
versions, key=spack.solver.asp._concretization_version_order, reverse=True
|
versions, key=spack.solver.asp.concretization_version_order, reverse=True
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
assert result == [
|
assert result == [
|
||||||
|
Loading…
Reference in New Issue
Block a user