%{!?dotnet_buildtype: %define dotnet_buildtype Release} %define support_test 1 %define skipnative 0 %define skipmscorlib 0 %ifarch %{ix86} %define dotnet_buildtype Debug %endif %define dotnet_version 2.0.0 # git rev-parse --verify HEAD %define CORECLR_GIT_HASH 36f70fa4be4bd37d4d76d06dd2cc433ff46351bd Name: coreclr Version: 2.0.0.12082 Release: 0 Summary: Microsoft .NET Runtime, Coreclr Group: Development/Languages License: MIT URL: http://github.com/dotnet/coreclr Source0: %{name}-%{version}.tar.gz Source1000: downloaded_files.tar.gz Source1001: %{name}.manifest Source1002: libicu.tar.gz Source1003: dep_libs.tar.gz # Gbp-Ignore-Patches: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Patch0: 0001-Add-project.assets.json-files.patch Patch1: 0001-ARM-Linux-Support-unaligned-struct-read-write-11290.patch Patch2: 0002-x86-Linux-Thread-safe-UMThunkMarshInfo-RunTimeInit-1.patch Patch3: 0003-Enable-pow-for-arm-armel-in-tryrun-11703.patch Patch4: 0004-ARM-Linux-Validate-memory-using-ldrb-instead-of-ldr.patch Patch5: 0005-Add-skipped-testcase-on-TM1.patch Patch6: 0006-Set-local-variables-as-addr-exposed-if-it-appears-in.patch Patch7: 0007-Revert-unnecessary-changes.patch Patch8: 0008-Add-skipped-testcase-superpmi.patch Patch9: 0009-x86-Linux-Adjust-SP-in-throwing-helper-block-12504-1.patch Patch10: 0010-Use-udf-0xff-instead-of-bkpt-0xbe-as-a-poison-13.patch Patch11: 0011-Enable-sosplugin-on-ARM-14.patch Patch12: 0012-Add-pie-to-linker-option-16.patch Patch13: 0013-Revert-Add-pie-to-linker-option-16.patch Patch14: 0014-Fix-inconsistency-between-GetHasCode-and-Equals-1351.patch Patch15: 0015-Cherry-pick-13586.patch Patch16: 0016-callsignalhandlerwrapper-patch.patch Patch17: 0017-clear-cache-after-NI-reloc.patch Patch18: 0018-Support-FEATURE_GDBJIT_FRAME-including-NI-IL_Stub.patch Patch19: 0019-Add-profiling-support.patch Patch20: 0020-Enable-loading-directly-ni-file-for-dotnet-launcher.patch Patch21: 0021-Revert-Enable-loading-directly-ni-file-for-dotnet-la.patch Patch22: 0022-Enable-loading-directly-ni-file-for-corerun-temporar.patch Patch23: 0023-Add-Tizen-RuntimeID-case.patch Patch24: tizen-toolchain-support.patch Patch25: 0024-Add-pie-to-linker-option.patch Patch26: 0025-Fix-undefined-references-on-SOS-11701.patch Patch27: 0026-Port-DacUnwindStackFrame-11666.patch Patch28: 0027-Include-PAL-headers-instead-of-embedding-it-11705.patch Patch29: 0028-added-DWARF-exprloc-for-static-value-class-fields-11.patch Patch30: 0029-Fix-calculation-of-debuginfo-s-size.-13899.patch Patch31: 0030-Force-O3-build-with-clang3.8.patch ExcludeArch: aarch64 BuildRequires: python BuildRequires: python-xml # libcoreclr.so BuildRequires: pkgconfig(libunwind) BuildRequires: pkgconfig(uuid) # System.Globalization.Native.so BuildRequires: libicu-devel BuildRequires: tizen-release # No matter what tizen-release package you use in any profile AutoReq: 0 Requires: glibc Requires: libgcc Requires: libstdc++ Requires: libunwind Requires: libuuid # Accelerate python, clang %ifarch %{arm} BuildRequires: python-accel-armv7l-cross-arm BuildRequires: clang-accel-armv7l-cross-arm %endif %ifarch aarch64 BuildRequires: python-accel-aarch64-cross-aarch64 BuildRequires: clang-accel-aarch64-cross-aarch64 %endif %if 0%{skipnative} %else BuildRequires: cmake BuildRequires: llvm >= 3.8 BuildRequires: llvm-devel >= 3.8 BuildRequires: clang >= 3.8 BuildRequires: clang-devel >= 3.8 BuildRequires: lldb >= 3.8 BuildRequires: lldb-devel >= 3.8 BuildRequires: gettext-tools BuildRequires: libopenssl-devel # C include headers BuildRequires: libstdc++-devel BuildRequires: pkgconfig(lttng-ust) %endif %if 0%{skipmscorlib} %else %ifarch %{arm} BuildRequires: patchelf %endif %ifarch %{ix86} BuildRequires: patchelf BuildRequires: glibc-64bit BuildRequires: libgcc-64bit BuildRequires: libstdc++-64bit BuildRequires: libunwind-64bit BuildRequires: libuuid-64bit BuildRequires: zlib-64bit BuildRequires: libopenssl-64bit %endif %endif %description The CoreCLR repo contains the complete runtime implementation for .NET Core. It includes RyuJIT, the .NET GC, native interop and many other components. It is cross-platform, with multiple OS and CPU ports in progress. %package extra Summary: Dotnet Core Extra Files Requires: coreclr %description extra Libsosplugin and others %package test Summary: Dotnet Core Unit Test Requires: coreclr %description test Unit Test objs %package devel Summary: Dotnet Core Development package Requires: coreclr %description devel Headers and static libraries %package -n mscorlib Summary: Core Library for MS .NET Requires: coreclr %description -n mscorlib The MSCORLIB.DLL for .NET Core Runtime (coreclr) %prep %setup -q -n %{name}-%{version} cp %{SOURCE1001} . # Gbp-Patch-Macros %patch0 -p1 %patch1 -p1 %patch2 -p1 %patch3 -p1 %patch4 -p1 %patch5 -p1 %patch6 -p1 %patch7 -p1 %patch8 -p1 %patch9 -p1 %patch10 -p1 %patch11 -p1 %patch12 -p1 %patch13 -p1 %patch14 -p1 %patch15 -p1 %patch16 -p1 %patch17 -p1 %patch18 -p1 %patch19 -p1 %patch20 -p1 %patch21 -p1 %patch22 -p1 %patch23 -p1 %patch24 -p1 %patch25 -p1 %patch26 -p1 %patch27 -p1 %patch28 -p1 %patch29 -p1 %patch30 -p1 %patch31 -p1 %if 0%{skipmscorlib} %else cp %{SOURCE1000} ./ tar xf %{SOURCE1000} %ifarch %{arm} %{ix86} %setup -T -D -a 1002 %setup -T -D -a 1003 %ifarch %{arm} # Detect interpreter name from cross-gcc LD_INTERPRETER=$(patchelf --print-interpreter /emul/usr/bin/gcc) LD_RPATH=$(patchelf --print-rpath /emul/usr/bin/gcc) for file in $( find ./Tools -name "dotnet" ) do patchelf --set-interpreter ${LD_INTERPRETER} ${file} patchelf --set-rpath ${LD_RPATH}:%{_builddir}/%{name}-%{version}/libicu/ ${file} done for file in $( find ./Tools ./libicu -iname "*.so" -or -iname "*.so.*" ) do patchelf --set-rpath ${LD_RPATH}:%{_builddir}/%{name}-%{version}/libicu/ ${file} done %endif %ifarch %{ix86} for file in $( find ./Tools ./libicu -iname "*.so" -or -iname "*.so.*" ) do patchelf --set-rpath %{_builddir}/%{name}-%{version}/libicu/ ${file} done %endif %endif %endif %build export CFLAGS=" --target=%{_host} " export CXXFLAGS=" --target=%{_host} " %ifarch x86_64 # Even though build architectur is x86_64, it will be running on arm board. # So we need to pass the arch argument as arm. %define _barch %{?cross:%{cross}}%{!?cross:x64} %else %ifarch aarch64 %define _barch arm64 %else %ifarch %{ix86} %define _barch x86 export CLANG_NO_LIBDIR_SUFFIX=1 export CFLAGS=$(echo $CFLAGS | sed -e 's/--target=i686/--target=i586/') export CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/--target=i686/--target=i586/') %else %ifarch %{arm} %define _barch armel export CLANG_NO_LIBDIR_SUFFIX=1 %else %endif %endif %endif %endif %define _buildtype %{dotnet_buildtype} %define _reldir bin/Product/Linux.%{_barch}.%{_buildtype} %define _clrdebug 0 %define _paldebug 0 %if 0%{support_test} %define testopt '' %else %define testopt 'skiptests' %endif %if 0%{_clrdebug} export COMPlus_LogEnable=1 export COMPlus_LogLevel=10 export COMPlus_LogToFile=1 export COMPlus_LogFile="clr.log" %else export COMPlus_LogEnable=0 %endif %if 0%{_paldebug} export PAL_DBG_CHANNELS="+all.all" export PAL_DBG_CHANNELS="+PAL.TRACE:-FILE.ERROR" export PAL_API_TRACING="pal.log" %else export PAL_DBG_CHANNELS="" %endif %if 0%{skipmscorlib} %if 0%{skipnative} # No build native and mscorlib. %else # Build native only. ./build.sh %{_barch} %{_buildtype} clang3.8 skipmscorlib skipgenerateversion skipnuget %{testopt} cmakeargs "-DFEATURE_GDBJIT=TRUE -DFEATURE_DBGIPC=0 -DFEATURE_NI_BIND_FALLBACK=false -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++" %endif %else %if 0%{skipnative} # Build mscorlib only. ./build.sh %{_barch} %{_buildtype} -skiprestore skipnative skipnuget %{testopt} %else # Build native and mscorlib. ./build.sh %{_barch} %{_buildtype} clang3.8 skipgenerateversion -skiprestore skipnuget %{testopt} cmakeargs "-DFEATURE_GDBJIT=TRUE -DFEATURE_DBGIPC=0 -DFEATURE_NI_BIND_FALLBACK=false -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++" %endif %endif echo %{CORECLR_GIT_HASH} > .clrinfo %install # .NET Core Runtime %define dotnetdir dotnet %define netshareddir %{dotnetdir}/shared %define netcoreappdir %{netshareddir}/Microsoft.NETCore.App/%{dotnet_version} mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir} # .NET Tizen Runtime %define dotnettizendir dotnet.tizen %define dotnetfwdir %{dotnettizendir}/framework %define dotnettestdir %{dotnettizendir}/test mkdir -p %{buildroot}%{_datadir}/%{dotnettizendir} mkdir -p %{buildroot}%{_datadir}/%{dotnetfwdir} mkdir -p %{buildroot}%{_datadir}/%{dotnettestdir} # .NET & Mono CoreOverlay %define tizennetdir tizen.net mkdir -p %{buildroot}%{_datadir}/%{tizennetdir} %if 0%{skipnative} %else cp %{_reldir}/corerun %{buildroot}%{_datadir}/%{netcoreappdir} cp %{_reldir}/libclrjit.so %{buildroot}%{_datadir}/%{netcoreappdir} cp %{_reldir}/libcoreclr.so %{buildroot}%{_datadir}/%{netcoreappdir} cp %{_reldir}/libdbgshim.so %{buildroot}%{_datadir}/%{netcoreappdir} cp %{_reldir}/libmscordaccore.so %{buildroot}%{_datadir}/%{netcoreappdir} cp %{_reldir}/libmscordbi.so %{buildroot}%{_datadir}/%{netcoreappdir} cp %{_reldir}/libsos.so %{buildroot}%{_datadir}/%{netcoreappdir} cp %{_reldir}/libsosplugin.so %{buildroot}%{_datadir}/%{netcoreappdir} cp %{_reldir}/libcoreclrtraceptprovider.so %{buildroot}%{_datadir}/%{netcoreappdir} cp %{_reldir}/System.Globalization.Native.so %{buildroot}%{_datadir}/%{netcoreappdir} ln -sf ../%{netcoreappdir}/corerun %{buildroot}%{_datadir}/%{dotnetdir}/corerun # .NET Core Headers and static libraries mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/src/ cp -rf %{_reldir}/inc %{buildroot}%{_datadir}/%{netcoreappdir}/ cp -rf src/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/ cp -rf src/pal/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/ cp -rf %{_reldir}/lib %{buildroot}%{_datadir}/%{netcoreappdir} cp -rf src/pal/src/include %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/src # make link for .NET CoreOverlay ln -sf ../%{netcoreappdir}/corerun %{buildroot}%{_datadir}/%{tizennetdir} ln -sf ../%{netcoreappdir}/libclrjit.so %{buildroot}%{_datadir}/%{tizennetdir} ln -sf ../%{netcoreappdir}/libcoreclr.so %{buildroot}%{_datadir}/%{tizennetdir} ln -sf ../%{netcoreappdir}/libdbgshim.so %{buildroot}%{_datadir}/%{tizennetdir} ln -sf ../%{netcoreappdir}/libmscordaccore.so %{buildroot}%{_datadir}/%{tizennetdir} ln -sf ../%{netcoreappdir}/libmscordbi.so %{buildroot}%{_datadir}/%{tizennetdir} ln -sf ../%{netcoreappdir}/libsos.so %{buildroot}%{_datadir}/%{tizennetdir} ln -sf ../%{netcoreappdir}/libsosplugin.so %{buildroot}%{_datadir}/%{tizennetdir} ln -sf ../%{netcoreappdir}/libcoreclrtraceptprovider.so %{buildroot}%{_datadir}/%{tizennetdir} ln -sf ../%{netcoreappdir}/System.Globalization.Native.so %{buildroot}%{_datadir}/%{tizennetdir} # extra cp %{_reldir}/coreconsole %{buildroot}%{_datadir}/%{dotnetfwdir} cp %{_reldir}/crossgen %{buildroot}%{_datadir}/%{dotnetfwdir} cp %{_reldir}/ilasm %{buildroot}%{_datadir}/%{dotnetfwdir} cp %{_reldir}/ildasm %{buildroot}%{_datadir}/%{dotnetfwdir} # test cp -rf bin/obj/Linux.%{_barch}.%{_buildtype}/tests/src %{buildroot}%{_datadir}/%{dotnettestdir} # info cp -rf .clrinfo %{buildroot}%{_datadir}/%{tizennetdir} %endif %if 0%{skipmscorlib} %else cp %{_reldir}/System.Private.CoreLib.dll %{buildroot}%{_datadir}/%{netcoreappdir} cp %{_reldir}/SOS.NETCore.dll %{buildroot}%{_datadir}/%{netcoreappdir} # make link for .NET CoreOverlay ln -sf ../%{netcoreappdir}/System.Private.CoreLib.dll %{buildroot}%{_datadir}/%{tizennetdir} ln -sf ../%{netcoreappdir}/SOS.NETCore.dll %{buildroot}%{_datadir}/%{tizennetdir} %endif %if 0%{skipnative} %else %files %manifest %{name}.manifest %dir %{_datadir}/%{dotnetdir} %dir %{_datadir}/%{netcoreappdir} %dir %{_datadir}/%{tizennetdir} %{_datadir}/%{netcoreappdir}/corerun %{_datadir}/%{netcoreappdir}/*.so %{_datadir}/%{tizennetdir}/* %{_datadir}/%{tizennetdir}/.clrinfo %{_datadir}/%{dotnetdir}/corerun %files extra %manifest %{name}.manifest %dir %{_datadir}/%{dotnetfwdir} %{_datadir}/%{dotnetfwdir}/* %files test %manifest %{name}.manifest %dir %{_datadir}/%{dotnettestdir} %{_datadir}/%{dotnettestdir}/* %files devel %manifest %{name}.manifest %dir %{_datadir}/%{netcoreappdir}/inc %dir %{_datadir}/%{netcoreappdir}/lib %dir %{_datadir}/%{netcoreappdir}/src %{_datadir}/%{netcoreappdir}/inc/* %{_datadir}/%{netcoreappdir}/lib/* %{_datadir}/%{netcoreappdir}/src/* %endif %if 0%{skipmscorlib} %else %files -n mscorlib %manifest %{name}.manifest %{_datadir}/%{netcoreappdir}/*.dll %{_datadir}/%{tizennetdir}/*.dll %endif %changelog * Fri Jan 22 2016 MyungJoo Ham - 0.0.1-1 - Initial spec file for corerun