diff --git a/.dotnet8.0.metadata b/.dotnet8.0.metadata
index 2eafd0e..90c0fac 100644
--- a/.dotnet8.0.metadata
+++ b/.dotnet8.0.metadata
@@ -1 +1 @@
-dcef67b90dd60f9968efb9b68507427f257b815d SOURCES/dotnet-8.0.8.tar.gz
+0acde2b846e7cead4155555799e980d7a520c7bb SOURCES/dotnet-8.0.130.tar.gz
diff --git a/.gitignore b/.gitignore
index d0c7db2..9d1d805 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/dotnet-8.0.8.tar.gz
+SOURCES/dotnet-8.0.130.tar.gz
diff --git a/SOURCES/dotnet-8.0.130.tar.gz.sig b/SOURCES/dotnet-8.0.130.tar.gz.sig
new file mode 100644
index 0000000..4868b3b
--- /dev/null
+++ b/SOURCES/dotnet-8.0.130.tar.gz.sig
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: BSN Pgp v1.0.0.0
+
+iQIcBAABCAAGBQJqbTE6AAoJEP2/U8JNtIcuuqIP/1iuGAOagY4qv3OQ4dy6c5BU
+h6cdzZqLtpQmoHPKjEFx+HASq6+VPtFBVX+m2V0kEwHdKheRjeGeC3CioqWPj9n6
+zjvS9aURfNhbpqbkZhcB4HaAoJQkNeF3QKO0uI0dV60WmXZhRzLrK5nMvdfI1LIe
+ubr1M2M9DMwfjlPKpWCXGRvLfohG7T+l6NSsB4ntdp31yBthbRzZfUeDq1qDO7BF
+msbasGZfKRGiKFpvmd3nxrINjQqh8/NUGyVkykD2oA5dHWvK9pznafYGwsd2e6YD
+xzs+vczdsVQ7QK+ozKry3QvhVogykLgDsQ0ezA7FLUZIpX83DVcGBL/SW732X/rC
+DT38L4KPjOxbTEdOE4lZzJNIgXGEIxL4srnZBbajPLWyk0ToMfxyKPvWA1xeYJJ2
+M55em6KvdHQjlunUE5J8v2xgLrFazJhKmv0rgS3OtD3VrWP8fOcCtfF4jjCq2P68
+/Wd6dgV9HpunKQhfT+rSIzJMVAf6RGucBGE+GCosCF0ZuGMKuQnZBqwR3Jj+4hv+
+Bhd+296INbmhs066W2n9D0Gr0pYmyGObt5Mk8ffHs/nlEtcgfaXgryZK0ZN7amC0
+2snnHNlxrcT/09+N6km/74FVNP5nk1FGECJLp82Q6PEjaGxDDpgix7neNbKH0Fu7
+EN5MSdcW8azoS5tbR7NT
+=xVMK
+-----END PGP SIGNATURE-----
diff --git a/SOURCES/dotnet-8.0.8.tar.gz.sig b/SOURCES/dotnet-8.0.8.tar.gz.sig
deleted file mode 100644
index bc6b5b3..0000000
--- a/SOURCES/dotnet-8.0.8.tar.gz.sig
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: BSN Pgp v1.0.0.0
-
-iQIcBAABCAAGBQJmqPvcAAoJEP2/U8JNtIcuCjUP/1JCyxHFjLoVH296sDflBrJ/
-NA/Y4x0YR/NVLchBk//G7/RzHab7x0EU4fRKkEecKQxPyqm4SH+zfEf9sg5txbES
-F1Fx5j0e89BzivSIJWgr8nzuQv0tQGrraIAsqPC1wrIUvDSuLXW9URCwitOasRS4
-/9FKOjISE1L2pj0+QWXzcl+QJN8A0MvtnEZfh0BbvzwldWgyi72A02t2gp6ooXMf
-FOfgdd20ufPENaB+TUc2C8eU9IaSYxwIPNy8kRN/iVRc8eYqgKvSDxUgb9aJG+Do
-Bc/HoqRVG3bvi3LZt7nwyvVeQfWYo1HB9/aEqyyqmsqsg9z83UsdAuQcidV45ae+
-hen0hxR3BpJyOpT/s/PVH7fdxqVWvszxBTW/ICm5HKMO7/w7CxTLVdPjyj9mXzew
-Sbo0xvVvSML72m33X5vFxMD3/zlYYUHTtad6D2rE6vvk5hexG3orbv5ybkUmUWiM
-EtMta++yXJwRq2Ac8ucjiLr+EARAfDbdXT6C6aPJpbF4IGQe1p/dwpXeKrDLGSNS
-G7d780b44hKt8ciaFLlbhe9qCc6DlsQtV3AryqH/vlm81+oM6y8vJMAHknyZ6WL/
-9AdSsVVa4BrNOsGeVLzNSTtqQiRW9KkK2XPI1dslxfy6KrKIrVYCFuIYsuJ8Ibmp
-QuIzm0BW8IGU3ZZSUAyZ
-=A/0i
------END PGP SIGNATURE-----
diff --git a/SOURCES/release.json b/SOURCES/release.json
index 0da99bb..5573e1d 100644
--- a/SOURCES/release.json
+++ b/SOURCES/release.json
@@ -1,10 +1,10 @@
{
- "release": "8.0.8",
+ "release": "8.0.30",
"channel": "8.0",
- "tag": "v8.0.8",
- "sdkVersion": "8.0.108",
- "runtimeVersion": "8.0.8",
- "aspNetCoreVersion": "8.0.8",
+ "tag": "v8.0.130",
+ "sdkVersion": "8.0.130",
+ "runtimeVersion": "8.0.30",
+ "aspNetCoreVersion": "8.0.30",
"sourceRepository": "https://github.com/dotnet/dotnet",
- "sourceVersion": "e78e8a64f20e61e1fea4f24afca66ad1dc56285f"
+ "sourceVersion": "9e39aff286efe0c252f24f4c1058af990acfc076"
}
diff --git a/SOURCES/roslyn-analyzers-ppc64le-apphost.patch b/SOURCES/roslyn-analyzers-ppc64le-apphost.patch
index 4dd465c..1303f4f 100644
--- a/SOURCES/roslyn-analyzers-ppc64le-apphost.patch
+++ b/SOURCES/roslyn-analyzers-ppc64le-apphost.patch
@@ -3,9 +3,9 @@ index 044a2aba4..b3f8f2611 100644
--- a/src/roslyn-analyzers/src/PerformanceTests/Tests/PerformanceTests.csproj
+++ b/src/roslyn-analyzers/src/PerformanceTests/Tests/PerformanceTests.csproj
@@ -4,6 +4,7 @@
- preview
disable
Exe
+ $(NoWarn);NETSDK1138
+ false
diff --git a/SOURCES/runtime-apphost-compare-noopt.patch b/SOURCES/runtime-apphost-compare-noopt.patch
new file mode 100644
index 0000000..66ec59c
--- /dev/null
+++ b/SOURCES/runtime-apphost-compare-noopt.patch
@@ -0,0 +1,46 @@
+From: Tom Deseyn
+Subject: [PATCH] Avoid compiler optimization on embedded apphost hash
+
+Backport of https://github.com/dotnet/runtime/pull/110554 to .NET 8.0.
+---
+ src/runtime/src/native/corehost/corehost.cpp | 24 +++++++++++++++++-------
+ 1 file changed, 17 insertions(+), 7 deletions(-)
+
+--- a/src/runtime/src/native/corehost/corehost.cpp
++++ b/src/runtime/src/native/corehost/corehost.cpp
+@@ -40,6 +40,19 @@
+ #define EMBED_HASH_LO_PART_UTF8 "74e592c2fa383d4a3960714caef0c4f2"
+ #define EMBED_HASH_FULL_UTF8 (EMBED_HASH_HI_PART_UTF8 EMBED_HASH_LO_PART_UTF8) // NUL terminated
+
++// This avoids compiler optimization which cause EMBED_HASH_HI_PART_UTF8 EMBED_HASH_LO_PART_UTF8
++// to be placed adjacent causing them to match EMBED_HASH_FULL_UTF8 when searched for replacing.
++// See https://github.com/dotnet/runtime/issues/109611 for more details.
++static bool compare_memory_nooptimization(volatile const char* a, volatile const char* b, size_t length)
++{
++ for (size_t i = 0; i < length; i++)
++ {
++ if (*a++ != *b++)
++ return false;
++ }
++ return true;
++}
++
+ bool is_exe_enabled_for_execution(pal::string_t* app_dll)
+ {
+ constexpr int EMBED_SZ = sizeof(EMBED_HASH_FULL_UTF8) / sizeof(EMBED_HASH_FULL_UTF8[0]);
+@@ -63,11 +76,10 @@
+ // So use two parts of the string that will be unaffected by the edit.
+ size_t hi_len = (sizeof(hi_part) / sizeof(hi_part[0])) - 1;
+ size_t lo_len = (sizeof(lo_part) / sizeof(lo_part[0])) - 1;
+-
+- std::string binding(&embed[0]);
+- if ((binding.size() >= (hi_len + lo_len)) &&
+- binding.compare(0, hi_len, &hi_part[0]) == 0 &&
+- binding.compare(hi_len, lo_len, &lo_part[0]) == 0)
++ size_t embed_len = strlen(&embed[0]);
++ if (embed_len >= (hi_len + lo_len)
++ && compare_memory_nooptimization(&embed[0], hi_part, hi_len)
++ && compare_memory_nooptimization(&embed[hi_len], lo_part, lo_len))
+ {
+ trace::error(_X("This executable is not bound to a managed DLL to execute. The binding value is: '%s'"), app_dll->c_str());
+ return false;
diff --git a/SPECS/dotnet8.0.spec b/SPECS/dotnet8.0.spec
index 9a31b7d..165d820 100644
--- a/SPECS/dotnet8.0.spec
+++ b/SPECS/dotnet8.0.spec
@@ -8,15 +8,19 @@
%global dotnetver 8.0
-%global host_version 8.0.8
-%global runtime_version 8.0.8
-%global aspnetcore_runtime_version %{runtime_version}
-%global sdk_version 8.0.108
+# Only the package for the latest dotnet version should provide RPMs like
+# dotnet-host and netstandard-targeting-pack-2.1
+%global is_latest_dotnet 0
+
+%global host_version 8.0.30
+%global runtime_version 8.0.30
+%global aspnetcore_runtime_version 8.0.30
+%global sdk_version 8.0.130
%global sdk_feature_band_version %(echo %{sdk_version} | cut -d '-' -f 1 | sed -e 's|[[:digit:]][[:digit:]]$|00|')
%global templates_version %{runtime_version}
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
-%global upstream_tag v%{runtime_version}
+%global upstream_tag v8.0.130
%global upstream_tag_without_v %(echo %{upstream_tag} | sed -e 's|^v||')
%global host_rpm_version %{host_version}
@@ -94,6 +98,10 @@ Patch4: msbuild-9449-exec-stop-setting-a-locale.patch
# digests used for the signature are not treated as fatal errors.
# https://issues.redhat.com/browse/RHEL-25254
Patch5: runtime-openssl-sha1.patch
+# Backport of https://github.com/dotnet/runtime/pull/110554
+# Fixes apphost hash duplication under compiler optimizations
+# https://github.com/dotnet/runtime/issues/109611
+Patch6: runtime-apphost-compare-noopt.patch
ExclusiveArch: aarch64 ppc64le s390x x86_64
@@ -388,7 +396,9 @@ applications using the .NET SDK.
%dotnet_targeting_pack dotnet-apphost-pack-%{dotnetver} %{runtime_rpm_version} Microsoft.NETCore.App %{dotnetver} Microsoft.NETCore.App.Host.%{runtime_id}
%dotnet_targeting_pack dotnet-targeting-pack-%{dotnetver} %{runtime_rpm_version} Microsoft.NETCore.App %{dotnetver} Microsoft.NETCore.App.Ref
%dotnet_targeting_pack aspnetcore-targeting-pack-%{dotnetver} %{aspnetcore_runtime_rpm_version} Microsoft.AspNetCore.App %{dotnetver} Microsoft.AspNetCore.App.Ref
+%if %{is_latest_dotnet}
%dotnet_targeting_pack netstandard-targeting-pack-2.1 %{sdk_rpm_version} NETStandard.Library 2.1 NETStandard.Library.Ref
+%endif
%package -n dotnet-sdk-%{dotnetver}-source-built-artifacts
@@ -533,7 +543,98 @@ export EXTRA_LDFLAGS="$LDFLAGS"
# suggested compile-time change doesn't work, unfortunately.
export COMPlus_LTTng=0
-VERBOSE=1 ./build.sh \
+%ifarch ppc64le s390x
+max_attempts=3
+%else
+max_attempts=1
+%endif
+
+function retry_until_success {
+ local exit_code=1
+ local tries=$1
+ shift
+ set +e
+ while [[ $exit_code != 0 ]] && [[ $tries != 0 ]]; do
+ (( tries = tries - 1 ))
+ # Clean stale build state so retries start fresh.
+ rm -rf .packages $(find . -name artifacts -type d)
+ "$@"
+ exit_code=$?
+ done
+ set -e
+ return $exit_code
+}
+
+# Runs a command and kills it if it produces no output.
+# Use a longer timeout on machines with fewer cores since builds are slower.
+function output_timeout {
+ # 30m on machines with more than 4 cores, 60m on smaller machines where builds are slower.
+ # The aarch64 Neoverse N1 CI machines have 4 cores and need the longer timeout.
+ local nprocs=$(nproc)
+ local idle_timeout=1800
+ if (( nprocs <= 4 )); then
+ idle_timeout=3600
+ fi
+
+ # Create a pipe we'll read the output from for timeout detection.
+ local fifo=$(mktemp -u)
+ mkfifo "$fifo"
+
+ # Create a process group so we can kill every process including children.
+ # And use a long timeout (5h) in (the unlikely) case output timeout detection continues to be triggered.
+ setsid timeout --foreground 5h "$@" &> "$fifo" &
+ local cmd_pid=$!
+
+ # Read lines from the output with a timeout.
+ # Disable tracing to avoid 'set -x' noise from the read loop appearing in the output.
+ local timed_out=false
+ local traceflags=$-
+ set +x
+ while true; do
+ local rc=0
+ IFS= read -t $idle_timeout -r line || rc=$?
+ if (( rc == 0 )); then
+ printf '%s\n' "$line"
+ elif (( rc > 128 )); then
+ echo "output_timeout: no output for ${idle_timeout}s" >&2
+ timed_out=true
+ break
+ else
+ [[ -z $line ]] || printf '%s\n' "$line"
+ break
+ fi
+ done < "$fifo"
+ [[ $traceflags != *x* ]] || set -x
+
+ if $timed_out; then
+ # Hang detected: kill the process group, then collect the exit code.
+ kill -9 -- -$cmd_pid 2>/dev/null || true
+ wait $cmd_pid 2>/dev/null
+ local exit_code=$?
+ else
+ # Normal exit: collect the real exit code, then clean up any orphaned processes.
+ wait $cmd_pid 2>/dev/null
+ local exit_code=$?
+ kill -9 -- -$cmd_pid 2>/dev/null || true
+ fi
+
+ # Cleanup.
+ rm -f "$fifo"
+
+ return $exit_code
+}
+
+
+
+cat >dotnet-rpm-build.sh < dotnet.sh
@@ -594,6 +702,7 @@ find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.targets' -exec chmod -x {}
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.txt' -exec chmod -x {} \;
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.xml' -exec chmod -x {} \;
+%if %{is_latest_dotnet}
install -dm 0755 %{buildroot}%{_sysconfdir}/profile.d/
install dotnet.sh %{buildroot}%{_sysconfdir}/profile.d/
@@ -618,6 +727,7 @@ echo "%{_libdir}/dotnet" >> install_location
install install_location %{buildroot}%{_sysconfdir}/dotnet/
echo "%{_libdir}/dotnet" >> install_location_%{runtime_arch}
install install_location_%{runtime_arch} %{buildroot}%{_sysconfdir}/dotnet/
+%endif
install -dm 0755 %{buildroot}%{_libdir}/dotnet/source-built-artifacts
install -m 0644 artifacts/%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.*.tar.gz %{buildroot}/%{_libdir}/dotnet/source-built-artifacts/
@@ -641,6 +751,19 @@ find %{buildroot}%{_libdir}/dotnet/sdk -type d | tail -n +2 | sed -E 's|%{buildr
find %{buildroot}%{_libdir}/dotnet/sdk -type f -and -not -name '*.pdb' | sed -E 's|%{buildroot}||' >> dotnet-sdk-non-dbg-files
find %{buildroot}%{_libdir}/dotnet/sdk -type f -name '*.pdb' | sed -E 's|%{buildroot}||' > dotnet-sdk-dbg-files
+%if %{is_latest_dotnet} == 0
+# If this is an older version, self-test now, before we delete files. After we
+# delete files, we will not have everything we need to self-test in %%check.
+%{buildroot}%{_libdir}/dotnet/dotnet --info
+%{buildroot}%{_libdir}/dotnet/dotnet --version
+
+# Provided by dotnet-host from another SRPM
+rm %{buildroot}%{_libdir}/dotnet/LICENSE.txt
+rm %{buildroot}%{_libdir}/dotnet/ThirdPartyNotices.txt
+rm %{buildroot}%{_libdir}/dotnet/dotnet
+# Provided by netstandard-targeting-pack-2.1 from another SRPM
+rm -rf %{buildroot}%{_libdir}/dotnet/packs/NETStandard.Library.Ref/2.1.0
+%endif
%check
%if 0%{?fedora} > 35
@@ -648,8 +771,10 @@ find %{buildroot}%{_libdir}/dotnet/sdk -type f -name '*.pdb' | sed -E 's|%{buil
export COMPlus_LTTng=0
%endif
+%if %{is_latest_dotnet}
%{buildroot}%{_libdir}/dotnet/dotnet --info
%{buildroot}%{_libdir}/dotnet/dotnet --version
+%endif
%if ( 0%{?fedora} && 0%{?fedora} < 38 ) || ( 0%{?rhel} && 0%{?rhel} < 9 )
@@ -657,6 +782,7 @@ export COMPlus_LTTng=0
# empty package useful for dependencies
%endif
+%if %{is_latest_dotnet}
%files -n dotnet-host
%dir %{_libdir}/dotnet
%{_libdir}/dotnet/dotnet
@@ -672,6 +798,7 @@ export COMPlus_LTTng=0
%dir %{_datadir}/bash-completion
%dir %{_datadir}/bash-completion/completions
%{_datadir}/bash-completion/completions/dotnet
+%endif
%files -n dotnet-hostfxr-%{dotnetver}
%dir %{_libdir}/dotnet/host/fxr
@@ -714,6 +841,98 @@ export COMPlus_LTTng=0
%changelog
+* Fri Aug 14 2026 Omair Majid - 8.0.130-2
+- Update to .NET SDK 8.0.130 and Runtime 8.0.30
+- Resolves: RHEL-235469
+
+* Thu Jul 23 2026 Satish Mane - 8.0.129-2
+- Update to .NET SDK 8.0.129 and Runtime 8.0.29
+- Resolves: RHEL-192465
+
+* Thu Jul 02 2026 Tom Deseyn - 8.0.128-3
+- Reduce time to detect hanging builds
+- Resolves: RHEL-191649
+
+* Wed Jun 10 2026 Tom Deseyn - 8.0.128-2
+- Update to .NET SDK 8.0.128 and Runtime 8.0.28
+- Resolves: RHEL-181053
+
+* Thu May 28 2026 Omair Majid - 8.0.127-2
+- Update to .NET SDK 8.0.127 and Runtime 8.0.27
+- Resolves: RHEL-173921
+
+* Fri Apr 17 2026 Omair Majid - 8.0.126-2
+- Update to .NET SDK 8.0.126 and Runtime 8.0.26
+- Resolves: RHEL-163418
+
+* Fri Mar 27 2026 Dominik Rehák - 8.0.125-2
+- Update to .NET SDK 8.0.125 and Runtime 8.0.25
+- Resolves: RHEL-152932
+
+* Wed Feb 11 2026 Omair Majid - 8.0.124-2
+- Update to .NET SDK 8.0.124 and Runtime 8.0.24
+- Resolves: RHEL-144966
+
+* Wed Jan 14 2026 Omair Majid - 8.0.123-2
+- Update to .NET SDK 8.0.123 and Runtime 8.0.23
+- Resolves: RHEL-138652
+
+* Wed Nov 12 2025 Omair Majid - 8.0.122-2
+- Update to .NET SDK 8.0.122 and Runtime 8.0.22
+- Resolves: RHEL-125738
+
+* Tue Oct 14 2025 Omair Majid - 8.0.121-2
+- Update to .NET SDK 8.0.121 and Runtime 8.0.21
+- Resolves: RHEL-116867
+
+* Wed Sep 10 2025 Omair Majid - 8.0.120-2
+- Update to .NET SDK 8.0.120 and Runtime 8.0.20
+- Resolves: RHEL-112260
+
+* Mon Aug 11 2025 Omair Majid - 8.0.119-2
+- Update to .NET SDK 8.0.119 and Runtime 8.0.19
+- Resolves: RHEL-106723
+
+* Tue Jul 08 2025 Omair Majid - 8.0.118-2
+- Update to .NET SDK 8.0.118 and Runtime 8.0.18
+- Resolves: RHEL-100592
+
+* Wed Jun 11 2025 Omair Majid - 8.0.117-2
+- Update to .NET SDK 8.0.117 and Runtime 8.0.17
+- Resolves: RHEL-94417
+
+* Tue May 13 2025 Omair Majid - 8.0.116-2
+- Update to .NET SDK 8.0.116 and Runtime 8.0.16
+- Resolves: RHEL-89445
+
+* Wed Apr 09 2025 Omair Majid - 8.0.115-2
+- Update to .NET SDK 8.0.115 and Runtime 8.0.15
+- Resolves: RHEL-85276
+
+* Tue Mar 11 2025 Omair Majid - 8.0.114-2
+- Update to .NET SDK 8.0.114 and Runtime 8.0.14
+- Resolves: RHEL-81641
+
+* Mon Feb 17 2025 Omair Majid - 8.0.113-2
+- Update to .NET SDK 8.0.113 and Runtime 8.0.13
+- Resolves: RHEL-76899
+
+* Thu Jan 16 2025 Omair Majid - 8.0.112-2
+- Update to .NET SDK 8.0.112 and Runtime 8.0.12
+- Resolves: RHEL-71555
+
+* Thu Nov 14 2024 Omair Majid - 8.0.111-2
+- Update to .NET SDK 8.0.111 and Runtime 8.0.11
+- Resolves: RHEL-65367
+
+* Fri Oct 18 2024 Omair Majid - 8.0.110-3
+- Disable packages provided by another .NET version
+- Related: RHEL-60801
+
+* Tue Oct 15 2024 Omair Majid - 8.0.110-2
+- Update to .NET SDK 8.0.110 and Runtime 8.0.10
+- Resolves: RHEL-60801
+
* Wed Aug 14 2024 Omair Majid - 8.0.108-2
- Update to .NET SDK 8.0.108 and Runtime 8.0.8
- Resolves: RHEL-52387