diff --git a/build/dependencies.props b/build/dependencies.props index 85681bb4a0..11afdc2485 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -2,85 +2,30 @@ 4.5.0-preview2-26403-05 - 2.1.0-preview2-26403-06 2.1.0-preview2-26403-06 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-05 4.5.0-preview2-26403-05 4.7.0-preview4.5065 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 - 2.1.0-preview2-26403-06 4.5.0-preview2-26403-05 - 4.5.0-preview2-26403-05 1.5.0-preview2-26403-05 4.5.0-preview2-26403-05 - 1.2.0-preview2-26403-05 - 1.2.0-preview2-26403-05 - 1.2.0-preview2-26403-05 - 1.2.0-preview2-26403-05 - 1.2.0-preview2-26403-05 - 1.2.0-preview2-26403-05 - 4.5.0-preview2-26403-05 4.5.0-preview2-26403-05 4.5.0-preview2-26403-05 4.5.0-preview2-26403-05 - 4.5.0-preview2-26403-05 - 4.5.0-preview2-26403-05 - 4.5.0-preview2-26403-05 4.5.0-preview2-26403-05 - 4.5.0-preview2-26403-05 - 4.5.0-preview2-26403-05 4.5.0-preview2-26403-05 4.5.0-preview2-26403-05 4.5.0-preview2-26403-05 4.5.0-preview2-26403-05 - 4.5.0-preview2-26403-05 1.6.0-preview2-26403-05 - 4.5.0-preview2-26403-05 4.5.0-preview2-26403-05 - 4.5.0-preview2-26403-05 4.5.0-preview2-26403-05 - 4.5.0-preview2-26403-05 - 4.5.0-preview2-26403-05 4.5.0-preview2-26403-05 4.5.0-preview2-26403-05 4.5.0-preview2-26403-05 4.5.0-preview2-26403-05 - 4.5.0-preview2-26403-05 4.5.0-preview2-26403-05 - 4.5.0-preview2-26403-05 4.5.0-preview2-26403-05 4.9.0-preview2-26403-05 4.5.0-preview2-26403-05 @@ -96,20 +41,17 @@ $(KoreBuildVersion) $(KoreBuildVersion) - $(KoreBuildVersion) 0.9.9 0.10.13 - 2.4.337 4.2.1 2.1.0-prerelease-02430-04 2.0.0 8.7.0 4.2.1 - 1.0.5 3.1.0 1.10.0 2.1.1 @@ -127,13 +69,6 @@ 2.6.1 2.6.1 2.6.1 - 2.6.1 - 2.6.1 - 2.6.1 - 2.6.1 - 2.6.1 - 2.6.1 - 2.6.1 1.7.0 0.2.0-beta-62606-02 1.0.0-rc3-003121 @@ -146,15 +81,12 @@ 2.0.0 1.0.1 15.6.1 - 3.0.1 3.0.1 3.0.1 3.0.1 15.0.26606 - 15.6.161-preview 15.6.161-preview 15.6.161-preview - 2.6.1 7.10.6070 15.3.224 2.0.6142705 @@ -166,11 +98,7 @@ 8.0.50727 9.0.30729 7.10.6071 - 15.6.161-preview - 15.6.161-preview 15.6.161-preview - 15.6.161-preview - 7.0.0 1.4.0 1.3.8 1.0.1 @@ -194,7 +122,6 @@ 1.0.0 5.2.0 3.1.1 - 6.1.7601.17515 4.3.2 3.1.1 4.3.0 @@ -205,11 +132,7 @@ 2.7.0-beta3-62512-06 2.7.0-beta3-62512-06 2.7.0-beta3-62512-06 - 2.7.0-beta3-62512-06 - 2.7.0-beta3-62512-06 2.7.0-beta3-62512-06 - 2.7.0-beta3-62512-06 - 2.7.0-beta3-62512-06 2.7.0-beta3-62512-06 2.7.0-beta3-62512-06 2.7.0-beta3-62512-06 diff --git a/build/external-dependencies.props b/build/external-dependencies.props index 4d86192b53..1f0d434a39 100644 --- a/build/external-dependencies.props +++ b/build/external-dependencies.props @@ -19,10 +19,8 @@ - - @@ -30,7 +28,6 @@ - @@ -42,8 +39,6 @@ - - @@ -51,26 +46,15 @@ - - - - - - - - - - - @@ -82,20 +66,13 @@ - - - - - - - @@ -109,11 +86,7 @@ - - - - @@ -137,36 +110,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -176,51 +119,30 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/build/tasks/AnalyzeBuildGraph.cs b/build/tasks/AnalyzeBuildGraph.cs index 076706eef0..60baca737b 100644 --- a/build/tasks/AnalyzeBuildGraph.cs +++ b/build/tasks/AnalyzeBuildGraph.cs @@ -93,15 +93,19 @@ namespace RepoTasks { // ensure versions cascade var buildPackageMap = packages.ToDictionary(p => p.PackageInfo.Id, p => p, StringComparer.OrdinalIgnoreCase); - var dependencyMap = new Dictionary>(StringComparer.OrdinalIgnoreCase); + var dependencyMap = new Dictionary>(StringComparer.OrdinalIgnoreCase); foreach (var dep in Dependencies) { if (!dependencyMap.TryGetValue(dep.ItemSpec, out var versions)) { - dependencyMap[dep.ItemSpec] = versions = new List(); + dependencyMap[dep.ItemSpec] = versions = new List(); } - versions.Add(dep.GetMetadata("Version")); + versions.Add(new ExternalDependency + { + PackageId = dep.ItemSpec, + Version = dep.GetMetadata("Version"), + }); } var inconsistentVersions = new List(); @@ -115,15 +119,18 @@ namespace RepoTasks { if (!buildPackageMap.TryGetValue(dependency.Key, out var package)) { + var idx = -1; // This dependency is not one of the packages that will be compiled by this run of Universe. if (!dependencyMap.TryGetValue(dependency.Key, out var externalVersions) - || !externalVersions.Contains(dependency.Value.Version)) + || (idx = externalVersions.FindIndex(0, externalVersions.Count, i => i.Version == dependency.Value.Version)) < 0) { Log.LogKoreBuildError( project.FullPath, KoreBuildErrors.UndefinedExternalDependency, message: $"Undefined external dependency on {dependency.Key}/{dependency.Value.Version}"); } + + externalVersions[idx].IsReferenced = true; continue; } @@ -174,6 +181,15 @@ namespace RepoTasks Log.LogError("Package versions are inconsistent. See build log for details."); } + foreach (var versions in dependencyMap.Values) + { + foreach (var item in versions.Where(i => !i.IsReferenced)) + { + // See https://github.com/aspnet/Universe/wiki/Build-warning-and-error-codes#potentially-unused-external-dependency for details + Log.LogMessage(MessageImportance.Normal, $"Potentially unused external dependency: {item.PackageId}/{item.Version}. See https://github.com/aspnet/Universe/wiki/Build-warning-and-error-codes for details."); + } + } + foreach (var repo in reposThatShouldPatch) { Log.LogError($"{repo} should not be a 'ShippedRepository'. Version changes in other repositories mean it should be patched to perserve cascading version upgrades."); @@ -211,13 +227,13 @@ namespace RepoTasks projectGroup.Add(new Project(proj.PackageId) - { - Repository = repo, - PackageReferences = new HashSet(proj + { + Repository = repo, + PackageReferences = new HashSet(proj .Frameworks .SelectMany(f => f.Dependencies.Keys) .Concat(proj.Tools.Select(t => t.Id)), StringComparer.OrdinalIgnoreCase), - }); + }); } foreach (var packageId in packages.Keys) diff --git a/build/tasks/BuildGraph/ExternalDependency.cs b/build/tasks/BuildGraph/ExternalDependency.cs new file mode 100644 index 0000000000..5bdc67d027 --- /dev/null +++ b/build/tasks/BuildGraph/ExternalDependency.cs @@ -0,0 +1,12 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace RepoTools.BuildGraph +{ + internal class ExternalDependency + { + public string PackageId { get; set; } + public string Version { get; set; } + public bool IsReferenced { get; set; } + } +}