%{!?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 9679ded412d1421f3d54ee3082e8b5f900217a4a Name: coreclr Version: 2.0.0.11992 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 Patch0: Add-project.assets.json-files.patch Patch1: Add-Tizen-RuntimeID-case.patch Patch2: Change-O3-build-in-clang3.8.patch Patch3: Fix-build-breakage-on-high-processsor-machines-12114.patch Patch4: ARM-Linux-Support-unaligned-struct-read-write-11290.patch Patch5: x86-Linux-Thread-safe-UMThunkMarshInfo-RunTimeInit-1.patch Patch6: Enable-pow-for-arm-armel-in-tryrun-11703.patch Patch7: ARM-Linux-Validate-memory-using-ldrb-instead-of-ldr.patch Patch8: Add-skipped-testcase-on-TM1.patch Patch9: Set-local-variables-as-addr-exposed-if-it-appears-in.patch Patch10: Revert-unnecessary-changes.patch Patch11: Add-skipped-testcase-superpmi.patch Patch12: tizen-toolchain-support.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 %ifarch %{arm} BuildRequires: python-accel-armv7l-cross-arm %endif %ifarch aarch64 BuildRequires: python-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 %ifarch x86_64 BuildRequires: pkgconfig(lttng-ust) %endif %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 -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 %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}/System.Globalization.Native.so %{buildroot}%{_datadir}/%{netcoreappdir} ln -sf ../%{netcoreappdir}/corerun %{buildroot}%{_datadir}/%{dotnetdir}/corerun # 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}/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}/* %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