diff --git a/tools/workload-dependencies/Program.cs b/tools/workload-dependencies/Program.cs index 8b9a9712f10..dfbccb3ee1e 100644 --- a/tools/workload-dependencies/Program.cs +++ b/tools/workload-dependencies/Program.cs @@ -165,7 +165,7 @@ JProperty CreateJdkProperty (XDocument doc) var v = new Version (JdkVersion ?? "17.0"); var start = new Version (v.Major, v.Minor); var end = GetMaxJdkVersion (v); - var latestRevision = JdkVersion ?? GetLatestRevision (doc, "jdk"); + var latestRevision = GetLatestRevision (doc, "jdk", start, new Version (end)); var contents = new JObject ( new JProperty ("version", $"[{start},{end})")); if (!string.IsNullOrEmpty (latestRevision)) @@ -196,15 +196,19 @@ IEnumerable GetSupportedElements (XDocument doc, string element) ; } -IEnumerable<(XElement Element, string Revision)> GetByRevisions (XDocument doc, string element) +IEnumerable<(XElement Element, string Revision, Version Version)> GetByRevisions (XDocument doc, string element) { return GetSupportedElements (doc, element) .OrderByRevision (); } -string? GetLatestRevision (XDocument doc, string element) +string? GetLatestRevision (XDocument doc, string element, Version minimumVersion, Version maximumVersion) { return GetByRevisions (doc, element) + .Where (item => { + var version = item.Version; + return version >= minimumVersion && version < maximumVersion; + }) .LastOrDefault () .Revision; } @@ -375,12 +379,12 @@ public static string ReqAttr (this XElement e, string attribute) return v; } - public static IEnumerable<(XElement Element, string Revision)> OrderByRevision (this IEnumerable elements) + public static IEnumerable<(XElement Element, string Revision, Version Version)> OrderByRevision (this IEnumerable elements) { return from e in elements let revision = e.ReqAttr ("revision") let version = new Version (revision.Contains (".") ? revision : revision + ".0") orderby version - select (e, revision); + select (e, revision, version); } }