|
2 | 2 | set -euo pipefail |
3 | 3 | IFS=$'\n\t' |
4 | 4 |
|
| 5 | +usage() { |
| 6 | + echo "usage: $0 [options]" |
| 7 | + echo "options:" |
| 8 | + echo " --with-ref-packages <dir> use the specified directory of reference packages" |
| 9 | + echo " --with-packages <dir> use the specified directory of previously-built packages" |
| 10 | + echo "use -- to send the remaining arguments to MSBuild" |
| 11 | + echo "" |
| 12 | +} |
| 13 | + |
5 | 14 | SCRIPT_ROOT="$(cd -P "$( dirname "$0" )" && pwd)" |
| 15 | + |
| 16 | +MSBUILD_ARGUMENTS=("/p:OfflineBuild=true" "/flp:v=detailed") |
| 17 | +CUSTOM_REF_PACKAGES_DIR='' |
| 18 | +CUSTOM_PREVIOUSLY_BUILT_PACKAGES_DIR='' |
| 19 | + |
| 20 | +while :; do |
| 21 | + if [ $# -le 0 ]; then |
| 22 | + break |
| 23 | + fi |
| 24 | + |
| 25 | + lowerI="$(echo $1 | awk '{print tolower($0)}')" |
| 26 | + case $lowerI in |
| 27 | + --with-ref-packages) |
| 28 | + CUSTOM_REF_PACKAGES_DIR="$(cd -P "$2" && pwd)" |
| 29 | + if [ ! -d "$CUSTOM_REF_PACKAGES_DIR" ]; then |
| 30 | + echo "Custom reference packages directory '$CUSTOM_REF_PACKAGES_DIR' does not exist" |
| 31 | + exit 1 |
| 32 | + fi |
| 33 | + MSBUILD_ARGUMENTS+=( "/p:CustomReferencePackagesPath=$CUSTOM_REF_PACKAGES_DIR" ) |
| 34 | + shift |
| 35 | + ;; |
| 36 | + --with-packages) |
| 37 | + CUSTOM_PREVIOUSLY_BUILT_PACKAGES_DIR="$(cd -P "$2" && pwd)" |
| 38 | + if [ ! -d "$CUSTOM_PREVIOUSLY_BUILT_PACKAGES_DIR" ]; then |
| 39 | + echo "Custom prviously built packages directory '$CUSTOM_PREVIOUSLY_BUILT_PACKAGES_DIR' does not exist" |
| 40 | + exit 1 |
| 41 | + fi |
| 42 | + MSBUILD_ARGUMENTS+=( "/p:CustomPrebuiltSourceBuiltPackagesPath=$CUSTOM_PREVIOUSLY_BUILT_PACKAGES_DIR" ) |
| 43 | + shift |
| 44 | + ;; |
| 45 | + --) |
| 46 | + shift |
| 47 | + echo "Detected '--': passing remaining parameters '$@' as build.sh arguments." |
| 48 | + break |
| 49 | + ;; |
| 50 | + -?|-h|--help) |
| 51 | + usage |
| 52 | + exit 0 |
| 53 | + ;; |
| 54 | + *) |
| 55 | + echo "Unrecognized argument '$1'" |
| 56 | + usage |
| 57 | + exit 1 |
| 58 | + ;; |
| 59 | + esac |
| 60 | + shift |
| 61 | +done |
| 62 | + |
6 | 63 | sdkLine=`grep -m 1 'dotnet' "$SCRIPT_ROOT/global.json"` |
7 | 64 | sdkPattern="\"dotnet\" *: *\"(.*)\"" |
8 | 65 | if [[ $sdkLine =~ $sdkPattern ]]; then |
9 | 66 | export SDK_VERSION=${BASH_REMATCH[1]} |
10 | 67 | fi |
11 | 68 |
|
12 | | -sourceBuiltArchive=`find $SCRIPT_ROOT/packages/archive -maxdepth 1 -name 'Private.SourceBuilt.Artifacts*.tar.gz'` |
13 | | -if [ -f "$sourceBuiltArchive" ]; then |
14 | | - tar -xzf "$sourceBuiltArchive" -C /tmp PackageVersions.props |
15 | | - arcadeSdkLine=`grep -m 1 'MicrosoftDotNetArcadeSdkVersion' /tmp/PackageVersions.props` |
16 | | - versionPattern="<MicrosoftDotNetArcadeSdkVersion>(.*)</MicrosoftDotNetArcadeSdkVersion>" |
17 | | - if [[ $arcadeSdkLine =~ $versionPattern ]]; then |
18 | | - export ARCADE_BOOTSTRAP_VERSION=${BASH_REMATCH[1]} |
19 | | - fi |
| 69 | +packageVersionsPath='' |
20 | 70 |
|
21 | | - sourceLinkLine=`grep -m 1 'MicrosoftSourceLinkCommonVersion' /tmp/PackageVersions.props` |
22 | | - versionPattern="<MicrosoftSourceLinkCommonVersion>(.*)</MicrosoftSourceLinkCommonVersion>" |
23 | | - if [[ $sourceLinkLine =~ $versionPattern ]]; then |
24 | | - export SOURCE_LINK_BOOTSTRAP_VERSION=${BASH_REMATCH[1]} |
| 71 | +if [ -d "$SCRIPT_ROOT/packages/archive" ]; then |
| 72 | + sourceBuiltArchive=`find $SCRIPT_ROOT/packages/archive -maxdepth 1 -name 'Private.SourceBuilt.Artifacts*.tar.gz'` |
| 73 | + if [ -f "$sourceBuiltArchive" ]; then |
| 74 | + tar -xzf "$sourceBuiltArchive" -C /tmp PackageVersions.props |
| 75 | + packageVersionsPath=/tmp/PackageVersions.props |
25 | 76 | fi |
26 | | - |
27 | | - dotNetHostLine=`grep -m 1 'MicrosoftNETCoreDotNetHostVersion' /tmp/PackageVersions.props` |
28 | | - versionPattern="<MicrosoftNETCoreDotNetHostVersion>(.*)</MicrosoftNETCoreDotNetHostVersion>" |
29 | | - if [[ $dotNetHostLine =~ $versionPattern ]]; then |
30 | | - export DOTNET_HOST_BOOTSTRAP_VERSION=${BASH_REMATCH[1]} |
| 77 | +else |
| 78 | + if [ -f "$CUSTOM_PREVIOUSLY_BUILT_PACKAGES_DIR/PackageVersions.props" ]; then |
| 79 | + packageVersionsPath="$CUSTOM_PREVIOUSLY_BUILT_PACKAGES_DIR/PackageVersions.props" |
31 | 80 | fi |
32 | 81 | fi |
| 82 | + |
| 83 | +if [ ! -f "$packageVersionsPath" ]; then |
| 84 | + echo "Cannot find PackagesVersions.props. Debugging info:" |
| 85 | + echo " Attempted archive path: $SCRIPT_ROOT/packages/archive" |
| 86 | + echo " Attempted custom PVP path: $CUSTOM_PREVIOUSLY_BUILT_PACKAGES_DIR/PackageVersions.props" |
| 87 | + exit 1 |
| 88 | +fi |
| 89 | + |
| 90 | +arcadeSdkLine=`grep -m 1 'MicrosoftDotNetArcadeSdkVersion' "$packageVersionsPath"` |
| 91 | +versionPattern="<MicrosoftDotNetArcadeSdkVersion>(.*)</MicrosoftDotNetArcadeSdkVersion>" |
| 92 | +if [[ $arcadeSdkLine =~ $versionPattern ]]; then |
| 93 | + export ARCADE_BOOTSTRAP_VERSION=${BASH_REMATCH[1]} |
| 94 | +fi |
| 95 | + |
| 96 | +sourceLinkLine=`grep -m 1 'MicrosoftSourceLinkCommonVersion' "$packageVersionsPath"` |
| 97 | +versionPattern="<MicrosoftSourceLinkCommonVersion>(.*)</MicrosoftSourceLinkCommonVersion>" |
| 98 | +if [[ $sourceLinkLine =~ $versionPattern ]]; then |
| 99 | + export SOURCE_LINK_BOOTSTRAP_VERSION=${BASH_REMATCH[1]} |
| 100 | +fi |
| 101 | + |
| 102 | +dotNetHostLine=`grep -m 1 'MicrosoftNETCoreDotNetHostVersion' "$packageVersionsPath"` |
| 103 | +versionPattern="<MicrosoftNETCoreDotNetHostVersion>(.*)</MicrosoftNETCoreDotNetHostVersion>" |
| 104 | +if [[ $dotNetHostLine =~ $versionPattern ]]; then |
| 105 | + export DOTNET_HOST_BOOTSTRAP_VERSION=${BASH_REMATCH[1]} |
| 106 | +fi |
| 107 | + |
33 | 108 | echo "Found bootstrap SDK $SDK_VERSION, bootstrap Arcade $ARCADE_BOOTSTRAP_VERSION, bootstrap SourceLink $SOURCE_LINK_BOOTSTRAP_VERSION, bootstrap DotNetHost $DOTNET_HOST_BOOTSTRAP_VERSION" |
34 | 109 | CLI_ROOT="$SCRIPT_ROOT/.dotnet" |
35 | 110 |
|
36 | 111 | export DOTNET_CLI_TELEMETRY_OPTOUT=1 |
37 | 112 | export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 |
38 | 113 | export NUGET_PACKAGES="$SCRIPT_ROOT/packages/restored/" |
39 | 114 |
|
40 | | -MSBUILD_ARGUMENTS=("/p:OfflineBuild=true" "/flp:v=detailed") |
41 | | - |
42 | 115 | $CLI_ROOT/dotnet $CLI_ROOT/sdk/$SDK_VERSION/MSBuild.dll /bl:BuildXPlatTasks.binlog $SCRIPT_ROOT/tools-local/init-build.proj /t:BuildXPlatTasks ${MSBUILD_ARGUMENTS[@]} "$@" |
43 | 116 |
|
44 | 117 | echo "Rebuild reference assemblies" |
|
0 commit comments