diff --git a/math/libtensorflow/Makefile b/math/libtensorflow/Makefile new file mode 100644 index 000000000000..3e8c7a46187b --- /dev/null +++ b/math/libtensorflow/Makefile @@ -0,0 +1,112 @@ +PORTNAME= libtensorflow +DISTVERSIONPREFIX= v +DISTVERSION= 2.7.0 +CATEGORIES= math + +MAINTAINER= wamuir@gmail.com +COMMENT= C API for TensorFlow, an open source platform for machine learning + +LICENSE= APACHE20 THIRD_PARTY_TF_C_LICENSES +LICENSE_COMB= multi +LICENSE_NAME_THIRD_PARTY_TF_C_LICENSES= Third-Party TensorFlow C Licenses +LICENSE_FILE_APACHE20= ${WRKSRC}/LICENSE +LICENSE_FILE_THIRD_PARTY_TF_C_LICENSES= ${WRKDIR}/THIRD_PARTY_TF_C_LICENSES +LICENSE_PERMS_THIRD_PARTY_TF_C_LICENSES= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept + +ONLY_FOR_ARCHS= amd64 + +BUILD_DEPENDS= bash:shells/bash \ + bazel>=4.0.0:devel/bazel \ + git:devel/git \ + ${PYNUMPY} + +USES= python:3.8,build +BINARY_ALIAS= python3=${PYTHON_CMD} +BINARY_ALIAS+= python=${PYTHON_CMD} + +USE_GITHUB= yes +GH_ACCOUNT= tensorflow +GH_PROJECT= tensorflow +GH_TAGNAME= 2d1aa68bbbc756829fbe3f910e4394c1aa1fbb7d + +USE_LDCONFIG= yes + +BAZEL_OPTS= --output_user_root=${WRKDIR}/bazel_out +CC?= clang + +post-extract: + # THIRD_PARTY_TF_C_LICENSES is generated as a Bazel build target (see + # //tensorflow/tools/lib_package:clicenses) and the empty file written + # here will be overwritten. Creation of this file is to satisfy checks. + @${TOUCH} ${WRKDIR}/THIRD_PARTY_TF_C_LICENSES + +do-configure: + @cd ${WRKSRC} && ${SETENV} \ + CC_OPT_FLAGS="-I${LOCALBASE}/include" \ + PREFIX="${LOCALBASE}" \ + PYTHON_BIN_PATH=${PYTHON_CMD} \ + PYTHON_LIB_PATH="${PYTHON_SITELIBDIR}" \ + TF_CONFIGURE_IOS=0 \ + TF_DOWNLOAD_CLANG=0 \ + TF_ENABLE_XLA=0 \ + TF_IGNORE_MAX_BAZEL_VERSION=0 \ + TF_NEED_CUDA=0 \ + TF_NEED_MPI=0 \ + TF_NEED_OPENCL=0 \ + TF_NEED_ROCM=0 \ + TF_NEED_TENSORRT=0 \ + TF_SET_ANDROID_WORKSPACE=0 \ + ${LOCALBASE}/bin/bash ./configure + +do-build: + @cd ${WRKSRC} && ${LOCALBASE}/bin/bazel ${BAZEL_OPTS} build -s \ + ${BAZEL_ARGS} \ + --action_env=PATH=${PATH} \ + --config=release_cpu_freebsd \ + --verbose_failures \ + //tensorflow/tools/lib_package:clicenses_generate \ + //tensorflow/tools/lib_package:libtensorflow.tar.gz + +do-test: + @cd ${WRKSRC} && ${LOCALBASE}/bin/bazel ${BAZEL_OPTS} test -s \ + ${BAZEL_ARGS} \ + --action_env=PATH=${PATH} \ + --config=release_cpu_freebsd \ + --test_env=CC=${CC} \ + --verbose_failures \ + //tensorflow/tools/lib_package:libtensorflow_test + +pre-install: + @${CP} ${WRKSRC}/bazel-bin/tensorflow/tools/lib_package/THIRD_PARTY_TF_C_LICENSES ${WRKDIR}/THIRD_PARTY_TF_C_LICENSES + @${MKDIR} ${WRKDIR}/lib_package + @tar xz -C ${WRKDIR}/lib_package -f ${WRKSRC}/bazel-bin/tensorflow/tools/lib_package/libtensorflow.tar.gz + ${MKDIR} ${STAGEDIR}${PREFIX}/include/tensorflow + ${MKDIR} ${STAGEDIR}${PREFIX}/include/tensorflow/c + ${MKDIR} ${STAGEDIR}${PREFIX}/include/tensorflow/c/eager + ${MKDIR} ${STAGEDIR}${PREFIX}/include/tensorflow/core + ${MKDIR} ${STAGEDIR}${PREFIX}/include/tensorflow/core/platform + +do-install: + ${INSTALL_DATA} ${WRKDIR}/lib_package/include/tensorflow/c/c_api.h ${STAGEDIR}${PREFIX}/include/tensorflow/c/c_api.h + ${INSTALL_DATA} ${WRKDIR}/lib_package/include/tensorflow/c/c_api_experimental.h ${STAGEDIR}${PREFIX}/include/tensorflow/c/c_api_experimental.h + ${INSTALL_DATA} ${WRKDIR}/lib_package/include/tensorflow/c/c_api_macros.h ${STAGEDIR}${PREFIX}/include/tensorflow/c/c_api_macros.h + ${INSTALL_DATA} ${WRKDIR}/lib_package/include/tensorflow/c/tensor_interface.h ${STAGEDIR}${PREFIX}/include/tensorflow/c/tensor_interface.h + ${INSTALL_DATA} ${WRKDIR}/lib_package/include/tensorflow/c/tf_attrtype.h ${STAGEDIR}${PREFIX}/include/tensorflow/c/tf_attrtype.h + ${INSTALL_DATA} ${WRKDIR}/lib_package/include/tensorflow/c/tf_datatype.h ${STAGEDIR}${PREFIX}/include/tensorflow/c/tf_datatype.h + ${INSTALL_DATA} ${WRKDIR}/lib_package/include/tensorflow/c/tf_file_statistics.h ${STAGEDIR}${PREFIX}/include/tensorflow/c/tf_file_statistics.h + ${INSTALL_DATA} ${WRKDIR}/lib_package/include/tensorflow/c/tf_status.h ${STAGEDIR}${PREFIX}/include/tensorflow/c/tf_status.h + ${INSTALL_DATA} ${WRKDIR}/lib_package/include/tensorflow/c/tf_tensor.h ${STAGEDIR}${PREFIX}/include/tensorflow/c/tf_tensor.h + ${INSTALL_DATA} ${WRKDIR}/lib_package/include/tensorflow/c/tf_tstring.h ${STAGEDIR}${PREFIX}/include/tensorflow/c/tf_tstring.h + ${INSTALL_DATA} ${WRKDIR}/lib_package/include/tensorflow/core/platform/ctstring.h ${STAGEDIR}${PREFIX}/include/tensorflow/core/platform/ctstring.h + ${INSTALL_DATA} ${WRKDIR}/lib_package/include/tensorflow/core/platform/ctstring_internal.h ${STAGEDIR}${PREFIX}/include/tensorflow/core/platform/ctstring_internal.h + ${INSTALL_PROGRAM} ${WRKDIR}/lib_package/lib/libtensorflow.so.${DISTVERSION} ${STAGEDIR}${PREFIX}/lib/libtensorflow.so.${DISTVERSION} + @${RLN} ${STAGEDIR}${PREFIX}/lib/libtensorflow.so.${DISTVERSION} ${STAGEDIR}${PREFIX}/lib/libtensorflow.so.2 + @${RLN} ${STAGEDIR}${PREFIX}/lib/libtensorflow.so.2 ${STAGEDIR}${PREFIX}/lib/libtensorflow.so + ${INSTALL_PROGRAM} ${WRKDIR}/lib_package/lib/libtensorflow_framework.so.${DISTVERSION} ${STAGEDIR}${PREFIX}/lib/libtensorflow_framework.so.${DISTVERSION} + @${RLN} ${STAGEDIR}${PREFIX}/lib/libtensorflow_framework.so.${DISTVERSION} ${STAGEDIR}${PREFIX}/lib/libtensorflow_framework.so.2 + @${RLN} ${STAGEDIR}${PREFIX}/lib/libtensorflow_framework.so.2 ${STAGEDIR}${PREFIX}/lib/libtensorflow_framework.so + ${INSTALL_DATA} ${WRKDIR}/lib_package/include/tensorflow/c/eager/c_api.h ${STAGEDIR}${PREFIX}/include/tensorflow/c/eager/c_api.h + ${INSTALL_DATA} ${WRKDIR}/lib_package/include/tensorflow/c/eager/c_api_experimental.h ${STAGEDIR}${PREFIX}/include/tensorflow/c/eager/c_api_experimental.h + ${INSTALL_DATA} ${WRKDIR}/lib_package/include/tensorflow/c/eager/dlpack.h ${STAGEDIR}${PREFIX}/include/tensorflow/c/eager/dlpack.h + +.include diff --git a/math/libtensorflow/distinfo b/math/libtensorflow/distinfo new file mode 100644 index 000000000000..065aea6a649a --- /dev/null +++ b/math/libtensorflow/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1632115916 +SHA256 (tensorflow-tensorflow-v2.7.0-2d1aa68bbbc756829fbe3f910e4394c1aa1fbb7d_GH0.tar.gz) = b1464eb20abf80e11df4b0d2b09f5df7cac4d7f44a3e1157ae4b0e8a1ce14e4b +SIZE (tensorflow-tensorflow-v2.7.0-2d1aa68bbbc756829fbe3f910e4394c1aa1fbb7d_GH0.tar.gz) = 57752615 diff --git a/math/libtensorflow/files/patch-.bazelrc b/math/libtensorflow/files/patch-.bazelrc new file mode 100644 index 000000000000..d5f5ecad9fef --- /dev/null +++ b/math/libtensorflow/files/patch-.bazelrc @@ -0,0 +1,47 @@ +--- .bazelrc.orig 2021-09-16 14:19:53 UTC ++++ .bazelrc +@@ -299,6 +299,10 @@ build:windows --copt=/D_USE_MATH_DEFINES + build:windows --host_copt=/D_USE_MATH_DEFINES + + # Default paths for TF_SYSTEM_LIBS ++build:freebsd --define=PREFIX=/usr/local ++build:freebsd --define=LIBDIR=$(PREFIX)/lib ++build:freebsd --define=INCLUDEDIR=$(PREFIX)/include ++build:freebsd --define=PROTOBUF_INCLUDE_PATH=$(PREFIX)/include + build:linux --define=PREFIX=/usr + build:linux --define=LIBDIR=$(PREFIX)/lib + build:linux --define=INCLUDEDIR=$(PREFIX)/include +@@ -312,6 +316,8 @@ build:macos --define=PROTOBUF_INCLUDE_PATH=$(PREFIX)/i + # By default, build TF in C++ 14 mode. + build:android --cxxopt=-std=c++14 + build:android --host_cxxopt=-std=c++14 ++build:freebsd --cxxopt=-std=c++14 ++build:freebsd --host_cxxopt=-std=c++14 + build:ios --cxxopt=-std=c++14 + build:ios --host_cxxopt=-std=c++14 + build:linux --cxxopt=-std=c++14 +@@ -321,6 +327,14 @@ build:macos --host_cxxopt=-std=c++14 + build:windows --cxxopt=/std:c++14 + build:windows --host_cxxopt=/std:c++14 + ++# On freebsd, link backtrace access library ++build:freebsd --linkopt=-lexecinfo ++build:freebsd --host_linkopt=-lexecinfo ++ ++# On freebsd, warn on unresolved symbols (llvm/lib/support) ++build:freebsd --linkopt=-Wl,--warn-unresolved-symbols ++build:freebsd --host_linkopt=-Wl,--warn-unresolved-symbols ++ + # On windows, we still link everything into a single DLL. + build:windows --config=monolithic + +@@ -589,6 +603,9 @@ test:release_cpu_linux --test_env=LD_LIBRARY_PATH + build:release_cpu_macos --config=release_base + build:release_cpu_macos --config=avx_linux + ++build:release_cpu_freebsd --config=release_base ++build:release_cpu_freebsd --config=avx_linux ++ + build:release_gpu_base --config=cuda + build:release_gpu_base --action_env=TF_CUDA_VERSION="11" + build:release_gpu_base --action_env=TF_CUDNN_VERSION="8" diff --git a/math/libtensorflow/files/patch-third__party_remote__config_remote__platform__configure.bzl b/math/libtensorflow/files/patch-third__party_remote__config_remote__platform__configure.bzl new file mode 100644 index 000000000000..b58136b967d4 --- /dev/null +++ b/math/libtensorflow/files/patch-third__party_remote__config_remote__platform__configure.bzl @@ -0,0 +1,11 @@ +--- third_party/remote_config/remote_platform_configure.bzl.orig 2021-09-19 02:13:34 UTC ++++ third_party/remote_config/remote_platform_configure.bzl +@@ -8,6 +8,8 @@ def _remote_platform_configure_impl(repository_ctx): + platform = "windows" + elif os.startswith("mac os"): + platform = "osx" ++ elif os.startswith("freebsd"): ++ platform = "freebsd" + else: + platform = "linux" + diff --git a/math/libtensorflow/pkg-descr b/math/libtensorflow/pkg-descr new file mode 100644 index 000000000000..8517ee1aca84 --- /dev/null +++ b/math/libtensorflow/pkg-descr @@ -0,0 +1,7 @@ +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. The TensorFlow C API is typically a +requirement of TensorFlow APIs in other languages such as Go and Rust. + +WWW: https://www.tensorflow.org/install/lang_c diff --git a/math/libtensorflow/pkg-plist b/math/libtensorflow/pkg-plist new file mode 100644 index 000000000000..37489544413e --- /dev/null +++ b/math/libtensorflow/pkg-plist @@ -0,0 +1,26 @@ +@dir include/tensorflow +@dir include/tensorflow/c +@dir include/tensorflow/c/eager +@dir include/tensorflow/core +@dir include/tensorflow/core/platform +include/tensorflow/c/c_api.h +include/tensorflow/c/c_api_experimental.h +include/tensorflow/c/c_api_macros.h +include/tensorflow/c/tensor_interface.h +include/tensorflow/c/tf_attrtype.h +include/tensorflow/c/tf_datatype.h +include/tensorflow/c/tf_file_statistics.h +include/tensorflow/c/tf_status.h +include/tensorflow/c/tf_tensor.h +include/tensorflow/c/tf_tstring.h +include/tensorflow/core/platform/ctstring.h +include/tensorflow/core/platform/ctstring_internal.h +lib/libtensorflow.so.2.7.0 +lib/libtensorflow_framework.so.2.7.0 +lib/libtensorflow_framework.so +lib/libtensorflow_framework.so.2 +lib/libtensorflow.so +lib/libtensorflow.so.2 +include/tensorflow/c/eager/c_api.h +include/tensorflow/c/eager/c_api_experimental.h +include/tensorflow/c/eager/dlpack.h