<pre style='margin:0'>
Chris Jones (cjones051073) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/ad12e8f54167e5ce6a70c79062a105b71fb25ead">https://github.com/macports/macports-ports/commit/ad12e8f54167e5ce6a70c79062a105b71fb25ead</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new ad12e8f py-tensorflow : Add support for builds on older OSX versions
</span>ad12e8f is described below
<span style='display:block; white-space:pre;color:#808000;'>commit ad12e8f54167e5ce6a70c79062a105b71fb25ead
</span>Author: Chris Jones <jonesc@macports.org>
AuthorDate: Sun Oct 21 15:27:18 2018 +0100
<span style='display:block; white-space:pre;color:#404040;'> py-tensorflow : Add support for builds on older OSX versions
</span>---
python/py-tensorflow/Portfile | 65 +++++++++++++++++-----
.../files/CLOCK_REALTIME-Older-OSX.patch | 30 ++++++++++
2 files changed, 80 insertions(+), 15 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-tensorflow/Portfile b/python/py-tensorflow/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index ef7e96b..ed9357d 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-tensorflow/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-tensorflow/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,19 +1,21 @@
</span> # -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
<span style='display:block; white-space:pre;background:#ffe0e0;'>-PortSystem 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-PortGroup python 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-PortGroup cxx11 1.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-PortGroup github 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-PortGroup compilers 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup python 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup cxx11 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup compilers 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup xcodeversion 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup compiler_blacklist_versions 1.0
</span>
name py-tensorflow
version 1.11.0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 2
</span> github.setup tensorflow tensorflow ${version} v
platforms darwin
supported_archs x86_64
license Apache-2
<span style='display:block; white-space:pre;background:#ffe0e0;'>-maintainers {emcrisostomo @emcrisostomo} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers {emcrisostomo @emcrisostomo} {jonesc @cjones051073} openmaintainer
</span>
description TensorFlow helps the tensors flow
long_description ${description}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -24,6 +26,20 @@ checksums rmd160 2d04a8f1c0b0796d4a817f82f5743929bc9a6fb9 \
</span> sha256 55833b40782b636994ef85a875306fc5a4301335342af58eaeb6c37971c68f26 \
size 25030426
<span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.blacklist-append {clang < 710}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.pre_args -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# The oldest Xcode version to use default Xcode compiler
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Note setting here should be in sync with that in bazel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set tf_min_xcode 9.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.major} < 16} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Work around for issues with clock_gettime(CLOCK_REALTIME, &ts);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # https://stackoverflow.com/questions/5167269/clock-gettime-alternative-in-mac-os-x
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patchfiles-append CLOCK_REALTIME-Older-OSX.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> variant native description {Build from source for best native platform support} { }
# tensorflow does not yet support python 3.7 or newer..
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -59,19 +75,43 @@ if {${name} ne ${subport}} {
</span> # Options passed to configure script via env vars
configure.env-append PYTHON_LIB_PATH=${python.prefix}/lib/python${python.branch}/site-packages
configure.env-append PYTHON_BIN_PATH=${prefix}/bin/python${python.branch}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ build.env-append TMPDIR=${workpath}/tmp
</span> if {![variant_isset native]} {
configure.env-append CC_OPT_FLAGS="-march=ivybridge"
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Disable Xcode detection on older OSes, as we want the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # MP provided commandline utilities to be used instead.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[vercmp ${xcodeversion} ${tf_min_xcode}] < 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.env-append BAZEL_USE_CPP_ONLY_TOOLCHAIN=1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ build.env-append BAZEL_USE_CPP_ONLY_TOOLCHAIN=1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> # Remove all arguments
configure.args
configure.pre_args
# configure command
configure.cmd ./configure
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Path configuration if required
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pre-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[vercmp ${xcodeversion} ${tf_min_xcode}] < 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach f { configure.py third_party/toolchains/cpus/arm/CROSSTOOL.tpl third_party/toolchains/gpus/crosstool/CROSSTOOL third_party/gpus/crosstool/CROSSTOOL.tpl third_party/sycl/crosstool/CROSSTOOL.tpl } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach cmd {ar nm strip libtool ld objdump} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -q "s|/usr/bin/${cmd}|${prefix}/bin/${cmd}|g" ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -q "s|/usr/bin/clang|\"${configure.cc}\"|g" ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -q "s| clang | ${configure.cc} |g" ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
build {
# Build using the wonderful bazel build system ...
set tf_bazel_cmd "bazel --max_idle_secs=60 --output_user_root=${workpath}"
<span style='display:block; white-space:pre;background:#ffe0e0;'>- system -W ${worksrcpath} "${tf_bazel_cmd} build --config=opt //tensorflow/tools/pip_package:build_pip_package"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set tf_bazel_build_opts "-s --config=opt"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[vercmp ${xcodeversion} ${tf_min_xcode}] < 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set tf_bazel_build_opts "${tf_bazel_build_opts} --action_env CC=${configure.cc}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set tf_bazel_cmd "BAZEL_USE_CPP_ONLY_TOOLCHAIN=1 ${tf_bazel_cmd}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ system -W ${worksrcpath} "${tf_bazel_cmd} build ${tf_bazel_build_opts} //tensorflow/tools/pip_package:build_pip_package"
</span> # Build the python wheel
system -W ${worksrcpath} "./bazel-bin/tensorflow/tools/pip_package/build_pip_package ${workpath}"
# Clean up
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -81,15 +121,10 @@ if {${name} ne ${subport}} {
</span> set macos_minor_v [expr [lindex [split ${os.version} "."] 0] - 4]
set install_whlfile ${workpath}/tensorflow-${version}-cp${python.version}-cp${python.version}m-macosx_10_${macos_minor_v}_x86_64.whl
<span style='display:block; white-space:pre;background:#ffe0e0;'>- #pre-destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # # Need to deactivate first
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # if {![catch {set installed [lindex [registry_active ${subport}] 0]}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # registry_deactivate_composite ${subport} "" [list ports_nodepcheck 1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> destroot.cmd pip-${python.branch}
destroot.args \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ --upgrade \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --force-reinstall \
</span> --no-cache-dir \
--no-dependencies \
--root ${destroot} \
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-tensorflow/files/CLOCK_REALTIME-Older-OSX.patch b/python/py-tensorflow/files/CLOCK_REALTIME-Older-OSX.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..b897dfc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-tensorflow/files/CLOCK_REALTIME-Older-OSX.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,30 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/tensorflow/core/platform/posix/env_time.cc b/tensorflow/core/platform/posix/env_time.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 59a67b17aa..568f7158e0 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tensorflow/core/platform/posix/env_time.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tensorflow/core/platform/posix/env_time.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -18,6 +18,9 @@ limitations under the License.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "tensorflow/core/platform/env_time.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <mach/clock.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <mach/mach.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace tensorflow {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -28,7 +31,14 @@ class PosixEnvTime : public EnvTime {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint64 NowNanos() override {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct timespec ts;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- clock_gettime(CLOCK_REALTIME, &ts);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ //clock_gettime(CLOCK_REALTIME, &ts);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ clock_serv_t cclock;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mach_timespec_t mts;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ clock_get_time(cclock, &mts);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mach_port_deallocate(mach_task_self(), cclock);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ts.tv_sec = mts.tv_sec;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ts.tv_nsec = mts.tv_nsec;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return (static_cast<uint64>(ts.tv_sec) * kSecondsToNanos +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static_cast<uint64>(ts.tv_nsec));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span></pre><pre style='margin:0'>
</pre>