diff options
Diffstat (limited to 'packaging/coreclr.spec')
-rw-r--r-- | packaging/coreclr.spec | 401 |
1 files changed, 401 insertions, 0 deletions
diff --git a/packaging/coreclr.spec b/packaging/coreclr.spec new file mode 100644 index 0000000000..771216b804 --- /dev/null +++ b/packaging/coreclr.spec @@ -0,0 +1,401 @@ +%{!?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 +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 + +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 + +%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 <myungjoo.ham@samsung.com> - 0.0.1-1 +- Initial spec file for corerun |