diff options
-rw-r--r-- | build.cmd | 45 | ||||
-rwxr-xr-x | build.sh | 22 | ||||
-rw-r--r-- | init-dotnet.sh | 6 | ||||
-rw-r--r-- | src/.nuget/optdata/ibcmerge.csproj | 18 | ||||
-rw-r--r-- | src/.nuget/optdata/optdata.csproj | 37 |
5 files changed, 107 insertions, 21 deletions
@@ -389,14 +389,37 @@ if %__RestoreOptData% EQU 1 ( ) ) +set PgoDataPackageVersionOutputFile="%__IntermediatesDir%\optdataversion.txt" +set IbcDataPackageVersionOutputFile="%__IntermediatesDir%\ibcoptdataversion.txt" + REM Parse the optdata package versions out of msbuild so that we can pass them on to CMake -for /f "tokens=*" %%s in ('call "%__ProjectDir%\dotnet.cmd" msbuild "%OptDataProjectFilePath%" /t:DumpPgoDataPackageVersion /nologo') do ( - set __PgoOptDataVersion=%%s +call "%__ProjectDir%\dotnet.cmd" msbuild "%OptDataProjectFilePath%" /t:DumpPgoDataPackageVersion /nologo %__CommonMSBuildArgs% /p:PgoDataPackageVersionOutputFile=%PgoDataPackageVersionOutputFile% + + if not !errorlevel! == 0 ( + echo "Failed to get PGO data package version." + exit /b !errorlevel! +) +if not exist "%PgoDataPackageVersionOutputFile%" ( + echo "Failed to get PGO data package version." + exit /b 1 ) -for /f "tokens=*" %%s in ('call "%__ProjectDir%\dotnet.cmd" msbuild "%OptDataProjectFilePath%" /t:DumpIbcDataPackageVersion /nologo') do ( - set __IbcOptDataVersion=%%s + +set /p __PgoOptDataVersion=<"%PgoDataPackageVersionOutputFile%" + +call "%__ProjectDir%\dotnet.cmd" msbuild "%OptDataProjectFilePath%" /t:DumpIbcDataPackageVersion /nologo %__CommonMSBuildArgs% /p:IbcDataPackageVersionOutputFile=%IbcDataPackageVersionOutputFile% + + if not !errorlevel! == 0 ( + echo "Failed to get IBC data package version." + exit /b !errorlevel! ) +if not exist "%IbcDataPackageVersionOutputFile%" ( + echo "Failed to get IBC data package version." + exit /b 1 +) + +set /p __IbcOptDataVersion=<"%IbcDataPackageVersionOutputFile%" + REM ========================================================================================= REM === REM === Generate source files for eventing @@ -634,9 +657,19 @@ if %__BuildCoreLib% EQU 1 ( if %__IbcOptimize% EQU 1 ( echo %__MsgPrefix%Commencing IBCMerge of System.Private.CoreLib for %__BuildOS%.%__BuildArch%.%__BuildType% set IbcMergeProjectFilePath=%__ProjectDir%\src\.nuget\optdata\ibcmerge.csproj - for /f "tokens=*" %%s in ('call "%__ProjectDir%\dotnet.cmd" msbuild "!IbcMergeProjectFilePath!" /t:DumpIbcMergePackageVersion /nologo') do @( - set __IbcMergeVersion=%%s + set IbcMergePackageVersionOutputFile="%__IntermediatesDir%\ibcmergeversion.txt" + call "%__ProjectDir%\dotnet.cmd" msbuild "!IbcMergeProjectFilePath!" /t:DumpIbcMergePackageVersion /nologo %__CommonMSBuildArgs% /p:IbcMergePackageVersionOutputFile=%IbcMergePackageVersionOutputFile% + + if not !errorlevel! == 0 ( + echo "Failed to determine IBC Merge version." + exit /b !errorlevel! + ) + if not exist "%IbcMergePackageVersionOutputFile%" ( + echo "Failed to determine IBC Merge version." + exit /b 1 ) + + set /p __IbcMergeVersion=<"%IbcMergePackageVersionOutputFile%" set IbcMergePath=%__PackagesDir%\microsoft.dotnet.ibcmerge\!__IbcMergeVersion!\tools\netcoreapp2.0\ibcmerge.dll if exist !IbcMergePath! ( @@ -151,22 +151,26 @@ restore_optdata() if [ $__isMSBuildOnNETCoreSupported == 1 ]; then # Parse the optdata package versions out of msbuild so that we can pass them on to CMake - # Init dotnet - source "${__ProjectRoot}/init-dotnet.sh" - local DotNetCli=${_InitializeDotNetCli}/dotnet + local PgoDataPackageVersionOutputFile="${__IntermediatesDir}/optdataversion.txt" + local IbcDataPackageVersionOutputFile="${__IntermediatesDir}/ibcoptdataversion.txt" - __PgoOptDataVersion=$(DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 $DotNetCli msbuild $OptDataProjectFilePath /t:DumpPgoDataPackageVersion /nologo) - if [ $? != 0 ]; then + # Writes into ${PgoDataPackageVersionOutputFile} + ${__ProjectDir}/dotnet.sh msbuild $OptDataProjectFilePath /t:DumpPgoDataPackageVersion ${__CommonMSBuildArgs} /p:PgoDataPackageVersionOutputFile=${PgoDataPackageVersionOutputFile} /nologo 2>&1 > /dev/null + if [ $? != 0 ] || [ ! -f "${PgoDataPackageVersionOutputFile}" ]; then echo "Failed to get PGO data package version." exit $? fi - __PgoOptDataVersion=$(echo $__PgoOptDataVersion | sed 's/^\s*//') - __IbcOptDataVersion=$(DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 $DotNetCli msbuild $OptDataProjectFilePath /t:DumpIbcDataPackageVersion /nologo) - if [ $? != 0 ]; then + + __PgoOptDataVersion=$(<"${PgoDataPackageVersionOutputFile}") + + # Writes into ${IbcDataPackageVersionOutputFile} + ${__ProjectDir}/dotnet.sh msbuild $OptDataProjectFilePath /t:DumpIbcDataPackageVersion ${__CommonMSBuildArgs} /p:IbcDataPackageVersionOutputFile=${IbcDataPackageVersionOutputFile} /nologo 2>&1 > /dev/null + if [ $? != 0 ] || [ ! -f "${IbcDataPackageVersionOutputFile}" ]; then echo "Failed to get IBC data package version." exit $? fi - __IbcOptDataVersion=$(echo $__IbcOptDataVersion | sed 's/^[[:blank:]]*//') + + __IbcOptDataVersion=$(<"${IbcDataPackageVersionOutputFile}") fi } diff --git a/init-dotnet.sh b/init-dotnet.sh index b446260af5..36b74232f2 100644 --- a/init-dotnet.sh +++ b/init-dotnet.sh @@ -1,11 +1,11 @@ #!/usr/bin/env bash -__scriptpath=$(cd "$(dirname "$0")"; pwd -P) +__scriptpath="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" echo "Installing dotnet using Arcade..." -source $__scriptpath/eng/configure-toolset.sh -source $__scriptpath/eng/common/tools.sh +source ${__scriptpath}/eng/configure-toolset.sh +source ${__scriptpath}/eng/common/tools.sh InitializeBuildTool diff --git a/src/.nuget/optdata/ibcmerge.csproj b/src/.nuget/optdata/ibcmerge.csproj index 9dae43fd14..d8dd2a461c 100644 --- a/src/.nuget/optdata/ibcmerge.csproj +++ b/src/.nuget/optdata/ibcmerge.csproj @@ -9,8 +9,24 @@ <PackageReference Include="microsoft.dotnet.ibcmerge" Version="[$(IbcMergePackageVersion)]" Condition="'$(IbcMergePackageVersion)'!=''" /> </ItemGroup> + <!-- --> + <!-- Task: DumpIbcMergePackageVersion --> + <!-- --> + <!-- Notes: --> + <!-- --> + <!-- DumpIbcMergePackageVersion is used by build.sh and build.cmd to pass --> + <!-- the version information to cmake. The task will write a file to be --> + <!-- read back by build.cmd/sh. The path for the file is: --> + <!-- $(IbcMergePackageVersionOutputFile) --> + <!-- --> <Target Name="DumpIbcMergePackageVersion"> - <Message Importance="high" Text="$(IbcMergePackageVersion)" /> + <!-- Error if PgoDataPackageVersionOutputFile is not set. --> + <Error Condition="'$(IbcMergePackageVersionOutputFile)'==''" Text="IbcMergePackageVersionOutputFile must be passed as a property." /> + + <!-- Cleanup old version file --> + <Delete Files="$(IbcMergePackageVersionOutputFile)" Condition="Exists('$(IbcMergePackageVersionOutputFile)')" /> + <WriteLinesToFile File="$(IbcMergePackageVersionOutputFile)" Lines="$(optimizationIBCCoreCLRVersion)" Overwrite="true"/> + <Message Text="IbcMergePackageVersion: $(IbcMergePackageVersion) written to: $(IbcMergePackageVersionOutputFile)" Importance="High" /> </Target> <PropertyGroup> diff --git a/src/.nuget/optdata/optdata.csproj b/src/.nuget/optdata/optdata.csproj index 62d975fe6f..3d842a5ab0 100644 --- a/src/.nuget/optdata/optdata.csproj +++ b/src/.nuget/optdata/optdata.csproj @@ -18,12 +18,45 @@ </RestoreSources> </PropertyGroup> + <!-- --> + <!-- Task: DumpPgoDataPackageVersion --> + <!-- --> + <!-- Notes: --> + <!-- --> + <!-- DumpPgoDataPackageVersion is used by build.sh and build.cmd to pass --> + <!-- the version information to cmake. The task will write a file to be --> + <!-- read back by build.cmd/sh. The path for the file is: --> + <!-- $(PgoDataPackageVersionOutputFile) --> + <!-- --> + <Target Name="DumpPgoDataPackageVersion"> - <Message Importance="high" Text="$(optimizationPGOCoreCLRVersion)" /> + <!-- Error if PgoDataPackageVersionOutputFile is not set. --> + <Error Condition="'$(PgoDataPackageVersionOutputFile)'==''" Text="PgoDataPackageVersionOutputFile must be passed as a property." /> + + <!-- Cleanup old version file --> + <Delete Files="$(PgoDataPackageVersionOutputFile)" Condition="Exists('$(PgoDataPackageVersionOutputFile)')" /> + <WriteLinesToFile File="$(PgoDataPackageVersionOutputFile)" Lines="$(optimizationPGOCoreCLRVersion)" Overwrite="true"/> + <Message Text="optimizationPGOCoreCLRVersion: $(optimizationPGOCoreCLRVersion) written to: $(PgoDataPackageVersionOutputFile)" Importance="High" /> </Target> + <!-- --> + <!-- Task: DumpIbcDataPackageVersion --> + <!-- --> + <!-- Notes: --> + <!-- --> + <!-- DumpIbcDataPackageVersion is used by build.sh and build.cmd to pass --> + <!-- the version information to cmake. The task will write a file to be --> + <!-- read back by build.cmd/sh. The path for the file is: --> + <!-- $(IbcDataPackageVersionOutputFile) --> + <!-- --> <Target Name="DumpIbcDataPackageVersion"> - <Message Importance="high" Text="$(optimizationIBCCoreCLRVersion)" /> + <!-- Error if PgoDataPackageVersionOutputFile is not set. --> + <Error Condition="'$(IbcDataPackageVersionOutputFile)'==''" Text="IbcDataPackageVersionOutputFile must be passed as a property." /> + + <!-- Cleanup old version file --> + <Delete Files="$(IbcDataPackageVersionOutputFile)" Condition="Exists('$(IbcDataPackageVersionOutputFile)')" /> + <WriteLinesToFile File="$(IbcDataPackageVersionOutputFile)" Lines="$(optimizationIBCCoreCLRVersion)" Overwrite="true"/> + <Message Text="optimizationIBCCoreCLRVersion: $(optimizationIBCCoreCLRVersion) written to: $(IbcDataPackageVersionOutputFile)" Importance="High" /> </Target> </Project> |