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