From 4fa08287a24f57cc39df5ce95b593b0518351ba2 Mon Sep 17 00:00:00 2001 From: Nate McMaster Date: Mon, 18 Sep 2017 12:39:27 -0700 Subject: [PATCH] Remove dead code and ensure source code is cloned when building on CI --- build/RepositoryBuild.targets | 1 + build/repo.targets | 5 +- .../BuildGraph/DependencyGraphSpecProvider.cs | 30 ------ build/tasks/BuildGraph/Repository.cs | 101 ------------------ build/tasks/CalculateBuildGraph.cs | 71 ------------ build/tasks/RepoTasks.tasks | 2 - 6 files changed, 4 insertions(+), 206 deletions(-) delete mode 100644 build/tasks/BuildGraph/DependencyGraphSpecProvider.cs delete mode 100644 build/tasks/CalculateBuildGraph.cs diff --git a/build/RepositoryBuild.targets b/build/RepositoryBuild.targets index 1e1251913c..6d119bbd50 100644 --- a/build/RepositoryBuild.targets +++ b/build/RepositoryBuild.targets @@ -52,6 +52,7 @@ $(RepositoryBuildArguments) /p:BuildNumber=$(BuildNumber) /p:Configuration=$(Configuration) /p:CommitHash=$(CommitHash) + $(RepositoryBuildArguments) /noconsolelogger '/l:RepoTasks.FlowLogger,$(MSBuildThisFileDirectory)tasks\bin\publish\RepoTasks.dll;Summary;FlowId=$(RepositoryToBuild)' $(_RepositoryBuildTargets) $(RepositoryBuildArguments) $(BuildRepositoryRoot)artifacts diff --git a/build/repo.targets b/build/repo.targets index ad9f7d7c7f..ec54c6583b 100644 --- a/build/repo.targets +++ b/build/repo.targets @@ -17,7 +17,7 @@ <_RepositoryBuildTargets Condition="'$(_RepositoryBuildTargets)'=='' AND '$(CompileOnly)'=='true'">/t:Package /t:VerifyPackages <_RepositoryBuildTargets Condition="'$(_RepositoryBuildTargets)'==''">/t:Verify - $(PrepareDependsOn);CleanUniverseArtifacts + $(PrepareDependsOn);CleanArtifacts;CleanUniverseArtifacts $(CleanDependsOn);CleanUniverseArtifacts $(BuildDependsOn);BuildRepositories @@ -25,6 +25,7 @@ + @@ -49,7 +50,7 @@ - + <_CloneRepositories Include="@(Repository);@(ShippedRepository)" /> <_CloneRepository Include="$(MSBuildProjectFullPath)"> diff --git a/build/tasks/BuildGraph/DependencyGraphSpecProvider.cs b/build/tasks/BuildGraph/DependencyGraphSpecProvider.cs deleted file mode 100644 index d16600578a..0000000000 --- a/build/tasks/BuildGraph/DependencyGraphSpecProvider.cs +++ /dev/null @@ -1,30 +0,0 @@ -// 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. - -using System.IO; -using NuGet.ProjectModel; - -namespace RepoTools.BuildGraph -{ - public class DependencyGraphSpecProvider - { - readonly string _packageSpecDirectory; - - public DependencyGraphSpecProvider(string packageSpecDirectory) - { - _packageSpecDirectory = packageSpecDirectory; - } - - public DependencyGraphSpec GetDependencyGraphSpec(string repositoryName, string solutionPath) - { - var outputFile = Path.Combine(_packageSpecDirectory, repositoryName, Path.GetFileName(solutionPath) + ".json"); - - if (!File.Exists(outputFile)) - { - return null; - } - - return DependencyGraphSpec.Load(outputFile); - } - } -} diff --git a/build/tasks/BuildGraph/Repository.cs b/build/tasks/BuildGraph/Repository.cs index 5baaeedc92..e5bdaf414e 100644 --- a/build/tasks/BuildGraph/Repository.cs +++ b/build/tasks/BuildGraph/Repository.cs @@ -4,11 +4,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; -using System.IO; using System.Linq; -using System.Threading.Tasks; -using NuGet.LibraryModel; -using NuGet.ProjectModel; namespace RepoTools.BuildGraph { @@ -30,105 +26,8 @@ namespace RepoTools.BuildGraph public IEnumerable AllProjects => Projects.Concat(SupportProjects); - public static IList ReadAllRepositories(IList repositoryPaths, DependencyGraphSpecProvider provider) - { - var repositories = new Repository[repositoryPaths.Count]; - - Parallel.For(0, repositoryPaths.Count, new ParallelOptions { MaxDegreeOfParallelism = 6 }, i => - { - var repositoryPath = repositoryPaths[i]; - var repositoryName = Path.GetFileName(repositoryPath); - var repository = Read(provider, repositoryName, repositoryPath); - repositories[i] = repository; - }); - - return repositories; - } - public bool Equals(Repository other) => string.Equals(Name, other.Name, StringComparison.OrdinalIgnoreCase); public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Name); - - private static Repository Read(DependencyGraphSpecProvider provider, string name, string repositoryPath) - { - var repository = new Repository(name); - - ReadSharedSourceProjects(Path.Combine(repositoryPath, "shared"), repository, repository.Projects); - - var srcDirectory = Path.GetFullPath(Path.Combine(repositoryPath, "src")) - .Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar); - - var solutionFiles = Directory.EnumerateFiles(repositoryPath, "*.sln"); - foreach (var file in solutionFiles) - { - var spec = provider.GetDependencyGraphSpec(name, file); - if (spec == null) - { - continue; - } - - var projects = spec.Projects.OrderBy(p => p.RestoreMetadata.ProjectStyle == ProjectStyle.PackageReference ? 0 : 1); - foreach (var specProject in projects) - { - var projectPath = Path.GetFullPath(specProject.FilePath) - .Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar); - - var projectGroup = projectPath.StartsWith(srcDirectory, StringComparison.OrdinalIgnoreCase) ? - repository.Projects : - repository.SupportProjects; - - var project = projectGroup.FirstOrDefault(f => f.Path == specProject.FilePath); - if (project == null) - { - project = new Project(specProject.Name) - { - Repository = repository, - Path = specProject.FilePath, - Version = specProject.Version?.ToString(), - }; - - projectGroup.Add(project); - } - - foreach (var package in GetPackageReferences(specProject)) - { - project.PackageReferences.Add(package); - } - } - } - - return repository; - } - - private static List GetPackageReferences(PackageSpec specProject) - { - var allDependencies = Enumerable.Concat( - specProject.Dependencies, - specProject.TargetFrameworks.SelectMany(tfm => tfm.Dependencies)) - .Distinct(); - - var packageReferences = allDependencies - .Where(d => d.LibraryRange.TypeConstraintAllows(LibraryDependencyTarget.Package)) - .Select(d => d.Name) - .ToList(); - return packageReferences; - } - - private static void ReadSharedSourceProjects(string sharedSourceProjectsRoot, Repository repository, IList projects) - { - if (!Directory.Exists(sharedSourceProjectsRoot)) - { - return; - } - - foreach (var directory in new DirectoryInfo(sharedSourceProjectsRoot).EnumerateDirectories()) - { - var project = new Project(directory.Name) - { - Repository = repository, - }; - projects.Add(project); - } - } } } diff --git a/build/tasks/CalculateBuildGraph.cs b/build/tasks/CalculateBuildGraph.cs deleted file mode 100644 index 9475bd99ec..0000000000 --- a/build/tasks/CalculateBuildGraph.cs +++ /dev/null @@ -1,71 +0,0 @@ -// 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. - -using System; -using System.Collections.Generic; -using System.Linq; -using RepoTools.BuildGraph; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; - -namespace RepoTasks -{ - public class CalculateBuildGraph : Task - { - [Required] - public ITaskItem[] Repositories { get; set; } - - /// - /// Directory that contains the package spec files. - /// - [Required] - public string PackageSpecsDirectory { get; set; } - - /// - /// The repository at which to root the graph at - /// - public string StartGraphAt { get; set; } - - [Output] - public ITaskItem[] RepositoriesToBuildInOrder { get; set; } - - public override bool Execute() - { - var graphSpecProvider = new DependencyGraphSpecProvider(PackageSpecsDirectory.Trim()); - - var repositoryPaths = Repositories.Select(r => r.GetMetadata("RepositoryPath")).ToList(); - var repositories = Repository.ReadAllRepositories(repositoryPaths, graphSpecProvider); - - var graph = GraphBuilder.Generate(repositories, StartGraphAt, Log); - var repositoriesWithOrder = new List<(ITaskItem repository, int order)>(); - foreach (var repositoryTaskItem in Repositories) - { - var repositoryName = repositoryTaskItem.ItemSpec; - var graphNodeRepository = graph.FirstOrDefault(g => g.Repository.Name == repositoryName); - if (graphNodeRepository == null) - { - // StartGraphAt was specified so the graph is incomplete. - continue; - } - - var order = TopologicalSort.GetOrder(graphNodeRepository); - repositoryTaskItem.SetMetadata("Order", order.ToString()); - repositoriesWithOrder.Add((repositoryTaskItem, order)); - } - - Log.LogMessage(MessageImportance.High, "Repository build order:"); - foreach (var buildGroup in repositoriesWithOrder.GroupBy(r => r.order).OrderBy(g => g.Key)) - { - var buildGroupRepos = buildGroup.Select(b => b.repository.ItemSpec); - Log.LogMessage(MessageImportance.High, $"{buildGroup.Key.ToString().PadLeft(2, ' ')}: {string.Join(", ", buildGroupRepos)}"); - } - - RepositoriesToBuildInOrder = repositoriesWithOrder - .OrderBy(r => r.order) - .Select(r => r.repository) - .ToArray(); - - return true; - } - } -} diff --git a/build/tasks/RepoTasks.tasks b/build/tasks/RepoTasks.tasks index d6c6ae3488..505742d1e9 100644 --- a/build/tasks/RepoTasks.tasks +++ b/build/tasks/RepoTasks.tasks @@ -3,8 +3,6 @@ <_RepoTaskAssembly>$(MSBuildThisFileDirectory)bin\publish\RepoTasks.dll - -