diff options
author | junghyuk.park <junghyuk.park@samsung.com> | 2018-06-25 18:47:41 +0900 |
---|---|---|
committer | Gleb Balykov <g.balykov@samsung.com> | 2020-03-25 15:29:41 +0300 |
commit | 20beeabaa3ee777f2a9f113d8a59b569b57d6b20 (patch) | |
tree | 233bc7e73b851d527df93d02d0c37ee356fc69a0 /packaging/coreclr.spec | |
parent | 455d6fe1191301a95b2cbb7a592afcdb209cd646 (diff) | |
download | coreclr-20beeabaa3ee777f2a9f113d8a59b569b57d6b20.tar.gz coreclr-20beeabaa3ee777f2a9f113d8a59b569b57d6b20.tar.bz2 coreclr-20beeabaa3ee777f2a9f113d8a59b569b57d6b20.zip |
[Tizen] Add support for GBS
Diffstat (limited to 'packaging/coreclr.spec')
-rwxr-xr-x | packaging/coreclr.spec | 335 |
1 files changed, 335 insertions, 0 deletions
diff --git a/packaging/coreclr.spec b/packaging/coreclr.spec new file mode 100755 index 0000000000..5f741b5f85 --- /dev/null +++ b/packaging/coreclr.spec @@ -0,0 +1,335 @@ +%{!?dotnet_buildtype: %define dotnet_buildtype Release} + +%define skipnative 0 +%define skipmscorlib 0 +%ifarch %{ix86} +%define dotnet_buildtype Release +%endif + +%define dotnet_version 3.1.0 + +Name: coreclr +Version: 3.1.0 +Release: 0 +Summary: Microsoft .NET Runtime, Coreclr +Group: Development/Languages +License: MIT +URL: http://github.com/dotnet/coreclr +Source0: %{name}-%{version}.tar.gz +Source1: %{name}.manifest + + +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 + +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: libopenssl1.1-devel +# C include headers +BuildRequires: libstdc++-devel +BuildRequires: pkgconfig(lttng-ust) + +%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: libopenssl11-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 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 %{SOURCE1} . + + +%if 0%{skipmscorlib} +%else +%ifarch %{arm} %{ix86} +%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 ./.dotnet -name "dotnet" -type f) +do + patchelf --set-interpreter ${LD_INTERPRETER} ${file} + patchelf --set-rpath ${LD_RPATH}:%{_builddir}/%{name}-%{version}/libicu-57.1/ ${file} +done +for file in $( find ./Tools ./.dotnet ./libicu-57.1 -iname "*.so" -or -iname "*.so.*" ) +do + patchelf --set-rpath ${LD_RPATH}:%{_builddir}/%{name}-%{version}/libicu-57.1/ ${file} +done +%endif +%ifarch %{ix86} +for file in $( find ./Tools ./.dotnet ./libicu-57.1 -iname "*.so" -or -iname "*.so.*" ) +do + patchelf --set-rpath %{_builddir}/%{name}-%{version}/libicu-57.1/ ${file} +done +%endif +%endif +%endif + +%build +# disable asan build when global forced asan build +%{?asan: +export ASAN_OPTIONS=use_sigaltstack=false:`cat /ASAN_OPTIONS` +/usr/bin/gcc-unforce-options +export LD_LIBRARY_PATH=`pwd`/libicu-57.1 +export CPPFLAGS+=" -DHAS_ADDRESS_SANITIZER " +} + +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 _numproc %(getconf _NPROCESSORS_ONLN) + +%ifarch %{arm} +%if %{dotnet_buildtype} == "Release" +export CXXFLAGS+="-fstack-protector-strong -D_FORTIFY_SOURCE=2" +%else +export CXXFLAGS+="-fstack-protector-strong" +%endif +%endif + +%ifarch %{arm} +%define _ngen_relocs_opts cmakeargs "-DFEATURE_NGEN_RELOCS_OPTIMIZATIONS=true" +%else +%define _ngen_relocs_opts "" +%endif + +%if 0%{skipmscorlib} +%if 0%{skipnative} +# No build native and mscorlib. +%else +# Build native only. +export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/ +export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/ +./build.sh -%{_barch} -%{_buildtype} -numproc %{_numproc} -clang3.8 -skipmscorlib -skipgenerateversion -skipnuget -msbuildonunsupportedplatform cmakeargs "-DFEATURE_PREJIT=true -DFEATURE_ENABLE_NO_ADDRESS_SPACE_RANDOMIZATION=true -DCLR_ADDITIONAL_LINKER_FLAGS=-Wl,-z,relro" %{_ngen_relocs_opts} +%endif +%else +%if 0%{skipnative} +# Build mscorlib only. +export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/ +export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/ +./build.sh -%{_barch} -%{_buildtype} -numproc %{_numproc} -skiprestore -skiprestoreoptdata -skipnative -skipnuget -skipcrossgen -msbuildonunsupportedplatform +%else +# Build native and mscorlib. +export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/ +export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/ +./build.sh -%{_barch} -%{_buildtype} -numproc %{_numproc} -clang3.8 -skipgenerateversion -skiprestore -skiprestoreoptdata -skipnuget -skipcrossgen -msbuildonunsupportedplatform cmakeargs "-DFEATURE_IBCLOGGER=true -DFEATURE_PREJIT=true -DFEATURE_ENABLE_NO_ADDRESS_SPACE_RANDOMIZATION=true -DCLR_ADDITIONAL_LINKER_FLAGS=-Wl,-z,relro" %{_ngen_relocs_opts} +%endif +%endif + +%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} +ln -sf %{_datadir}/%{netcoreappdir} %{buildroot}%{_datadir}/%{dotnettizendir}/netcoreapp + +# symlink to .NET version for compatibility +ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.0.0 +ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.0 +ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.1 +ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.4 +ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/3.0.0 + +%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}/libcoreclrtraceptprovider.so %{buildroot}%{_datadir}/%{netcoreappdir} +cp %{_reldir}/System.Globalization.Native.so %{buildroot}%{_datadir}/%{netcoreappdir} +cp %{_reldir}/coreconsole %{buildroot}%{_datadir}/%{netcoreappdir} +cp %{_reldir}/crossgen %{buildroot}%{_datadir}/%{netcoreappdir} + +# .NET Core Headers and static libraries +mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/src/ +mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/ +mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/dlls/ +mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/coreclr/hosts/ +cp -rf src/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/ +cp -rf src/pal/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/ +cp -rf src/pal/prebuilt %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/ +cp -rf src/debug/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/ +cp -rf src/debug/shim %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/ +cp -rf src/dlls/dbgshim %{buildroot}%{_datadir}/%{netcoreappdir}/src/dlls/ +cp -rf src/coreclr/hosts/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/coreclr/hosts/ +cp -rf src/pal/src/include %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/src +cp -rf %{_reldir}/lib %{buildroot}%{_datadir}/%{netcoreappdir} + +# extra +ln -sf %{_datadir}/%{netcoreappdir}/crossgen %{buildroot}%{_datadir}/%{dotnetfwdir}/crossgen +ln -sf %{_datadir}/%{netcoreappdir}/coreconsole %{buildroot}%{_datadir}/%{dotnetfwdir}/coreconsole +ln -sf ../%{netcoreappdir}/corerun %{buildroot}%{_datadir}/%{dotnetdir}/corerun + +# devel +cp %{_reldir}/ilasm %{buildroot}%{_datadir}/%{netcoreappdir} +cp %{_reldir}/ildasm %{buildroot}%{_datadir}/%{netcoreappdir} + +# test +# cp -rf bin/obj/Linux.%{_barch}.%{_buildtype}/tests/src %{buildroot}%{_datadir}/%{dotnettestdir} +cp %{_reldir}/superpmi %{buildroot}%{_datadir}/%{dotnettestdir} +cp %{_reldir}/mcs %{buildroot}%{_datadir}/%{dotnettestdir} +cp %{_reldir}/libsuperpmi-shim-collector.so %{buildroot}%{_datadir}/%{dotnettestdir} +cp %{_reldir}/libsuperpmi-shim-counter.so %{buildroot}%{_datadir}/%{dotnettestdir} +cp %{_reldir}/libsuperpmi-shim-simple.so %{buildroot}%{_datadir}/%{dotnettestdir} +%endif + +%if 0%{skipmscorlib} +%else +cp %{_reldir}/System.Private.CoreLib.dll %{buildroot}%{_datadir}/%{netcoreappdir} +%endif + +%if 0%{skipnative} +%else +%files +%manifest %{name}.manifest +%dir %{_datadir}/%{dotnetdir} +%dir %{_datadir}/%{netcoreappdir} +%dir %{_datadir}/%{dotnettizendir} +%{_datadir}/%{netcoreappdir}/crossgen +%{_datadir}/%{dotnetfwdir}/crossgen +%{_datadir}/%{netcoreappdir}/*.so +%{_datadir}/%{dotnettizendir}/netcoreapp + +# symlink to .NET version for compatibility +%dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.0.0 +%dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.0 +%dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.1 +%dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.4 +%dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/3.0.0 + +%files test +%manifest %{name}.manifest +%dir %{_datadir}/%{dotnettestdir} +%{_datadir}/%{dotnettestdir}/* + +%files devel +%manifest %{name}.manifest +%dir %{_datadir}/%{netcoreappdir}/lib +%dir %{_datadir}/%{netcoreappdir}/src +%dir %{_datadir}/%{dotnetfwdir} +%{_datadir}/%{netcoreappdir}/lib/* +%{_datadir}/%{netcoreappdir}/src/* +%{_datadir}/%{netcoreappdir}/ilasm +%{_datadir}/%{netcoreappdir}/ildasm +%{_datadir}/%{netcoreappdir}/corerun +%{_datadir}/%{netcoreappdir}/coreconsole +%{_datadir}/%{dotnetdir}/corerun +%{_datadir}/%{dotnetfwdir}/coreconsole +%endif + +%if 0%{skipmscorlib} +%else +%files -n mscorlib +%manifest %{name}.manifest +%{_datadir}/%{netcoreappdir}/*.dll + +%post -n mscorlib +rm -f %{_datadir}/%{netcoreappdir}/*.Backup +%endif + |