forked from dotnet/coreclr
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Rahul Kumar
committed
Jan 29, 2016
1 parent
d4eccd4
commit ff43d04
Showing
10 changed files
with
114 additions
and
172 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,123 +1,17 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<Project ToolsVersion="12.0" InitialTargets="_RestoreBuildToolsWrapper" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
|
||
<!-- Inline task to bootstrap the build to enable downloading nuget.exe --> | ||
<UsingTask TaskName="DownloadFile" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v12.0.dll"> | ||
<ParameterGroup> | ||
<Address ParameterType="System.String" Required="true" /> | ||
<FileName ParameterType="System.String" Required="true" /> | ||
</ParameterGroup> | ||
<Task> | ||
<Reference Include="System" /> | ||
<Reference Include="System.IO" /> | ||
<Code Type="Fragment" Language="cs"> | ||
<![CDATA[ | ||
var directory = System.IO.Path.GetDirectoryName(FileName); | ||
Directory.CreateDirectory(directory); | ||
var tempFile = Path.Combine(directory, Path.GetRandomFileName()); | ||
var client = new System.Net.WebClient(); | ||
client.Proxy = System.Net.WebRequest.DefaultWebProxy; | ||
if (client.Proxy != null) client.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials; | ||
var tryCount = 1; | ||
var maxTries = 3; | ||
while (tryCount <= maxTries) | ||
{ | ||
try | ||
{ | ||
Log.LogMessage("Attempting to download {0}...", Address); | ||
client.DownloadFile(Address, tempFile); | ||
break; | ||
} | ||
catch (System.Net.WebException e) | ||
{ | ||
tryCount++; | ||
if (tryCount > maxTries) | ||
{ | ||
throw; | ||
} | ||
else | ||
{ | ||
Log.LogMessage(MessageImportance.High, "Download failed, retrying: {0}", e.Message); | ||
} | ||
} | ||
} | ||
try | ||
{ | ||
if (!File.Exists(FileName)) | ||
File.Move(tempFile, FileName); | ||
} | ||
finally | ||
{ | ||
if (File.Exists(tempFile)) | ||
File.Delete(tempFile); | ||
} | ||
]]> | ||
</Code> | ||
</Task> | ||
</UsingTask> | ||
|
||
<!-- | ||
Needed to avoid the IntialTargets from having an Output which ends up getting | ||
added to the output references when you have a project to project reference. | ||
--> | ||
<Target Name="_RestoreBuildToolsWrapper" DependsOnTargets="_RestoreBuildTools" /> | ||
|
||
<Target Name="_RestoreBuildTools" | ||
Inputs="$(MSBuildThisFileDirectory)dir.props;$(SourceDir).nuget/packages.$(OsEnvironment).config" | ||
Outputs="$(ToolsDir)Microsoft.DotNet.Build.Tasks.dll;$(NugetToolPath);$(DnuToolPath)"> | ||
<Message Importance="High" Text="Restoring build tools..." /> | ||
|
||
<Copy Condition="Exists('$(NuGetCachedPath)')" SourceFiles="$(NuGetCachedPath)" DestinationFiles="$(NuGetToolPath)" SkipUnchangedFiles="true" /> | ||
|
||
<!-- Download latest nuget.exe --> | ||
<DownloadFile FileName="$(NuGetToolPath)" | ||
Address="https://www.nuget.org/nuget.exe" | ||
Condition="!Exists('$(NuGetToolPath)') and '$(OsEnvironment)'=='Windows_NT'" /> | ||
|
||
<Exec Command="curl -sSL --create-dirs -o $(NuGetToolPath) https://api.nuget.org/downloads/nuget.exe" | ||
Condition="!Exists('$(NuGetToolPath)') and '$(OsEnvironment)'=='Unix'" /> | ||
|
||
<PropertyGroup> | ||
<_RestoreBuildToolsCommand>$(NugetRestoreCommand) "$(SourceDir).nuget/packages.$(OsEnvironment).config"</_RestoreBuildToolsCommand> | ||
</PropertyGroup> | ||
|
||
<!-- Restore build tools --> | ||
<Exec Command="$(_RestoreBuildToolsCommand)" StandardOutputImportance="Low" /> | ||
|
||
<!-- currently DNU doesn't support -ConfigFile: https://github.com/aspnet/dnx/issues/1693 | ||
Our DnuRestoreCommand doesn't force a config file and we rely on the | ||
directory probing for it to find nuget.config. This works for restore from source, | ||
but not restore from PackagesDir as happens for test project restore since PackagesDir | ||
will not be under src. To workaround, copy our nuget.config to packages. --> | ||
<Copy Condition="Exists('$(NuGetConfigFile)')" SourceFiles="$(NuGetConfigFile)" DestinationFolder="$(PackagesDir)" SkipUnchangedFiles="true" /> | ||
<!-- Add this back if above comment becomes a problem --> | ||
<!-- <Copy Condition="Exists('$(NuGetConfigFile)')" SourceFiles="$(NuGetConfigFile)" DestinationFolder="$(IntermediateOutputRootPath)" SkipUnchangedFiles="true" /> --> | ||
|
||
<!-- Add DNU and Roslyn tool execute rights --> | ||
<Exec Condition="'$(OsEnvironment)'=='Unix'" | ||
Command="chmod a+x "$(DnxPackageDir)/bin/dnu"" /> | ||
<Exec Condition="'$(OsEnvironment)'=='Unix'" | ||
Command="chmod a+x "$(DnxPackageDir)/bin/dnx"" /> | ||
<Exec Condition="'$(OsEnvironment)'=='Unix'" | ||
Command="find '$(RoslynPackageDir)tools' -name "*.exe" -exec chmod "+x" '{}' ';'" /> | ||
|
||
<Error Condition="'$(ErrorIfBuildToolsRestoredFromIndividualProject)'=='true'" | ||
Text="The build tools package was just restored and so we cannot continue the build of an individual project because targets from the build tools package were not able to be imported. Please retry the build the individual project again." /> | ||
|
||
<!-- | ||
There are cases where the inputs could be newer than the outputs but the | ||
download or restore may not need to update. In such cases we need to touch | ||
these files otherwise we continually run this target over and over for | ||
every project until these files are cleaned (if the are ever cleaned). | ||
--> | ||
<Touch Files="$(ToolsDir)Microsoft.DotNet.Build.Tasks.dll;$(NugetToolPath);$(DnuToolPath)" /> | ||
<Project ToolsVersion="12.0" InitialTargets="CheckForBuildTools" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
|
||
<Target Name="CheckForBuildTools"> | ||
<Error Condition="!Exists('$(ToolsDir)')" | ||
Text="The tools directory [$(ToolsDir)] does not exist. Please run init-tools.cmd in your enlistment to ensure the tools are installed before attempting to build an individual project." /> | ||
</Target> | ||
|
||
<!-- Provide default empty targets for BuildAndTest and Test which can be hooked onto or overridden as necessary --> | ||
<!-- Provide default targets which can be hooked onto or overridden as necessary --> | ||
<Target Name="BuildAndTest" DependsOnTargets="Build;Test" /> | ||
|
||
<Target Name="RebuildAndTest" DependsOnTargets="Rebuild;Test" /> | ||
<Target Name="Test" /> | ||
|
||
<Import Project="$(ToolsDir)/Build.Common.targets" Condition="'$(UseLiveBuildTools)' != 'true'" /> | ||
|
||
</Project> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
@echo off | ||
setlocal | ||
|
||
REM Workaround https://github.com/dotnet/coreclr/issues/2153 | ||
set ComPlus_ReadyToRun=0 | ||
|
||
set INIT_TOOLS_LOG=%~dp0init-tools.log | ||
set PACKAGES_DIR=%~dp0packages\ | ||
set TOOLRUNTIME_DIR=%~dp0Tools | ||
set DOTNET_PATH=%TOOLRUNTIME_DIR%\dotnetcli\ | ||
set DOTNET_CMD=%DOTNET_PATH%bin\dotnet.exe | ||
if [%BUILDTOOLS_SOURCE%]==[] set BUILDTOOLS_SOURCE=https://www.myget.org/F/dotnet-buildtools/ | ||
set /P BUILDTOOLS_VERSION=< %~dp0BuildToolsVersion.txt | ||
set BUILD_TOOLS_PATH=%PACKAGES_DIR%Microsoft.DotNet.BuildTools\%BUILDTOOLS_VERSION%\lib\ | ||
set PROJECT_JSON_PATH=%TOOLRUNTIME_DIR%\%BUILDTOOLS_VERSION% | ||
set PROJECT_JSON_FILE=%PROJECT_JSON_PATH%\project.json | ||
set PROJECT_JSON_CONTENTS={ "dependencies": { "Microsoft.DotNet.BuildTools": "%BUILDTOOLS_VERSION%" , "Microsoft.DotNet.BuildTools.Coreclr": "1.0.4-prerelease"}, "frameworks": { "dnxcore50": { } } } | ||
set BUILD_TOOLS_SEMAPHORE=%PROJECT_JSON_PATH%\init-tools.completed | ||
|
||
:: if force option is specified then clean the tool runtime and build tools package directory to force it to get recreated | ||
if [%1]==[force] ( | ||
if exist "%TOOLRUNTIME_DIR%" rmdir /S /Q "%TOOLRUNTIME_DIR%" | ||
if exist "%PACKAGES_DIR%Microsoft.DotNet.BuildTools" rmdir /S /Q "%PACKAGES_DIR%Microsoft.DotNet.BuildTools" | ||
) | ||
|
||
:: If sempahore exists do nothing | ||
if exist "%BUILD_TOOLS_SEMAPHORE%" ( | ||
echo Tools are already initialized. | ||
goto :EOF | ||
) | ||
|
||
:: Download Nuget.exe | ||
if NOT exist "%PACKAGES_DIR%NuGet.exe" ( | ||
if NOT exist "%PACKAGES_DIR%" mkdir "%PACKAGES_DIR%" | ||
powershell -NoProfile -ExecutionPolicy unrestricted -Command "(New-Object Net.WebClient).DownloadFile('https://www.nuget.org/nuget.exe', '%PACKAGES_DIR%NuGet.exe') | ||
) | ||
|
||
if NOT exist "%PROJECT_JSON_PATH%" mkdir "%PROJECT_JSON_PATH%" | ||
echo %PROJECT_JSON_CONTENTS% > %PROJECT_JSON_FILE% | ||
echo Running %0 > %INIT_TOOLS_LOG% | ||
|
||
if exist "%DOTNET_CMD%" goto :afterdotnetrestore | ||
|
||
echo Installing dotnet cli... | ||
if NOT exist "%DOTNET_PATH%" mkdir "%DOTNET_PATH%" | ||
set /p DOTNET_VERSION=< %~dp0DotnetCLIVersion.txt | ||
set DOTNET_ZIP_NAME=dotnet-win-x64.%DOTNET_VERSION%.zip | ||
set DOTNET_REMOTE_PATH=https://dotnetcli.blob.core.windows.net/dotnet/dev/Binaries/%DOTNET_VERSION%/%DOTNET_ZIP_NAME% | ||
set DOTNET_LOCAL_PATH=%DOTNET_PATH%%DOTNET_ZIP_NAME% | ||
echo Installing '%DOTNET_REMOTE_PATH%' to '%DOTNET_LOCAL_PATH%' >> %INIT_TOOLS_LOG% | ||
powershell -NoProfile -ExecutionPolicy unrestricted -Command "(New-Object Net.WebClient).DownloadFile('%DOTNET_REMOTE_PATH%', '%DOTNET_LOCAL_PATH%'); Add-Type -Assembly 'System.IO.Compression.FileSystem' -ErrorVariable AddTypeErrors; if ($AddTypeErrors.Count -eq 0) { [System.IO.Compression.ZipFile]::ExtractToDirectory('%DOTNET_LOCAL_PATH%', '%DOTNET_PATH%') } else { (New-Object -com shell.application).namespace('%DOTNET_PATH%').CopyHere((new-object -com shell.application).namespace('%DOTNET_LOCAL_PATH%').Items(),16) }" >> %INIT_TOOLS_LOG% | ||
if NOT exist "%DOTNET_LOCAL_PATH%" ( | ||
echo ERROR: Could not install dotnet cli correctly. See '%INIT_TOOLS_LOG%' for more details. | ||
goto :EOF | ||
) | ||
|
||
:afterdotnetrestore | ||
|
||
if exist "%BUILD_TOOLS_PATH%" goto :afterbuildtoolsrestore | ||
echo Restoring BuildTools version %BUILDTOOLS_VERSION%... | ||
echo Running: "%DOTNET_CMD%" restore "%PROJECT_JSON_FILE%" --packages %PACKAGES_DIR% --source "%BUILDTOOLS_SOURCE%" >> %INIT_TOOLS_LOG% | ||
call "%DOTNET_CMD%" restore "%PROJECT_JSON_FILE%" --packages %PACKAGES_DIR% --source "%BUILDTOOLS_SOURCE%" >> %INIT_TOOLS_LOG% | ||
if NOT exist "%BUILD_TOOLS_PATH%init-tools.cmd" ( | ||
echo ERROR: Could not restore build tools correctly. See '%INIT_TOOLS_LOG%' for more details. | ||
goto :EOF | ||
) | ||
|
||
:afterbuildtoolsrestore | ||
|
||
echo Initializing BuildTools ... | ||
echo Running: "%BUILD_TOOLS_PATH%init-tools.cmd" "%~dp0" "%DOTNET_CMD%" "%TOOLRUNTIME_DIR%" >> %INIT_TOOLS_LOG% | ||
call "%BUILD_TOOLS_PATH%init-tools.cmd" "%~dp0" "%DOTNET_CMD%" "%TOOLRUNTIME_DIR%" >> %INIT_TOOLS_LOG% | ||
|
||
:: Create sempahore file | ||
echo Done initializing tools. | ||
echo Init-Tools.cmd completed for BuildTools Version: %BUILDTOOLS_VERSION% > "%BUILD_TOOLS_SEMAPHORE%" |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.