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"
}
}