[Tizen] Publish crossgen2 as a single file with self-contained accepted/tizen/unified/20220110.054933 submit/tizen/20220110.044913
authorj-h.choi <j-h.choi@samsung.com>
Thu, 6 Jan 2022 05:19:15 +0000 (14:19 +0900)
committer이형주/Common Platform Lab(SR)/Principal Engineer/삼성전자 <leee.lee@samsung.com>
Thu, 6 Jan 2022 06:09:11 +0000 (15:09 +0900)
packaging/coreclr.spec
packaging/crossgen2-mic.txt [new file with mode: 0644]

index b58fdad..cd18ae4 100755 (executable)
@@ -193,6 +193,17 @@ Requires:   corefx-managed
 %description -n corefx-test-native
 Unit Test objs, native part
 
+%ifarch x86_64
+%package -n crossgen2-mic
+Summary:       Publish crossgen2 as a single file with self-contained
+Requires: coreclr
+BuildArch: noarch
+AutoReqProv: no
+
+%description -n crossgen2-mic
+Publish crossgen2 as a single file with self-contained
+%endif
+
 %prep
 %setup -q -n %{name}-%{version}
 cp %{SOURCE1} .
@@ -281,6 +292,7 @@ export CLANG_NO_LIBDIR_SUFFIX=1
 %define _reldir_fx_native   artifacts/bin/native/net6.0-Linux-%{dotnet_buildtype_fx}-%{_barch}
 %define _reldir_fx_managed  artifacts/bin/microsoft.netcore.app.runtime.linux-%{_barch}/%{dotnet_buildtype_fx}/runtimes/linux-%{_barch}/lib/net6.0/
 %define _reldir_fx_withoob  artifacts/bin/runtime/net6.0-Linux-%{dotnet_buildtype_fx}-%{_barch}
+%define _reldir_crossgen2_publish  %{_reldir_clr}/crossgen2/linux-%{_barch}/publish
 
 export CFLAGS="${BASE_FLAGS}"
 export CXXFLAGS="${BASE_FLAGS}"
@@ -315,6 +327,12 @@ export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
 # Build native CoreCLR and native CoreFX
 ./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}
 
+%ifarch x86_64
+# Publish crossgen2 as a single file with self-contained
+./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}
+./.dotnet/dotnet publish --self-contained true -r linux-%{_barch} ./src/coreclr/tools/aot/crossgen2/crossgen2.csproj -c Release -p:PublishSingleFile=true
+%endif
+
 %if 0%{skipmscorlib}
 %else
 # Build mscorlib (System.Private.CoreLib.dll)
@@ -385,6 +403,12 @@ mkdir -p %{buildroot}%{_datadir}/%{dotnettizendir}
 mkdir -p %{buildroot}%{_datadir}/%{dotnetfwdir}
 ln -sf %{_datadir}/%{netcoreappdir} %{buildroot}%{_datadir}/%{dotnettizendir}/netcoreapp
 
+%ifarch x86_64
+# .NET Tizen MIC dir
+%define dotnetmicdir /opt/usr/dotnet/mic
+mkdir -p %{buildroot}/%{dotnetmicdir}
+%endif
+
 # 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
@@ -519,6 +543,49 @@ chmod +x %{buildroot}/%{fxtestdir}/runtest.sh
 
 %endif
 
+# crossgen2-mic
+%ifarch x86_64
+cp %{_reldir_crossgen2_publish}/crossgen2                              %{buildroot}%{dotnetmicdir}
+cp %{_reldir_crossgen2_publish}/libjitinterface_x64.so                 %{buildroot}%{dotnetmicdir}
+cp %{_reldir_crossgen2_publish}/libclrjit_unix_armel_x64.so            %{buildroot}%{dotnetmicdir}
+cp %{_reldir_crossgen2_publish}/libclrjit_unix_arm64_x64.so            %{buildroot}%{dotnetmicdir}
+
+result_list=("ld-linux-x86-64.so.2" "libssl.so.1.1")
+search_ldd() {
+  local path=$1
+  local library_list=$2
+  if [ -f $path ]; then
+    ldd_result=$(/usr/bin/ldd $path)
+    echo "$ldd_result" | while read line;
+    do
+      if [[ "$line" != *"GLIBC_"* ]] && [[ "$line" != *"linux-vdso.so.1"* ]] &&
+         [[ "$line" != *"ld-linux-x86-64.so.2"* ]]; then
+        cut_path=`echo $line | cut -d ' ' -f3`
+        cut_name=`echo $line | cut -d ' ' -f1`
+        library_list+=($cut_name)
+        echo "${library_list[@]}"
+        if [ -f $cut_path ]; then
+          result_list+=$(search_ldd $cut_path $library_list)
+        fi
+      fi
+    done
+  fi
+}
+
+result_list+=$(search_ldd %{_reldir_crossgen2_publish}/crossgen2)
+result_list+=$(search_ldd %{_reldir_crossgen2_publish}/libclrjit_unix_armel_x64.so)
+result_list+=$(search_ldd %{_reldir_crossgen2_publish}/libclrjit_unix_arm64_x64.so)
+result_list+=$(search_ldd %{_reldir_crossgen2_publish}/libjitinterface_x64.so)
+result_list+=$(search_ldd %{buildroot}/../../../../../lib64/libssl.so.1.1)
+
+unique_result=($(echo "${result_list[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
+for name in "${unique_result[@]}";
+do
+  cp %{buildroot}/../../../../../lib64/$name    %{buildroot}%{dotnetmicdir}/$name
+done
+cp %{_builddir}/%{name}-%{version}/packaging/crossgen2-mic.txt    %{buildroot}%{dotnetmicdir}
+%endif
+
 # coreclr-test
 %if 0%{skiptests}
 %else
@@ -679,6 +746,13 @@ cp ./nuget/*.nupkg %{buildroot}/nuget
 %manifest %{name}.manifest
 /nuget/*.nupkg
 
+%ifarch x86_64
+%files -n crossgen2-mic
+%manifest %{name}.manifest
+%dir %{dotnetmicdir}
+%{dotnetmicdir}/*
+%endif
+
 %if 0%{skipmscorlib}
 %else
 %post -n mscorlib
diff --git a/packaging/crossgen2-mic.txt b/packaging/crossgen2-mic.txt
new file mode 100644 (file)
index 0000000..4df9f60
--- /dev/null
@@ -0,0 +1,148 @@
+crossgen2-mic.noarch.rpm
+
+crossgen2:
+       linux-vdso.so.1 (0x00007fff92ffe000)
+       libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb96deb3000)
+       libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb96dcaf000)
+       libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fb96da92000)
+       libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007fb96d847000)
+       librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb96d63f000)
+       libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb96d427000)
+       libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb96d09e000)
+       libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb96cd00000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb96c90f000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007fb96eb16000)
+       libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007fb96c639000)
+       libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007fb96c407000)
+       libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007fb96c203000)
+       libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007fb96bff8000)
+       libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007fb96bdf4000)
+       libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fb96bbda000)
+ld-linux-x86-64.so.2:
+       statically linked
+libc.so.6:
+       /lib64/ld-linux-x86-64.so.2 (0x00007fa968ad7000)
+       linux-vdso.so.1 (0x00007ffca4b95000)
+libclrjit_unix_arm64_x64.so:
+       linux-vdso.so.1 (0x00007ffe1ff18000)
+       libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa14ef5c000)
+       libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa14ed3d000)
+       librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fa14eb35000)
+       libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa14e931000)
+       libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa14e5a8000)
+       libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa14e20a000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa14de19000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007fa14f3fa000)
+libclrjit_unix_armel_x64.so:
+       linux-vdso.so.1 (0x00007ffe682b0000)
+       libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff80126d000)
+       libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff80104e000)
+       librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007ff800e46000)
+       libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff800c42000)
+       libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff8008b9000)
+       libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff80051b000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff80012a000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007ff8016e3000)
+libcom_err.so.2:
+       linux-vdso.so.1 (0x00007ffd3a3b9000)
+       libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5befd7f000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5bef98e000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007f5beff9e000)
+libcrypto.so.1.1:
+       linux-vdso.so.1 (0x00007ffd56fb2000)
+       libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f66ac703000)
+       libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f66ac4e4000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f66ac0f3000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007f66acb58000)
+libdl.so.2:
+       linux-vdso.so.1 (0x00007ffd27a9a000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa41c5ec000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007fa41c9dd000)
+libgcc_s.so.1:
+       linux-vdso.so.1 (0x00007ffcb63dc000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f028312f000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007f0283520000)
+libgssapi_krb5.so.2:
+       linux-vdso.so.1 (0x00007fffda2cb000)
+       libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f6d736b2000)
+       libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f6d73480000)
+       libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f6d7327c000)
+       libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f6d73071000)
+       libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f6d72e6d000)
+       libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f6d72c69000)
+       libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f6d72a4f000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6d7265e000)
+       libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f6d7243f000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007f6d73988000)
+libjitinterface_x64.so:
+       linux-vdso.so.1 (0x00007ffe315d0000)
+       libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007faac99fe000)
+       libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007faac9660000)
+       libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007faac9448000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007faac9057000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007faac9d87000)
+libk5crypto.so.3:
+       linux-vdso.so.1 (0x00007ffda41a8000)
+       libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007fd64744f000)
+       libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007fd64724b000)
+       libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fd647031000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd646c40000)
+       libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fd646a3c000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007fd64765a000)
+libkeyutils.so.1:
+       linux-vdso.so.1 (0x00007ffd20929000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f39bc783000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007f39bcb74000)
+libkrb5.so.3:
+       linux-vdso.so.1 (0x00007ffdc49a5000)
+       libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f7973cbe000)
+       libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f7973aba000)
+       libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f79738af000)
+       libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f79736ab000)
+       libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f7973491000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f79730a0000)
+       libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7972e81000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007f7973ef0000)
+       libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7972c7d000)
+libkrb5support.so.0:
+       linux-vdso.so.1 (0x00007ffdcabf4000)
+       libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f1cc8339000)
+       libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f1cc811f000)
+       libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1cc7f1b000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1cc7b2a000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007f1cc853d000)
+libm.so.6:
+       linux-vdso.so.1 (0x00007ffe1d172000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc622c26000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007fc623017000)
+libpthread.so.0:
+       linux-vdso.so.1 (0x00007fff6b9c8000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f72a99e3000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007f72a9dd4000)
+libresolv.so.2:
+       linux-vdso.so.1 (0x00007ffde7898000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb980132000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007fb980523000)
+librt.so.1:
+       linux-vdso.so.1 (0x00007fff3e9ae000)
+       libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fac07686000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fac07295000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007fac078a5000)
+libssl.so.1.1:
+       linux-vdso.so.1 (0x00007ffe01dfc000)
+       libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f96677d9000)
+       libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f96675ba000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f96671c9000)
+       libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9666fc5000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007f9667ca4000)
+libstdc++.so.6:
+       linux-vdso.so.1 (0x00007fff619e7000)
+       libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f34b807b000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f34b7c8a000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007f34b843a000)
+       libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f34b7a72000)
+libz.so.1:
+       linux-vdso.so.1 (0x00007ffdf43d8000)
+       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd91e302000)
+       /lib64/ld-linux-x86-64.so.2 (0x00007fd91e6f3000)
+