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