diff --git a/science/py-tensorflow/Makefile b/science/py-tensorflow/Makefile index d8a810ed5057..75b162628505 100644 --- a/science/py-tensorflow/Makefile +++ b/science/py-tensorflow/Makefile @@ -1,164 +1,165 @@ PORTNAME= tensorflow DISTVERSIONPREFIX= v DISTVERSION= 1.15.5 PORTREVISION= 2 CATEGORIES= science python PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} DIST_SUBDIR= ${PORTNAME} EXTRACT_ONLY= ${DISTNAME}.tar.gz MAINTAINER= amzo1337@gmail.com COMMENT= Computation using data flow graphs for scalable machine learning LICENSE= APACHE20 LICENSE_FILE= ${WRKSRC}/LICENSE -ONLY_FOR_ARCHS= amd64 +ONLY_FOR_ARCHS= amd64 powerpc64 BUILD_DEPENDS= ${RUN_DEPENDS} \ ${PYTHON_PKGNAMEPREFIX}grpcio-tools>=1.22.0:devel/py-grpcio-tools@${PY_FLAVOR} \ bash:shells/bash \ cython:lang/cython \ swig:devel/swig \ bazel:devel/bazel029 \ git:devel/git LIB_DEPENDS= libsnappy.so:archivers/snappy \ liblmdb.so:databases/lmdb \ libsqlite3.so:databases/sqlite3 \ libicuio.so:devel/icu \ libjsoncpp.so:devel/jsoncpp \ libpcre.so:devel/pcre \ libnsync.so:devel/nsync \ libprotobuf.so:devel/protobuf \ libprotobuf-c.so:devel/protobuf-c \ libre2.so:devel/re2 \ libgif.so:graphics/giflib \ libpng.so:graphics/png \ libgpr.so:devel/grpc \ libcurl.so:ftp/curl \ libgoogle_cloud_cpp_common.so:devel/google-cloud-cpp117 \ libflatbuffers.so:devel/flatbuffers \ libdouble-conversion.so:devel/double-conversion RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}absl>=0.7.0:devel/py-absl@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}astor>=0.5:devel/py-astor@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}gast>=0.2.2:devel/py-gast@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}numpy>=1.11.2:math/py-numpy@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}google-pasta>=0.1.7:devel/py-google-pasta@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}protobuf>=3.7.1:devel/py-protobuf@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}six>=1.10.0:devel/py-six@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}termcolor>=1.1.0:devel/py-termcolor@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}grpcio>=1.22.0:devel/py-grpcio@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}keras>=2.2.4:math/py-keras@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}wrapt>=1.11.2:devel/py-wrapt@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}wheel>=0.30.0:devel/py-wheel@${PY_FLAVOR} USES= python:3.7+ shebangfix jpeg ssl compiler:c++17-lang SHEBANG_GLOB= *.py USE_GITHUB= yes USE_PYTHON= distutils BAZEL_BOOT= --output_user_root=${WRKDIR}/bazel_out PLIST_SUB= TF_PORT_VERSION=${PORTVERSION} OPTIONS_DEFINE= CPU_OPTS CPU_OPTS_DESC= Enable optimisations using features available on your CPU CPU_OPTS_VARS= CPU_TARGET=native BAZEL_COPT="-c opt --copt=-march=native --copt=-mfpmath=sse" CPU_OPTS_VARS_OFF= CPU_TARGET=x86-64 .include "Makefile.MASTER_SITES" post-patch: # Set up a local repository with our pre-downloaded packages # This prevents bazel downloading the files without modifying # the bzl files. @${MKDIR} ${WRKDIR}/bazel-cache @${MKDIR} ${WRKDIR}/bazel-distdir + @${CP} ${FILESDIR}/extra-patch-absl_base_internal_unscaledcycleclock.cc ${WRKSRC}/third_party/ .for file in ${DISTFILES:C/\:(.*)//} @${ECHO} "Moving ${file} to ${WRKDIR}/bazel-cache" @${CP} ${DISTDIR}/${DIST_SUBDIR}/${file} ${WRKDIR}/bazel-distdir .endfor @cd ${WRKSRC} && \ ${REINPLACE_CMD} "s#--batch#${BAZEL_BOOT}\', \'--batch#" \ configure.py @${CP} ${PATCHDIR}/bazelrc ${WRKDIR}/bazelrc @${REINPLACE_CMD} "s#%%BAZEL_DIR%%#${WRKDIR}#" ${WRKDIR}/bazelrc @${REINPLACE_CMD} "s#%%BAZEL_DIST%%#${WRKDIR}#" ${WRKDIR}/bazelrc @${REINPLACE_CMD} "s#%%LOCALBASE%%#${LOCALBASE}#" ${WRKDIR}/bazelrc \ ${WRKSRC}/tensorflow/tensorflow.bzl ${WRKSRC}/.bazelrc \ ${WRKSRC}/tensorflow/core/BUILD \ ${WRKSRC}/third_party/systemlibs/protobuf.bzl \ ${WRKSRC}/tensorflow/core/profiler/rpc/client/BUILD \ ${WRKSRC}/WORKSPACE \ ${WRKSRC}/tensorflow/core/profiler/internal/BUILD \ ${WRKSRC}/tensorflow/contrib/ffmpeg/default/BUILD \ ${WRKSRC}/third_party/flatbuffers/BUILD.system do-configure: @cd ${WRKSRC} && ${SETENV} \ BAZEL_CXXOPTS="-std=c++1z" \ PYTHON_BIN_PATH=${PYTHON_CMD} \ PYTHON_LIB_PATH="${PYTHON_SITELIBDIR}" \ TF_NEED_JEMALLOC=0 \ TF_NEED_KAFKA=0 \ TF_NEED_OPENCL_SYCL=0 \ TF_NEED_AWS=0 \ TF_NEED_GCP=0 \ TF_NEED_HDFS=0 \ TF_NEED_S3=0 \ TF_ENABLE_XLA=0 \ TF_NEED_GDR=0 \ TF_NEED_VERBS=0 \ TF_NEED_OPENCL=0 \ TF_NEED_MPI=0 \ TF_NEED_TENSORRT=0 \ TF_NEED_NGRAPH=0 \ TF_NEED_IGNITE=0 \ TF_NEED_ROCM=0 \ TF_NEED_CUDA=0 \ TF_SET_ANDROID_WORKSPACE=0 \ TF_DOWNLOAD_CLANG=0 \ TF_NEED_NCCL=0 \ TF_NEED_OPENCL=0 \ TF_IGNORE_MAX_BAZEL_VERSION=1 \ CC_OPT_FLAGS="-march=${CPU_TARGET} -I${LOCALBASE}/include" \ PREFIX="${LOCALBASE}" \ TF_SYSTEM_LIBS="absl_py astor_archive boringssl com_github_googleapis_googleapis com_github_googlecloudplatform_google_cloud_cpp com_google_protobuf com_googlesource_code_re2 \ curl cython double_conversion enum34_archive flatbuffers functools32_archive gast_archive gif_archive grpc hwloc icu jpeg jsoncpp_git keras_applications_archive \ lmdb nasm nsync opt_einsum_archive org_sqlite pasta pcre png_archive six_archive snappy swig termcolor_archive wrapt zlib_archive" \ ./configure do-build: @cd ${WRKSRC} && \ bazel --bazelrc="${WRKDIR}/bazelrc" ${BAZEL_BOOT} build --jobs 16 ${BAZEL_COPT} --host_copt="-I${LOCALBASE}/include" \ --host_linkopt="-L${LOCALBASE}/lib" --linkopt="-L${LOCALBASE}/lib" --config=c++17 --copt="-I${LOCALBASE}/include" \ --cxxopt="--std=c++1z" --verbose_failures -s \ --distdir=${WORKDIR}/bazel-dist \ //tensorflow:libtensorflow_framework.so \ //tensorflow:libtensorflow.so \ //tensorflow:libtensorflow_cc.so \ //tensorflow/tools/pip_package:build_pip_package @cd ${WRKSRC} && ${SETENV} TMPDIR=${WRKDIR} \ bazel-bin/tensorflow/tools/pip_package/build_pip_package \ ${WRKDIR}/whl do-install: @${MKDIR} ${STAGEDIR}/${PYTHON_SITELIBDIR} @${MKDIR} ${WRKDIR}/tmp @${UNZIP_NATIVE_CMD} -d ${WRKDIR}/tmp ${WRKDIR}/whl/${PORTNAME}-${PORTVERSION}-*.whl @${FIND} ${WRKDIR}/tmp -name "*.so*" | ${XARGS} ${STRIP_CMD} cd ${WRKDIR}/tmp && ${COPYTREE_SHARE} ${PORTNAME}-${PORTVERSION}.dist-info \ ${STAGEDIR}${PYTHON_SITELIBDIR} cd ${WRKDIR}/tmp/${PORTNAME}-${PORTVERSION}.data/purelib && \ ${COPYTREE_SHARE} . ${STAGEDIR}${PYTHON_SITELIBDIR} post-install: # autoplist: thousands of files, all under ${PYTHON_SITELIBDIR} @cd ${STAGEDIR}${PREFIX} && \ ${FIND} ${PYTHON_SITELIBDIR:C|^${LOCALBASE}/||} -type f -or -type l | grep -v "egg-info/" >> ${TMPPLIST} .include diff --git a/science/py-tensorflow/files/extra-patch-absl_base_internal_unscaledcycleclock.cc b/science/py-tensorflow/files/extra-patch-absl_base_internal_unscaledcycleclock.cc new file mode 100644 index 000000000000..43bbada5c4bb --- /dev/null +++ b/science/py-tensorflow/files/extra-patch-absl_base_internal_unscaledcycleclock.cc @@ -0,0 +1,47 @@ +--- a/absl/base/internal/unscaledcycleclock.cc.orig 2021-10-11 21:53:31.946215000 +0200 ++++ b/absl/base/internal/unscaledcycleclock.cc 2021-10-11 21:57:54.536557000 +0200 +@@ -21,8 +21,15 @@ + #endif + + #if defined(__powerpc__) || defined(__ppc__) ++#ifdef __linux__ + #include ++#else ++#include "absl/base/call_once.h" ++#include ++#include ++#include + #endif ++#endif + + #include "absl/base/internal/sysinfo.h" + +@@ -56,11 +63,28 @@ + #elif defined(__powerpc__) || defined(__ppc__) + + int64_t UnscaledCycleClock::Now() { ++#ifdef __linux__ + return __ppc_get_timebase(); ++#else ++ int64_t tbr; ++ asm volatile("mfspr %0, 268" : "=r"(tbr)); ++ return tbr; ++#endif + } + + double UnscaledCycleClock::Frequency() { ++#ifdef __linux__ + return __ppc_get_timebase_freq(); ++#else ++ static once_flag init_timebase_frequency_once; ++ static double timebase_frequency = 0.0; ++ base_internal::LowLevelCallOnce(&init_timebase_frequency_once, [&]() { ++ size_t length = sizeof(timebase_frequency); ++ sysctlbyname("kern.timecounter.tc.timebase.frequency", &timebase_frequency, ++ &length, nullptr, 0); ++ }); ++ return timebase_frequency; ++#endif + } + + #elif defined(__aarch64__) diff --git a/science/py-tensorflow/files/patch-tensorflow_workspace.bzl b/science/py-tensorflow/files/patch-tensorflow_workspace.bzl index d25f9d632e8e..45a4a12c3d2b 100644 --- a/science/py-tensorflow/files/patch-tensorflow_workspace.bzl +++ b/science/py-tensorflow/files/patch-tensorflow_workspace.bzl @@ -1,10 +1,18 @@ ---- tensorflow/workspace.bzl.orig 2021-07-08 11:05:27 UTC +--- tensorflow/workspace.bzl.orig 2021-01-04 20:18:42 UTC +++ tensorflow/workspace.bzl -@@ -324,6 +324,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = " +@@ -157,6 +157,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = " + tf_http_archive( + name = "com_google_absl", + build_file = clean_dep("//third_party:com_google_absl.BUILD"), ++ patch_file = clean_dep("//third_party:extra-patch-absl_base_internal_unscaledcycleclock.cc"), + sha256 = "acd93f6baaedc4414ebd08b33bebca7c7a46888916101d8c0b8083573526d070", + strip_prefix = "abseil-cpp-43ef2148c0936ebf7cb4be6b19927a9d9d145b8f", + urls = [ +@@ -324,6 +325,7 @@ def tf_repositories(path_prefix = "", tf_repo_name = " build_file = clean_dep("//third_party:functools32.BUILD"), sha256 = "f6253dfbe0538ad2e387bd8fdfd9293c925d63553f5813c4e587745416501e6d", strip_prefix = "functools32-3.2.3-2", + system_build_file = clean_dep("//third_party/systemlibs:functools32.BUILD"), urls = [ "https://storage.googleapis.com/mirror.tensorflow.org/pypi.python.org/packages/c5/60/6ac26ad05857c601308d8fb9e87fa36d0ebf889423f47c3502ef034365db/functools32-3.2.3-2.tar.gz", "https://pypi.python.org/packages/c5/60/6ac26ad05857c601308d8fb9e87fa36d0ebf889423f47c3502ef034365db/functools32-3.2.3-2.tar.gz",