Revert "Making CompileStage batch over the different stages to avoid msbuild caching of targets."

This reverts commit e100b950d2.
This commit is contained in:
Livar Cunha 2016-06-29 17:17:32 -07:00
parent e100b950d2
commit f661ec4a8b
3 changed files with 87 additions and 64 deletions

View file

@ -8,7 +8,7 @@
<PlatformScriptHost Condition=" '$(OS)' != 'Windows_NT' "></PlatformScriptHost> <PlatformScriptHost Condition=" '$(OS)' != 'Windows_NT' "></PlatformScriptHost>
<PlatformScriptExtension Condition=" '$(OS)' == 'Windows_NT' ">.ps1</PlatformScriptExtension> <PlatformScriptExtension Condition=" '$(OS)' == 'Windows_NT' ">.ps1</PlatformScriptExtension>
<PlatformScriptExtension Condition=" '$(OS)' != 'Windows_NT' ">.sh</PlatformScriptExtension> <PlatformScriptExtension Condition=" '$(OS)' != 'Windows_NT' ">.sh</PlatformScriptExtension>
<NoRunArg Condition=" '$(OS)' == 'Windows_NT' ">-NoRun</NoRunArg> <NoRunArg Condition=" '$(OS)' == 'Windows_NT' ">-NoRun</NoRunArg>
<NoRunArg Condition=" '$(OS)' != 'Windows_NT' ">--norun</NoRunArg> <NoRunArg Condition=" '$(OS)' != 'Windows_NT' ">--norun</NoRunArg>
@ -55,6 +55,10 @@
<UsingTask TaskName="TestTargets" AssemblyFile="$(CLIBuildDll)" /> <UsingTask TaskName="TestTargets" AssemblyFile="$(CLIBuildDll)" />
<UsingTask TaskName="PublishTargets" AssemblyFile="$(CLIBuildDll)" /> <UsingTask TaskName="PublishTargets" AssemblyFile="$(CLIBuildDll)" />
<Target DependsOnTargets="BuildDotnetCliBuildFramework" Name="Prepare">
<PrepareTargets />
</Target>
<Target DependsOnTargets="BuildDotnetCliBuildFramework" Name="Test"> <Target DependsOnTargets="BuildDotnetCliBuildFramework" Name="Test">
<TestTargets /> <TestTargets />
</Target> </Target>

View file

@ -9,55 +9,47 @@
<UsingTask TaskName="CrossgenDirectory" AssemblyFile="$(CLIBuildDll)" /> <UsingTask TaskName="CrossgenDirectory" AssemblyFile="$(CLIBuildDll)" />
<Target Name="Compile" DependsOnTargets="BuildDotnetCliBuildFramework; <Target Name="Compile" DependsOnTargets="BuildDotnetCliBuildFramework;
Init; CompileStage1;
SetupStage; CompileStage2">
CompileStage;
BuildProjectsForNuGetPackages;
GenerateNuGetPackagesArchive">
</Target> </Target>
<Target Name="SetupStage">
<ItemGroup>
<CompileStageInputs Include="$(RepoRoot)/src/**/*.cs" Exclude="$(RepoRoot)/src/**/obj/**/*.cs" />
<CompileStageInputs Include="$(RepoRoot)/src/**/project.json;$(RepoRoot)/src/**/project.lock.json" />
<Stage Include="Stage1"> <Target Name="CompileStage1"
<Inputs>@(CompileStageInputs)</Inputs> DependsOnTargets="BuildDotnetCliBuildFramework;
<StageDirectory>$(Stage1Directory)</StageDirectory> Init;
<StageSymbolsDirectory>$(Stage1SymbolsDirectory)</StageSymbolsDirectory> SetupStage1;
<DotnetExe>$(Stage0Path)/dotnet.exe</DotnetExe> CompileStage;
</Stage> AfterCompileStage">
<Stage Include="Stage2"> </Target>
<Inputs>@(CompileStageInputs)</Inputs>
<StageDirectory>$(Stage2Directory)</StageDirectory> <Target Name="SetupStage1">
<StageSymbolsDirectory>$(Stage2SymbolsDirectory)</StageSymbolsDirectory> <PropertyGroup>
<DotnetExe>$(DotnetStage1)</DotnetExe> <StageDirectory>$(Stage1Directory)</StageDirectory>
</Stage> <StageSymbolsDirectory>$(Stage1SymbolsDirectory)</StageSymbolsDirectory>
</ItemGroup> <DotnetExe>$(Stage0Path)/dotnet.exe</DotnetExe>
</PropertyGroup>
</Target> </Target>
<Target Name="CompileStage" <Target Name="CompileStage2"
Inputs="%(Stage.Identity);%(Stage.Inputs)" DependsOnTargets="BuildDotnetCliBuildFramework;
Outputs="%(StageDirectory)/sdk/$(NugetVersion)/dotnet.dll"> Init;
SetupStage2;
CompileStage;
AfterCompileStage;
BuildProjectsForNuGetPackages;
GenerateNuGetPackagesArchive">
</Target>
<Target Name="SetupStage2">
<PropertyGroup> <PropertyGroup>
<SrcDirectory>$(RepoRoot)/src</SrcDirectory> <StageDirectory>$(Stage2Directory)</StageDirectory>
<StageSymbolsDirectory>$(Stage2SymbolsDirectory)</StageSymbolsDirectory>
<DotnetExe>$(DotnetStage1)</DotnetExe>
</PropertyGroup>
</Target>
<ExeSuffix Condition=" '$(OSName)' == 'win' ">.exe</ExeSuffix> <Target Name="CompileStage"
<ExeSuffix Condition=" '$(OSName)' != 'win' "></ExeSuffix> DependsOnTargets="BeforeCompileStage">
<PropertyGroup>
<DynamicLibPrefix Condition=" '$(OSName)' == 'win' "></DynamicLibPrefix>
<DynamicLibPrefix Condition=" '$(OSName)' != 'win' ">lib</DynamicLibPrefix>
<DynamicLibSuffix Condition=" '$(OSName)' == 'win' ">.dll</DynamicLibSuffix>
<DynamicLibSuffix Condition=" '$(OSName)' == 'osx' ">.dylib</DynamicLibSuffix>
<DynamicLibSuffix Condition=" '$(DynamicLibSuffix)' == '' ">.so</DynamicLibSuffix>
<DotnetHostBaseName>dotnet$(ExeSuffix)</DotnetHostBaseName>
<DotnetHostFxrBaseName>$(DynamicLibPrefix)hostfxr$(DynamicLibSuffix)</DotnetHostFxrBaseName>
<HostPolicyBaseName>$(DynamicLibPrefix)hostpolicy$(DynamicLibSuffix)</HostPolicyBaseName>
<StageDirectory>%(Stage.StageDirectory)</StageDirectory>
<StageSymbolsDirectory>%(Stage.StageSymbolsDirectory)</StageSymbolsDirectory>
<SdkOutputDirectory>$(StageDirectory)/sdk/$(NugetVersion)</SdkOutputDirectory> <SdkOutputDirectory>$(StageDirectory)/sdk/$(NugetVersion)</SdkOutputDirectory>
<BinaryToCorehostifyRelDir>runtimes/any/native</BinaryToCorehostifyRelDir> <BinaryToCorehostifyRelDir>runtimes/any/native</BinaryToCorehostifyRelDir>
<BinaryToCorehostifyOutDir>$(SdkOutputDirectory)/$(BinaryToCorehostifyRelDir)</BinaryToCorehostifyOutDir> <BinaryToCorehostifyOutDir>$(SdkOutputDirectory)/$(BinaryToCorehostifyRelDir)</BinaryToCorehostifyOutDir>
@ -65,10 +57,6 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<BinObj Include="$(SrcDirectory)/**/bin/**/*" />
<BinObj Include="$(SrcDirectory)/**/obj/**/*" />
<FilesToRemoveFromStageDirectory Include="$(StageDirectory)/**/*" />
<SharedFramework Include="$(IntermediateDirectory)/sharedFrameworkPublish/**/*.*" /> <SharedFramework Include="$(IntermediateDirectory)/sharedFrameworkPublish/**/*.*" />
<BinariesToRemove Include="csc" /> <BinariesToRemove Include="csc" />
@ -81,22 +69,12 @@
<MSBuildTargetsToCopy Include="$(MSBuildTargetsDirectory)/**/*.tasks" /> <MSBuildTargetsToCopy Include="$(MSBuildTargetsDirectory)/**/*.tasks" />
</ItemGroup> </ItemGroup>
<SharedFrameworkNameVersionPath RootOutputDirectory="$(StageDirectory)">
<Output TaskParameter="OutputSharedFrameworkNameVersionPath" PropertyName="SharedFrameworkNameVersionPath" />
</SharedFrameworkNameVersionPath>
<Delete Files="@(BinObj)" />
<Delete Files="@(FilesToRemoveFromStageDirectory)" />
<RemoveDir Directories="$(StageDirectory)" />
<MakeDir Directories="$(StageDirectory)"/>
<!-- CopySharedFramework --> <!-- CopySharedFramework -->
<Copy SourceFiles="@(SharedFramework)" <Copy SourceFiles="@(SharedFramework)"
DestinationFiles="@(SharedFramework->'$(StageDirectory)\%(RecursiveDir)%(Filename)%(Extension)')" /> DestinationFiles="@(SharedFramework->'$(StageDirectory)\%(RecursiveDir)%(Filename)%(Extension)')" />
<!-- Publish DotNet --> <!-- Publish DotNet -->
<Exec Command="%(Stage.DotnetExe) publish <Exec Command="$(DotnetExe) publish
--native-subdirectory --native-subdirectory
--output $(SdkOutputDirectory) --output $(SdkOutputDirectory)
--configuration $(Configuration) --configuration $(Configuration)
@ -106,7 +84,7 @@
<!-- Corehostify Binaries --> <!-- Corehostify Binaries -->
<FixModeFlags Dir="$(SdkOutputDirectory)" /> <FixModeFlags Dir="$(SdkOutputDirectory)" />
<Exec Command="%(Stage.DotnetExe) publish <Exec Command="$(DotnetExe) publish
--output $(SdkOutputDirectory) --output $(SdkOutputDirectory)
--framework netcoreapp1.0 --framework netcoreapp1.0
$(SrcDirectory)/compilers" /> $(SrcDirectory)/compilers" />
@ -160,13 +138,46 @@
<Copy SourceFiles="@(MSBuildTargetsToCopy)" <Copy SourceFiles="@(MSBuildTargetsToCopy)"
DestinationFiles="@(MSBuildTargetsToCopy->'$(SdkOutputDirectory)\%(RecursiveDir)%(Filename)%(Extension)')" /> DestinationFiles="@(MSBuildTargetsToCopy->'$(SdkOutputDirectory)\%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<Target Name="BeforeCompileStage">
<PropertyGroup>
<SrcDirectory>$(RepoRoot)/src</SrcDirectory>
<ExeSuffix Condition=" '$(OSName)' == 'win' ">.exe</ExeSuffix>
<ExeSuffix Condition=" '$(OSName)' != 'win' "></ExeSuffix>
<DynamicLibPrefix Condition=" '$(OSName)' == 'win' "></DynamicLibPrefix>
<DynamicLibPrefix Condition=" '$(OSName)' != 'win' ">lib</DynamicLibPrefix>
<DynamicLibSuffix Condition=" '$(OSName)' == 'win' ">.dll</DynamicLibSuffix>
<DynamicLibSuffix Condition=" '$(OSName)' == 'osx' ">.dylib</DynamicLibSuffix>
<DynamicLibSuffix Condition=" '$(DynamicLibSuffix)' == '' ">.so</DynamicLibSuffix>
<DotnetHostBaseName>dotnet$(ExeSuffix)</DotnetHostBaseName>
<DotnetHostFxrBaseName>$(DynamicLibPrefix)hostfxr$(DynamicLibSuffix)</DotnetHostFxrBaseName>
<HostPolicyBaseName>$(DynamicLibPrefix)hostpolicy$(DynamicLibSuffix)</HostPolicyBaseName>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<FilesToClean Include="$(StageDirectory)/sdk/**/vbc.exe" /> <BinObj Include="$(SrcDirectory)/**/bin/**/*" />
</ItemGroup> <BinObj Include="$(SrcDirectory)/**/obj/**/*" />
<FilesToRemoveFromStageDirectory Include="$(StageDirectory)/**/*" />
</ItemGroup>
<Delete Files="@(FilesToClean)" /> <SharedFrameworkNameVersionPath RootOutputDirectory="$(StageDirectory)">
<Output TaskParameter="OutputSharedFrameworkNameVersionPath" PropertyName="SharedFrameworkNameVersionPath" />
</SharedFrameworkNameVersionPath>
<Delete Files="@(BinObj)" />
<Delete Files="@(FilesToRemoveFromStageDirectory)" />
<RemoveDir Directories="$(StageDirectory)" />
<MakeDir Directories="$(StageDirectory)"/>
</Target>
<Target Name="AfterCompileStage"
DependsOnTargets="RemoveUnnecessaryFiles">
<ItemGroup> <ItemGroup>
<FilesToCopy Include="$(StageDirectory)/**/*.*" /> <FilesToCopy Include="$(StageDirectory)/**/*.*" />
<PdbsToClean Include="$(StageDirectory)/sdk/**/*.pdb" /> <PdbsToClean Include="$(StageDirectory)/sdk/**/*.pdb" />
@ -177,4 +188,12 @@
<Delete Files="@(PdbsToClean)" /> <Delete Files="@(PdbsToClean)" />
</Target> </Target>
<Target Name="RemoveUnnecessaryFiles">
<ItemGroup>
<FilesToClean Include="$(StageDirectory)/sdk/**/vbc.exe" />
</ItemGroup>
<Delete Files="@(FilesToClean)" />
</Target>
</Project> </Project>

View file

@ -25,7 +25,7 @@
<Stage0Path Condition=" '$(OSName)' == 'osx' ">$(RepoRoot)/.dotnet_stage0/Darwin</Stage0Path> <Stage0Path Condition=" '$(OSName)' == 'osx' ">$(RepoRoot)/.dotnet_stage0/Darwin</Stage0Path>
<Stage0Path Condition=" '$(Stage0Path)' == '' ">$(RepoRoot)/.dotnet_stage0/Linux</Stage0Path> <Stage0Path Condition=" '$(Stage0Path)' == '' ">$(RepoRoot)/.dotnet_stage0/Linux</Stage0Path>
<DotNetPath>$(Stage0Path)</DotNetPath> <DotNetPath>$(Stage0Path)</DotNetPath>
<BaseOutputDirectory>$(RepoRoot)/artifacts/$(Rid)</BaseOutputDirectory> <BaseOutputDirectory>$(RepoRoot)/artifacts/$(Rid)</BaseOutputDirectory>
<ToolsOutputDirectory>$(BaseOutputDirectory)/tools</ToolsOutputDirectory> <ToolsOutputDirectory>$(BaseOutputDirectory)/tools</ToolsOutputDirectory>
<Stage1Directory>$(BaseOutputDirectory)/stage1</Stage1Directory> <Stage1Directory>$(BaseOutputDirectory)/stage1</Stage1Directory>