From ee5178160e405ca069e4556f9cd4321a5096f43c Mon Sep 17 00:00:00 2001 From: Nate McMaster Date: Thu, 9 Nov 2017 14:08:13 -0800 Subject: [PATCH] Account for .Sources packages when computing the repo graph --- build/repo.targets | 2 +- build/tasks/AnalyzeBuildGraph.cs | 26 ++++++++++++++++++++++---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/build/repo.targets b/build/repo.targets index 3860311efd..56bf713359 100644 --- a/build/repo.targets +++ b/build/repo.targets @@ -179,7 +179,7 @@ SourceName="Artifacts" Condition="%(Repository.Build)" SourceUri="$(BuildDir)" /> - + a.RepoName.Equals(repoName, StringComparison.OrdinalIgnoreCase)).ToList(); + var packages = artifacts + .Where(a => a.RepoName.Equals(repoName, StringComparison.OrdinalIgnoreCase)) + .ToDictionary(p => p.PackageInfo.Id, p => p, StringComparer.OrdinalIgnoreCase); foreach (var proj in s.Projects) { - var projectGroup = packages.Any(p => p.PackageInfo.Id == proj.PackageId) - ? repo.Projects - : repo.SupportProjects; + IList projectGroup; + if (packages.ContainsKey(proj.PackageId)) + { + // this project is a package producer and consumer + packages.Remove(proj.PackageId); + projectGroup = repo.Projects; + } + else + { + // this project is a package consumer + projectGroup = repo.SupportProjects; + } + projectGroup.Add(new Project(proj.PackageId) { @@ -211,6 +223,12 @@ namespace RepoTasks }); } + foreach (var packageId in packages.Keys) + { + // these packages are produced from something besides a csproj. e.g. .Sources packages + repo.Projects.Add(new Project(packageId) { Repository = repo }); + } + return repo; }).ToList();