# 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 %global sdk_version 2.1.202 %global runtime_version 2.0.9 %global template_package microsoft.dotnet.web.projecttemplates.2.0.1.0.0-beta2-20170810-304 Name: dotnet Version: %{runtime_version} Release: 1%{?dist} Summary: .NET Core CLI tools and runtime License: MIT and ASL 2.0 and BSD URL: https://github.com/dotnet/ Source0: https://omajid.fedorapeople.org/dotnet/dotnet-%{runtime_version}.tar.gz Source1: patch-nuget-packages.sh Source2: check-debug-symbols.py Patch0: missing-exec.patch # https://github.com/dotnet/coreclr/issues/13009 # https://github.com/dotnet/core-setup/pull/3129 Patch1: f27-libc.patch Patch2: corefx-not-portable.patch Patch3: do-not-strip-debuginfo.patch Patch4: coreclr-clang5.patch Patch5: corefx-less-warnings.patch Patch6: coreclr-clang6.patch Patch7: corefx-clang6.patch Patch8: corefx-clang5-compat.patch Patch100: templates-publish-without-manifest.patch ExclusiveArch: x86_64 BuildRequires: clang BuildRequires: cmake BuildRequires: dos2unix BuildRequires: hostname BuildRequires: krb5-devel BuildRequires: libcurl-devel BuildRequires: libicu-devel BuildRequires: libunwind-devel BuildRequires: libuuid-devel BuildRequires: lldb-devel BuildRequires: llvm BuildRequires: lttng-ust-devel BuildRequires: python BuildRequires: zlib-devel %if 0%{fedora} >= 26 BuildRequires: compat-openssl10-devel %else BuildRequires: openssl-devel %endif Requires: %{name}-sdk-2.1%{?_isa} = %{version}-%{release} %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 host Summary: .NET command line launcher %description 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 runtime-2.0 # Theoretically any version of the host should work Requires: %{name}-host # libicu is dlopen()ed Requires: libicu Summary: NET Core 2.0 runtime %description runtime-2.0 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 sdk-2.1.2xx Requires: %{name}-runtime-2.0%{?_isa} Provides: %{name}-sdk-2.0 = %{version}-%{release} Obsoletes: %{name}-sdk-2.0 <= 2.0.0-5 Summary: .NET Core 2.1 Software Development Kit %description sdk-2.1.2xx 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 %{name}-%{version} %patch0 -p1 %patch1 -p1 %patch2 -p1 %patch3 -p1 %patch4 -p1 %patch5 -p1 %patch6 -p1 %patch7 -p1 %patch8 -p1 # The templates are "pre-built" into a nuget package. Lets extract, patch, and # compile the nuget package back into it. mkdir templates pushd templates unzip ../prebuilt/nuget-packages/%{template_package}.nupkg rm ../prebuilt/nuget-packages/%{template_package}.nupkg find -iname '*.csproj' -exec dos2unix {} \; find -iname '*.fsproj' -exec dos2unix {} \; %patch100 -p1 zip -r ../prebuilt/nuget-packages/%{template_package}.nupkg . popd %if 0%{?fedora} > 0 # Add current versions of Fedora as a valid OS sed -i -e 's|fedora.24|fedora.%{fedora}|g' build.proj sed -i -e 's|fedora.24|fedora.%{fedora}|g' src/coreclr/build.sh sed -i -e 's|fedora.23|fedora.%{fedora}|g' src/corefx/pkg/Microsoft.NETCore.Platforms/runtime.json sed -i -e 's|fedora.23|fedora.%{fedora}|g' src/core-setup/src/pkg/projects/Microsoft.NETCore.App/src/Microsoft.NETCore.App.depproj sed -i -e 's|fedora.23|fedora.%{fedora}|g' Tools/optional-tool-runtime/optional.json sed -i -e 's|rhel.7-x64|rhel.7-x64;fedora.%{fedora}|g' Tools/Packaging.targets find Tools/ -iname 'runtime.json' -exec sed -i -e 's|fedora.23|fedora.%{fedora}|g' {} \; # Replace RHEL rid with Fedora rid sed -i -e 's|rhel.7.4-|fedora.%{fedora}-|g' targets/core-setup.props sed -i -e 's|rhel.7.4-|fedora.%{fedora}-|g' targets/cli.props sed -i -e 's|rhel.7.4-|fedora.%{fedora}-|g' src/cli/tools/CrossGen.Dependencies/CrossGen.Dependencies.csproj sed -i -e '/DOTNET_RUNTIME_ID=rhel.7.4-x64/d' targets/roslyn.props sed -i -e 's|:v=normal|:v=diag|g' src/corefx/config.json # Fix RIDs in nuget packages cp %{SOURCE1} patch-nuget-packages.sh chmod +x patch-nuget-packages.sh ./patch-nuget-packages.sh %{fedora} %endif %build # crazy insane hack. the first build fails but a rebuild works... ./build.sh /v:diag || ./build.sh /v:diag %install install -d -m 0755 %{buildroot}%{_libdir}/%{name}/ ls bin/x64/Release tar xf bin/x64/Release/dotnet-sdk-%{sdk_version}-*.tar.gz -C %{buildroot}%{_libdir}/%{name}/ # Fix permissions on files find %{buildroot}%{_libdir}/%{name}/ -type f -name '*.props' -exec chmod -x {} \; find %{buildroot}%{_libdir}/%{name}/ -type f -name '*.targets' -exec chmod -x {} \; find %{buildroot}%{_libdir}/%{name}/ -type f -name '*.dll' -exec chmod -x {} \; find %{buildroot}%{_libdir}/%{name}/ -type f -name '*.pubxml' -exec chmod -x {} \; # Test rm -rf %{buildroot}%{_libdir}/%{name}/dotnet rm -rf %{buildroot}%{_libdir}/%{name}/hostfxr rm -rf %{buildroot}%{_libdir}/%{name}/host rm -rf %{buildroot}%{_libdir}/%{name}/LICENSE.txt rm -rf %{buildroot}%{_libdir}/%{name}/ThirdPartyNotices.txt # Hack. We dont build net46 at the moment as part of source-build, so make it a # symlink for it. This lets OmniSharp start, at least. See # https://github.com/dotnet/source-build/issues/125 for more details. pushd %{buildroot}%{_libdir}/%{name}/sdk/%{sdk_version}/Sdks/Microsoft.NET.Sdk/tools ln -s netcoreapp1.0 net46 popd # 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..." %{SOURCE2} -v %{buildroot}%{_libdir}/%{name}/ # Do not produce the main package #%%files # Do not produce the host package # #%files host %files runtime-2.0 %dir %{_libdir}/%{name} %dir %{_libdir}/%{name}/shared %dir %{_libdir}/%{name}/shared/Microsoft.NETCore.App %{_libdir}/%{name}/shared/Microsoft.NETCore.App/%{runtime_version} %files sdk-2.1.2xx %dir %{_libdir}/%{name}/sdk %{_libdir}/%{name}/sdk/%{sdk_version} %changelog * 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.