<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>