Hard-code the repo-to-repo build order on macOS and Linux (#1028)

Workaround for #1014
This commit is contained in:
Nate McMaster 2018-04-02 15:31:45 -07:00 committed by GitHub
parent 13b07bf614
commit cad2b01dae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 62 additions and 8 deletions

54
build/buildorder.props Normal file
View File

@ -0,0 +1,54 @@
<Project>
<ItemGroup>
<RepositoryBuildOrder Include="Common" Order="1" />
<RepositoryBuildOrder Include="Microsoft.Data.Sqlite" Order="1" />
<RepositoryBuildOrder Include="Testing" Order="1" />
<RepositoryBuildOrder Include="DependencyInjection" Order="2" />
<RepositoryBuildOrder Include="FileSystem" Order="2" />
<RepositoryBuildOrder Include="EventNotification" Order="2" />
<RepositoryBuildOrder Include="JsonPatch" Order="2" />
<RepositoryBuildOrder Include="Configuration" Order="3" />
<RepositoryBuildOrder Include="Options" Order="4" />
<RepositoryBuildOrder Include="DotNetTools" Order="4" />
<RepositoryBuildOrder Include="Caching" Order="5" />
<RepositoryBuildOrder Include="HtmlAbstractions" Order="5" />
<RepositoryBuildOrder Include="Logging" Order="5" />
<RepositoryBuildOrder Include="Razor" Order="6" />
<RepositoryBuildOrder Include="HttpAbstractions" Order="6" />
<RepositoryBuildOrder Include="HttpClientFactory" Order="6" />
<RepositoryBuildOrder Include="Hosting" Order="7" />
<RepositoryBuildOrder Include="DataProtection" Order="8" />
<RepositoryBuildOrder Include="KestrelHttpServer" Order="8" />
<RepositoryBuildOrder Include="EntityFrameworkCore" Order="8" />
<RepositoryBuildOrder Include="HttpSysServer" Order="8" />
<RepositoryBuildOrder Include="BrowserLink" Order="8" />
<RepositoryBuildOrder Include="BasicMiddleware" Order="9" />
<RepositoryBuildOrder Include="Antiforgery" Order="9" />
<RepositoryBuildOrder Include="IISIntegration" Order="10" />
<RepositoryBuildOrder Include="CORS" Order="11" />
<RepositoryBuildOrder Include="StaticFiles" Order="11" />
<RepositoryBuildOrder Include="Routing" Order="11" />
<RepositoryBuildOrder Include="ResponseCaching" Order="11" />
<RepositoryBuildOrder Include="Session" Order="11" />
<RepositoryBuildOrder Include="ServerTests" Order="11" />
<RepositoryBuildOrder Include="Diagnostics" Order="12" />
<RepositoryBuildOrder Include="Localization" Order="12" />
<RepositoryBuildOrder Include="WebSockets" Order="13" />
<RepositoryBuildOrder Include="Security" Order="13" />
<RepositoryBuildOrder Include="MetaPackages" Order="13" />
<RepositoryBuildOrder Include="Mvc" Order="14" />
<RepositoryBuildOrder Include="Proxy" Order="14" />
<RepositoryBuildOrder Include="AADIntegration" Order="15" />
<RepositoryBuildOrder Include="Identity" Order="15" />
<RepositoryBuildOrder Include="JavaScriptServices" Order="15" />
<RepositoryBuildOrder Include="MvcPrecompilation" Order="15" />
<RepositoryBuildOrder Include="WebHooks" Order="15" />
<RepositoryBuildOrder Include="Scaffolding" Order="15" />
<RepositoryBuildOrder Include="AzureIntegration" Order="15" />
<RepositoryBuildOrder Include="MusicStore" Order="16" />
<RepositoryBuildOrder Include="SignalR" Order="16" />
<RepositoryBuildOrder Include="AuthSamples" Order="16" />
<RepositoryBuildOrder Update="@(RepositoryBuildOrder)" RootPath="$(SubmoduleRoot)%(Identity)" />
</ItemGroup>
</Project>

View File

@ -7,6 +7,9 @@
<Import Project="SharedFxInstaller.targets" />
<Import Project="Publish.targets" />
<!-- Workaround for #1014 -->
<Import Project="buildorder.props" Condition="$([MSBuild]::IsOSUnixLike())" />
<PropertyGroup>
<GeneratedPackageVersionPropsPath>$(IntermediateDir)dependencies.g.props</GeneratedPackageVersionPropsPath>
<GeneratedRestoreSourcesPropsPath>$(IntermediateDir)sources.g.props</GeneratedRestoreSourcesPropsPath>
@ -154,7 +157,8 @@
<Error Text="Undeclared package artifacts. Add these to artifacts.props:%0A - @(_UndeclaredPackageArtifact, '%0A - ')"
Condition=" @(_UndeclaredPackageArtifact->Count()) != 0 " />
<RepoTasks.AnalyzeBuildGraph
<!-- Skipped to workaround #1014. The order is hardcoded in buildorder.props -->
<RepoTasks.AnalyzeBuildGraph Condition=" ! $([MSBuild]::IsOSUnixLike())"
Solutions="@(Solution)"
Artifacts="@(ArtifactInfo)"
Dependencies="@(ExternalDependency)"
@ -162,6 +166,9 @@
Properties="Configuration=$(Configuration);BuildNumber=$(BuildNumber);DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath);DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath)">
<Output TaskParameter="RepositoryBuildOrder" ItemName="RepositoryBuildOrder" />
</RepoTasks.AnalyzeBuildGraph>
<Message Text="Repository build order:" Importance="high" />
<Message Text="%(RepositoryBuildOrder.Order). @(RepositoryBuildOrder, ', ')" Importance="high" />
</Target>
<Target Name="VerifyPackageArtifactConfig">

View File

@ -247,13 +247,6 @@ namespace RepoTasks
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)}");
}
return repositoriesWithOrder
.OrderBy(r => r.order)
.Select(r => r.repository)