<pre style='margin:0'>
Daniel J. Luke (danielluke) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/a747f83f5a5219fb18377a4b9f1bd3effcabf783">https://github.com/macports/macports-ports/commit/a747f83f5a5219fb18377a4b9f1bd3effcabf783</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 a747f83  bind9: fix build on older systems
</span>a747f83 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit a747f83f5a5219fb18377a4b9f1bd3effcabf783
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Tue Apr 2 03:47:23 2019 +1100

<span style='display:block; white-space:pre;color:#404040;'>    bind9: fix build on older systems
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    gcc-4.2 lacks immintrin.h. Then there's a lot wrong with the selection
</span><span style='display:block; white-space:pre;color:#404040;'>    of atomic primitives. If stdatomic.h is not present, configure checks
</span><span style='display:block; white-space:pre;color:#404040;'>    for the existence of the GNU __atomic builtins, but then the C code
</span><span style='display:block; white-space:pre;color:#404040;'>    ignores the configure result and does its own checks. It uses clang's
</span><span style='display:block; white-space:pre;color:#404040;'>    __c11_atomic builtins if available, but they are not compatible with
</span><span style='display:block; white-space:pre;color:#404040;'>    the way the code actually uses them (at least in some versions of
</span><span style='display:block; white-space:pre;color:#404040;'>    clang) which makes the build fail.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Instead, make the configure check match what the C actually does, and
</span><span style='display:block; white-space:pre;color:#404040;'>    actually use the result to decide whether the clang builtins are
</span><span style='display:block; white-space:pre;color:#404040;'>    usable. This works fine for our purposes, though a patch suitable for
</span><span style='display:block; white-space:pre;color:#404040;'>    upstream should probably be a bit more sophisticated (the configure
</span><span style='display:block; white-space:pre;color:#404040;'>    output doesn't necessarily match what actually ends up happening, for
</span><span style='display:block; white-space:pre;color:#404040;'>    example).
</span>---
 net/bind9/Portfile            |  4 ++++
 net/bind9/files/atomics.patch | 41 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 45 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/bind9/Portfile b/net/bind9/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index aa41bb3..92d3e0d 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/net/bind9/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/bind9/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -35,6 +35,10 @@ depends_lib              path:lib/libssl.dylib:openssl  \
</span> use_parallel_build        no
 universal_variant      no
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.blacklist      gcc-4.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles         atomics.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> test.run          yes
 test.target            test
 
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/bind9/files/atomics.patch b/net/bind9/files/atomics.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..4dee30d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/bind9/files/atomics.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,41 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- configure.orig 2019-03-20 16:57:56.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ configure      2019-04-02 02:36:21.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -18020,10 +18020,27 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* end confdefs.h.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <inttypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !defined(__has_feature)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define __has_feature(x) 0
</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;'>++#if !defined(__has_extension)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define __has_extension(x) __has_feature(x)
</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;'>++#if __has_extension(c_atomic) || __has_extension(cxx_atomic)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define __CLANG_ATOMICS
</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;'>+ int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ main ()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __CLANG_ATOMICS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int32_t val = 0; __c11_atomic_fetch_add(&val, 1, __ATOMIC_RELAXED);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int32_t val = 0; __atomic_fetch_add(&val, 1, __ATOMIC_RELAXED);
</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;'>+   ;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- lib/isc/unix/include/isc/stdatomic.h.orig      2019-03-20 16:57:56.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ lib/isc/unix/include/isc/stdatomic.h   2019-04-02 03:33:45.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -32,7 +32,7 @@
</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;'>+ #if !defined(__CLANG_ATOMICS) && !defined(__GNUC_ATOMICS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if __has_extension(c_atomic) || __has_extension(cxx_atomic)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(HAVE___ATOMIC) && (__has_extension(c_atomic) || __has_extension(cxx_atomic))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define __CLANG_ATOMICS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif __GNUC_PREREQ__(4, 7)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define __GNUC_ATOMICS
</span></pre><pre style='margin:0'>

</pre>