From 749afddd027145e1c9ff8ae06c6d5a3938752de0 Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Fri, 8 Dec 2023 11:51:37 -0500 Subject: [PATCH 01/18] Initial attempt at a Mac build --- eng/pipelines/templates/jobs/vmr-build.yml | 18 ++++++++- .../templates/stages/vmr-cross-build.yml | 38 +++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/eng/pipelines/templates/jobs/vmr-build.yml b/eng/pipelines/templates/jobs/vmr-build.yml index a92b4dca5..ef9827d71 100644 --- a/eng/pipelines/templates/jobs/vmr-build.yml +++ b/eng/pipelines/templates/jobs/vmr-build.yml @@ -210,7 +210,14 @@ jobs: echo "##vso[task.setvariable variable=additionalBuildArgs]--with-sdk /vmr/.dotnet" fi - docker run --rm -v "$(sourcesPath):/vmr" -w /vmr ${{ parameters.container }} ./prep.sh $customPrepArgs + # Only use Docker stuff on Linux + if [[ "`uname -s`" == "Linux" ]]; then + dockerPrefix='docker run --rm -v "$(sourcesPath):/vmr" -w /vmr ${{ parameters.container }}' + else + dockerPrefix='' + fi + + $dockerPrefix ./prep.sh $customPrepArgs displayName: Prep the Build - script: | @@ -252,7 +259,14 @@ jobs: extraBuildProperties="$extraBuildProperties /p:OverrideTargetRid=${{ parameters.targetRid }}" fi - docker run --rm -v "$(sourcesPath):/vmr" -w /vmr $customRunArgs ${{ parameters.container }} ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties + # Only use Docker stuff on Linux + if [[ "`uname -s`" == "Linux" ]]; then + dockerPrefix='docker run --rm -v "$(sourcesPath):/vmr" -w /vmr ${{ parameters.container }}' + else + dockerPrefix='' + fi + + ${dockerPrefix} ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties displayName: Build # Don't run tests if overriding RID, we don't support that for now diff --git a/eng/pipelines/templates/stages/vmr-cross-build.yml b/eng/pipelines/templates/stages/vmr-cross-build.yml index 758bdaaf2..e4c7d45a0 100644 --- a/eng/pipelines/templates/stages/vmr-cross-build.yml +++ b/eng/pipelines/templates/stages/vmr-cross-build.yml @@ -34,6 +34,10 @@ parameters: name: NetCore-Public-XL demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open + # Mac + poolMac: + vmImage: 'macos-12' + stages: - stage: VMR_PoC_Build displayName: VMR PoC-Build @@ -105,3 +109,37 @@ stages: withPreviousSDK: false # 🚫 crossRootFs: '/crossrootfs/arm64' # 📝 targetRid: 'linux-arm64' # 📝 + + - template: ../jobs/vmr-build.yml + parameters: + # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline + buildName: OSXCrossX64_Online_MsftSdk + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + architecture: x64 + pool: + vmImage: ${{ parameters.poolMac }} + buildFromArchive: false # 🚫 + enablePoison: false # 🚫 + excludeOmniSharpTests: true # ✅ + runOnline: true # ✅ + useMonoRuntime: true # ✅ + withPreviousSDK: false # 🚫 + targetRid: 'osx-x64' # 📝 + + - template: ../jobs/vmr-build.yml + parameters: + # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline + buildName: OSXCrossArm64_Online_MsftSdk + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + architecture: x64 + pool: + vmImage: ${{ parameters.poolMac }} + buildFromArchive: false # 🚫 + enablePoison: false # 🚫 + excludeOmniSharpTests: true # ✅ + runOnline: true # ✅ + useMonoRuntime: true # ✅ + withPreviousSDK: false # 🚫 + targetRid: 'osx-arm64' # 📝 From 84c4a02d4a2388d5340a40f65205646ba73cee18 Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Fri, 8 Dec 2023 11:54:40 -0500 Subject: [PATCH 02/18] Try an empty container to appease template --- eng/pipelines/templates/stages/vmr-cross-build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/eng/pipelines/templates/stages/vmr-cross-build.yml b/eng/pipelines/templates/stages/vmr-cross-build.yml index e4c7d45a0..1e8755d5b 100644 --- a/eng/pipelines/templates/stages/vmr-cross-build.yml +++ b/eng/pipelines/templates/stages/vmr-cross-build.yml @@ -119,6 +119,7 @@ stages: architecture: x64 pool: vmImage: ${{ parameters.poolMac }} + container: '' buildFromArchive: false # 🚫 enablePoison: false # 🚫 excludeOmniSharpTests: true # ✅ @@ -136,6 +137,7 @@ stages: architecture: x64 pool: vmImage: ${{ parameters.poolMac }} + container: '' buildFromArchive: false # 🚫 enablePoison: false # 🚫 excludeOmniSharpTests: true # ✅ From ff83a564335680cae0de240762dcffb56eb87cee Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Fri, 8 Dec 2023 11:56:29 -0500 Subject: [PATCH 03/18] Weird quoting --- eng/pipelines/templates/stages/vmr-cross-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/pipelines/templates/stages/vmr-cross-build.yml b/eng/pipelines/templates/stages/vmr-cross-build.yml index 1e8755d5b..428ac3659 100644 --- a/eng/pipelines/templates/stages/vmr-cross-build.yml +++ b/eng/pipelines/templates/stages/vmr-cross-build.yml @@ -36,7 +36,7 @@ parameters: # Mac poolMac: - vmImage: 'macos-12' + vmImage: macos-12 stages: - stage: VMR_PoC_Build From a4e452697e4397d68465e2c739e744e014e91ee5 Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Fri, 8 Dec 2023 11:59:56 -0500 Subject: [PATCH 04/18] Fix child object mistake --- eng/pipelines/templates/stages/vmr-cross-build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/pipelines/templates/stages/vmr-cross-build.yml b/eng/pipelines/templates/stages/vmr-cross-build.yml index 428ac3659..37361c117 100644 --- a/eng/pipelines/templates/stages/vmr-cross-build.yml +++ b/eng/pipelines/templates/stages/vmr-cross-build.yml @@ -36,7 +36,7 @@ parameters: # Mac poolMac: - vmImage: macos-12 + vmImage: 'macos-12' stages: - stage: VMR_PoC_Build @@ -118,7 +118,7 @@ stages: vmrBranch: ${{ variables.VmrBranch }} architecture: x64 pool: - vmImage: ${{ parameters.poolMac }} + vmImage: ${{ parameters.poolMac.vmImage }} container: '' buildFromArchive: false # 🚫 enablePoison: false # 🚫 @@ -136,7 +136,7 @@ stages: vmrBranch: ${{ variables.VmrBranch }} architecture: x64 pool: - vmImage: ${{ parameters.poolMac }} + vmImage: ${{ parameters.poolMac.vmImage }} container: '' buildFromArchive: false # 🚫 enablePoison: false # 🚫 From 4bea2900552a1ee16a994188632d8de86fb17ff7 Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Fri, 8 Dec 2023 12:12:49 -0500 Subject: [PATCH 05/18] Flatten docker stuff a bit --- eng/pipelines/templates/jobs/vmr-build.yml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/eng/pipelines/templates/jobs/vmr-build.yml b/eng/pipelines/templates/jobs/vmr-build.yml index ef9827d71..3046488bc 100644 --- a/eng/pipelines/templates/jobs/vmr-build.yml +++ b/eng/pipelines/templates/jobs/vmr-build.yml @@ -212,12 +212,10 @@ jobs: # Only use Docker stuff on Linux if [[ "`uname -s`" == "Linux" ]]; then - dockerPrefix='docker run --rm -v "$(sourcesPath):/vmr" -w /vmr ${{ parameters.container }}' + docker run --rm -v "$(sourcesPath):/vmr" -w /vmr ${{ parameters.container }} ./prep.sh $customPrepArgs else - dockerPrefix='' + ./prep.sh $customPrepArgs fi - - $dockerPrefix ./prep.sh $customPrepArgs displayName: Prep the Build - script: | @@ -261,12 +259,10 @@ jobs: # Only use Docker stuff on Linux if [[ "`uname -s`" == "Linux" ]]; then - dockerPrefix='docker run --rm -v "$(sourcesPath):/vmr" -w /vmr ${{ parameters.container }}' + docker run --rm -v "$(sourcesPath):/vmr" -w /vmr ${{ parameters.container }} ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties else - dockerPrefix='' + ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties fi - - ${dockerPrefix} ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties displayName: Build # Don't run tests if overriding RID, we don't support that for now From af8e0cc0224926413d03231f36ddfa64c08ec813 Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Fri, 8 Dec 2023 13:02:00 -0500 Subject: [PATCH 06/18] copy-paste error --- eng/pipelines/templates/jobs/vmr-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/pipelines/templates/jobs/vmr-build.yml b/eng/pipelines/templates/jobs/vmr-build.yml index 3046488bc..7ecefb049 100644 --- a/eng/pipelines/templates/jobs/vmr-build.yml +++ b/eng/pipelines/templates/jobs/vmr-build.yml @@ -259,7 +259,7 @@ jobs: # Only use Docker stuff on Linux if [[ "`uname -s`" == "Linux" ]]; then - docker run --rm -v "$(sourcesPath):/vmr" -w /vmr ${{ parameters.container }} ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties + docker run --rm -v "$(sourcesPath):/vmr" -w /vmr $customRunArgs ${{ parameters.container }} ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties else ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties fi From deecc351cfa15a6301e37a5309b37c203a08c3bb Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Fri, 8 Dec 2023 13:04:38 -0500 Subject: [PATCH 07/18] Add debug spew to figure out unreproducible Mac failure --- eng/vmr-sync.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/eng/vmr-sync.sh b/eng/vmr-sync.sh index 0e0a5b275..2421fcc66 100755 --- a/eng/vmr-sync.sh +++ b/eng/vmr-sync.sh @@ -66,15 +66,20 @@ source="${BASH_SOURCE[0]}" +echo "*** DEBUG source=$source" + # resolve $source until the file is no longer a symlink while [[ -h "$source" ]]; do scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" +echo "*** DEBUG scriptroot=$scriptroot" source="$(readlink "$source")" +echo "*** DEBUG source=$source" # if $source was a relative symlink, we need to resolve it relative to the path where the # symlink file was located [[ $source != /* ]] && source="$scriptroot/$source" done scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" +echo "*** DEBUG scriptroot=$scriptroot" function print_help () { sed -n '/^### /,/^$/p' "$source" | cut -b 5- @@ -95,6 +100,7 @@ function highlight () { } installer_dir=$(realpath "$scriptroot/../") +echo "*** DEBUG installer_dir=$installer_dir" tmp_dir='' vmr_dir='' From fc3bfe570bbe4a6817f62d83003957b5f5ddfab1 Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Fri, 8 Dec 2023 13:11:15 -0500 Subject: [PATCH 08/18] testing --- eng/vmr-sync.sh | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/eng/vmr-sync.sh b/eng/vmr-sync.sh index 2421fcc66..a90a853c3 100755 --- a/eng/vmr-sync.sh +++ b/eng/vmr-sync.sh @@ -66,20 +66,15 @@ source="${BASH_SOURCE[0]}" -echo "*** DEBUG source=$source" - # resolve $source until the file is no longer a symlink while [[ -h "$source" ]]; do scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" -echo "*** DEBUG scriptroot=$scriptroot" source="$(readlink "$source")" -echo "*** DEBUG source=$source" # if $source was a relative symlink, we need to resolve it relative to the path where the # symlink file was located [[ $source != /* ]] && source="$scriptroot/$source" done scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" -echo "*** DEBUG scriptroot=$scriptroot" function print_help () { sed -n '/^### /,/^$/p' "$source" | cut -b 5- @@ -99,8 +94,8 @@ function highlight () { echo "${COLOR_CYAN}$FAILURE_PREFIX${1//${COLOR_RESET}/${COLOR_CYAN}}${COLOR_CLEAR}" } +which realpath installer_dir=$(realpath "$scriptroot/../") -echo "*** DEBUG installer_dir=$installer_dir" tmp_dir='' vmr_dir='' From 06c4afe326b76a9dce750bcf21190b5d0fbb7920 Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Fri, 8 Dec 2023 15:39:37 -0500 Subject: [PATCH 09/18] more testing --- eng/vmr-sync.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/vmr-sync.sh b/eng/vmr-sync.sh index a90a853c3..3f668a4cf 100755 --- a/eng/vmr-sync.sh +++ b/eng/vmr-sync.sh @@ -94,7 +94,7 @@ function highlight () { echo "${COLOR_CYAN}$FAILURE_PREFIX${1//${COLOR_RESET}/${COLOR_CYAN}}${COLOR_CLEAR}" } -which realpath +echo "*** DEBUG $(which realpath)" installer_dir=$(realpath "$scriptroot/../") tmp_dir='' From 38f4b80a0eaeff681028fc330486af1abf904c0c Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Fri, 8 Dec 2023 15:51:29 -0500 Subject: [PATCH 10/18] Make VMR sync work on macOS 12, hopefully --- eng/vmr-sync.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/eng/vmr-sync.sh b/eng/vmr-sync.sh index 3f668a4cf..a9f902180 100755 --- a/eng/vmr-sync.sh +++ b/eng/vmr-sync.sh @@ -94,8 +94,8 @@ function highlight () { echo "${COLOR_CYAN}$FAILURE_PREFIX${1//${COLOR_RESET}/${COLOR_CYAN}}${COLOR_CLEAR}" } -echo "*** DEBUG $(which realpath)" -installer_dir=$(realpath "$scriptroot/../") +# realpath is not available in macOS 12, try horrible-but-portable workaround +installer_dir=$(cd "$scriptroot/../"; pwd -P) tmp_dir='' vmr_dir='' @@ -239,7 +239,8 @@ set -e highlight 'Installing .NET, preparing the tooling..' source "$scriptroot/common/tools.sh" InitializeDotNetCli true -dotnet=$(realpath "$scriptroot/../.dotnet/dotnet") +dotnetDir=$( cd $scriptroot/../.dotnet/; pwd -P ) +dotnet=$dotnetDir/dotnet "$dotnet" tool restore highlight "Starting the synchronization of '$repository'.." From 2ab68b2bdc8c8052b1edc3af0c204c9e57da09d8 Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Fri, 8 Dec 2023 15:58:57 -0500 Subject: [PATCH 11/18] `cd` to build directory, since we aren't setting a Docker workdir --- eng/pipelines/templates/jobs/vmr-build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/eng/pipelines/templates/jobs/vmr-build.yml b/eng/pipelines/templates/jobs/vmr-build.yml index 7ecefb049..46067ab61 100644 --- a/eng/pipelines/templates/jobs/vmr-build.yml +++ b/eng/pipelines/templates/jobs/vmr-build.yml @@ -214,6 +214,7 @@ jobs: if [[ "`uname -s`" == "Linux" ]]; then docker run --rm -v "$(sourcesPath):/vmr" -w /vmr ${{ parameters.container }} ./prep.sh $customPrepArgs else + cd $(sourcesPath) ./prep.sh $customPrepArgs fi displayName: Prep the Build @@ -261,6 +262,7 @@ jobs: if [[ "`uname -s`" == "Linux" ]]; then docker run --rm -v "$(sourcesPath):/vmr" -w /vmr $customRunArgs ${{ parameters.container }} ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties else + cd $(sourcesPath) ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties fi displayName: Build From d450a51e85368835e8d8eda72c7aebf878af90da Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Tue, 12 Dec 2023 15:44:05 -0500 Subject: [PATCH 12/18] Gotta pass CROSSCOMPILE=1 for x64 Macs to build osx-arm64 --- eng/pipelines/templates/jobs/vmr-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/pipelines/templates/jobs/vmr-build.yml b/eng/pipelines/templates/jobs/vmr-build.yml index 46067ab61..37457a9d6 100644 --- a/eng/pipelines/templates/jobs/vmr-build.yml +++ b/eng/pipelines/templates/jobs/vmr-build.yml @@ -263,7 +263,7 @@ jobs: docker run --rm -v "$(sourcesPath):/vmr" -w /vmr $customRunArgs ${{ parameters.container }} ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties else cd $(sourcesPath) - ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties + CROSSCOMPILE=1 ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties fi displayName: Build From e61e75584adb35dea25f93fdda67f5384940a9f1 Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Thu, 14 Dec 2023 09:24:20 -0500 Subject: [PATCH 13/18] Override RID in SDK, currently it misbehaves for Mac cross builds --- src/SourceBuild/content/repo-projects/sdk.proj | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/SourceBuild/content/repo-projects/sdk.proj b/src/SourceBuild/content/repo-projects/sdk.proj index a77e3f092..e1e865d7b 100644 --- a/src/SourceBuild/content/repo-projects/sdk.proj +++ b/src/SourceBuild/content/repo-projects/sdk.proj @@ -6,6 +6,11 @@ $(BuildCommandArgs) $(FlagParameterPrefix)nodereuse $(ArcadeFalseBoolBuildArg) $(BuildCommandArgs) /p:PackageProjectUrl=https://github.com/dotnet/sdk + $(TargetRid) + osx-$(Platform) + freebsd-$(Platform) + win-$(Platform) + <_platformIndex>$(NETCoreSdkPortableRuntimeIdentifier.LastIndexOf('-')) <_baseOS>$(NETCoreSdkPortableRuntimeIdentifier.Substring(0, $(_platformIndex))) @@ -13,7 +18,7 @@ <_targetPortableArch>$(Platform) <_targetPortableArch Condition="'$(OverrideTargetArch)' != ''">$(OverrideTargetArch) $(BuildCommandArgs) /p:PortableRid=$(_baseOS)-$(_targetPortableArch) - $(BuildCommandArgs) /p:TargetRid=$(TargetRid) + $(BuildCommandArgs) /p:TargetRid=$(OverrideTargetRid) $(BuildCommandArgs) /p:NativeAotSupported=false From 1a4672e257b68010c91af3b4c1ff94ab1740945c Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Thu, 14 Dec 2023 09:28:14 -0500 Subject: [PATCH 14/18] More portable conditional --- eng/pipelines/templates/jobs/vmr-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/pipelines/templates/jobs/vmr-build.yml b/eng/pipelines/templates/jobs/vmr-build.yml index 37457a9d6..d3ea0738d 100644 --- a/eng/pipelines/templates/jobs/vmr-build.yml +++ b/eng/pipelines/templates/jobs/vmr-build.yml @@ -211,7 +211,7 @@ jobs: fi # Only use Docker stuff on Linux - if [[ "`uname -s`" == "Linux" ]]; then + if [[ -n "${{ parameters.container }}" ]]; then docker run --rm -v "$(sourcesPath):/vmr" -w /vmr ${{ parameters.container }} ./prep.sh $customPrepArgs else cd $(sourcesPath) From 077478e8228aadc815fd0319fd1ac76ddf6228e2 Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Fri, 15 Dec 2023 09:07:49 -0500 Subject: [PATCH 15/18] Genericize build script a bit better, for easier sharing between Linux/Mac --- eng/pipelines/templates/jobs/vmr-build.yml | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/eng/pipelines/templates/jobs/vmr-build.yml b/eng/pipelines/templates/jobs/vmr-build.yml index d3ea0738d..dbe9d9b5b 100644 --- a/eng/pipelines/templates/jobs/vmr-build.yml +++ b/eng/pipelines/templates/jobs/vmr-build.yml @@ -245,13 +245,18 @@ jobs: customBuildArgs="$customBuildArgs --use-mono-runtime" fi - if [[ ! -z '${{ parameters.crossRootFs }}' || ! -z '${{ parameters.targetRid }}' ]]; then + if [[ -n "${{ parameters.container }}" ]]; then + useDocker=true + fi + + if [[ ! -z '${{ parameters.targetRid }}' ]]; then extraBuildProperties="--" + customEnvVars="$customEnvVars CROSSCOMPILE=1" + extraBuildProperties="$extraBuildProperties /p:PortableBuild=true /p:DotNetBuildVertical=true" fi if [[ ! -z '${{ parameters.crossRootFs }}' ]]; then - customRunArgs="$customRunArgs -e CROSSCOMPILE=1 -e ROOTFS_DIR=${{ parameters.crossRootFs}}" - extraBuildProperties="$extraBuildProperties /p:PortableBuild=true /p:DotNetBuildVertical=true" + customEnvVars="$customEnvVars ROOTFS_DIR=${{ parameters.crossRootFs}}" fi if [[ ! -z '${{ parameters.targetRid }}' ]]; then @@ -259,11 +264,14 @@ jobs: fi # Only use Docker stuff on Linux - if [[ "`uname -s`" == "Linux" ]]; then - docker run --rm -v "$(sourcesPath):/vmr" -w /vmr $customRunArgs ${{ parameters.container }} ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties + if [[ "$useDocker" == "true" ]]; then + for envVar in $customEnvVars; do + customEnvVarsWithDockerSyntax="$customEnvVarsWithDockerSyntax -e $envVar" + done + docker run --rm -v "$(sourcesPath):/vmr" -w /vmr $customEnvVarsWithDockerSyntax ${{ parameters.container }} ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties else cd $(sourcesPath) - CROSSCOMPILE=1 ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties + $customEnvVars ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties fi displayName: Build From 711f7265a65f39c9f41bc0eb3b11814db97ad2b9 Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Fri, 15 Dec 2023 09:36:46 -0500 Subject: [PATCH 16/18] Maybe fix env var issue on Mac --- eng/pipelines/templates/jobs/vmr-build.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/eng/pipelines/templates/jobs/vmr-build.yml b/eng/pipelines/templates/jobs/vmr-build.yml index dbe9d9b5b..1d601dfcd 100644 --- a/eng/pipelines/templates/jobs/vmr-build.yml +++ b/eng/pipelines/templates/jobs/vmr-build.yml @@ -270,8 +270,11 @@ jobs: done docker run --rm -v "$(sourcesPath):/vmr" -w /vmr $customEnvVarsWithDockerSyntax ${{ parameters.container }} ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties else + for envVar in $customEnvVars; do + customEnvVarsWithBashSyntax="$customEnvVarsWithBashSyntax export $envVar;" + done cd $(sourcesPath) - $customEnvVars ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties + $customEnvVarsWithBashSyntax ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties fi displayName: Build From 71b3db97040ffcf670af2eabcf61522a9971ff6a Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Fri, 15 Dec 2023 09:46:52 -0500 Subject: [PATCH 17/18] Use eval --- eng/pipelines/templates/jobs/vmr-build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eng/pipelines/templates/jobs/vmr-build.yml b/eng/pipelines/templates/jobs/vmr-build.yml index 1d601dfcd..e327ce3e0 100644 --- a/eng/pipelines/templates/jobs/vmr-build.yml +++ b/eng/pipelines/templates/jobs/vmr-build.yml @@ -274,7 +274,8 @@ jobs: customEnvVarsWithBashSyntax="$customEnvVarsWithBashSyntax export $envVar;" done cd $(sourcesPath) - $customEnvVarsWithBashSyntax ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties + eval $customEnvVarsWithBashSyntax + ./build.sh --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties fi displayName: Build From a5fc87496a8c04be2131266ae7da272740000a6e Mon Sep 17 00:00:00 2001 From: Jo Shields Date: Mon, 18 Dec 2023 15:44:13 -0500 Subject: [PATCH 18/18] Move build commit to CustomEnvVars, or it's squashed by Docker vs Bash logic --- eng/pipelines/templates/jobs/vmr-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/pipelines/templates/jobs/vmr-build.yml b/eng/pipelines/templates/jobs/vmr-build.yml index e327ce3e0..b07e1540a 100644 --- a/eng/pipelines/templates/jobs/vmr-build.yml +++ b/eng/pipelines/templates/jobs/vmr-build.yml @@ -224,7 +224,7 @@ jobs: df -h # Allows Arcade to have access to the commit for the build - customRunArgs="-e BUILD_SOURCEVERSION" + customEnvVars="BUILD_SOURCEVERSION=$BUILD_SOURCEVERSION" customBuildArgs= if [[ '${{ parameters.runOnline }}' == 'True' ]]; then customBuildArgs='--online'