<pre style='margin:0'>
Ken (kencu) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/b3cc171484a813134946a83d550fd8f3b4b00b68">https://github.com/macports/macports-ports/commit/b3cc171484a813134946a83d550fd8f3b4b00b68</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 b3cc171  libtapi: fixes for older systems
</span>b3cc171 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit b3cc171484a813134946a83d550fd8f3b4b00b68
</span>Author: Ken Cunningham <kencu@macports.org>
AuthorDate: Mon Jan 20 18:18:34 2020 -0800

<span style='display:block; white-space:pre;color:#404040;'>    libtapi: fixes for older systems
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    should be a comprehensive fix for 10.6.8+
</span><span style='display:block; white-space:pre;color:#404040;'>    closes: https://trac.macports.org/ticket/59981
</span>---
 devel/libtapi/Portfile                      | 91 +++++++++++++++++++++++++---
 devel/libtapi/files/patch-0006-strnlen.diff | 93 +++++++++++++++++++++++++++++
 2 files changed, 177 insertions(+), 7 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/libtapi/Portfile b/devel/libtapi/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index baf87d4..8ae337f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/libtapi/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/libtapi/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2,6 +2,7 @@
</span> 
 PortSystem              1.0
 PortGroup               cmake 1.1
<span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup               compiler_blacklist_versions 1.0
</span> 
 name                    libtapi
 version                 1000.10.8
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -45,6 +46,53 @@ configure.args-append   -DPYTHON_EXECUTABLE=${prefix}/bin/python2.7
</span> compiler.cxx_standard   2011
 configure.pre_args-replace -DCMAKE_BUILD_TYPE=MacPorts -DCMAKE_BUILD_TYPE=Release
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.blacklist-append {clang < 602}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# attempt to build with clang-3.7...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if {[string match {macports-clang-3.[3-7]} ${configure.compiler}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # building with clang-3.7 and LTO fails due to:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # dyld: lazy symbol binding failed: Symbol not found: _lto_module_is_thinlto
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #  Referenced from: /opt/local/libexec/llvm-3.7/bin/ld
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #  Expected in: /opt/local/libexec/llvm-3.7/bin/../lib/libLTO.dylib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # compiler.blacklist-append {macports-clang-3.[3-7]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # configure.args-append -DLLVM_ENABLE_LTO=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # but then clang-3.7 errors later with:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # clang/include/clang/Basic/VirtualFileSystem.h:21:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # llvm/include/llvm/ADT/Optional.h:38:69: error: call to implicitly-deleted copy constructor of 'tapi::internal::FrontendContext'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # OptionalStorage(const T &y) : hasVal(true) { new (storage.buffer) T(y); }
</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><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.blacklist-append {macports-clang-3.[3-7]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# gcc5 errors building this
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.blacklist-append macports-gcc-5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {[string match macports-clang-* ${configure.compiler}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build-append port:cctools port:ld64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_skip_archcheck-append cctools ld64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append   -DCMAKE_LIBTOOL=${prefix}/bin/libtool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append   -DCMAKE_LINKER=${prefix}/bin/ld
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # libtool can choke on llvm bitcode generate by a clang newer than the libLTO.dylib being used
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # making sure cctools is built against the newest llvm in use prevents this
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # we might instead be able to set DYLD_LIBRARY_PATH to the libLTO.dylib that matches the building clang or newer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # that requires figuring out the building macports-clang version, and setting up that libLTO.dylib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # libtool will possibly just use that libLTO.dylib without error (untested, but reported to work)
</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;'>+if {${os.platform} eq "darwin" && ${os.major} < 11} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Proxy for eliminating the dependency on native TLS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # http://trac.macports.org/ticket/46887
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append -DLLVM_ENABLE_BACKTRACES=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # https://llvm.org/bugs/show_bug.cgi?id=25680
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.cxxflags-append -U__STRICT_ANSI__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> configure.post_args     ${worksrcpath}/llvm
 
 # add the tapi directory to the clang build CMakeLists.txt
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -60,15 +108,44 @@ patchfiles-append       patch-0003-tapi-llvm7-build-fixes.diff
</span> # add support for PPC architectures
 patchfiles-append       patch-0004-tapi-add-PPC-support.diff
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.args-append   -C ${worksrcpath}/tapi/cmake/caches/apple-tapi.cmake
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-build.target            distribution
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-destroot.target         install-distribution
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# fixes to tests
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append       patch-0005-tapi-test-fixes.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# add a missing strnlen definition if needed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append       patch-0006-strnlen.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {[string match *clang* ${configure.compiler}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.pre_args-append -C ${worksrcpath}/tapi/cmake/caches/apple-tapi.cmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    build.target            distribution
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    destroot.target         install-distribution
</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;'>+if {[string match *gcc* ${configure.compiler}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # this gcc build is allowed here for possible ld64 bootstrapping purposes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # it links against libgcc/libstdc++.6.dylib and libgcc/libgcc_s.1.dylib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append    -DLLVM_ENABLE_PROJECTS=\"clang\;tapi\"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    build.target             libtapi tapi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    destroot.target          install-libtapi install-tapi install-tapi-headers install-tapi-clang-headers install-tapi-docs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span> 
 # WIP at present
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#test.run                yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#configure.args-append   -DLLVM_INCLUDE_TESTS=ON
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#patchfiles-append       patch-0005-tapi-test-fixes.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#test.target             check-distribution
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.platform} eq "darwin" && ${os.major} < 18} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variant test description {Enable building of test code} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        test.run                yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append   -DLLVM_INCLUDE_TESTS=ON
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # tests error on 10.14+ due to hard-coded i386 builds
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # tests work on 10.13, but there is a conflict with MacPorts' ncurses port: #59992
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # temporarily disabled the ncurses port to run the tests works
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # perhaps defining -DNCURSES_UNCTRL_H_incl in a CMakeLists.txt could work
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # tests did not work on 10.6.8, first due to missing architecture defines, then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # due to other errors. Help wanted to fix these tests if possible.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        test.target             check-tapi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span> 
 livecheck.type          regex
 livecheck.regex         "tapi-(\[\\d.\]+)"
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/libtapi/files/patch-0006-strnlen.diff b/devel/libtapi/files/patch-0006-strnlen.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..b0d1363
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/libtapi/files/patch-0006-strnlen.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,93 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./clang/lib/Lex/HeaderMap.cpp.orig     2020-01-18 11:46:01.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./clang/lib/Lex/HeaderMap.cpp  2020-01-18 11:47:07.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -26,6 +26,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <memory>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ using namespace clang;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static size_t strnlen(const char *s, size_t maxlen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t l = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  while (l < maxlen && *s) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    l++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    s++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return l;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /// HashHMapKey - This is the 'well known' hash function required by the file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /// format, used to look up keys in the hash table.  The hash table uses simple
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /// linear probing based on this function.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm/tools/obj2yaml/macho2yaml.cpp.orig        2020-01-18 18:33:48.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ llvm/tools/obj2yaml/macho2yaml.cpp     2020-01-18 18:34:12.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -17,6 +17,21 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h> // for memcpy
</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;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static size_t strnlen(const char *s, size_t maxlen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t l = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  while (l < maxlen && *s) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    l++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    s++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return l;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ using namespace llvm;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class MachODumper {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm/lib/ObjectYAML/MachOYAML.cpp.orig 2020-01-18 16:28:13.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ llvm/lib/ObjectYAML/MachOYAML.cpp      2020-01-18 16:29:55.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -22,6 +22,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <cstdint>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <cstring>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static size_t strnlen(const char *s, size_t maxlen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t l = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  while (l < maxlen && *s) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    l++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    s++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return l;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace llvm {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MachOYAML::LoadCommand::~LoadCommand() = default;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm/tools/llvm-readobj/ObjDumper.cpp.orig     2020-01-18 18:29:32.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ llvm/tools/llvm-readobj/ObjDumper.cpp  2020-01-18 18:29:58.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -20,6 +20,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "llvm/Support/ScopedPrinter.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "llvm/Support/raw_ostream.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static size_t strnlen(const char *s, size_t maxlen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t l = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  while (l < maxlen && *s) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    l++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    s++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return l;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace llvm {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ObjDumper::ObjDumper(ScopedPrinter &Writer) : W(Writer) {}
</span></pre><pre style='margin:0'>

</pre>