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