From 463cf6fe52934b08c5483bed2f482835945d8051 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2026 13:59:26 +0800 Subject: [PATCH 01/19] [release/10.0.1xx] Source code updates from dotnet/dotnet (#10329) > [!NOTE] > This is a codeflow update. It may contain both source code changes from > [the VMR](https://github.com/dotnet/dotnet) > as well as dependency updates. Learn more [here](https://github.com/dotnet/dotnet/tree/main/docs/Codeflow-PRs.md). This pull request brings the following source code changes [marker]: <> (Begin:2146351c-d624-4a08-bc4e-875e6191f66e) ## From https://github.com/dotnet/dotnet - **Subscription**: [2146351c-d624-4a08-bc4e-875e6191f66e](https://maestro.dot.net/subscriptions?search=2146351c-d624-4a08-bc4e-875e6191f66e) - **Build**: [20260616.3](https://dev.azure.com/dnceng/internal/_build/results?buildId=3001609) ([318985](https://maestro.dot.net/channel/5173/github:dotnet:dotnet/build/318985)) - **Date Produced**: June 16, 2026 9:12:55 PM UTC - **Commit**: [1ad649b85fc8370d68639e33806b037a2ebf5374](https://github.com/dotnet/dotnet/commit/1ad649b85fc8370d68639e33806b037a2ebf5374) - **Commit Diff**: [efeff38...1ad649b](https://github.com/dotnet/dotnet/compare/efeff38742c1b54c1bb7056cfdde913a3a509376...1ad649b85fc8370d68639e33806b037a2ebf5374) - **Branch**: [release/10.0.1xx](https://github.com/dotnet/dotnet/tree/release/10.0.1xx) **Updated Dependencies** - From [10.0.0-beta.26312.109 to 10.0.0-beta.26316.103][1] - Microsoft.DotNet.Arcade.Sdk - From [2.0.10 to 2.0.10][1] - System.CommandLine [marker]: <> (End:2146351c-d624-4a08-bc4e-875e6191f66e) [1]: https://github.com/dotnet/dotnet/compare/efeff38742...1ad649b85f [marker]: <> (Start:Footer:CodeFlow PR) ## Associated changes in source repos - https://github.com/dotnet/runtime/compare/dcb5e9174ebccecfc7747279f864b3561c2496bc...10c2d44e17e2f33c772ee0e312eb893ecd2114cf - https://github.com/dotnet/sdk/compare/4421d8c0dbd2e2b3d262ca925e33389bc13c9750...ada4803453011d0e012278f08c508d273d0c9270 - https://github.com/dotnet/source-build-assets/compare/7628ed9f3080b3997498847fce4685eae2c78107...5fdea98465dbb5a9e30ec081bb5d97ff10c445a6 - https://github.com/dotnet/templating/compare/736970b24155d95bb234b553bd0b4250fc672586...e9d055673a55259566889e270224074ca28d21ab - https://github.com/dotnet/windowsdesktop/compare/74cad43c1b14c4ff786bf3298026a7a380b35d39...f3c6abb7a5e4a539ba312500ec295195387170f4 - https://github.com/dotnet/wpf/compare/2236bae63f06a0d320a7137c7c1dd4d8bf7e0a95...1759c9464b6d9fbad6cbdb84ba07061d9d692e65
Diff the source with this PR branch ```bash darc vmr diff --name-only https://github.com/dotnet/dotnet:1ad649b85fc8370d68639e33806b037a2ebf5374..https://github.com/dotnet/templating:darc-release/10.0.1xx-b925ec3d-c6d0-4238-b230-2dd87cb74f67 ```
[marker]: <> (End:Footer:CodeFlow PR) Co-authored-by: dotnet-maestro[bot] --- NuGet.config | 2 +- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 8 ++++---- global.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index 0c08f01c3d6..f9d9468d8b5 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + diff --git a/eng/Version.Details.props b/eng/Version.Details.props index a2386dabc84..5cfa80b4534 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props - 10.0.0-beta.26312.109 + 10.0.0-beta.26316.103 2.0.10 10.0.1 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index aa8e43b84cb..775fe53f2af 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,16 +1,16 @@ - + https://github.com/dotnet/dotnet - efeff38742c1b54c1bb7056cfdde913a3a509376 + 1ad649b85fc8370d68639e33806b037a2ebf5374 - + https://github.com/dotnet/dotnet - efeff38742c1b54c1bb7056cfdde913a3a509376 + 1ad649b85fc8370d68639e33806b037a2ebf5374 diff --git a/global.json b/global.json index 1de1319d36f..472dc745617 100644 --- a/global.json +++ b/global.json @@ -13,6 +13,6 @@ "dotnet": "10.0.109" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26312.109" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26316.103" } } From a57c5125f6ba92c96634f1c20baabc78f4fa5040 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 14:24:07 +0800 Subject: [PATCH 02/19] [release/10.0.1xx] Source code updates from dotnet/dotnet (#10330) > [!NOTE] > This is a codeflow update. It may contain both source code changes from > [the VMR](https://github.com/dotnet/dotnet) > as well as dependency updates. Learn more [here](https://github.com/dotnet/dotnet/tree/main/docs/Codeflow-PRs.md). This pull request brings the following source code changes [marker]: <> (Begin:2146351c-d624-4a08-bc4e-875e6191f66e) ## From https://github.com/dotnet/dotnet - **Subscription**: [2146351c-d624-4a08-bc4e-875e6191f66e](https://maestro.dot.net/subscriptions?search=2146351c-d624-4a08-bc4e-875e6191f66e) - **Build**: [20260616.8](https://dev.azure.com/dnceng/internal/_build/results?buildId=3001871) ([319025](https://maestro.dot.net/channel/5173/github:dotnet:dotnet/build/319025)) - **Date Produced**: June 17, 2026 4:28:55 AM UTC - **Commit**: [78bac42c50acdc6084669efd44ab5f4c0343a5f2](https://github.com/dotnet/dotnet/commit/78bac42c50acdc6084669efd44ab5f4c0343a5f2) - **Commit Diff**: [1ad649b...78bac42](https://github.com/dotnet/dotnet/compare/1ad649b85fc8370d68639e33806b037a2ebf5374...78bac42c50acdc6084669efd44ab5f4c0343a5f2) - **Branch**: [release/10.0.1xx](https://github.com/dotnet/dotnet/tree/release/10.0.1xx) **Updated Dependencies** - From [10.0.0-beta.26316.103 to 10.0.0-beta.26316.108][1] - Microsoft.DotNet.Arcade.Sdk - From [2.0.10 to 2.0.10][1] - System.CommandLine [marker]: <> (End:2146351c-d624-4a08-bc4e-875e6191f66e) [1]: https://github.com/dotnet/dotnet/compare/1ad649b85f...78bac42c50 [marker]: <> (Start:Footer:CodeFlow PR)
Diff the source with this PR branch ```bash darc vmr diff --name-only https://github.com/dotnet/dotnet:78bac42c50acdc6084669efd44ab5f4c0343a5f2..https://github.com/dotnet/templating:darc-release/10.0.1xx-2bc6652a-69f2-4e96-bf37-7260bbc8a9de ```
[marker]: <> (End:Footer:CodeFlow PR) Co-authored-by: dotnet-maestro[bot] --- NuGet.config | 2 +- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 8 ++++---- global.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index f9d9468d8b5..6db29c2b7ca 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 5cfa80b4534..db9440a0f93 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props - 10.0.0-beta.26316.103 + 10.0.0-beta.26316.108 2.0.10 10.0.1 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 775fe53f2af..40356cde65c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,16 +1,16 @@ - + https://github.com/dotnet/dotnet - 1ad649b85fc8370d68639e33806b037a2ebf5374 + 78bac42c50acdc6084669efd44ab5f4c0343a5f2 - + https://github.com/dotnet/dotnet - 1ad649b85fc8370d68639e33806b037a2ebf5374 + 78bac42c50acdc6084669efd44ab5f4c0343a5f2 diff --git a/global.json b/global.json index 472dc745617..9a9d88fe85f 100644 --- a/global.json +++ b/global.json @@ -13,6 +13,6 @@ "dotnet": "10.0.109" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26316.103" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26316.108" } } From c97dc497c4de0d767a74a4269b63b8d81e49496c Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 11:08:08 +0800 Subject: [PATCH 03/19] [release/10.0.1xx] Source code updates from dotnet/dotnet (#10333) > [!NOTE] > This is a codeflow update. It may contain both source code changes from > [the VMR](https://github.com/dotnet/dotnet) > as well as dependency updates. Learn more [here](https://github.com/dotnet/dotnet/tree/main/docs/Codeflow-PRs.md). This pull request brings the following source code changes [marker]: <> (Begin:2146351c-d624-4a08-bc4e-875e6191f66e) ## From https://github.com/dotnet/dotnet - **Subscription**: [2146351c-d624-4a08-bc4e-875e6191f66e](https://maestro.dot.net/subscriptions?search=2146351c-d624-4a08-bc4e-875e6191f66e) - **Build**: [20260619.4](https://dev.azure.com/dnceng/internal/_build/results?buildId=3004176) ([319504](https://maestro.dot.net/channel/5173/github:dotnet:dotnet/build/319504)) - **Date Produced**: June 20, 2026 12:54:49 AM UTC - **Commit**: [47c73391bfb8274e379c74c19694ccabff33bc3e](https://github.com/dotnet/dotnet/commit/47c73391bfb8274e379c74c19694ccabff33bc3e) - **Commit Diff**: [78bac42...47c7339](https://github.com/dotnet/dotnet/compare/78bac42c50acdc6084669efd44ab5f4c0343a5f2...47c73391bfb8274e379c74c19694ccabff33bc3e) - **Branch**: [release/10.0.1xx](https://github.com/dotnet/dotnet/tree/release/10.0.1xx) **Updated Dependencies** - From [10.0.0-beta.26316.108 to 10.0.0-beta.26319.104][2] - Microsoft.DotNet.Arcade.Sdk - From [2.0.10 to 2.0.10][2] - System.CommandLine [marker]: <> (End:2146351c-d624-4a08-bc4e-875e6191f66e) [1]: https://github.com/dotnet/dotnet/compare/78bac42c50...25acae0da7 [2]: https://github.com/dotnet/dotnet/compare/78bac42c50...47c73391bf [marker]: <> (Start:Footer:CodeFlow PR) ## Associated changes in source repos - https://github.com/dotnet/efcore/compare/9d1b7959357437e8b300b1b43f92042f2a201843...db55508a7fbc1535bdb65b85159a8d0d36d6942a - https://github.com/dotnet/sdk/compare/ada4803453011d0e012278f08c508d273d0c9270...a4831dedb22f6fa651f8a01faf88b3c327a8a862 - https://github.com/dotnet/source-build-assets/compare/5fdea98465dbb5a9e30ec081bb5d97ff10c445a6...64e1a143751829a0363883e62e78e66fdb7a0882 - https://github.com/dotnet/templating/compare/e9d055673a55259566889e270224074ca28d21ab...463cf6fe52934b08c5483bed2f482835945d8051
Diff the source with this PR branch ```bash darc vmr diff --name-only https://github.com/dotnet/dotnet:47c73391bfb8274e379c74c19694ccabff33bc3e..https://github.com/dotnet/templating:darc-release/10.0.1xx-220d1a93-d4a1-4fd7-baf3-951f459691a1 ```
[marker]: <> (End:Footer:CodeFlow PR) --------- Co-authored-by: dotnet-maestro[bot] --- NuGet.config | 2 +- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 8 ++++---- global.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index 6db29c2b7ca..82ec4be66c1 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + diff --git a/eng/Version.Details.props b/eng/Version.Details.props index db9440a0f93..9412b648c74 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props - 10.0.0-beta.26316.108 + 10.0.0-beta.26319.104 2.0.10 10.0.1 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 40356cde65c..ed98931f317 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,16 +1,16 @@ - + https://github.com/dotnet/dotnet - 78bac42c50acdc6084669efd44ab5f4c0343a5f2 + 47c73391bfb8274e379c74c19694ccabff33bc3e - + https://github.com/dotnet/dotnet - 78bac42c50acdc6084669efd44ab5f4c0343a5f2 + 47c73391bfb8274e379c74c19694ccabff33bc3e diff --git a/global.json b/global.json index 9a9d88fe85f..e94a2873d5f 100644 --- a/global.json +++ b/global.json @@ -13,6 +13,6 @@ "dotnet": "10.0.109" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26316.108" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26319.104" } } From 9ec015a17bba42434c8f46d39953019833981852 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Fri, 26 Jun 2026 10:27:43 +0800 Subject: [PATCH 04/19] [release/10.0.1xx] Source code updates from dotnet/dotnet (#10336) > [!NOTE] > This is a codeflow update. It may contain both source code changes from > [the VMR](https://github.com/dotnet/dotnet) > as well as dependency updates. Learn more [here](https://github.com/dotnet/dotnet/tree/main/docs/Codeflow-PRs.md). This pull request brings the following source code changes [marker]: <> (Begin:2146351c-d624-4a08-bc4e-875e6191f66e) ## From https://github.com/dotnet/dotnet - **Subscription**: [2146351c-d624-4a08-bc4e-875e6191f66e](https://maestro.dot.net/subscriptions?search=2146351c-d624-4a08-bc4e-875e6191f66e) - **Build**: [20260625.16](https://dev.azure.com/dnceng/internal/_build/results?buildId=3008247) ([320294](https://maestro.dot.net/channel/5173/github:dotnet:dotnet/build/320294)) - **Date Produced**: June 26, 2026 12:32:33 AM UTC - **Commit**: [61211cc17fddfdc4d4fbd5b94b78a0e39d18a037](https://github.com/dotnet/dotnet/commit/61211cc17fddfdc4d4fbd5b94b78a0e39d18a037) - **Commit Diff**: [47c7339...61211cc](https://github.com/dotnet/dotnet/compare/47c73391bfb8274e379c74c19694ccabff33bc3e...61211cc17fddfdc4d4fbd5b94b78a0e39d18a037) - **Branch**: [release/10.0.1xx](https://github.com/dotnet/dotnet/tree/release/10.0.1xx) **Updated Dependencies** - From [10.0.0-beta.26319.104 to 10.0.0-beta.26325.116][1] - Microsoft.DotNet.Arcade.Sdk - From [2.0.10 to 2.0.10][1] - System.CommandLine [marker]: <> (End:2146351c-d624-4a08-bc4e-875e6191f66e) [1]: https://github.com/dotnet/dotnet/compare/47c73391bf...61211cc17f [marker]: <> (Start:Footer:CodeFlow PR) ## Associated changes in source repos - https://github.com/dotnet/arcade/compare/7b306e34463421cef2816352743b943c6547dfab...1373629deb1e04f3e8e66fb68bb48ae36479c5ef - https://github.com/dotnet/aspnetcore/compare/13e506386673df9f926ce9b75afd320be570e9ea...2adedfc51f57ce4f0e98616fa0eb1e65283dd6af - https://github.com/dotnet/runtime/compare/10c2d44e17e2f33c772ee0e312eb893ecd2114cf...bee7e39da8fc9befed4bb154bb74a4d8a180f102 - https://github.com/dotnet/sdk/compare/a4831dedb22f6fa651f8a01faf88b3c327a8a862...87e8d204d939f13112755d92e59797b719c5d756 - https://github.com/dotnet/sourcelink/compare/0ab0100144b69d3b41716cf32fae980cbf7c3287...9252047ba9beb5aee538a1e4ac9e17e0086a65fd - https://github.com/dotnet/templating/compare/463cf6fe52934b08c5483bed2f482835945d8051...c97dc497c4de0d767a74a4269b63b8d81e49496c - https://github.com/dotnet/windowsdesktop/compare/f3c6abb7a5e4a539ba312500ec295195387170f4...243483d2274de7714e30d51aeb0be2d63c82f779 - https://github.com/dotnet/wpf/compare/1759c9464b6d9fbad6cbdb84ba07061d9d692e65...174c8764338348faa85a4ba35cdc7583d21e9da9
Diff the source with this PR branch ```bash darc vmr diff --name-only https://github.com/dotnet/dotnet:61211cc17fddfdc4d4fbd5b94b78a0e39d18a037..https://github.com/dotnet/templating:darc-release/10.0.1xx-99d3cc99-e440-414f-bcd2-a1a0679a4e59 ```
[marker]: <> (End:Footer:CodeFlow PR) Co-authored-by: dotnet-maestro[bot] --- NuGet.config | 2 +- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 8 +- eng/common/cross/build-rootfs.sh | 197 +++++++++++------- eng/common/cross/install-debs.py | 151 ++++++++++---- eng/common/cross/toolchain.cmake | 40 ++-- .../native/LocateNativeCompiler.targets | 27 +++ eng/common/native/NativeAotSupported.props | 26 +++ eng/common/native/init-distro-rid.sh | 2 + eng/common/native/install-dependencies.sh | 11 +- eng/common/templates/vmr-build-pr.yml | 2 +- global.json | 2 +- 12 files changed, 334 insertions(+), 136 deletions(-) create mode 100644 eng/common/native/LocateNativeCompiler.targets create mode 100644 eng/common/native/NativeAotSupported.props diff --git a/NuGet.config b/NuGet.config index 82ec4be66c1..80ce1df7292 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 9412b648c74..973d0d6be98 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props - 10.0.0-beta.26319.104 + 10.0.0-beta.26325.116 2.0.10 10.0.1 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index ed98931f317..18418f445d8 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,16 +1,16 @@ - + https://github.com/dotnet/dotnet - 47c73391bfb8274e379c74c19694ccabff33bc3e + 61211cc17fddfdc4d4fbd5b94b78a0e39d18a037 - + https://github.com/dotnet/dotnet - 47c73391bfb8274e379c74c19694ccabff33bc3e + 61211cc17fddfdc4d4fbd5b94b78a0e39d18a037 diff --git a/eng/common/cross/build-rootfs.sh b/eng/common/cross/build-rootfs.sh index 8abfb71f727..3150ccac6fc 100755 --- a/eng/common/cross/build-rootfs.sh +++ b/eng/common/cross/build-rootfs.sh @@ -5,10 +5,11 @@ set -e usage() { echo "Usage: $0 [BuildArch] [CodeName] [lldbx.y] [llvmx[.y]] [--skipunmount] --rootfsdir ]" - echo "BuildArch can be: arm(default), arm64, armel, armv6, loongarch64, ppc64le, riscv64, s390x, x64, x86" + echo "BuildArch can be: arm(default), arm64, loongarch64, ppc64le, riscv64, s390x, x64, x86" echo "CodeName - optional, Code name for Linux, can be: xenial(default), zesty, bionic, alpine" echo " for alpine can be specified with version: alpineX.YY or alpineedge" echo " for FreeBSD can be: freebsd13, freebsd14" + echo " for OpenBSD can be: openbsd" echo " for illumos can be: illumos" echo " for Haiku can be: haiku." echo "lldbx.y - optional, LLDB version, can be: lldb3.9(default), lldb4.0, lldb5.0, lldb6.0 no-lldb. Ignored for alpine and FreeBSD" @@ -27,6 +28,8 @@ __BuildArch=arm __AlpineArch=armv7 __FreeBSDArch=arm __FreeBSDMachineArch=armv7 +__OpenBSDArch=arm +__OpenBSDMachineArch=armv7 __IllumosArch=arm7 __HaikuArch=arm __QEMUArch=arm @@ -72,8 +75,8 @@ __AlpinePackages+=" krb5-dev" __AlpinePackages+=" openssl-dev" __AlpinePackages+=" zlib-dev" -__FreeBSDBase="13.4-RELEASE" -__FreeBSDPkg="1.21.3" +__FreeBSDBase="13.5-RELEASE" +__FreeBSDPkg="2.7.5" __FreeBSDABI="13" __FreeBSDPackages="libunwind" __FreeBSDPackages+=" icu" @@ -82,6 +85,13 @@ __FreeBSDPackages+=" openssl" __FreeBSDPackages+=" krb5" __FreeBSDPackages+=" terminfo-db" +__OpenBSDVersion="7.8" +__OpenBSDPackages="heimdal-libs" +__OpenBSDPackages+=" icu4c" +__OpenBSDPackages+=" libinotify" +__OpenBSDPackages+=" openssl" +__OpenBSDPackages+=" e2fsprogs" + __IllumosPackages="icu" __IllumosPackages+=" mit-krb5" __IllumosPackages+=" openssl" @@ -130,7 +140,6 @@ __AlpineKeys=' 616db30d:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnpUpyWDWjlUk3smlWeA0\nlIMW+oJ38t92CRLHH3IqRhyECBRW0d0aRGtq7TY8PmxjjvBZrxTNDpJT6KUk4LRm\na6A6IuAI7QnNK8SJqM0DLzlpygd7GJf8ZL9SoHSH+gFsYF67Cpooz/YDqWrlN7Vw\ntO00s0B+eXy+PCXYU7VSfuWFGK8TGEv6HfGMALLjhqMManyvfp8hz3ubN1rK3c8C\nUS/ilRh1qckdbtPvoDPhSbTDmfU1g/EfRSIEXBrIMLg9ka/XB9PvWRrekrppnQzP\nhP9YE3x/wbFc5QqQWiRCYyQl/rgIMOXvIxhkfe8H5n1Et4VAorkpEAXdsfN8KSVv\nLSMazVlLp9GYq5SUpqYX3KnxdWBgN7BJoZ4sltsTpHQ/34SXWfu3UmyUveWj7wp0\nx9hwsPirVI00EEea9AbP7NM2rAyu6ukcm4m6ATd2DZJIViq2es6m60AE6SMCmrQF\nwmk4H/kdQgeAELVfGOm2VyJ3z69fQuywz7xu27S6zTKi05Qlnohxol4wVb6OB7qG\nLPRtK9ObgzRo/OPumyXqlzAi/Yvyd1ZQk8labZps3e16bQp8+pVPiumWioMFJDWV\nGZjCmyMSU8V6MB6njbgLHoyg2LCukCAeSjbPGGGYhnKLm1AKSoJh3IpZuqcKCk5C\n8CM1S15HxV78s9dFntEqIokCAwEAAQ== 66ba20fe:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtfB12w4ZgqsXWZDfUAV/\n6Y4aHUKIu3q4SXrNZ7CXF9nXoAVYrS7NAxJdAodsY3vPCN0g5O8DFXR+390LdOuQ\n+HsGKCc1k5tX5ZXld37EZNTNSbR0k+NKhd9h6X3u6wqPOx7SIKxwAQR8qeeFq4pP\nrt9GAGlxtuYgzIIcKJPwE0dZlcBCg+GnptCUZXp/38BP1eYC+xTXSL6Muq1etYfg\nodXdb7Yl+2h1IHuOwo5rjgY5kpY7GcAs8AjGk3lDD/av60OTYccknH0NCVSmPoXK\nvrxDBOn0LQRNBLcAfnTKgHrzy0Q5h4TNkkyTgxkoQw5ObDk9nnabTxql732yy9BY\ns+hM9+dSFO1HKeVXreYSA2n1ndF18YAvAumzgyqzB7I4pMHXq1kC/8bONMJxwSkS\nYm6CoXKyavp7RqGMyeVpRC7tV+blkrrUml0BwNkxE+XnwDRB3xDV6hqgWe0XrifD\nYTfvd9ScZQP83ip0r4IKlq4GMv/R5shcCRJSkSZ6QSGshH40JYSoiwJf5FHbj9ND\n7do0UAqebWo4yNx63j/wb2ULorW3AClv0BCFSdPsIrCStiGdpgJDBR2P2NZOCob3\nG9uMj+wJD6JJg2nWqNJxkANXX37Qf8plgzssrhrgOvB0fjjS7GYhfkfmZTJ0wPOw\nA8+KzFseBh4UFGgue78KwgkCAwEAAQ== ' -__Keyring= __KeyringFile="/usr/share/keyrings/ubuntu-archive-keyring.gpg" __SkipSigCheck=0 __SkipEmulation=0 @@ -153,6 +162,10 @@ while :; do __AlpineArch=armv7 __QEMUArch=arm ;; + armel) + # this is only used for tizen-build-rootfs.sh + __BuildArch=armel + ;; arm64) __BuildArch=arm64 __UbuntuArch=arm64 @@ -160,31 +173,8 @@ while :; do __QEMUArch=aarch64 __FreeBSDArch=arm64 __FreeBSDMachineArch=aarch64 - ;; - armel) - __BuildArch=armel - __UbuntuArch=armel - __UbuntuRepo="http://archive.debian.org/debian/" - __CodeName=buster - __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" - __LLDB_Package="liblldb-6.0-dev" - __UbuntuPackages="${__UbuntuPackages// libomp-dev/}" - __UbuntuPackages="${__UbuntuPackages// libomp5/}" - __UbuntuSuites= - ;; - armv6) - __BuildArch=armv6 - __UbuntuArch=armhf - __QEMUArch=arm - __UbuntuRepo="http://raspbian.raspberrypi.org/raspbian/" - __CodeName=buster - __KeyringFile="/usr/share/keyrings/raspbian-archive-keyring.gpg" - __LLDB_Package="liblldb-6.0-dev" - __UbuntuSuites= - - if [[ -e "$__KeyringFile" ]]; then - __Keyring="--keyring $__KeyringFile" - fi + __OpenBSDArch=arm64 + __OpenBSDMachineArch=aarch64 ;; loongarch64) __BuildArch=loongarch64 @@ -193,10 +183,6 @@ while :; do __UbuntuArch=loong64 __UbuntuSuites=unreleased __LLDB_Package="liblldb-19-dev" - - if [[ "$__CodeName" == "sid" ]]; then - __UbuntuRepo="http://ftp.ports.debian.org/debian-ports/" - fi ;; riscv64) __BuildArch=riscv64 @@ -212,7 +198,7 @@ while :; do __AlpineArch=ppc64le __QEMUArch=ppc64le __UbuntuArch=ppc64el - __UbuntuRepo="http://ports.ubuntu.com/ubuntu-ports/" + __UbuntuRepo="https://ports.ubuntu.com/ubuntu-ports/" __UbuntuPackages="${__UbuntuPackages// libunwind8-dev/}" __UbuntuPackages="${__UbuntuPackages// libomp-dev/}" __UbuntuPackages="${__UbuntuPackages// libomp5/}" @@ -223,7 +209,7 @@ while :; do __AlpineArch=s390x __QEMUArch=s390x __UbuntuArch=s390x - __UbuntuRepo="http://ports.ubuntu.com/ubuntu-ports/" + __UbuntuRepo="https://ports.ubuntu.com/ubuntu-ports/" __UbuntuPackages="${__UbuntuPackages// libunwind8-dev/}" __UbuntuPackages="${__UbuntuPackages// libomp-dev/}" __UbuntuPackages="${__UbuntuPackages// libomp5/}" @@ -235,15 +221,17 @@ while :; do __UbuntuArch=amd64 __FreeBSDArch=amd64 __FreeBSDMachineArch=amd64 + __OpenBSDArch=amd64 + __OpenBSDMachineArch=amd64 __illumosArch=x86_64 __HaikuArch=x86_64 - __UbuntuRepo="http://archive.ubuntu.com/ubuntu/" + __UbuntuRepo="https://archive.ubuntu.com/ubuntu/" ;; x86) __BuildArch=x86 __UbuntuArch=i386 __AlpineArch=x86 - __UbuntuRepo="http://archive.ubuntu.com/ubuntu/" + __UbuntuRepo="https://archive.ubuntu.com/ubuntu/" ;; lldb*) version="$(echo "$lowerI" | tr -d '[:alpha:]-=')" @@ -295,9 +283,7 @@ while :; do ;; noble) # Ubuntu 24.04 __CodeName=noble - if [[ -z "$__LLDB_Package" ]]; then - __LLDB_Package="liblldb-19-dev" - fi + __LLDB_Package="liblldb-19-dev" ;; stretch) # Debian 9 __CodeName=stretch @@ -305,7 +291,7 @@ while :; do __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" if [[ -z "$__UbuntuRepo" ]]; then - __UbuntuRepo="http://ftp.debian.org/debian/" + __UbuntuRepo="https://archive.debian.org/debian/" fi ;; buster) # Debian 10 @@ -314,7 +300,7 @@ while :; do __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" if [[ -z "$__UbuntuRepo" ]]; then - __UbuntuRepo="http://archive.debian.org/debian/" + __UbuntuRepo="https://archive.debian.org/debian/" fi ;; bullseye) # Debian 11 @@ -322,7 +308,7 @@ while :; do __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" if [[ -z "$__UbuntuRepo" ]]; then - __UbuntuRepo="http://ftp.debian.org/debian/" + __UbuntuRepo="https://ftp.debian.org/debian/" fi ;; bookworm) # Debian 12 @@ -330,7 +316,7 @@ while :; do __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" if [[ -z "$__UbuntuRepo" ]]; then - __UbuntuRepo="http://ftp.debian.org/debian/" + __UbuntuRepo="https://ftp.debian.org/debian/" fi ;; sid) # Debian sid @@ -339,25 +325,21 @@ while :; do # Debian-Ports architectures need different values case "$__UbuntuArch" in - amd64|arm64|armel|armhf|i386|mips64el|ppc64el|riscv64|s390x) + amd64|arm64|armhf|i386|mips64el|ppc64el|riscv64|s390x) __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" if [[ -z "$__UbuntuRepo" ]]; then - __UbuntuRepo="http://ftp.debian.org/debian/" + __UbuntuRepo="https://ftp.debian.org/debian/" fi ;; *) __KeyringFile="/usr/share/keyrings/debian-ports-archive-keyring.gpg" if [[ -z "$__UbuntuRepo" ]]; then - __UbuntuRepo="http://ftp.ports.debian.org/debian-ports/" + __UbuntuRepo="https://ftp.debian.org/debian-ports/" fi ;; esac - - if [[ -e "$__KeyringFile" ]]; then - __Keyring="--keyring $__KeyringFile" - fi ;; tizen) __CodeName= @@ -383,10 +365,14 @@ while :; do ;; freebsd14) __CodeName=freebsd - __FreeBSDBase="14.2-RELEASE" + __FreeBSDBase="14.3-RELEASE" __FreeBSDABI="14" __SkipUnmount=1 ;; + openbsd) + __CodeName=openbsd + __SkipUnmount=1 + ;; illumos) __CodeName=illumos __SkipUnmount=1 @@ -457,7 +443,7 @@ fi __UbuntuPackages+=" ${__LLDB_Package:-}" if [[ -z "$__UbuntuRepo" ]]; then - __UbuntuRepo="http://ports.ubuntu.com/" + __UbuntuRepo="https://ports.ubuntu.com/" fi if [[ -n "$__LLVM_MajorVersion" ]]; then @@ -544,15 +530,15 @@ if [[ "$__CodeName" == "alpine" ]]; then # initialize DB # shellcheck disable=SC2086 "$__ApkToolsDir/apk.static" \ - -X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \ - -X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \ + -X "https://dl-cdn.alpinelinux.org/alpine/$version/main" \ + -X "https://dl-cdn.alpinelinux.org/alpine/$version/community" \ -U $__ApkSignatureArg --root "$__RootfsDir" --arch "$__AlpineArch" --initdb add if [[ "$__AlpineLlvmLibsLookup" == 1 ]]; then # shellcheck disable=SC2086 __AlpinePackages+=" $("$__ApkToolsDir/apk.static" \ - -X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \ - -X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \ + -X "https://dl-cdn.alpinelinux.org/alpine/$version/main" \ + -X "https://dl-cdn.alpinelinux.org/alpine/$version/community" \ -U $__ApkSignatureArg --root "$__RootfsDir" --arch "$__AlpineArch" \ search 'llvm*-libs' | grep -E '^llvm' | sort | tail -1 | sed 's/-[^-]*//2g')" fi @@ -560,8 +546,8 @@ if [[ "$__CodeName" == "alpine" ]]; then # install all packages in one go # shellcheck disable=SC2086 "$__ApkToolsDir/apk.static" \ - -X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \ - -X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \ + -X "https://dl-cdn.alpinelinux.org/alpine/$version/main" \ + -X "https://dl-cdn.alpinelinux.org/alpine/$version/community" \ -U $__ApkSignatureArg --root "$__RootfsDir" --arch "$__AlpineArch" $__NoEmulationArg \ add $__AlpinePackages @@ -578,7 +564,7 @@ elif [[ "$__CodeName" == "freebsd" ]]; then curl -SL "https://download.freebsd.org/ftp/releases/${__FreeBSDArch}/${__FreeBSDMachineArch}/${__FreeBSDBase}/base.txz" | tar -C "$__RootfsDir" -Jxf - ./lib ./usr/lib ./usr/libdata ./usr/include ./usr/share/keys ./etc ./bin/freebsd-version fi echo "ABI = \"FreeBSD:${__FreeBSDABI}:${__FreeBSDMachineArch}\"; FINGERPRINTS = \"${__RootfsDir}/usr/share/keys\"; REPOS_DIR = [\"${__RootfsDir}/etc/pkg\"]; REPO_AUTOUPDATE = NO; RUN_SCRIPTS = NO;" > "${__RootfsDir}"/usr/local/etc/pkg.conf - echo "FreeBSD: { url: \"pkg+http://pkg.FreeBSD.org/\${ABI}/quarterly\", mirror_type: \"srv\", signature_type: \"fingerprints\", fingerprints: \"/usr/share/keys/pkg\", enabled: yes }" > "${__RootfsDir}"/etc/pkg/FreeBSD.conf + echo "FreeBSD: { url: \"pkg+https://pkg.FreeBSD.org/\${ABI}/quarterly\", mirror_type: \"srv\", signature_type: \"fingerprints\", fingerprints: \"/usr/share/keys/pkg\", enabled: yes }" > "${__RootfsDir}"/etc/pkg/FreeBSD.conf mkdir -p "$__RootfsDir"/tmp # get and build package manager if [[ "$__hasWget" == 1 ]]; then @@ -592,9 +578,69 @@ elif [[ "$__CodeName" == "freebsd" ]]; then ./autogen.sh && ./configure --prefix="$__RootfsDir"/host && make -j "$JOBS" && make install rm -rf "$__RootfsDir/tmp/pkg-${__FreeBSDPkg}" # install packages we need. - INSTALL_AS_USER=$(whoami) "$__RootfsDir"/host/sbin/pkg -r "$__RootfsDir" -C "$__RootfsDir"/usr/local/etc/pkg.conf update + INSTALL_AS_USER=$(whoami) IGNORE_OSVERSION=yes "$__RootfsDir"/host/sbin/pkg -r "$__RootfsDir" -C "$__RootfsDir"/usr/local/etc/pkg.conf update # shellcheck disable=SC2086 INSTALL_AS_USER=$(whoami) "$__RootfsDir"/host/sbin/pkg -r "$__RootfsDir" -C "$__RootfsDir"/usr/local/etc/pkg.conf install --yes $__FreeBSDPackages +elif [[ "$__CodeName" == "openbsd" ]]; then + # determine mirrors + OPENBSD_MIRROR="https://cdn.openbsd.org/pub/OpenBSD/$__OpenBSDVersion/$__OpenBSDMachineArch" + + # download base system sets + ensureDownloadTool + + BASE_SETS=(base comp) + for set in "${BASE_SETS[@]}"; do + FILE="${set}${__OpenBSDVersion//./}.tgz" + echo "Downloading $FILE..." + if [[ "$__hasWget" == 1 ]]; then + wget -O- "$OPENBSD_MIRROR/$FILE" | tar -C "$__RootfsDir" -xzpf - + else + curl -SL "$OPENBSD_MIRROR/$FILE" | tar -C "$__RootfsDir" -xzpf - + fi + done + + PKG_MIRROR="https://cdn.openbsd.org/pub/OpenBSD/${__OpenBSDVersion}/packages/${__OpenBSDMachineArch}" + + echo "Installing packages into sysroot..." + + # Fetch package index once + if [[ "$__hasWget" == 1 ]]; then + PKG_INDEX=$(wget -qO- "$PKG_MIRROR/") + else + PKG_INDEX=$(curl -s "$PKG_MIRROR/") + fi + + for pkg in $__OpenBSDPackages; do + PKG_FILE=$(echo "$PKG_INDEX" | grep -Po ">\K${pkg}-[0-9][^\" ]*\.tgz" \ + | sort -V | tail -n1) + + echo "Resolved package filename for $pkg: $PKG_FILE" + + [[ -z "$PKG_FILE" ]] && { echo "ERROR: Package $pkg not found"; exit 1; } + + if [[ "$__hasWget" == 1 ]]; then + wget -O- "$PKG_MIRROR/$PKG_FILE" | tar -C "$__RootfsDir/usr/local" -xzpf - + else + curl -SL "$PKG_MIRROR/$PKG_FILE" | tar -C "$__RootfsDir/usr/local" -xzpf - + fi + done + + echo "Creating versionless symlinks for shared libraries..." + # Find all versioned .so files and create the base .so symlink + for lib in "$__RootfsDir"/usr/lib/lib*.so.*; do + if [ -f "$lib" ]; then + # Extract the filename (e.g., libc++.so.12.0) + VERSIONED_NAME=$(basename "$lib") + # Remove the trailing version numbers (e.g., libc++.so) + BASE_NAME=${VERSIONED_NAME%.so.*}.so + # Create the symlink in the same directory + ln -sf "$VERSIONED_NAME" "$__RootfsDir/usr/lib/$BASE_NAME" + fi + done + + echo "Cleaning up unnecessary paths" + # we don't use executables and kernel in rootfs (as we use host's compiler with -sysroot) + rm -rf "$__RootfsDir/usr/share" "$__RootfsDir/usr/bin" elif [[ "$__CodeName" == "illumos" ]]; then mkdir "$__RootfsDir/tmp" pushd "$__RootfsDir/tmp" @@ -759,6 +805,14 @@ elif [[ "$__CodeName" == "haiku" ]]; then elif [[ -n "$__CodeName" ]]; then __Suites="$__CodeName $(for suite in $__UbuntuSuites; do echo -n "$__CodeName-$suite "; done)" + __SigCheckArgs= + if [[ "$__SkipSigCheck" == "0" ]]; then + if [[ -e "$__KeyringFile" ]]; then + __SigCheckArgs="--keyring $__KeyringFile" + fi + __SigCheckArgs="$__SigCheckArgs --force-check-gpg" + fi + if [[ "$__SkipEmulation" == "1" ]]; then if [[ -z "$AR" ]]; then if command -v ar &>/dev/null; then @@ -774,31 +828,23 @@ elif [[ -n "$__CodeName" ]]; then PYTHON=${PYTHON_EXECUTABLE:-python3} # shellcheck disable=SC2086,SC2046 - echo running "$PYTHON" "$__CrossDir/install-debs.py" --arch "$__UbuntuArch" --mirror "$__UbuntuRepo" --rootfsdir "$__RootfsDir" --artool "$AR" \ + echo running "$PYTHON" "$__CrossDir/install-debs.py" $__SigCheckArgs --arch "$__UbuntuArch" --mirror "$__UbuntuRepo" --rootfsdir "$__RootfsDir" --artool "$AR" \ $(for suite in $__Suites; do echo -n "--suite $suite "; done) \ $__UbuntuPackages # shellcheck disable=SC2086,SC2046 - "$PYTHON" "$__CrossDir/install-debs.py" --arch "$__UbuntuArch" --mirror "$__UbuntuRepo" --rootfsdir "$__RootfsDir" --artool "$AR" \ + "$PYTHON" "$__CrossDir/install-debs.py" $__SigCheckArgs --arch "$__UbuntuArch" --mirror "$__UbuntuRepo" --rootfsdir "$__RootfsDir" --artool "$AR" \ $(for suite in $__Suites; do echo -n "--suite $suite "; done) \ $__UbuntuPackages exit 0 fi - __UpdateOptions= - if [[ "$__SkipSigCheck" == "0" ]]; then - __Keyring="$__Keyring --force-check-gpg" - else - __Keyring= - __UpdateOptions="--allow-unauthenticated --allow-insecure-repositories" - fi - # shellcheck disable=SC2086 - echo running debootstrap "--variant=minbase" $__Keyring --arch "$__UbuntuArch" "$__CodeName" "$__RootfsDir" "$__UbuntuRepo" + echo running debootstrap "--variant=minbase" $__SigCheckArgs --arch "$__UbuntuArch" "$__CodeName" "$__RootfsDir" "$__UbuntuRepo" # shellcheck disable=SC2086 - if ! debootstrap "--variant=minbase" $__Keyring --arch "$__UbuntuArch" "$__CodeName" "$__RootfsDir" "$__UbuntuRepo"; then + if ! debootstrap "--variant=minbase" $__SigCheckArgs --arch "$__UbuntuArch" "$__CodeName" "$__RootfsDir" "$__UbuntuRepo"; then echo "debootstrap failed! dumping debootstrap.log" cat "$__RootfsDir/debootstrap/debootstrap.log" exit 1 @@ -816,6 +862,11 @@ Components: main universe Signed-By: $__KeyringFile EOF + __UpdateOptions= + if [[ "$__SkipSigCheck" == "1" ]]; then + __UpdateOptions="--allow-unauthenticated --allow-insecure-repositories" + fi + # shellcheck disable=SC2086 chroot "$__RootfsDir" apt-get update $__UpdateOptions chroot "$__RootfsDir" apt-get -f -y install diff --git a/eng/common/cross/install-debs.py b/eng/common/cross/install-debs.py index c81eb37e522..1d1dfabf7dc 100755 --- a/eng/common/cross/install-debs.py +++ b/eng/common/cross/install-debs.py @@ -4,6 +4,7 @@ import asyncio import aiohttp import gzip +import hashlib import os import re import shutil @@ -16,7 +17,7 @@ from collections import deque from functools import cmp_to_key -async def download_file(session, url, dest_path, max_retries=3, retry_delay=2, timeout=60): +async def download_file(session, url, dest_path, max_retries=3, retry_delay=2, timeout=60, checksum=None): """Asynchronous file download with retries.""" attempt = 0 while attempt < max_retries: @@ -25,19 +26,25 @@ async def download_file(session, url, dest_path, max_retries=3, retry_delay=2, t if response.status == 200: with open(dest_path, "wb") as f: content = await response.read() + + # verify checksum if provided + if checksum: + sha256 = hashlib.sha256(content).hexdigest() + if sha256 != checksum: + raise Exception(f"SHA256 mismatch for {url}: expected {checksum}, got {sha256}") + f.write(content) print(f"Downloaded {url} at {dest_path}") return else: - print(f"Failed to download {url}, Status Code: {response.status}") - break + raise Exception(f"Failed to download {url}, Status Code: {response.status}") except (asyncio.CancelledError, asyncio.TimeoutError, aiohttp.ClientError) as e: print(f"Error downloading {url}: {type(e).__name__} - {e}. Retrying...") attempt += 1 await asyncio.sleep(retry_delay) - print(f"Failed to download {url} after {max_retries} attempts.") + raise Exception(f"Failed to download {url} after {max_retries} attempts.") async def download_deb_files_parallel(mirror, packages, tmp_dir): """Download .deb files in parallel.""" @@ -51,11 +58,11 @@ async def download_deb_files_parallel(mirror, packages, tmp_dir): if filename: url = f"{mirror}/{filename}" dest_path = os.path.join(tmp_dir, os.path.basename(filename)) - tasks.append(asyncio.create_task(download_file(session, url, dest_path))) + tasks.append(asyncio.create_task(download_file(session, url, dest_path, checksum=info.get("SHA256")))) await asyncio.gather(*tasks) -async def download_package_index_parallel(mirror, arch, suites): +async def download_package_index_parallel(mirror, arch, suites, check_sig, keyring): """Download package index files for specified suites and components entirely in memory.""" tasks = [] timeout = aiohttp.ClientTimeout(total=60) @@ -63,10 +70,9 @@ async def download_package_index_parallel(mirror, arch, suites): async with aiohttp.ClientSession(timeout=timeout) as session: for suite in suites: for component in ["main", "universe"]: - url = f"{mirror}/dists/{suite}/{component}/binary-{arch}/Packages.gz" - tasks.append(fetch_and_decompress(session, url)) + tasks.append(fetch_and_decompress(session, mirror, arch, suite, component, check_sig, keyring)) - results = await asyncio.gather(*tasks, return_exceptions=True) + results = await asyncio.gather(*tasks) merged_content = "" for result in results: @@ -77,20 +83,75 @@ async def download_package_index_parallel(mirror, arch, suites): return merged_content -async def fetch_and_decompress(session, url): +async def fetch_and_decompress(session, mirror, arch, suite, component, check_sig, keyring): """Fetch and decompress the Packages.gz file.""" - try: - async with session.get(url) as response: - if response.status == 200: - compressed_data = await response.read() - decompressed_data = gzip.decompress(compressed_data).decode('utf-8') - print(f"Downloaded index: {url}") - return decompressed_data - else: - print(f"Skipped index: {url} (doesn't exist)") - return None - except Exception as e: - print(f"Error fetching {url}: {e}") + + path = f"{component}/binary-{arch}/Packages.gz" + url = f"{mirror}/dists/{suite}/{path}" + + async with session.get(url) as response: + if response.status == 200: + compressed_data = await response.read() + decompressed_data = gzip.decompress(compressed_data).decode('utf-8') + print(f"Downloaded index: {url}") + + if check_sig: + # Verify the package index against the sha256 recorded in the Release file + release_file_content = await fetch_release_file(session, mirror, suite, keyring) + packages_sha = parse_release_file(release_file_content, path) + + sha256 = hashlib.sha256(compressed_data).hexdigest() + if sha256 != packages_sha: + raise Exception(f"SHA256 mismatch for {path}: expected {packages_sha}, got {sha256}") + print(f"Checksum verified for {path}") + + return decompressed_data + else: + print(f"Skipped index: {url} (doesn't exist)") + return None + +async def fetch_release_file(session, mirror, suite, keyring): + """Fetch Release and Release.gpg files and verify the signature.""" + + release_url = f"{mirror}/dists/{suite}/Release" + release_gpg_url = f"{mirror}/dists/{suite}/Release.gpg" + + with tempfile.NamedTemporaryFile() as release_file, tempfile.NamedTemporaryFile() as release_gpg_file: + await download_file(session, release_url, release_file.name) + await download_file(session, release_gpg_url, release_gpg_file.name) + + print("Verifying signature of Release with Release.gpg.") + # Use gpgv rather than gpg for verification. gpgv verifies a detached + # signature against a fixed keyring without involving gpg-agent or + # keyboxd, which makes it robust on hosts running GnuPG 2.4+ (e.g. Azure + # Linux) where "gpg --keyring" routes through keyboxd and can fail. + verify_command = ["gpgv"] + if keyring: + verify_command += ["--keyring", keyring] + verify_command += [release_gpg_file.name, release_file.name] + result = subprocess.run(verify_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + + if result.returncode != 0: + raise Exception(f"Signature verification failed: {result.stderr.decode('utf-8')}") + + print("Signature verified successfully.") + + with open(release_file.name) as f: + return f.read() + +def parse_release_file(content, path): + """Parses the Release file and returns sha256 checksum of the specified path.""" + + # data looks like this: + # + matches = re.findall(r'^ (\S*) +(\S*) +(\S*)$', content, re.MULTILINE) + + for entry in matches: + # the file has both md5 and sha256 checksums, we want sha256 which has a length of 64 + if entry[2] == path and len(entry[0]) == 64: + return entry[0] + + raise Exception(f"Could not find checksum for {path} in Release file.") def parse_debian_version(version): """Parse a Debian package version into epoch, upstream version, and revision.""" @@ -171,13 +232,15 @@ def parse_package_index(content): filename = fields.get("Filename") depends = fields.get("Depends") provides = fields.get("Provides", None) + sha256 = fields.get("SHA256") # Only update if package_name is not in packages or if the new version is higher if package_name not in packages or compare_debian_versions(version, packages[package_name]["Version"]) > 0: packages[package_name] = { "Version": version, "Filename": filename, - "Depends": depends + "Depends": depends, + "SHA256": sha256 } # Update aliases if package provides any alternatives @@ -233,7 +296,7 @@ def extract_deb_file(deb_file, tmp_dir, extract_dir, ar_tool): os.makedirs(extract_dir, exist_ok=True) with tempfile.TemporaryDirectory(dir=tmp_dir) as tmp_subdir: - result = subprocess.run(f"{ar_tool} t {os.path.abspath(deb_file)}", cwd=tmp_subdir, check=True, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + result = subprocess.run([ar_tool, "t", os.path.abspath(deb_file)], cwd=tmp_subdir, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) tar_filename = None for line in result.stdout.decode().splitlines(): @@ -247,7 +310,8 @@ def extract_deb_file(deb_file, tmp_dir, extract_dir, ar_tool): tar_file_path = os.path.join(tmp_subdir, tar_filename) print(f"Extracting {tar_filename} from {deb_file}..") - subprocess.run(f"{ar_tool} p {os.path.abspath(deb_file)} {tar_filename} > {tar_file_path}", check=True, shell=True) + with open(tar_file_path, "wb") as outfile: + subprocess.run([ar_tool, "p", os.path.abspath(deb_file), tar_filename], check=True, stdout=outfile, stderr=subprocess.PIPE) file_extension = os.path.splitext(tar_file_path)[1].lower() @@ -268,7 +332,18 @@ def extract_deb_file(deb_file, tmp_dir, extract_dir, ar_tool): raise ValueError(f"Unsupported compression format: {file_extension}") with tarfile.open(tar_file_path, mode) as tar: - tar.extractall(path=extract_dir, filter='fully_trusted') + tar.extractall(path=extract_dir, filter=_rootfs_extraction_filter) + +def _rootfs_extraction_filter(member, dest_path): + """Tarfile extraction filter based on the 'data' filter that additionally + rewrites absolute-target symlinks/hardlinks into rootfs-relative paths. + """ + if (member.issym() or member.islnk()) and os.path.isabs(member.linkname): + link_dir = os.path.dirname(member.name) + new_linkname = os.path.relpath(member.linkname.lstrip('/'), + start=link_dir or '.') + member = member.replace(linkname=new_linkname, deep=False) + return tarfile.data_filter(member, dest_path) def finalize_setup(rootfsdir): lib_dir = os.path.join(rootfsdir, 'lib') @@ -295,24 +370,17 @@ def finalize_setup(rootfsdir): if __name__ == "__main__": parser = argparse.ArgumentParser(description="Generate rootfs for .NET runtime on Debian-like OS") - parser.add_argument("--distro", required=False, help="Distro name (e.g., debian, ubuntu, etc.)") parser.add_argument("--arch", required=True, help="Architecture (e.g., amd64, loong64, etc.)") parser.add_argument("--rootfsdir", required=True, help="Destination directory.") parser.add_argument('--suite', required=True, action='append', help='Specify one or more repository suites to collect index data.') - parser.add_argument("--mirror", required=False, help="Mirror (e.g., http://ftp.debian.org/debian-ports etc.)") + parser.add_argument("--mirror", required=True, help="Mirror (e.g., http://ftp.debian.org/debian-ports etc.)") parser.add_argument("--artool", required=False, default="ar", help="ar tool to extract debs (e.g., ar, llvm-ar etc.)") + parser.add_argument("--force-check-gpg", required=False, action='store_true', help="Verify the packages against signatures in Release file.") + parser.add_argument("--keyring", required=False, default='', help="Keyring file to check signature of Release file.") parser.add_argument("packages", nargs="+", help="List of package names to be installed.") args = parser.parse_args() - if args.mirror is None: - if args.distro == "ubuntu": - args.mirror = "http://archive.ubuntu.com/ubuntu" if args.arch in ["amd64", "i386"] else "http://ports.ubuntu.com/ubuntu-ports" - elif args.distro == "debian": - args.mirror = "http://ftp.debian.org/debian-ports" - else: - raise Exception("Unsupported distro") - DESIRED_PACKAGES = args.packages + [ # base packages "dpkg", "busybox", @@ -322,9 +390,16 @@ def finalize_setup(rootfsdir): "debianutils" ] - print(f"Creating rootfs. rootfsdir: {args.rootfsdir}, distro: {args.distro}, arch: {args.arch}, suites: {args.suite}, mirror: {args.mirror}") + print(f"Creating rootfs. rootfsdir: {args.rootfsdir}, arch: {args.arch}, suites: {args.suite}, mirror: {args.mirror}") + + check_sig = args.force_check_gpg + if check_sig and not args.keyring: + print("ERROR: --force-check-gpg requires --keyring to specify a keyring file for signature verification.") + print("Install the appropriate keyring package (e.g., debian-ports-archive-keyring, ubuntu-archive-keyring)") + print("or pass --skipsigcheck to build-rootfs.sh to disable signature checking.") + sys.exit(1) - package_index_content = asyncio.run(download_package_index_parallel(args.mirror, args.arch, args.suite)) + package_index_content = asyncio.run(download_package_index_parallel(args.mirror, args.arch, args.suite, check_sig, args.keyring)) packages_info, aliases = parse_package_index(package_index_content) diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake index 0ff85cf0367..f65c689f695 100644 --- a/eng/common/cross/toolchain.cmake +++ b/eng/common/cross/toolchain.cmake @@ -3,15 +3,22 @@ set(CROSS_ROOTFS $ENV{ROOTFS_DIR}) # reset platform variables (e.g. cmake 3.25 sets LINUX=1) unset(LINUX) unset(FREEBSD) +unset(OPENBSD) unset(ILLUMOS) unset(ANDROID) unset(TIZEN) unset(HAIKU) set(TARGET_ARCH_NAME $ENV{TARGET_BUILD_ARCH}) + +file(GLOB OPENBSD_PROBE "${CROSS_ROOTFS}/etc/signify/openbsd-*.pub") + if(EXISTS ${CROSS_ROOTFS}/bin/freebsd-version) set(CMAKE_SYSTEM_NAME FreeBSD) set(FREEBSD 1) +elseif(OPENBSD_PROBE) + set(CMAKE_SYSTEM_NAME OpenBSD) + set(OPENBSD 1) elseif(EXISTS ${CROSS_ROOTFS}/usr/platform/i86pc) set(CMAKE_SYSTEM_NAME SunOS) set(ILLUMOS 1) @@ -52,7 +59,9 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64") set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu") endif() elseif(FREEBSD) - set(triple "aarch64-unknown-freebsd12") + set(TOOLCHAIN "aarch64-unknown-freebsd14") + elseif(OPENBSD) + set(TOOLCHAIN "aarch64-unknown-openbsd") endif() elseif(TARGET_ARCH_NAME STREQUAL "armel") set(CMAKE_SYSTEM_PROCESSOR armv7l) @@ -108,7 +117,9 @@ elseif(TARGET_ARCH_NAME STREQUAL "x64") set(TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu") endif() elseif(FREEBSD) - set(triple "x86_64-unknown-freebsd12") + set(TOOLCHAIN "x86_64-unknown-freebsd14") + elseif(OPENBSD) + set(TOOLCHAIN "x86_64-unknown-openbsd") elseif(ILLUMOS) set(TOOLCHAIN "x86_64-illumos") elseif(HAIKU) @@ -148,9 +159,6 @@ if(TIZEN) else() find_toolchain_dir("${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}") endif() - - message(STATUS "TIZEN_TOOLCHAIN_PATH set to: ${TIZEN_TOOLCHAIN_PATH}") - include_directories(SYSTEM ${TIZEN_TOOLCHAIN_PATH}/include/c++) include_directories(SYSTEM ${TIZEN_TOOLCHAIN_PATH}/include/c++/${TIZEN_TOOLCHAIN}) endif() @@ -193,11 +201,11 @@ if(ANDROID) # include official NDK toolchain script include(${CROSS_ROOTFS}/../build/cmake/android.toolchain.cmake) -elseif(FREEBSD) +elseif(FREEBSD OR OPENBSD) # we cross-compile by instructing clang - set(CMAKE_C_COMPILER_TARGET ${triple}) - set(CMAKE_CXX_COMPILER_TARGET ${triple}) - set(CMAKE_ASM_COMPILER_TARGET ${triple}) + set(CMAKE_C_COMPILER_TARGET ${TOOLCHAIN}) + set(CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN}) + set(CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN}) set(CMAKE_SYSROOT "${CROSS_ROOTFS}") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=lld") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=lld") @@ -214,13 +222,19 @@ elseif(ILLUMOS) locate_toolchain_exec(g++ CMAKE_CXX_COMPILER) elseif(HAIKU) set(CMAKE_SYSROOT "${CROSS_ROOTFS}") - set(CMAKE_PROGRAM_PATH "${CMAKE_PROGRAM_PATH};${CROSS_ROOTFS}/cross-tools-x86_64/bin") set(CMAKE_SYSTEM_PREFIX_PATH "${CROSS_ROOTFS}") set(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES} -lssp") set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lssp") - locate_toolchain_exec(gcc CMAKE_C_COMPILER) - locate_toolchain_exec(g++ CMAKE_CXX_COMPILER) + if ("$ENV{CCC_CC}" MATCHES ".*gcc.*") + set(CMAKE_PROGRAM_PATH "${CMAKE_PROGRAM_PATH};${CROSS_ROOTFS}/cross-tools-x86_64/bin") + locate_toolchain_exec(gcc CMAKE_C_COMPILER) + locate_toolchain_exec(g++ CMAKE_CXX_COMPILER) + else() + set(CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN "${CROSS_ROOTFS}/cross-tools-x86_64") + set(CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN "${CROSS_ROOTFS}/cross-tools-x86_64") + set(CMAKE_ASM_COMPILER_EXTERNAL_TOOLCHAIN "${CROSS_ROOTFS}/cross-tools-x86_64") + endif() # let CMake set up the correct search paths include(Platform/Haiku) @@ -291,7 +305,7 @@ endif() # Specify compile options -if((TARGET_ARCH_NAME MATCHES "^(arm|arm64|armel|armv6|loongarch64|ppc64le|riscv64|s390x|x64|x86)$" AND NOT ANDROID AND NOT FREEBSD) OR ILLUMOS OR HAIKU) +if((TARGET_ARCH_NAME MATCHES "^(arm|arm64|armel|armv6|loongarch64|ppc64le|riscv64|s390x|x64|x86)$" AND NOT ANDROID AND NOT FREEBSD AND NOT OPENBSD) OR ILLUMOS OR HAIKU) set(CMAKE_C_COMPILER_TARGET ${TOOLCHAIN}) set(CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN}) set(CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN}) diff --git a/eng/common/native/LocateNativeCompiler.targets b/eng/common/native/LocateNativeCompiler.targets new file mode 100644 index 00000000000..028b33d9444 --- /dev/null +++ b/eng/common/native/LocateNativeCompiler.targets @@ -0,0 +1,27 @@ + + + + + clang + $(ROOTFS_DIR) + + + + + + + + $(_CC_LDFLAGS.SubString(0, $(_CC_LDFLAGS.IndexOf(';')))) + <_LDFLAGS>$(_CC_LDFLAGS.SubString($([MSBuild]::Add($(_CC_LDFLAGS.IndexOf(';')), 1)))) + lld + + + diff --git a/eng/common/native/NativeAotSupported.props b/eng/common/native/NativeAotSupported.props new file mode 100644 index 00000000000..559a6663929 --- /dev/null +++ b/eng/common/native/NativeAotSupported.props @@ -0,0 +1,26 @@ + + + + + <_NativeAotSupportedOS Condition=" + '$(TargetOS)' != 'browser' and + '$(TargetOS)' != 'haiku' and + '$(TargetOS)' != 'illumos' and + '$(TargetOS)' != 'netbsd' and + '$(TargetOS)' != 'solaris' + ">true + + + <_NativeAotSupportedArch Condition=" + '$(TargetArchitecture)' != 'wasm' and + ('$(TargetArchitecture)' != 'x86' or '$(TargetOS)' == 'windows') + ">true + + true + + + diff --git a/eng/common/native/init-distro-rid.sh b/eng/common/native/init-distro-rid.sh index 83ea7aab0e0..8fc6d2fec78 100644 --- a/eng/common/native/init-distro-rid.sh +++ b/eng/common/native/init-distro-rid.sh @@ -39,6 +39,8 @@ getNonPortableDistroRid() # $rootfsDir can be empty. freebsd-version is a shell script and should always work. __freebsd_major_version=$("$rootfsDir"/bin/freebsd-version | cut -d'.' -f1) nonPortableRid="freebsd.$__freebsd_major_version-${targetArch}" + elif [ "$targetOs" = "openbsd" ]; then + nonPortableRid="openbsd.$(uname -r)-${targetArch}" elif command -v getprop >/dev/null && getprop ro.product.system.model | grep -qi android; then __android_sdk_version=$(getprop ro.build.version.sdk) nonPortableRid="android.$__android_sdk_version-${targetArch}" diff --git a/eng/common/native/install-dependencies.sh b/eng/common/native/install-dependencies.sh index 477a44f335b..aff839fa097 100755 --- a/eng/common/native/install-dependencies.sh +++ b/eng/common/native/install-dependencies.sh @@ -24,14 +24,16 @@ case "$os" in apt update apt install -y build-essential gettext locales cmake llvm clang lld lldb liblldb-dev libunwind8-dev libicu-dev liblttng-ust-dev \ - libssl-dev libkrb5-dev pigz cpio + libssl-dev libkrb5-dev pigz cpio ninja-build file localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 - elif [ "$ID" = "fedora" ] || [ "$ID" = "rhel" ] || [ "$ID" = "azurelinux" ]; then + elif [ "$ID" = "fedora" ] || [ "$ID" = "rhel" ] || [ "$ID" = "azurelinux" ] || [ "$ID" = "centos" ]; then pkg_mgr="$(command -v tdnf 2>/dev/null || command -v dnf)" - $pkg_mgr install -y cmake llvm lld lldb clang python curl libicu-devel openssl-devel krb5-devel lttng-ust-devel pigz cpio + $pkg_mgr install -y cmake llvm lld lldb clang python curl libicu-devel openssl-devel krb5-devel lttng-ust-devel pigz cpio ninja-build file + elif [ "$ID" = "amzn" ]; then + dnf install -y cmake llvm lld lldb clang python libicu-devel openssl-devel krb5-devel lttng-ust-devel pigz cpio ninja-build file elif [ "$ID" = "alpine" ]; then - apk add build-base cmake bash curl clang llvm-dev lld lldb krb5-dev lttng-ust-dev icu-dev openssl-dev pigz cpio + apk add build-base cmake bash curl clang llvm llvm-dev lld lldb-dev krb5-dev lttng-ust-dev icu-dev openssl-dev pigz cpio ninja file else echo "Unsupported distro. distro: $ID" exit 1 @@ -52,6 +54,7 @@ brew "openssl@3" brew "pkgconf" brew "python3" brew "pigz" +brew "ninja" EOF ;; diff --git a/eng/common/templates/vmr-build-pr.yml b/eng/common/templates/vmr-build-pr.yml index 2f3694fa132..d24de935248 100644 --- a/eng/common/templates/vmr-build-pr.yml +++ b/eng/common/templates/vmr-build-pr.yml @@ -33,7 +33,7 @@ resources: - repository: vmr type: github name: dotnet/dotnet - endpoint: dotnet + endpoint: public ref: refs/heads/main # Set to whatever VMR branch the PR build should insert into stages: diff --git a/global.json b/global.json index e94a2873d5f..5f0a8021cc5 100644 --- a/global.json +++ b/global.json @@ -13,6 +13,6 @@ "dotnet": "10.0.109" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26319.104" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26325.116" } } From a01195557cc73c0489a22f10b41369a94faca298 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 29 Jun 2026 09:15:16 +0800 Subject: [PATCH 05/19] [release/10.0.1xx] Source code updates from dotnet/dotnet (#10338) > [!NOTE] > This is a codeflow update. It may contain both source code changes from > [the VMR](https://github.com/dotnet/dotnet) > as well as dependency updates. Learn more [here](https://github.com/dotnet/dotnet/tree/main/docs/Codeflow-PRs.md). This pull request brings the following source code changes [marker]: <> (Begin:2146351c-d624-4a08-bc4e-875e6191f66e) ## From https://github.com/dotnet/dotnet - **Subscription**: [2146351c-d624-4a08-bc4e-875e6191f66e](https://maestro.dot.net/subscriptions?search=2146351c-d624-4a08-bc4e-875e6191f66e) - **Build**: [20260626.2](https://dev.azure.com/dnceng/internal/_build/results?buildId=3008725) ([320383](https://maestro.dot.net/channel/5173/github:dotnet:dotnet/build/320383)) - **Date Produced**: June 26, 2026 2:14:27 PM UTC - **Commit**: [4ab952856bd677ea1054c1fa77a209a4700d3119](https://github.com/dotnet/dotnet/commit/4ab952856bd677ea1054c1fa77a209a4700d3119) - **Commit Diff**: [61211cc...4ab9528](https://github.com/dotnet/dotnet/compare/61211cc17fddfdc4d4fbd5b94b78a0e39d18a037...4ab952856bd677ea1054c1fa77a209a4700d3119) - **Branch**: [release/10.0.1xx](https://github.com/dotnet/dotnet/tree/release/10.0.1xx) **Updated Dependencies** - From [10.0.0-beta.26325.116 to 10.0.0-beta.26326.102][1] - Microsoft.DotNet.Arcade.Sdk - From [2.0.10 to 2.0.10][1] - System.CommandLine [marker]: <> (End:2146351c-d624-4a08-bc4e-875e6191f66e) [1]: https://github.com/dotnet/dotnet/compare/61211cc17f...4ab952856b [marker]: <> (Start:Footer:CodeFlow PR)
Diff the source with this PR branch ```bash darc vmr diff --name-only https://github.com/dotnet/dotnet:4ab952856bd677ea1054c1fa77a209a4700d3119..https://github.com/dotnet/templating:darc-release/10.0.1xx-53b17d14-3057-4697-8902-fd37f8bfc8da ```
[marker]: <> (End:Footer:CodeFlow PR) Co-authored-by: dotnet-maestro[bot] --- NuGet.config | 2 +- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 8 ++++---- eng/common/dotnet.ps1 | 1 + global.json | 2 +- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index 80ce1df7292..7fdf1e6c401 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 973d0d6be98..bfb3031dad6 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props - 10.0.0-beta.26325.116 + 10.0.0-beta.26326.102 2.0.10 10.0.1 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 18418f445d8..d8c39555d01 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,16 +1,16 @@ - + https://github.com/dotnet/dotnet - 61211cc17fddfdc4d4fbd5b94b78a0e39d18a037 + 4ab952856bd677ea1054c1fa77a209a4700d3119 - + https://github.com/dotnet/dotnet - 61211cc17fddfdc4d4fbd5b94b78a0e39d18a037 + 4ab952856bd677ea1054c1fa77a209a4700d3119 diff --git a/eng/common/dotnet.ps1 b/eng/common/dotnet.ps1 index 45e5676c9eb..ce4ea40730a 100644 --- a/eng/common/dotnet.ps1 +++ b/eng/common/dotnet.ps1 @@ -8,4 +8,5 @@ $dotnetRoot = InitializeDotNetCli -install:$true if ($args.count -gt 0) { $env:DOTNET_NOLOGO=1 & "$dotnetRoot\dotnet.exe" $args + ExitWithExitCode $LASTEXITCODE } diff --git a/global.json b/global.json index 5f0a8021cc5..799a4047833 100644 --- a/global.json +++ b/global.json @@ -13,6 +13,6 @@ "dotnet": "10.0.109" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26325.116" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26326.102" } } From f8598586b5a0af8987ffef2bd01e499973e00339 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 29 Jun 2026 13:34:17 +0800 Subject: [PATCH 06/19] [release/10.0.1xx] Source code updates from dotnet/dotnet (#10339) > [!NOTE] > This is a codeflow update. It may contain both source code changes from > [the VMR](https://github.com/dotnet/dotnet) > as well as dependency updates. Learn more [here](https://github.com/dotnet/dotnet/tree/main/docs/Codeflow-PRs.md). This pull request brings the following source code changes [marker]: <> (Begin:2146351c-d624-4a08-bc4e-875e6191f66e) ## From https://github.com/dotnet/dotnet - **Subscription**: [2146351c-d624-4a08-bc4e-875e6191f66e](https://maestro.dot.net/subscriptions?search=2146351c-d624-4a08-bc4e-875e6191f66e) - **Build**: [20260628.3](https://dev.azure.com/dnceng/internal/_build/results?buildId=3010161) ([320580](https://maestro.dot.net/channel/5173/github:dotnet:dotnet/build/320580)) - **Date Produced**: June 28, 2026 9:43:23 PM UTC - **Commit**: [d90771109c7250deb1786ca4b5a7d9bf2051a1e2](https://github.com/dotnet/dotnet/commit/d90771109c7250deb1786ca4b5a7d9bf2051a1e2) - **Commit Diff**: [4ab9528...d907711](https://github.com/dotnet/dotnet/compare/4ab952856bd677ea1054c1fa77a209a4700d3119...d90771109c7250deb1786ca4b5a7d9bf2051a1e2) - **Branch**: [release/10.0.1xx](https://github.com/dotnet/dotnet/tree/release/10.0.1xx) **Updated Dependencies** - From [10.0.0-beta.26326.102 to 10.0.0-beta.26328.103][1] - Microsoft.DotNet.Arcade.Sdk - From [2.0.10 to 2.0.10][1] - System.CommandLine [marker]: <> (End:2146351c-d624-4a08-bc4e-875e6191f66e) [1]: https://github.com/dotnet/dotnet/compare/4ab952856b...d90771109c [marker]: <> (Start:Footer:CodeFlow PR) ## Associated changes in source repos - https://github.com/dotnet/runtime/compare/bee7e39da8fc9befed4bb154bb74a4d8a180f102...62582ba8b5e27dd02ac86af64fa747966aca6319 - https://github.com/dotnet/sdk/compare/87e8d204d939f13112755d92e59797b719c5d756...61f5d144a6dbc2feaa04da6e0ed510460e739746 - https://github.com/dotnet/templating/compare/c97dc497c4de0d767a74a4269b63b8d81e49496c...9ec015a17bba42434c8f46d39953019833981852 - https://github.com/dotnet/windowsdesktop/compare/243483d2274de7714e30d51aeb0be2d63c82f779...0b3bbf2869b4a52d350f3558be0cd51b6042d3f7
Diff the source with this PR branch ```bash darc vmr diff --name-only https://github.com/dotnet/dotnet:d90771109c7250deb1786ca4b5a7d9bf2051a1e2..https://github.com/dotnet/templating:darc-release/10.0.1xx-f142a616-ae30-46b2-bd04-c4953a521af7 ```
[marker]: <> (End:Footer:CodeFlow PR) Co-authored-by: dotnet-maestro[bot] --- NuGet.config | 2 +- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 8 ++++---- global.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index 7fdf1e6c401..7dc3a3b1277 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + diff --git a/eng/Version.Details.props b/eng/Version.Details.props index bfb3031dad6..0e6e8d84336 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props - 10.0.0-beta.26326.102 + 10.0.0-beta.26328.103 2.0.10 10.0.1 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d8c39555d01..ff21d7c0585 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,16 +1,16 @@ - + https://github.com/dotnet/dotnet - 4ab952856bd677ea1054c1fa77a209a4700d3119 + d90771109c7250deb1786ca4b5a7d9bf2051a1e2 - + https://github.com/dotnet/dotnet - 4ab952856bd677ea1054c1fa77a209a4700d3119 + d90771109c7250deb1786ca4b5a7d9bf2051a1e2 diff --git a/global.json b/global.json index 799a4047833..06cda9e22f5 100644 --- a/global.json +++ b/global.json @@ -13,6 +13,6 @@ "dotnet": "10.0.109" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26326.102" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26328.103" } } From 3a539fa177aa3141441229488d0f40314b4790bc Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 30 Jun 2026 13:52:49 +0800 Subject: [PATCH 07/19] [release/10.0.1xx] Source code updates from dotnet/dotnet (#10341) > [!NOTE] > This is a codeflow update. It may contain both source code changes from > [the VMR](https://github.com/dotnet/dotnet) > as well as dependency updates. Learn more [here](https://github.com/dotnet/dotnet/tree/main/docs/Codeflow-PRs.md). This pull request brings the following source code changes [marker]: <> (Begin:2146351c-d624-4a08-bc4e-875e6191f66e) ## From https://github.com/dotnet/dotnet - **Subscription**: [2146351c-d624-4a08-bc4e-875e6191f66e](https://maestro.dot.net/subscriptions?search=2146351c-d624-4a08-bc4e-875e6191f66e) - **Build**: [20260629.3](https://dev.azure.com/dnceng/internal/_build/results?buildId=3010615) ([320715](https://maestro.dot.net/channel/5173/github:dotnet:dotnet/build/320715)) - **Date Produced**: June 29, 2026 4:34:29 PM UTC - **Commit**: [2d37d6cebea0529f77d862c57db2873cfb2fba3d](https://github.com/dotnet/dotnet/commit/2d37d6cebea0529f77d862c57db2873cfb2fba3d) - **Commit Diff**: [d907711...2d37d6c](https://github.com/dotnet/dotnet/compare/d90771109c7250deb1786ca4b5a7d9bf2051a1e2...2d37d6cebea0529f77d862c57db2873cfb2fba3d) - **Branch**: [release/10.0.1xx](https://github.com/dotnet/dotnet/tree/release/10.0.1xx) **Updated Dependencies** - From [10.0.0-beta.26328.103 to 10.0.0-beta.26329.103][1] - Microsoft.DotNet.Arcade.Sdk - From [2.0.10 to 2.0.10][1] - System.CommandLine [marker]: <> (End:2146351c-d624-4a08-bc4e-875e6191f66e) [1]: https://github.com/dotnet/dotnet/compare/d90771109c...2d37d6cebe [marker]: <> (Start:Footer:CodeFlow PR) ## Associated changes in source repos - https://github.com/dotnet/runtime/compare/62582ba8b5e27dd02ac86af64fa747966aca6319...85873d9e749d60505eb17638257553c31b960f59 - https://github.com/dotnet/source-build-assets/compare/64e1a143751829a0363883e62e78e66fdb7a0882...e98926ee50c304d06ebc8bc9a0671b4f69390e65
Diff the source with this PR branch ```bash darc vmr diff --name-only https://github.com/dotnet/dotnet:2d37d6cebea0529f77d862c57db2873cfb2fba3d..https://github.com/dotnet/templating:darc-release/10.0.1xx-37e410f6-0035-4934-90b0-90e578a6d211 ```
[marker]: <> (End:Footer:CodeFlow PR) Co-authored-by: dotnet-maestro[bot] --- NuGet.config | 2 +- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 8 ++++---- global.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index 7dc3a3b1277..75a24e26cbb 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 0e6e8d84336..303235d2d22 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props - 10.0.0-beta.26328.103 + 10.0.0-beta.26329.103 2.0.10 10.0.1 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index ff21d7c0585..f72ddb291f2 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,16 +1,16 @@ - + https://github.com/dotnet/dotnet - d90771109c7250deb1786ca4b5a7d9bf2051a1e2 + 2d37d6cebea0529f77d862c57db2873cfb2fba3d - + https://github.com/dotnet/dotnet - d90771109c7250deb1786ca4b5a7d9bf2051a1e2 + 2d37d6cebea0529f77d862c57db2873cfb2fba3d diff --git a/global.json b/global.json index 06cda9e22f5..5c459a52a77 100644 --- a/global.json +++ b/global.json @@ -13,6 +13,6 @@ "dotnet": "10.0.109" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26328.103" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26329.103" } } From 515a679ac481675191d2d658365a9cdeee36e375 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 1 Jul 2026 09:59:22 -0700 Subject: [PATCH 08/19] [release/10.0.1xx] Source code updates from dotnet/dotnet (#10345) > [!NOTE] > This is a codeflow update. It may contain both source code changes from > [the VMR](https://github.com/dotnet/dotnet) > as well as dependency updates. Learn more [here](https://github.com/dotnet/dotnet/tree/main/docs/Codeflow-PRs.md). This pull request brings the following source code changes [marker]: <> (Begin:2146351c-d624-4a08-bc4e-875e6191f66e) ## From https://github.com/dotnet/dotnet - **Subscription**: [2146351c-d624-4a08-bc4e-875e6191f66e](https://maestro.dot.net/subscriptions?search=2146351c-d624-4a08-bc4e-875e6191f66e) - **Build**: [20260630.10](https://dev.azure.com/dnceng/internal/_build/results?buildId=3011805) ([320986](https://maestro.dot.net/channel/5173/github:dotnet:dotnet/build/320986)) - **Date Produced**: July 1, 2026 12:00:52 AM UTC - **Commit**: [e8551b43d851fdfa6fdcfe3fc10aa315148f623b](https://github.com/dotnet/dotnet/commit/e8551b43d851fdfa6fdcfe3fc10aa315148f623b) - **Commit Diff**: [2d37d6c...e8551b4](https://github.com/dotnet/dotnet/compare/2d37d6cebea0529f77d862c57db2873cfb2fba3d...e8551b43d851fdfa6fdcfe3fc10aa315148f623b) - **Branch**: [release/10.0.1xx](https://github.com/dotnet/dotnet/tree/release/10.0.1xx) **Updated Dependencies** - From [10.0.0-beta.26329.103 to 10.0.0-beta.26330.110][1] - Microsoft.DotNet.Arcade.Sdk - From [2.0.10 to 2.0.10][1] - System.CommandLine [marker]: <> (End:2146351c-d624-4a08-bc4e-875e6191f66e) [1]: https://github.com/dotnet/dotnet/compare/2d37d6cebe...e8551b43d8 [marker]: <> (Start:Footer:CodeFlow PR) ## Associated changes in source repos - https://github.com/dotnet/runtime/compare/85873d9e749d60505eb17638257553c31b960f59...cc77fc9ccf5aef06473cdbde6a916dcd5e5faa7b - https://github.com/dotnet/source-build-assets/compare/e98926ee50c304d06ebc8bc9a0671b4f69390e65...fe5e347b1e061577794a2dca8cd1b0c3e4d852c6
Diff the source with this PR branch ```bash darc vmr diff --name-only https://github.com/dotnet/dotnet:e8551b43d851fdfa6fdcfe3fc10aa315148f623b..https://github.com/dotnet/templating:darc-release/10.0.1xx-64152911-abb5-4c32-ba41-7db7b73b3fc1 ```
[marker]: <> (End:Footer:CodeFlow PR) Co-authored-by: dotnet-maestro[bot] --- NuGet.config | 2 +- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 8 ++++---- global.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index 75a24e26cbb..95b517a5862 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 303235d2d22..54b46ad4ae6 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props - 10.0.0-beta.26329.103 + 10.0.0-beta.26330.110 2.0.10 10.0.1 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f72ddb291f2..99c7cb2558b 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,16 +1,16 @@ - + https://github.com/dotnet/dotnet - 2d37d6cebea0529f77d862c57db2873cfb2fba3d + e8551b43d851fdfa6fdcfe3fc10aa315148f623b - + https://github.com/dotnet/dotnet - 2d37d6cebea0529f77d862c57db2873cfb2fba3d + e8551b43d851fdfa6fdcfe3fc10aa315148f623b diff --git a/global.json b/global.json index 5c459a52a77..9b7bf3ebd27 100644 --- a/global.json +++ b/global.json @@ -13,6 +13,6 @@ "dotnet": "10.0.109" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26329.103" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26330.110" } } From a68af5438958cd5f238c5be0e7ecba1c404e13ae Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Fri, 3 Jul 2026 02:08:00 +0000 Subject: [PATCH 09/19] Update dependencies from build 321165 Updated Dependencies: Microsoft.DotNet.Arcade.Sdk (Version 10.0.0-beta.26330.110 -> 10.0.0-beta.26351.110) System.CommandLine (Version 2.0.10 -> 2.0.10) [[ commit created by automation ]] --- NuGet.config | 2 +- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 8 ++++---- global.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index 95b517a5862..8a3868d4b22 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 54b46ad4ae6..3da03ee0216 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props - 10.0.0-beta.26330.110 + 10.0.0-beta.26351.110 2.0.10 10.0.1 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 99c7cb2558b..0b662093e03 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,16 +1,16 @@ - + https://github.com/dotnet/dotnet - e8551b43d851fdfa6fdcfe3fc10aa315148f623b + 09b877029dcd0b265a5425132ce4b03d8e7d7060 - + https://github.com/dotnet/dotnet - e8551b43d851fdfa6fdcfe3fc10aa315148f623b + 09b877029dcd0b265a5425132ce4b03d8e7d7060 diff --git a/global.json b/global.json index 9b7bf3ebd27..3e9b01aab18 100644 --- a/global.json +++ b/global.json @@ -13,6 +13,6 @@ "dotnet": "10.0.109" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26330.110" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26351.110" } } From b6b126c7e8474d2ff1f5e91e396415c21a55be08 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 8 Jul 2026 02:11:43 +0000 Subject: [PATCH 10/19] Update dependencies from build 321661 Updated Dependencies: Microsoft.DotNet.Arcade.Sdk (Version 10.0.0-beta.26351.110 -> 10.0.0-beta.26356.112) System.CommandLine (Version 2.0.10 -> 2.0.10) [[ commit created by automation ]] --- NuGet.config | 2 +- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 8 ++++---- global.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index 8a3868d4b22..645acaf06f6 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 3da03ee0216..95aecfb0365 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props - 10.0.0-beta.26351.110 + 10.0.0-beta.26356.112 2.0.10 10.0.1 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 0b662093e03..4570cd2e3e6 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,16 +1,16 @@ - + https://github.com/dotnet/dotnet - 09b877029dcd0b265a5425132ce4b03d8e7d7060 + 1298a4c24afa3a61936d2dde63bb28da65421956 - + https://github.com/dotnet/dotnet - 09b877029dcd0b265a5425132ce4b03d8e7d7060 + 1298a4c24afa3a61936d2dde63bb28da65421956 diff --git a/global.json b/global.json index 3e9b01aab18..7bfb2a28d8b 100644 --- a/global.json +++ b/global.json @@ -13,6 +13,6 @@ "dotnet": "10.0.109" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26351.110" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26356.112" } } From e30c2d68f60db5bfcdbc33f297bae55b8c571efe Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 9 Jul 2026 22:44:46 +0000 Subject: [PATCH 11/19] [release/10.0.3xx] Source code updates from dotnet/dotnet (#10363) [release/10.0.3xx] Source code updates from dotnet/dotnet --- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 6 +++--- global.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/Version.Details.props b/eng/Version.Details.props index e76d6a48f7c..6cba6baeb64 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -7,7 +7,7 @@ This file should be imported by eng/Versions.props 10.0.7 - 10.0.0-beta.26359.101 + 10.0.0-beta.26359.111 10.0.7 10.0.7 10.0.7 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 094e620010a..142b266aecc 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,6 +1,6 @@ - + https://github.com/dotnet/dotnet @@ -8,9 +8,9 @@ - + https://github.com/dotnet/dotnet - f869e034edb40e3b2c3e774145a6d6d4589ecb1e + e54fff6ac75e1c43c80bc5ab1a4cf7964b22670a diff --git a/global.json b/global.json index ef368d92aa1..0005712e9fa 100644 --- a/global.json +++ b/global.json @@ -13,6 +13,6 @@ "dotnet": "10.0.301" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26359.101" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26359.111" } } From 293f579cf354eb64ad88215eb5e780df307f365a Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Fri, 10 Jul 2026 02:14:27 +0000 Subject: [PATCH 12/19] Update dependencies from build 322216 Updated Dependencies: Microsoft.DotNet.Arcade.Sdk (Version 10.0.0-beta.26356.112 -> 10.0.0-beta.26359.106) System.CommandLine (Version 2.0.10 -> 2.0.10) [[ commit created by automation ]] --- NuGet.config | 2 +- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 8 ++++---- global.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index 645acaf06f6..dfc97f79701 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 95aecfb0365..438c79db45c 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props - 10.0.0-beta.26356.112 + 10.0.0-beta.26359.106 2.0.10 10.0.1 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 4570cd2e3e6..efe32707aa8 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,16 +1,16 @@ - + https://github.com/dotnet/dotnet - 1298a4c24afa3a61936d2dde63bb28da65421956 + c071cd45629c5b0049c19e435c107609ef7dd9d6 - + https://github.com/dotnet/dotnet - 1298a4c24afa3a61936d2dde63bb28da65421956 + c071cd45629c5b0049c19e435c107609ef7dd9d6 diff --git a/global.json b/global.json index 7bfb2a28d8b..917c1514bbb 100644 --- a/global.json +++ b/global.json @@ -13,6 +13,6 @@ "dotnet": "10.0.109" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26356.112" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26359.106" } } From fc632e6808dcc6c8b81071c614e0e9b005a9fbee Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Fri, 10 Jul 2026 19:14:00 +0000 Subject: [PATCH 13/19] Update dependencies from build 322439 Updated Dependencies: Microsoft.DotNet.Arcade.Sdk (Version 10.0.0-beta.26359.111 -> 10.0.0-beta.26360.107) [[ commit created by automation ]] --- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 6 +++--- global.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 6cba6baeb64..d65e77dee23 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -7,7 +7,7 @@ This file should be imported by eng/Versions.props 10.0.7 - 10.0.0-beta.26359.111 + 10.0.0-beta.26360.107 10.0.7 10.0.7 10.0.7 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 142b266aecc..68771c23d16 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,6 +1,6 @@ - + https://github.com/dotnet/dotnet @@ -8,9 +8,9 @@ - + https://github.com/dotnet/dotnet - e54fff6ac75e1c43c80bc5ab1a4cf7964b22670a + 463e0cf2f2b2fb9b136f6440341ff1e7b0a93acf diff --git a/global.json b/global.json index 0005712e9fa..1cba9d4cdc1 100644 --- a/global.json +++ b/global.json @@ -13,6 +13,6 @@ "dotnet": "10.0.301" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26359.111" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26360.107" } } From c73382c97245f4e0760fb87ec24c67b079b3111d Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Sat, 11 Jul 2026 02:13:28 +0000 Subject: [PATCH 14/19] Update dependencies from build 322363 Updated Dependencies: Microsoft.DotNet.Arcade.Sdk (Version 10.0.0-beta.26359.106 -> 10.0.0-beta.26359.121) System.CommandLine (Version 2.0.10 -> 2.0.10) [[ commit created by automation ]] --- NuGet.config | 2 +- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 8 ++++---- global.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index dfc97f79701..4aa2370feb5 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 438c79db45c..965dd2444c9 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -6,7 +6,7 @@ This file should be imported by eng/Versions.props - 10.0.0-beta.26359.106 + 10.0.0-beta.26359.121 2.0.10 10.0.1 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index efe32707aa8..06027b4b8ed 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,16 +1,16 @@ - + https://github.com/dotnet/dotnet - c071cd45629c5b0049c19e435c107609ef7dd9d6 + 8aa4f7816406bcd85e0c1d2fb1af64a10533c8b2 - + https://github.com/dotnet/dotnet - c071cd45629c5b0049c19e435c107609ef7dd9d6 + 8aa4f7816406bcd85e0c1d2fb1af64a10533c8b2 diff --git a/global.json b/global.json index 917c1514bbb..cdcd62de09d 100644 --- a/global.json +++ b/global.json @@ -13,6 +13,6 @@ "dotnet": "10.0.109" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26359.106" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26359.121" } } From bccf557106c34689f21b431ca629f19d2785e2fc Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 22 Jul 2026 08:37:36 -0700 Subject: [PATCH 15/19] [release/10.0.3xx] Source code updates from dotnet/dotnet (#10382) > [!NOTE] > This is a codeflow update. It may contain both source code changes from > [the VMR](https://github.com/dotnet/dotnet) > as well as dependency updates. Learn more [here](https://github.com/dotnet/dotnet/tree/main/docs/Codeflow-PRs.md). This pull request brings the following source code changes [marker]: <> (Begin:bbf9aa7e-217b-4275-99d1-5f23eb747967) ## From https://github.com/dotnet/dotnet - **Subscription**: [bbf9aa7e-217b-4275-99d1-5f23eb747967](https://maestro.dot.net/subscriptions?search=bbf9aa7e-217b-4275-99d1-5f23eb747967) - **Build**: [20260721.16](https://dev.azure.com/dnceng/internal/_build/results?buildId=3028316) ([323859](https://maestro.dot.net/channel/9626/github:dotnet:dotnet/build/323859)) - **Date Produced**: July 22, 2026 1:38:35 AM UTC - **Commit**: [bf47707e320c20fc46713a50f3fa73170e7e1570](https://github.com/dotnet/dotnet/commit/bf47707e320c20fc46713a50f3fa73170e7e1570) - **Commit Diff**: [463e0cf...bf47707](https://github.com/dotnet/dotnet/compare/463e0cf2f2b2fb9b136f6440341ff1e7b0a93acf...bf47707e320c20fc46713a50f3fa73170e7e1570) - **Branch**: [release/10.0.3xx](https://github.com/dotnet/dotnet/tree/release/10.0.3xx) **Updated Dependencies** - From [10.0.0-beta.26360.107 to 10.0.0-beta.26371.116](https://github.com/dotnet/dotnet/compare/463e0cf2f2...bf47707e32) - Microsoft.DotNet.Arcade.Sdk - From [2.0.10 to 2.0.10](https://github.com/dotnet/dotnet/compare/e8558e6339...f7d90799ce) - System.CommandLine [marker]: <> (End:bbf9aa7e-217b-4275-99d1-5f23eb747967) [marker]: <> (Start:Footer:CodeFlow PR) ## Associated changes in source repos - https://github.com/dotnet/arcade/compare/1373629deb1e04f3e8e66fb68bb48ae36479c5ef...fe219b71a1195d92b067ef4e981e611c3fa10062 - https://github.com/dotnet/msbuild/compare/7cac27b6cc3615b3770cc8af7531ba1c48e189ed...263ba6dfb2419bfceebeb1e1240c3a766d780632 - https://github.com/dotnet/razor/compare/00646cfe5da14effd274a8c16c107724a0a1d360...bd1066fac0fa4c22de1216a8b212dbc6f549620d - https://github.com/dotnet/scenario-tests/compare/ef6151a78ec15c71e469bc487f2c93ba851220ca...ba95998da076270d7d92d544d8ec8aeb0bdf8ab8
Diff the source with this PR branch ```bash darc vmr diff --name-only https://github.com/dotnet/dotnet:bf47707e320c20fc46713a50f3fa73170e7e1570..https://github.com/dotnet/templating:darc-release/10.0.3xx-db569286-fe5b-447e-95d4-ef6b7c738513 ```
[marker]: <> (End:Footer:CodeFlow PR) --------- Co-authored-by: dotnet-maestro[bot] --- Directory.Build.props | 3 --- NuGet.config | 5 ++++- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 10 +++++----- eng/Versions.props | 2 +- eng/common/build.ps1 | 2 ++ eng/common/build.sh | 6 ++++++ eng/common/core-templates/job/onelocbuild.yml | 20 ++++++++++++++++++- .../job/publish-build-assets.yml | 3 --- .../core-templates/post-build/post-build.yml | 2 -- eng/common/dotnet.ps1 | 1 + eng/common/tools.ps1 | 10 +++++++++- eng/common/tools.sh | 12 +++++++++-- global.json | 6 +++--- 14 files changed, 61 insertions(+), 23 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 9a7900fc48d..9ca6a253cba 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -25,9 +25,6 @@ 0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb 0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7 - - $(WarningsNotAsErrors);NU1901;NU1902;NU1903;NU1904 - true false diff --git a/NuGet.config b/NuGet.config index e74ca348f9e..71ab1504e44 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,6 @@ - @@ -29,4 +28,8 @@ + + + + diff --git a/eng/Version.Details.props b/eng/Version.Details.props index d65e77dee23..a3e7bae5c84 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -7,7 +7,7 @@ This file should be imported by eng/Versions.props 10.0.7 - 10.0.0-beta.26360.107 + 10.0.0-beta.26371.116 10.0.7 10.0.7 10.0.7 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 68771c23d16..9d39d695f86 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,16 +1,16 @@ - + - https://github.com/dotnet/dotnet - e8558e6339cd4fccd998b5cdecb76eeb6ec75363 + https://dev.azure.com/dnceng/internal/_git/dotnet-dotnet + f7d90799ce4ef09a0bb257852a57248d2a8fb8dd - + https://github.com/dotnet/dotnet - 463e0cf2f2b2fb9b136f6440341ff1e7b0a93acf + bf47707e320c20fc46713a50f3fa73170e7e1570 diff --git a/eng/Versions.props b/eng/Versions.props index 04d11f759ee..22ac3a8d134 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,7 +1,7 @@ - 10.0.302 + 10.0.303 false diff --git a/eng/common/build.ps1 b/eng/common/build.ps1 index 8cfee107e7a..18397a60eb8 100644 --- a/eng/common/build.ps1 +++ b/eng/common/build.ps1 @@ -6,6 +6,7 @@ Param( [string][Alias('v')]$verbosity = "minimal", [string] $msbuildEngine = $null, [bool] $warnAsError = $true, + [string] $warnNotAsError = '', [bool] $nodeReuse = $true, [switch] $buildCheck = $false, [switch][Alias('r')]$restore, @@ -70,6 +71,7 @@ function Print-Usage() { Write-Host " -excludeCIBinarylog Don't output binary log (short: -nobl)" Write-Host " -prepareMachine Prepare machine for CI run, clean up processes after build" Write-Host " -warnAsError Sets warnaserror msbuild parameter ('true' or 'false')" + Write-Host " -warnNotAsError Sets a semi-colon delimited list of warning codes that should not be treated as errors" Write-Host " -msbuildEngine Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)." Write-Host " -excludePrereleaseVS Set to exclude build engines in prerelease versions of Visual Studio" Write-Host " -nativeToolsOnMachine Sets the native tools on machine environment variable (indicating that the script should use native tools on machine)" diff --git a/eng/common/build.sh b/eng/common/build.sh index 9767bb411a4..c8bea7cbc2d 100755 --- a/eng/common/build.sh +++ b/eng/common/build.sh @@ -42,6 +42,7 @@ usage() echo " --prepareMachine Prepare machine for CI run, clean up processes after build" echo " --nodeReuse Sets nodereuse msbuild parameter ('true' or 'false')" echo " --warnAsError Sets warnaserror msbuild parameter ('true' or 'false')" + echo " --warnNotAsError Sets a semi-colon delimited list of warning codes that should not be treated as errors" echo " --buildCheck Sets /check msbuild parameter" echo " --fromVMR Set when building from within the VMR" echo "" @@ -78,6 +79,7 @@ ci=false clean=false warn_as_error=true +warn_not_as_error='' node_reuse=true build_check=false binary_log=false @@ -176,6 +178,10 @@ while [[ $# > 0 ]]; do warn_as_error=$2 shift ;; + -warnnotaserror) + warn_not_as_error=$2 + shift + ;; -nodereuse) node_reuse=$2 shift diff --git a/eng/common/core-templates/job/onelocbuild.yml b/eng/common/core-templates/job/onelocbuild.yml index eefed3b667a..12d7e55a94b 100644 --- a/eng/common/core-templates/job/onelocbuild.yml +++ b/eng/common/core-templates/job/onelocbuild.yml @@ -8,6 +8,12 @@ parameters: CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex GithubPat: $(BotAccount-dotnet-bot-repo-PAT) + # Service connection for WIF-based Entra authentication to ceapex feeds (replaces CeapexPat). + # When set, dnceng/internal builds acquire a federated Entra token instead of using a PAT. + # All other projects (e.g. DevDiv, public), where this dnceng-scoped service connection does not + # exist, and any pipeline that sets this to '' fall back to PAT-based auth via the CeapexPat parameter. + CeapexServiceConnection: 'dnceng-onelocbuild-ceapex' + SourcesDirectory: $(System.DefaultWorkingDirectory) CreatePr: true AutoCompletePr: false @@ -73,6 +79,15 @@ jobs: displayName: Generate LocProject.json condition: ${{ parameters.condition }} + # Acquire an Entra token for ceapex feed access via WIF (dnceng/internal only). + # All other projects use PAT-based auth, since the ceapex service connection is scoped to dnceng/internal. + - ${{ if and(ne(parameters.CeapexServiceConnection, ''), eq(variables['System.TeamProject'], 'internal')) }}: + - template: /eng/common/templates/steps/get-federated-access-token.yml + parameters: + federatedServiceConnection: ${{ parameters.CeapexServiceConnection }} + outputVariableName: 'CeapexEntraToken' + condition: ${{ parameters.condition }} + - task: OneLocBuild@2 displayName: OneLocBuild env: @@ -88,7 +103,10 @@ jobs: isUseLfLineEndingsSelected: ${{ parameters.UseLfLineEndings }} isShouldReusePrSelected: ${{ parameters.ReusePr }} packageSourceAuth: patAuth - patVariable: ${{ parameters.CeapexPat }} + ${{ if and(ne(parameters.CeapexServiceConnection, ''), eq(variables['System.TeamProject'], 'internal')) }}: + patVariable: $(CeapexEntraToken) + ${{ if or(eq(parameters.CeapexServiceConnection, ''), ne(variables['System.TeamProject'], 'internal')) }}: + patVariable: ${{ parameters.CeapexPat }} ${{ if eq(parameters.RepoType, 'gitHub') }}: repoType: ${{ parameters.RepoType }} gitHubPatVariable: "${{ parameters.GithubPat }}" diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml index 06f2eed0323..53af522d6d4 100644 --- a/eng/common/core-templates/job/publish-build-assets.yml +++ b/eng/common/core-templates/job/publish-build-assets.yml @@ -122,9 +122,6 @@ jobs: # Populate internal runtime variables. - template: /eng/common/templates/steps/enable-internal-sources.yml - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - parameters: - legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw) - template: /eng/common/templates/steps/enable-internal-runtimes.yml diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml index 905a6315e2d..135fc9a5051 100644 --- a/eng/common/core-templates/post-build/post-build.yml +++ b/eng/common/core-templates/post-build/post-build.yml @@ -352,8 +352,6 @@ stages: # Populate internal runtime variables. - template: /eng/common/templates/steps/enable-internal-sources.yml - parameters: - legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw) - template: /eng/common/templates/steps/enable-internal-runtimes.yml diff --git a/eng/common/dotnet.ps1 b/eng/common/dotnet.ps1 index 45e5676c9eb..ce4ea40730a 100644 --- a/eng/common/dotnet.ps1 +++ b/eng/common/dotnet.ps1 @@ -8,4 +8,5 @@ $dotnetRoot = InitializeDotNetCli -install:$true if ($args.count -gt 0) { $env:DOTNET_NOLOGO=1 & "$dotnetRoot\dotnet.exe" $args + ExitWithExitCode $LASTEXITCODE } diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index 977a2d4b103..bde220ad85b 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -34,6 +34,9 @@ # Configures warning treatment in msbuild. [bool]$warnAsError = if (Test-Path variable:warnAsError) { $warnAsError } else { $true } +# Specifies semi-colon delimited list of warning codes that should not be treated as errors. +[string]$warnNotAsError = if (Test-Path variable:warnNotAsError) { $warnNotAsError } else { '' } + # Specifies which msbuild engine to use for build: 'vs', 'dotnet' or unspecified (determined based on presence of tools.vs in global.json). [string]$msbuildEngine = if (Test-Path variable:msbuildEngine) { $msbuildEngine } else { $null } @@ -732,7 +735,7 @@ function InitializeToolset() { '' | Set-Content $proj - MSBuild-Core $proj $bl /t:__WriteToolsetLocation /clp:ErrorsOnly`;NoSummary /p:__ToolsetLocationOutputFile=$toolsetLocationFile + MSBuild-Core $proj $bl /t:__WriteToolsetLocation /clp:ErrorsOnly`;NoSummary /p:__ToolsetLocationOutputFile=$toolsetLocationFile /p:RestoreIgnoreFailedSources=true $path = Get-Content $toolsetLocationFile -Encoding UTF8 -TotalCount 1 if (!(Test-Path $path)) { @@ -836,6 +839,11 @@ function MSBuild-Core() { $cmdArgs += ' /p:TreatWarningsAsErrors=false' } + if ($warnAsError -and $warnNotAsError) { + $escapedWarnNotAsError = $warnNotAsError -replace ';', '%3B' + $cmdArgs += " /warnnotaserror:$warnNotAsError /p:AdditionalWarningsNotAsErrors=$escapedWarnNotAsError" + } + foreach ($arg in $args) { if ($null -ne $arg -and $arg.Trim() -ne "") { if ($arg.EndsWith('\')) { diff --git a/eng/common/tools.sh b/eng/common/tools.sh index 1b296f646c2..df76f062a76 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -52,6 +52,9 @@ fi # Configures warning treatment in msbuild. warn_as_error=${warn_as_error:-true} +# Specifies semi-colon delimited list of warning codes that should not be treated as errors. +warn_not_as_error=${warn_not_as_error:-''} + # True to attempt using .NET Core already that meets requirements specified in global.json # installed on the machine instead of downloading one. use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} @@ -430,7 +433,7 @@ function InitializeToolset { fi echo '' > "$proj" - MSBuild-Core "$proj" $bl /t:__WriteToolsetLocation /clp:ErrorsOnly\;NoSummary /p:__ToolsetLocationOutputFile="$toolset_location_file" + MSBuild-Core "$proj" $bl /t:__WriteToolsetLocation /clp:ErrorsOnly\;NoSummary /p:__ToolsetLocationOutputFile="$toolset_location_file" /p:RestoreIgnoreFailedSources=true local toolset_build_proj=`cat "$toolset_location_file"` @@ -532,7 +535,12 @@ function MSBuild-Core { mt_switch="-mt" fi - RunBuildTool "$_InitializeBuildToolCommand" /m /nologo /clp:Summary /v:$verbosity /nr:$node_reuse $warnaserror_switch $mt_switch /p:TreatWarningsAsErrors=$warn_as_error /p:ContinuousIntegrationBuild=$ci "$@" + local warnnotaserror_switch="" + if [[ -n "$warn_not_as_error" && "$warn_as_error" == true ]]; then + warnnotaserror_switch="/warnnotaserror:$warn_not_as_error /p:AdditionalWarningsNotAsErrors=${warn_not_as_error//;/%3B}" + fi + + RunBuildTool "$_InitializeBuildToolCommand" /m /nologo /clp:Summary /v:$verbosity /nr:$node_reuse $warnaserror_switch $mt_switch $warnnotaserror_switch /p:TreatWarningsAsErrors=$warn_as_error /p:ContinuousIntegrationBuild=$ci "$@" } function GetDarc { diff --git a/global.json b/global.json index 1cba9d4cdc1..867f0bcfa89 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "10.0.301", + "version": "10.0.302", "allowPrerelease": true, "rollForward": "latestFeature", "paths": [ @@ -10,9 +10,9 @@ "errorMessage": "The required .NET SDK wasn't found. Please run ./eng/common/dotnet.cmd/sh to install it." }, "tools": { - "dotnet": "10.0.301" + "dotnet": "10.0.302" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26360.107" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26371.116" } } From 8f55a6221464364373e7dc088b3c8c23d95c5727 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 20:12:42 +0000 Subject: [PATCH 16/19] [release/10.0.3xx] Source code updates from dotnet/dotnet (#10383) [release/10.0.3xx] Source code updates from dotnet/dotnet --- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 6 +++--- global.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/Version.Details.props b/eng/Version.Details.props index a3e7bae5c84..68477e07b06 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -7,7 +7,7 @@ This file should be imported by eng/Versions.props 10.0.7 - 10.0.0-beta.26371.116 + 10.0.0-beta.26372.117 10.0.7 10.0.7 10.0.7 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 9d39d695f86..7fb225aed2a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,6 +1,6 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-dotnet @@ -8,9 +8,9 @@ - + https://github.com/dotnet/dotnet - bf47707e320c20fc46713a50f3fa73170e7e1570 + 799539e5b5c0403b023e34a76c033039f07f9dac diff --git a/global.json b/global.json index 867f0bcfa89..356a23cbb0c 100644 --- a/global.json +++ b/global.json @@ -13,6 +13,6 @@ "dotnet": "10.0.302" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26371.116" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26372.117" } } From ddd080f80b5b88077d3f35231c6018369f00c4d1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 Jul 2026 16:56:16 +0000 Subject: [PATCH 17/19] [release/10.0.3xx] Fix flaky output truncation in CLI integration tests (#10387) Backport of #10384 to release/10.0.3xx /cc @joeloff Co-authored-by: Jacques Eloff Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a88c2700-ee2f-4a55-9272-f19d9b8537d7 --- .../StreamForwarder.cs | 41 +++++++++++++------ 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/tools/Shared/Microsoft.TemplateEngine.CommandUtils/StreamForwarder.cs b/tools/Shared/Microsoft.TemplateEngine.CommandUtils/StreamForwarder.cs index dfe1ff6567f..b0825ec3d3c 100644 --- a/tools/Shared/Microsoft.TemplateEngine.CommandUtils/StreamForwarder.cs +++ b/tools/Shared/Microsoft.TemplateEngine.CommandUtils/StreamForwarder.cs @@ -49,29 +49,44 @@ public StreamForwarder ForwardTo(Action writeLine) return this; } - public Task BeginRead(TextReader reader) => Task.Run(() => Read(reader)); + // Use a dedicated long-running thread rather than a thread-pool thread (Task.Run). + // Under load (e.g. CI running many tests in parallel) the thread pool can be + // starved, delaying the reader from draining the child's redirected stream. When + // that happens the OS pipe buffer fills, the child blocks on Console.Write, and an + // asynchronous console logger (AddSimpleConsole) can drop queued messages when its + // bounded flush-on-dispose (~1.5s) times out - producing truncated captured output. + public Task BeginRead(TextReader reader) => + Task.Factory.StartNew( + () => Read(reader), + CancellationToken.None, + TaskCreationOptions.LongRunning, + TaskScheduler.Default); public void Read(TextReader reader) { - int bufferSize = 1; + // Read in reasonably sized chunks so the pipe is drained quickly and the child + // process is never blocked writing to a full pipe for long. + const int bufferSize = 4096; char currentCharacter; char[] buffer = new char[bufferSize]; _builder = new StringBuilder(); - // Using Read with buffer size 1 to prevent looping endlessly - // like we would when using Read() with no buffer - while ((_ = reader.Read(buffer, 0, bufferSize)) > 0) + int read; + while ((read = reader.Read(buffer, 0, bufferSize)) > 0) { - currentCharacter = buffer[0]; - - if (currentCharacter == FlushBuilderCharacter) - { - WriteBuilder(); - } - else if (currentCharacter != CarriageReturn) + for (int i = 0; i < read; i++) { - _ = _builder.Append(currentCharacter); + currentCharacter = buffer[i]; + + if (currentCharacter == FlushBuilderCharacter) + { + WriteBuilder(); + } + else if (currentCharacter != CarriageReturn) + { + _ = _builder.Append(currentCharacter); + } } } From e762ad58449d0e1e2a01121b7f2e3db19cf85405 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Fri, 24 Jul 2026 17:45:13 +0000 Subject: [PATCH 18/19] [release/10.0.3xx] Source code updates from dotnet/dotnet (#10385) [release/10.0.3xx] Source code updates from dotnet/dotnet - Merge branch 'release/10.0.3xx' into darc-release/10.0.3xx-02b321d3-2ff4-4488-86e2-44bacad9cf23 --- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 6 +++--- global.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 68477e07b06..cdd984c1e24 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -7,7 +7,7 @@ This file should be imported by eng/Versions.props 10.0.7 - 10.0.0-beta.26372.117 + 10.0.0-beta.26373.104 10.0.7 10.0.7 10.0.7 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 7fb225aed2a..8a071575d46 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,6 +1,6 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-dotnet @@ -8,9 +8,9 @@ - + https://github.com/dotnet/dotnet - 799539e5b5c0403b023e34a76c033039f07f9dac + 61af15501327b9ae8996aee53956beb4029ae557 diff --git a/global.json b/global.json index 356a23cbb0c..e63e342b872 100644 --- a/global.json +++ b/global.json @@ -13,6 +13,6 @@ "dotnet": "10.0.302" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26372.117" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26373.104" } } From ecefde6f32b104ac944b8ee28308a388dc54d391 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 27 Jul 2026 22:52:36 +0000 Subject: [PATCH 19/19] [release/10.0.3xx] Source code updates from dotnet/dotnet (#10388) [release/10.0.3xx] Source code updates from dotnet/dotnet --- eng/Version.Details.props | 2 +- eng/Version.Details.xml | 6 +++--- global.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/Version.Details.props b/eng/Version.Details.props index cdd984c1e24..20a6a67fbd7 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -7,7 +7,7 @@ This file should be imported by eng/Versions.props 10.0.7 - 10.0.0-beta.26373.104 + 10.0.0-beta.26374.114 10.0.7 10.0.7 10.0.7 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8a071575d46..33ed1e1f271 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,6 +1,6 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-dotnet @@ -8,9 +8,9 @@ - + https://github.com/dotnet/dotnet - 61af15501327b9ae8996aee53956beb4029ae557 + 9dc89811a1cd108000b9a05949793472d75213c3 diff --git a/global.json b/global.json index e63e342b872..089d7be1dbc 100644 --- a/global.json +++ b/global.json @@ -13,6 +13,6 @@ "dotnet": "10.0.302" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26373.104" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26374.114" } }