[Tizen] Add coreclr skips for x64 emulator
[platform/upstream/dotnet/runtime.git] / packaging / coreclr.spec
1 %{!?dotnet_buildtype: %define dotnet_buildtype Release}
2 %{!?skiptests: %define skiptests 1}
3 %{!?skipfxtests: %define skipfxtests 1}
4 %{!?skipmscorlib: %define skipmscorlib 0}
5 %{!?skipmanaged: %define skipmanaged 0}
6
7 %define dotnet_buildtype_clr %{dotnet_buildtype}
8 %define dotnet_buildtype_fx %{dotnet_buildtype}
9
10 %if "%{?dotnet_buildtype}" == "Checked"
11     %define dotnet_buildtype_fx Debug
12 %endif
13
14 %define _binaries_in_noarch_packages_terminate_build   0
15 %define _unpackaged_files_terminate_build 0
16
17 %define skipmanagedtools 0
18
19 %ifarch %{ix86}
20 %define skipmanagedtools 1
21 %endif
22
23 %ifarch %{arm} aarch64 %{ix86} x86_64
24 %else
25 %define skiptests 1
26 %define skipfxtests 1
27 %endif
28
29 %define pgo_instrument 0
30 %define pgo_optimize 0
31
32 %define dotnet_version  6.0.9
33
34 Name:       coreclr
35 Version:        6.0.9
36 Release:        0
37 Summary:        Microsoft .NET Runtime with Microsoft .NET foundation class libraries (CoreCLR and CoreFX)
38 Group:          Development/Languages
39 License:        MIT
40 URL:              http://github.com/dotnet/runtime
41 Source0: %{name}-%{version}.tar.gz
42 Source1: %{name}.manifest
43
44 BuildRequires:  python
45 BuildRequires:  python-xml
46 # libcoreclr.so
47 BuildRequires:  pkgconfig(libunwind)
48 BuildRequires:  pkgconfig(uuid)
49 # System.Globalization.Native.so
50 BuildRequires:  libicu-devel
51 BuildRequires:  tizen-release
52 # System.Net.Security.Native.so
53 # System.Net.Http.Native.so
54 BuildRequires:  krb5-devel
55 BuildRequires:  libcurl-devel
56 # No matter what tizen-release package you use in any profile
57 AutoReq: 0
58 Requires: glibc
59 Requires: libgcc
60 Requires: libstdc++
61 Requires: libunwind
62 Requires: libuuid
63
64 # Accelerate python, clang
65 %ifarch armv7l
66 BuildRequires: python-accel-armv7l-cross-arm
67 BuildRequires: clang-accel-armv7l-cross-arm
68 %endif
69
70 %ifarch armv7hl
71 BuildRequires: python-accel-armv7hl-cross-arm
72 BuildRequires: clang-accel-armv7hl-cross-arm
73 %endif
74
75 %ifarch aarch64
76 BuildRequires: python-accel-aarch64-cross-aarch64
77 BuildRequires: clang-accel-aarch64-cross-aarch64
78 %endif
79
80 BuildRequires:  cmake
81 BuildRequires:  llvm >= 3.8
82 BuildRequires:  llvm-devel >= 3.8
83 BuildRequires:  clang >= 3.8
84 BuildRequires:  clang-devel >= 3.8
85 BuildRequires:  lldb >= 3.8
86 BuildRequires:  lldb-devel >= 3.8
87 BuildRequires:  gettext-tools
88 BuildRequires:  libopenssl1.1-devel
89 # C include headers
90 BuildRequires:  libstdc++-devel
91 BuildRequires:  pkgconfig(lttng-ust)
92
93 BuildRequires:  libatomic
94 BuildRequires:  gcc-devel-static
95
96 %if 0%{skipmscorlib} && 0%{skipmanaged} && 0%{skipmanagedtools}
97 %else
98 %ifarch %{arm} aarch64
99 BuildRequires:  patchelf
100 %endif
101 %ifarch %{ix86}
102 BuildRequires:  patchelf
103 BuildRequires:  glibc-64bit
104 BuildRequires:  libgcc-64bit
105 BuildRequires:  libstdc++-64bit
106 BuildRequires:  libunwind-64bit
107 BuildRequires:  libuuid-64bit
108 BuildRequires:  zlib-64bit
109 BuildRequires:  libopenssl11-64bit
110 %endif
111 %endif
112
113 %if 0%{pgo_instrument} || 0%{pgo_optimize}
114 BuildRequires:  binutils-gold
115 BuildRequires:  compiler-rt
116 %endif
117
118 %description
119 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. The .NET Core foundational libraries, called CoreFX. It includes classes for collections, file systems, console, XML, async and many others.
120
121 %package -n coreclr-test
122 Summary:    Dotnet Core Unit Test
123 Requires:    coreclr
124
125 %description -n coreclr-test
126 Unit Test objs
127
128 %package -n coreclr-devel
129 Summary:    Dotnet Core Development package
130 Requires:   coreclr
131
132 %description -n coreclr-devel
133 Headers and static libraries
134
135 %package -n mscorlib
136 Summary:        Core Library for MS .NET
137 Requires:       coreclr
138
139 %description -n mscorlib
140 The System.Private.CoreLib.dll for .NET Core Runtime (coreclr)
141
142 %package -n corefx-native
143 Summary:        Core foundational native libraries
144 Requires:       coreclr
145 Requires:       mscorlib
146
147 %description -n corefx-native
148 The native part (.so) of dotnet core foundational libraries
149
150 %package -n corefx-managed
151 Summary:        Core foundational managed libraries
152 Requires: coreclr
153 Requires: mscorlib
154 Requires: corefx-native
155 AutoReqProv: no
156
157 %description -n corefx-managed
158 The managed part (.dll) of dotnet core foundational class libraries
159
160 %package -n corefx-managed-devel
161 Summary:        Core foundational managed libraries for debugging (.pdb)
162 Requires: corefx-managed
163 AutoReqProv: no
164
165 %description -n corefx-managed-devel
166 The managed debugging files (.pdb) of dotnet core fundational class libraries
167
168 %package -n corefx-managed-ref
169 Summary:        Core foundational managed class libraries for developer
170 AutoReqProv: no
171
172 %description -n corefx-managed-ref
173 The managed part (.dll) of dotnet core foundational class libraries for developer
174
175 %if 0%{skipfxtests}
176 %else
177 %package -n corefx-test
178 Summary:        Dotnet Libraries Unit Test
179 Requires:   corefx-native
180 Requires:   corefx-managed
181 AutoReqProv: no
182
183 %description -n corefx-test
184 Unit Test objs
185 %endif
186
187 %package -n corefx-test-native
188 Summary:        Dotnet Libraries Unit Test, native part
189 Requires:   corefx-native
190 Requires:   corefx-managed
191
192 %description -n corefx-test-native
193 Unit Test objs, native part
194
195 %ifarch x86_64
196 %package -n crossgen2-mic
197 Summary:        Publish crossgen2 as a single file with self-contained
198 Requires: coreclr
199 BuildArch: noarch
200 AutoReqProv: no
201
202 %description -n crossgen2-mic
203 Publish crossgen2 as a single file with self-contained
204 %endif
205
206 %prep
207 %setup -q -n %{name}-%{version}
208 cp %{SOURCE1} .
209
210 %if 0%{skipmscorlib} && 0%{skipmanaged} && 0%{skipmanagedtools}
211 %else
212 %ifarch %{arm} aarch64
213 # Detect interpreter name from cross-gcc
214 LD_INTERPRETER=$(patchelf --print-interpreter /emul/usr/bin/gcc)
215 LD_RPATH=$(patchelf --print-rpath /emul/usr/bin/gcc)
216 for file in $( find ./.dotnet ./.packages -name "dotnet" -type f -o -name "ilasm" -type f)
217 do
218     patchelf --set-interpreter ${LD_INTERPRETER} ${file}
219     patchelf --set-rpath ${LD_RPATH}:%{_builddir}/%{name}-%{version}/libicu-57.1/ ${file}
220 done
221 for file in $( find ./.dotnet ./.packages ./libicu-57.1 -iname "*.so" -or -iname "*.so.*" )
222 do
223     patchelf --set-rpath ${LD_RPATH}:%{_builddir}/%{name}-%{version}/libicu-57.1/ ${file}
224 done
225 %endif
226
227 %ifarch %{ix86}
228 for file in $( find ./.dotnet ./.packages ./libicu-57.1 -iname "*.so" -or -iname "*.so.*" )
229 do
230     patchelf --set-rpath %{_builddir}/%{name}-%{version}/libicu-57.1/ ${file}
231 done
232 %endif
233 %endif
234
235 %build
236 # disable asan build when global forced asan build
237 %{?asan:
238 export ASAN_OPTIONS=use_sigaltstack=false:`cat /ASAN_OPTIONS`
239 /usr/bin/gcc-unforce-options
240 export LD_LIBRARY_PATH=`pwd`/libicu-57.1
241
242 # enable ASan support for only external libs
243 export TIZEN_ASAN_ENVIRONMENT=1
244 }
245
246 BASE_FLAGS=" --target=%{_host} "
247
248
249
250 %ifarch x86_64
251 %define _barch  x64
252 %endif
253
254 %ifarch aarch64
255 %define _barch  arm64
256 %endif
257
258 %ifarch %{ix86}
259 %define _barch  x86
260 export CLANG_NO_LIBDIR_SUFFIX=1
261 BASE_FLAGS="$(echo $BASE_FLAGS | sed -e 's/--target=i686/--target=i586/')"
262 BASE_FLAGS="$BASE_FLAGS -mstackrealign"
263 %endif
264
265 %ifarch armv7l
266 %define _barch  armel
267 export CLANG_NO_LIBDIR_SUFFIX=1
268 %endif
269
270 %ifarch armv7hl
271 %define _barch  arm
272 export CLANG_NO_LIBDIR_SUFFIX=1
273 %endif
274
275 %ifarch %{arm}
276 %define _tarch arm
277 %endif
278 %ifarch aarch64
279 %define _tarch arm64
280 %endif
281 %ifarch %{ix86}
282 %define _tarch x86
283 %endif
284 %ifarch x86_64
285 %define _tarch x64
286 %endif
287
288 %define _reldir_clr         artifacts/bin/coreclr/Linux.%{_barch}.%{dotnet_buildtype_clr}
289 %define _reldir_fx_native   artifacts/bin/native/net6.0-Linux-%{dotnet_buildtype_fx}-%{_barch}
290 %define _reldir_fx_managed  artifacts/bin/microsoft.netcore.app.runtime.linux-%{_barch}/%{dotnet_buildtype_fx}/runtimes/linux-%{_barch}/lib/net6.0/
291 %define _reldir_fx_withoob  artifacts/bin/runtime/net6.0-Linux-%{dotnet_buildtype_fx}-%{_barch}
292 %define _reldir_crossgen2_publish  %{_reldir_clr}/crossgen2/linux-%{_barch}/publish
293
294 export CFLAGS="${BASE_FLAGS}"
295 export CXXFLAGS="${BASE_FLAGS}"
296 export ASMFLAGS="${BASE_FLAGS}"
297
298 %ifarch %{arm}
299 %if %{dotnet_buildtype} == "Release"
300 export CXXFLAGS+="-fstack-protector-strong -D_FORTIFY_SOURCE=2"
301 %else
302 export CXXFLAGS+="-fstack-protector-strong"
303 %endif
304 %endif
305
306 %if 0%{pgo_instrument}
307 %define _pgo_flags --pgoinstrument
308 %else
309 %if 0%{pgo_optimize}
310 # pgo optimization is enabled by default
311 %define _pgo_flags ""
312 %else
313 %define _pgo_flags --nopgooptimize
314 %endif
315 %endif
316
317 %ifarch aarch64
318 %define _native_opts ""
319 %define _managed_opts ""
320 %else
321 %define _native_opts --cmakeargs -DDISABLE_AGGRESSIVE_OPT=true
322 %define _managed_opts /p:DisableAggressiveOpt=true
323 %endif
324 %define _source_version_flags /p:EnableSourceLink=false /p:DisableSourceLink=true /p:EnableSourceControlManagerQueries=false /p:EmbedUntrackedSources=false
325 %define _build_args --keepnativesymbols true --arch %{_barch} --runtimeConfiguration %{dotnet_buildtype_clr} --librariesConfiguration %{dotnet_buildtype_fx} %{_source_version_flags} %{_native_opts} %{_managed_opts} /p:UseSharedCompilation=false
326 %define _build_args_release --keepnativesymbols true --arch %{_barch} --runtimeConfiguration Release --librariesConfiguration Release %{_source_version_flags} %{_native_opts} %{_managed_opts} /p:UseSharedCompilation=false
327
328 export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
329 export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
330
331 # Build native CoreCLR and native CoreFX
332 ./build.sh --portablebuild false %{_build_args} --subset clr.runtime+clr.jit+clr.iltools+libs.native --cmakeargs -DFEATURE_IBCLOGGER=true --cmakeargs -DFEATURE_ENABLE_NO_ADDRESS_SPACE_RANDOMIZATION=true --cmakeargs -DCLR_ADDITIONAL_LINKER_FLAGS=-Wl,-z,relro %{_pgo_flags}
333
334 %ifarch x86_64
335 # Publish crossgen2 as a single file with self-contained
336 ./build.sh --portablebuild false %{_build_args} --subset clr.alljits --cmakeargs -DFEATURE_IBCLOGGER=true --cmakeargs -DFEATURE_ENABLE_NO_ADDRESS_SPACE_RANDOMIZATION=true --cmakeargs -DCLR_ADDITIONAL_LINKER_FLAGS=-Wl,-z,relro %{_pgo_flags}
337 ./.dotnet/dotnet publish --self-contained true -r linux-%{_barch} ./src/coreclr/tools/aot/crossgen2/crossgen2.csproj -c %{dotnet_buildtype_clr} -p:PublishSingleFile=true %{_managed_opts}
338 %endif
339
340 %if 0%{skipmscorlib}
341 %else
342 # Build mscorlib (System.Private.CoreLib.dll)
343 ./build.sh --portablebuild false %{_build_args} --subset clr.corelib
344 %endif
345
346 %if 0%{skipmanaged}
347 %else
348 # Build managed CoreFX
349 ./build.sh %{_build_args} --subset libs.ref+libs.src+libs.packages
350
351 %if 0%{skipmanagedtools}
352 %else
353 # Build managed tools
354 ./build.sh %{_build_args} --subset clr.tools
355 %endif
356
357 %if 0%{skipfxtests}
358 %else
359 # Build CoreFX managed tests, which are arch specific
360 ./build.sh %{_build_args} --subset libs.pretest+libs.tests --testscope all /p:DisableImplicitFSharpCoreReference=true
361 %endif
362 %endif
363
364 %if 0%{skiptests}
365 %else
366 # Build CoreCLR tests
367
368 %if %{dotnet_buildtype} != "Release"
369 # Build Release CoreCLR & CoreFX (these are required for some tests)
370
371 # Build native CoreCLR and native CoreFX
372 ./build.sh --portablebuild false %{_build_args_release} --subset clr.runtime+clr.jit+clr.iltools+libs.native --cmakeargs -DFEATURE_IBCLOGGER=true --cmakeargs -DFEATURE_ENABLE_NO_ADDRESS_SPACE_RANDOMIZATION=true --cmakeargs -DCLR_ADDITIONAL_LINKER_FLAGS=-Wl,-z,relro %{_pgo_flags}
373
374 # Build mscorlib (System.Private.CoreLib.dll)
375 ./build.sh --portablebuild false %{_build_args_release} --subset clr.corelib
376
377 # Build managed CoreFX
378 ./build.sh %{_build_args_release} --subset libs.ref+libs.src+libs.packages
379 %endif
380
381 # Build native part of tests as non-portable (i.e. for Tizen)
382 ./src/tests/build.sh -%{dotnet_buildtype_clr} portablebuild=false -%{_barch} -priority1 skipgenerateversion skipmanaged skipgeneratelayout skiprestorepackages /p:__SkipPackageRestore=true /p:UseSharedCompilation=false
383
384 # Build managed part of tests
385 ./src/tests/build.sh -%{dotnet_buildtype_clr} -%{_barch} -priority1 skipgenerateversion copynativeonly skiprestorepackages /p:__SkipPackageRestore=true /p:UseSharedCompilation=false
386 ./src/tests/build.sh -%{dotnet_buildtype_clr} -%{_barch} -priority1 skipgenerateversion skipnative skipgeneratelayout skiptestwrappers /p:DisableImplicitFSharpCoreReference=true /p:UseSharedCompilation=false
387 ./src/tests/build.sh -%{dotnet_buildtype_clr} -%{_barch} -priority1 skipgenerateversion generatelayoutonly skiprestorepackages /p:__SkipPackageRestore=true /p:UseSharedCompilation=false
388 %endif
389
390 %install
391 # .NET Core Runtime dir
392 %define dotnetdir       dotnet
393 %define netshareddir    %{dotnetdir}/shared
394 %define netcoreappdir   %{netshareddir}/Microsoft.NETCore.App/%{dotnet_version}
395 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}
396
397 # Test dirs
398 %define clrtestdir      /opt/usr/coreclr-tc
399 %define fxtestdir       /opt/usr/corefx-tc
400 mkdir -p %{buildroot}/%{clrtestdir}
401 mkdir -p %{buildroot}/%{fxtestdir}
402 mkdir -p %{buildroot}/%{fxtestdir}/coreroot
403
404 # .NET Tizen Runtime dir
405 %define dotnettizendir  dotnet.tizen
406 %define dotnetfwdir     %{dotnettizendir}/framework
407 mkdir -p %{buildroot}%{_datadir}/%{dotnettizendir}
408 mkdir -p %{buildroot}%{_datadir}/%{dotnetfwdir}
409 ln -sf %{_datadir}/%{netcoreappdir} %{buildroot}%{_datadir}/%{dotnettizendir}/netcoreapp
410
411 %ifarch x86_64
412 # .NET Tizen MIC dir
413 %define dotnetmicdir /opt/usr/dotnet/mic
414 mkdir -p %{buildroot}/%{dotnetmicdir}
415 %endif
416
417 # symlink to .NET version for compatibility
418 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.0.0
419 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.0
420 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.1
421 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.4
422 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/3.0.0
423 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/3.1.3
424 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/6.0.0
425
426 # CoreCLR native
427 cp %{_reldir_clr}/corerun                               %{buildroot}%{_datadir}/%{netcoreappdir}
428 cp %{_reldir_clr}/libclrjit.so                          %{buildroot}%{_datadir}/%{netcoreappdir}
429 cp %{_reldir_clr}/libclrgc.so                           %{buildroot}%{_datadir}/%{netcoreappdir}
430 cp %{_reldir_clr}/libcoreclr.so                         %{buildroot}%{_datadir}/%{netcoreappdir}
431 cp %{_reldir_clr}/libdbgshim.so                         %{buildroot}%{_datadir}/%{netcoreappdir}
432 cp %{_reldir_clr}/libmscordaccore.so                    %{buildroot}%{_datadir}/%{netcoreappdir}
433 cp %{_reldir_clr}/libmscordbi.so                        %{buildroot}%{_datadir}/%{netcoreappdir}
434 cp %{_reldir_clr}/libcoreclrtraceptprovider.so          %{buildroot}%{_datadir}/%{netcoreappdir}
435 cp %{_reldir_clr}/libjitinterface_%{_tarch}.so          %{buildroot}%{_datadir}/%{netcoreappdir}
436 cp %{_reldir_clr}/ilasm                                 %{buildroot}%{_datadir}/%{netcoreappdir}
437 cp %{_reldir_clr}/ildasm                                %{buildroot}%{_datadir}/%{netcoreappdir}
438 cp %{_reldir_clr}/createdump                            %{buildroot}%{_datadir}/%{netcoreappdir}
439 cp %{_reldir_clr}/libdnetmemoryenum.so                  %{buildroot}%{_datadir}/%{netcoreappdir}
440
441 # CoreFX native
442 cp %{_reldir_fx_native}/libSystem.Globalization.Native.so                  %{buildroot}%{_datadir}/%{netcoreappdir}
443 cp %{_reldir_fx_native}/libSystem.IO.Compression.Native.so                 %{buildroot}%{_datadir}/%{netcoreappdir}
444 cp %{_reldir_fx_native}/libSystem.Native.so                                %{buildroot}%{_datadir}/%{netcoreappdir}
445 cp %{_reldir_fx_native}/libSystem.Net.Security.Native.so                   %{buildroot}%{_datadir}/%{netcoreappdir}
446 cp %{_reldir_fx_native}/libSystem.Security.Cryptography.Native.OpenSsl.so  %{buildroot}%{_datadir}/%{netcoreappdir}
447
448 # CoreFX native test
449 cp %{_reldir_fx_native}/libSystem.IO.Ports.Native.so                       %{buildroot}/%{fxtestdir}/coreroot
450
451 # .NET Core Headers and static libraries
452 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/src/
453 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/
454 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/dlls/
455 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/coreclr/hosts/
456 cp -rf src/coreclr/inc                %{buildroot}%{_datadir}/%{netcoreappdir}/src/
457 cp -rf src/coreclr/pal/inc            %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/
458 cp -rf src/coreclr/pal/prebuilt       %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/
459 cp -rf src/coreclr/debug/inc          %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/
460 cp -rf src/coreclr/debug/shim         %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/
461 cp -rf src/coreclr/dlls/dbgshim       %{buildroot}%{_datadir}/%{netcoreappdir}/src/dlls/
462 cp -rf src/coreclr/hosts/inc          %{buildroot}%{_datadir}/%{netcoreappdir}/src/coreclr/hosts/
463 cp -rf src/coreclr/pal/src/include    %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/src
464 cp -rf %{_reldir_clr}/lib             %{buildroot}%{_datadir}/%{netcoreappdir}
465
466 # System.Private.CoreLib.dll
467 %if 0%{skipmscorlib}
468 %else
469 cp %{_reldir_clr}/IL/System.Private.CoreLib.dll     %{buildroot}%{_datadir}/%{netcoreappdir}
470 cp %{_reldir_clr}/IL/System.Private.CoreLib.pdb     %{buildroot}%{_datadir}/%{netcoreappdir}
471 %endif
472
473 # Managed tools and managed CoreFX
474 %if 0%{skipmanaged}
475 %else
476
477 %if 0%{skipmanagedtools}
478 %else
479
480 # Managed crossgen2
481 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/crossgen2
482 cp %{_reldir_clr}/crossgen2/crossgen2.dll                              %{buildroot}%{_datadir}/%{netcoreappdir}/crossgen2
483 cp %{_reldir_clr}/crossgen2/ILCompiler.Diagnostics.dll                 %{buildroot}%{_datadir}/%{netcoreappdir}/crossgen2
484 cp %{_reldir_clr}/crossgen2/ILCompiler.ReadyToRun.dll                  %{buildroot}%{_datadir}/%{netcoreappdir}/crossgen2
485 cp %{_reldir_clr}/crossgen2/ILCompiler.TypeSystem.ReadyToRun.dll       %{buildroot}%{_datadir}/%{netcoreappdir}/crossgen2
486 cp %{_reldir_clr}/crossgen2/ILCompiler.DependencyAnalysisFramework.dll %{buildroot}%{_datadir}/%{netcoreappdir}/crossgen2
487 cp %{_reldir_clr}/crossgen2/Microsoft.DiaSymReader.dll                 %{buildroot}%{_datadir}/%{netcoreappdir}/crossgen2
488
489 cp %{_reldir_clr}/libjitinterface_%{_tarch}.so                         %{buildroot}%{_datadir}/%{netcoreappdir}/crossgen2
490 %endif
491
492 # Managed CoreFX
493 cp %{_reldir_fx_managed}/*.dll %{buildroot}%{_datadir}/%{netcoreappdir}
494 cp %{_reldir_fx_managed}/*.pdb %{buildroot}%{_datadir}/%{netcoreappdir}
495
496 # Copy files for test rpm
497 %if 0%{skipfxtests}
498 %else
499
500 mkdir artifacts/corefx_tests
501 mkdir artifacts/corefx_tests/tests
502 mkdir artifacts/corefx_tests/coreroot
503
504 for test_dir in `find ./artifacts/bin -type d -name "*.Tests"`; do
505   test=$(basename $test_dir)
506   mkdir artifacts/corefx_tests/tests/$test
507
508   for FILE in `find $test_dir \( -name "*dll" -or -name "*.json" -or -name "*.resources" -or -name "*.pdb" -or -name "*.xml" -or -name "*.exe" -or -name "*.cs" -or -name "*.docx" -or -name "*.props" -or -name "ibm-fpgen.txt" \)`
509   do
510       cp $FILE artifacts/corefx_tests/tests/$test/
511   done
512
513   for DIR in `find $test_dir -type d \( -name "*TestFiles" -or -name "*TestData" -or -name "*NetworkFiles" -or -name "*Utils" -or -name "*Mono" -or -name "*TestFeeds" -or -name "*bitmaps" -or -name "Baselines" -or -name "TestClasses" -or -name "testroot" \)`
514   do
515       cp -r $DIR artifacts/corefx_tests/tests/$test/
516   done
517 done
518
519 for test in System.Runtime.Loader.Tests System.Resources.ResourceManager.Tests System.IO.Packaging.Tests; do
520   test_dir=$(find ./artifacts/bin -type d -name $test)
521   file_dir=$(find $test_dir -name $test.dll)
522   file_dir=$(dirname $file_dir)
523   cp -r $file_dir/* artifacts/corefx_tests/tests/$test/
524 done
525
526 for test_dir in `find artifacts/corefx_tests/tests/ -type d -name "*.Tests"`; do
527   test=$(basename $test_dir)
528   sed "s/COREFX_TEST_NAME/${test}/g" RunTests.sh > ${test_dir}/RunTests.sh
529   chmod +x ${test_dir}/RunTests.sh
530 done
531
532 for test_dir in `find artifacts/corefx_tests/tests/ -type d -name "Invariant.Tests"`; do
533   file=$(find ${test_dir} -name RunTests.sh)
534   cp $file $file.bak
535   sed "s/\$RUNTIME_PATH\/corerun xunit.console.dll/CORECLR_GLOBAL_INVARIANT=1 \$RUNTIME_PATH\/corerun xunit.console.dll/g" $file > $file.bak
536   mv $file.bak $file
537   chmod +x $file
538 done
539
540 %if 0%{skipmanagedtools}
541 %else
542
543 # This is a workaround for missing xunit.console.dll for ILCompiler tests (which are technically not corefx tests, but for now are placed in corefx-tests rpm).
544 # For corefx tests xunit is set up (and copied to test dir) in ./eng/testing/xunit/xunit.console.targets.
545 # ILCompiler tests do not use this set up approach, so explicitly perform copy step (see CopyRunnerToOutputDirectory target in ./eng/testing/xunit/xunit.console.targets for details).
546 cp ./.packages/microsoft.dotnet.xunitconsolerunner/*/tools/netcoreapp3.1/* artifacts/corefx_tests/tests/ILCompiler.TypeSystem.ReadyToRun.Tests/
547
548 %endif
549
550 cp %{_reldir_fx_withoob}/*.dll artifacts/corefx_tests/coreroot/
551
552 mv artifacts/corefx_tests/tests %{buildroot}/%{fxtestdir}/
553 mv artifacts/corefx_tests/coreroot/* %{buildroot}/%{fxtestdir}/coreroot/
554 cp runtest_fx.sh %{buildroot}/%{fxtestdir}/runtest.sh
555 chmod +x %{buildroot}/%{fxtestdir}/runtest.sh
556
557 %endif
558
559 %endif
560
561 # crossgen2-mic
562 %ifarch x86_64
563 crossgen2_self_contained=("crossgen2" "libjitinterface_x64.so" "libclrjit_unix_armel_x64.so" "libclrjit_unix_arm64_x64.so")
564 for name in "${crossgen2_self_contained[@]}";
565 do
566   cp %{_reldir_crossgen2_publish}/$name    %{buildroot}%{dotnetmicdir}
567 done
568
569 result_list=("ld-linux-x86-64.so.2" "libssl.so.1.1")
570 search_ldd() {
571   local path=$1
572   local library_list=$2
573   if [ -f $path ]; then
574     ldd_result=$(/usr/bin/ldd $path)
575     echo "$ldd_result" | while read line;
576     do
577       if [[ "$line" != *"GLIBC_"* ]] && [[ "$line" != *"linux-vdso.so.1"* ]] &&
578          [[ "$line" != *"ld-linux-x86-64.so.2"* ]]; then
579         cut_path=`echo $line | cut -d ' ' -f3`
580         cut_name=`echo $line | cut -d ' ' -f1`
581         library_list+=($cut_name)
582         echo "${library_list[@]}"
583         if [ -f $cut_path ]; then
584           result_list+=$(search_ldd $cut_path $library_list)
585         fi
586       fi
587     done
588   fi
589 }
590
591 for name in "${crossgen2_self_contained[@]}";
592 do
593   result_list+=$(search_ldd %{_reldir_crossgen2_publish}/$name)
594   echo $name: | tee -a %{buildroot}%{dotnetmicdir}/crossgen2-mic.txt > /dev/null
595   /usr/bin/ldd %{_reldir_crossgen2_publish}/$name | tee -a %{buildroot}%{dotnetmicdir}/crossgen2-mic.txt > /dev/null
596 done
597 result_list+=$(search_ldd %{buildroot}/../../../../../lib64/libssl.so.1.1)
598
599 unique_result=($(echo "${result_list[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
600 for name in "${unique_result[@]}";
601 do
602   cp %{buildroot}/../../../../../lib64/$name    %{buildroot}%{dotnetmicdir}/$name
603   echo $name: | tee -a %{buildroot}%{dotnetmicdir}/crossgen2-mic.txt > /dev/null
604   /usr/bin/ldd %{buildroot}/../../../../../lib64/$name | tee -a %{buildroot}%{dotnetmicdir}/crossgen2-mic.txt > /dev/null
605 done
606 %endif
607
608 # coreclr-test
609 %if 0%{skiptests}
610 %else
611 cp runtest_clr.sh %{buildroot}/%{clrtestdir}/runtest.sh
612 chmod +x %{buildroot}/%{clrtestdir}/runtest.sh
613 cp unsupportedCrossgenLibs.%{_barch}.txt      %{buildroot}/%{clrtestdir}/unsupportedCrossgenLibs.txt | true
614 cp unsupportedCrossgenTests.%{_barch}.txt     %{buildroot}/%{clrtestdir}/unsupportedCrossgenTests.txt | true
615 cp unsupportedTests.%{_barch}.txt             %{buildroot}/%{clrtestdir}/unsupportedTests.txt | true
616
617 %define _tcreldir artifacts/tests/coreclr/Linux.%{_barch}.%{dotnet_buildtype_clr}
618 cp -r %{_tcreldir}/* %{buildroot}/%{clrtestdir}
619 find %{buildroot}/%{clrtestdir} -name "*.pdb" -exec rm {} \;
620 find %{buildroot}/%{clrtestdir} -name "*.cmd" -exec rm {} \;
621 rm -rf %{buildroot}/%{clrtestdir}/Tests/Core_Root/in
622 rm -rf %{buildroot}/%{clrtestdir}/Tests/Core_Root/sharedFramework
623 rm -rf %{buildroot}/%{clrtestdir}/Tests/Core_Root/PDB
624 rm -rf %{buildroot}/%{clrtestdir}/Tests/Core_Root/x64
625 rm -rf %{buildroot}/%{clrtestdir}/Tests/Core_Root/gcinfo
626 rm -rf %{buildroot}/%{clrtestdir}/Tests/Core_Root/inc
627 rm -rf %{buildroot}/%{clrtestdir}/Tests/Core_Root/lib
628 rm -rf %{buildroot}/%{clrtestdir}/Tests/Core_Root/IL
629 rm -rf %{buildroot}/%{clrtestdir}/Tests/Core_Root/crossgen2
630
631 %ifarch %{arm} aarch64
632 rm -rf %{buildroot}/%{clrtestdir}/Tests/Core_Root/R2RDump/Microsoft.DiaSymReader.Native.x86.dll
633 rm -rf %{buildroot}/%{clrtestdir}/Tests/Core_Root/R2RDump/Microsoft.DiaSymReader.Native.amd64.dll
634 %endif
635
636 rm -rf %{buildroot}/%{clrtestdir}/Tests/Core_Root/ILCompiler.*.dll
637 rm -rf %{buildroot}/%{clrtestdir}/build/
638 rm %{buildroot}/%{clrtestdir}/Tests/Core_Root/{superpmi,SOS_README.md,mcs,*.a,*.so,ilasm,ildasm}
639 #rm %{buildroot}/%{clrtestdir}/Tests/Core_Root/api-ms-win-core-debug-l1-1-0.dll
640 #rm %{buildroot}/%{clrtestdir}/Tests/Core_Root/api-ms-win-core-debug-l1-1-1.dll
641
642 cp %{buildroot}/%{clrtestdir}/bin/*.so %{buildroot}/%{clrtestdir}/Tests/Core_Root
643 mv %{buildroot}/%{clrtestdir}/Tests/Core_Root %{buildroot}/%{clrtestdir}/coreroot
644 %endif
645
646 # test native
647 mkdir -p %{buildroot}/%{clrtestdir}/bin
648 cp %{_reldir_clr}/superpmi                          %{buildroot}/%{clrtestdir}/bin
649 cp %{_reldir_clr}/mcs                               %{buildroot}/%{clrtestdir}/bin
650 cp %{_reldir_clr}/libsuperpmi-shim-collector.so     %{buildroot}/%{clrtestdir}/bin
651 cp %{_reldir_clr}/libsuperpmi-shim-counter.so       %{buildroot}/%{clrtestdir}/bin
652 cp %{_reldir_clr}/libsuperpmi-shim-simple.so        %{buildroot}/%{clrtestdir}/bin
653
654 ###
655 ### Copy nupkg to nuget directory
656 ###
657 mkdir -p %{buildroot}/nuget
658 cp ./nuget/*.nupkg %{buildroot}/nuget
659
660 # coreclr rpm
661 %files
662 %manifest %{name}.manifest
663 %dir %{_datadir}/%{dotnetdir}
664 %dir %{_datadir}/%{netcoreappdir}
665 %dir %{_datadir}/%{dotnettizendir}
666 %{_datadir}/%{netcoreappdir}/corerun
667 %{_datadir}/%{netcoreappdir}/libclrjit.so
668 %{_datadir}/%{netcoreappdir}/libclrgc.so
669 %{_datadir}/%{netcoreappdir}/libcoreclr.so
670 %{_datadir}/%{netcoreappdir}/libdbgshim.so
671 %{_datadir}/%{netcoreappdir}/libmscordaccore.so
672 %{_datadir}/%{netcoreappdir}/libmscordbi.so
673 %{_datadir}/%{netcoreappdir}/libcoreclrtraceptprovider.so
674 %{_datadir}/%{netcoreappdir}/libjitinterface_%{_tarch}.so
675 %{_datadir}/%{dotnettizendir}/netcoreapp
676 %{_datadir}/%{netcoreappdir}/ilasm
677 %{_datadir}/%{netcoreappdir}/ildasm
678 %{_datadir}/%{netcoreappdir}/createdump
679 %{_datadir}/%{netcoreappdir}/libdnetmemoryenum.so
680
681 %if 0%{skipmanaged}
682 %else
683
684 %if 0%{skipmanagedtools}
685 %else
686
687 %dir %{_datadir}/%{netcoreappdir}/crossgen2
688 %{_datadir}/%{netcoreappdir}/crossgen2/crossgen2.dll
689 %{_datadir}/%{netcoreappdir}/crossgen2/ILCompiler.Diagnostics.dll
690 %{_datadir}/%{netcoreappdir}/crossgen2/ILCompiler.ReadyToRun.dll
691 %{_datadir}/%{netcoreappdir}/crossgen2/ILCompiler.TypeSystem.ReadyToRun.dll
692 %{_datadir}/%{netcoreappdir}/crossgen2/ILCompiler.DependencyAnalysisFramework.dll
693 %{_datadir}/%{netcoreappdir}/crossgen2/Microsoft.DiaSymReader.dll
694
695 %{_datadir}/%{netcoreappdir}/crossgen2/libjitinterface_%{_tarch}.so
696 %endif
697
698 %endif
699
700 # symlink to .NET version for compatibility
701 %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.0.0
702 %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.0
703 %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.1
704 %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.4
705 %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/3.0.0
706 %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/3.1.3
707 %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/6.0.0
708
709 %files -n coreclr-test
710 %manifest %{name}.manifest
711 %dir %{clrtestdir}
712 %{clrtestdir}/*
713
714 %files -n coreclr-devel
715 %manifest %{name}.manifest
716 %dir %{_datadir}/%{netcoreappdir}/lib
717 %dir %{_datadir}/%{netcoreappdir}/src
718 %dir %{_datadir}/%{netcoreappdir}
719 %{_datadir}/%{netcoreappdir}/lib/*
720 %{_datadir}/%{netcoreappdir}/src/*
721
722 %if 0%{skipmscorlib}
723 %else
724 %{_datadir}/%{netcoreappdir}/System.Private.CoreLib.pdb
725 %endif
726
727 %if 0%{skipmscorlib}
728 %else
729 %files -n mscorlib
730 %manifest %{name}.manifest
731 %{_datadir}/%{netcoreappdir}/System.Private.CoreLib.dll
732 %endif
733
734 %files -n corefx-native
735 %manifest %{name}.manifest
736 %{_datadir}/%{netcoreappdir}/libSystem.Globalization.Native.so
737 %{_datadir}/%{netcoreappdir}/libSystem.IO.Compression.Native.so
738 %{_datadir}/%{netcoreappdir}/libSystem.Native.so
739 %{_datadir}/%{netcoreappdir}/libSystem.Net.Security.Native.so
740 %{_datadir}/%{netcoreappdir}/libSystem.Security.Cryptography.Native.OpenSsl.so
741
742 %files -n corefx-test-native
743 %manifest %{name}.manifest
744 %{fxtestdir}/coreroot/libSystem.IO.Ports.Native.so
745
746 %if 0%{skipmanaged}
747 %else
748
749 %files -n corefx-managed
750 %manifest %{name}.manifest
751 %{_datadir}/%{netcoreappdir}/*.dll
752 %exclude %{_datadir}/%{netcoreappdir}/System.Private.CoreLib.dll
753
754 %files -n corefx-managed-devel
755 %manifest %{name}.manifest
756 %{_datadir}/%{netcoreappdir}/*.pdb
757 %exclude %{_datadir}/%{netcoreappdir}/System.Private.CoreLib.pdb
758
759 %if 0%{skipfxtests}
760 %else
761 %files -n corefx-test
762 %manifest %{name}.manifest
763 %{fxtestdir}/tests
764 %{fxtestdir}/coreroot/*.dll
765 %{fxtestdir}/runtest.sh
766 %endif
767
768 %endif
769
770 %files -n corefx-managed-ref
771 %manifest %{name}.manifest
772 /nuget/*.nupkg
773
774 %ifarch x86_64
775 %files -n crossgen2-mic
776 %manifest %{name}.manifest
777 %dir %{dotnetmicdir}
778 %{dotnetmicdir}/*
779 %endif
780
781 %if 0%{skipmscorlib}
782 %else
783 %post -n mscorlib
784 rm -f %{_datadir}/%{netcoreappdir}/*.Backup
785 %endif
786
787 #From .NET6.0, the version is accumulated in vconf and set in descending order
788 #%{dotnet_version}:x.x.x:~~~:6.0.0
789 %post
790 /usr/bin/vconftool set -t string db/dotnet/runtime_version %{dotnet_version} -f
791 /sbin/ldconfig
792
793 %postun -p /sbin/ldconfig