From 79d25f5b676594ea1d49e75d3c6e98f80da4bb4f Mon Sep 17 00:00:00 2001 From: Omair Majid Date: Feb 18 2019 16:41:36 +0000 Subject: Clean up and prepare for RHEL 8 compatiblity - Rename spec file to dotnet2.2 to meet Fedora guidelines: https://docs.fedoraproject.org/en-US/packaging-guidelines/Naming/#_multiple_packages_with_the_same_base_name This does not change the name of the binary packages. - Remove version-specific SDK subpackage (dotnet-sdk-2.1.1xx) - Link executibles with -pie: https://fedoraproject.org/wiki/Changes/Harden_All_Packages#Detailed_Harden_Flags_Description - Build using python3. See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3 - Add RHEL 8 runtime ids - Conditionalize build to support bundled/system libunwind - Do not error out build on prebuilt baseline issues --- diff --git a/core-setup-pie.patch b/core-setup-pie.patch new file mode 100644 index 0000000..f2ef5ac --- /dev/null +++ b/core-setup-pie.patch @@ -0,0 +1,11 @@ +--- a/src/corehost/cli/exe/exe.cmake ++++ b/src/corehost/cli/exe/exe.cmake +@@ -44,6 +44,8 @@ + + add_executable(${DOTNET_HOST_EXE_NAME} ${SOURCES} ${RESOURCES}) + ++SET_TARGET_PROPERTIES(${DOTNET_HOST_EXE_NAME} PROPERTIES LINK_FLAGS -pie) ++ + if(NOT WIN32) + disable_pax_mprotect(${DOTNET_HOST_EXE_NAME}) + endif() diff --git a/coreclr-build-python3.patch b/coreclr-build-python3.patch new file mode 100644 index 0000000..1090a12 --- /dev/null +++ b/coreclr-build-python3.patch @@ -0,0 +1,38 @@ +From 7e0608fee5cacbf5bf7d0c3886e2fcb1a9d10754 Mon Sep 17 00:00:00 2001 +From: Omair Majid +Date: Wed, 9 Jan 2019 12:28:48 -0500 +Subject: [PATCH] Support building with python3 on unix (#19356) + +The windows build scripts try finding python in order of python3, +python2 and then python. The unix build scripts dont. They just try +python2 variants and then fail. This change makes brings them closer +together by letting users build using only python3. +--- + build.sh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/build.sh b/build.sh +index a0b1742effb..14452ad5ac5 100755 +--- a/build.sh ++++ b/build.sh +@@ -7,9 +7,9 @@ export ghprbCommentBody= + + # resolve python-version to use + if [ "$PYTHON" == "" ] ; then +- if ! PYTHON=$(command -v python2.7 || command -v python2 || command -v python) ++ if ! PYTHON=$(command -v python3 || command -v python2 || command -v python) + then +- echo "Unable to locate build-dependency python2.x!" 1>&2 ++ echo "Unable to locate build-dependency python!" 1>&2 + exit 1 + fi + fi +@@ -17,7 +17,7 @@ fi + # useful in case of explicitly set option. + if ! command -v $PYTHON > /dev/null + then +- echo "Unable to locate build-dependency python2.x ($PYTHON)!" 1>&2 ++ echo "Unable to locate build-dependency python ($PYTHON)!" 1>&2 + exit 1 + fi + diff --git a/coreclr-cmake-python3.patch b/coreclr-cmake-python3.patch new file mode 100644 index 0000000..285cdc4 --- /dev/null +++ b/coreclr-cmake-python3.patch @@ -0,0 +1,26 @@ +From e7c6f87f54be723724a4c996d815d59b515b01a6 Mon Sep 17 00:00:00 2001 +From: Omair Majid +Date: Thu, 31 Jan 2019 16:09:35 -0500 +Subject: [PATCH] Update python lookup in CMakeLists.txt to match + build.(sh|cmd) (#22145) + +Use the same logic that's used in build.sh/build.cmd to lookup python: +first search for `python3`, then fall back to `python2` and finally to +`python`. +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 82c19a9cbaa..31b814f118d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -37,7 +37,7 @@ OPTION(CLR_CMAKE_ENABLE_CODE_COVERAGE "Enable code coverage" OFF) + OPTION(CLR_CMAKE_WARNINGS_ARE_ERRORS "Warnings are errors" ON) + + # Ensure that python is present +-find_program(PYTHON NAMES python2.7 python2 python) ++find_program(PYTHON NAMES python3 python2 python) + if (PYTHON STREQUAL "PYTHON-NOTFOUND") + message(FATAL_ERROR "PYTHON not found: Please install Python 2.7.9 or later from https://www.python.org/downloads/") + endif() diff --git a/coreclr-mscorlib.patch b/coreclr-mscorlib.patch new file mode 100644 index 0000000..ca59e77 --- /dev/null +++ b/coreclr-mscorlib.patch @@ -0,0 +1,40 @@ +From 5164e76ce01fc36833a7f5e6fb7b1ec2f55c2262 Mon Sep 17 00:00:00 2001 +From: Omair Majid +Date: Wed, 1 Aug 2018 12:02:53 -0400 +Subject: [PATCH] Use the identified python when building + System.Private.CoreLib (#19043) + +build.sh and build.cmd contain logic to identify a working version of +python to use. System.Private.CoreLib ignores that and directly invokes +'python', which may not work, or even execute a different program. +--- + build.sh | 2 ++ + src/System.Private.CoreLib/System.Private.CoreLib.csproj | 2 +- + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/build.sh b/build.sh +index 091d6227caf..4002f2744c2 100755 +--- a/build.sh ++++ b/build.sh +@@ -22,6 +22,8 @@ then + exit 1 + fi + ++export PYTHON ++ + usage() + { + echo "Usage: $0 [BuildArch] [BuildType] [-verbose] [-coverage] [-cross] [-clangx.y] [-ninja] [-configureonly] [-skipconfigure] [-skipnative] [-skipmscorlib] [-skiptests] [-stripsymbols] [-ignorewarnings] [-cmakeargs] [-bindir]" +diff --git a/src/mscorlib/System.Private.CoreLib.csproj b/src/mscorlib/System.Private.CoreLib.csproj +index 9a2fc681703..0a02d3cffdf 100644 +--- a/src/mscorlib/System.Private.CoreLib.csproj ++++ b/src/mscorlib/System.Private.CoreLib.csproj +@@ -543,7 +543,7 @@ + + $(IntermediateOutputPath)..\cmake.definitions + +- ++ + + + true diff --git a/coreclr-pie.patch b/coreclr-pie.patch new file mode 100644 index 0000000..e2599a7 --- /dev/null +++ b/coreclr-pie.patch @@ -0,0 +1,11 @@ +--- a/src/debug/createdump/CMakeLists.txt ++++ b/src/debug/createdump/CMakeLists.txt +@@ -38,6 +38,8 @@ + + add_dependencies(createdump pal_redefines_file) + ++SET_TARGET_PROPERTIES(createdump PROPERTIES LINK_FLAGS -pie) ++ + target_link_libraries(createdump + createdump_lib + # share the PAL/corguids in the dac module diff --git a/corefx-rhel-runtime-ids.patch b/corefx-rhel-runtime-ids.patch new file mode 100644 index 0000000..9895dcd --- /dev/null +++ b/corefx-rhel-runtime-ids.patch @@ -0,0 +1,206 @@ +diff --git a/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json b/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json +index 7272b5de10..99fd8de923 100644 +--- a/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json ++++ b/pkg/Microsoft.NETCore.Platforms/runtime.compatibility.json +@@ -4923,6 +4923,123 @@ + "any", + "base" + ], ++ "rhel.8": [ ++ "rhel.8", ++ "rhel", ++ "linux", ++ "unix", ++ "any", ++ "base" ++ ], ++ "rhel.8-corert": [ ++ "rhel.8-corert", ++ "rhel.8", ++ "rhel-corert", ++ "rhel", ++ "linux-corert", ++ "linux", ++ "unix-corert", ++ "unix", ++ "corert", ++ "any", ++ "base" ++ ], ++ "rhel.8-x64": [ ++ "rhel.8-x64", ++ "rhel.8", ++ "rhel-x64", ++ "rhel", ++ "linux-x64", ++ "linux", ++ "unix-x64", ++ "unix", ++ "any", ++ "base" ++ ], ++ "rhel.8-x64-corert": [ ++ "rhel.8-x64-corert", ++ "rhel.8-corert", ++ "rhel.8-x64", ++ "rhel.8", ++ "rhel-x64-corert", ++ "rhel-corert", ++ "rhel-x64", ++ "rhel", ++ "linux-x64-corert", ++ "linux-corert", ++ "linux-x64", ++ "linux", ++ "unix-x64-corert", ++ "unix-corert", ++ "unix-x64", ++ "unix", ++ "corert", ++ "any", ++ "base" ++ ], ++ "rhel.8.0": [ ++ "rhel.8.0", ++ "rhel.8", ++ "rhel", ++ "linux", ++ "unix", ++ "any", ++ "base" ++ ], ++ "rhel.8.0-corert": [ ++ "rhel.8.0-corert", ++ "rhel.8.0", ++ "rhel.8-corert", ++ "rhel.8", ++ "rhel-corert", ++ "rhel", ++ "linux-corert", ++ "linux", ++ "unix-corert", ++ "unix", ++ "corert", ++ "any", ++ "base" ++ ], ++ "rhel.8.0-x64": [ ++ "rhel.8.0-x64", ++ "rhel.8.0", ++ "rhel.8-x64", ++ "rhel.8", ++ "rhel-x64", ++ "rhel", ++ "linux-x64", ++ "linux", ++ "unix-x64", ++ "unix", ++ "any", ++ "base" ++ ], ++ "rhel.8.0-x64-corert": [ ++ "rhel.8.0-x64-corert", ++ "rhel.8.0-corert", ++ "rhel.8.0-x64", ++ "rhel.8.0", ++ "rhel.8-x64-corert", ++ "rhel.8-corert", ++ "rhel.8-x64", ++ "rhel.8", ++ "rhel-x64-corert", ++ "rhel-corert", ++ "rhel-x64", ++ "rhel", ++ "linux-x64-corert", ++ "linux-corert", ++ "linux-x64", ++ "linux", ++ "unix-x64-corert", ++ "unix-corert", ++ "unix-x64", ++ "unix", ++ "corert", ++ "any", ++ "base" ++ ], + "sles": [ + "sles", + "linux", +diff --git a/pkg/Microsoft.NETCore.Platforms/runtime.json b/pkg/Microsoft.NETCore.Platforms/runtime.json +index e57332c62c..fc56341c7e 100644 +--- a/pkg/Microsoft.NETCore.Platforms/runtime.json ++++ b/pkg/Microsoft.NETCore.Platforms/runtime.json +@@ -1800,6 +1800,56 @@ + "rhel.7.5-x64-corert" + ] + }, ++ "rhel.8": { ++ "#import": [ ++ "rhel" ++ ] ++ }, ++ "rhel.8-corert": { ++ "#import": [ ++ "rhel.8", ++ "rhel-corert" ++ ] ++ }, ++ "rhel.8-x64": { ++ "#import": [ ++ "rhel.8", ++ "rhel-x64" ++ ] ++ }, ++ "rhel.8-x64-corert": { ++ "#import": [ ++ "rhel.8-corert", ++ "rhel.8-x64", ++ "rhel.8", ++ "rhel-x64-corert" ++ ] ++ }, ++ "rhel.8.0": { ++ "#import": [ ++ "rhel.8" ++ ] ++ }, ++ "rhel.8.0-corert": { ++ "#import": [ ++ "rhel.8.0", ++ "rhel.8-corert" ++ ] ++ }, ++ "rhel.8.0-x64": { ++ "#import": [ ++ "rhel.8.0", ++ "rhel.8-x64" ++ ] ++ }, ++ "rhel.8.0-x64-corert": { ++ "#import": [ ++ "rhel.8.0-corert", ++ "rhel.8.0-x64", ++ "rhel.8.0", ++ "rhel.8-x64-corert" ++ ] ++ }, + "sles": { + "#import": [ + "linux" +diff --git a/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props b/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props +index cc93f8bf91..21f6109824 100644 +--- a/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props ++++ b/pkg/Microsoft.NETCore.Platforms/runtimeGroups.props +@@ -103,6 +103,12 @@ + 7;7.0;7.1;7.2;7.3;7.4;7.5;7.6 + + ++ ++ linux ++ x64 ++ 8;8.0 ++ ++ + + linux + x64 diff --git a/dotnet.spec b/dotnet.spec deleted file mode 100644 index 6954edd..0000000 --- a/dotnet.spec +++ /dev/null @@ -1,412 +0,0 @@ -# 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 - -# Filter flags not supported by clang/dotnet: -# -fcf-protection is not supported by clang -# -fstack-clask-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') - -%global host_version 2.2.1 -%global sdk_version 2.2.103 -%global runtime_version 2.2.1 - -Name: dotnet -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: -# - git clone https://github.com/dotnet/source-build -# - git checkout v%%{runtime_version} -# - (optional: set environment variables + tweak sources to build) -# - ./build-source-tarball.sh dotnet-%%{sdk_version} -# - tar cvzf dotnet-%%{runtime_version}.tar.gz dotnet-%%{runtime_version} - -Source0: dotnet-v%{sdk_version}-SDK-ga.tar.gz -Source1: check-debug-symbols.py -Source2: dotnet.sh - -# This is https://github.com/dotnet/corefx/pull/34443 -Patch1: 0001-NetFX-compatibility-fixes-for-X500DistinguishedName.patch -Patch2: 0002-Drop-pal_asn1_print-in-favor-of-the-managed-code.patch -Patch3: 0003-Add-hybrid-support-for-OpenSSL-1.0-and-1.1.patch -Patch4: 0004-Use-HMAC_CTX_free-instead-of-free-on-a-HMAC_CTX-3422.patch -Patch5: 0005-Prefer-OpenSSL-1.0.x-for-portable-builds.patch -Patch6: 0006-Check-for-the-specific-in-use-version-of-OpenSSL-whe.patch -Patch7: 0007-Relax-the-OpenSSL-error-checking-code.patch - -Patch10: corefx-optflags-support.patch -Patch11: corefx-32956-alpn.patch - -Patch300: core-setup-4510-commit-id.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 -BuildRequires: libunwind-devel -BuildRequires: libuuid-devel -BuildRequires: lldb-devel -BuildRequires: llvm -BuildRequires: lttng-ust-devel -BuildRequires: openssl-devel -BuildRequires: python -BuildRequires: strace -BuildRequires: zlib-devel -# Bootstrap SDK needs OpenSSL 1.0 to run, but we can build and then -# run with either OpenSSL 1.0 or 1.1 -%if 0%{fedora} >= 26 -BuildRequires: compat-openssl10 -%endif - -Requires: %{name}-sdk-2.2%{?_isa} >= %{sdk_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 - -Version: %{host_version} -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 host-fxr-2.2 - -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: %{name}-host%{?_isa} >= %{host_version}-%{release} - -%description host-fxr-2.2 -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 runtime-2.2 - -Version: %{runtime_version} -Summary: NET Core 2.2 runtime - -Requires: %{name}-host-fxr-2.2%{?_isa} >= %{host_version}-%{release} - -# libicu is dlopen()ed -Requires: libicu - -%description runtime-2.2 -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.2 - -Version: %{sdk_version} -Summary: .NET Core 2.2 Software Development Kit - -Requires: %{name}-sdk-2.2.1xx%{?_isa} >= %{sdk_version}-%{release} - -%description sdk-2.2 -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 sdk-2.2.1xx - -Version: %{sdk_version} -Summary: .NET Core 2.2.1xx Software Development Kit - -Requires: %{name}-runtime-2.2%{?_isa} >= %{runtime_version}-%{release} - -%description sdk-2.2.1xx -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}-v%{sdk_version}-SDK-ga - -# Fix bad hardcoded path in build -sed -i 's|/usr/share/dotnet|%{_libdir}/%{name}|' src/core-setup/src/corehost/common/pal.unix.cpp - -pushd src/corefx -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 - -%patch10 -p1 -%patch11 -p1 -popd - -pushd src/core-setup -%patch300 -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:diag \ - /p:MinimalConsoleLogOutput=false - -%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 {} \; - -# 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}/%{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}/%{name}/ - -%check -%{buildroot}%{_libdir}/%{name}/dotnet --info - -%files -# empty package useful for dependencies - -%files host -%dir %{_libdir}/%{name} -%{_libdir}/%{name}/dotnet -%dir %{_libdir}/%{name}/host -%dir %{_libdir}/%{name}/host/fxr -%{_bindir}/dotnet -%license %{_libdir}/%{name}/LICENSE.txt -%license %{_libdir}/%{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 host-fxr-2.2 -%dir %{_libdir}/%{name}/host/fxr -%{_libdir}/%{name}/host/fxr/%{host_version} - -%files runtime-2.2 -%dir %{_libdir}/%{name}/shared -%dir %{_libdir}/%{name}/shared/Microsoft.NETCore.App -%{_libdir}/%{name}/shared/Microsoft.NETCore.App/%{runtime_version} - -%files sdk-2.2 -# empty package useful for dependencies - -%files sdk-2.2.1xx -%dir %{_libdir}/%{name}/sdk -%{_libdir}/%{name}/sdk/%{sdk_version} - -%changelog -* Wed Jan 23 2019 Omair Majid - 2.2.103-1 -- Update to .NET Core Runtime 2.2.1 and SDK 2.2.103 -- Sync with the 2.1 RPM - -* 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/dotnet2.2.spec b/dotnet2.2.spec new file mode 100644 index 0000000..2b7190a --- /dev/null +++ b/dotnet2.2.spec @@ -0,0 +1,456 @@ +# 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 + +# Filter flags not supported by clang/dotnet: +# -fcf-protection is not supported by clang +# -fstack-clask-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.2.1 +%global sdk_version 2.2.103 +%global runtime_version 2.2.1 + +Name: %{simple_name}2.2 +Version: %{sdk_version} +Release: 2%{?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: +# - git clone https://github.com/dotnet/source-build +# - git checkout v%%{runtime_version} +# - (optional: set environment variables + tweak sources to build) +# - ./build-source-tarball.sh dotnet-%%{sdk_version} +# - tar cvzf dotnet-%%{runtime_version}.tar.gz dotnet-%%{runtime_version} + +Source0: dotnet-v%{sdk_version}-SDK-ga.tar.gz +Source1: check-debug-symbols.py +Source2: dotnet.sh + +# This is https://github.com/dotnet/corefx/pull/34443 +Patch1: 0001-NetFX-compatibility-fixes-for-X500DistinguishedName.patch +Patch2: 0002-Drop-pal_asn1_print-in-favor-of-the-managed-code.patch +Patch3: 0003-Add-hybrid-support-for-OpenSSL-1.0-and-1.1.patch +Patch4: 0004-Use-HMAC_CTX_free-instead-of-free-on-a-HMAC_CTX-3422.patch +Patch5: 0005-Prefer-OpenSSL-1.0.x-for-portable-builds.patch +Patch6: 0006-Check-for-the-specific-in-use-version-of-OpenSSL-whe.patch +Patch7: 0007-Relax-the-OpenSSL-error-checking-code.patch + +Patch10: corefx-optflags-support.patch +Patch11: corefx-32956-alpn.patch +Patch12: corefx-rhel-runtime-ids.patch + +Patch100: coreclr-build-python3.patch +Patch101: coreclr-cmake-python3.patch +Patch102: coreclr-mscorlib.patch +Patch103: 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 +# Bootstrap SDK needs OpenSSL 1.0 to run, but we can build and then +# run with either OpenSSL 1.0 or 1.1 +%if 0%{?fedora} >= 26 || 0%{?rhel} >= 8 +BuildRequires: compat-openssl10 +%endif +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: zlib-devel + +%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.2%{?_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.2 + +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.2 +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.2 + +Version: %{runtime_version} +Summary: NET Core 2.2 runtime + +Requires: %{simple_name}-host-fxr-2.2%{?_isa} >= %{host_version}-%{release} + +# libicu is dlopen()ed +Requires: libicu + +%description -n %{simple_name}-runtime-2.2 +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.2 + +Version: %{sdk_version} +Summary: .NET Core 2.2 Software Development Kit + +Provides: %{simple_name}-sdk-2.2.1xx = %{version}-%{release} +Obsoletes: %{simple_name}-sdk-2.2.1xx <= 2.2.103-4 + +%description -n %{simple_name}-sdk-2.2 +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 dotnet-v%{sdk_version}-SDK-ga + +# Fix bad hardcoded path in build +sed -i 's|/usr/share/dotnet|%{_libdir}/%{simple_name}|' src/core-setup/src/corehost/common/pal.unix.cpp + +pushd src/corefx +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 + +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +popd + +pushd src/coreclr +%patch100 -p1 +%patch101 -p1 +%patch102 -p1 +%patch103 -p1 +popd + +pushd src/core-setup +%patch300 -p1 +popd + +pushd src/cli +%patch400 -p1 +popd + +%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 -Werror +sed -i '/add_compile_options(-Werror)/d' src/coreclr/compileoptions.cmake + +%build +export CFLAGS="%{dotnet_cflags}" +export CXXFLAGS="%{dotnet_cflags}" +export LDFLAGS="%{dotnet_ldflags}" + +VERBOSE=1 ./build.sh \ + /v:n \ + /p:LogVerbosity=n \ + /p:MinimalConsoleLogOutput=false \ + /p:ContinueOnPrebuiltBaselineError=true + +%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.2 +%dir %{_libdir}/%{simple_name}/host/fxr +%{_libdir}/%{simple_name}/host/fxr/%{host_version} + +%files -n %{simple_name}-runtime-2.2 +%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.2 +%dir %{_libdir}/%{simple_name}/sdk +%{_libdir}/%{simple_name}/sdk/%{sdk_version} + +%changelog +* Mon Feb 11 2019 Omair Majid - 2.2.103-2 +- Rename spec file to dotnet2.2 to meet Fedora guidelines +- Link executibles with -pie +- Build using python3 +- Add RHEL 8 runtime ids +- Conditionalize build to support bundled/system libunwind +- Do not error out build on prebuilt baseline issues +- Remove version-specific SDK subpackage + +* Wed Jan 23 2019 Omair Majid - 2.2.103-1 +- Update to .NET Core Runtime 2.2.1 and SDK 2.2.103 +- Sync with the 2.1 RPM + +* 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. +