summaryrefslogtreecommitdiff
path: root/packaging/coreclr.spec
diff options
context:
space:
mode:
Diffstat (limited to 'packaging/coreclr.spec')
-rw-r--r--packaging/coreclr.spec401
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