diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 86fe520bdc33b7..bec303b3f9f459 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -92,87 +92,87 @@ - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 https://github.com/dotnet/runtime-assets @@ -332,9 +332,9 @@ https://github.com/dotnet/xharness 8cbf240a033d37ab8ebae11726bb3f867cfeb9e3 - + https://github.com/dotnet/arcade - ed14da5934ffb536cff8f41f8b5719334524cbed + 2001d73c8ff942331a73300ba61fa6164805b231 https://dev.azure.com/dnceng/internal/_git/dotnet-optimization diff --git a/eng/Versions.props b/eng/Versions.props index d584baae90ff5d..2bde6f73ad3597 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -83,22 +83,22 @@ 9.0.100-preview.5.24263.1 - 9.0.0-beta.24266.1 - 9.0.0-beta.24266.1 - 9.0.0-beta.24266.1 - 9.0.0-beta.24266.1 - 2.6.7-beta.24266.1 - 9.0.0-beta.24266.1 - 2.6.7-beta.24266.1 - 9.0.0-beta.24266.1 - 9.0.0-beta.24266.1 - 9.0.0-beta.24266.1 - 9.0.0-beta.24266.1 - 9.0.0-beta.24266.1 - 9.0.0-beta.24266.1 - 9.0.0-beta.24266.1 - 9.0.0-beta.24266.1 - 9.0.0-beta.24266.1 + 9.0.0-beta.24272.5 + 9.0.0-beta.24272.5 + 9.0.0-beta.24272.5 + 9.0.0-beta.24272.5 + 2.6.7-beta.24272.5 + 9.0.0-beta.24272.5 + 2.6.7-beta.24272.5 + 9.0.0-beta.24272.5 + 9.0.0-beta.24272.5 + 9.0.0-beta.24272.5 + 9.0.0-beta.24272.5 + 9.0.0-beta.24272.5 + 9.0.0-beta.24272.5 + 9.0.0-beta.24272.5 + 9.0.0-beta.24272.5 + 9.0.0-beta.24272.5 1.4.0 diff --git a/eng/common/core-templates/job/source-index-stage1.yml b/eng/common/core-templates/job/source-index-stage1.yml index f1938eec102033..8328e52ab100cc 100644 --- a/eng/common/core-templates/job/source-index-stage1.yml +++ b/eng/common/core-templates/job/source-index-stage1.yml @@ -1,7 +1,7 @@ parameters: runAsPublic: false - sourceIndexUploadPackageVersion: 2.0.0-20240502.12 - sourceIndexProcessBinlogPackageVersion: 1.0.1-20240129.2 + sourceIndexUploadPackageVersion: 2.0.0-20240522.1 + sourceIndexProcessBinlogPackageVersion: 1.0.1-20240522.1 sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci" preSteps: [] @@ -88,4 +88,4 @@ jobs: displayName: "Login to Azure" - script: $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name) -s netsourceindexstage1 -b stage1 - displayName: Upload stage1 artifacts to source index \ No newline at end of file + displayName: Upload stage1 artifacts to source index diff --git a/eng/common/internal/Directory.Build.props b/eng/common/internal/Directory.Build.props index a735fe9a133ca4..f1d041c33da51e 100644 --- a/eng/common/internal/Directory.Build.props +++ b/eng/common/internal/Directory.Build.props @@ -1,6 +1,11 @@ + + false + false + + diff --git a/eng/common/internal/Tools.csproj b/eng/common/internal/Tools.csproj index 8fa77e5b181f89..e925952d56664e 100644 --- a/eng/common/internal/Tools.csproj +++ b/eng/common/internal/Tools.csproj @@ -3,7 +3,6 @@ net472 - false false diff --git a/eng/common/native/init-compiler.sh b/eng/common/native/init-compiler.sh index ccd3a17268e243..62900e12b21c10 100644 --- a/eng/common/native/init-compiler.sh +++ b/eng/common/native/init-compiler.sh @@ -2,7 +2,9 @@ # # This file detects the C/C++ compiler and exports it to the CC/CXX environment variables # -# NOTE: some scripts source this file and rely on stdout being empty, make sure to not output anything here! +# NOTE: some scripts source this file and rely on stdout being empty, make sure +# to not output *anything* here, unless it is an error message that fails the +# build. if [ -z "$build_arch" ] || [ -z "$compiler" ]; then echo "Usage..." @@ -58,6 +60,26 @@ check_version_exists() { echo "$desired_version" } +__baseOS="$(uname)" +set_compiler_version_from_CC() { + if [ "$__baseOS" = "Darwin" ]; then + # On Darwin, the versions from -version/-dumpversion refer to Xcode + # versions, not llvm versions, so we can't rely on them. + return + fi + + version="$("$CC" -dumpversion)" + if [ -z "$version" ]; then + echo "Error: $CC -dumpversion didn't provide a version" + exit 1 + fi + + # gcc and clang often display 3 part versions. However, gcc can show only 1 part in some environments. + IFS=. read -r majorVersion minorVersion _ < /dev/null; then - if [ "$(uname)" != "Darwin" ]; then - echo "Warning: Specific version of $compiler not found, falling back to use the one in PATH." - fi - CC="$(command -v "$compiler")" - CXX="$(command -v "$cxxCompiler")" - else - echo "No usable version of $compiler found." + if ! command -v "$compiler" > /dev/null; then + echo "Error: No usable version of $compiler found." exit 1 fi + + CC="$(command -v "$compiler" 2> /dev/null)" + CXX="$(command -v "$cxxCompiler" 2> /dev/null)" + set_compiler_version_from_CC else - if [ "$compiler" = "clang" ] && [ "$majorVersion" -lt 5 ]; then - if [ "$build_arch" = "arm" ] || [ "$build_arch" = "armel" ]; then - if command -v "$compiler" > /dev/null; then - echo "Warning: Found clang version $majorVersion which is not supported on arm/armel architectures, falling back to use clang from PATH." - CC="$(command -v "$compiler")" - CXX="$(command -v "$cxxCompiler")" - else - echo "Found clang version $majorVersion which is not supported on arm/armel architectures, and there is no clang in PATH." - exit 1 - fi + if [ "$compiler" = "clang" ] && [ "$majorVersion" -lt 5 ] && { [ "$build_arch" = "arm" ] || [ "$build_arch" = "armel" ]; }; then + # If a major version was provided explicitly, and it was too old, find a newer compiler instead + if ! command -v "$compiler" > /dev/null; then + echo "Error: Found clang version $majorVersion which is not supported on arm/armel architectures, and there is no clang in PATH." + exit 1 fi + + CC="$(command -v "$compiler" 2> /dev/null)" + CXX="$(command -v "$cxxCompiler" 2> /dev/null)" + set_compiler_version_from_CC fi fi else desired_version="$(check_version_exists "$majorVersion" "$minorVersion")" if [ "$desired_version" = "-1" ]; then - echo "Could not find specific version of $compiler: $majorVersion $minorVersion." + echo "Error: Could not find specific version of $compiler: $majorVersion $minorVersion." exit 1 fi fi if [ -z "$CC" ]; then - CC="$(command -v "$compiler$desired_version")" - CXX="$(command -v "$cxxCompiler$desired_version")" - if [ -z "$CXX" ]; then CXX="$(command -v "$cxxCompiler")"; fi + CC="$(command -v "$compiler$desired_version" 2> /dev/null)" + CXX="$(command -v "$cxxCompiler$desired_version" 2> /dev/null)" + if [ -z "$CXX" ]; then CXX="$(command -v "$cxxCompiler" 2> /dev/null)"; fi + set_compiler_version_from_CC fi else if [ ! -f "$CLR_CC" ]; then - echo "CLR_CC is set but path '$CLR_CC' does not exist" + echo "Error: CLR_CC is set but path '$CLR_CC' does not exist" exit 1 fi CC="$CLR_CC" CXX="$CLR_CXX" + set_compiler_version_from_CC fi if [ -z "$CC" ]; then - echo "Unable to find $compiler." + echo "Error: Unable to find $compiler." exit 1 fi -# Only lld version >= 9 can be considered stable. lld supports s390x starting from 18.0. -if [ "$compiler" = "clang" ] && [ -n "$majorVersion" ] && [ "$majorVersion" -ge 9 ] && ([ "$build_arch" != "s390x" ] || [ "$majorVersion" -ge 18 ]); then - if "$CC" -fuse-ld=lld -Wl,--version >/dev/null 2>&1; then - LDFLAGS="-fuse-ld=lld" +if [ "$__baseOS" != "Darwin" ]; then + # On Darwin, we always want to use the Apple linker. + + # Only lld version >= 9 can be considered stable. lld supports s390x starting from 18.0. + if [ "$compiler" = "clang" ] && [ -n "$majorVersion" ] && [ "$majorVersion" -ge 9 ] && { [ "$build_arch" != "s390x" ] || [ "$majorVersion" -ge 18 ]; }; then + if "$CC" -fuse-ld=lld -Wl,--version >/dev/null 2>&1; then + LDFLAGS="-fuse-ld=lld" + fi fi fi -SCAN_BUILD_COMMAND="$(command -v "scan-build$desired_version")" +SCAN_BUILD_COMMAND="$(command -v "scan-build$desired_version" 2> /dev/null)" export CC CXX LDFLAGS SCAN_BUILD_COMMAND diff --git a/eng/common/templates/steps/get-delegate-sas.yml b/eng/common/templates/steps/get-delegate-sas.yml new file mode 100644 index 00000000000000..c0e8f91317f077 --- /dev/null +++ b/eng/common/templates/steps/get-delegate-sas.yml @@ -0,0 +1,43 @@ +parameters: +- name: federatedServiceConnection + type: string +- name: outputVariableName + type: string +- name: expiryInHours + type: number + default: 1 +- name: base64Encode + type: boolean + default: false +- name: storageAccount + type: string +- name: container + type: string +- name: permissions + type: string + default: 'rl' + +steps: +- task: AzureCLI@2 + displayName: 'Generate delegation SAS Token for ${{ parameters.storageAccount }}/${{ parameters.container }}' + inputs: + azureSubscription: ${{ parameters.federatedServiceConnection }} + scriptType: 'pscore' + scriptLocation: 'inlineScript' + inlineScript: | + # Calculate the expiration of the SAS token and convert to UTC + $expiry = (Get-Date).AddHours(${{ parameters.expiryInHours }}).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") + + $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv + + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to generate SAS token." + exit 1 + } + + if ('${{ parameters.base64Encode }}' -eq 'true') { + $sas = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($sas)) + } + + Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" + Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true]$sas" diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index 7fc78a0851bcfb..0febe696dbdbce 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -254,7 +254,6 @@ function Retry($downloadBlock, $maxRetries = 5) { Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "Unable to download file in $maxRetries attempts." break } - } } @@ -424,7 +423,6 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = InitializeVisualStudioEnvironmentVariables $vsInstallDir $vsMajorVersion } else { - if (Get-Member -InputObject $GlobalJson.tools -Name 'xcopy-msbuild') { $xcopyMSBuildVersion = $GlobalJson.tools.'xcopy-msbuild' $vsMajorVersion = $xcopyMSBuildVersion.Split('.')[0] @@ -504,6 +502,10 @@ function InitializeXCopyMSBuild([string]$packageVersion, [bool]$install) { Invoke-WebRequest "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/flat2/$packageName/$packageVersion/$packageName.$packageVersion.nupkg" -OutFile $packagePath }) + if (!(Test-Path $packagePath)) { + Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "See https://dev.azure.com/dnceng/internal/_wiki/wikis/DNCEng%20Services%20Wiki/1074/Updating-Microsoft.DotNet.Arcade.MSBuild.Xcopy-WAS-RoslynTools.MSBuild-(xcopy-msbuild)-generation?anchor=troubleshooting for help troubleshooting issues with XCopy MSBuild" + throw + } Unzip $packagePath $packageDir } diff --git a/global.json b/global.json index 5522bd3113834f..2c53d9d65c5022 100644 --- a/global.json +++ b/global.json @@ -8,9 +8,9 @@ "dotnet": "9.0.100-preview.3.24204.13" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24266.1", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.24266.1", - "Microsoft.DotNet.SharedFramework.Sdk": "9.0.0-beta.24266.1", + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24272.5", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.24272.5", + "Microsoft.DotNet.SharedFramework.Sdk": "9.0.0-beta.24272.5", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.Build.Traversal": "3.4.0", "Microsoft.NET.Sdk.IL": "9.0.0-preview.5.24262.2"