diff --git a/riscv64_external_files.patch b/riscv64_external_files.patch new file mode 100644 index 0000000000000000000000000000000000000000..6d2a62a76a8ce47490cc161e8dac3b2ceb837cf3 --- /dev/null +++ b/riscv64_external_files.patch @@ -0,0 +1,163 @@ +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", +@@ -110,8 +110,7 @@ cc_toolchain_config( + "-fdata-sections"], + dbg_compile_flags = ["-g"], + cxx_flags = ["-std=c++0x"], +- link_flags = ["-fuse-ld=gold", +- "-Wl,-no-as-needed", ++ link_flags = ["-Wl,-no-as-needed", + "-Wl,-z,relro,-z,now", + "-B/usr/bin", + "-pass-exit-codes"], +@@ -125,7 +124,7 @@ cc_toolchain_config( + "-D__TIME__=\"redacted\""], + coverage_compile_flags = ["--coverage"], + coverage_link_flags = ["--coverage"], +- supports_start_end_lib = True, ++ supports_start_end_lib = False, + ) + + # Android tooling requires a default toolchain for the armeabi-v7a cpu. +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 6b720e8456d7e21d586a257085f59fde9762e320..a9666fcc6c40948cb8eb37521f42cc8fd7b9c052 100644 --- a/tensorflow.spec +++ b/tensorflow.spec @@ -1,7 +1,7 @@ %global _empty_manifest_terminate_build 0 Name: tensorflow Version: 2.12.1 -Release: 3 +Release: 4 Summary: An Open Source Machine Learning Framework for Everyone License: Apache License 2.0 URL: https://www.tensorflow.org/ @@ -14,6 +14,9 @@ Patch1: fix-boringssl-compile.patch %ifarch aarch64 Patch1000: aarch64_external_files.patch %endif +%ifarch riscv64 +Patch1100: riscv64_external_files.patch +%endif Requires: python3-future python3-numpy python3-six python3-astunparse python3-google-pasta python3-opt-einsum Requires: python3-typing-extensions python3-wrapt python3-h5py python3-protobuf python3-grpcio python3-absl-py Requires: python3-flatbuffers python3-gast @@ -51,6 +54,9 @@ tar xf external.tar.bz2 -C ${extdir} %ifarch aarch64 %patch 1000 -p0 -d ${extdir} %endif +%ifarch riscv64 +%patch 1100 -p0 -d ${extdir} +%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 @@ -60,7 +66,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 +%ifarch riscv64 +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 \ +--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 +%else 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 +%endif ./bazel-bin/tensorflow/tools/pip_package/build_pip_package dist %install @@ -71,6 +82,9 @@ bazel --output_user_root=`pwd`/../output_user_root build --nofetch --host_copt=- %{_bindir}/* %changelog +* Thu Mar 20 2025 Dingli Zhang - 2.12.1-4 +- Add support for riscv64 + * Fri Jan 03 2025 misaka00251 - 2.12.1-3 - Use patch macro instead of patch command