From 0843a5d5de8ca2ef89ea0f39f1fae5c341235c62 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 29 Jan 2020 14:49:13 -0800 Subject: [PATCH] Use Arcade-provided IBCMerge support for System.Private.CoreLib. (#2308) * Use Arcade-provided IBCMerge support. * Clean up build.sh as well. * Restore internal tools on Windows and Unix instead of just Windows. * Remove unused item metadata. --- eng/Version.Details.xml | 10 +- eng/Versions.props | 9 +- eng/codeOptimization.targets | 4 +- eng/pipelines/coreclr/templates/build-job.yml | 11 +- eng/restore/optimizationData.targets | 19 +- src/coreclr/build.cmd | 231 +++++---------------- src/coreclr/build.sh | 15 -- src/coreclr/src/.nuget/optdata/ibcmerge.csproj | 36 ---- src/coreclr/src/.nuget/optdata/optdata.csproj | 35 +--- .../System.Private.CoreLib.csproj | 2 + 10 files changed, 84 insertions(+), 288 deletions(-) delete mode 100644 src/coreclr/src/.nuget/optdata/ibcmerge.csproj diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3c4fc0a..d6f0129 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -106,7 +106,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-optimization d0bb63d2ec7060714e63ee4082fac48f2e57f3e2 - + + https://dev.azure.com/dnceng/internal/_git/dotnet-optimization + d0bb63d2ec7060714e63ee4082fac48f2e57f3e2 + + + https://dev.azure.com/dnceng/internal/_git/dotnet-optimization + d0bb63d2ec7060714e63ee4082fac48f2e57f3e2 + + https://dev.azure.com/dnceng/internal/_git/dotnet-optimization d0bb63d2ec7060714e63ee4082fac48f2e57f3e2 diff --git a/eng/Versions.props b/eng/Versions.props index 1964b0f..f8489a8 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -20,7 +20,7 @@ true false - true + true $([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'ibc')) $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'docs')) @@ -96,7 +96,9 @@ 2.2.0-prerelease.19564.1 99.99.99-master-20190716.1 - 99.99.99-master-20190716.1 + 99.99.99-master-20190716.1 + 99.99.99-master-20190716.1 + 99.99.99-master-20190716.1 99.99.99-master-20190716.1 1.0.5 @@ -133,7 +135,8 @@ microsoft.private.intellisense Microsoft.DotNet.XUnitConsoleRunner Microsoft.NETCore.App - optimization.IBC.CoreCLR + optimization.windows_nt-x64.IBC.CoreCLR + optimization.linux-x64.IBC.CoreCLR optimization.PGO.CoreCLR Microsoft.DotNet.Build.Tasks.Feed Microsoft.NETCore.Targets diff --git a/eng/codeOptimization.targets b/eng/codeOptimization.targets index ae1cd7c..e40af28 100644 --- a/eng/codeOptimization.targets +++ b/eng/codeOptimization.targets @@ -10,8 +10,8 @@ Condition="'$(IsEligibleForNgenOptimization)' == 'true'" BeforeTargets="CoreCompile"> - $(IbcOptimizationDataDir)$(LinuxCoreFxOptimizationDataPackage)\ - $(IbcOptimizationDataDir)$(WindowsCoreFxOptimizationDataPackage)\ + $(IbcOptimizationDataDir)Linux\ + $(IbcOptimizationDataDir)Windows\ <_optimizationDataAssembly Include="$(IbcOptimizationDataDir)**\$(TargetFileName)" /> diff --git a/eng/pipelines/coreclr/templates/build-job.yml b/eng/pipelines/coreclr/templates/build-job.yml index 59dc010..9e3eb69 100644 --- a/eng/pipelines/coreclr/templates/build-job.yml +++ b/eng/pipelines/coreclr/templates/build-job.yml @@ -84,16 +84,9 @@ jobs: value: true - name: officialBuildIdArg value: '' - - name: ibcOptimizeArg - value: '' - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}: - name: officialBuildIdArg value: '-officialbuildid=$(Build.BuildNumber)' - - # IBCMerge is currently Windows-only and x86/x64-only - - ${{ if and(eq(parameters.osGroup, 'Windows_NT'), or(eq(parameters.archType, 'x64'), eq(parameters.archType, 'x86'))) }}: - - name: ibcOptimizeArg - value: '-ibcoptimize' - name: enforcePgoArg value: '' # The EnforcePGO script is only supported on Windows and is not supported on arm or arm64. @@ -121,7 +114,7 @@ jobs: # # Since our internal tools are behind an authenticated feed, # # we need to use the DotNetCli AzDO task to restore from the feed using a service connection. # # We can't do this from within the build, so we need to do this as a separate step. - - ${{ if and(and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')), eq(parameters.osGroup, 'Windows_NT')) }}: + - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}: - template: /eng/pipelines/common/restore-internal-tools.yml parameters: installDotnet: true @@ -131,7 +124,7 @@ jobs: - script: $(coreClrRepoRootDir)build$(scriptExt) $(buildConfig) $(archType) $(crossArg) -ci -skipnuget $(clangArg) $(stripSymbolsArg) $(officialBuildIdArg) displayName: Build product - ${{ if eq(parameters.osGroup, 'Windows_NT') }}: - - script: set __TestIntermediateDir=int&&$(coreClrRepoRootDir)build$(scriptExt) $(buildConfig) $(archType) -ci -skiptests -skipbuildpackages $(officialBuildIdArg) $(ibcOptimizeArg) $(enforcePgoArg) + - script: set __TestIntermediateDir=int&&$(coreClrRepoRootDir)build$(scriptExt) $(buildConfig) $(archType) -ci -skiptests -skipbuildpackages $(officialBuildIdArg) $(enforcePgoArg) displayName: Build product # Build native test components diff --git a/eng/restore/optimizationData.targets b/eng/restore/optimizationData.targets index e4bac71..47c81d6 100644 --- a/eng/restore/optimizationData.targets +++ b/eng/restore/optimizationData.targets @@ -2,23 +2,30 @@ - + + + - + - + $(NuGetPackageRoot)%(IBCPackage.Identity)\%(IBCPackage.Version) - <_optimizationDataSourceFile Include="%(IBCPackage.PackagePath)\**\*.dll;%(IBCPackage.PackagePath)\**\*.ibc" Package="%(IBCPackage.Identity)" /> + + Windows + + + Linux + + <_optimizationDataSourceFile Include="%(IBCPackage.PackagePath)\**\*.dll;%(IBCPackage.PackagePath)\**\*.ibc" SubdirectoryName="%(IBCPackage.SubdirectoryName)" /> - diff --git a/src/coreclr/build.cmd b/src/coreclr/build.cmd index 7fb4cd31..3ca2cff 100644 --- a/src/coreclr/build.cmd +++ b/src/coreclr/build.cmd @@ -69,8 +69,6 @@ set __PgoInstrument=0 set __PgoOptimize=1 set __EnforcePgo=0 set __IbcTuning= -set __IbcOptimize=0 -set __IbcOnly=0 REM __PassThroughArgs is a set of things that will be passed through to nested calls to build.cmd REM when using "all". @@ -97,8 +95,6 @@ set __SkipRestoreArg=/p:RestoreDuringBuild=true set __OfficialBuildIdArg= set __CrossArch= set __PgoOptDataPath= -set __IbcOptDataPath= -set __IbcMergePath= @REM CMD has a nasty habit of eating "=" on the argument list, so passing: @REM -priority=1 @@ -185,8 +181,6 @@ if /i "%1" == "-usenmakemakefiles" (set __NMakeMakefiles=1&set __ConfigureOnly if /i "%1" == "-pgoinstrument" (set __PgoInstrument=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) if /i "%1" == "-enforcepgo" (set __EnforcePgo=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) if /i "%1" == "-nopgooptimize" (set __PgoOptimize=0&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "-ibcoptimize" (set __IbcOptimize=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "-ibconly" (set __IbcOptimize=1&set __IbcOnly=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) if /i "%1" == "-ibcinstrument" (set __IbcTuning=/Tuning&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) if /i "%1" == "-crossgenaltjit" (set __CrossgenAltJit=%2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop) REM TODO remove these once they are no longer used in buildpipeline @@ -214,7 +208,6 @@ if /i "%1" == "usenmakemakefiles" (set __NMakeMakefiles=1&set __ConfigureOnly= if /i "%1" == "pgoinstrument" (set __PgoInstrument=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) if /i "%1" == "nopgooptimize" (set __PgoOptimize=0&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) if /i "%1" == "enforcepgo" (set __EnforcePgo=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "ibcoptimize" (set __IbcOptimize=1&set __PartialNgen=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) if /i "%1" == "ibcinstrument" (set __IbcTuning=/Tuning&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) if /i "%1" == "crossgenaltjit" (set __CrossgenAltJit=%2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop) REM TODO remove this once it's no longer used in buildpipeline @@ -296,9 +289,7 @@ if %__SkipCrossArchNative% EQU 0 ( REM Set the remaining variables based upon the determined build configuration if %__PgoOptimize%==0 ( - if %__IbcOptimize% == 0 ( - set __RestoreOptData=0 - ) + set __RestoreOptData=0 ) set "__BinDir=%__RootBinDir%\bin\coreclr\%__BuildOS%.%__BuildArch%.%__BuildType%" @@ -398,7 +389,6 @@ if %__RestoreOptData% EQU 1 ( ) set PgoDataPackagePathOutputFile="%__IntermediatesDir%\optdatapath.txt" -set IbcDataPackagePathOutputFile="%__IntermediatesDir%\ibcoptdatapath.txt" REM Parse the optdata package versions out of msbuild so that we can pass them on to CMake powershell -NoProfile -ExecutionPolicy ByPass -NoLogo -File "%__RepoRootDir%\eng\common\msbuild.ps1" /clp:nosummary %__ArcadeScriptArgs%^ @@ -416,22 +406,6 @@ if not exist "!PgoDataPackagePathOutputFile!" ( set /p __PgoOptDataPath=<"!PgoDataPackagePathOutputFile!" -powershell -NoProfile -ExecutionPolicy ByPass -NoLogo -File "%__RepoRootDir%\eng\common\msbuild.ps1" /clp:nosummary %__ArcadeScriptArgs%^ - "%OptDataProjectFilePath%" /t:DumpIbcDataPackagePath /nologo %__CommonMSBuildArgs% /p:IbcDataPackagePathOutputFile="!IbcDataPackagePathOutputFile!" - - if not !errorlevel! == 0 ( - echo %__ErrMsgPrefix%Failed to get IBC data package path. - set __exitCode=!errorlevel! - goto ExitWithCode -) - -if not exist "!IbcDataPackagePathOutputFile!" ( - echo %__ErrMsgPrefix%Failed to get IBC data package path. - goto ExitWithError -) - -set /p __IbcOptDataPath=<"!IbcDataPackagePathOutputFile!" - REM ========================================================================================= REM === REM === Generate source files for eventing @@ -566,7 +540,7 @@ if %__BuildNative% EQU 1 ( echo %__ErrMsgPrefix%%__MsgPrefix%Error: failed to generate native component build project! goto ExitWithError ) - + @if defined _echo @echo on :SkipConfigure @@ -610,171 +584,66 @@ if %__BuildCoreLib% EQU 1 ( REM Scope environment changes start { setlocal - if %__IbcOnly% EQU 0 ( - echo %__MsgPrefix%Commencing build of System.Private.CoreLib for %__BuildOS%.%__BuildArch%.%__BuildType% - rem Explicitly set Platform causes conflicts in CoreLib project files. Clear it to allow building from VS x64 Native Tools Command Prompt - set Platform= + echo %__MsgPrefix%Commencing build of System.Private.CoreLib for %__BuildOS%.%__BuildArch%.%__BuildType% + rem Explicitly set Platform causes conflicts in CoreLib project files. Clear it to allow building from VS x64 Native Tools Command Prompt + set Platform= - set __ExtraBuildArgs= + set __ExtraBuildArgs= - if "%__BuildManagedTools%" == "1" ( - set __ExtraBuildArgs=!__ExtraBuildArgs! /p:BuildManagedTools=true - ) + if "%__BuildManagedTools%" == "1" ( + set __ExtraBuildArgs=!__ExtraBuildArgs! /p:BuildManagedTools=true + ) - set __BuildLogRootName=System.Private.CoreLib - set __BuildLog="%__LogsDir%\!__BuildLogRootName!_%__BuildOS%__%__BuildArch%__%__BuildType%.log" - set __BuildWrn="%__LogsDir%\!__BuildLogRootName!_%__BuildOS%__%__BuildArch%__%__BuildType%.wrn" - set __BuildErr="%__LogsDir%\!__BuildLogRootName!_%__BuildOS%__%__BuildArch%__%__BuildType%.err" - set __MsbuildLog=/flp:Verbosity=normal;LogFile=!__BuildLog! - set __MsbuildWrn=/flp1:WarningsOnly;LogFile=!__BuildWrn! - set __MsbuildErr=/flp2:ErrorsOnly;LogFile=!__BuildErr! - set __Logging=!__MsbuildLog! !__MsbuildWrn! !__MsbuildErr! - - powershell -NoProfile -ExecutionPolicy ByPass -NoLogo -File "%__RepoRootDir%\eng\common\msbuild.ps1" /clp:nosummary %__ArcadeScriptArgs%^ - %__ProjectDir%\src\build.proj /t:Restore^ - /nodeReuse:false /p:PortableBuild=true /maxcpucount /p:IncludeRestoreOnlyProjects=true^ - !__Logging! %__CommonMSBuildArgs% !__ExtraBuildArgs! %__UnprocessedBuildArgs% - if not !errorlevel! == 0 ( - echo %__ErrMsgPrefix%%__MsgPrefix%Error: Managed Product assemblies restore failed. Refer to the build log files for details. - echo !__BuildLog! - echo !__BuildWrn! - echo !__BuildErr! - set __exitCode=!errorlevel! - goto ExitWithCode - ) + set __BuildLogRootName=System.Private.CoreLib + set __BuildLog="%__LogsDir%\!__BuildLogRootName!_%__BuildOS%__%__BuildArch%__%__BuildType%.log" + set __BuildWrn="%__LogsDir%\!__BuildLogRootName!_%__BuildOS%__%__BuildArch%__%__BuildType%.wrn" + set __BuildErr="%__LogsDir%\!__BuildLogRootName!_%__BuildOS%__%__BuildArch%__%__BuildType%.err" + set __MsbuildLog=/flp:Verbosity=normal;LogFile=!__BuildLog! + set __MsbuildWrn=/flp1:WarningsOnly;LogFile=!__BuildWrn! + set __MsbuildErr=/flp2:ErrorsOnly;LogFile=!__BuildErr! + set __Logging=!__MsbuildLog! !__MsbuildWrn! !__MsbuildErr! - powershell -NoProfile -ExecutionPolicy ByPass -NoLogo -Command "%__RepoRootDir%\eng\common\msbuild.ps1" /clp:nosummary %__ArcadeScriptArgs%^ - %__ProjectDir%\src\build.proj /nodeReuse:false /p:PortableBuild=true /maxcpucount^ - '!__MsbuildLog!' '!__MsbuildWrn!' '!__MsbuildErr!' %__CommonMSBuildArgs% !__ExtraBuildArgs! %__UnprocessedBuildArgs% - if not !errorlevel! == 0 ( - echo %__ErrMsgPrefix%%__MsgPrefix%Error: Managed Product assemblies build failed. Refer to the build log files for details. - echo !__BuildLog! - echo !__BuildWrn! - echo !__BuildErr! - set __exitCode=!errorlevel! - goto ExitWithCode - ) + powershell -NoProfile -ExecutionPolicy ByPass -NoLogo -File "%__RepoRootDir%\eng\common\msbuild.ps1" /clp:nosummary %__ArcadeScriptArgs%^ + %__ProjectDir%\src\build.proj /t:Restore^ + /nodeReuse:false /p:PortableBuild=true /maxcpucount /p:IncludeRestoreOnlyProjects=true^ + !__Logging! %__CommonMSBuildArgs% !__ExtraBuildArgs! %__UnprocessedBuildArgs% + if not !errorlevel! == 0 ( + echo %__ErrMsgPrefix%%__MsgPrefix%Error: Managed Product assemblies restore failed. Refer to the build log files for details. + echo !__BuildLog! + echo !__BuildWrn! + echo !__BuildErr! + set __exitCode=!errorlevel! + goto ExitWithCode + ) - if "%__BuildManagedTools%" == "1" ( - echo %__MsgPrefix%Publishing crossgen2... - call %__RepoRootDir%\dotnet.cmd publish --self-contained -r win-%__BuildArch% -c %__BuildType% -o "%__BinDir%\crossgen2" "%__ProjectDir%\src\tools\crossgen2\crossgen2\crossgen2.csproj" /nologo /p:BuildArch=%__BuildArch% - - if not !errorlevel! == 0 ( - echo %__ErrMsgPrefix%%__MsgPrefix%Error: Failed to build crossgen2. - echo !__BuildLog! - echo !__BuildWrn! - echo !__BuildErr! - set __exitCode=!errorlevel! - goto ExitWithCode - ) - - copy /Y "%__BinDir%\clrjit.dll" "%__BinDir%\crossgen2\clrjitilc.dll" | find /i /v "file(s) copied" - copy /Y "%__BinDir%\jitinterface.dll" "%__BinDir%\crossgen2\jitinterface.dll" | find /i /v "file(s) copied" - ) + powershell -NoProfile -ExecutionPolicy ByPass -NoLogo -Command "%__RepoRootDir%\eng\common\msbuild.ps1" /clp:nosummary %__ArcadeScriptArgs%^ + %__ProjectDir%\src\build.proj /nodeReuse:false /p:PortableBuild=true /maxcpucount^ + '!__MsbuildLog!' '!__MsbuildWrn!' '!__MsbuildErr!' %__CommonMSBuildArgs% !__ExtraBuildArgs! %__UnprocessedBuildArgs% + if not !errorlevel! == 0 ( + echo %__ErrMsgPrefix%%__MsgPrefix%Error: Managed Product assemblies build failed. Refer to the build log files for details. + echo !__BuildLog! + echo !__BuildWrn! + echo !__BuildErr! + set __exitCode=!errorlevel! + goto ExitWithCode ) - if %__IbcOptimize% EQU 1 ( - echo %__MsgPrefix%Commencing IBCMerge of System.Private.CoreLib for %__BuildOS%.%__BuildArch%.%__BuildType% - set IbcMergeProjectFilePath=%__ProjectDir%\src\.nuget\optdata\ibcmerge.csproj - set IbcMergePackagePathOutputFile="%__IntermediatesDir%\ibcmergepath.txt" - powershell -NoProfile -ExecutionPolicy ByPass -NoLogo -File "%__RepoRootDir%\eng\common\msbuild.ps1" /clp:nosummary %__ArcadeScriptArgs%^ - "!IbcMergeProjectFilePath!" /t:DumpIbcMergePackagePath /nologo %__CommonMSBuildArgs% /p:IbcMergePackagePathOutputFile="!IbcMergePackagePathOutputFile!" + + if "%__BuildManagedTools%" == "1" ( + echo %__MsgPrefix%Publishing crossgen2... + call %__RepoRootDir%\dotnet.cmd publish --self-contained -r win-%__BuildArch% -c %__BuildType% -o "%__BinDir%\crossgen2" "%__ProjectDir%\src\tools\crossgen2\crossgen2\crossgen2.csproj" /nologo /p:BuildArch=%__BuildArch% if not !errorlevel! == 0 ( - echo %__ErrMsgPrefix%Failed to determine IBC Merge path. + echo %__ErrMsgPrefix%%__MsgPrefix%Error: Failed to build crossgen2. + echo !__BuildLog! + echo !__BuildWrn! + echo !__BuildErr! set __exitCode=!errorlevel! goto ExitWithCode ) - if not exist "!IbcMergePackagePathOutputFile!" ( - echo %__ErrMsgPrefix%Failed to determine IBC Merge path. - goto ExitWithError - ) - set /p __IbcMergePath=<"!IbcMergePackagePathOutputFile!" - - set IbcMergePath=!__IbcMergePath!\tools\netcoreapp2.0\ibcmerge.dll - if exist !IbcMergePath! ( - echo %__MsgPrefix%Optimizing using IBC training data - set OptimizationDataDir=!__IbcOptDataPath!\data\System.Private.CoreLib.dll\ - set InputAssemblyFile=!OptimizationDataDir!System.Private.CoreLib.dll - set TargetOptimizationDataFile=!OptimizationDataDir!System.Private.CoreLib.pgo - - if exist "!InputAssemblyFile!" ( - set RawOptimizationDataFilePattern=!OptimizationDataDir!*.ibc - set RawOptimizationDataFile= - for %%x in (!RawOptimizationDataFilePattern!) do @( - if [!RawOptimizationDataFile!] == [] ( - set RawOptimizationDataFile="%%x" - ) else ( - set RawOptimizationDataFile=!RawOptimizationDataFile! "%%x" - ) - ) - - set IBCMergeCommand=%__RepoRootDir%\dotnet.cmd --roll-forward-on-no-candidate-fx 2 "!IbcMergePath!" - - REM Merge the optimization data into the source DLL - set NEXTCMD=!IBCMergeCommand! -q -f -delete -mo "!InputAssemblyFile!" !RawOptimizationDataFile! - echo %__MsgPrefix%!NEXTCMD! >> "%__CrossGenCoreLibLog%" - call !NEXTCMD! >> "%__CrossGenCoreLibLog%" 2>&1 - if NOT !errorlevel! == 0 ( - echo %__ErrMsgPrefix%%__MsgPrefix%Error: IbcMerge of System.Private.CoreLib build failed. Refer to %__CrossGenCoreLibLog% - REM Put it in the same log, helpful for Jenkins - type %__CrossGenCoreLibLog% - goto ExitWithError - ) - - REM Verify that the optimization data has been merged - set NEXTCMD=!IBCMergeCommand! -mi "!InputAssemblyFile!" - echo %__MsgPrefix%!NEXTCMD! >> "%__CrossGenCoreLibLog%" - call !NEXTCMD! >> "%__CrossGenCoreLibLog%" 2>&1 - if NOT !errorlevel! == 0 ( - echo %__ErrMsgPrefix%%__MsgPrefix%Error: IbcMerge of System.Private.CoreLib build failed. Refer to %__CrossGenCoreLibLog% - REM Put it in the same log, helpful for Jenkins - type %__CrossGenCoreLibLog% - goto ExitWithError - ) - - REM Save the module as *.pgo to match the convention expected - copy /y !InputAssemblyFile! !TargetOptimizationDataFile! - ) - - if exist "!TargetOptimizationDataFile!" ( - REM Customize IBCMerge's arguments depending on input props - set IBCMergeArguments=-q -f -delete -mo "%__BinDir%\IL\System.Private.CoreLib.dll" -incremental "!TargetOptimizationDataFile!" - - REM Apply optimization data to the compiled assembly - set NEXTCMD=!IBCMergeCommand! !IBCMergeArguments! - echo %__MsgPrefix%!NEXTCMD! >> "%__CrossGenCoreLibLog%" - call !NEXTCMD! >> "%__CrossGenCoreLibLog%" 2>&1 - if NOT !errorlevel! == 0 ( - echo %__ErrMsgPrefix%%__MsgPrefix%Error: IbcMerge of System.Private.CoreLib build failed. Refer to %__CrossGenCoreLibLog% - REM Put it in the same log, helpful for Jenkins - type %__CrossGenCoreLibLog% - goto ExitWithError - ) - - REM Verify that the optimization data has been applied - set NEXTCMD=!IBCMergeCommand! -mi "%__BinDir%\IL\System.Private.CoreLib.dll" - echo %__MsgPrefix%!NEXTCMD! >> "%__CrossGenCoreLibLog%" - call !NEXTCMD! >> "%__CrossGenCoreLibLog%" 2>&1 - if NOT !errorlevel! == 0 ( - echo %__ErrMsgPrefix%%__MsgPrefix%Error: IbcMerge of System.Private.CoreLib build failed. Refer to %__CrossGenCoreLibLog% - REM Put it in the same log, helpful for Jenkins - type %__CrossGenCoreLibLog% - goto ExitWithError - ) - ) else ( - echo %__MsgPrefix%!TargetOptimizationDataFile! does not exist >> %__CrossGenCoreLibLog% - echo %__ErrMsgPrefix%%__MsgPrefix%Error: IbcMerge of System.Private.CoreLib build failed. Refer to %__CrossGenCoreLibLog% - REM Put it in the same log, helpful for Jenkins - type %__CrossGenCoreLibLog% - goto ExitWithError - ) - ) else ( - echo Could not find IBCMerge at !IbcMergePath!. Have you restored src/.nuget/optdata/ibcmerge.csproj? - goto ExitWithError - ) + copy /Y "%__BinDir%\clrjit.dll" "%__BinDir%\crossgen2\clrjitilc.dll" | find /i /v "file(s) copied" + copy /Y "%__BinDir%\jitinterface.dll" "%__BinDir%\crossgen2\jitinterface.dll" | find /i /v "file(s) copied" ) - REM } Scope environment changes end endlocal ) @@ -1050,8 +919,6 @@ echo -nopgooptimize: do not use profile guided optimizations. echo -enforcepgo: verify after the build that PGO was used for key DLLs, and fail the build if not echo -pgoinstrument: generate instrumented code for profile guided optimization enabled binaries. echo -ibcinstrument: generate IBC-tuning-enabled native images when invoking crossgen. -echo -ibcoptimize: use IBC data to optimize System.Private.CoreLib.dll -echo -ibconly: only run the ibcoptimize step. Assumes an appropriate build already exists echo -configureonly: skip all builds; only run CMake ^(default: CMake and builds are run^) echo -skipconfigure: skip CMake ^(default: CMake is run^) echo -skipmscorlib: skip building System.Private.CoreLib ^(default: System.Private.CoreLib is built^). diff --git a/src/coreclr/build.sh b/src/coreclr/build.sh index 6c54d81..e9e3532 100755 --- a/src/coreclr/build.sh +++ b/src/coreclr/build.sh @@ -65,7 +65,6 @@ restore_optdata() # Parse the optdata package versions out of msbuild so that we can pass them on to CMake local PgoDataPackagePathOutputFile="${__IntermediatesDir}/optdatapath.txt" - local IbcDataPackagePathOutputFile="${__IntermediatesDir}/ibcoptdatapath.txt" # Writes into ${PgoDataPackagePathOutputFile} "$__RepoRootDir/eng/common/msbuild.sh" /clp:nosummary $__ArcadeScriptArgs $OptDataProjectFilePath /t:DumpPgoDataPackagePath ${__CommonMSBuildArgs} /p:PgoDataPackagePathOutputFile=${PgoDataPackagePathOutputFile} > /dev/null 2>&1 @@ -76,16 +75,6 @@ restore_optdata() fi __PgoOptDataPath=$(<"${PgoDataPackagePathOutputFile}") - - # Writes into ${IbcDataPackagePathOutputFile} - "$__RepoRootDir/eng/common/msbuild.sh" /clp:nosummary $__ArcadeScriptArgs $OptDataProjectFilePath /t:DumpIbcDataPackagePath ${__CommonMSBuildArgs} /p:IbcDataPackagePathOutputFile=${IbcDataPackagePathOutputFile} > /dev/null 2>&1 - local exit_code="$?" - if [[ "$exit_code" != 0 || ! -f "${IbcDataPackagePathOutputFile}" ]]; then - echo "${__ErrMsgPrefix}Failed to get IBC data package path." - exit "$exit_code" - fi - - __IbcOptDataPath=$(<"${IbcDataPackagePathOutputFile}") fi } @@ -189,10 +178,6 @@ build_CoreLib() # Invoke MSBuild __ExtraBuildArgs="" - if [[ -z "$__IbcTuning" ]]; then - __ExtraBuildArgs="$__ExtraBuildArgs /p:OptimizationDataDir=\"$__IbcOptDataPath/data\"" - __ExtraBuildArgs="$__ExtraBuildArgs /p:EnableProfileGuidedOptimization=true" - fi if [[ "$__BuildManagedTools" -eq "1" ]]; then __ExtraBuildArgs="$__ExtraBuildArgs /p:BuildManagedTools=true" diff --git a/src/coreclr/src/.nuget/optdata/ibcmerge.csproj b/src/coreclr/src/.nuget/optdata/ibcmerge.csproj deleted file mode 100644 index ced214a..0000000 --- a/src/coreclr/src/.nuget/optdata/ibcmerge.csproj +++ /dev/null @@ -1,36 +0,0 @@ - - - netstandard2.0 - true - win7-x64;win7-x86;linux-x64 - - - - - - - - - - - - - - - - - - - - - - $(NuGetPackageRoot)microsoft.dotnet.ibcmerge\$(MicrosoftDotNetIBCMergeVersion) - - - - - - - - - diff --git a/src/coreclr/src/.nuget/optdata/optdata.csproj b/src/coreclr/src/.nuget/optdata/optdata.csproj index 0596049..4249df1 100644 --- a/src/coreclr/src/.nuget/optdata/optdata.csproj +++ b/src/coreclr/src/.nuget/optdata/optdata.csproj @@ -14,10 +14,6 @@ Version="$(optimizationPGOCoreCLRVersion)" Condition="'$(optimizationPGOCoreCLRVersion)'!='' And '$(OptimizationDataSupported)'!=''" GeneratePathProperty="true" /> - @@ -34,7 +30,7 @@ - + $([MSBuild]::NormalizePath($(Pkgoptimization_PGO_CoreCLR),../../,optimization.$(_BuildOSArchLowercase).pgo.coreclr,$(optimizationPGOCoreCLRVersion))) @@ -48,33 +44,4 @@ - - - - - - - - - - - - - - - - - $([MSBuild]::NormalizePath($(Pkgoptimization_IBC_CoreCLR),../../,optimization.$(_BuildOSArchLowercase).ibc.coreclr,$(optimizationIBCCoreCLRVersion))) - - - - - - - - - - - - diff --git a/src/coreclr/src/System.Private.CoreLib/System.Private.CoreLib.csproj b/src/coreclr/src/System.Private.CoreLib/System.Private.CoreLib.csproj index 21f3c13..c13163e 100644 --- a/src/coreclr/src/System.Private.CoreLib/System.Private.CoreLib.csproj +++ b/src/coreclr/src/System.Private.CoreLib/System.Private.CoreLib.csproj @@ -456,4 +456,6 @@ + + -- 2.7.4