# Avoid provides/requires from private libraries %global privlibs libhostfxr %global privlibs %{privlibs}|libclrjit %global privlibs %{privlibs}|libcoreclr %global privlibs %{privlibs}|libcoreclrtraceptprovider %global privlibs %{privlibs}|libdbgshim %global privlibs %{privlibs}|libhostpolicy %global privlibs %{privlibs}|libmscordaccore %global privlibs %{privlibs}|libmscordbi %global privlibs %{privlibs}|libsos %global privlibs %{privlibs}|libsosplugin %global __provides_exclude ^(%{privlibs})\\.so %global __requires_exclude ^(%{privlibs})\\.so # 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} # Filter flags not supported by clang/dotnet: # -fcf-protection is not supported by clang # -fstack-clash-protection is not supported by clang # -specs= is not supported by clang %global dotnet_cflags %(echo %optflags | sed -e 's/-fcf-protection//' | sed -e 's/-fstack-clash-protection//' | sed -re 's/-specs=[^ ]*//g') %global dotnet_ldflags %(echo %{__global_ldflags} | sed -re 's/-specs=[^ ]*//g') %if 0%{?fedora} %global use_bundled_libunwind 0 %else %global use_bundled_libunwind 1 %endif %global simple_name dotnet %global host_version 2.1.30 %global sdk_version 2.1.526 %global runtime_version 2.1.30 Name: %{simple_name}2.1 Version: %{sdk_version} Release: 1%{?dist} Summary: .NET Core CLI tools and runtime License: MIT and ASL 2.0 and BSD URL: https://github.com/dotnet/ # The source is generated on a Fedora box via: # ./build-dotnet-tarball dotnet-v%%{runtime_version} Source0: dotnet-v%{sdk_version}-SDK.tar.gz Source1: check-debug-symbols.py Source2: dotnet.sh Patch100: corefx-32956-alpn.patch Patch101: corefx-optflags-support.patch Patch200: coreclr-pie.patch Patch300: core-setup-4510-commit-id.patch Patch301: core-setup-pie.patch Patch400: cli-telemetry-optout.patch ExclusiveArch: x86_64 BuildRequires: clang BuildRequires: cmake BuildRequires: git BuildRequires: glibc-langpack-en BuildRequires: hostname BuildRequires: krb5-devel BuildRequires: libcurl-devel BuildRequires: libicu-devel %if ! %{use_bundled_libunwind} BuildRequires: libunwind-devel %endif BuildRequires: libuuid-devel BuildRequires: lldb-devel BuildRequires: llvm BuildRequires: lttng-ust-devel BuildRequires: openssl-devel BuildRequires: python3 BuildRequires: strace BuildRequires: systemtap-sdt-devel BuildRequires: zlib-devel %if %{use_bundled_libunwind} Provides: bundled(libunwind) = 1.3 %endif %description .NET Core 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 Core contains a runtime conforming to .NET Standards a set of framework libraries, an SDK containing compilers and a 'dotnet' application to drive everything. %package -n %{simple_name} Version: %{sdk_version} Summary: .NET CLI tools and runtime Requires: %{simple_name}-sdk-2.1%{?_isa} >= %{sdk_version}-%{release} %description -n %{simple_name} .NET Core 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 Core contains a runtime conforming to .NET Standards a set of framework libraries, an SDK containing compilers and a 'dotnet' application to drive everything. %package -n %{simple_name}-host Version: %{host_version} Summary: .NET command line launcher %description -n %{simple_name}-host The .NET Core host is a command line program that runs a standalone .NET core application or launches the SDK. .NET Core 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 %{simple_name}-host-fxr-2.1 Version: %{host_version} Summary: .NET Core 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 Core Requires: %{simple_name}-host%{?_isa} >= %{host_version}-%{release} %description -n %{simple_name}-host-fxr-2.1 The .NET Core host resolver contains the logic to resolve and select the right version of the .NET Core SDK or runtime to use. .NET Core 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 %{simple_name}-runtime-2.1 Version: %{runtime_version} Summary: NET Core 2.1 runtime Requires: %{simple_name}-host-fxr-2.1%{?_isa} >= %{host_version}-%{release} # libicu is dlopen()ed Requires: libicu %description -n %{simple_name}-runtime-2.1 The .NET Core runtime contains everything needed to run .NET Core applications. It includes a high performance Virtual Machine as well as the framework libraries used by .NET Core applications. .NET Core 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 %{simple_name}-sdk-2.1 Version: %{sdk_version} Summary: .NET Core 2.1 Software Development Kit Requires: %{simple_name}-sdk-2.1.5xx%{?_isa} >= %{sdk_version}-%{release} %description -n %{simple_name}-sdk-2.1 The .NET Core SDK is a collection of command line applications to create, build, publish and run .NET Core applications. .NET Core 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 %{simple_name}-sdk-2.1.5xx Version: %{sdk_version} Summary: .NET Core 2.1.5xx Software Development Kit Requires: %{simple_name}-runtime-2.1%{?_isa} >= %{runtime_version}-%{release} %description -n %{simple_name}-sdk-2.1.5xx The .NET Core SDK is a collection of command line applications to create, build, publish and run .NET Core applications. .NET Core 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. %prep %setup -q -n %{simple_name}-v%{sdk_version}-SDK # Fix bad hardcoded path in build sed -i 's|/usr/share/dotnet|%{_libdir}/%{simple_name}|' src/core-setup/src/corehost/common/pal.unix.cpp %if %{use_bundled_libunwind} # Use bundled libunwind sed -i 's|-DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE|-DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=FALSE|' repos/coreclr.proj %endif # Disable warnings sed -i 's|skiptests|skiptests ignorewarnings|' repos/coreclr.proj pushd src/corefx %patch100 -p1 %patch101 -p1 popd pushd src/coreclr %patch200 -p1 popd pushd src/core-setup %patch300 -p1 %patch301 -p1 popd pushd src/cli %patch400 -p1 popd %build export CFLAGS="%{dotnet_cflags}" export CXXFLAGS="%{dotnet_cflags}" export LDFLAGS="%{dotnet_ldflags}" VERBOSE=1 ./build.sh \ /v:n \ /p:MinimalConsoleLogOutput=false \ %install install -d -m 0755 %{buildroot}%{_libdir}/%{simple_name}/ ls bin/x64/Release tar xf bin/x64/Release/dotnet-sdk-%{sdk_version}-*.tar.gz -C %{buildroot}%{_libdir}/%{simple_name}/ # Fix permissions on files find %{buildroot}%{_libdir}/%{simple_name}/ -type f -name '*.props' -exec chmod -x {} \; find %{buildroot}%{_libdir}/%{simple_name}/ -type f -name '*.targets' -exec chmod -x {} \; find %{buildroot}%{_libdir}/%{simple_name}/ -type f -name '*.dll' -exec chmod -x {} \; find %{buildroot}%{_libdir}/%{simple_name}/ -type f -name '*.pubxml' -exec chmod -x {} \; # Add ~/.dotnet/tools to $PATH for all users install -dm 0755 %{buildroot}%{_sysconfdir}/profile.d/ install %{SOURCE2} %{buildroot}%{_sysconfdir}/profile.d/ install -dm 755 %{buildroot}/%{_datadir}/bash-completion/completions # dynamic completion needs the file to be named the same as the base command install src/cli/scripts/register-completions.bash %{buildroot}/%{_datadir}/bash-completion/completions/dotnet # TODO: the zsh completion script needs to be ported to use #compdef #install -dm 755 %%{buildroot}/%%{_datadir}/zsh/site-functions #install src/cli/scripts/register-completions.zsh %%{buildroot}/%%{_datadir}/zsh/site-functions/_dotnet install -d -m 0755 %{buildroot}%{_bindir} ln -s %{_libdir}/%{simple_name}/dotnet %{buildroot}%{_bindir}/ install -d -m 0755 %{buildroot}%{_mandir}/man1/ find -iname 'dotnet*.1' -type f -exec cp {} %{buildroot}%{_mandir}/man1/ \; # 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..." %{SOURCE1} -v %{buildroot}%{_libdir}/%{simple_name}/ %check %{buildroot}%{_libdir}/%{simple_name}/dotnet --info %files -n %{simple_name} # empty package useful for dependencies %files -n %{simple_name}-host %dir %{_libdir}/%{simple_name} %{_libdir}/%{simple_name}/dotnet %dir %{_libdir}/%{simple_name}/host %dir %{_libdir}/%{simple_name}/host/fxr %{_bindir}/dotnet %license %{_libdir}/%{simple_name}/LICENSE.txt %license %{_libdir}/%{simple_name}/ThirdPartyNotices.txt %doc %{_mandir}/man1/dotnet*.1.gz %{_sysconfdir}/profile.d/dotnet.sh %dir %{_datadir}/bash-completion %dir %{_datadir}/bash-completion/completions %{_datadir}/bash-completion/completions/dotnet %files -n %{simple_name}-host-fxr-2.1 %dir %{_libdir}/%{simple_name}/host/fxr %{_libdir}/%{simple_name}/host/fxr/%{host_version} %files -n %{simple_name}-runtime-2.1 %dir %{_libdir}/%{simple_name}/shared %dir %{_libdir}/%{simple_name}/shared/Microsoft.NETCore.App %{_libdir}/%{simple_name}/shared/Microsoft.NETCore.App/%{runtime_version} %files -n %{simple_name}-sdk-2.1 # empty package useful for dependencies %files -n %{simple_name}-sdk-2.1.5xx %dir %{_libdir}/%{simple_name}/sdk %{_libdir}/%{simple_name}/sdk/%{sdk_version} %changelog * Fri Aug 27 2021 Omair Majid - 2.1.526-1 - Update to .NET Core SDK 2.1.526 and Runtime 2.1.30 * Thu Mar 18 2021 Omair majid - 2.1.522-1 - Update to .NET Core SDK 2.1.522 and Runtime 2.1.26 * Thu Feb 25 2021 Omair Majid - 2.1.521-2 - compat-openssl10 is no longer needed as a dep * Thu Feb 25 2021 Omair Majid - 2.1.521-1 - Update to .NET Core SDK 2.1.521 and Runtime 2.1.25 * Thu Jan 21 2021 Omair Majid - 2.1.520-1 - Update to .NET Core SDK 2.1.520 and Runtime 2.1.24 * Wed Jun 10 2020 Omair Majid - 2.1.515-1 - Update to .NET Core Runtime 2.1.19 and SDK 2.1.515 * Fri Apr 17 2020 Omair Majid - 2.1.513-1 - Update to .NET Core Runtime 2.1.17 and SDK 2.1.513 * Wed Jan 22 2020 Omair Majid - 2.1.511-1 - Update to .NET Core Runtime 2.1.15 and SDK 2.1.511 * Tue Sep 10 2019 Omair Majid - 2.1.509-1 - Update to .NET Core Runtime 2.1.13 and SDK 2.1.509 * Thu Jul 11 2019 Omair Majid - 2.1.508-1 - Update to .NET Core Runtime 2.1.12 and SDK 2.1.508 * Mon Jun 03 2019 Omair Majid - 2.1.507-2 - Link against GNU strerror_r varaint correctly * Thu May 16 2019 Omair Majid - 2.1.507-1 - Update to .NET Core Runtime 2.1.11 and SDK 2.1.507 * Fri Apr 12 2019 Omair Majid - 2.1.506-1 - Update to .NET Core Runtime 2.1.10 and SDK 2.1.506 * Tue Mar 26 2019 Omair Majid - 2.1.505-1 - Update to .NET Core Runtime 2.1.9 and SDK 2.1.505 * Tue Feb 19 2019 Omair Majid - 2.1.504-1 - Update to .NET Core Runtime 2.1.8 and SDK 2.1.504 * Wed Feb 13 2019 Omair Majid - 2.1.503-4 - Rename spec file to dotnet2.1 - Link executibles with -pie - Build using python3 - Add RHEL 8 runtime ids - Conditionalize build to support bundled/system libunwind * Mon Jan 21 2019 Omair Majid - 2.1.503-4 - Backport support for OpenSSL 1.1 * Sat Jan 19 2019 Omair Majid - 2.1.503-3 - Update to .NET Core Runtime 2.1.7 and SDK 2.1.503 * Wed Dec 12 2018 Omair Majid - 2.1.500-3 - Fix CVE-2018-8416 * Thu Nov 22 2018 Omair Majid - 2.1.500-2 - Fix requires on subpackages * Tue Nov 13 2018 Omair Majid - 2.1.500-1 - Update to .NET Core Runtime 2.1.6 and SDK 2.1.500 * 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.