Support partial-graph builds (#545)
This merges pre-existing packages from previous builds of Universe with the list of packages to be produced in the current run. Pre-existing packages are expected to be in .deps/build/ and are expected to have only one version of a package id in that folder.
This commit is contained in:
parent
89548bb39a
commit
8f263a2085
|
|
@ -32,11 +32,34 @@
|
||||||
<MakeDir Directories="$(BuildDir);$(LineupBuildDir)" />
|
<MakeDir Directories="$(BuildDir);$(LineupBuildDir)" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="GenerateLineup" DependsOnTargets="_GenerateBuildGraph">
|
<Target Name="_ReadArtifactDependencyPackages" Condition=" '$(_DependencyPackagesDirectory)' != '' ">
|
||||||
|
<PropertyGroup>
|
||||||
|
<_DependencyPackagesDirectory>$([MSBuild]::NormalizeDirectory($(_DependencyPackagesDirectory)))</_DependencyPackagesDirectory>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<_DependencyPackageFiles Include="$(_DependencyPackagesDirectory)*.nupkg" Exclude="$(_DependencyPackagesDirectory)*.symbols.nupkg" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<RepoTasks.ReadPackageIdentity PackageFiles="@(_DependencyPackageFiles)">
|
||||||
|
<Output TaskParameter="PackageDefinitions" ItemName="ArtifactDependency" />
|
||||||
|
</RepoTasks.ReadPackageIdentity>
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<Target Name="GenerateLineup" DependsOnTargets="_GenerateBuildGraph;_ReadArtifactDependencyPackages">
|
||||||
|
<ItemGroup>
|
||||||
|
<_Dependency Remove="@(_Dependency)" />
|
||||||
|
|
||||||
|
<!-- order matters. It defines the precendence of what ends up in the lineup. -->
|
||||||
|
<_Dependency Include="@(PackagesProduced)" />
|
||||||
|
<_Dependency Include="@(ExternalDependency)" Exclude="@(_Dependency)" />
|
||||||
|
<_Dependency Include="@(ArtifactDependency)" Exclude="@(_Dependency)" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<PackNuSpec NuSpecPath="$(MSBuildThisFileDirectory)..\lineups\Internal.AspNetCore.Universe.Lineup.nuspec"
|
<PackNuSpec NuSpecPath="$(MSBuildThisFileDirectory)..\lineups\Internal.AspNetCore.Universe.Lineup.nuspec"
|
||||||
DestinationFolder="$(LineupBuildDir)"
|
DestinationFolder="$(LineupBuildDir)"
|
||||||
Properties="version=$(Version)"
|
Properties="version=$(Version)"
|
||||||
Dependencies="@(PackagesProduced);@(ExternalDependency)">
|
Dependencies="@(_Dependency)">
|
||||||
<Output TaskParameter="Packages" ItemName="LineupPackage" />
|
<Output TaskParameter="Packages" ItemName="LineupPackage" />
|
||||||
</PackNuSpec>
|
</PackNuSpec>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
// 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.Linq;
|
||||||
|
using Microsoft.Build.Framework;
|
||||||
|
using Microsoft.Build.Utilities;
|
||||||
|
using NuGet.Packaging;
|
||||||
|
|
||||||
|
namespace RepoTasks
|
||||||
|
{
|
||||||
|
public class ReadPackageIdentity : Task
|
||||||
|
{
|
||||||
|
[Required]
|
||||||
|
public ITaskItem[] PackageFiles { get; set; }
|
||||||
|
|
||||||
|
[Output]
|
||||||
|
public ITaskItem[] PackageDefinitions { get; set; }
|
||||||
|
|
||||||
|
public override bool Execute()
|
||||||
|
{
|
||||||
|
PackageDefinitions = PackageFiles.Select(item =>
|
||||||
|
{
|
||||||
|
using (var package = new PackageArchiveReader(item.ItemSpec))
|
||||||
|
{
|
||||||
|
var identity = package.GetIdentity();
|
||||||
|
var packageItem = new TaskItem(identity.Id);
|
||||||
|
packageItem.SetMetadata("Version", identity.Version.ToString());
|
||||||
|
return packageItem;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -5,4 +5,5 @@
|
||||||
|
|
||||||
<UsingTask TaskName="RepoTasks.CalculateBuildGraph" AssemblyFile="$(_RepoTaskAssembly)" />
|
<UsingTask TaskName="RepoTasks.CalculateBuildGraph" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||||
<UsingTask TaskName="RepoTasks.PinVersions" AssemblyFile="$(_RepoTaskAssembly)" />
|
<UsingTask TaskName="RepoTasks.PinVersions" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||||
|
<UsingTask TaskName="RepoTasks.ReadPackageIdentity" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue