diff options
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | BuildToolsVersion.txt | 1 | ||||
-rw-r--r-- | DotnetCLIVersion.txt | 1 | ||||
-rwxr-xr-x | build.sh | 18 | ||||
-rw-r--r-- | dir.props | 1 | ||||
-rwxr-xr-x | init-tools.sh | 68 | ||||
-rw-r--r-- | src/mscorlib/Tools/PostProcessingTools.targets | 2 | ||||
-rw-r--r-- | src/mscorlib/mscorlib.csproj | 2 |
8 files changed, 89 insertions, 7 deletions
diff --git a/.gitignore b/.gitignore index 3d5b26600c..8b34a47451 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,9 @@ syntax: glob [Bb]inaries/ +# Build tools related files +[Tt]ools/ + ### VisualStudio ### # User-specific files diff --git a/BuildToolsVersion.txt b/BuildToolsVersion.txt new file mode 100644 index 0000000000..b0667ae58b --- /dev/null +++ b/BuildToolsVersion.txt @@ -0,0 +1 @@ +1.0.25-prerelease-00157 diff --git a/DotnetCLIVersion.txt b/DotnetCLIVersion.txt new file mode 100644 index 0000000000..8e793aebfa --- /dev/null +++ b/DotnetCLIVersion.txt @@ -0,0 +1 @@ +1.0.0.000973
\ No newline at end of file @@ -200,7 +200,8 @@ build_mscorlib() # Grab the MSBuild package if we don't have it already if [ ! -e "$__MSBuildPath" ]; then echo "Restoring MSBuild..." - mono "$__NuGetPath" install $__MSBuildPackageId -Version $__MSBuildPackageVersion -source "https://www.myget.org/F/dotnet-buildtools/" -OutputDirectory "$__PackagesDir" + cd $__ProjectRoot + sh ./init-tools.sh if [ $? -ne 0 ]; then echo "Failed to restore MSBuild." exit 1 @@ -221,12 +222,21 @@ build_mscorlib() esac # Invoke MSBuild - mono "$__MSBuildPath" /nologo "$__ProjectRoot/build.proj" /verbosity:minimal "/fileloggerparameters:Verbosity=normal;LogFile=$__LogsDir/MSCorLib_$__BuildOS__$__BuildArch__$__BuildType.log" /t:Build /p:__BuildOS=$__BuildOS /p:__BuildArch=$__BuildArch /p:__BuildType=$__BuildType /p:__IntermediatesDir=$__IntermediatesDir /p:UseRoslynCompiler=true /p:BuildNugetPackage=false /p:ToolNugetRuntimeId=$_ToolNugetRuntimeId + $__ProjectRoot/Tools/corerun "$__MSBuildPath" /nologo "$__ProjectRoot/build.proj" /verbosity:minimal "/fileloggerparameters:Verbosity=normal;LogFile=$__LogsDir/MSCorLib_$__BuildOS__$__BuildArch__$__BuildType.log" /t:Build /p:__BuildOS=$__BuildOS /p:__BuildArch=$__BuildArch /p:__BuildType=$__BuildType /p:__IntermediatesDir=$__IntermediatesDir /p:UseRoslynCompiler=true /p:BuildNugetPackage=false /p:ToolNugetRuntimeId=$_ToolNugetRuntimeId /p:UseSharedCompilation=false if [ $? -ne 0 ]; then echo "Failed to build mscorlib." exit 1 fi + + if [ $__SkipCoreCLR == 0 ]; then + echo "Generating native image for mscorlib." + $__BinDir/crossgen $__BinDir/mscorlib.dll + if [ $? -ne 0 ]; then + echo "Failed to generate native image for mscorlib." + exit 1 + fi + fi } echo "Commencing CoreCLR Repo build" @@ -329,9 +339,7 @@ __VerboseBuild=0 __CrossBuild=0 __ClangMajorVersion=3 __ClangMinorVersion=5 -__MSBuildPackageId="Microsoft.Build.Mono.Debug" -__MSBuildPackageVersion="14.1.0.0-prerelease" -__MSBuildPath="$__PackagesDir/$__MSBuildPackageId.$__MSBuildPackageVersion/lib/MSBuild.exe" +__MSBuildPath=$__ProjectRoot/Tools/MSBuild.exe __NuGetPath="$__PackagesDir/NuGet.exe" for i in "$@" @@ -4,6 +4,7 @@ $(OS) is set to Unix/Windows_NT. This comes from an environment variable on Windows and MSBuild on Unix. --> <PropertyGroup> + <OsEnvironment Condition="'$(OsEnvironment)'=='' and '$(OS)'=='OSX'">Unix</OsEnvironment> <OsEnvironment Condition="'$(OsEnvironment)'==''">$(OS)</OsEnvironment> </PropertyGroup> diff --git a/init-tools.sh b/init-tools.sh new file mode 100755 index 0000000000..79e1042f05 --- /dev/null +++ b/init-tools.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash + +__scriptpath=$(cd "$(dirname "$0")"; pwd -P) +__PACKAGES_DIR=$__scriptpath/packages +__TOOLRUNTIME_DIR=$__scriptpath/Tools +__DOTNET_PATH=$__TOOLRUNTIME_DIR/dotnetcli +__DOTNET_CMD=$__DOTNET_PATH/bin/dotnet +if [ -z "$__BUILDTOOLS_SOURCE" ]; then __BUILDTOOLS_SOURCE=https://www.myget.org/F/dotnet-buildtools/; fi +__BUILD_TOOLS_PACKAGE_VERSION=$(cat BuildToolsVersion.txt) +__DOTNET_TOOLS_VERSION=$(cat DotnetCLIVersion.txt) +__BUILD_TOOLS_PATH=$__PACKAGES_DIR/Microsoft.DotNet.BuildTools/$__BUILD_TOOLS_PACKAGE_VERSION/lib +__PROJECT_JSON_PATH=$__TOOLRUNTIME_DIR/$__BUILD_TOOLS_PACKAGE_VERSION +__PROJECT_JSON_FILE=$__PROJECT_JSON_PATH/project.json +__PROJECT_JSON_CONTENTS="{ \"dependencies\": { \"Microsoft.DotNet.BuildTools\": \"$__BUILD_TOOLS_PACKAGE_VERSION\" }, \"frameworks\": { \"dnxcore50\": { } } }" + +OSName=$(uname -s) +case $OSName in + Darwin) + OS=OSX + __DOTNET_PKG=dotnet-osx-x64 + ;; + + Linux) + OS=Linux + __DOTNET_PKG=dotnet-ubuntu-x64 + ;; + + *) + echo "Unsupported OS $OSName detected. Downloading ubuntu-x64 tools" + OS=Linux + __DOTNET_PKG=dotnet-ubuntu-x64 + ;; +esac + +if [ ! -e $__PROJECT_JSON_FILE ]; then + if [ -e $__TOOLRUNTIME_DIR ]; then rm -rf -- $__TOOLRUNTIME_DIR; fi + + if [ ! -e $__DOTNET_PATH ]; then + # curl has HTTPS CA trust-issues less often than wget, so lets try that first. + which curl > /dev/null 2> /dev/null + if [ $? -ne 0 ]; then + mkdir -p "$__DOTNET_PATH" + wget -q -O $__DOTNET_PATH/dotnet.tar https://dotnetcli.blob.core.windows.net/dotnet/dev/Binaries/${__DOTNET_TOOLS_VERSION}/${__DOTNET_PKG}.${__DOTNET_TOOLS_VERSION}.tar.gz + else + curl -sSL --create-dirs -o $__DOTNET_PATH/dotnet.tar https://dotnetcli.blob.core.windows.net/dotnet/dev/Binaries/${__DOTNET_TOOLS_VERSION}/${__DOTNET_PKG}.${__DOTNET_TOOLS_VERSION}.tar.gz + fi + cd $__DOTNET_PATH + tar -xf $__DOTNET_PATH/dotnet.tar + if [ -n "$BUILDTOOLS_OVERRIDE_RUNTIME" ]; then + find $__DOTNET_PATH -name *.ni.* | xargs rm 2>/dev/null + cp -R $BUILDTOOLS_OVERRIDE_RUNTIME/* $__DOTNET_PATH/bin + cp -R $BUILDTOOLS_OVERRIDE_RUNTIME/* $__DOTNET_PATH/bin/dnx + cp -R $BUILDTOOLS_OVERRIDE_RUNTIME/* $__DOTNET_PATH/runtime/coreclr + fi + + cd $__scriptpath + fi + + mkdir "$__PROJECT_JSON_PATH" + echo $__PROJECT_JSON_CONTENTS > "$__PROJECT_JSON_FILE" + + if [ ! -e $__BUILD_TOOLS_PATH ]; then + $__DOTNET_CMD restore "$__PROJECT_JSON_FILE" --packages $__PACKAGES_DIR --source $__BUILDTOOLS_SOURCE + fi + + sh $__BUILD_TOOLS_PATH/init-tools.sh $__scriptpath $__DOTNET_CMD $__TOOLRUNTIME_DIR + chmod a+x $__TOOLRUNTIME_DIR/corerun +fi diff --git a/src/mscorlib/Tools/PostProcessingTools.targets b/src/mscorlib/Tools/PostProcessingTools.targets index 2574db570e..2f48efcecb 100644 --- a/src/mscorlib/Tools/PostProcessingTools.targets +++ b/src/mscorlib/Tools/PostProcessingTools.targets @@ -21,7 +21,7 @@ <!-- Copy to the final output location --> <Copy Retries="3" SourceFiles="@(RewrittenAssembly)" DestinationFiles="$(FinalOutputPath)\%(RewrittenAssembly.FileName)%(RewrittenAssembly.Extension)"/> - <Message Importance="High" Text="$(MSBuildProjectName) -> $(FinalOutputPath)\%(RewrittenAssembly.FileName)%(RewrittenAssembly.Extension)" /> + <Message Importance="High" Text="$(MSBuildProjectName) -> $(FinalOutputPath)%(RewrittenAssembly.FileName)%(RewrittenAssembly.Extension)" /> <Copy Condition="Exists('$(CurrentAssemblyPdb)')" Retries="3" SourceFiles="$(CurrentAssemblyPdb)" DestinationFiles="$(FinalOutputPath)\$(TargetName).pdb"/> </Target> diff --git a/src/mscorlib/mscorlib.csproj b/src/mscorlib/mscorlib.csproj index ea53e972b8..8a1c0b4740 100644 --- a/src/mscorlib/mscorlib.csproj +++ b/src/mscorlib/mscorlib.csproj @@ -170,7 +170,7 @@ </EmbeddedResource> </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.Targets" /> <!-- Import signing tools --> <Import Condition="Exists('$(ToolsDir)\sign.targets')" Project="$(ToolsDir)\sign.targets" /> |