From b4eacb6de035537cb67f262e4f7566082ca4bf4b Mon Sep 17 00:00:00 2001 From: AlmaLinux RelEng Bot Date: Thu, 3 Sep 2026 07:38:23 -0400 Subject: [PATCH] import CS dotnet8.0-8.0.130-2.el9 --- .dotnet8.0.metadata | 2 +- .gitignore | 2 +- SOURCES/dotnet-8.0.130.tar.gz.sig | 17 ++ SOURCES/dotnet-8.0.8.tar.gz.sig | 17 -- SOURCES/release.json | 12 +- .../roslyn-analyzers-ppc64le-apphost.patch | 2 +- SOURCES/runtime-apphost-compare-noopt.patch | 46 ++++ SPECS/dotnet8.0.spec | 233 +++++++++++++++++- 8 files changed, 298 insertions(+), 33 deletions(-) create mode 100644 SOURCES/dotnet-8.0.130.tar.gz.sig delete mode 100644 SOURCES/dotnet-8.0.8.tar.gz.sig create mode 100644 SOURCES/runtime-apphost-compare-noopt.patch 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