diff --git a/riscv64_external_files.patch b/riscv64_external_files.patch new file mode 100644 index 0000000000000000000000000000000000000000..89f6baa9769b05d6904064542a624472470d8daf --- /dev/null +++ b/riscv64_external_files.patch @@ -0,0 +1,144 @@ +diff -Nurp external-x86_64/go_sdk/BUILD.bazel external/go_sdk/BUILD.bazel +--- external-x86_64/go_sdk/BUILD.bazel 2023-08-28 15:08:25.000000000 +0800 ++++ external/go_sdk/BUILD.bazel 2023-08-31 11:47:56.000000000 +0800 +@@ -7,8 +7,8 @@ package(default_visibility = ["//visibil + filegroup( + name = "libs", + srcs = glob( +- ["pkg/linux_amd64/**/*.a"], +- exclude = ["pkg/linux_amd64/**/cmd/**"], ++ ["pkg/linux_riscv64/**/*.a"], ++ exclude = ["pkg/linux_riscv64/**/cmd/**"], + ), + ) + +@@ -34,7 +34,7 @@ go_sdk( + name = "go_sdk", + srcs = [":srcs"], + go = "bin/go", +- goarch = "amd64", ++ goarch = "riscv64", + goos = "linux", + headers = [":headers"], + libs = [":libs"], +@@ -60,7 +60,7 @@ package_list( + + declare_toolchains( + builder = ":builder", +- host = "linux_amd64", ++ host = "linux_riscv64", + sdk = ":go_sdk", + ) + +diff -Nurp external-x86_64/go_sdk/src/internal/buildcfg/zbootstrap.go external/go_sdk/src/internal/buildcfg/zbootstrap.go +--- external-x86_64/go_sdk/src/internal/buildcfg/zbootstrap.go 2022-07-12 23:23:16.000000000 +0800 ++++ external/go_sdk/src/internal/buildcfg/zbootstrap.go 2022-07-12 23:23:09.000000000 +0800 +@@ -12,7 +12,7 @@ const defaultGOMIPS64 = `hardfloat` + const defaultGOPPC64 = `power8` + const defaultGOEXPERIMENT = `` + const defaultGO_EXTLINK_ENABLED = `` +-const defaultGO_LDSO = `/lib64/ld-linux-x86-64.so.2` ++const defaultGO_LDSO = `/lib/ld-linux-riscv64-lp64d.so.1` + const version = `go1.18.4` + const defaultGOOS = runtime.GOOS + const defaultGOARCH = runtime.GOARCH +diff -Nurp external-x86_64/local_config_cc/BUILD external/local_config_cc/BUILD +--- external-x86_64/local_config_cc/BUILD 2023-08-30 14:17:49.000000000 +0800 ++++ external/local_config_cc/BUILD 2023-08-31 11:49:36.000000000 +0800 +@@ -47,15 +47,15 @@ filegroup( + cc_toolchain_suite( + name = "toolchain", + toolchains = { +- "k8|compiler": ":cc-compiler-k8", +- "k8": ":cc-compiler-k8", ++ "riscv64|compiler": ":cc-compiler-riscv64", ++ "riscv64": ":cc-compiler-riscv64", + "armeabi-v7a|compiler": ":cc-compiler-armeabi-v7a", + "armeabi-v7a": ":cc-compiler-armeabi-v7a", + }, + ) + + cc_toolchain( +- name = "cc-compiler-k8", ++ name = "cc-compiler-riscv64", + toolchain_identifier = "local", + toolchain_config = ":local", + all_files = ":compiler_deps", +@@ -72,7 +72,7 @@ cc_toolchain( + + cc_toolchain_config( + name = "local", +- cpu = "k8", ++ cpu = "riscv64", + compiler = "compiler", + toolchain_identifier = "local", + host_system_name = "local", +@@ -80,11 +80,11 @@ cc_toolchain_config( + target_libc = "local", + abi_version = "local", + abi_libc_version = "local", +- cxx_builtin_include_directories = ["/usr/lib/gcc/x86_64-openEuler-linux/12/include", ++ cxx_builtin_include_directories = ["/usr/lib/gcc/riscv64-openEuler-linux/12/include", + "/usr/local/include", + "/usr/include", + "/usr/include/c++/12", +- "/usr/include/c++/12/x86_64-openEuler-linux", ++ "/usr/include/c++/12/riscv64-openEuler-linux", + "/usr/include/c++/12/backward"], + tool_paths = {"ar": "/usr/bin/ar", + "ld": "/usr/bin/ld", +diff -Nurp external-x86_64/local_config_cc/builtin_include_directory_paths external/local_config_cc/builtin_include_directory_paths +--- external-x86_64/local_config_cc/builtin_include_directory_paths 2023-08-30 14:17:48.000000000 +0800 ++++ external/local_config_cc/builtin_include_directory_paths 2023-08-31 11:49:24.000000000 +0800 +@@ -4,9 +4,9 @@ changes to it will be reflected in the a + paths change, Bazel will make sure to rerun the action, even though none of + declared action inputs or the action commandline changes. + +-/usr/lib/gcc/x86_64-openEuler-linux/12/include ++/usr/lib/gcc/riscv64-openEuler-linux/12/include + /usr/local/include + /usr/include + /usr/include/c++/12 +-/usr/include/c++/12/x86_64-openEuler-linux ++/usr/include/c++/12/riscv64-openEuler-linux + /usr/include/c++/12/backward +diff -Nurp external-x86_64/local_config_cc_toolchains/BUILD external/local_config_cc_toolchains/BUILD +--- external-x86_64/local_config_cc_toolchains/BUILD 2023-08-30 14:17:45.000000000 +0800 ++++ external/local_config_cc_toolchains/BUILD 2023-08-31 11:47:52.000000000 +0800 +@@ -1,10 +1,10 @@ + load("@local_config_platform//:constraints.bzl", "HOST_CONSTRAINTS") + + toolchain( +- name = "cc-toolchain-k8", ++ name = "cc-toolchain-riscv64", + exec_compatible_with = HOST_CONSTRAINTS, + target_compatible_with = HOST_CONSTRAINTS, +- toolchain = "@local_config_cc//:cc-compiler-k8", ++ toolchain = "@local_config_cc//:cc-compiler-riscv64", + toolchain_type = "@bazel_tools//tools/cpp:toolchain_type", + ) + +diff -Nurp external-x86_64/local_config_platform/constraints.bzl external/local_config_platform/constraints.bzl +--- external-x86_64/local_config_platform/constraints.bzl 2023-08-30 15:04:11.000000000 +0800 ++++ external/local_config_platform/constraints.bzl 2023-09-05 15:51:53.000000000 +0800 +@@ -1,6 +1,6 @@ + # DO NOT EDIT: automatically generated constraints list for local_config_platform + # Auto-detected host platform constraints. + HOST_CONSTRAINTS = [ +- '@platforms//cpu:x86_64', ++ '@platforms//cpu:riscv64', + '@platforms//os:linux', + ] ++ENV:PATH /root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin +diff -Nurp external-x86_64/local_execution_config_platform/BUILD external/local_execution_config_platform/BUILD +--- external-x86_64/local_execution_config_platform/BUILD 2023-08-28 15:02:02.000000000 +0800 ++++ external/local_execution_config_platform/BUILD 2023-08-31 11:47:06.000000000 +0800 +@@ -18,7 +18,7 @@ platform( + name = "platform", + visibility = ["//visibility:public"], + constraint_values = [ +- "@platforms//cpu:x86_64", ++ "@platforms//cpu:riscv64", + "@platforms//os:linux", + ":platform_constraint", + ], diff --git a/tensorflow.spec b/tensorflow.spec index 08f5f7be66ac1de5ad3b9051df38a31b6dbeabb5..a61350a8747ddb6fb469c44b8597c06c88c4df04 100644 --- a/tensorflow.spec +++ b/tensorflow.spec @@ -10,6 +10,7 @@ Source1: external.tar.bz2.partaa Source2: external.tar.bz2.partab Source3: external.tar.bz2.partac Source4: aarch64_external_files.patch +Source5: riscv64_external_files.patch Patch0: modify-deps-on-libclang-gcsfs-gast.patch Patch1: fix-boringssl-compile.patch Requires: python3-future python3-numpy python3-six python3-astunparse python3-google-pasta python3-opt-einsum @@ -29,6 +30,7 @@ Provides: python-tensorflow Provides: python%{python3_version}dist(tensorflow) = %{version} BuildRequires: bazel == 5.3.0 gcc gcc-c++ git BuildRequires: python3-numpy python3-devel python3-Keras-Preprocessing python3-pip python3-wheel python3-packaging python3-requests +BuildRequires: mold %description -n python3-tensorflow TensorFlow is an end-to-end open source platform for machine learning. It has a comprehensive, flexible ecosystem of tools, libraries, and community resources that lets researchers push the state-of-the-art in ML and developers easily build and deploy ML-powered applications. @@ -47,6 +49,9 @@ tar xf external.tar.bz2 -C ${extdir} %ifarch aarch64 patch -d ${extdir} -p0 < %{SOURCE4} %endif +%ifarch riscv64 +patch -d ${extdir} -p0 < %{SOURCE5} +%endif ln -sfn ${instdir}/embedded_tools ${extdir}/external/bazel_tools for f in $(find $extdir/external -lname "*/external/*"); do OLDLINK=$(readlink $f); echo $OLDLINK; NEWLINK=${extdir}/external/${OLDLINK#*external}; ln -sf $NEWLINK $f-newlink; mv -Tf $f-newlink $f; done for f in $(find $extdir/external -lname "*/rpmbuild/*"); do OLDLINK=$(readlink $f); echo $OLDLINK; NEWLINK=${HOME}/rpmbuild/${OLDLINK#*rpmbuild}; ln -sf $NEWLINK $f-newlink; mv -Tf $f-newlink $f;done @@ -56,7 +61,12 @@ for f in $(find $extdir/external -lname "*/rpmbuild/*"); do OLDLINK=$(readlink $ mkdir -p ${HOME}/.local/bin ln -s -f -T $(command -v python3) ${HOME}/.local/bin/python export PATH=${HOME}/.local/bin:$PATH -bazel --output_user_root=`pwd`/../output_user_root build --nofetch --host_copt=-Wno-stringop-truncation //tensorflow/tools/pip_package:build_pip_package --verbose_failures --experimental_local_memory_estimate --jobs=16 +bazel --output_user_root=`pwd`/../output_user_root build \ + --linkopt -fuse-ld=mold \ + --define=build_with_mkl=false --define=enable_mkl=false --define=tensorflow_mkldnn_contraction_kernel=0 \ + --define=build_with_mkl_dnn_v1_only=false --define=tensorflow_use_mkldnn=false --define=build_with_openmp=false \ + --host_copt=-Wno-stringop-truncation //tensorflow/tools/pip_package:build_pip_package \ + --verbose_failures --experimental_local_memory_estimate --jobs=64 ./bazel-bin/tensorflow/tools/pip_package/build_pip_package dist %install