5a0e95897e
* dotnet/release/15.5: (26 commits) Fixing the reference to Microsoft.Build.Runtime from Cli.Utils.Tests. It was using the wrong package version property. One more old style version package name needed to change in redist. Fixing the versions of MSBuild and passing the right property to find roslyn files. Use "15.5.179" for the other Microsoft.Build.* packages Moving the 'MicrosoftBuildPackageVersion' forward. Fixing "RuntimeFrameworkVersion" Updating version naming convention. Fixed a typo... Nuget.config update to align with CLI:master - add comments in DependencyVersions.prop Even more package dependency re-names... Third pass clean-up of package names. Second pass clean-up of package names; resequencing download. Updating dependency version properties in alignment with sample orchestrated build file at: https://dotnetfeed.blob.core.windows.net/orchestrated/20171129-03/orchestration-metadata/PackageVersions.props The access key is already resolved: 'CoreSetupBlobAccessTokenParam' Fixed another typo... Fixed typo... The first pass will need the extra args [same as run-build.ps1]. Dependency Uptake: download and import a package version props file. Accounting for MSRC builds with pre-set 'CoreSetupBlobRootUrl' and 'CoreSetupBlobAccessToke' properties. Changes per code review... ... TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/EmptyItemGroup/EmptyItemGroup.csproj TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Lib/Lib.csproj TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/Net452AndNetCoreApp10Lib/Net452AndNetCoreApp10Lib.csproj TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/ValidRef/ValidRef.csproj TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/WithDoubledRef/WithDoubledRef.csproj TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/WithExistingRefCondOnItem/WithExistingRefCondOnItem.csproj TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/WithExistingRefCondWhitespaces/WithExistingRefCondWhitespaces.csproj TestAssets/NonRestoredTestProjects/DotnetAddP2PProjects/WithRefNoCondNonUniform/WithRefNoCondNonUniform.csproj TestAssets/TestProjects/AppWithMultipleFxAndTools/MSBuildAppWithMultipleFrameworksAndTools.csproj TestAssets/TestProjects/MSBuildAppWithMultipleFrameworksAndTools/MSBuildAppWithMultipleFrameworksAndTools.csproj TestAssets/TestProjects/XunitMulti/VSTestXunitDesktopAndNetCore.csproj build/BundledTemplates.props build/DependencyVersions.props build/NugetConfigFile.targets build/Test.targets build_projects/dotnet-cli-build/dotnet-cli-build.csproj dir.props run-build.sh src/Microsoft.DotNet.Archive/Microsoft.DotNet.Archive.csproj src/Microsoft.DotNet.Cli.Utils/Microsoft.DotNet.Cli.Utils.csproj src/Microsoft.DotNet.Configurer/Microsoft.DotNet.Configurer.csproj src/dotnet/dotnet.csproj src/redist/redist.csproj src/tool_fsharp/tool_fsc.csproj test/ArgumentForwardingTests/ArgumentForwardingTests.csproj test/EndToEnd/EndToEnd.csproj test/Microsoft.DotNet.Cli.Sln.Internal.Tests/Microsoft.DotNet.Cli.Sln.Internal.Tests.csproj test/Microsoft.DotNet.Cli.Utils.Tests/Microsoft.DotNet.Cli.Utils.Tests.csproj test/Microsoft.DotNet.Tools.Tests.Utilities/Microsoft.DotNet.Tools.Tests.Utilities.csproj test/Msbuild.Tests.Utilities/Msbuild.Tests.Utilities.csproj test/binding-redirects.Tests/binding-redirects.Tests.csproj test/dotnet-add-package.Tests/dotnet-add-package.Tests.csproj test/dotnet-add-reference.Tests/dotnet-add-reference.Tests.csproj test/dotnet-back-compat.Tests/dotnet-back-compat.Tests.csproj test/dotnet-help.Tests/dotnet-help.Tests.csproj test/dotnet-migrate.Tests/dotnet-migrate.Tests.csproj test/dotnet-new.Tests/dotnet-new.Tests.csproj test/dotnet-remove-package.Tests/dotnet-remove-package.Tests.csproj test/dotnet-remove-reference.Tests/dotnet-remove-reference.Tests.csproj test/dotnet-restore.Tests/dotnet-restore.Tests.csproj test/dotnet-sln-add.Tests/dotnet-sln-add.Tests.csproj test/dotnet.Tests/dotnet.Tests.csproj
178 lines
5.8 KiB
Bash
Executable file
178 lines
5.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#
|
|
# Copyright (c) .NET Foundation and contributors. All rights reserved.
|
|
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
#
|
|
|
|
set -e
|
|
|
|
machine_has() {
|
|
hash "$1" > /dev/null 2>&1
|
|
return $?
|
|
}
|
|
|
|
check_min_reqs() {
|
|
if ! machine_has "curl"; then
|
|
echo "run-build: Error: curl is required to download dotnet. Install curl to proceed." >&2
|
|
return 1
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
# args:
|
|
# remote_path - $1
|
|
# [out_path] - $2 - stdout if not provided
|
|
download() {
|
|
eval $invocation
|
|
|
|
local remote_path=$1
|
|
local out_path=${2:-}
|
|
|
|
local failed=false
|
|
if [ -z "$out_path" ]; then
|
|
curl --retry 10 -sSL --create-dirs $remote_path || failed=true
|
|
else
|
|
curl --retry 10 -sSL --create-dirs -o $out_path $remote_path || failed=true
|
|
fi
|
|
|
|
if [ "$failed" = true ]; then
|
|
echo "run-build: Error: Download failed" >&2
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
SOURCE="${BASH_SOURCE[0]}"
|
|
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
|
|
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
|
|
SOURCE="$(readlink "$SOURCE")"
|
|
[[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
|
|
done
|
|
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
|
|
REPOROOT="$DIR"
|
|
|
|
ARCHITECTURE="x64"
|
|
STAGE0_SOURCE_DIR=
|
|
|
|
source "$REPOROOT/scripts/common/_prettyprint.sh"
|
|
|
|
BUILD=1
|
|
|
|
LINUX_PORTABLE_INSTALL_ARGS=
|
|
CUSTOM_BUILD_ARGS=
|
|
|
|
# Set nuget package cache under the repo
|
|
[ -z $NUGET_PACKAGES ] && export NUGET_PACKAGES="$REPOROOT/.nuget/packages"
|
|
|
|
args=( )
|
|
|
|
while [[ $# > 0 ]]; do
|
|
lowerI="$(echo $1 | awk '{print tolower($0)}')"
|
|
case $lowerI in
|
|
-c|--configuration)
|
|
export CONFIGURATION=$2
|
|
shift
|
|
;;
|
|
--nopackage)
|
|
export DOTNET_BUILD_SKIP_PACKAGING=1
|
|
;;
|
|
--skip-prereqs)
|
|
# Allow CI to disable prereqs check since the CI has the pre-reqs but not ldconfig it seems
|
|
export DOTNET_INSTALL_SKIP_PREREQS=1
|
|
;;
|
|
--nobuild)
|
|
BUILD=0
|
|
;;
|
|
--architecture)
|
|
ARCHITECTURE=$2
|
|
shift
|
|
;;
|
|
--runtime-id)
|
|
CUSTOM_BUILD_ARGS="/p:Rid=\"$2\""
|
|
shift
|
|
;;
|
|
# This is here just to eat away this parameter because CI still passes this in.
|
|
--targets)
|
|
shift
|
|
;;
|
|
--linux-portable)
|
|
LINUX_PORTABLE_INSTALL_ARGS="--runtime-id linux-x64"
|
|
CUSTOM_BUILD_ARGS="/p:Rid=\"linux-x64\" /p:OSName=\"linux\" /p:IslinuxPortable=\"true\""
|
|
;;
|
|
--stage0)
|
|
STAGE0_SOURCE_DIR=$2
|
|
shift
|
|
;;
|
|
--help)
|
|
echo "Usage: $0 [--configuration <CONFIGURATION>] [--skip-prereqs] [--nopackage] [--docker <IMAGENAME>] [--help]"
|
|
echo ""
|
|
echo "Options:"
|
|
echo " --configuration <CONFIGURATION> Build the specified Configuration (Debug or Release, default: Debug)"
|
|
echo " --skip-prereqs Skip checks for pre-reqs in dotnet_install"
|
|
echo " --nopackage Skip packaging targets"
|
|
echo " --nobuild Skip building, showing the command that would be used to build"
|
|
echo " --docker <IMAGENAME> Build in Docker using the Dockerfile located in scripts/docker/IMAGENAME"
|
|
echo " --linux-portable Builds the Linux portable .NET Tools instead of a distro-specific version."
|
|
echo " --stage0 Set the stage0 source directory. The default is to download it from Azure."
|
|
echo " --help Display this help message"
|
|
exit 0
|
|
;;
|
|
*)
|
|
args=$@
|
|
break
|
|
;;
|
|
esac
|
|
|
|
shift
|
|
done
|
|
|
|
# Create an install directory for the stage 0 CLI
|
|
[ -z "$DOTNET_INSTALL_DIR" ] && export DOTNET_INSTALL_DIR=$REPOROOT/.dotnet_stage0/$ARCHITECTURE
|
|
[ -d "$DOTNET_INSTALL_DIR" ] || mkdir -p $DOTNET_INSTALL_DIR
|
|
|
|
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
|
|
|
# Enable verbose VS Test Console logging
|
|
export VSTEST_BUILD_TRACE=1
|
|
export VSTEST_TRACE_BUILD=1
|
|
|
|
|
|
# Don't resolve shared frameworks from user or global locations
|
|
export DOTNET_MULTILEVEL_LOOKUP=0
|
|
|
|
# Install a stage 0
|
|
if [ "$STAGE0_SOURCE_DIR" == "" ]; then
|
|
(set -x ; "$REPOROOT/scripts/obtain/dotnet-install.sh" --channel "master" --version "2.1.0-preview1-007172" --install-dir "$DOTNET_INSTALL_DIR" --architecture "$ARCHITECTURE" $LINUX_PORTABLE_INSTALL_ARGS)
|
|
else
|
|
echo "Copying bootstrap cli from $BOOTSTRAP_CLI"
|
|
cp -r $STAGE0_SOURCE_DIR/* "$DOTNET_INSTALL_DIR"
|
|
fi
|
|
|
|
EXIT_CODE=$?
|
|
if [ $EXIT_CODE != 0 ]; then
|
|
echo "run-build: Error: installing stage0 with exit code $EXIT_CODE." >&2
|
|
exit $EXIT_CODE
|
|
fi
|
|
|
|
# Put stage 0 on the PATH (for this shell only)
|
|
PATH="$DOTNET_INSTALL_DIR:$PATH"
|
|
|
|
# Increases the file descriptors limit for this bash. It prevents an issue we were hitting during restore
|
|
FILE_DESCRIPTOR_LIMIT=$( ulimit -n )
|
|
if [ $FILE_DESCRIPTOR_LIMIT -lt 1024 ]
|
|
then
|
|
echo "Increasing file description limit to 1024"
|
|
ulimit -n 1024
|
|
fi
|
|
|
|
# Disable first run since we want to control all package sources
|
|
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
|
|
|
echo "${args[@]}"
|
|
|
|
if [ $BUILD -eq 1 ]; then
|
|
dotnet msbuild build.proj /p:Architecture=$ARCHITECTURE $CUSTOM_BUILD_ARGS /p:GeneratePropsFile=true /t:WriteDynamicPropsToStaticPropsFiles "${args[@]}"
|
|
dotnet msbuild build.proj /m /v:normal /fl /flp:v=diag /p:Architecture=$ARCHITECTURE $CUSTOM_BUILD_ARGS "${args[@]}"
|
|
else
|
|
echo "Not building due to --nobuild"
|
|
echo "Command that would be run is: 'dotnet msbuild build.proj /m /p:Architecture=$ARCHITECTURE $CUSTOM_BUILD_ARGS $args'"
|
|
fi
|