From d4f088d3f405b1367fddb489611763b106ce5800 Mon Sep 17 00:00:00 2001 From: Davis Goodin Date: Fri, 23 Mar 2018 13:32:04 -0500 Subject: [PATCH 1/9] Update BuildTools to 2.1.0-preview2-02621-01 Move past breaks: Fix init-tools.sh. Update dotnet/standard commit to bring in fixes for the new version. When building the tarball, run Tools/init-tools.sh again to populate the packages/ directory with Microsoft.NETCore.Compilers (and any other future packages). --- BuildToolsVersion.txt | 2 +- build-source-tarball.sh | 14 ++++++++++++++ init-tools.sh | 4 ++-- src/standard | 2 +- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/BuildToolsVersion.txt b/BuildToolsVersion.txt index 4aaddd1c41..ad88e711d3 100644 --- a/BuildToolsVersion.txt +++ b/BuildToolsVersion.txt @@ -1 +1 @@ -2.1.0-preview1-02431-03 +2.1.0-preview2-02621-01 diff --git a/build-source-tarball.sh b/build-source-tarball.sh index 611321306b..d33090d19e 100755 --- a/build-source-tarball.sh +++ b/build-source-tarball.sh @@ -69,6 +69,20 @@ do fi done +echo "Initializing BuildTools package dependencies inside the tarball..." +# init-tools tries to copy from its script directory to Tools, which in this case is a copy to +# itself. This is an error. To avoid the error, use a temp dir that we immediately delete. +TEMP_TOOLS_DIR="$TARBALL_ROOT/ToolsTemp" +TARBALL_PACKAGES_DIR="$TARBALL_ROOT/packages" +# init-tools assumes the packages dir already exists. +mkdir -p "$TARBALL_PACKAGES_DIR" +( + set -x + "$TARBALL_ROOT/Tools/init-tools.sh" "$TARBALL_ROOT" "$TARBALL_ROOT/Tools/dotnetcli/dotnet" "$TEMP_TOOLS_DIR" "$TARBALL_PACKAGES_DIR" + rm -rf "$TEMP_TOOLS_DIR" +) +echo "Initialized BuildTools package dependencies inside the tarball. (Exit code $?)" + # Record commits for the source-build repo and all submodules, to aid in reproducibility. cat >$TARBALL_ROOT/source-build-info.txt << EOF source-build: diff --git a/init-tools.sh b/init-tools.sh index ad2995e68e..32bf39d5f5 100755 --- a/init-tools.sh +++ b/init-tools.sh @@ -148,11 +148,11 @@ if [ ! -e "$__BUILD_TOOLS_PATH" ]; then fi echo "Initializing BuildTools..." -echo "Running: $__BUILD_TOOLS_PATH/init-tools.sh $__scriptpath $__DOTNET_CMD $__TOOLRUNTIME_DIR" >> "$__init_tools_log" +echo "Running: $__BUILD_TOOLS_PATH/init-tools.sh $__scriptpath $__DOTNET_CMD $__TOOLRUNTIME_DIR $__PACKAGES_DIR" >> "$__init_tools_log" # Executables restored with .NET Core 2.0 do not have executable permission flags. https://github.com/NuGet/Home/issues/4424 chmod +x "$__BUILD_TOOLS_PATH/init-tools.sh" -"$__BUILD_TOOLS_PATH/init-tools.sh" "$__scriptpath" "$__DOTNET_CMD" "$__TOOLRUNTIME_DIR" >> "$__init_tools_log" +"$__BUILD_TOOLS_PATH/init-tools.sh" "$__scriptpath" "$__DOTNET_CMD" "$__TOOLRUNTIME_DIR" "$__PACKAGES_DIR" >> "$__init_tools_log" if [ "$?" != "0" ]; then echo "ERROR: An error occured when trying to initialize the tools."1>&2 display_error_message diff --git a/src/standard b/src/standard index 330eb8d167..bb2c2cb47d 160000 --- a/src/standard +++ b/src/standard @@ -1 +1 @@ -Subproject commit 330eb8d1678c95759fba4727e13fb7531c118727 +Subproject commit bb2c2cb47d21d12477f5af6f68ab9d698b6e245f From f7bd33a2f6e099796f7a1f43d31e14dc3278e506 Mon Sep 17 00:00:00 2001 From: Davis Goodin Date: Fri, 23 Mar 2018 14:11:13 -0500 Subject: [PATCH 2/9] Remove CoreCLR from known-good.proj --- repos/known-good.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repos/known-good.proj b/repos/known-good.proj index 777c7d193a..7a11d1d757 100644 --- a/repos/known-good.proj +++ b/repos/known-good.proj @@ -25,7 +25,7 @@ - + From 129e3ae7e14dcd3cd364a4f6c86bf4168dcb8abe Mon Sep 17 00:00:00 2001 From: Davis Goodin Date: Fri, 23 Mar 2018 14:41:37 -0500 Subject: [PATCH 3/9] Tell init-tools to use the prebuilt packages dir --- build-source-tarball.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/build-source-tarball.sh b/build-source-tarball.sh index d33090d19e..1df77c28ad 100755 --- a/build-source-tarball.sh +++ b/build-source-tarball.sh @@ -58,14 +58,16 @@ rm -rf $TARBALL_ROOT/Tools/dotnetcli/additionalDeps cp $SCRIPT_ROOT/support/tarball/build.sh $TARBALL_ROOT/build.sh -mkdir -p $TARBALL_ROOT/prebuilt/nuget-packages -find $SCRIPT_ROOT/packages -name '*.nupkg' -exec cp {} $TARBALL_ROOT/prebuilt/nuget-packages/ \; -find $SCRIPT_ROOT/bin/obj/x64/Release/nuget-packages -name '*.nupkg' -exec cp {} $TARBALL_ROOT/prebuilt/nuget-packages/ \; +TARBALL_PREBUILT_PACKAGES_DIR="$TARBALL_ROOT/prebuilt/nuget-packages" + +mkdir -p "$TARBALL_PREBUILT_PACKAGES_DIR" +find $SCRIPT_ROOT/packages -name '*.nupkg' -exec cp {} "$TARBALL_PREBUILT_PACKAGES_DIR" \; +find $SCRIPT_ROOT/bin/obj/x64/Release/nuget-packages -name '*.nupkg' -exec cp {} "$TARBALL_PREBUILT_PACKAGES_DIR" \; for built_package in $(find $SCRIPT_ROOT/bin/obj/x64/Release/blob-feed/packages/ -name '*.nupkg' | tr '[:upper:]' '[:lower:]') do - if [ -e $TARBALL_ROOT/prebuilt/nuget-packages/$(basename $built_package) ]; then - rm $TARBALL_ROOT/prebuilt/nuget-packages/$(basename $built_package) + if [ -e "$TARBALL_PREBUILT_PACKAGES_DIR/$(basename $built_package)" ]; then + rm "$TARBALL_PREBUILT_PACKAGES_DIR/$(basename $built_package)" fi done @@ -78,6 +80,7 @@ TARBALL_PACKAGES_DIR="$TARBALL_ROOT/packages" mkdir -p "$TARBALL_PACKAGES_DIR" ( set -x + export __INIT_TOOLS_RESTORE_ARGS="--source $TARBALL_PREBUILT_PACKAGES_DIR" "$TARBALL_ROOT/Tools/init-tools.sh" "$TARBALL_ROOT" "$TARBALL_ROOT/Tools/dotnetcli/dotnet" "$TEMP_TOOLS_DIR" "$TARBALL_PACKAGES_DIR" rm -rf "$TEMP_TOOLS_DIR" ) From e1b9595e76e088cf88d50674583e268a21913a5c Mon Sep 17 00:00:00 2001 From: Davis Goodin Date: Fri, 23 Mar 2018 15:40:10 -0500 Subject: [PATCH 4/9] Fix unrestricted tarball CI: handle relative path --- build-source-tarball.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build-source-tarball.sh b/build-source-tarball.sh index 1df77c28ad..120d14a342 100755 --- a/build-source-tarball.sh +++ b/build-source-tarball.sh @@ -80,7 +80,10 @@ TARBALL_PACKAGES_DIR="$TARBALL_ROOT/packages" mkdir -p "$TARBALL_PACKAGES_DIR" ( set -x - export __INIT_TOOLS_RESTORE_ARGS="--source $TARBALL_PREBUILT_PACKAGES_DIR" + + # dotnet restore doesn't seem to handle ".." in paths: get absolute name. + export __INIT_TOOLS_RESTORE_ARGS="--source $(cd "$TARBALL_PREBUILT_PACKAGES_DIR"; pwd -P)" + "$TARBALL_ROOT/Tools/init-tools.sh" "$TARBALL_ROOT" "$TARBALL_ROOT/Tools/dotnetcli/dotnet" "$TEMP_TOOLS_DIR" "$TARBALL_PACKAGES_DIR" rm -rf "$TEMP_TOOLS_DIR" ) From 731c44228b9f8dad93656917082b51f208296bef Mon Sep 17 00:00:00 2001 From: Davis Goodin Date: Fri, 23 Mar 2018 17:30:19 -0500 Subject: [PATCH 5/9] Add CoreCLR back, include missing tool package --- .gitmodules | 2 +- init-tools.msbuild | 3 ++- repos/known-good.proj | 2 +- src/coreclr | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index cf2a349250..144ca65b08 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "src/coreclr"] path = src/coreclr - url = https://github.com/dotnet/coreclr + url = https://github.com/dagood/coreclr branch = release/2.0.0 [submodule "src/roslyn"] path = src/roslyn diff --git a/init-tools.msbuild b/init-tools.msbuild index 59f1793127..a2e540dfe2 100644 --- a/init-tools.msbuild +++ b/init-tools.msbuild @@ -8,5 +8,6 @@ + - \ No newline at end of file + diff --git a/repos/known-good.proj b/repos/known-good.proj index 7a11d1d757..777c7d193a 100644 --- a/repos/known-good.proj +++ b/repos/known-good.proj @@ -25,7 +25,7 @@ - + diff --git a/src/coreclr b/src/coreclr index 61b057cbc4..8bf232c063 160000 --- a/src/coreclr +++ b/src/coreclr @@ -1 +1 @@ -Subproject commit 61b057cbc4f2c3dc223c93c6f099d59caba91d17 +Subproject commit 8bf232c063ad383701467a6d5a09dd4aa6974703 From 0351a0d0eb00428131e4e74fe6217fb06402cdd9 Mon Sep 17 00:00:00 2001 From: Davis Goodin Date: Sat, 24 Mar 2018 14:58:23 -0500 Subject: [PATCH 6/9] Work around a new BuildTools dependency on .git --- repos/dir.targets | 2 ++ 1 file changed, 2 insertions(+) diff --git a/repos/dir.targets b/repos/dir.targets index ef6f267ec8..c8ed44d4b1 100644 --- a/repos/dir.targets +++ b/repos/dir.targets @@ -4,6 +4,8 @@ + + From 1379e6ef67d897efb574dd7cd348cae993a9cc42 Mon Sep 17 00:00:00 2001 From: Davis Goodin Date: Sat, 24 Mar 2018 17:19:55 -0500 Subject: [PATCH 7/9] Move package expansion into tarball's build.sh --- build-source-tarball.sh | 31 ++++++------------------------- init-tools.msbuild | 4 +++- support/tarball/build.sh | 20 ++++++++++++++++++++ 3 files changed, 29 insertions(+), 26 deletions(-) diff --git a/build-source-tarball.sh b/build-source-tarball.sh index 120d14a342..5a800af10f 100755 --- a/build-source-tarball.sh +++ b/build-source-tarball.sh @@ -40,6 +40,7 @@ mkdir -p "$TARBALL_ROOT" cp $SCRIPT_ROOT/build.proj $TARBALL_ROOT/ cp $SCRIPT_ROOT/dir.props $TARBALL_ROOT/ +cp $SCRIPT_ROOT/init-tools.msbuild $TARBALL_ROOT/ cp $SCRIPT_ROOT/DotnetCLIVersion.txt $TARBALL_ROOT/ cp -r $SCRIPT_ROOT/keys $TARBALL_ROOT/ cp -r $SCRIPT_ROOT/patches $TARBALL_ROOT/ @@ -58,37 +59,17 @@ rm -rf $TARBALL_ROOT/Tools/dotnetcli/additionalDeps cp $SCRIPT_ROOT/support/tarball/build.sh $TARBALL_ROOT/build.sh -TARBALL_PREBUILT_PACKAGES_DIR="$TARBALL_ROOT/prebuilt/nuget-packages" - -mkdir -p "$TARBALL_PREBUILT_PACKAGES_DIR" -find $SCRIPT_ROOT/packages -name '*.nupkg' -exec cp {} "$TARBALL_PREBUILT_PACKAGES_DIR" \; -find $SCRIPT_ROOT/bin/obj/x64/Release/nuget-packages -name '*.nupkg' -exec cp {} "$TARBALL_PREBUILT_PACKAGES_DIR" \; +mkdir -p $TARBALL_ROOT/prebuilt/nuget-packages +find $SCRIPT_ROOT/packages -name '*.nupkg' -exec cp {} $TARBALL_ROOT/prebuilt/nuget-packages/ \; +find $SCRIPT_ROOT/bin/obj/x64/Release/nuget-packages -name '*.nupkg' -exec cp {} $TARBALL_ROOT/prebuilt/nuget-packages/ \; for built_package in $(find $SCRIPT_ROOT/bin/obj/x64/Release/blob-feed/packages/ -name '*.nupkg' | tr '[:upper:]' '[:lower:]') do - if [ -e "$TARBALL_PREBUILT_PACKAGES_DIR/$(basename $built_package)" ]; then - rm "$TARBALL_PREBUILT_PACKAGES_DIR/$(basename $built_package)" + if [ -e $TARBALL_ROOT/prebuilt/nuget-packages/$(basename $built_package) ]; then + rm $TARBALL_ROOT/prebuilt/nuget-packages/$(basename $built_package) fi done -echo "Initializing BuildTools package dependencies inside the tarball..." -# init-tools tries to copy from its script directory to Tools, which in this case is a copy to -# itself. This is an error. To avoid the error, use a temp dir that we immediately delete. -TEMP_TOOLS_DIR="$TARBALL_ROOT/ToolsTemp" -TARBALL_PACKAGES_DIR="$TARBALL_ROOT/packages" -# init-tools assumes the packages dir already exists. -mkdir -p "$TARBALL_PACKAGES_DIR" -( - set -x - - # dotnet restore doesn't seem to handle ".." in paths: get absolute name. - export __INIT_TOOLS_RESTORE_ARGS="--source $(cd "$TARBALL_PREBUILT_PACKAGES_DIR"; pwd -P)" - - "$TARBALL_ROOT/Tools/init-tools.sh" "$TARBALL_ROOT" "$TARBALL_ROOT/Tools/dotnetcli/dotnet" "$TEMP_TOOLS_DIR" "$TARBALL_PACKAGES_DIR" - rm -rf "$TEMP_TOOLS_DIR" -) -echo "Initialized BuildTools package dependencies inside the tarball. (Exit code $?)" - # Record commits for the source-build repo and all submodules, to aid in reproducibility. cat >$TARBALL_ROOT/source-build-info.txt << EOF source-build: diff --git a/init-tools.msbuild b/init-tools.msbuild index a2e540dfe2..523872f834 100644 --- a/init-tools.msbuild +++ b/init-tools.msbuild @@ -6,7 +6,9 @@ $(MSBuildThisFileDirectory)Tools/$(BuildToolsPackageVersion) - + diff --git a/support/tarball/build.sh b/support/tarball/build.sh index e1a0a477a3..c44712403e 100755 --- a/support/tarball/build.sh +++ b/support/tarball/build.sh @@ -12,5 +12,25 @@ export NUGET_PACKAGES="$SCRIPT_ROOT/packages/" MSBUILD_ARGUMENTS=("/p:OfflineBuild=true" "/flp:v=detailed" "/clp:v=detailed") +echo "Expanding BuildTools dependencies into packages directory..." +# init-tools tries to copy from its script directory to Tools, which in this case is a copy to +# itself. This is an error. To avoid the error, use a temp dir that we immediately delete. +TEMP_TOOLS_DIR="$SCRIPT_ROOT/ToolsTemp" +PREBUILT_PACKAGE_SOURCE="$SCRIPT_ROOT/prebuilt/nuget-packages" +( + set -x + + "$CLI_ROOT/dotnet" restore "$SCRIPT_ROOT/init-tools.msbuild" --no-cache --packages "$SCRIPT_ROOT/packages" --source "$PREBUILT_PACKAGE_SOURCE" || exit $? + + export __INIT_TOOLS_RESTORE_ARGS="--source $PREBUILT_PACKAGE_SOURCE" || exit $? + "$SCRIPT_ROOT/Tools/init-tools.sh" "$SCRIPT_ROOT" "$SCRIPT_ROOT/Tools/dotnetcli/dotnet" "$TEMP_TOOLS_DIR" "$SCRIPT_ROOT/packages" || exit $? + + rm -rf "$TEMP_TOOLS_DIR" || exit $? +) > "$SCRIPT_ROOT/init-tools.log" 2>&1 || ( + cat "$SCRIPT_ROOT/init-tools.log" + echo "ERROR: Failed to expand BuildTools dependencies. Detailed log above." + exit 1 +) + $CLI_ROOT/dotnet $CLI_ROOT/sdk/$CLI_VERSION/MSBuild.dll $SCRIPT_ROOT/tools-local/init-build.proj /t:WriteDynamicPropsToStaticPropsFiles /p:GeneratingStaticPropertiesFile=true ${MSBUILD_ARGUMENTS[@]} "$@" $CLI_ROOT/dotnet $CLI_ROOT/sdk/$CLI_VERSION/MSBuild.dll $SCRIPT_ROOT/build.proj ${MSBUILD_ARGUMENTS[@]} "$@" From dc038133016f511a3a56f17f53bf583e77b10f5d Mon Sep 17 00:00:00 2001 From: Davis Goodin Date: Mon, 26 Mar 2018 15:09:20 -0500 Subject: [PATCH 8/9] Revert from dagood/coreclr to dotnet/coreclr The commit is now on a dev branch so we don't depend on the dagood fork. --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 144ca65b08..cf2a349250 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "src/coreclr"] path = src/coreclr - url = https://github.com/dagood/coreclr + url = https://github.com/dotnet/coreclr branch = release/2.0.0 [submodule "src/roslyn"] path = src/roslyn From 8f123eab183c82962cdd810f61e4c417d4defa26 Mon Sep 17 00:00:00 2001 From: Davis Goodin Date: Mon, 26 Mar 2018 15:12:25 -0500 Subject: [PATCH 9/9] Explain "set -x" --- support/tarball/build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/support/tarball/build.sh b/support/tarball/build.sh index c44712403e..33c72852e3 100755 --- a/support/tarball/build.sh +++ b/support/tarball/build.sh @@ -18,6 +18,7 @@ echo "Expanding BuildTools dependencies into packages directory..." TEMP_TOOLS_DIR="$SCRIPT_ROOT/ToolsTemp" PREBUILT_PACKAGE_SOURCE="$SCRIPT_ROOT/prebuilt/nuget-packages" ( + # Log the commands that run. set -x "$CLI_ROOT/dotnet" restore "$SCRIPT_ROOT/init-tools.msbuild" --no-cache --packages "$SCRIPT_ROOT/packages" --source "$PREBUILT_PACKAGE_SOURCE" || exit $?