From 457ff2bc83083ecf60998a729a0ba4571b13118d Mon Sep 17 00:00:00 2001 From: Omair Majid Date: Mon, 17 Aug 2026 12:03:36 -0400 Subject: [PATCH] Initial commit on c9s Resolves: RHEL-192313 --- .fmf/version | 1 + .gitignore | 6 + check-debug-symbols.py | 140 ++ dotnet-7357-mono-no-aot.patch | 92 + dotnet.sh.in | 14 + dotnet11.0.spec | 1495 +++++++++++++++++ gating.yaml | 22 + macros.dotnet | 18 + release-key-2023.asc | 29 + release.json | 11 + rpminspect.yaml | 20 + runtime-disable-fortify-on-ilasm-parser.patch | 12 + runtime-openssl-sha1.patch | 34 + runtime-re-enable-implicit-rejection.patch | 142 ++ sources | 6 + tests/ci.fmf | 45 + 16 files changed, 2087 insertions(+) create mode 100644 .fmf/version create mode 100755 check-debug-symbols.py create mode 100644 dotnet-7357-mono-no-aot.patch create mode 100644 dotnet.sh.in create mode 100644 dotnet11.0.spec create mode 100644 gating.yaml create mode 100644 macros.dotnet create mode 100644 release-key-2023.asc create mode 100644 release.json create mode 100644 rpminspect.yaml create mode 100644 runtime-disable-fortify-on-ilasm-parser.patch create mode 100644 runtime-openssl-sha1.patch create mode 100644 runtime-re-enable-implicit-rejection.patch create mode 100644 sources create mode 100644 tests/ci.fmf diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index e69de29..0ce08c7 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,6 @@ +/dotnet-11.0.100-preview.6.26359.118.tar.gz +/dotnet-prebuilts-11.0.100-preview.5.26302.115-arm64.tar.gz +/dotnet-prebuilts-11.0.100-preview.5.26302.115-x64.tar.gz +/dotnet-prebuilts-11.0.100-preview.6.26366.102-ppc64le.tar.gz +/dotnet-prebuilts-11.0.100-preview.6.26366.102-s390x.tar.gz +/dotnet-11.0.100-preview.6.26359.118.tar.gz.sig diff --git a/check-debug-symbols.py b/check-debug-symbols.py new file mode 100755 index 0000000..a4caa57 --- /dev/null +++ b/check-debug-symbols.py @@ -0,0 +1,140 @@ +#!/usr/bin/python3 + +""" +Check debug symbols are present in shared object and can identify +code. + +It starts scanning from a directory and recursively scans all ELF +files found in it for various symbols to ensure all debuginfo is +present and nothing has been stripped. + +Usage: + +./check-debug-symbols /path/of/dir/to/scan/ + + +Example: + +./check-debug-symbols /usr/lib64 +""" + +# This technique was explained to me by Mark Wielaard (mjw). + +import collections +import os +import re +import subprocess +import sys + +ScanResult = collections.namedtuple('ScanResult', + 'file_name debug_info debug_abbrev file_symbols gnu_debuglink') + +file_symbol_exclude_list = [ + 'ilc', +] + +def scan_file(file): + "Scan the provided file and return a ScanResult containing results of the scan." + + # Test for .debug_* sections in the shared object. This is the main test. + # Stripped objects will not contain these. + readelf_S_result = subprocess.run(['eu-readelf', '-S', file], + stdout=subprocess.PIPE, encoding='utf-8', check=True) + has_debug_info = any(line for line in readelf_S_result.stdout.split('\n') if '] .debug_info' in line) + + has_debug_abbrev = any(line for line in readelf_S_result.stdout.split('\n') if '] .debug_abbrev' in line) + + # Test FILE symbols. These will most likely be removed by anyting that + # manipulates symbol tables because it's generally useless. So a nice test + # that nothing has messed with symbols. + def contains_file_symbols(line): + parts = line.split() + if len(parts) < 8: + return False + return \ + parts[2] == '0' and parts[3] == 'FILE' and parts[4] == 'LOCAL' and parts[5] == 'DEFAULT' and \ + parts[6] == 'ABS' and re.match(r'((.*/)?[-_a-zA-Z0-9]+\.(c|cc|cpp|cxx))?', parts[7]) + + readelf_s_result = subprocess.run(["eu-readelf", '-s', file], + stdout=subprocess.PIPE, encoding='utf-8', check=True) + has_file_symbols = True + if not os.path.basename(file) in file_symbol_exclude_list: + has_file_symbols = any(line for line in readelf_s_result.stdout.split('\n') if contains_file_symbols(line)) + + # Test that there are no .gnu_debuglink sections pointing to another + # debuginfo file. There shouldn't be any debuginfo files, so the link makes + # no sense either. + has_gnu_debuglink = any(line for line in readelf_s_result.stdout.split('\n') if '] .gnu_debuglink' in line) + + return ScanResult(file, has_debug_info, has_debug_abbrev, has_file_symbols, has_gnu_debuglink) + +def is_elf(file): + result = subprocess.run(['file', file], stdout=subprocess.PIPE, encoding='utf-8', check=True) + return re.search(r'ELF 64-bit [LM]SB (?:pie )?(?:executable|shared object)', result.stdout) + +def scan_file_if_sensible(file): + if is_elf(file): + return scan_file(file) + return None + +def scan_dir(dir): + results = [] + for root, _, files in os.walk(dir): + for name in files: + result = scan_file_if_sensible(os.path.join(root, name)) + if result: + results.append(result) + return results + +def scan(file): + file = os.path.abspath(file) + if os.path.isdir(file): + return scan_dir(file) + elif os.path.isfile(file): + return [scan_file_if_sensible(file)] + +def is_bad_result(result): + return not result.debug_info or not result.debug_abbrev or not result.file_symbols or result.gnu_debuglink + +def print_scan_results(results, verbose): + # print(results) + for result in results: + file_name = result.file_name + found_issue = False + if not result.debug_info: + found_issue = True + print('error: missing .debug_info section in', file_name) + if not result.debug_abbrev: + found_issue = True + print('error: missing .debug_abbrev section in', file_name) + if not result.file_symbols: + found_issue = True + print('error: missing FILE symbols in', file_name) + if result.gnu_debuglink: + found_issue = True + print('error: unexpected .gnu_debuglink section in', file_name) + if verbose and not found_issue: + print('OK: ', file_name) + +def main(args): + verbose = False + files = [] + for arg in args: + if arg == '--verbose' or arg == '-v': + verbose = True + else: + files.append(arg) + + results = [] + for file in files: + results.extend(scan(file)) + + print_scan_results(results, verbose) + + if any(is_bad_result(result) for result in results): + return 1 + return 0 + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/dotnet-7357-mono-no-aot.patch b/dotnet-7357-mono-no-aot.patch new file mode 100644 index 0000000..bc39527 --- /dev/null +++ b/dotnet-7357-mono-no-aot.patch @@ -0,0 +1,92 @@ +From 6c2ab8a03cde381de73ce654fe34afc349025659 Mon Sep 17 00:00:00 2001 +From: Adeel <3840695+am11@users.noreply.github.com> +Date: Wed, 24 Jun 2026 19:39:37 +0300 +Subject: [PATCH] Add mono platforms to exclude list + +--- + src/arcade/eng/common/native/NativeAotSupported.props | 2 ++ + src/aspnetcore/eng/common/native/NativeAotSupported.props | 2 ++ + src/efcore/eng/common/native/NativeAotSupported.props | 2 ++ + src/runtime/eng/common/native/NativeAotSupported.props | 2 ++ + src/runtime/src/coreclr/CMakeLists.txt | 2 +- + src/sdk/eng/common/native/NativeAotSupported.props | 2 ++ + 6 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/src/arcade/eng/common/native/NativeAotSupported.props b/src/arcade/eng/common/native/NativeAotSupported.props +index 559a6663929e..cdff9ef03612 100644 +--- a/src/arcade/eng/common/native/NativeAotSupported.props ++++ b/src/arcade/eng/common/native/NativeAotSupported.props +@@ -13,6 +13,8 @@ + + <_NativeAotSupportedArch Condition=" + '$(TargetArchitecture)' != 'wasm' and ++ '$(TargetArchitecture)' != 's390x' and ++ '$(TargetArchitecture)' != 'ppc64le' and + ('$(TargetArchitecture)' != 'x86' or '$(TargetOS)' == 'windows') + ">true + +diff --git a/src/aspnetcore/eng/common/native/NativeAotSupported.props b/src/aspnetcore/eng/common/native/NativeAotSupported.props +index 559a6663929e..cdff9ef03612 100644 +--- a/src/aspnetcore/eng/common/native/NativeAotSupported.props ++++ b/src/aspnetcore/eng/common/native/NativeAotSupported.props +@@ -13,6 +13,8 @@ + + <_NativeAotSupportedArch Condition=" + '$(TargetArchitecture)' != 'wasm' and ++ '$(TargetArchitecture)' != 's390x' and ++ '$(TargetArchitecture)' != 'ppc64le' and + ('$(TargetArchitecture)' != 'x86' or '$(TargetOS)' == 'windows') + ">true + +diff --git a/src/efcore/eng/common/native/NativeAotSupported.props b/src/efcore/eng/common/native/NativeAotSupported.props +index 559a6663929e..cdff9ef03612 100644 +--- a/src/efcore/eng/common/native/NativeAotSupported.props ++++ b/src/efcore/eng/common/native/NativeAotSupported.props +@@ -13,6 +13,8 @@ + + <_NativeAotSupportedArch Condition=" + '$(TargetArchitecture)' != 'wasm' and ++ '$(TargetArchitecture)' != 's390x' and ++ '$(TargetArchitecture)' != 'ppc64le' and + ('$(TargetArchitecture)' != 'x86' or '$(TargetOS)' == 'windows') + ">true + +diff --git a/src/runtime/eng/common/native/NativeAotSupported.props b/src/runtime/eng/common/native/NativeAotSupported.props +index 559a6663929e..cdff9ef03612 100644 +--- a/src/runtime/eng/common/native/NativeAotSupported.props ++++ b/src/runtime/eng/common/native/NativeAotSupported.props +@@ -13,6 +13,8 @@ + + <_NativeAotSupportedArch Condition=" + '$(TargetArchitecture)' != 'wasm' and ++ '$(TargetArchitecture)' != 's390x' and ++ '$(TargetArchitecture)' != 'ppc64le' and + ('$(TargetArchitecture)' != 'x86' or '$(TargetOS)' == 'windows') + ">true + +diff --git a/src/runtime/src/coreclr/CMakeLists.txt b/src/runtime/src/coreclr/CMakeLists.txt +index 4c275c6611ef..60fe8cee3fca 100644 +--- a/src/runtime/src/coreclr/CMakeLists.txt ++++ b/src/runtime/src/coreclr/CMakeLists.txt +@@ -156,7 +156,7 @@ endif () + if(NOT CLR_CROSS_COMPONENTS_BUILD) + # NativeAOT is buildable for all CoreCLR-supported configurations except a known reject list. + # Keep this in sync with the NativeAotSupported reject list in eng/common/native/NativeAotSupported.props. +- if(NOT (CLR_CMAKE_HOST_ARCH_WASM OR (CLR_CMAKE_HOST_ARCH_I386 AND NOT CLR_CMAKE_HOST_WIN32))) ++ if(NOT (CLR_CMAKE_HOST_ARCH_WASM OR CLR_CMAKE_HOST_ARCH_S390X OR CLR_CMAKE_HOST_ARCH_POWERPC64 OR (CLR_CMAKE_HOST_ARCH_I386 AND NOT CLR_CMAKE_HOST_WIN32))) + add_subdirectory(nativeaot) + endif() + endif(NOT CLR_CROSS_COMPONENTS_BUILD) +diff --git a/src/sdk/eng/common/native/NativeAotSupported.props b/src/sdk/eng/common/native/NativeAotSupported.props +index 559a6663929e..cdff9ef03612 100644 +--- a/src/sdk/eng/common/native/NativeAotSupported.props ++++ b/src/sdk/eng/common/native/NativeAotSupported.props +@@ -13,6 +13,8 @@ + + <_NativeAotSupportedArch Condition=" + '$(TargetArchitecture)' != 'wasm' and ++ '$(TargetArchitecture)' != 's390x' and ++ '$(TargetArchitecture)' != 'ppc64le' and + ('$(TargetArchitecture)' != 'x86' or '$(TargetOS)' == 'windows') + ">true + diff --git a/dotnet.sh.in b/dotnet.sh.in new file mode 100644 index 0000000..65b92a0 --- /dev/null +++ b/dotnet.sh.in @@ -0,0 +1,14 @@ + +# Set location for AppHost lookup +[ -z "$DOTNET_ROOT" ] && export DOTNET_ROOT=@LIBDIR@/dotnet + +# Add dotnet tools directory to PATH +DOTNET_TOOLS_PATH="$HOME/.dotnet/tools" +case "$PATH" in + *"$DOTNET_TOOLS_PATH"* ) true ;; + * ) PATH="$PATH:$DOTNET_TOOLS_PATH" ;; +esac + +# Extract self-contained executables under HOME +# to avoid multi-user issues from using the default '/var/tmp'. +[ -z "$DOTNET_BUNDLE_EXTRACT_BASE_DIR" ] && export DOTNET_BUNDLE_EXTRACT_BASE_DIR="${XDG_CACHE_HOME:-"$HOME"/.cache}/dotnet_bundle_extract" diff --git a/dotnet11.0.spec b/dotnet11.0.spec new file mode 100644 index 0000000..05908ee --- /dev/null +++ b/dotnet11.0.spec @@ -0,0 +1,1495 @@ +%bcond_without bootstrap + +# LTO triggers a compilation error for a source level issue. Given that LTO should not +# change the validity of any given source and the nature of the error (undefined enum), I +# suspect a generator program is mis-behaving in some way. This needs further debugging, +# until that's done, disable LTO. This has to happen before setting the flags below. +%define _lto_cflags %{nil} + +%global dotnetver 11.0 + +# Only the package for the latest dotnet version should provide RPMs like +# dotnet-host +%global is_latest_dotnet 1 + +# upstream can produce releases with a different tag than the SDK version +#%%global upstream_tag v%%{runtime_version} +%global upstream_tag v11.0.100-preview.6.26359.118 +%global upstream_tag_without_v %(echo %{upstream_tag} | sed -e 's|^v||') + +%global hostfxr_version %{runtime_version} +%global runtime_version 11.0.0-preview.6.26359.118 +%global aspnetcore_runtime_version 11.0.0-preview.6.26359.118 +%global sdk_version 11.0.100-preview.6.26359.118 +%global sdk_feature_band_version %(echo %{sdk_version} | cut -d '-' -f 1 | sed -e 's|[[:digit:]][[:digit:]]$|00|') +%global templates_version %{aspnetcore_runtime_version} +#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }') + +%global runtime_rpm_version 11.0.0~preview.6.26359.118 +%global aspnetcore_runtime_rpm_version 11.0.0~preview.6.26359.118 +%global sdk_rpm_version 11.0.100~preview.6.26359.118 + +%global use_bundled_brotli 0 +%global use_bundled_libunwind 1 +%global use_bundled_llvm_libunwind 1 +%global use_bundled_rapidjson 0 +%global use_bundled_zlib 0 + +%global use_lttng 0 + +%if 0%{?rhel} > 0 +%global use_bundled_rapidjson 1 +%endif + +%ifarch aarch64 +%global runtime_arch arm64 +%endif +%ifarch ppc64le +%global runtime_arch ppc64le +%endif +%ifarch s390x +%global runtime_arch s390x +%endif +%ifarch x86_64 +%global runtime_arch x64 +%endif + +%global mono_archs ppc64le s390x + +# On Fedora and RHEL > 9, ship RPM macros +%if 0%{?fedora} || 0%{?rhel} > 9 +%global include_macros 1 +%else +%global include_macros 0 +%endif + +%{!?runtime_id:%global runtime_id %(. /etc/os-release ; echo "${ID}.${VERSION_ID%%.*}")-%{runtime_arch}} + +# Define macros for OS backwards compat +%if %{undefined bash_completions_dir} +%global bash_completions_dir %{_datadir}/bash-completion/completions +%endif +%if %{undefined zsh_completions_dir} +%global zsh_completions_dir %{_datadir}/zsh/site-functions +%endif + + + +Name: dotnet%{dotnetver} +Version: %{sdk_rpm_version} +Release: 0.6%{?dist} +Summary: .NET %{dotnetver} Runtime and SDK +License: 0BSD AND Apache-2.0 AND (Apache-2.0 WITH LLVM-exception) AND APSL-2.0 AND BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause AND BSL-1.0 AND bzip2-1.0.6 AND CC0-1.0 AND CC-BY-3.0 AND CC-BY-4.0 AND CC-PDDC AND CNRI-Python AND EPL-1.0 AND GPL-2.0-only AND (GPL-2.0-only WITH GCC-exception-2.0) AND GPL-2.0-or-later AND GPL-3.0-only AND ICU AND ISC AND LGPL-2.1-only AND LGPL-2.1-or-later AND LicenseRef-Fedora-Public-Domain AND LicenseRef-ISO-8879 AND MIT AND MIT-Wu AND MS-PL AND MS-RL AND NCSA AND OFL-1.1 AND OpenSSL AND Unicode-DFS-2015 AND Unicode-DFS-2016 AND W3C-19980720 AND X11 AND Zlib + +URL: https://github.com/dotnet/ + +Source0: https://github.com/dotnet/dotnet/archive/refs/tags/%{upstream_tag}.tar.gz#/dotnet-%{upstream_tag_without_v}.tar.gz +Source1: https://github.com/dotnet/dotnet/releases/download/%{upstream_tag}/dotnet-%{upstream_tag_without_v}.tar.gz.sig +Source2: https://dotnet.microsoft.com/download/dotnet/release-key-2023.asc +Source3: https://github.com/dotnet/dotnet/releases/download/%{upstream_tag}/release.json +%if %{with bootstrap} +# The bootstrap SDK version is one listed in the global.json file of the main source archive +%global bootstrap_sdk_version 11.0.100-preview.5.26302.115 +# The source is generated on a Fedora box via: +# ./build-dotnet-bootstrap-tarball %%{upstream_tag} +Source10: dotnet-prebuilts-%{bootstrap_sdk_version}-x64.tar.gz +Source11: dotnet-prebuilts-%{bootstrap_sdk_version}-arm64.tar.gz +# To generate ppc64le and s390x archives: +# 1. Build the VMR commit in cross-build mode for the architecture +# 2. Use `build-prebuilt-archive` to create the archive from the VMR +%global bootstrap_sdk_version_ppc64le_s390x 11.0.100-preview.6.26366.102 +Source12: dotnet-prebuilts-%{bootstrap_sdk_version_ppc64le_s390x}-ppc64le.tar.gz +Source13: dotnet-prebuilts-%{bootstrap_sdk_version_ppc64le_s390x}-s390x.tar.gz +%endif + +Source100: macros.dotnet +Source101: check-debug-symbols.py +Source102: dotnet.sh.in + +# https://github.com/dotnet/runtime/pull/95216#issuecomment-1842799314 +Patch0: runtime-re-enable-implicit-rejection.patch +# We disable checking the signature of the last certificate in a chain if the certificate is supposedly self-signed. +# A side effect of not checking the self-signature of such a certificate is that disabled or unsupported message +# digests used for the signature are not treated as fatal errors. +# https://issues.redhat.com/browse/RHEL-25254 +Patch1: runtime-openssl-sha1.patch +# fix an error caused by combining Fedora's CFLAGS with how .NET builds some assembly files +Patch2: runtime-disable-fortify-on-ilasm-parser.patch +# https://github.com/dotnet/dotnet/pull/7357 +Patch3: dotnet-7357-mono-no-aot.patch + + + +ExclusiveArch: aarch64 x86_64 ppc64le s390x + + +%if ! %{use_bundled_brotli} +BuildRequires: brotli-devel +%endif +BuildRequires: clang +BuildRequires: cmake +BuildRequires: coreutils +%if %{without bootstrap} +BuildRequires: dotnet-sdk-%{dotnetver} +BuildRequires: dotnet-sdk-%{dotnetver}-source-built-artifacts +%endif +BuildRequires: findutils +BuildRequires: git +BuildRequires: glibc-langpack-en +BuildRequires: gnupg2 +BuildRequires: hostname +BuildRequires: krb5-devel +BuildRequires: libicu-devel +%if ! %{use_bundled_libunwind} +BuildRequires: libunwind-devel +%endif +%ifnarch s390x +BuildRequires: lld +%else +# lld is not supported/available/usable on s390x +BuildRequires: binutils +%endif +# If the build ever crashes, then having lldb installed might help the +# runtime generate a backtrace for the crash +BuildRequires: lldb +BuildRequires: llvm +%if ! %{use_bundled_llvm_libunwind} +BuildRequires: llvm-libunwind-devel +%endif +%if %{use_lttng} +BuildRequires: lttng-ust-devel +%endif +BuildRequires: make +BuildRequires: ninja-build +BuildRequires: openssl-devel +BuildRequires: python3 +%if ! %{use_bundled_rapidjson} +BuildRequires: rapidjson-devel +%endif +BuildRequires: tar +BuildRequires: util-linux +%if ! %{use_bundled_zlib} +BuildRequires: zlib-devel +%endif + + +# The tracing support in CoreCLR is optional. It has a run-time +# dependency on some additional libraries like lttng-ust. The runtime +# gracefully disables tracing if the dependencies are missing. +%global __requires_exclude_from ^(%{_libdir}/dotnet/.*/libcoreclrtraceptprovider\\.so)$ + +# Avoid generating provides and requires for private libraries +%global privlibs libhostfxr +%global privlibs %{privlibs}|libclrgc +%global privlibs %{privlibs}|libclrjit +%global privlibs %{privlibs}|libcoreclr +%global privlibs %{privlibs}|libcoreclrtraceptprovider +%global privlibs %{privlibs}|libhostpolicy +%global privlibs %{privlibs}|libmscordaccore +%global privlibs %{privlibs}|libmscordbi +%global privlibs %{privlibs}|libnethost +%global privlibs %{privlibs}|libSystem.Globalization.Native +%global privlibs %{privlibs}|libSystem.IO.Compression.Native +%global privlibs %{privlibs}|libSystem.Native +%global privlibs %{privlibs}|libSystem.Net.Security.Native +%global privlibs %{privlibs}|libSystem.Security.Cryptography.Native.OpenSsl +%global __provides_exclude ^(%{privlibs})\\.so +%global __requires_exclude ^(%{privlibs})\\.so + + +%description +.NET is a fast, lightweight and modular platform for creating +cross platform applications that work on Linux, macOS and Windows. + +It particularly focuses on creating console applications, web +applications and micro-services. + +.NET contains a runtime conforming to .NET Standards a set of +framework libraries, an SDK containing compilers and a 'dotnet' +application to drive everything. + +# The `dotnet` package was a bit of historical mistake. Users +# shouldn't be asked to install .NET without a version because .NET +# code (source or build) is generally version specific. We have kept +# it around in older versions of RHEL and Fedora. But no reason to +# continue this mistake. +%if ( 0%{?rhel} && 0%{?rhel} < 9 ) + +%package -n dotnet + +Version: %{sdk_rpm_version} +Summary: .NET CLI tools and runtime + +Requires: dotnet-sdk-%{dotnetver}%{?_isa} >= %{sdk_rpm_version}-%{release} + +%description -n dotnet +.NET is a fast, lightweight and modular platform for creating +cross platform applications that work on Linux, macOS and Windows. + +It particularly focuses on creating console applications, web +applications and micro-services. + +.NET contains a runtime conforming to .NET Standards a set of +framework libraries, an SDK containing compilers and a 'dotnet' +application to drive everything. + +%endif + + +%package -n dotnet-host + +Version: %{runtime_rpm_version} +Summary: .NET command line launcher + +%description -n dotnet-host +The .NET host is a command line program that runs a standalone +.NET application or launches the SDK. + +.NET is a fast, lightweight and modular platform for creating +cross platform applications that work on Linux, Mac and Windows. + +It particularly focuses on creating console applications, web +applications and micro-services. + + +%package -n dotnet-hostfxr-%{dotnetver} + +Version: %{runtime_rpm_version} +Summary: .NET command line host resolver + +# Theoretically any version of the host should work. But lets aim for the one +# provided by this package, or from a newer version of .NET +Requires: dotnet-host%{?_isa} >= %{runtime_rpm_version}-%{release} + +%description -n dotnet-hostfxr-%{dotnetver} +The .NET host resolver contains the logic to resolve and select +the right version of the .NET SDK or runtime to use. + +.NET is a fast, lightweight and modular platform for creating +cross platform applications that work on Linux, Mac and Windows. + +It particularly focuses on creating console applications, web +applications and micro-services. + + +%package -n dotnet-runtime-%{dotnetver} + +Version: %{runtime_rpm_version} +Summary: NET %{dotnetver} runtime + +Requires: dotnet-hostfxr-%{dotnetver}%{?_isa} >= %{runtime_rpm_version}-%{release} + +# libicu is dlopen()ed +Requires: libicu%{?_isa} + +%if %{use_bundled_brotli} +# See: src/runtime/src/native/external/brotli-version.txt +Provides: bundled(libbrotli) = 1.1.0 +%endif + +%if %{use_bundled_libunwind} +# See: src/runtime/src/native/external/libunwind-version.txt +Provides: bundled(libunwind) = 1.8.0 +%endif + +%if %{use_bundled_llvm_libunwind} +# See: src/runtime/src/native/external/llvm-libunwind-version.txt +Provides: bundled(llvm-libunwind) = 20.1.0 +%endif + +%if %{use_bundled_rapidjson} +# See: src/runtime/src/native/external/rapidjson-version.txt +Provides: bundled(rapidjson) = 24b5e7a8b27f42fa16b96fc70aade9106cf7102f +%endif + +%if %{use_bundled_zlib} +# See: src/runtime/src/native/external/zlib-ng-version.txt +Provides: bundled(zlib) = 2.2.5 +%endif + +%description -n dotnet-runtime-%{dotnetver} +The .NET runtime contains everything needed to run .NET applications. +It includes a high performance Virtual Machine as well as the framework +libraries used by .NET applications. + +.NET is a fast, lightweight and modular platform for creating +cross platform applications that work on Linux, Mac and Windows. + +It particularly focuses on creating console applications, web +applications and micro-services. + + +%package -n dotnet-runtime-dbg-%{dotnetver} + +Version: %{runtime_rpm_version} +Summary: Managed debug symbols NET %{dotnetver} runtime + +Requires: dotnet-runtime-%{dotnetver}%{?_isa} = %{runtime_rpm_version}-%{release} + +%description -n dotnet-runtime-dbg-%{dotnetver} +This package contains the managed symbol (pdb) files useful to debug the +managed parts of the .NET runtime itself. + + +%package -n aspnetcore-runtime-%{dotnetver} + +Version: %{aspnetcore_runtime_rpm_version} +Summary: ASP.NET Core %{dotnetver} runtime + +Requires: dotnet-runtime-%{dotnetver}%{?_isa} = %{runtime_rpm_version}-%{release} + +%description -n aspnetcore-runtime-%{dotnetver} +The ASP.NET Core runtime contains everything needed to run .NET +web applications. It includes a high performance Virtual Machine as +well as the framework libraries used by .NET applications. + +ASP.NET Core is a fast, lightweight and modular platform for creating +cross platform web applications that work on Linux, Mac and Windows. + +It particularly focuses on creating console applications, web +applications and micro-services. + + +%package -n aspnetcore-runtime-dbg-%{dotnetver} + +Version: %{aspnetcore_runtime_rpm_version} +Summary: Managed debug symbols for the ASP.NET Core %{dotnetver} runtime + +Requires: aspnetcore-runtime-%{dotnetver}%{?_isa} = %{aspnetcore_runtime_rpm_version}-%{release} + +%description -n aspnetcore-runtime-dbg-%{dotnetver} +This package contains the managed symbol (pdb) files useful to debug the +managed parts of the ASP.NET Core runtime itself. + + +%package -n dotnet-templates-%{dotnetver} + +Version: %{sdk_rpm_version} +Summary: .NET %{dotnetver} templates + +# Theoretically any version of the host should work. But lets aim for the one +# provided by this package, or from a newer version of .NET +Requires: dotnet-host%{?_isa} >= %{runtime_rpm_version}-%{release} + +%description -n dotnet-templates-%{dotnetver} +This package contains templates used by the .NET SDK. + +.NET is a fast, lightweight and modular platform for creating +cross platform applications that work on Linux, Mac and Windows. + +It particularly focuses on creating console applications, web +applications and micro-services. + + +%package -n dotnet-sdk-%{dotnetver} + +Version: %{sdk_rpm_version} +Summary: .NET %{dotnetver} Software Development Kit + +Requires: dotnet-runtime-%{dotnetver}%{?_isa} >= %{runtime_rpm_version}-%{release} +Requires: aspnetcore-runtime-%{dotnetver}%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release} + +Requires: dotnet-apphost-pack-%{dotnetver}%{?_isa} >= %{runtime_rpm_version}-%{release} +Requires: dotnet-targeting-pack-%{dotnetver}%{?_isa} >= %{runtime_rpm_version}-%{release} +Requires: aspnetcore-targeting-pack-%{dotnetver}%{?_isa} >= %{aspnetcore_runtime_rpm_version}-%{release} + +Requires: dotnet-templates-%{dotnetver}%{?_isa} >= %{sdk_rpm_version}-%{release} + +%description -n dotnet-sdk-%{dotnetver} +The .NET SDK is a collection of command line applications to +create, build, publish and run .NET applications. + +.NET is a fast, lightweight and modular platform for creating +cross platform applications that work on Linux, Mac and Windows. + +It particularly focuses on creating console applications, web +applications and micro-services. + + +%package -n dotnet-sdk-dbg-%{dotnetver} + +Version: %{sdk_rpm_version} +Summary: Managed debug symbols for the .NET %{dotnetver} Software Development Kit + +Requires: dotnet-sdk-%{dotnetver}%{?_isa} = %{sdk_rpm_version}-%{release} + +%description -n dotnet-sdk-dbg-%{dotnetver} +This package contains the managed symbol (pdb) files useful to debug the .NET +Software Development Kit (SDK) itself. + + +%package -n dotnet-sdk-aot-%{dotnetver} + +Version: %{sdk_rpm_version} +Summary: Ahead-of-Time (AOT) support for the .NET %{dotnetver} Software Development Kit + +Requires: dotnet-sdk-%{dotnetver}%{?_isa} >= %{sdk_rpm_version}-%{release} + +# When installing AOT support, also install all dependencies needed to build +# NativeAOT applications. AOT invokes `clang ... -lssl -lcrypto -lbrotlienc +# -lbrotlidec -lz ...`. +Requires: brotli-devel%{?_isa} +Requires: clang%{?_isa} +Requires: openssl-devel%{?_isa} +Requires: zlib-devel%{?_isa} + +%description -n dotnet-sdk-aot-%{dotnetver} +This package provides Ahead-of-time (AOT) compilation support for the .NET SDK. + + +%global dotnet_targeting_pack() %{expand: +%package -n %{1} + +Version: %{2} +Summary: Targeting Pack for %{3} %{4} + +Requires: dotnet-host%{?_isa} + +%description -n %{1} +This package provides a targeting pack for %{3} %{4} +that allows developers to compile against and target %{3} %{4} +applications using the .NET SDK. + +%files -n %{1} +%dir %{_libdir}/dotnet/packs +%{_libdir}/dotnet/packs/%{5} +} + +%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 + + +%package -n dotnet-sdk-%{dotnetver}-source-built-artifacts + +Version: %{sdk_rpm_version} +Summary: Internal package for building .NET %{dotnetver} Software Development Kit + +%description -n dotnet-sdk-%{dotnetver}-source-built-artifacts +The .NET source-built archive is a collection of packages needed +to build the .NET SDK itself. + +These are not meant for general use. + + + +%prep +%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}' + +release_json_tag=$(grep tag %{SOURCE3} | cut -d: -f2 | sed -E 's/[," ]*//g') +if [[ ${release_json_tag} != %{upstream_tag} ]]; then + echo "error: tag in release.json doesn't match tag in spec file" + exit 1 +fi + +%setup -q -n dotnet-%{upstream_tag_without_v} + +# Remove all prebuilts and binaries +rm -rf .dotnet/ +rm -rf packages/source-built +find -type f \( \ + -iname '*.bin' -or \ + -iname '*.binlog' -or \ + -iname '*.dat' -or \ + -iname '*.db' -or \ + -iname '*.dll' -or \ + -iname '*.doc' -or \ + -iname '*.docx' -or \ + -iname '*.exe' -or \ + -iname '*.mdb' -or \ + -iname '*.mod' -or \ + -iname '*.msi' -or \ + -iname '*.netmodule' -or \ + -iname '*.nupkg' -or \ + -iname '*.o' -or \ + -iname '*.obj' -or \ + -iname '*.out' -or \ + -iname '*.p7b' -or \ + -iname '*.p7s' -or \ + -iname '*.pdb' -or \ + -iname '*.pfx' -or \ + -iname '*.so' -or \ + -iname '*.tar.gz' -or \ + -iname '*.tgz' -or \ + -iname '*.tlb' -or \ + -iname '*.winmd' -or \ + -iname '*.vsix' -or \ + -iname '*.zip' \ + \) \ + -delete + +# No js/nodejs code should be getting built, and no javascript prebuilts +# packages should be present on disk or used. Delete things to make the build +# break if any Javascript is compiled/used. +find -iname package.json -delete +find -iname package-lock.json -delete +rm -rf ./src/aspnetcore/src/Components/Web.JS/dist + +%if %{without bootstrap} + +mkdir -p prereqs/packages/archive +ln -s %{_libdir}/dotnet/source-built-artifacts/Private.SourceBuilt.Artifacts.*.tar.gz prereqs/packages/archive/ + +%else + +%ifarch x86_64 +tar -x --strip-components=1 -f %{SOURCE10} -C prereqs/packages/archive/ +%endif +%ifarch aarch64 +tar -x --strip-components=1 -f %{SOURCE11} -C prereqs/packages/archive/ +%endif +%ifarch ppc64le +tar -x --strip-components=1 -f %{SOURCE12} -C prereqs/packages/archive/ +%endif +%ifarch s390x +tar -x --strip-components=1 -f %{SOURCE13} -C prereqs/packages/archive/ +%endif + +rm -rf .dotnet +mkdir -p .dotnet/ +tar xf prereqs/packages/archive/dotnet-sdk*%{runtime_arch}.tar.gz -C .dotnet/ +rm -rf prereqs/packages/archive/dotnet-sdk*.tar.gz + +%endif + +%autopatch -p1 -M 999 + +sed -i -E 's/trap.*tempDir.*EXIT//' eng/source-build-toolset-init.sh + +%if ! %{use_bundled_brotli} +rm -r src/runtime/src/native/external/brotli/ +%endif + +%if ! %{use_bundled_libunwind} +rm -r src/runtime/src/native/external/libunwind/ +%endif + +%if ! %{use_bundled_llvm_libunwind} +rm -r src/runtime/src/native/external/llvm-libunwind +%endif + +%if ! %{use_bundled_rapidjson} +rm -r src/runtime/src/native/external/rapidjson +%endif + +%if ! %{use_bundled_zlib} +rm -r src/runtime/src/native/external/zlib-ng +%endif + +sed -i -E 's|>false|>true|' src/sdk/src/Layout/redist/targets/GenerateInstallerLayout.targets + + + +%build +cat /proc/cpuinfo +cat /proc/meminfo +cat /etc/os-release + +%if %{without bootstrap} +# We need to create a copy because build scripts will mutate this +cp -a %{_libdir}/dotnet previously-built-dotnet +find previously-built-dotnet +%endif + +%if 0%{?fedora} || 0%{?rhel} >= 9 +# Setting this macro ensures that only clang supported options will be +# added to ldflags and cflags. +%global toolchain clang +%set_build_flags +%else +# Filter flags not supported by clang +%global dotnet_cflags %(echo %optflags | sed -re 's/-specs=[^ ]*//g') +%global dotnet_ldflags %(echo %{__global_ldflags} | sed -re 's/-specs=[^ ]*//g') +export CFLAGS="%{dotnet_cflags}" +export CXXFLAGS="%{dotnet_cflags}" +export LDFLAGS="%{dotnet_ldflags}" +%endif + +# -fstack-clash-protection breaks CoreCLR +CFLAGS=$(echo $CFLAGS | sed -e 's/-fstack-clash-protection//' ) +CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/-fstack-clash-protection//' ) + +%ifarch aarch64 +# -mbranch-protection=standard breaks unwinding in CoreCLR through libunwind +CFLAGS=$(echo $CFLAGS | sed -e 's/-mbranch-protection=standard //') +CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/-mbranch-protection=standard //') +%endif + +%ifarch s390x +# -march=z13 -mtune=z14 makes clang crash while compiling .NET +CFLAGS=$(echo $CFLAGS | sed -e 's/ -march=z13//') +CFLAGS=$(echo $CFLAGS | sed -e 's/ -mtune=z14//') +CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/ -march=z13//') +CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/ -mtune=z14//') +%endif + +# Enabling fortify-source and "-Wall -Weverything" produces new warnings from libc. Turn them off. +CFLAGS="$CFLAGS -Wno-used-but-marked-unused" +CXXFLAGS="$CXXFLAGS -Wno-used-but-marked-unused" + +%if 0%{?fedora} >= 43 || 0%{?rhel} > 10 +# -Wall includes Wjump-misses-init and other additional warnings in newer clang versions +CFLAGS='-Wno-unknown-warning-option -Wno-jump-misses-init -Wno-implicit-void-ptr-cast -Wno-implicit-int-enum-cast' +CXXFLAGS='-Wno-unknown-warning-option -Wno-jump-misses-init -Wno-implicit-void-ptr-cast -Wno-implicit-int-enum-cast' +%endif + +export EXTRA_CFLAGS="$CFLAGS" +export EXTRA_CXXFLAGS="$CXXFLAGS" +export EXTRA_LDFLAGS="$LDFLAGS" +CFLAGS="" +CXXFLAGS="" +LDFLAGS="" + +# Disable tracing, which is incompatible with certain versions of +# lttng See https://github.com/dotnet/runtime/issues/57784. The +# suggested compile-time change doesn't work, unfortunately. +export COMPlus_LTTng=0 + +# Replace commas in the vendor name. Commas in msbuild properties are parsed +# differently than what we want. +vendor=$(echo "%{?dist_vendor}%{!?dist_vendor:%_host_vendor}" | sed -E 's/,/ /') + +system_libs= +%if ! %{use_bundled_brotli} + system_libs=$system_libs+brotli+ +%endif +%if ! %{use_bundled_libunwind} + system_libs=$system_libs+libunwind+ +%endif +%if ! %{use_bundled_llvm_libunwind} + system_libs=$system_libs+llvmlibunwind+ +%endif +%if ! %{use_bundled_rapidjson} + system_libs=$system_libs+rapidjson+ +%endif +%if ! %{use_bundled_zlib} + system_libs=$system_libs+zlib+ +%endif +%if ! %{use_lttng} + system_libs=$system_libs-lttng- +%endif + +%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 )) + "$@" + 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 + + + +%install +install -dm 0755 %{buildroot}%{_libdir}/dotnet +find artifacts/assets/Release/ +mkdir -p built-sdk +tar xf artifacts/assets/Release/dotnet-sdk-%{sdk_version}*-%{runtime_id}.tar.gz -C %{buildroot}%{_libdir}/dotnet/ + +# Delete bundled certificates: we want to use the system store only, +# except for when we have no other choice and ca-certificates doesn't +# provide it. Currently ca-ceritificates has no support for +# timestamping certificates (timestamp.ctl). +find %{buildroot}%{_libdir}/dotnet -name 'codesignctl.pem' -delete +if [[ $(find %{buildroot}%{_libdir}/dotnet -name '*.pem' -print | wc -l) != 1 ]]; then + find %{buildroot}%{_libdir}/dotnet -name '*.pem' -print + echo "too many certificate bundles" + exit 2 +fi + +# Install managed symbols +tar xf artifacts/assets/Release/dotnet-symbols-sdk-%{sdk_version}*-%{runtime_id}.tar.gz \ + -C %{buildroot}%{_libdir}/dotnet/ +find %{buildroot}%{_libdir}/dotnet/packs -iname '*.pdb' -delete + +# Fix executable permissions on files +find %{buildroot}%{_libdir}/dotnet/ -type f -name 'apphost' -exec chmod +x {} \; +find %{buildroot}%{_libdir}/dotnet/ -type f -name 'ilc' -exec chmod +x {} \; +find %{buildroot}%{_libdir}/dotnet/ -type f -name 'singlefilehost' -exec chmod +x {} \; +find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.sh' -exec chmod +x {} \; +find %{buildroot}%{_libdir}/dotnet/ -type f -name 'lib*so' -exec chmod +x {} \; +find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.a' -exec chmod -x {} \; +find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.dll' -exec chmod -x {} \; +find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.h' -exec chmod 0644 {} \; +find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.json' -exec chmod -x {} \; +find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.o' -exec chmod -x {} \; +find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.pdb' -exec chmod -x {} \; +find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.props' -exec chmod -x {} \; +find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.pubxml' -exec chmod -x {} \; +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} + +%if ! (0%{?fedora} >= 44 || 0%{?rhel} >= 11) +install -dm 0755 %{buildroot}%{_sysconfdir}/profile.d/ +install dotnet.sh %{buildroot}%{_sysconfdir}/profile.d/ +%endif + +# Install dynamic completions +install -dm 0755 %{buildroot}/%{bash_completions_dir} +install src/sdk/scripts/register-completions.bash %{buildroot}/%{bash_completions_dir}/dotnet +install -dm 755 %{buildroot}/%{zsh_completions_dir} +install src/sdk/scripts/register-completions.zsh %{buildroot}/%{zsh_completions_dir}/_dotnet + +install -dm 0755 %{buildroot}%{_bindir} +ln -s ../../%{_libdir}/dotnet/dotnet %{buildroot}%{_bindir}/ +ln -s ../../%{_libdir}/dotnet/dnx %{buildroot}%{_bindir}/ + +for section in 1 7; do + install -dm 0755 %{buildroot}%{_mandir}/man${section}/ + find -iname 'dotnet*'.${section} -type f -exec cp {} %{buildroot}%{_mandir}/man${section}/ \; +done + +install -dm 0755 %{buildroot}%{_sysconfdir}/dotnet +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/assets/Release/Private.SourceBuilt.Artifacts.*.tar.gz %{buildroot}/%{_libdir}/dotnet/source-built-artifacts/ + + +# Quick and dirty check for https://github.com/dotnet/source-build/issues/2731 +test -f %{buildroot}%{_libdir}/dotnet/sdk/%{sdk_version}/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props + +# Check debug symbols in all elf objects. This is not in %%check +# because native binaries are stripped by rpm-build after %%install. +# So we need to do this check earlier. +echo "Testing build results for debug symbols..." +%{SOURCE101} -v %{buildroot}%{_libdir}/dotnet/ + +%if %{is_latest_dotnet} && %{include_macros} +install -dm 0755 %{buildroot}%{_rpmmacrodir}/ +install -m 0644 %{SOURCE100} %{buildroot}%{_rpmmacrodir}/ +%endif + +find %{buildroot}%{_libdir}/dotnet/shared/Microsoft.NETCore.App \( -type f -or -type l \) -and -not -name '*.pdb' | sed -E 's|%{buildroot}||' > dotnet-runtime-non-dbg-files +find %{buildroot}%{_libdir}/dotnet/shared/Microsoft.NETCore.App \( -type f -or -type l \) -name '*.pdb' | sed -E 's|%{buildroot}||' > dotnet-runtime-dbg-files +find %{buildroot}%{_libdir}/dotnet/shared/Microsoft.AspNetCore.App \( -type f -or -type l \) -and -not -name '*.pdb' | sed -E 's|%{buildroot}||' > aspnetcore-runtime-non-dbg-files +find %{buildroot}%{_libdir}/dotnet/shared/Microsoft.AspNetCore.App \( -type f -or -type l \) -name '*.pdb' | sed -E 's|%{buildroot}||' > aspnetcore-runtime-dbg-files +find %{buildroot}%{_libdir}/dotnet/sdk -type d | tail -n +2 | sed -E 's|%{buildroot}||' | sed -E 's|^|%dir |' > dotnet-sdk-non-dbg-files +find %{buildroot}%{_libdir}/dotnet/sdk \( -type f -or -type l \) -and -not -name '*.pdb' | sed -E 's|%{buildroot}||' >> dotnet-sdk-non-dbg-files +find %{buildroot}%{_libdir}/dotnet/sdk \( -type f -or -type l \) -name '*.pdb' | sed -E 's|%{buildroot}||' > dotnet-sdk-dbg-files + +%if ! %{is_latest_dotnet} +# 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 +%endif + + + +%check +%if 0%{?fedora} +# lttng in Fedora is incompatible with .NET +export COMPlus_LTTng=0 +%endif + +%if %{is_latest_dotnet} +%{buildroot}%{_libdir}/dotnet/dotnet --info +%{buildroot}%{_libdir}/dotnet/dotnet --version +%endif + + + +%if ( 0%{?rhel} && 0%{?rhel} < 9 ) +%files -n dotnet +# empty package useful for dependencies +%endif + +%if %{is_latest_dotnet} +%files -n dotnet-host +%dir %{_libdir}/dotnet +%{_libdir}/dotnet/dotnet +%{_libdir}/dotnet/dnx +%dir %{_libdir}/dotnet/host +%dir %{_libdir}/dotnet/host/fxr +%{_bindir}/dotnet +%{_bindir}/dnx +%license %{_libdir}/dotnet/LICENSE.txt +%license %{_libdir}/dotnet/ThirdPartyNotices.txt +%doc %{_mandir}/man1/dotnet*.1.* +%doc %{_mandir}/man7/dotnet*.7.* +%if ! (0%{?fedora} >= 44 || 0%{?rhel} >= 11) +%config(noreplace) %{_sysconfdir}/profile.d/dotnet.sh +%endif +%config(noreplace) %{_sysconfdir}/dotnet +%dir %{_datadir}/bash-completion +%dir %{bash_completions_dir} +%{_datadir}/bash-completion/completions/dotnet +%dir %{_datadir}/zsh +%dir %{zsh_completions_dir} +%{_datadir}/zsh/site-functions/_dotnet +%if %{include_macros} +%{_rpmmacrodir}/macros.dotnet +%endif +%endif + +%files -n dotnet-hostfxr-%{dotnetver} +%dir %{_libdir}/dotnet/host/fxr +%{_libdir}/dotnet/host/fxr/%{hostfxr_version}* + +%files -n dotnet-runtime-%{dotnetver} -f dotnet-runtime-non-dbg-files +%dir %{_libdir}/dotnet/shared +%dir %{_libdir}/dotnet/shared/Microsoft.NETCore.App +%dir %{_libdir}/dotnet/shared/Microsoft.NETCore.App/%{runtime_version}* + +%files -n dotnet-runtime-dbg-%{dotnetver} -f dotnet-runtime-dbg-files + +%files -n aspnetcore-runtime-%{dotnetver} -f aspnetcore-runtime-non-dbg-files +%dir %{_libdir}/dotnet/shared +%dir %{_libdir}/dotnet/shared/Microsoft.AspNetCore.App +%dir %{_libdir}/dotnet/shared/Microsoft.AspNetCore.App/%{aspnetcore_runtime_version}* + +%files -n aspnetcore-runtime-dbg-%{dotnetver} -f aspnetcore-runtime-dbg-files + +%files -n dotnet-templates-%{dotnetver} +%dir %{_libdir}/dotnet/templates +%{_libdir}/dotnet/templates/%{templates_version}* + +%files -n dotnet-sdk-%{dotnetver} -f dotnet-sdk-non-dbg-files +%dir %{_libdir}/dotnet/sdk +%dir %{_libdir}/dotnet/sdk-manifests +%{_libdir}/dotnet/sdk-manifests/%{sdk_feature_band_version}* +%{_libdir}/dotnet/metadata +%ifnarch %{mono_archs} +%{_libdir}/dotnet/library-packs +%endif +%dir %{_libdir}/dotnet/packs +%dir %{_libdir}/dotnet/packs/Microsoft.AspNetCore.App.Runtime.%{runtime_id} +%{_libdir}/dotnet/packs/Microsoft.AspNetCore.App.Runtime.%{runtime_id}/%{aspnetcore_runtime_version}* +%dir %{_libdir}/dotnet/packs/Microsoft.NETCore.App.Runtime.%{runtime_id} +%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Runtime.%{runtime_id}/%{runtime_version}* + +%files -n dotnet-sdk-dbg-%{dotnetver} -f dotnet-sdk-dbg-files + +%ifnarch %{mono_archs} +%files -n dotnet-sdk-aot-%{dotnetver} +%dir %{_libdir}/dotnet/packs +%dir %{_libdir}/dotnet/packs/runtime.%{runtime_id}.Microsoft.DotNet.ILCompiler/ +%{_libdir}/dotnet/packs/runtime.%{runtime_id}.Microsoft.DotNet.ILCompiler/%{runtime_version}* +%dir %{_libdir}/dotnet/packs/Microsoft.NETCore.App.Runtime.NativeAOT.%{runtime_id}/ +%{_libdir}/dotnet/packs/Microsoft.NETCore.App.Runtime.NativeAOT.%{runtime_id}/%{runtime_version}* +%endif + +%files -n dotnet-sdk-%{dotnetver}-source-built-artifacts +%dir %{_libdir}/dotnet +%{_libdir}/dotnet/source-built-artifacts + + + +%changelog +* Mon Aug 17 2026 Omair Majid - 11.0.100~preview.6.26359.118-0.6 +- Initial commit on c9s +- Resolves: RHEL-192313 + +* Thu Jul 16 2026 Omair Majid - 11.0.100~preview.6.26359.118-0.5 +- Update to .NET SDK 11.0.100-preview.6.26359.118 and Runtime + 11.0.0-preview.6.26359.118 + +* Tue Jun 23 2026 Omair Majid - 11.0.100~preview.5.26302.115-0.4 +- Update to .NET SDK 11.0.100-preview.5.26302.115 and Runtime + 11.0.0-preview.5.26302.115 + +* Tue May 19 2026 Omair Majid - 11.0.100~preview.4.26230.115-0.3 +- Update to .NET SDK 11.0.100-preview.4.26230.115 and Runtime + 11.0.0-preview.4.26230.115 + +* Fri Apr 24 2026 Omair Majid - 11.0.100~preview.3.26207.106-0.2 +- Update to .NET SDK 11.0.100-preview.3.26207.106 and Runtime + 11.0.0-preview.3.26207.106 + +* Mon Mar 30 2026 Omair Majid - 11.0.100~preview.2.26159.112-0.1 +- Update to .NET SDK 11.0.100-preview.2.26159.112 and Runtime + 11.0.0-preview.2.26159.112 + +* Wed Dec 10 2025 Omair Majid - 10.0.101-1 +- Update to .NET SDK 10.0.101 and Runtime 10.0.1 + +* Tue Nov 11 2025 Omair Majid - 10.0.100-1 +- Update to .NET SDK 10.0.100 and Runtime 10.0.0 + +* Sun Nov 02 2025 Omair Majid - 10.0.100~rc.2.25502.107-0.10 +- Update to .NET SDK 10.0.100-rc.2.25502.107 and Runtime 10.0.0-rc.2.25502.107 + +* Thu Oct 30 2025 Omair Majid - 10.0.100~rc.1.25451.107-0.9 +- Disable bootstrap + +* Wed Oct 29 2025 Omair Majid - 10.0.100~rc.1.25451.107-0.8 +- Don't build with clang 21 + +* Wed Sep 10 2025 Omair Majid - 10.0.100~rc.1.25451.107-0.7 +- Update to .NET SDK 10.0.100-rc.1.25451.107 and Runtime 10.0.0-rc.1.25451.107 + +* Fri Sep 05 2025 Omair Majid - 10.0.100~preview.7.25380.108-0.6 +- Update to .NET SDK 10.0.100-preview.7.25380.108 and Runtime + 10.0.0-preview.7.25380.108 + +* Tue Jul 15 2025 Omair Majid - 10.0.100~preview.6.25358.103-0.5 +- Update to .NET SDK 10.0.100-preview.6.25358.103 and Runtime 10.0.0-preview.6.25358.103 + +* Fri Jun 27 2025 Omair Majid - 10.0.100~preview.5.25277.114-0.4 +- Update to .NET SDK 10.0.100-preview.5.25277.114 and Runtime + 10.0.0-preview.5.25277.114 + +* Wed May 14 2025 Omair Majid - 10.0.100~preview.4.25258.110-0.3 +- Update to .NET SDK 10.0.100-preview.4.25258.110 and Runtime 10.0.0-preview.4.25258.110 + +* Wed Apr 02 2025 Omair Majid - 10.0.100~preview.2.25164.1-0.2 +- Update to .NET SDK 10.0.100-preview.2.25164.1 and Runtime 10.0.0-preview.2.25163.2 + 10.0.0-preview.2.25163.2 + +* Thu Feb 27 2025 Omair Majid - 10.0.100~preview.1.25120.13-0.1 +- Update to .NET SDK 10.0.100-preview.1.25121.1 and Runtime 10.0.0-preview.1.25080.5 + +* Fri Dec 13 2024 Omair Majid - 10.0-1 +- Update to .NET SDK 10.0 and Runtime 10.0 + +* Tue Dec 03 2024 Omair Majid - 9.0.101-2 +- Update to .NET SDK 9.0.101 and Runtime 9.0.0 + +* Tue Nov 12 2024 Omair Majid - 9.0.100-1 +- Update to .NET SDK 9.0.100 and Runtime 9.0.0 + +* Mon Oct 21 2024 Omair Majid - 9.0.100~rc.2.24474.1-0.13 +- Disable bootstrap + +* Mon Oct 21 2024 Omair Majid - 9.0.100~rc.2.24474.1-0.12 +- Update to .NET SDK 9.0.100-rc.2.24474.1 and Runtime 9.0.0-rc.2.24473.5 +- Rebootstrap + +* Mon Sep 23 2024 Omair Majid - 9.0.100~rc.1.24452.12-0.11 +- Disable bootstrap + +* Wed Sep 11 2024 Omair Majid - 9.0.100~rc.1.24452.12-0.10 +- Update to .NET SDK 9.0.100-rc.1.24452.1 and Runtime 9.0.0-rc.1.24431.7 + +* Thu Jun 13 2024 Omair Majid - 9.0.100~preview.5.24307.3-0.9 +- Update to .NET SDK 9.0.100-preview.5.24307.3 and Runtime + 9.0.0-preview.5.24306.7 + +* Tue May 21 2024 Omair Majid - 9.0.100~preview.4.24267.1-0.8 +- Update to .NET SDK 9.0.100-preview.4.24267.1 and Runtime + 9.0.0-preview.4.24266.19 + +* Thu Apr 11 2024 Omair Majid - 9.0.100~preview.3.24204.13-0.6 +- Update to .NET SDK 9.0.100-preview.3.24204.13 and Runtime + 9.0.0-preview.3.24172.9 + +* Thu Mar 14 2024 Omair Majid - 9.0.100~preview.2.24157.14-0.4 +- Update to .NET SDK 9.0.100~preview.2.24158.1 and Runtime + 9.0.0-preview.2.24128.5 + +* Mon Feb 26 2024 Omair Majid - 9.0.100~preview.1.24101.1-0.3 +- Update to .NET SDK 9.0.100-preview.1.24101.1 and Runtime + 9.0.0-preview.1.24080.9 + +* Wed Feb 14 2024 Omair Majid - 8.0.102-1 +- Update to .NET SDK 8.0.102 and Runtime 8.0.2 + +* Fri Jan 26 2024 Omair Majid - 8.0.101-4 +- Rebuild to add new -dbg subpackages + +* Wed Jan 24 2024 Fedora Release Engineering - 8.0.101-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 8.0.101-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Tue Jan 09 2024 Omair Majid - 8.0.101-1 +- Update to .NET SDK 8.0.101 and Runtime 8.0.1 + +* Tue Dec 12 2023 Omair Majid - 8.0.100-2 +- Enable gpg signature verification + +* Sat Dec 09 2023 Omair Majid - 8.0.100-1 +- Update to .NET SDK 8.0.100 and Runtime 8.0.0 + +* Fri Dec 08 2023 Omair Majid - 8.0.100~rc.2-0.1 +- Update to .NET SDK 8.0.100 RC 2 and Runtime 8.0.0 RC 2 + +* Fri Dec 08 2023 Omair Majid - 8.0.100~rc.1-0.2 +- Add various fixes from CentOS Stream 9 + +* Fri Sep 15 2023 Omair Majid - 8.0.100~rc.1-0.1 +- Update to .NET SDK 8.0.100 RC 1 and Runtime 8.0.0 RC 1 + +* Fri Aug 11 2023 Omair Majid - 8.0.100~preview.7-0.1 +- Update to .NET SDK 8.0.100 Preview 7 and Runtime 8.0.0 Preview 7 + +* Tue Jul 18 2023 Omair Majid - 8.0.100~preview.6-0.2 +- Remove lttng and other tracing-specific dependencies from the runtime package + +* Mon Jul 17 2023 Omair Majid - 8.0.100~preview.6-0.1 +- Update to .NET SDK 8.0.100 Preview 6 and Runtime 8.0.0 Preview 6 + +* Fri Jun 23 2023 Omair Majid - 8.0.100~preview.5-0.2 +- Fix release.json and sourcelink references + +* Mon Jun 19 2023 Omair Majid - 8.0.100~preview.5-0.1 +- Update to .NET SDK 8.0.100 Preview 5 and Runtime 8.0.0 Preview 5 + +* Wed Apr 12 2023 Omair Majid - 8.0.100~preview.3-0.1 +- Update to .NET SDK 8.0.100 Preview 3 and Runtime 8.0.0 Preview 3 + +* Wed Mar 15 2023 Omair Majid - 8.0.100~preview.2-0.1 +- Update to .NET SDK 8.0.100 Preview 2 and Runtime 8.0.0 Preview 2 + +* Wed Feb 22 2023 Omair Majid - 8.0.100~preview.1-0.1 +- Update to .NET SDK 8.0.100 Preview 1 and Runtime 8.0.0 Preview 1 + +* Thu Jan 12 2023 Omair Majid - 7.0.102-1 +- Update to .NET SDK 7.0.102 and Runtime 7.0.2 + +* Wed Jan 11 2023 Omair Majid - 7.0.101-1 +- Update to .NET SDK 7.0.101 and Runtime 7.0.1 + +* Tue Jan 10 2023 Omair Majid - 7.0.100-1 +- Update to .NET SDK 7.0.100 and Runtime 7.0.0 + +* Thu Nov 10 2022 Omair Majid - 7.0.100-0.1 +- Update to .NET 7 RC 2 + +* Wed May 11 2022 Omair Majid - 6.0.105-1 +- Update to .NET SDK 6.0.105 and Runtime 6.0.5 + +* Tue Apr 12 2022 Omair Majid - 6.0.104-1 +- Update to .NET SDK 6.0.104 and Runtime 6.0.4 + +* Thu Mar 10 2022 Omair Majid - 6.0.103-1 +- Update to .NET SDK 6.0.103 and Runtime 6.0.3 + +* Mon Feb 14 2022 Omair Majid - 6.0.102-1 +- Update to .NET SDK 6.0.102 and Runtime 6.0.2 + +* Fri Jan 28 2022 Omair Majid - 6.0.101-3 +- Update to .NET SDK 6.0.101 and Runtime 6.0.1 + +* Thu Jan 20 2022 Fedora Release Engineering - 6.0.100-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Mon Dec 20 2021 Omair Majid - 6.0.100-2 +- Disable bootstrap + +* Sun Dec 19 2021 Omair Majid - 6.0.100-1 +- Update to .NET 6 + +* Fri Oct 22 2021 Omair Majid - 6.0.0-0.7.rc2 +- Update to .NET 6 RC2 + +* Fri Oct 08 2021 Omair Majid - 6.0.0-0.6.28be3e9a006d90d8c6e87d4353b77882829df718 +- Enable building on arm64 +- Related: RHBZ#1986017 + +* Sun Oct 03 2021 Omair Majid - 6.0.0-0.5.28be3e9a006d90d8c6e87d4353b77882829df718 +- Enable building on s390x +- Related: RHBZ#1986017 + +* Sun Oct 03 2021 Omair Majid - 6.0.0-0.4.28be3e9a006d90d8c6e87d4353b77882829df718 +- Clean up tarball and add initial support for s390x +- Related: RHBZ#1986017 + +* Sun Sep 26 2021 Omair Majid - 6.0.0-0.3.28be3e9a006d90d8c6e87d4353b77882829df718 +- Update to work-in-progress RC2 release + +* Wed Aug 25 2021 Omair Majid - 6.0.0-0.2.preview6 +- Updated to build the latest source-build preview + +* Fri Jul 23 2021 Omair Majid - 6.0.0-0.1.preview6 +- Initial package for .NET 6 + +* Thu Jun 10 2021 Omair Majid - 5.0.204-1 +- Update to .NET SDK 5.0.204 and Runtime 5.0.7 + +* Wed May 12 2021 Omair Majid - 5.0.203-1 +- Update to .NET SDK 5.0.203 and Runtime 5.0.6 + +* Wed Apr 14 2021 Omair Majid - 5.0.202-1 +- Update to .NET SDK 5.0.202 and Runtime 5.0.5 + +* Tue Apr 06 2021 Omair Majid - 5.0.104-2 +- Mark files under /etc/ as config(noreplace) +- Add an rpm-inspect configuration file +- Add an rpmlintrc file +- Enable gating for release branches and ELN too + +* Tue Mar 16 2021 Omair Majid - 5.0.104-1 +- Update to .NET SDK 5.0.104 and Runtime 5.0.4 +- Drop unneeded/upstreamed patches + +* Wed Feb 17 2021 Omair Majid - 5.0.103-2 +- Add Fedora 35 RIDs + +* Thu Feb 11 2021 Omair Majid - 5.0.103-1 +- Update to .NET SDK 5.0.103 and Runtime 5.0.3 + +* Fri Jan 29 2021 Omair Majid - 5.0.102-2 +- Disable bootstrap + +* Fri Dec 18 2020 Omair Majid - 5.0.100-2 +- Update to .NET Core Runtime 5.0.0 and SDK 5.0.100 commit 9c4e5de + +* Fri Dec 04 2020 Omair Majid - 5.0.100-1 +- Update to .NET Core Runtime 5.0.0 and SDK 5.0.100 + +* Thu Dec 03 2020 Omair Majid - 5.0.100-0.4.20201202git337413b +- Update to latest 5.0 pre-GA commit + +* Tue Nov 24 2020 Omair Majid - 5.0.100-0.4.20201123gitdee899c +- Update to 5.0 pre-GA commit + +* Mon Sep 14 2020 Omair Majid - 5.0.100-0.3.preview8 +- Update to Preview 8 + +* Fri Jul 10 2020 Omair Majid - 5.0.100-0.2.preview4 +- Fix building with custom CFLAGS/CXXFLAGS/LDFLAGS +- Clean up patches + +* Mon Jul 06 2020 Omair Majid - 5.0.100-0.1.preview4 +- Initial build + +* Sat Jun 27 2020 Omair Majid - 3.1.105-4 +- Disable bootstrap + +* Fri Jun 26 2020 Omair Majid - 3.1.105-3 +- Re-bootstrap aarch64 + +* Fri Jun 19 2020 Omair Majid - 3.1.105-3 +- Disable bootstrap + +* Thu Jun 18 2020 Omair Majid - 3.1.105-1 +- Bootstrap aarch64 + +* Tue Jun 16 2020 Chris Rummel - 3.1.105-1 +- Update to .NET Core Runtime 3.1.5 and SDK 3.1.105 + +* Fri Jun 05 2020 Chris Rummel - 3.1.104-1 +- Update to .NET Core Runtime 3.1.4 and SDK 3.1.104 + +* Thu Apr 09 2020 Chris Rummel - 3.1.103-1 +- Update to .NET Core Runtime 3.1.3 and SDK 3.1.103 + +* Mon Mar 16 2020 Omair Majid - 3.1.102-1 +- Update to .NET Core Runtime 3.1.2 and SDK 3.1.102 + +* Fri Feb 28 2020 Omair Majid - 3.1.101-4 +- Disable bootstrap + +* Fri Feb 28 2020 Omair Majid - 3.1.101-3 +- Enable bootstrap +- Add Fedora 33 runtime ids + +* Thu Feb 27 2020 Omair Majid - 3.1.101-2 +- Disable bootstrap + +* Tue Jan 21 2020 Omair Majid - 3.1.101-1 +- Update to .NET Core Runtime 3.1.1 and SDK 3.1.101 + +* Thu Dec 05 2019 Omair Majid - 3.1.100-1 +- Update to .NET Core Runtime 3.1.0 and SDK 3.1.100 + +* Mon Nov 18 2019 Omair Majid - 3.1.100-0.4.preview3 +- Fix apphost permissions + +* Fri Nov 15 2019 Omair Majid - 3.1.100-0.3.preview3 +- Update to .NET Core Runtime 3.1.0-preview3.19553.2 and SDK + 3.1.100-preview3-014645 + +* Wed Nov 06 2019 Omair Majid - 3.1.100-0.2 +- Update to .NET Core 3.1 Preview 2 + +* Wed Oct 30 2019 Omair Majid - 3.1.100-0.1 +- Update to .NET Core 3.1 Preview 1 + +* Thu Oct 24 2019 Omair Majid - 3.0.100-5 +- Add cgroupv2 support to .NET Core + +* Wed Oct 16 2019 Omair Majid - 3.0.100-4 +- Include fix from coreclr for building on Fedora 32 + +* Wed Oct 16 2019 Omair Majid - 3.0.100-3 +- Harden built binaries to pass annocheck + +* Fri Oct 11 2019 Omair Majid - 3.0.100-2 +- Export DOTNET_ROOT in profile to make apphost lookup work + +* Fri Sep 27 2019 Omair Majid - 3.0.100-1 +- Update to .NET Core Runtime 3.0.0 and SDK 3.0.100 + +* Wed Sep 25 2019 Omair Majid - 3.0.100-0.18.rc1 +- Update to .NET Core Runtime 3.0.0-rc1-19456-20 and SDK 3.0.100-rc1-014190 + +* Tue Sep 17 2019 Omair Majid - 3.0.100-0.16.preview9 +- Fix files duplicated between dotnet-apphost-pack-3.0 and dotnet-targeting-pack-3.0 +- Fix dependencies between .NET SDK and the targeting packs + +* Mon Sep 16 2019 Omair Majid - 3.0.100-0.15.preview9 +- Update to .NET Core Runtime 3.0.0-preview 9 and SDK 3.0.100-preview9 + +* Mon Aug 19 2019 Omair Majid - 3.0.100-0.11.preview8 +- Update to .NET Core Runtime 3.0.0-preview8-28405-07 and SDK + 3.0.100-preview8-013656 + +* Tue Jul 30 2019 Omair Majid - 3.0.100-0.9.preview7 +- Update to .NET Core Runtime 3.0.0-preview7-27912-14 and SDK + 3.0.100-preview7-012821 + +* Fri Jul 26 2019 Omair Majid - 3.0.100-0.8.preview7 +- Update to .NET Core Runtime 3.0.0-preview7-27902-19 and SDK + 3.0.100-preview7-012802 + +* Wed Jun 26 2019 Omair Majid - 3.0.0-0.7.preview6 +- Obsolete dotnet-sdk-3.0.1xx +- Add supackages for targeting packs +- Add -fcf-protection to CFLAGS + +* Wed Jun 26 2019 Omair Majid - 3.0.0-0.6.preview6 +- Update to .NET Core Runtime 3.0.0-preview6-27804-01 and SDK 3.0.100-preview6-012264 +- Set dotnet installation location in /etc/dotnet/install_location +- Update targeting packs +- Install managed symbols +- Completely conditionalize libunwind bundling + +* Tue May 07 2019 Omair Majid - 3.0.0-0.3.preview4 +- Update to .NET Core 3.0 preview 4 + +* Tue Dec 18 2018 Omair Majid - 3.0.0-0.1.preview1 +- Update to .NET Core 3.0 preview 1 + +* Fri Dec 07 2018 Omair Majid - 2.2.100 +- Update to .NET Core 2.2.0 + +* Wed Nov 07 2018 Omair Majid - 2.2.100-0.2.preview3 +- Update to .NET Core 2.2.0-preview3 + +* Fri Nov 02 2018 Omair Majid - 2.1.403-3 +- Add host-fxr-2.1 subpackage + +* Mon Oct 15 2018 Omair Majid - 2.1.403-2 +- Disable telemetry by default +- Users have to manually export DOTNET_CLI_TELEMETRY_OPTOUT=0 to enable + +* Tue Oct 02 2018 Omair Majid - 2.1.403-1 +- Update to .NET Core Runtime 2.1.5 and SDK 2.1.403 + +* Wed Sep 26 2018 Omair Majid - 2.1.402-2 +- Add ~/.dotnet/tools to $PATH to make it easier to use dotnet tools + +* Thu Sep 13 2018 Omair Majid - 2.1.402-1 +- Update to .NET Core Runtime 2.1.4 and SDK 2.1.402 + +* Wed Sep 05 2018 Omair Majid - 2.1.401-2 +- Use distro-standard flags when building .NET Core + +* Tue Aug 21 2018 Omair Majid - 2.1.401-1 +- Update to .NET Core Runtime 2.1.3 and SDK 2.1.401 + +* Mon Aug 20 2018 Omair Majid - 2.1.302-1 +- Update to .NET Core Runtime 2.1.2 and SDK 2.1.302 + +* Fri Jul 20 2018 Omair Majid - 2.1.301-1 +- Update to .NET Core 2.1 + +* Thu May 03 2018 Omair Majid - 2.0.7-1 +- Update to .NET Core 2.0.7 + +* Wed Mar 28 2018 Omair Majid - 2.0.6-2 +- Enable bash completion for dotnet +- Remove redundant buildrequires and requires + +* Wed Mar 14 2018 Omair Majid - 2.0.6-1 +- Update to .NET Core 2.0.6 + +* Fri Feb 23 2018 Omair Majid - 2.0.5-1 +- Update to .NET Core 2.0.5 + +* Wed Jan 24 2018 Omair Majid - 2.0.3-5 +- Don't apply corefx clang warnings fix on clang < 5 + +* Fri Jan 19 2018 Omair Majid - 2.0.3-4 +- Add a test script to sanity check debug and symbol info. +- Build with clang 5.0 +- Make main package real instead of using a virtual provides (see RHBZ 1519325) + +* Wed Nov 29 2017 Omair Majid - 2.0.3-3 +- Add a Provides for 'dotnet' +- Fix conditional macro + +* Tue Nov 28 2017 Omair Majid - 2.0.3-2 +- Fix build on Fedora 27 + +* Fri Nov 17 2017 Omair Majid - 2.0.3-1 +- Update to .NET Core 2.0.3 + +* Thu Oct 19 2017 Omair Majid - 2.0.0-4 +- Add a hack to let omnisharp work + +* Wed Aug 30 2017 Omair Majid - 2.0.0-3 +- Add a patch for building coreclr and core-setup correctly on Fedora >= 27 + +* Fri Aug 25 2017 Omair Majid - 2.0.0-2 +- Move libicu/libcurl/libunwind requires to runtime package +- Make sdk depend on the exact version of the runtime package + +* Thu Aug 24 2017 Omair Majid - 2.0.0-1 +- Update to 2.0.0 final release + +* Wed Jul 26 2017 Omair Majid - 2.0.0-0.3.preview2 +- Add man pages + +* Tue Jul 25 2017 Omair Majid - 2.0.0-0.2.preview2 +- Add Requires on libicu +- Split into multiple packages +- Do not repeat first-run message + +* Fri Jul 21 2017 Omair Majid - 2.0.0-0.1.preview2 +- Update to .NET Core 2.0 Preview 2 + +* Thu Mar 16 2017 Nemanja Milošević - 1.1.0-7 +- rebuilt with latest libldb +* Wed Feb 22 2017 Nemanja Milosevic - 1.1.0-6 +- compat-openssl 1.0 for F26 for now +* Sun Feb 19 2017 Nemanja Milosevic - 1.1.0-5 +- Fix wrong commit id's +* Sat Feb 18 2017 Nemanja Milosevic - 1.1.0-4 +- Use commit id's instead of branch names +* Sat Feb 18 2017 Nemanja Milosevic - 1.1.0-3 +- Improper patch5 fix +* Sat Feb 18 2017 Nemanja Milosevic - 1.1.0-2 +- SPEC cleanup +- git removal (using all tarballs for reproducible builds) +- more reasonable versioning +* Thu Feb 09 2017 Nemanja Milosevic - 1.1.0-1 +- Fixed debuginfo going to separate package (Patch1) +- Added F25/F26 RIL and fixed the version info (Patch2) +- Added F25/F26 RIL in Microsoft.NETCore.App suported runtime graph (Patch3) +- SPEC file cleanup +* Wed Jan 11 2017 Nemanja Milosevic - 1.1.0-0 +- Initial RPM for Fedora 25/26. diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..6b6a8a9 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,22 @@ +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_testing +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.rpminspect.static-analysis} +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_stable +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.rpminspect.static-analysis} +--- !Policy +product_versions: + - rhel-* +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional} diff --git a/macros.dotnet b/macros.dotnet new file mode 100644 index 0000000..307078e --- /dev/null +++ b/macros.dotnet @@ -0,0 +1,18 @@ +# .NET's name for the architecture +%dotnet_runtime_arch %{lua: +local target = rpm.expand("%{_target_cpu}") +local arch = "x64" +if target == "aarch64" then + arch = "arm64" +elseif target == "ppc64le" then + arch = "ppc64le" +elseif target == "s390x" then + arch = "s390x" +elseif target == "x86_64" then + arch = "x64" +end +print(arch) +} + +# .NET's identifier for the OS+architecture combination +%dotnet_runtime_id %(. /etc/os-release ; echo "${ID}.${VERSION_ID%%.*}")-%{dotnet_runtime_arch} diff --git a/release-key-2023.asc b/release-key-2023.asc new file mode 100644 index 0000000..96844b6 --- /dev/null +++ b/release-key-2023.asc @@ -0,0 +1,29 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BSN Pgp v1.1.0.0 + +mQINBGUKsUYBEADVCJm4EhXALr1ld42kWeh/vM0XMZ2orNT6NRLDRYjpE4mm4UqA +vpjfGCwt5fLcrT4yZng8ABkB3QwTsZzmxesAMD5AZR/gdU1G96DuDGsjp6zJvTuX +zvz3PXUYfcl9n5X32acA6N9J5Xfp10xqX3oitUODBdYy/vKW/v/y87ZxgaR6a3wp +pPJBJIVKwFJx13v4BHRsGp1fepliQcXPvmNKFNI20le5+FbLq6C9hY5wcwGHGfQr +EokH79GsmqgSImqxDOIh06J5VfWA+JwV+3vf95pD8IUrRfGQ+GK7b1/bySxtM5Qa +b/IDgvl/Qq3AzEpGarMBaqGbqMz1C7jd8Y6nyKMP/V+OCjbEdYNM8GRz6kBP3Un+ +Frat5Lc2o4DF+zB3PKIJS3hku5gwlJu6IU1F23vmYFtjUcpRGmyQZDoWyBbOWlB5 +4SXqVu16amUsRFYmOK8BJMjdotcVbriVIv6WRmugfhIMoRJzVGxYkdbuiuMAX69V +xDoGpxX5A8S5A79y0USUVtadQfFavMTyb/gUuUe8oDsqK9gdI3ETxLYG4gYwauVX +fCGfoLOKsq5dPzEuEA7GCRrMau+rHKFaM7BigSdnHFW7xNZ4v0YnXAagoqM2G5o5 +9sak0l57vxxTVk2V3iZzkoU2J2Zlyxyh72n5vjRmb7aNwmQh4Eav6a8ssQARAQAB +tBlvbm54Y29yZWRldkBtaWNyb3NvZnQuY29tiQI4BBMBCAAiBQJlCrFGAhsDBgsJ +CAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRD9v1PCTbSHLtfzEADIKq15XDeQxLSo +BG1aFa9n82K1YADVcu1LeddfhDmQWLnZNgyHtQlKN2n59282CXtgymzae3uc05s2 +feIJaqF4M4NnCX8Ct3K7Hq1jI7ZktlquPCCy9XHq9aQY8XTxmdtRevtclKgYTwDh +w+D/KbE8vTZ6o7JoubA3MKf4k3S8qL/0rIyaC6h0EpiWoMy1TdNMMK7BT4kl6Vz4 +W6KmNgOux1Pzku5ULM4WuOzmwW+NAzpOLJowfDs1ZC2RM3+g9i1/DmwWtCHngvGD ++clA0I0agXxo05toOBTfwxd2gWYczuo/Ole16fYTzqT6n0DHqOjjcc9A7EmC72fQ +J+hHAqM+4+CbEGuMpNnTMpCZs98bcK3Rqx/bDJYtbclZzm5O/V4nVbDrJZKzpgA1 +KuzNMLkr62P6/t15UsStgmrlTILmE5NG0CR1mj/46+mNbsMZCel3dcvnT1Zf4rTq +QxMC7Dd/DECKQVC339G/BRfNyhOk2S1mZR/g1uS4bznL+tiwudDh/TAi5C3ZBDMh +0muwD9caXS/QFIBWtb2ai3IcpU357R/ERPKLcWYtoYJ80RuKi6XYr1WxSPBmd5Qm +wuncye+wR2dveo2jnIXZGUSgz50ZNgBxs/cYWAQ8J6KMgIBa+JY2qalzvIGbrC5x +Sr+CkhS8vrktfnRgc8yBssJnvNfqXA== +=pKgS +-----END PGP PUBLIC KEY BLOCK----- diff --git a/release.json b/release.json new file mode 100644 index 0000000..c33aaf0 --- /dev/null +++ b/release.json @@ -0,0 +1,11 @@ +{ + "release": "11.0.0-preview.6", + "channel": "11.0", + "tag": "v11.0.100-preview.6.26359.118", + "sdkVersion": "11.0.100-preview.6.26359.118", + "runtimeVersion": "11.0.0-preview.6.26359.118", + "aspNetCoreVersion": "11.0.0-preview.6.26359.118", + "sourceRepository": "https://github.com/dotnet/dotnet", + "sourceVersion": "ba53d0ed335bed4ab7bfd01988c8e3953ee5ffbe", + "officialBuildId": "20260709.18" +} diff --git a/rpminspect.yaml b/rpminspect.yaml new file mode 100644 index 0000000..9293249 --- /dev/null +++ b/rpminspect.yaml @@ -0,0 +1,20 @@ +--- +inspections: + # We patch upstream a lot, no need to reject patches + patches: off +badfuncs: + allowed: + # The Mono runtime (used on s390x, for example), uses inet_addr for + # debugging (such as sending the control flow graph to a remote process). + # See runtime/src/mono/mono/mini/cfgdump.c. This isn't part of any + # standard networking facility; networking APIs are implemented/used in + # libSystem*so. + /usr/lib64/dotnet/shared/Microsoft.NETCore.App/*/libcoreclr.so: + - inet_addr + /usr/lib64/dotnet/packs/Microsoft.NETCore.App.Runtime.*/*/runtimes/*/native/libcoreclr.so: + - inet_addr +runpath: + # Upstream explicitly sets $ORIGIN/netcoredeps as an RPATH + # See https://github.com/dotnet/core/blob/main/Documentation/self-contained-linux-apps.md + allowed_origin_paths: + - /netcoredeps diff --git a/runtime-disable-fortify-on-ilasm-parser.patch b/runtime-disable-fortify-on-ilasm-parser.patch new file mode 100644 index 0000000..a128222 --- /dev/null +++ b/runtime-disable-fortify-on-ilasm-parser.patch @@ -0,0 +1,12 @@ +diff --git dotnet/src/runtime/src/coreclr/ilasm/CMakeLists.txt dotnet/src/runtime/src/coreclr/ilasm/CMakeLists.txt +index cca2c6da185..d31e6cb2070 100644 +--- dotnet/src/runtime/src/coreclr/ilasm/CMakeLists.txt ++++ dotnet/src/runtime/src/coreclr/ilasm/CMakeLists.txt +@@ -52,6 +52,7 @@ if(CLR_CMAKE_HOST_UNIX) + add_compile_options(-Wno-array-bounds) + add_compile_options(-Wno-unused-label) + set_source_files_properties( prebuilt/asmparse.cpp PROPERTIES COMPILE_FLAGS "-O0" ) ++ set_source_files_properties( prebuilt/asmparse.cpp PROPERTIES COMPILE_FLAGS "-Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=0" ) + endif(CLR_CMAKE_HOST_UNIX) + + if(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS OR CLR_CMAKE_HOST_HAIKU) diff --git a/runtime-openssl-sha1.patch b/runtime-openssl-sha1.patch new file mode 100644 index 0000000..6e307ef --- /dev/null +++ b/runtime-openssl-sha1.patch @@ -0,0 +1,34 @@ +From d7805229ffe6906cd0832c0482b963caf4b4fd82 Mon Sep 17 00:00:00 2001 +From: Tom Deseyn +Date: Wed, 28 Feb 2024 14:08:15 +0100 +Subject: [PATCH] Allow certificate validation with SHA-1 signatures. + +RHEL OpenSSL builds disable SHA-1 signatures. This causes certificate +validation to fail when using the X509_V_FLAG_CHECK_SS_SIGNATURE flag +with a chain where the last certificate uses a SHA-1 signature. + +This removes X509_V_FLAG_CHECK_SS_SIGNATURE flag to have the default +OpenSSL behavior for certificate validation. +--- + .../libs/System.Security.Cryptography.Native/pal_x509.c | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/src/runtime/src/native/libs/System.Security.Cryptography.Native/pal_x509.c b/src/runtime/src/native/libs/System.Security.Cryptography.Native/pal_x509.c +index 04c6ba06cd..2cd3413dae 100644 +--- a/src/runtime/src/native/libs/System.Security.Cryptography.Native/pal_x509.c ++++ b/src/runtime/src/native/libs/System.Security.Cryptography.Native/pal_x509.c +@@ -272,11 +272,6 @@ int32_t CryptoNative_X509StoreCtxInit(X509_STORE_CTX* ctx, X509_STORE* store, X5 + + int32_t val = X509_STORE_CTX_init(ctx, store, x509, extraStore); + +- if (val != 0) +- { +- X509_STORE_CTX_set_flags(ctx, X509_V_FLAG_CHECK_SS_SIGNATURE); +- } +- + return val; + } + +-- +2.43.2 + diff --git a/runtime-re-enable-implicit-rejection.patch b/runtime-re-enable-implicit-rejection.patch new file mode 100644 index 0000000..702587c --- /dev/null +++ b/runtime-re-enable-implicit-rejection.patch @@ -0,0 +1,142 @@ +From 5fdc289903bd3a77d455583650b00297da0cae8f Mon Sep 17 00:00:00 2001 +From: Omair Majid +Date: Fri, 2 Feb 2024 15:51:23 -0500 +Subject: [PATCH] Revert "Disable implicit rejection for RSA PKCS#1 (#95216)" + +This reverts commit a5fc8ff9b03ffb2fdb81dad524ad1a20a0714995. + +To quote Clemens Lang: + +> [Disabling implcit rejection] re-enables a Bleichenbacher timing oracle +> attack against PKCS#1v1.5 decryption. See +> https://people.redhat.com/~hkario/marvin/ for details and +> https://github.com/dotnet/runtime/pull/95157#issuecomment-1842784399 for a +> comment by the researcher who published the vulnerability and proposed the +> change in OpenSSL. + +For more details, see: +https://github.com/dotnet/runtime/pull/95216#issuecomment-1842799314 +--- + .../RSA/EncryptDecrypt.cs | 49 ++++--------------- + .../opensslshim.h | 6 --- + .../pal_evp_pkey_rsa.c | 13 ----- + 3 files changed, 10 insertions(+), 58 deletions(-) + + +index 0aaffebe5..011206433 100644 +--- a/src/runtime/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/RSA/EncryptDecrypt.cs ++++ b/src/runtime/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/RSA/EncryptDecrypt.cs +@@ -355,10 +355,19 @@ private void RsaCryptRoundtrip(RSAEncryptionPadding paddingMode, bool expectSucc + Assert.Equal(TestData.HelloBytes, output); + } + +- [ConditionalFact(typeof(EncryptDecrypt), nameof(PlatformSupportsEmptyRSAEncryption))] ++ [ConditionalFact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] + public void RoundtripEmptyArray() + { ++ if (OperatingSystem.IsIOS() && !OperatingSystem.IsIOSVersionAtLeast(13, 6)) ++ { ++ throw new SkipTestException("iOS prior to 13.6 does not reliably support RSA encryption of empty data."); ++ } ++ if (OperatingSystem.IsTvOS() && !OperatingSystem.IsTvOSVersionAtLeast(14, 0)) ++ { ++ throw new SkipTestException("tvOS prior to 14.0 does not reliably support RSA encryption of empty data."); ++ } ++ + using (RSA rsa = RSAFactory.Create(TestData.RSA2048Params)) + { + void RoundtripEmpty(RSAEncryptionPadding paddingMode) +@@ -852,23 +861,5 @@ public static IEnumerable OaepPaddingModes + } + } + } +- +- public static bool PlatformSupportsEmptyRSAEncryption +- { +- get +- { +- if (OperatingSystem.IsIOS() && !OperatingSystem.IsIOSVersionAtLeast(13, 6)) +- { +- return false; +- } +- +- if (OperatingSystem.IsTvOS() && !OperatingSystem.IsTvOSVersionAtLeast(14, 0)) +- { +- return false; +- } +- +- return true; +- } +- } + } + } +diff --git a/src/runtime/src/native/libs/System.Security.Cryptography.Native/opensslshim.h b/src/runtime/src/native/libs/System.Security.Cryptography.Native/opensslshim.h +index db613a21d..db1ceb1a3 100644 +--- a/src/runtime/src/native/libs/System.Security.Cryptography.Native/opensslshim.h ++++ b/src/runtime/src/native/libs/System.Security.Cryptography.Native/opensslshim.h +@@ -397,10 +397,8 @@ extern bool g_libSslUses32BitTime; + REQUIRED_FUNCTION(ERR_peek_error) \ + REQUIRED_FUNCTION(ERR_peek_error_line) \ + REQUIRED_FUNCTION(ERR_peek_last_error) \ +- REQUIRED_FUNCTION(ERR_pop_to_mark) \ + FALLBACK_FUNCTION(ERR_put_error) \ + REQUIRED_FUNCTION(ERR_reason_error_string) \ +- REQUIRED_FUNCTION(ERR_set_mark) \ + LIGHTUP_FUNCTION(ERR_set_debug) \ + LIGHTUP_FUNCTION(ERR_set_error) \ + REQUIRED_FUNCTION(EVP_aes_128_cbc) \ +@@ -471,7 +469,6 @@ extern bool g_libSslUses32BitTime; + REQUIRED_FUNCTION(EVP_PKCS82PKEY) \ + REQUIRED_FUNCTION(EVP_PKEY2PKCS8) \ + REQUIRED_FUNCTION(EVP_PKEY_CTX_ctrl) \ +- REQUIRED_FUNCTION(EVP_PKEY_CTX_ctrl_str) \ + REQUIRED_FUNCTION(EVP_PKEY_CTX_free) \ + REQUIRED_FUNCTION(EVP_PKEY_CTX_get0_pkey) \ + REQUIRED_FUNCTION(EVP_PKEY_CTX_new) \ +@@ -953,10 +950,8 @@ extern TYPEOF(OPENSSL_gmtime)* OPENSSL_gmtime_ptr; + #define ERR_peek_error_line ERR_peek_error_line_ptr + #define ERR_peek_last_error ERR_peek_last_error_ptr + #define ERR_put_error ERR_put_error_ptr +-#define ERR_pop_to_mark ERR_pop_to_mark_ptr + #define ERR_reason_error_string ERR_reason_error_string_ptr + #define ERR_set_debug ERR_set_debug_ptr +-#define ERR_set_mark ERR_set_mark_ptr + #define ERR_set_error ERR_set_error_ptr + #define EVP_aes_128_cbc EVP_aes_128_cbc_ptr + #define EVP_aes_128_cfb8 EVP_aes_128_cfb8_ptr +@@ -1026,7 +1021,6 @@ extern TYPEOF(OPENSSL_gmtime)* OPENSSL_gmtime_ptr; + #define EVP_PKCS82PKEY EVP_PKCS82PKEY_ptr + #define EVP_PKEY2PKCS8 EVP_PKEY2PKCS8_ptr + #define EVP_PKEY_CTX_ctrl EVP_PKEY_CTX_ctrl_ptr +-#define EVP_PKEY_CTX_ctrl_str EVP_PKEY_CTX_ctrl_str_ptr + #define EVP_PKEY_CTX_free EVP_PKEY_CTX_free_ptr + #define EVP_PKEY_CTX_get0_pkey EVP_PKEY_CTX_get0_pkey_ptr + #define EVP_PKEY_CTX_new EVP_PKEY_CTX_new_ptr +diff --git a/src/runtime/src/native/libs/System.Security.Cryptography.Native/pal_evp_pkey_rsa.c b/src/runtime/src/native/libs/System.Security.Cryptography.Native/pal_evp_pkey_rsa.c +index a6040b939..34cf0087a 100644 +--- a/src/runtime/src/native/libs/System.Security.Cryptography.Native/pal_evp_pkey_rsa.c ++++ b/src/runtime/src/native/libs/System.Security.Cryptography.Native/pal_evp_pkey_rsa.c +@@ -69,19 +69,6 @@ static bool ConfigureEncryption(EVP_PKEY_CTX* ctx, RsaPaddingMode padding, const + { + return false; + } +- +- // OpenSSL 3.2 introduced a change where PKCS#1 RSA decryption does not fail for invalid padding. +- // If the padding is invalid, the decryption operation returns random data. +- // See https://github.com/openssl/openssl/pull/13817 for background. +- // Some Linux distributions backported this change to previous versions of OpenSSL. +- // Here we do a best-effort to set a flag to revert the behavior to failing if the padding is invalid. +- ERR_set_mark(); +- +- EVP_PKEY_CTX_ctrl_str(ctx, "rsa_pkcs1_implicit_rejection", "0"); +- +- // Undo any changes to the error queue that may have occurred while configuring implicit rejection if the +- // current version does not support implicit rejection. +- ERR_pop_to_mark(); + } + else + { +-- +2.53.0 + diff --git a/sources b/sources new file mode 100644 index 0000000..a7e1e34 --- /dev/null +++ b/sources @@ -0,0 +1,6 @@ +SHA512 (dotnet-11.0.100-preview.6.26359.118.tar.gz) = f04b2da3e504a705c637913c2b8d3114a6c860178ff79af16d73c8412b43790f8afa5ef4e8d430511e64f1f7d580b147dcf80437ff07d9a1dee2bacb87eb8354 +SHA512 (dotnet-11.0.100-preview.6.26359.118.tar.gz.sig) = fa464b98338224ae67cf141d8aa4177db4216bdf0bc705777ae64f33b6d268e82f45b004fafdb1e304d39f337d020fa4173cf184a65980caad20b3b8551bd09e +SHA512 (dotnet-prebuilts-11.0.100-preview.5.26302.115-arm64.tar.gz) = b34cbed524f2c8745f3f542d811a9cce48d5166a05ba5f8286c4a50b316800076fdbb53928c2f095240db7f872bedd232f69ffadc7858bc537720d1731982c72 +SHA512 (dotnet-prebuilts-11.0.100-preview.5.26302.115-x64.tar.gz) = 8e2c05033d7a67fa37bcd2c33c8e4f74850c53972b928e583ab3497a708357eb553806ad9af5286c5edf1206581f8955ee3267856c1e7607a2a6e6d0fefb4b89 +SHA512 (dotnet-prebuilts-11.0.100-preview.6.26366.102-ppc64le.tar.gz) = 7725b10dbf249d97d2fe15d26f13ef7aaf727668fb64fa07ee4ea9c9ebb2e6cf85af8ae87f80ea82346e0f72e7d3f8b84628d24cdd7e13efe97ac125acc77a54 +SHA512 (dotnet-prebuilts-11.0.100-preview.6.26366.102-s390x.tar.gz) = aafdd21d602c80eb66138bb62bb503eb40af4312d6c3774eb8d08d4b5af067d03a417cc7904ddbd2911650aebf75f629671e409a6baee97e5c8d985076c78372 diff --git a/tests/ci.fmf b/tests/ci.fmf new file mode 100644 index 0000000..497b0c3 --- /dev/null +++ b/tests/ci.fmf @@ -0,0 +1,45 @@ +summary: Basic smoke test +provision: + hardware: + disk: + - size: ">= 20 GiB" + memory: ">= 5120 MiB" +prepare: + how: install + package: + - aspnetcore-runtime-11.0 + - bash-completion + - bc + - binutils + - dotnet-runtime-11.0 + - dotnet-sdk-11.0 + - expect + - file + - findutils + - gcc-c++ + - git + - jq + - libstdc++-devel + - lldb + - npm + - postgresql-odbc + - postgresql-server + - procps-ng + - python3 + - strace + - util-linux + - wget + - which + - zlib-devel +execute: + script: + - dotnet --info + - wget --no-verbose https://github.com/redhat-developer/dotnet-bunny/releases/latest/download/turkey.tar.gz + - tar xf turkey.tar.gz + - dotnet turkey/Turkey.dll --version + - git clone "https://github.com/redhat-developer/dotnet-regular-tests.git" + - dotnet turkey/Turkey.dll -l="$TMT_TEST_DATA" dotnet-regular-tests --timeout=1200 + - dnf remove -yq 'dotnet*' + - set -x; if command -v dotnet ; then exit 1; fi + - set -x; if [ -d /usr/lib64/dotnet ]; then exit 1; fi + - set -x; if man dotnet; then exit 1; fi