Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] mariadb: update to 10.1.45.
@ 2020-05-27  6:23 rmccask
  2020-05-27 12:48 ` [PR PATCH] [Updated] " rmccask
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: rmccask @ 2020-05-27  6:23 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 320 bytes --]

There is a new pull request by rmccask against master on the void-packages repository

https://github.com/rmccask/void-packages mariadb-10.1.45
https://github.com/void-linux/void-packages/pull/22348

mariadb: update to 10.1.45.


A patch file from https://github.com/void-linux/void-packages/pull/22348.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-mariadb-10.1.45-22348.patch --]
[-- Type: text/x-diff, Size: 15200 bytes --]

From ab9c4558aa6d3247a6f3ab79b7706ec4894846df Mon Sep 17 00:00:00 2001
From: Randy McCaskill <randy@mccaskill.us>
Date: Wed, 27 May 2020 02:22:24 -0400
Subject: [PATCH] mariadb: update to 10.1.45.

---
 .../mariadb/patches/fix-pthread-detach.patch  |  34 --
 .../mariadb/patches/force-c11-atomics.patch   | 294 ------------------
 srcpkgs/mariadb/patches/musl-ppc.patch        |  11 +-
 srcpkgs/mariadb/template                      |   6 +-
 4 files changed, 8 insertions(+), 337 deletions(-)
 delete mode 100644 srcpkgs/mariadb/patches/fix-pthread-detach.patch
 delete mode 100644 srcpkgs/mariadb/patches/force-c11-atomics.patch

diff --git a/srcpkgs/mariadb/patches/fix-pthread-detach.patch b/srcpkgs/mariadb/patches/fix-pthread-detach.patch
deleted file mode 100644
index a53c05b1320..00000000000
--- a/srcpkgs/mariadb/patches/fix-pthread-detach.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From c45b4a774b6d1404a080a1c1759f780fa78f223b Mon Sep 17 00:00:00 2001
-From: Sergey Vojtovich <svoj@mariadb.org>
-Date: Fri, 21 Sep 2018 16:04:16 +0400
-Subject: [PATCH] MDEV-17200 - pthread_detach called for already detached
- threads
-
-pthread_detach_this_thread() was intended to be defined to something
-meaningful only on some ancient unixes, which don't have
-pthread_attr_setdetachstate() defined. Otherwise, on normal unixes,
-threads are created detached in the first place.
-
-This was broken in 0f01bf267680244ec488adaf65a42838756ed48e so that
-we started calling pthread_detach() for already detached threads.
-Intention was to detach aria checkpoint thread.
-
-However in 87007dc2f71634cc460271eb277ad851ec69c04b aria service threads
-were made joinable with appropriate handling, which makes breaking
-revision unneccessary.
-
-Revert remnants of 0f01bf267680244ec488adaf65a42838756ed48e, so that
-pthread_detach_this_thread() is meaningful only on some ancient unixes
-again.
-
---- include/my_pthread.h
-+++ include/my_pthread.h
-@@ -184,7 +184,7 @@ int pthread_cancel(pthread_t thread);
- #define pthread_key(T,V) pthread_key_t V
- #define my_pthread_getspecific_ptr(T,V) my_pthread_getspecific(T,(V))
- #define my_pthread_setspecific_ptr(T,V) pthread_setspecific(T,(void*) (V))
--#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(tmp); }
-+#define pthread_detach_this_thread()
- #define pthread_handler_t EXTERNC void *
- typedef void *(* pthread_handler)(void *);
- 
diff --git a/srcpkgs/mariadb/patches/force-c11-atomics.patch b/srcpkgs/mariadb/patches/force-c11-atomics.patch
deleted file mode 100644
index 9546798bf97..00000000000
--- a/srcpkgs/mariadb/patches/force-c11-atomics.patch
+++ /dev/null
@@ -1,294 +0,0 @@
---- include/my_atomic.h
-+++ include/my_atomic.h
-@@ -104,217 +104,6 @@
-   but can be added, if necessary.
- */
- 
--#define intptr         void *
--/**
--  Currently we don't support 8-bit and 16-bit operations.
--  It can be added later if needed.
--*/
--#undef MY_ATOMIC_HAS_8_16
--
--/*
-- * Attempt to do atomic ops without locks
-- */
--#include "atomic/nolock.h"
--
--#ifndef make_atomic_cas_body
--/* nolock.h was not able to generate even a CAS function, fall back */
--#error atomic ops for this platform are not implemented
--#endif
--
--/* define missing functions by using the already generated ones */
--#ifndef make_atomic_add_body
--#define make_atomic_add_body(S)                                 \
--  int ## S tmp=*a;                                              \
--  while (!my_atomic_cas ## S(a, &tmp, tmp+v)) ;                 \
--  v=tmp;
--#endif
--#ifndef make_atomic_fas_body
--#define make_atomic_fas_body(S)                                 \
--  int ## S tmp=*a;                                              \
--  while (!my_atomic_cas ## S(a, &tmp, v)) ;                     \
--  v=tmp;
--#endif
--#ifndef make_atomic_load_body
--#define make_atomic_load_body(S)                                \
--  ret= 0; /* avoid compiler warning */                          \
--  (void)(my_atomic_cas ## S(a, &ret, ret));
--#endif
--#ifndef make_atomic_store_body
--#define make_atomic_store_body(S)                               \
--  (void)(my_atomic_fas ## S (a, v));
--#endif
--
--/*
--  transparent_union doesn't work in g++
--  Bug ?
--
--  Darwin's gcc doesn't want to put pointers in a transparent_union
--  when built with -arch ppc64. Complains:
--  warning: 'transparent_union' attribute ignored
--*/
--#if defined(__GNUC__) && !defined(__cplusplus) && \
--      ! (defined(__APPLE__) && (defined(_ARCH_PPC64) ||defined (_ARCH_PPC)))
--/*
--  we want to be able to use my_atomic_xxx functions with
--  both signed and unsigned integers. But gcc will issue a warning
--  "passing arg N of `my_atomic_XXX' as [un]signed due to prototype"
--  if the signedness of the argument doesn't match the prototype, or
--  "pointer targets in passing argument N of my_atomic_XXX differ in signedness"
--  if int* is used where uint* is expected (or vice versa).
--  Let's shut these warnings up
--*/
--#define make_transparent_unions(S)                              \
--        typedef union {                                         \
--          int  ## S  i;                                         \
--          uint ## S  u;                                         \
--        } U_ ## S   __attribute__ ((transparent_union));        \
--        typedef union {                                         \
--          int  ## S volatile *i;                                \
--          uint ## S volatile *u;                                \
--        } Uv_ ## S   __attribute__ ((transparent_union));
--#define uintptr intptr
--make_transparent_unions(8)
--make_transparent_unions(16)
--make_transparent_unions(32)
--make_transparent_unions(64)
--make_transparent_unions(ptr)
--#undef uintptr
--#undef make_transparent_unions
--#define a       U_a.i
--#define cmp     U_cmp.i
--#define v       U_v.i
--#define set     U_set.i
--#else
--#define U_8    int8
--#define U_16   int16
--#define U_32   int32
--#define U_64   int64
--#define U_ptr  intptr
--#define Uv_8   int8
--#define Uv_16  int16
--#define Uv_32  int32
--#define Uv_64  int64
--#define Uv_ptr intptr
--#define U_a    volatile *a
--#define U_cmp  *cmp
--#define U_v    v
--#define U_set  set
--#endif /* __GCC__ transparent_union magic */
--
--#define make_atomic_cas(S)                                      \
--static inline int my_atomic_cas ## S(Uv_ ## S U_a,              \
--                            Uv_ ## S U_cmp, U_ ## S U_set)      \
--{                                                               \
--  int8 ret;                                                     \
--  make_atomic_cas_body(S);                                      \
--  return ret;                                                   \
--}
--
--#define make_atomic_add(S)                                      \
--static inline int ## S my_atomic_add ## S(                      \
--                        Uv_ ## S U_a, U_ ## S U_v)              \
--{                                                               \
--  make_atomic_add_body(S);                                      \
--  return v;                                                     \
--}
--
--#define make_atomic_fas(S)                                      \
--static inline int ## S my_atomic_fas ## S(                      \
--                         Uv_ ## S U_a, U_ ## S U_v)             \
--{                                                               \
--  make_atomic_fas_body(S);                                      \
--  return v;                                                     \
--}
--
--#define make_atomic_load(S)                                     \
--static inline int ## S my_atomic_load ## S(Uv_ ## S U_a)        \
--{                                                               \
--  int ## S ret;                                                 \
--  make_atomic_load_body(S);                                     \
--  return ret;                                                   \
--}
--
--#define make_atomic_store(S)                                    \
--static inline void my_atomic_store ## S(                        \
--                     Uv_ ## S U_a, U_ ## S U_v)                 \
--{                                                               \
--  make_atomic_store_body(S);                                    \
--}
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_cas(8)
--make_atomic_cas(16)
--#endif
--make_atomic_cas(32)
--make_atomic_cas(64)
--make_atomic_cas(ptr)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_add(8)
--make_atomic_add(16)
--#endif
--make_atomic_add(32)
--make_atomic_add(64)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_load(8)
--make_atomic_load(16)
--#endif
--make_atomic_load(32)
--make_atomic_load(64)
--make_atomic_load(ptr)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_fas(8)
--make_atomic_fas(16)
--#endif
--make_atomic_fas(32)
--make_atomic_fas(64)
--make_atomic_fas(ptr)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_store(8)
--make_atomic_store(16)
--#endif
--make_atomic_store(32)
--make_atomic_store(64)
--make_atomic_store(ptr)
--
--#ifdef _atomic_h_cleanup_
--#include _atomic_h_cleanup_
--#undef _atomic_h_cleanup_
--#endif
--
--#undef U_8
--#undef U_16
--#undef U_32
--#undef U_64
--#undef U_ptr
--#undef Uv_8
--#undef Uv_16
--#undef Uv_32
--#undef Uv_64
--#undef Uv_ptr
--#undef a
--#undef cmp
--#undef v
--#undef set
--#undef U_a
--#undef U_cmp
--#undef U_v
--#undef U_set
--#undef make_atomic_add
--#undef make_atomic_cas
--#undef make_atomic_load
--#undef make_atomic_store
--#undef make_atomic_fas
--#undef make_atomic_add_body
--#undef make_atomic_cas_body
--#undef make_atomic_load_body
--#undef make_atomic_store_body
--#undef make_atomic_fas_body
--#undef intptr
--
- /*
-   the macro below defines (as an expression) the code that
-   will be run in spin-loops. Intel manuals recummend to have PAUSE there.
-@@ -328,7 +117,8 @@ make_atomic_store(ptr)
- #define MY_ATOMIC_NOT_1CPU 1
- extern int my_atomic_initialize();
- 
--#ifdef __ATOMIC_SEQ_CST
-+#define MY_ATOMIC_MODE "gcc-atomics-smp"
-+
- #define MY_MEMORY_ORDER_RELAXED __ATOMIC_RELAXED
- #define MY_MEMORY_ORDER_CONSUME __ATOMIC_CONSUME
- #define MY_MEMORY_ORDER_ACQUIRE __ATOMIC_ACQUIRE
-@@ -364,43 +154,27 @@ extern int my_atomic_initialize();
-   __atomic_compare_exchange_n((P), (E), (D), false, (S), (F))
- #define my_atomic_casptr_strong_explicit(P, E, D, S, F) \
-   __atomic_compare_exchange_n((P), (E), (D), false, (S), (F))
--#else
--#define MY_MEMORY_ORDER_RELAXED
--#define MY_MEMORY_ORDER_CONSUME
--#define MY_MEMORY_ORDER_ACQUIRE
--#define MY_MEMORY_ORDER_RELEASE
--#define MY_MEMORY_ORDER_ACQ_REL
--#define MY_MEMORY_ORDER_SEQ_CST
--
--#define my_atomic_store32_explicit(P, D, O) my_atomic_store32((P), (D))
--#define my_atomic_store64_explicit(P, D, O) my_atomic_store64((P), (D))
--#define my_atomic_storeptr_explicit(P, D, O) my_atomic_storeptr((P), (D))
--
--#define my_atomic_load32_explicit(P, O) my_atomic_load32((P))
--#define my_atomic_load64_explicit(P, O) my_atomic_load64((P))
--#define my_atomic_loadptr_explicit(P, O) my_atomic_loadptr((P))
--
--#define my_atomic_fas32_explicit(P, D, O) my_atomic_fas32((P), (D))
--#define my_atomic_fas64_explicit(P, D, O) my_atomic_fas64((P), (D))
--#define my_atomic_fasptr_explicit(P, D, O) my_atomic_fasptr((P), (D))
--
--#define my_atomic_add32_explicit(P, A, O) my_atomic_add32((P), (A))
--#define my_atomic_add64_explicit(P, A, O) my_atomic_add64((P), (A))
--#define my_atomic_addptr_explicit(P, A, O) my_atomic_addptr((P), (A))
- 
--#define my_atomic_cas32_weak_explicit(P, E, D, S, F) \
--  my_atomic_cas32((P), (E), (D))
--#define my_atomic_cas64_weak_explicit(P, E, D, S, F) \
--  my_atomic_cas64((P), (E), (D))
--#define my_atomic_casptr_weak_explicit(P, E, D, S, F) \
--  my_atomic_casptr((P), (E), (D))
-+#define my_atomic_store32(P, D) __atomic_store_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_store64(P, D) __atomic_store_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_storeptr(P, D) __atomic_store_n((P), (D), __ATOMIC_SEQ_CST)
- 
--#define my_atomic_cas32_strong_explicit(P, E, D, S, F) \
--  my_atomic_cas32((P), (E), (D))
--#define my_atomic_cas64_strong_explicit(P, E, D, S, F) \
--  my_atomic_cas64((P), (E), (D))
--#define my_atomic_casptr_strong_explicit(P, E, D, S, F) \
--  my_atomic_casptr((P), (E), (D))
--#endif
-+#define my_atomic_load32(P) __atomic_load_n((P), __ATOMIC_SEQ_CST)
-+#define my_atomic_load64(P) __atomic_load_n((P), __ATOMIC_SEQ_CST)
-+#define my_atomic_loadptr(P) __atomic_load_n((P), __ATOMIC_SEQ_CST)
-+
-+#define my_atomic_fas32(P, D) __atomic_exchange_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_fas64(P, D) __atomic_exchange_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_fasptr(P, D) __atomic_exchange_n((P), (D), __ATOMIC_SEQ_CST)
-+
-+#define my_atomic_add32(P, A) __atomic_fetch_add((P), (A), __ATOMIC_SEQ_CST)
-+#define my_atomic_add64(P, A) __atomic_fetch_add((P), (A), __ATOMIC_SEQ_CST)
-+
-+#define my_atomic_cas32(P, E, D) \
-+  __atomic_compare_exchange_n((P), (E), (D), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
-+#define my_atomic_cas64(P, E, D) \
-+  __atomic_compare_exchange_n((P), (E), (D), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
-+#define my_atomic_casptr(P, E, D) \
-+  __atomic_compare_exchange_n((P), (E), (D), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
- 
- #endif /* MY_ATOMIC_INCLUDED */
diff --git a/srcpkgs/mariadb/patches/musl-ppc.patch b/srcpkgs/mariadb/patches/musl-ppc.patch
index 16cbac71a94..57c7f4bf15b 100644
--- a/srcpkgs/mariadb/patches/musl-ppc.patch
+++ b/srcpkgs/mariadb/patches/musl-ppc.patch
@@ -15,12 +15,11 @@ builtin for this in gcc for ages, so just use that instead.
  # endif
 --- storage/xtradb/include/ut0ut.h
 +++ storage/xtradb/include/ut0ut.h
-@@ -86,8 +86,7 @@ struct ut_when_dtor {
-    independent way by using YieldProcessor. */
- #  define UT_RELAX_CPU() YieldProcessor()
- # elif defined(__powerpc__)
--#include <sys/platform/ppc.h>
--#  define UT_RELAX_CPU() __ppc_get_timebase()
+@@ -86,6 +86,8 @@
+ # elif defined(__powerpc__) && defined __GLIBC__
+ #include <sys/platform/ppc.h>
+ #  define UT_RELAX_CPU() __ppc_get_timebase()
++# elif defined(__powerpc__)
 +#  define UT_RELAX_CPU() __builtin_ppc_get_timebase()
  # else
  #  define UT_RELAX_CPU() ((void)0) /* avoid warning for an empty statement */
diff --git a/srcpkgs/mariadb/template b/srcpkgs/mariadb/template
index 88611438a99..cfdd2717fc5 100644
--- a/srcpkgs/mariadb/template
+++ b/srcpkgs/mariadb/template
@@ -1,7 +1,7 @@
 # Template file for 'mariadb'
 pkgname=mariadb
-version=10.1.30
-revision=8
+version=10.1.45
+revision=1
 build_style=cmake
 configure_args="-DMYSQL_DATADIR=/var/lib/mysql
  -DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock -DDEFAULT_CHARSET=utf8
@@ -27,7 +27,7 @@ maintainer="Orphaned <orphan@voidlinux.org>"
 license="GPL-2.0-only"
 homepage="https://mariadb.org/"
 distfiles="http://archive.mariadb.org/$pkgname-$version/source/$pkgname-$version.tar.gz"
-checksum=173a5e5a24819e0a469c3bd09b5c98491676c37c6095882a2ea34c5af0996c88
+checksum=9d8f0f71f9613b2028ffc5c5be8b98948ec955eb0d89600d18ed7cc04807dad5
 lib32disabled=yes
 provides="mysql-${version}_${revision}"
 replaces="mysql>=0"

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PR PATCH] [Updated] mariadb: update to 10.1.45.
  2020-05-27  6:23 [PR PATCH] mariadb: update to 10.1.45 rmccask
@ 2020-05-27 12:48 ` rmccask
  2020-05-27 12:52 ` sgn
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: rmccask @ 2020-05-27 12:48 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 325 bytes --]

There is an updated pull request by rmccask against master on the void-packages repository

https://github.com/rmccask/void-packages mariadb-10.1.45
https://github.com/void-linux/void-packages/pull/22348

mariadb: update to 10.1.45.


A patch file from https://github.com/void-linux/void-packages/pull/22348.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-mariadb-10.1.45-22348.patch --]
[-- Type: text/x-diff, Size: 4660 bytes --]

From e38c88989de563a7d271710c5a224b7c0a784c76 Mon Sep 17 00:00:00 2001
From: Randy McCaskill <randy@mccaskill.us>
Date: Wed, 27 May 2020 02:22:24 -0400
Subject: [PATCH] mariadb: update to 10.1.45.

---
 .../mariadb/patches/fix-pthread-detach.patch  | 34 -------------------
 .../mariadb/patches/force-c11-atomics.patch   |  2 +-
 srcpkgs/mariadb/patches/musl-ppc.patch        | 11 +++---
 srcpkgs/mariadb/template                      |  6 ++--
 4 files changed, 9 insertions(+), 44 deletions(-)
 delete mode 100644 srcpkgs/mariadb/patches/fix-pthread-detach.patch

diff --git a/srcpkgs/mariadb/patches/fix-pthread-detach.patch b/srcpkgs/mariadb/patches/fix-pthread-detach.patch
deleted file mode 100644
index a53c05b1320..00000000000
--- a/srcpkgs/mariadb/patches/fix-pthread-detach.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From c45b4a774b6d1404a080a1c1759f780fa78f223b Mon Sep 17 00:00:00 2001
-From: Sergey Vojtovich <svoj@mariadb.org>
-Date: Fri, 21 Sep 2018 16:04:16 +0400
-Subject: [PATCH] MDEV-17200 - pthread_detach called for already detached
- threads
-
-pthread_detach_this_thread() was intended to be defined to something
-meaningful only on some ancient unixes, which don't have
-pthread_attr_setdetachstate() defined. Otherwise, on normal unixes,
-threads are created detached in the first place.
-
-This was broken in 0f01bf267680244ec488adaf65a42838756ed48e so that
-we started calling pthread_detach() for already detached threads.
-Intention was to detach aria checkpoint thread.
-
-However in 87007dc2f71634cc460271eb277ad851ec69c04b aria service threads
-were made joinable with appropriate handling, which makes breaking
-revision unneccessary.
-
-Revert remnants of 0f01bf267680244ec488adaf65a42838756ed48e, so that
-pthread_detach_this_thread() is meaningful only on some ancient unixes
-again.
-
---- include/my_pthread.h
-+++ include/my_pthread.h
-@@ -184,7 +184,7 @@ int pthread_cancel(pthread_t thread);
- #define pthread_key(T,V) pthread_key_t V
- #define my_pthread_getspecific_ptr(T,V) my_pthread_getspecific(T,(V))
- #define my_pthread_setspecific_ptr(T,V) pthread_setspecific(T,(void*) (V))
--#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(tmp); }
-+#define pthread_detach_this_thread()
- #define pthread_handler_t EXTERNC void *
- typedef void *(* pthread_handler)(void *);
- 
diff --git a/srcpkgs/mariadb/patches/force-c11-atomics.patch b/srcpkgs/mariadb/patches/force-c11-atomics.patch
index 9546798bf97..4109baa3dec 100644
--- a/srcpkgs/mariadb/patches/force-c11-atomics.patch
+++ b/srcpkgs/mariadb/patches/force-c11-atomics.patch
@@ -222,7 +222,7 @@
  #define MY_ATOMIC_NOT_1CPU 1
  extern int my_atomic_initialize();
  
--#ifdef __ATOMIC_SEQ_CST
+-#ifdef HAVE_GCC_C11_ATOMICS
 +#define MY_ATOMIC_MODE "gcc-atomics-smp"
 +
  #define MY_MEMORY_ORDER_RELAXED __ATOMIC_RELAXED
diff --git a/srcpkgs/mariadb/patches/musl-ppc.patch b/srcpkgs/mariadb/patches/musl-ppc.patch
index 16cbac71a94..57c7f4bf15b 100644
--- a/srcpkgs/mariadb/patches/musl-ppc.patch
+++ b/srcpkgs/mariadb/patches/musl-ppc.patch
@@ -15,12 +15,11 @@ builtin for this in gcc for ages, so just use that instead.
  # endif
 --- storage/xtradb/include/ut0ut.h
 +++ storage/xtradb/include/ut0ut.h
-@@ -86,8 +86,7 @@ struct ut_when_dtor {
-    independent way by using YieldProcessor. */
- #  define UT_RELAX_CPU() YieldProcessor()
- # elif defined(__powerpc__)
--#include <sys/platform/ppc.h>
--#  define UT_RELAX_CPU() __ppc_get_timebase()
+@@ -86,6 +86,8 @@
+ # elif defined(__powerpc__) && defined __GLIBC__
+ #include <sys/platform/ppc.h>
+ #  define UT_RELAX_CPU() __ppc_get_timebase()
++# elif defined(__powerpc__)
 +#  define UT_RELAX_CPU() __builtin_ppc_get_timebase()
  # else
  #  define UT_RELAX_CPU() ((void)0) /* avoid warning for an empty statement */
diff --git a/srcpkgs/mariadb/template b/srcpkgs/mariadb/template
index 88611438a99..cfdd2717fc5 100644
--- a/srcpkgs/mariadb/template
+++ b/srcpkgs/mariadb/template
@@ -1,7 +1,7 @@
 # Template file for 'mariadb'
 pkgname=mariadb
-version=10.1.30
-revision=8
+version=10.1.45
+revision=1
 build_style=cmake
 configure_args="-DMYSQL_DATADIR=/var/lib/mysql
  -DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock -DDEFAULT_CHARSET=utf8
@@ -27,7 +27,7 @@ maintainer="Orphaned <orphan@voidlinux.org>"
 license="GPL-2.0-only"
 homepage="https://mariadb.org/"
 distfiles="http://archive.mariadb.org/$pkgname-$version/source/$pkgname-$version.tar.gz"
-checksum=173a5e5a24819e0a469c3bd09b5c98491676c37c6095882a2ea34c5af0996c88
+checksum=9d8f0f71f9613b2028ffc5c5be8b98948ec955eb0d89600d18ed7cc04807dad5
 lib32disabled=yes
 provides="mysql-${version}_${revision}"
 replaces="mysql>=0"

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: mariadb: update to 10.1.45.
  2020-05-27  6:23 [PR PATCH] mariadb: update to 10.1.45 rmccask
  2020-05-27 12:48 ` [PR PATCH] [Updated] " rmccask
@ 2020-05-27 12:52 ` sgn
  2020-05-27 12:54 ` sgn
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: sgn @ 2020-05-27 12:52 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 243 bytes --]

New comment by sgn on void-packages repository

https://github.com/void-linux/void-packages/pull/22348#issuecomment-634638963

Comment:
Please don't merge this until #22218 merged/settled
unless there's urgent issue addressed by this change.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: mariadb: update to 10.1.45.
  2020-05-27  6:23 [PR PATCH] mariadb: update to 10.1.45 rmccask
  2020-05-27 12:48 ` [PR PATCH] [Updated] " rmccask
  2020-05-27 12:52 ` sgn
@ 2020-05-27 12:54 ` sgn
  2020-05-27 17:28 ` [PR PATCH] [Updated] " rmccask
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: sgn @ 2020-05-27 12:54 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 205 bytes --]

New comment by sgn on void-packages repository

https://github.com/void-linux/void-packages/pull/22348#issuecomment-634640105

Comment:
Also, please `[ci skip]` this PR, Travis can't download the tarball.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PR PATCH] [Updated] mariadb: update to 10.1.45.
  2020-05-27  6:23 [PR PATCH] mariadb: update to 10.1.45 rmccask
                   ` (2 preceding siblings ...)
  2020-05-27 12:54 ` sgn
@ 2020-05-27 17:28 ` rmccask
  2020-05-27 18:17 ` rmccask
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: rmccask @ 2020-05-27 17:28 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 325 bytes --]

There is an updated pull request by rmccask against master on the void-packages repository

https://github.com/rmccask/void-packages mariadb-10.1.45
https://github.com/void-linux/void-packages/pull/22348

mariadb: update to 10.1.45.


A patch file from https://github.com/void-linux/void-packages/pull/22348.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-mariadb-10.1.45-22348.patch --]
[-- Type: text/x-diff, Size: 38603 bytes --]

From 4ddbc853e27702f8e367341b8ed1d5fcede01374 Mon Sep 17 00:00:00 2001
From: Randy McCaskill <randy@mccaskill.us>
Date: Wed, 27 May 2020 02:22:24 -0400
Subject: [PATCH] mariadb: update to 10.1.45.

---
 .../patches/armhf_mroonga_storage_fail.patch  |  22 ++
 srcpkgs/mariadb/patches/c11_atomics.patch     | 128 ++++++++
 .../mariadb/patches/fix-pthread-detach.patch  |  34 --
 .../mariadb/patches/force-c11-atomics.patch   | 294 ------------------
 srcpkgs/mariadb/patches/libatomic.patch       | 103 ------
 .../patches/mips-connect-unaligned.patch      | 257 +++++++++++++++
 .../mariadb/patches/mips-groonga-atomic.patch |  34 ++
 .../patches/mips-innobase-atomic.patch        |  20 ++
 srcpkgs/mariadb/patches/mips-machine.patch    |  23 ++
 srcpkgs/mariadb/patches/musl-ppc.patch        |  11 +-
 srcpkgs/mariadb/template                      |  10 +-
 11 files changed, 496 insertions(+), 440 deletions(-)
 create mode 100644 srcpkgs/mariadb/patches/armhf_mroonga_storage_fail.patch
 create mode 100644 srcpkgs/mariadb/patches/c11_atomics.patch
 delete mode 100644 srcpkgs/mariadb/patches/fix-pthread-detach.patch
 delete mode 100644 srcpkgs/mariadb/patches/force-c11-atomics.patch
 delete mode 100644 srcpkgs/mariadb/patches/libatomic.patch
 create mode 100644 srcpkgs/mariadb/patches/mips-connect-unaligned.patch
 create mode 100644 srcpkgs/mariadb/patches/mips-groonga-atomic.patch
 create mode 100644 srcpkgs/mariadb/patches/mips-innobase-atomic.patch
 create mode 100644 srcpkgs/mariadb/patches/mips-machine.patch

diff --git a/srcpkgs/mariadb/patches/armhf_mroonga_storage_fail.patch b/srcpkgs/mariadb/patches/armhf_mroonga_storage_fail.patch
new file mode 100644
index 00000000000..228d6b7df26
--- /dev/null
+++ b/srcpkgs/mariadb/patches/armhf_mroonga_storage_fail.patch
@@ -0,0 +1,22 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:29 +0200
+Subject: armhf_mroonga_storage_fail
+
+---
+ storage/mroonga/lib/mrn_multiple_column_key_codec.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- storage/mroonga/lib/mrn_multiple_column_key_codec.cpp
++++ storage/mroonga/lib/mrn_multiple_column_key_codec.cpp
+@@ -623,9 +623,10 @@ namespace mrn {
+     long long int long_long_value;
+     mrn_byte_order_network_to_host(&long_long_value, grn_key, grn_key_size);
+     int max_bit = (grn_key_size * 8 - 1);
+-    *((long long int *)mysql_key) =
++    long_long_value =
+       long_long_value ^ (((long_long_value ^ (1LL << max_bit)) >> max_bit) |
+                          (1LL << max_bit));
++    memcpy(mysql_key, &long_long_value, sizeof(long_long_value));
+     DBUG_VOID_RETURN;
+   }
+ 
diff --git a/srcpkgs/mariadb/patches/c11_atomics.patch b/srcpkgs/mariadb/patches/c11_atomics.patch
new file mode 100644
index 00000000000..da84c12a0e1
--- /dev/null
+++ b/srcpkgs/mariadb/patches/c11_atomics.patch
@@ -0,0 +1,128 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:29 +0200
+Subject: c11_atomics
+
+---
+ configure.cmake               | 23 +++++++++++++++++++++--
+ include/atomic/gcc_builtins.h | 15 +++++++++++++++
+ include/atomic/nolock.h       |  4 ++--
+ mysys/CMakeLists.txt          |  4 ++++
+ sql/CMakeLists.txt            |  4 ++++
+ 5 files changed, 46 insertions(+), 4 deletions(-)
+
+--- configure.cmake
++++ configure.cmake
+@@ -128,7 +128,7 @@ IF(UNIX)
+   ENDIF()
+   FIND_PACKAGE(Threads)
+ 
+-  SET(CMAKE_REQUIRED_LIBRARIES 
++  LIST(APPEND CMAKE_REQUIRED_LIBRARIES
+     ${LIBM} ${LIBNSL} ${LIBBIND} ${LIBCRYPT} ${LIBSOCKET} ${LIBDL} ${CMAKE_THREAD_LIBS_INIT} ${LIBRT} ${LIBEXECINFO})
+   # Need explicit pthread for gcc -fsanitize=address
+   IF(CMAKE_USE_PTHREADS_INIT AND CMAKE_C_FLAGS MATCHES "-fsanitize=")
+@@ -1038,7 +1038,26 @@ ELSEIF(NOT WITH_ATOMIC_OPS)
+     long long int *ptr= &var;
+     return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
+   }"
+-  HAVE_GCC_C11_ATOMICS)
++  HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
++  IF(HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
++    SET(HAVE_GCC_C11_ATOMICS True)
++  ELSE()
++    SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
++    LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
++    CHECK_CXX_SOURCE_COMPILES("
++    int main()
++    {
++      long long int var= 1;
++      long long int *ptr= &var;
++      return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
++    }"
++    HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++    IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++      SET(HAVE_GCC_C11_ATOMICS True)
++    ELSE()
++      SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES})
++    ENDIF()
++  ENDIF()
+ ELSE()
+   MESSAGE(FATAL_ERROR "${WITH_ATOMIC_OPS} is not a valid value for WITH_ATOMIC_OPS!")
+ ENDIF()
+--- include/atomic/gcc_builtins.h
++++ include/atomic/gcc_builtins.h
+@@ -16,6 +16,7 @@
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335  USA */
+ 
++#if defined (HAVE_GCC_ATOMIC_BUILTINS)
+ #define make_atomic_add_body(S)                     \
+   v= __sync_fetch_and_add(a, v);
+ #define make_atomic_fas_body(S)                     \
+@@ -26,6 +27,20 @@
+   sav= __sync_val_compare_and_swap(a, cmp_val, set);\
+   if (!(ret= (sav == cmp_val))) *cmp= sav
+ 
++#elif defined(HAVE_GCC_C11_ATOMICS)
++
++#define make_atomic_add_body(S)                     \
++  v= __atomic_fetch_add(a, v, __ATOMIC_SEQ_CST)
++#define make_atomic_fas_body(S)                     \
++  v= __atomic_exchange_n(a, v, __ATOMIC_SEQ_CST)
++#define make_atomic_cas_body(S)                     \
++  int ## S sav;                                     \
++  ret= __atomic_compare_exchange_n(a, cmp, set,     \
++                                   0,               \
++                                   __ATOMIC_SEQ_CST,\
++                                   __ATOMIC_SEQ_CST);
++#endif
++
+ #ifdef MY_ATOMIC_MODE_DUMMY
+ #define make_atomic_load_body(S)   ret= *a
+ #define make_atomic_store_body(S)  *a= v
+--- include/atomic/nolock.h
++++ include/atomic/nolock.h
+@@ -17,7 +17,7 @@
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335  USA */
+ 
+ #if defined(__i386__) || defined(_MSC_VER) || defined(__x86_64__)   \
+-    || defined(HAVE_GCC_ATOMIC_BUILTINS) \
++    || defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_C11_ATOMICS) \
+     || defined(HAVE_SOLARIS_ATOMIC)
+ 
+ #  ifdef MY_ATOMIC_MODE_DUMMY
+@@ -41,7 +41,7 @@
+ #  elif __GNUC__
+ #    if defined(HAVE_SOLARIS_ATOMIC)
+ #      include "solaris.h"
+-#    elif defined(HAVE_GCC_ATOMIC_BUILTINS)
++#    elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_C11_ATOMICS)
+ #      include "gcc_builtins.h"
+ #    elif defined(__i386__) || defined(__x86_64__)
+ #      include "x86-gcc.h"
+--- mysys/CMakeLists.txt
++++ mysys/CMakeLists.txt
+@@ -79,6 +79,10 @@ IF(HAVE_BFD_H)
+   TARGET_LINK_LIBRARIES(mysys bfd)  
+ ENDIF(HAVE_BFD_H)
+ 
++IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++  TARGET_LINK_LIBRARIES(mysys atomic)
++ENDIF()
++
+ IF (WIN32)
+   TARGET_LINK_LIBRARIES(mysys IPHLPAPI)  
+ ENDIF(WIN32)
+--- sql/CMakeLists.txt
++++ sql/CMakeLists.txt
+@@ -165,6 +165,10 @@ TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATI
+   ${SSL_LIBRARIES}
+   ${LIBSYSTEMD})
+ 
++IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++  TARGET_LINK_LIBRARIES(sql atomic)
++ENDIF()
++
+ IF(WIN32)
+   SET(MYSQLD_SOURCE main.cc nt_servc.cc message.rc)
+   TARGET_LINK_LIBRARIES(sql psapi)
diff --git a/srcpkgs/mariadb/patches/fix-pthread-detach.patch b/srcpkgs/mariadb/patches/fix-pthread-detach.patch
deleted file mode 100644
index a53c05b1320..00000000000
--- a/srcpkgs/mariadb/patches/fix-pthread-detach.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From c45b4a774b6d1404a080a1c1759f780fa78f223b Mon Sep 17 00:00:00 2001
-From: Sergey Vojtovich <svoj@mariadb.org>
-Date: Fri, 21 Sep 2018 16:04:16 +0400
-Subject: [PATCH] MDEV-17200 - pthread_detach called for already detached
- threads
-
-pthread_detach_this_thread() was intended to be defined to something
-meaningful only on some ancient unixes, which don't have
-pthread_attr_setdetachstate() defined. Otherwise, on normal unixes,
-threads are created detached in the first place.
-
-This was broken in 0f01bf267680244ec488adaf65a42838756ed48e so that
-we started calling pthread_detach() for already detached threads.
-Intention was to detach aria checkpoint thread.
-
-However in 87007dc2f71634cc460271eb277ad851ec69c04b aria service threads
-were made joinable with appropriate handling, which makes breaking
-revision unneccessary.
-
-Revert remnants of 0f01bf267680244ec488adaf65a42838756ed48e, so that
-pthread_detach_this_thread() is meaningful only on some ancient unixes
-again.
-
---- include/my_pthread.h
-+++ include/my_pthread.h
-@@ -184,7 +184,7 @@ int pthread_cancel(pthread_t thread);
- #define pthread_key(T,V) pthread_key_t V
- #define my_pthread_getspecific_ptr(T,V) my_pthread_getspecific(T,(V))
- #define my_pthread_setspecific_ptr(T,V) pthread_setspecific(T,(void*) (V))
--#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(tmp); }
-+#define pthread_detach_this_thread()
- #define pthread_handler_t EXTERNC void *
- typedef void *(* pthread_handler)(void *);
- 
diff --git a/srcpkgs/mariadb/patches/force-c11-atomics.patch b/srcpkgs/mariadb/patches/force-c11-atomics.patch
deleted file mode 100644
index 9546798bf97..00000000000
--- a/srcpkgs/mariadb/patches/force-c11-atomics.patch
+++ /dev/null
@@ -1,294 +0,0 @@
---- include/my_atomic.h
-+++ include/my_atomic.h
-@@ -104,217 +104,6 @@
-   but can be added, if necessary.
- */
- 
--#define intptr         void *
--/**
--  Currently we don't support 8-bit and 16-bit operations.
--  It can be added later if needed.
--*/
--#undef MY_ATOMIC_HAS_8_16
--
--/*
-- * Attempt to do atomic ops without locks
-- */
--#include "atomic/nolock.h"
--
--#ifndef make_atomic_cas_body
--/* nolock.h was not able to generate even a CAS function, fall back */
--#error atomic ops for this platform are not implemented
--#endif
--
--/* define missing functions by using the already generated ones */
--#ifndef make_atomic_add_body
--#define make_atomic_add_body(S)                                 \
--  int ## S tmp=*a;                                              \
--  while (!my_atomic_cas ## S(a, &tmp, tmp+v)) ;                 \
--  v=tmp;
--#endif
--#ifndef make_atomic_fas_body
--#define make_atomic_fas_body(S)                                 \
--  int ## S tmp=*a;                                              \
--  while (!my_atomic_cas ## S(a, &tmp, v)) ;                     \
--  v=tmp;
--#endif
--#ifndef make_atomic_load_body
--#define make_atomic_load_body(S)                                \
--  ret= 0; /* avoid compiler warning */                          \
--  (void)(my_atomic_cas ## S(a, &ret, ret));
--#endif
--#ifndef make_atomic_store_body
--#define make_atomic_store_body(S)                               \
--  (void)(my_atomic_fas ## S (a, v));
--#endif
--
--/*
--  transparent_union doesn't work in g++
--  Bug ?
--
--  Darwin's gcc doesn't want to put pointers in a transparent_union
--  when built with -arch ppc64. Complains:
--  warning: 'transparent_union' attribute ignored
--*/
--#if defined(__GNUC__) && !defined(__cplusplus) && \
--      ! (defined(__APPLE__) && (defined(_ARCH_PPC64) ||defined (_ARCH_PPC)))
--/*
--  we want to be able to use my_atomic_xxx functions with
--  both signed and unsigned integers. But gcc will issue a warning
--  "passing arg N of `my_atomic_XXX' as [un]signed due to prototype"
--  if the signedness of the argument doesn't match the prototype, or
--  "pointer targets in passing argument N of my_atomic_XXX differ in signedness"
--  if int* is used where uint* is expected (or vice versa).
--  Let's shut these warnings up
--*/
--#define make_transparent_unions(S)                              \
--        typedef union {                                         \
--          int  ## S  i;                                         \
--          uint ## S  u;                                         \
--        } U_ ## S   __attribute__ ((transparent_union));        \
--        typedef union {                                         \
--          int  ## S volatile *i;                                \
--          uint ## S volatile *u;                                \
--        } Uv_ ## S   __attribute__ ((transparent_union));
--#define uintptr intptr
--make_transparent_unions(8)
--make_transparent_unions(16)
--make_transparent_unions(32)
--make_transparent_unions(64)
--make_transparent_unions(ptr)
--#undef uintptr
--#undef make_transparent_unions
--#define a       U_a.i
--#define cmp     U_cmp.i
--#define v       U_v.i
--#define set     U_set.i
--#else
--#define U_8    int8
--#define U_16   int16
--#define U_32   int32
--#define U_64   int64
--#define U_ptr  intptr
--#define Uv_8   int8
--#define Uv_16  int16
--#define Uv_32  int32
--#define Uv_64  int64
--#define Uv_ptr intptr
--#define U_a    volatile *a
--#define U_cmp  *cmp
--#define U_v    v
--#define U_set  set
--#endif /* __GCC__ transparent_union magic */
--
--#define make_atomic_cas(S)                                      \
--static inline int my_atomic_cas ## S(Uv_ ## S U_a,              \
--                            Uv_ ## S U_cmp, U_ ## S U_set)      \
--{                                                               \
--  int8 ret;                                                     \
--  make_atomic_cas_body(S);                                      \
--  return ret;                                                   \
--}
--
--#define make_atomic_add(S)                                      \
--static inline int ## S my_atomic_add ## S(                      \
--                        Uv_ ## S U_a, U_ ## S U_v)              \
--{                                                               \
--  make_atomic_add_body(S);                                      \
--  return v;                                                     \
--}
--
--#define make_atomic_fas(S)                                      \
--static inline int ## S my_atomic_fas ## S(                      \
--                         Uv_ ## S U_a, U_ ## S U_v)             \
--{                                                               \
--  make_atomic_fas_body(S);                                      \
--  return v;                                                     \
--}
--
--#define make_atomic_load(S)                                     \
--static inline int ## S my_atomic_load ## S(Uv_ ## S U_a)        \
--{                                                               \
--  int ## S ret;                                                 \
--  make_atomic_load_body(S);                                     \
--  return ret;                                                   \
--}
--
--#define make_atomic_store(S)                                    \
--static inline void my_atomic_store ## S(                        \
--                     Uv_ ## S U_a, U_ ## S U_v)                 \
--{                                                               \
--  make_atomic_store_body(S);                                    \
--}
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_cas(8)
--make_atomic_cas(16)
--#endif
--make_atomic_cas(32)
--make_atomic_cas(64)
--make_atomic_cas(ptr)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_add(8)
--make_atomic_add(16)
--#endif
--make_atomic_add(32)
--make_atomic_add(64)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_load(8)
--make_atomic_load(16)
--#endif
--make_atomic_load(32)
--make_atomic_load(64)
--make_atomic_load(ptr)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_fas(8)
--make_atomic_fas(16)
--#endif
--make_atomic_fas(32)
--make_atomic_fas(64)
--make_atomic_fas(ptr)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_store(8)
--make_atomic_store(16)
--#endif
--make_atomic_store(32)
--make_atomic_store(64)
--make_atomic_store(ptr)
--
--#ifdef _atomic_h_cleanup_
--#include _atomic_h_cleanup_
--#undef _atomic_h_cleanup_
--#endif
--
--#undef U_8
--#undef U_16
--#undef U_32
--#undef U_64
--#undef U_ptr
--#undef Uv_8
--#undef Uv_16
--#undef Uv_32
--#undef Uv_64
--#undef Uv_ptr
--#undef a
--#undef cmp
--#undef v
--#undef set
--#undef U_a
--#undef U_cmp
--#undef U_v
--#undef U_set
--#undef make_atomic_add
--#undef make_atomic_cas
--#undef make_atomic_load
--#undef make_atomic_store
--#undef make_atomic_fas
--#undef make_atomic_add_body
--#undef make_atomic_cas_body
--#undef make_atomic_load_body
--#undef make_atomic_store_body
--#undef make_atomic_fas_body
--#undef intptr
--
- /*
-   the macro below defines (as an expression) the code that
-   will be run in spin-loops. Intel manuals recummend to have PAUSE there.
-@@ -328,7 +117,8 @@ make_atomic_store(ptr)
- #define MY_ATOMIC_NOT_1CPU 1
- extern int my_atomic_initialize();
- 
--#ifdef __ATOMIC_SEQ_CST
-+#define MY_ATOMIC_MODE "gcc-atomics-smp"
-+
- #define MY_MEMORY_ORDER_RELAXED __ATOMIC_RELAXED
- #define MY_MEMORY_ORDER_CONSUME __ATOMIC_CONSUME
- #define MY_MEMORY_ORDER_ACQUIRE __ATOMIC_ACQUIRE
-@@ -364,43 +154,27 @@ extern int my_atomic_initialize();
-   __atomic_compare_exchange_n((P), (E), (D), false, (S), (F))
- #define my_atomic_casptr_strong_explicit(P, E, D, S, F) \
-   __atomic_compare_exchange_n((P), (E), (D), false, (S), (F))
--#else
--#define MY_MEMORY_ORDER_RELAXED
--#define MY_MEMORY_ORDER_CONSUME
--#define MY_MEMORY_ORDER_ACQUIRE
--#define MY_MEMORY_ORDER_RELEASE
--#define MY_MEMORY_ORDER_ACQ_REL
--#define MY_MEMORY_ORDER_SEQ_CST
--
--#define my_atomic_store32_explicit(P, D, O) my_atomic_store32((P), (D))
--#define my_atomic_store64_explicit(P, D, O) my_atomic_store64((P), (D))
--#define my_atomic_storeptr_explicit(P, D, O) my_atomic_storeptr((P), (D))
--
--#define my_atomic_load32_explicit(P, O) my_atomic_load32((P))
--#define my_atomic_load64_explicit(P, O) my_atomic_load64((P))
--#define my_atomic_loadptr_explicit(P, O) my_atomic_loadptr((P))
--
--#define my_atomic_fas32_explicit(P, D, O) my_atomic_fas32((P), (D))
--#define my_atomic_fas64_explicit(P, D, O) my_atomic_fas64((P), (D))
--#define my_atomic_fasptr_explicit(P, D, O) my_atomic_fasptr((P), (D))
--
--#define my_atomic_add32_explicit(P, A, O) my_atomic_add32((P), (A))
--#define my_atomic_add64_explicit(P, A, O) my_atomic_add64((P), (A))
--#define my_atomic_addptr_explicit(P, A, O) my_atomic_addptr((P), (A))
- 
--#define my_atomic_cas32_weak_explicit(P, E, D, S, F) \
--  my_atomic_cas32((P), (E), (D))
--#define my_atomic_cas64_weak_explicit(P, E, D, S, F) \
--  my_atomic_cas64((P), (E), (D))
--#define my_atomic_casptr_weak_explicit(P, E, D, S, F) \
--  my_atomic_casptr((P), (E), (D))
-+#define my_atomic_store32(P, D) __atomic_store_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_store64(P, D) __atomic_store_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_storeptr(P, D) __atomic_store_n((P), (D), __ATOMIC_SEQ_CST)
- 
--#define my_atomic_cas32_strong_explicit(P, E, D, S, F) \
--  my_atomic_cas32((P), (E), (D))
--#define my_atomic_cas64_strong_explicit(P, E, D, S, F) \
--  my_atomic_cas64((P), (E), (D))
--#define my_atomic_casptr_strong_explicit(P, E, D, S, F) \
--  my_atomic_casptr((P), (E), (D))
--#endif
-+#define my_atomic_load32(P) __atomic_load_n((P), __ATOMIC_SEQ_CST)
-+#define my_atomic_load64(P) __atomic_load_n((P), __ATOMIC_SEQ_CST)
-+#define my_atomic_loadptr(P) __atomic_load_n((P), __ATOMIC_SEQ_CST)
-+
-+#define my_atomic_fas32(P, D) __atomic_exchange_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_fas64(P, D) __atomic_exchange_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_fasptr(P, D) __atomic_exchange_n((P), (D), __ATOMIC_SEQ_CST)
-+
-+#define my_atomic_add32(P, A) __atomic_fetch_add((P), (A), __ATOMIC_SEQ_CST)
-+#define my_atomic_add64(P, A) __atomic_fetch_add((P), (A), __ATOMIC_SEQ_CST)
-+
-+#define my_atomic_cas32(P, E, D) \
-+  __atomic_compare_exchange_n((P), (E), (D), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
-+#define my_atomic_cas64(P, E, D) \
-+  __atomic_compare_exchange_n((P), (E), (D), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
-+#define my_atomic_casptr(P, E, D) \
-+  __atomic_compare_exchange_n((P), (E), (D), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
- 
- #endif /* MY_ATOMIC_INCLUDED */
diff --git a/srcpkgs/mariadb/patches/libatomic.patch b/srcpkgs/mariadb/patches/libatomic.patch
deleted file mode 100644
index 0e8e872d9c2..00000000000
--- a/srcpkgs/mariadb/patches/libatomic.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-Source: Debian, q66
-
-This ensures arches that need libatomic properly get it where necessary.
-It also removes the sync builtin checks that are not necessary when
-using C11 atomics (like we always are because we're on a modern gcc)
-that break build on e.g. ppc32 and mips.
-
---- configure.cmake
-+++ configure.cmake
-@@ -992,35 +992,19 @@ SET(SIGNAL_WITH_VIO_CLOSE 1)
- 
- MARK_AS_ADVANCED(NO_ALARM)
- 
--
--IF(WITH_ATOMIC_OPS STREQUAL "up")
--  SET(MY_ATOMIC_MODE_DUMMY 1 CACHE BOOL "Assume single-CPU mode, no concurrency")
--ELSEIF(WITH_ATOMIC_OPS STREQUAL "smp")
--ELSEIF(NOT WITH_ATOMIC_OPS)
--  CHECK_CXX_SOURCE_COMPILES("
--  int main()
--  {
--    int foo= -10; int bar= 10;
--    long long int foo64= -10; long long int bar64= 10;
--    if (!__sync_fetch_and_add(&foo, bar) || foo)
--      return -1;
--    bar= __sync_lock_test_and_set(&foo, bar);
--    if (bar || foo != 10)
--      return -1;
--    bar= __sync_val_compare_and_swap(&bar, foo, 15);
--    if (bar)
--      return -1;
--    if (!__sync_fetch_and_add(&foo64, bar64) || foo64)
--      return -1;
--    bar64= __sync_lock_test_and_set(&foo64, bar64);
--    if (bar64 || foo64 != 10)
--      return -1;
--    bar64= __sync_val_compare_and_swap(&bar64, foo, 15);
--    if (bar64)
--      return -1;
--    return 0;
--  }"
--  HAVE_GCC_ATOMIC_BUILTINS)
-+CHECK_CXX_SOURCE_COMPILES("
-+int main()
-+{
-+  long long int var= 1;
-+  long long int *ptr= &var;
-+  return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
-+}"
-+HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
-+IF (HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
-+  SET(HAVE_GCC_C11_ATOMICS True)
-+ELSE()
-+  SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-+  LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
-   CHECK_CXX_SOURCE_COMPILES("
-   int main()
-   {
-@@ -1028,14 +1012,13 @@ ELSEIF(NOT WITH_ATOMIC_OPS)
-     long long int *ptr= &var;
-     return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
-   }"
--  HAVE_GCC_C11_ATOMICS)
--ELSE()
--  MESSAGE(FATAL_ERROR "${WITH_ATOMIC_OPS} is not a valid value for WITH_ATOMIC_OPS!")
-+  HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+    SET(HAVE_GCC_C11_ATOMICS True)
-+  ENDIF()
-+  SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES})
- ENDIF()
- 
--SET(WITH_ATOMIC_OPS "${WITH_ATOMIC_OPS}" CACHE STRING "Implement atomic operations using atomic CPU instructions for multi-processor (smp) or uniprocessor (up) configuration. By default gcc built-in sync functions are used, if available and 'smp' configuration otherwise.")
--MARK_AS_ADVANCED(WITH_ATOMIC_OPS MY_ATOMIC_MODE_DUMMY)
--
- IF(WITH_VALGRIND)
-   SET(HAVE_valgrind 1)
- ENDIF()
---- mysys/CMakeLists.txt
-+++ mysys/CMakeLists.txt
-@@ -74,6 +74,10 @@ TARGET_LINK_LIBRARIES(mysys dbug strings mysys_ssl ${ZLIB_LIBRARY}
-  ${LIBNSL} ${LIBM} ${LIBRT} ${LIBDL} ${LIBSOCKET} ${LIBEXECINFO})
- DTRACE_INSTRUMENT(mysys)
- 
-+IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  TARGET_LINK_LIBRARIES(mysys atomic)
-+ENDIF()
-+
- IF(HAVE_BFD_H)
-   TARGET_LINK_LIBRARIES(mysys bfd)  
- ENDIF(HAVE_BFD_H)
---- sql/CMakeLists.txt
-+++ sql/CMakeLists.txt
-@@ -172,6 +172,9 @@ ELSE()
-   SET(MYSQLD_SOURCE main.cc ${DTRACE_PROBES_ALL})
- ENDIF()
- 
-+IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  TARGET_LINK_LIBRARIES(sql atomic)
-+ENDIF()
- 
- IF(MSVC AND NOT WITHOUT_DYNAMIC_PLUGINS)
- 
diff --git a/srcpkgs/mariadb/patches/mips-connect-unaligned.patch b/srcpkgs/mariadb/patches/mips-connect-unaligned.patch
new file mode 100644
index 00000000000..ae2f6e03d2e
--- /dev/null
+++ b/srcpkgs/mariadb/patches/mips-connect-unaligned.patch
@@ -0,0 +1,257 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:28 +0200
+Subject: mips-connect-unaligned
+
+---
+ storage/connect/valblk.cpp | 41 ++++++++++++++++++-------------------
+ storage/connect/valblk.h   | 51 +++++++++++++++++++++++++++++-----------------
+ 2 files changed, 52 insertions(+), 40 deletions(-)
+
+--- storage/connect/valblk.cpp
++++ storage/connect/valblk.cpp
+@@ -268,14 +268,14 @@ bool TYPBLK<TYPE>::Init(PGLOBAL g, bool
+ template <class TYPE>
+ char *TYPBLK<TYPE>::GetCharString(char *p, int n)
+   {
+-  sprintf(p, Fmt, Typp[n]);
++  sprintf(p, Fmt, UnalignedRead(n));
+   return p;
+   } // end of GetCharString
+ 
+ template <>
+ char *TYPBLK<double>::GetCharString(char *p, int n)
+   {
+-  sprintf(p, Fmt, Prec, Typp[n]);
++  sprintf(p, Fmt, Prec, UnalignedRead(n));
+   return p;
+   } // end of GetCharString
+ 
+@@ -291,7 +291,7 @@ void TYPBLK<TYPE>::SetValue(PVAL valp, i
+   ChkTyp(valp);
+ 
+   if (!(b = valp->IsNull()))
+-    Typp[n] = GetTypedValue(valp);
++    UnalignedWrite(n, GetTypedValue(valp));
+   else
+     Reset(n);
+ 
+@@ -353,9 +353,9 @@ void TYPBLK<TYPE>::SetValue(PCSZ p, int
+   ulonglong val = CharToNumber(p, strlen(p), maxval, Unsigned, &minus); 
+     
+   if (minus && val < maxval)
+-    Typp[n] = (TYPE)(-(signed)val);
++    UnalignedWrite(n, (TYPE)(-(signed)val));
+   else
+-    Typp[n] = (TYPE)val;
++    UnalignedWrite(n, (TYPE)val);
+ 
+   SetNull(n, false);
+   } // end of SetValue
+@@ -398,7 +398,7 @@ void TYPBLK<double>::SetValue(PCSZ p, in
+ 		throw Type;
+ 	} // endif Check
+ 
+-  Typp[n] = atof(p);
++  UnalignedWrite(n, atof(p));
+   SetNull(n, false);
+   } // end of SetValue
+ 
+@@ -430,7 +430,7 @@ void TYPBLK<TYPE>::SetValue(PVBLK pv, in
+   ChkTyp(pv);
+ 
+   if (!(b = pv->IsNull(n2) && Nullable))
+-    Typp[n1] = GetTypedValue(pv, n2);
++    UnalignedWrite(n1, GetTypedValue(pv, n2));
+   else
+     Reset(n1);
+ 
+@@ -481,10 +481,10 @@ void TYPBLK<TYPE>::SetMin(PVAL valp, int
+   {
+   CheckParms(valp, n)
+   TYPE  tval = GetTypedValue(valp);
+-  TYPE& tmin = Typp[n];
++  TYPE  tmin = UnalignedRead(n);
+ 
+   if (tval < tmin)
+-    tmin = tval;
++    UnalignedWrite(n, tval);
+ 
+   } // end of SetMin
+ 
+@@ -496,10 +496,10 @@ void TYPBLK<TYPE>::SetMax(PVAL valp, int
+   {
+   CheckParms(valp, n)
+   TYPE  tval = GetTypedValue(valp);
+-  TYPE& tmin = Typp[n];
++  TYPE  tmin = UnalignedRead(n);
+ 
+   if (tval > tmin)
+-    tmin = tval;
++    UnalignedWrite(n, tval);
+ 
+   } // end of SetMax
+ 
+@@ -513,8 +513,7 @@ void TYPBLK<TYPE>::SetValues(PVBLK pv, i
+   CheckType(pv)
+   TYPE *lp = ((TYPBLK*)pv)->Typp;
+ 
+-  for (int i = k; i < n; i++)          // TODO
+-    Typp[i] = lp[i];
++  memcpy(Typp + k, lp + k, sizeof(TYPE) * n);
+ 
+   } // end of SetValues
+ #endif // 0
+@@ -525,7 +524,7 @@ void TYPBLK<TYPE>::SetValues(PVBLK pv, i
+ template <class TYPE>
+ void TYPBLK<TYPE>::Move(int i, int j)
+   {
+-  Typp[j] = Typp[i];
++  UnalignedWrite(j, UnalignedRead(i));
+   MoveNull(i, j);
+   } // end of Move
+ 
+@@ -539,7 +538,7 @@ int TYPBLK<TYPE>::CompVal(PVAL vp, int n
+   ChkIndx(n);
+   ChkTyp(vp);
+ #endif   // _DEBUG
+-  TYPE mlv = Typp[n];
++  TYPE mlv = UnalignedRead(n);
+   TYPE vlv = GetTypedValue(vp);
+ 
+   return (vlv > mlv) ? 1 : (vlv < mlv) ? (-1) : 0;
+@@ -551,8 +550,8 @@ int TYPBLK<TYPE>::CompVal(PVAL vp, int n
+ template <class TYPE>
+ int TYPBLK<TYPE>::CompVal(int i1, int i2)
+   {
+-  TYPE lv1 = Typp[i1];
+-  TYPE lv2 = Typp[i2];
++  TYPE lv1 = UnalignedRead(i1);
++  TYPE lv2 = UnalignedRead(i2);
+ 
+   return (lv1 > lv2) ? 1 : (lv1 < lv2) ? (-1) : 0;
+   } // end of CompVal
+@@ -589,7 +588,7 @@ int TYPBLK<TYPE>::Find(PVAL vp)
+   TYPE n = GetTypedValue(vp);
+ 
+   for (i = 0; i < Nval; i++)
+-    if (n == Typp[i])
++    if (n == UnalignedRead(i))
+       break;
+ 
+   return (i < Nval) ? i : (-1);
+@@ -605,7 +604,7 @@ int TYPBLK<TYPE>::GetMaxLength(void)
+   int i, n, m;
+ 
+   for (i = n = 0; i < Nval; i++) {
+-    m = sprintf(buf, Fmt, Typp[i]);
++    m = sprintf(buf, Fmt, UnalignedRead(i));
+     n = MY_MAX(n, m);
+     } // endfor i
+ 
+@@ -1335,7 +1334,7 @@ char *DATBLK::GetCharString(char *p, int
+   char *vp;
+ 
+   if (Dvalp) {
+-    Dvalp->SetValue(Typp[n]);
++    Dvalp->SetValue(UnalignedRead(n));
+     vp = Dvalp->GetCharString(p);
+   } else
+     vp = TYPBLK<int>::GetCharString(p, n);
+@@ -1351,7 +1350,7 @@ void DATBLK::SetValue(PCSZ p, int n)
+   if (Dvalp) {
+     // Decode the string according to format
+     Dvalp->SetValue_psz(p);
+-    Typp[n] = Dvalp->GetIntValue();
++    UnalignedWrite(n, Dvalp->GetIntValue());
+   } else
+     TYPBLK<int>::SetValue(p, n);
+ 
+--- storage/connect/valblk.h
++++ storage/connect/valblk.h
+@@ -139,6 +139,7 @@ class VALBLK : public BLOCK {
+   int     Prec;             // Precision of float values
+   }; // end of class VALBLK
+ 
++
+ /***********************************************************************/
+ /*  Class TYPBLK: represents a block of typed values.                  */
+ /***********************************************************************/
+@@ -151,40 +152,41 @@ class TYPBLK : public VALBLK {
+   // Implementation
+   virtual bool   Init(PGLOBAL g, bool check);
+   virtual int    GetVlen(void) {return sizeof(TYPE);}
+-  virtual char   GetTinyValue(int n) {return (char)Typp[n];}
+-  virtual uchar  GetUTinyValue(int n) {return (uchar)Typp[n];}
+-  virtual short  GetShortValue(int n) {return (short)Typp[n];}
+-  virtual ushort GetUShortValue(int n) {return (ushort)Typp[n];}
+-  virtual int    GetIntValue(int n) {return (int)Typp[n];}
+-  virtual uint   GetUIntValue(int n) {return (uint)Typp[n];}
+-  virtual longlong GetBigintValue(int n) {return (longlong)Typp[n];}
+-  virtual ulonglong GetUBigintValue(int n) {return (ulonglong)Typp[n];}
+-  virtual double GetFloatValue(int n) {return (double)Typp[n];}
++
++  virtual char   GetTinyValue(int n) {return (char)UnalignedRead(n);}
++  virtual uchar  GetUTinyValue(int n) {return (uchar)UnalignedRead(n);}
++  virtual short  GetShortValue(int n) {return (short)UnalignedRead(n);}
++  virtual ushort GetUShortValue(int n) {return (ushort)UnalignedRead(n);}
++  virtual int    GetIntValue(int n) {return (int)UnalignedRead(n);}
++  virtual uint   GetUIntValue(int n) {return (uint)UnalignedRead(n);}
++  virtual longlong GetBigintValue(int n) {return (longlong)UnalignedRead(n);}
++  virtual ulonglong GetUBigintValue(int n) {return (ulonglong)UnalignedRead(n);}
++  virtual double GetFloatValue(int n) {return (double)UnalignedRead(n);}
+   virtual char  *GetCharString(char *p, int n);
+-  virtual void   Reset(int n) {Typp[n] = 0;}
++  virtual void   Reset(int n) {UnalignedWrite(n, 0);}
+ 
+   // Methods
+   using VALBLK::SetValue;
+   virtual void   SetValue(PCSZ sp, int n);
+   virtual void   SetValue(const char *sp, uint len, int n);
+   virtual void   SetValue(short sval, int n)
+-                  {Typp[n] = (TYPE)sval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)sval); SetNull(n, false);}
+   virtual void   SetValue(ushort sval, int n)
+-                  {Typp[n] = (TYPE)sval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)sval); SetNull(n, false);}
+   virtual void   SetValue(int lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(uint lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(longlong lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(ulonglong lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(double fval, int n)
+-                  {Typp[n] = (TYPE)fval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)fval); SetNull(n, false);}
+   virtual void   SetValue(char cval, int n)
+-                  {Typp[n] = (TYPE)cval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)cval); SetNull(n, false);}
+   virtual void   SetValue(uchar cval, int n)
+-                  {Typp[n] = (TYPE)cval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)cval); SetNull(n, false);}
+   virtual void   SetValue(PVAL valp, int n);
+   virtual void   SetValue(PVBLK pv, int n1, int n2);
+   virtual void   SetMin(PVAL valp, int n);
+@@ -206,6 +208,17 @@ class TYPBLK : public VALBLK {
+   // Members
+   TYPE* const &Typp;
+   const char  *Fmt;
++
++  // Unaligned access
++  TYPE UnalignedRead(int n) const {
++    TYPE result;
++    memcpy(&result, Typp + n, sizeof(TYPE));
++    return result;
++  }
++
++  void UnalignedWrite(int n, TYPE value) {
++    memcpy(Typp + n, &value, sizeof(TYPE));
++  }
+   }; // end of class TYPBLK
+ 
+ /***********************************************************************/
diff --git a/srcpkgs/mariadb/patches/mips-groonga-atomic.patch b/srcpkgs/mariadb/patches/mips-groonga-atomic.patch
new file mode 100644
index 00000000000..9c99cc1b026
--- /dev/null
+++ b/srcpkgs/mariadb/patches/mips-groonga-atomic.patch
@@ -0,0 +1,34 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:28 +0200
+Subject: mips-groonga-atomic
+
+---
+ storage/mroonga/vendor/groonga/CMakeLists.txt     | 2 ++
+ storage/mroonga/vendor/groonga/lib/CMakeLists.txt | 1 +
+ 2 files changed, 3 insertions(+)
+
+diff --git storage/mroonga/vendor/groonga/CMakeLists.txt storage/mroonga/vendor/groonga/CMakeLists.txt
+index e27070f..7f1899c 100644
+--- storage/mroonga/vendor/groonga/CMakeLists.txt
++++ storage/mroonga/vendor/groonga/CMakeLists.txt
+@@ -238,6 +238,8 @@ endmacro()
+ include(build/ac_macros/check_headers.m4)
+ include(build/ac_macros/check_functions.m4)
+ 
++ac_check_lib(atomic __atomic_store_8)
++
+ ac_check_symbols(fpclassify math.h)
+ ac_check_lib(m fpclassify)
+ 
+diff --git storage/mroonga/vendor/groonga/lib/CMakeLists.txt storage/mroonga/vendor/groonga/lib/CMakeLists.txt
+index 6765261..6c13737 100644
+--- storage/mroonga/vendor/groonga/lib/CMakeLists.txt
++++ storage/mroonga/vendor/groonga/lib/CMakeLists.txt
+@@ -90,6 +90,7 @@ endif()
+ set_target_properties(libgroonga PROPERTIES OUTPUT_NAME "groonga")
+ 
+ set(GRN_ALL_LIBRARIES
++    ${ATOMIC_LIBS}
+     ${EXECINFO_LIBS}
+     ${RT_LIBS}
+     ${PTHREAD_LIBS}
diff --git a/srcpkgs/mariadb/patches/mips-innobase-atomic.patch b/srcpkgs/mariadb/patches/mips-innobase-atomic.patch
new file mode 100644
index 00000000000..195fe41a422
--- /dev/null
+++ b/srcpkgs/mariadb/patches/mips-innobase-atomic.patch
@@ -0,0 +1,20 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:29 +0200
+Subject: mips-innobase-atomic
+
+---
+ storage/innobase/include/os0sync.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git storage/innobase/include/os0sync.h storage/innobase/include/os0sync.h
+index bb225c5..6520237 100644
+--- storage/innobase/include/os0sync.h
++++ storage/innobase/include/os0sync.h
+@@ -37,6 +37,7 @@ Created 9/6/1995 Heikki Tuuri
+ 
+ #include "univ.i"
+ #include "ut0lst.h"
++#include "sync0types.h"
+ 
+ /** CPU cache line size */
+ #ifdef __powerpc__
diff --git a/srcpkgs/mariadb/patches/mips-machine.patch b/srcpkgs/mariadb/patches/mips-machine.patch
new file mode 100644
index 00000000000..3dbbbaaa538
--- /dev/null
+++ b/srcpkgs/mariadb/patches/mips-machine.patch
@@ -0,0 +1,23 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:29 +0200
+Subject: mips-machine
+
+---
+ cmake/package_name.cmake | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git cmake/package_name.cmake cmake/package_name.cmake
+index 4930a6b..7681f78 100644
+--- cmake/package_name.cmake
++++ cmake/package_name.cmake
+@@ -34,6 +34,10 @@ IF(NOT VERSION)
+       SET(DEFAULT_MACHINE "mips")
+     ENDIF()
+ 
++    IF(NOT 64BIT AND CMAKE_SYSTEM_PROCESSOR MATCHES "^mips64")
++      SET(DEFAULT_MACHINE "mips")
++    ENDIF()
++
+     IF(CMAKE_SYSTEM_NAME MATCHES "Windows")
+       SET(NEED_DASH_BETWEEN_PLATFORM_AND_MACHINE 0)
+       SET(DEFAULT_PLATFORM "win")
diff --git a/srcpkgs/mariadb/patches/musl-ppc.patch b/srcpkgs/mariadb/patches/musl-ppc.patch
index 16cbac71a94..57c7f4bf15b 100644
--- a/srcpkgs/mariadb/patches/musl-ppc.patch
+++ b/srcpkgs/mariadb/patches/musl-ppc.patch
@@ -15,12 +15,11 @@ builtin for this in gcc for ages, so just use that instead.
  # endif
 --- storage/xtradb/include/ut0ut.h
 +++ storage/xtradb/include/ut0ut.h
-@@ -86,8 +86,7 @@ struct ut_when_dtor {
-    independent way by using YieldProcessor. */
- #  define UT_RELAX_CPU() YieldProcessor()
- # elif defined(__powerpc__)
--#include <sys/platform/ppc.h>
--#  define UT_RELAX_CPU() __ppc_get_timebase()
+@@ -86,6 +86,8 @@
+ # elif defined(__powerpc__) && defined __GLIBC__
+ #include <sys/platform/ppc.h>
+ #  define UT_RELAX_CPU() __ppc_get_timebase()
++# elif defined(__powerpc__)
 +#  define UT_RELAX_CPU() __builtin_ppc_get_timebase()
  # else
  #  define UT_RELAX_CPU() ((void)0) /* avoid warning for an empty statement */
diff --git a/srcpkgs/mariadb/template b/srcpkgs/mariadb/template
index 88611438a99..8ba4c5e8642 100644
--- a/srcpkgs/mariadb/template
+++ b/srcpkgs/mariadb/template
@@ -1,7 +1,7 @@
 # Template file for 'mariadb'
 pkgname=mariadb
-version=10.1.30
-revision=8
+version=10.1.45
+revision=1
 build_style=cmake
 configure_args="-DMYSQL_DATADIR=/var/lib/mysql
  -DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock -DDEFAULT_CHARSET=utf8
@@ -27,7 +27,7 @@ maintainer="Orphaned <orphan@voidlinux.org>"
 license="GPL-2.0-only"
 homepage="https://mariadb.org/"
 distfiles="http://archive.mariadb.org/$pkgname-$version/source/$pkgname-$version.tar.gz"
-checksum=173a5e5a24819e0a469c3bd09b5c98491676c37c6095882a2ea34c5af0996c88
+checksum=9d8f0f71f9613b2028ffc5c5be8b98948ec955eb0d89600d18ed7cc04807dad5
 lib32disabled=yes
 provides="mysql-${version}_${revision}"
 replaces="mysql>=0"
@@ -36,6 +36,10 @@ system_accounts="mysql"
 mysql_homedir="/var/lib/mysql"
 CFLAGS="-w"
 
+if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then
+	makedepends+=" libatomic-devel"
+fi
+
 pre_configure() {
 	# We need some host binaries before starting cross compilation.
 	if [ "$CROSS_BUILD" ]; then

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PR PATCH] [Updated] mariadb: update to 10.1.45.
  2020-05-27  6:23 [PR PATCH] mariadb: update to 10.1.45 rmccask
                   ` (3 preceding siblings ...)
  2020-05-27 17:28 ` [PR PATCH] [Updated] " rmccask
@ 2020-05-27 18:17 ` rmccask
  2020-05-27 18:17 ` rmccask
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: rmccask @ 2020-05-27 18:17 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 325 bytes --]

There is an updated pull request by rmccask against master on the void-packages repository

https://github.com/rmccask/void-packages mariadb-10.1.45
https://github.com/void-linux/void-packages/pull/22348

mariadb: update to 10.1.45.


A patch file from https://github.com/void-linux/void-packages/pull/22348.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-mariadb-10.1.45-22348.patch --]
[-- Type: text/x-diff, Size: 38613 bytes --]

From 2d5a5da89dc233861f08a8236f98e112f2fdedbe Mon Sep 17 00:00:00 2001
From: Randy McCaskill <randy@mccaskill.us>
Date: Wed, 27 May 2020 02:22:24 -0400
Subject: [PATCH] mariadb: update to 10.1.45.

[ci skip]
---
 .../patches/armhf_mroonga_storage_fail.patch  |  22 ++
 srcpkgs/mariadb/patches/c11_atomics.patch     | 128 ++++++++
 .../mariadb/patches/fix-pthread-detach.patch  |  34 --
 .../mariadb/patches/force-c11-atomics.patch   | 294 ------------------
 srcpkgs/mariadb/patches/libatomic.patch       | 103 ------
 .../patches/mips-connect-unaligned.patch      | 257 +++++++++++++++
 .../mariadb/patches/mips-groonga-atomic.patch |  34 ++
 .../patches/mips-innobase-atomic.patch        |  20 ++
 srcpkgs/mariadb/patches/mips-machine.patch    |  23 ++
 srcpkgs/mariadb/patches/musl-ppc.patch        |  11 +-
 srcpkgs/mariadb/template                      |  10 +-
 11 files changed, 496 insertions(+), 440 deletions(-)
 create mode 100644 srcpkgs/mariadb/patches/armhf_mroonga_storage_fail.patch
 create mode 100644 srcpkgs/mariadb/patches/c11_atomics.patch
 delete mode 100644 srcpkgs/mariadb/patches/fix-pthread-detach.patch
 delete mode 100644 srcpkgs/mariadb/patches/force-c11-atomics.patch
 delete mode 100644 srcpkgs/mariadb/patches/libatomic.patch
 create mode 100644 srcpkgs/mariadb/patches/mips-connect-unaligned.patch
 create mode 100644 srcpkgs/mariadb/patches/mips-groonga-atomic.patch
 create mode 100644 srcpkgs/mariadb/patches/mips-innobase-atomic.patch
 create mode 100644 srcpkgs/mariadb/patches/mips-machine.patch

diff --git a/srcpkgs/mariadb/patches/armhf_mroonga_storage_fail.patch b/srcpkgs/mariadb/patches/armhf_mroonga_storage_fail.patch
new file mode 100644
index 00000000000..228d6b7df26
--- /dev/null
+++ b/srcpkgs/mariadb/patches/armhf_mroonga_storage_fail.patch
@@ -0,0 +1,22 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:29 +0200
+Subject: armhf_mroonga_storage_fail
+
+---
+ storage/mroonga/lib/mrn_multiple_column_key_codec.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- storage/mroonga/lib/mrn_multiple_column_key_codec.cpp
++++ storage/mroonga/lib/mrn_multiple_column_key_codec.cpp
+@@ -623,9 +623,10 @@ namespace mrn {
+     long long int long_long_value;
+     mrn_byte_order_network_to_host(&long_long_value, grn_key, grn_key_size);
+     int max_bit = (grn_key_size * 8 - 1);
+-    *((long long int *)mysql_key) =
++    long_long_value =
+       long_long_value ^ (((long_long_value ^ (1LL << max_bit)) >> max_bit) |
+                          (1LL << max_bit));
++    memcpy(mysql_key, &long_long_value, sizeof(long_long_value));
+     DBUG_VOID_RETURN;
+   }
+ 
diff --git a/srcpkgs/mariadb/patches/c11_atomics.patch b/srcpkgs/mariadb/patches/c11_atomics.patch
new file mode 100644
index 00000000000..da84c12a0e1
--- /dev/null
+++ b/srcpkgs/mariadb/patches/c11_atomics.patch
@@ -0,0 +1,128 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:29 +0200
+Subject: c11_atomics
+
+---
+ configure.cmake               | 23 +++++++++++++++++++++--
+ include/atomic/gcc_builtins.h | 15 +++++++++++++++
+ include/atomic/nolock.h       |  4 ++--
+ mysys/CMakeLists.txt          |  4 ++++
+ sql/CMakeLists.txt            |  4 ++++
+ 5 files changed, 46 insertions(+), 4 deletions(-)
+
+--- configure.cmake
++++ configure.cmake
+@@ -128,7 +128,7 @@ IF(UNIX)
+   ENDIF()
+   FIND_PACKAGE(Threads)
+ 
+-  SET(CMAKE_REQUIRED_LIBRARIES 
++  LIST(APPEND CMAKE_REQUIRED_LIBRARIES
+     ${LIBM} ${LIBNSL} ${LIBBIND} ${LIBCRYPT} ${LIBSOCKET} ${LIBDL} ${CMAKE_THREAD_LIBS_INIT} ${LIBRT} ${LIBEXECINFO})
+   # Need explicit pthread for gcc -fsanitize=address
+   IF(CMAKE_USE_PTHREADS_INIT AND CMAKE_C_FLAGS MATCHES "-fsanitize=")
+@@ -1038,7 +1038,26 @@ ELSEIF(NOT WITH_ATOMIC_OPS)
+     long long int *ptr= &var;
+     return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
+   }"
+-  HAVE_GCC_C11_ATOMICS)
++  HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
++  IF(HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
++    SET(HAVE_GCC_C11_ATOMICS True)
++  ELSE()
++    SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
++    LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
++    CHECK_CXX_SOURCE_COMPILES("
++    int main()
++    {
++      long long int var= 1;
++      long long int *ptr= &var;
++      return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
++    }"
++    HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++    IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++      SET(HAVE_GCC_C11_ATOMICS True)
++    ELSE()
++      SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES})
++    ENDIF()
++  ENDIF()
+ ELSE()
+   MESSAGE(FATAL_ERROR "${WITH_ATOMIC_OPS} is not a valid value for WITH_ATOMIC_OPS!")
+ ENDIF()
+--- include/atomic/gcc_builtins.h
++++ include/atomic/gcc_builtins.h
+@@ -16,6 +16,7 @@
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335  USA */
+ 
++#if defined (HAVE_GCC_ATOMIC_BUILTINS)
+ #define make_atomic_add_body(S)                     \
+   v= __sync_fetch_and_add(a, v);
+ #define make_atomic_fas_body(S)                     \
+@@ -26,6 +27,20 @@
+   sav= __sync_val_compare_and_swap(a, cmp_val, set);\
+   if (!(ret= (sav == cmp_val))) *cmp= sav
+ 
++#elif defined(HAVE_GCC_C11_ATOMICS)
++
++#define make_atomic_add_body(S)                     \
++  v= __atomic_fetch_add(a, v, __ATOMIC_SEQ_CST)
++#define make_atomic_fas_body(S)                     \
++  v= __atomic_exchange_n(a, v, __ATOMIC_SEQ_CST)
++#define make_atomic_cas_body(S)                     \
++  int ## S sav;                                     \
++  ret= __atomic_compare_exchange_n(a, cmp, set,     \
++                                   0,               \
++                                   __ATOMIC_SEQ_CST,\
++                                   __ATOMIC_SEQ_CST);
++#endif
++
+ #ifdef MY_ATOMIC_MODE_DUMMY
+ #define make_atomic_load_body(S)   ret= *a
+ #define make_atomic_store_body(S)  *a= v
+--- include/atomic/nolock.h
++++ include/atomic/nolock.h
+@@ -17,7 +17,7 @@
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335  USA */
+ 
+ #if defined(__i386__) || defined(_MSC_VER) || defined(__x86_64__)   \
+-    || defined(HAVE_GCC_ATOMIC_BUILTINS) \
++    || defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_C11_ATOMICS) \
+     || defined(HAVE_SOLARIS_ATOMIC)
+ 
+ #  ifdef MY_ATOMIC_MODE_DUMMY
+@@ -41,7 +41,7 @@
+ #  elif __GNUC__
+ #    if defined(HAVE_SOLARIS_ATOMIC)
+ #      include "solaris.h"
+-#    elif defined(HAVE_GCC_ATOMIC_BUILTINS)
++#    elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_C11_ATOMICS)
+ #      include "gcc_builtins.h"
+ #    elif defined(__i386__) || defined(__x86_64__)
+ #      include "x86-gcc.h"
+--- mysys/CMakeLists.txt
++++ mysys/CMakeLists.txt
+@@ -79,6 +79,10 @@ IF(HAVE_BFD_H)
+   TARGET_LINK_LIBRARIES(mysys bfd)  
+ ENDIF(HAVE_BFD_H)
+ 
++IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++  TARGET_LINK_LIBRARIES(mysys atomic)
++ENDIF()
++
+ IF (WIN32)
+   TARGET_LINK_LIBRARIES(mysys IPHLPAPI)  
+ ENDIF(WIN32)
+--- sql/CMakeLists.txt
++++ sql/CMakeLists.txt
+@@ -165,6 +165,10 @@ TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATI
+   ${SSL_LIBRARIES}
+   ${LIBSYSTEMD})
+ 
++IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++  TARGET_LINK_LIBRARIES(sql atomic)
++ENDIF()
++
+ IF(WIN32)
+   SET(MYSQLD_SOURCE main.cc nt_servc.cc message.rc)
+   TARGET_LINK_LIBRARIES(sql psapi)
diff --git a/srcpkgs/mariadb/patches/fix-pthread-detach.patch b/srcpkgs/mariadb/patches/fix-pthread-detach.patch
deleted file mode 100644
index a53c05b1320..00000000000
--- a/srcpkgs/mariadb/patches/fix-pthread-detach.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From c45b4a774b6d1404a080a1c1759f780fa78f223b Mon Sep 17 00:00:00 2001
-From: Sergey Vojtovich <svoj@mariadb.org>
-Date: Fri, 21 Sep 2018 16:04:16 +0400
-Subject: [PATCH] MDEV-17200 - pthread_detach called for already detached
- threads
-
-pthread_detach_this_thread() was intended to be defined to something
-meaningful only on some ancient unixes, which don't have
-pthread_attr_setdetachstate() defined. Otherwise, on normal unixes,
-threads are created detached in the first place.
-
-This was broken in 0f01bf267680244ec488adaf65a42838756ed48e so that
-we started calling pthread_detach() for already detached threads.
-Intention was to detach aria checkpoint thread.
-
-However in 87007dc2f71634cc460271eb277ad851ec69c04b aria service threads
-were made joinable with appropriate handling, which makes breaking
-revision unneccessary.
-
-Revert remnants of 0f01bf267680244ec488adaf65a42838756ed48e, so that
-pthread_detach_this_thread() is meaningful only on some ancient unixes
-again.
-
---- include/my_pthread.h
-+++ include/my_pthread.h
-@@ -184,7 +184,7 @@ int pthread_cancel(pthread_t thread);
- #define pthread_key(T,V) pthread_key_t V
- #define my_pthread_getspecific_ptr(T,V) my_pthread_getspecific(T,(V))
- #define my_pthread_setspecific_ptr(T,V) pthread_setspecific(T,(void*) (V))
--#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(tmp); }
-+#define pthread_detach_this_thread()
- #define pthread_handler_t EXTERNC void *
- typedef void *(* pthread_handler)(void *);
- 
diff --git a/srcpkgs/mariadb/patches/force-c11-atomics.patch b/srcpkgs/mariadb/patches/force-c11-atomics.patch
deleted file mode 100644
index 9546798bf97..00000000000
--- a/srcpkgs/mariadb/patches/force-c11-atomics.patch
+++ /dev/null
@@ -1,294 +0,0 @@
---- include/my_atomic.h
-+++ include/my_atomic.h
-@@ -104,217 +104,6 @@
-   but can be added, if necessary.
- */
- 
--#define intptr         void *
--/**
--  Currently we don't support 8-bit and 16-bit operations.
--  It can be added later if needed.
--*/
--#undef MY_ATOMIC_HAS_8_16
--
--/*
-- * Attempt to do atomic ops without locks
-- */
--#include "atomic/nolock.h"
--
--#ifndef make_atomic_cas_body
--/* nolock.h was not able to generate even a CAS function, fall back */
--#error atomic ops for this platform are not implemented
--#endif
--
--/* define missing functions by using the already generated ones */
--#ifndef make_atomic_add_body
--#define make_atomic_add_body(S)                                 \
--  int ## S tmp=*a;                                              \
--  while (!my_atomic_cas ## S(a, &tmp, tmp+v)) ;                 \
--  v=tmp;
--#endif
--#ifndef make_atomic_fas_body
--#define make_atomic_fas_body(S)                                 \
--  int ## S tmp=*a;                                              \
--  while (!my_atomic_cas ## S(a, &tmp, v)) ;                     \
--  v=tmp;
--#endif
--#ifndef make_atomic_load_body
--#define make_atomic_load_body(S)                                \
--  ret= 0; /* avoid compiler warning */                          \
--  (void)(my_atomic_cas ## S(a, &ret, ret));
--#endif
--#ifndef make_atomic_store_body
--#define make_atomic_store_body(S)                               \
--  (void)(my_atomic_fas ## S (a, v));
--#endif
--
--/*
--  transparent_union doesn't work in g++
--  Bug ?
--
--  Darwin's gcc doesn't want to put pointers in a transparent_union
--  when built with -arch ppc64. Complains:
--  warning: 'transparent_union' attribute ignored
--*/
--#if defined(__GNUC__) && !defined(__cplusplus) && \
--      ! (defined(__APPLE__) && (defined(_ARCH_PPC64) ||defined (_ARCH_PPC)))
--/*
--  we want to be able to use my_atomic_xxx functions with
--  both signed and unsigned integers. But gcc will issue a warning
--  "passing arg N of `my_atomic_XXX' as [un]signed due to prototype"
--  if the signedness of the argument doesn't match the prototype, or
--  "pointer targets in passing argument N of my_atomic_XXX differ in signedness"
--  if int* is used where uint* is expected (or vice versa).
--  Let's shut these warnings up
--*/
--#define make_transparent_unions(S)                              \
--        typedef union {                                         \
--          int  ## S  i;                                         \
--          uint ## S  u;                                         \
--        } U_ ## S   __attribute__ ((transparent_union));        \
--        typedef union {                                         \
--          int  ## S volatile *i;                                \
--          uint ## S volatile *u;                                \
--        } Uv_ ## S   __attribute__ ((transparent_union));
--#define uintptr intptr
--make_transparent_unions(8)
--make_transparent_unions(16)
--make_transparent_unions(32)
--make_transparent_unions(64)
--make_transparent_unions(ptr)
--#undef uintptr
--#undef make_transparent_unions
--#define a       U_a.i
--#define cmp     U_cmp.i
--#define v       U_v.i
--#define set     U_set.i
--#else
--#define U_8    int8
--#define U_16   int16
--#define U_32   int32
--#define U_64   int64
--#define U_ptr  intptr
--#define Uv_8   int8
--#define Uv_16  int16
--#define Uv_32  int32
--#define Uv_64  int64
--#define Uv_ptr intptr
--#define U_a    volatile *a
--#define U_cmp  *cmp
--#define U_v    v
--#define U_set  set
--#endif /* __GCC__ transparent_union magic */
--
--#define make_atomic_cas(S)                                      \
--static inline int my_atomic_cas ## S(Uv_ ## S U_a,              \
--                            Uv_ ## S U_cmp, U_ ## S U_set)      \
--{                                                               \
--  int8 ret;                                                     \
--  make_atomic_cas_body(S);                                      \
--  return ret;                                                   \
--}
--
--#define make_atomic_add(S)                                      \
--static inline int ## S my_atomic_add ## S(                      \
--                        Uv_ ## S U_a, U_ ## S U_v)              \
--{                                                               \
--  make_atomic_add_body(S);                                      \
--  return v;                                                     \
--}
--
--#define make_atomic_fas(S)                                      \
--static inline int ## S my_atomic_fas ## S(                      \
--                         Uv_ ## S U_a, U_ ## S U_v)             \
--{                                                               \
--  make_atomic_fas_body(S);                                      \
--  return v;                                                     \
--}
--
--#define make_atomic_load(S)                                     \
--static inline int ## S my_atomic_load ## S(Uv_ ## S U_a)        \
--{                                                               \
--  int ## S ret;                                                 \
--  make_atomic_load_body(S);                                     \
--  return ret;                                                   \
--}
--
--#define make_atomic_store(S)                                    \
--static inline void my_atomic_store ## S(                        \
--                     Uv_ ## S U_a, U_ ## S U_v)                 \
--{                                                               \
--  make_atomic_store_body(S);                                    \
--}
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_cas(8)
--make_atomic_cas(16)
--#endif
--make_atomic_cas(32)
--make_atomic_cas(64)
--make_atomic_cas(ptr)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_add(8)
--make_atomic_add(16)
--#endif
--make_atomic_add(32)
--make_atomic_add(64)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_load(8)
--make_atomic_load(16)
--#endif
--make_atomic_load(32)
--make_atomic_load(64)
--make_atomic_load(ptr)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_fas(8)
--make_atomic_fas(16)
--#endif
--make_atomic_fas(32)
--make_atomic_fas(64)
--make_atomic_fas(ptr)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_store(8)
--make_atomic_store(16)
--#endif
--make_atomic_store(32)
--make_atomic_store(64)
--make_atomic_store(ptr)
--
--#ifdef _atomic_h_cleanup_
--#include _atomic_h_cleanup_
--#undef _atomic_h_cleanup_
--#endif
--
--#undef U_8
--#undef U_16
--#undef U_32
--#undef U_64
--#undef U_ptr
--#undef Uv_8
--#undef Uv_16
--#undef Uv_32
--#undef Uv_64
--#undef Uv_ptr
--#undef a
--#undef cmp
--#undef v
--#undef set
--#undef U_a
--#undef U_cmp
--#undef U_v
--#undef U_set
--#undef make_atomic_add
--#undef make_atomic_cas
--#undef make_atomic_load
--#undef make_atomic_store
--#undef make_atomic_fas
--#undef make_atomic_add_body
--#undef make_atomic_cas_body
--#undef make_atomic_load_body
--#undef make_atomic_store_body
--#undef make_atomic_fas_body
--#undef intptr
--
- /*
-   the macro below defines (as an expression) the code that
-   will be run in spin-loops. Intel manuals recummend to have PAUSE there.
-@@ -328,7 +117,8 @@ make_atomic_store(ptr)
- #define MY_ATOMIC_NOT_1CPU 1
- extern int my_atomic_initialize();
- 
--#ifdef __ATOMIC_SEQ_CST
-+#define MY_ATOMIC_MODE "gcc-atomics-smp"
-+
- #define MY_MEMORY_ORDER_RELAXED __ATOMIC_RELAXED
- #define MY_MEMORY_ORDER_CONSUME __ATOMIC_CONSUME
- #define MY_MEMORY_ORDER_ACQUIRE __ATOMIC_ACQUIRE
-@@ -364,43 +154,27 @@ extern int my_atomic_initialize();
-   __atomic_compare_exchange_n((P), (E), (D), false, (S), (F))
- #define my_atomic_casptr_strong_explicit(P, E, D, S, F) \
-   __atomic_compare_exchange_n((P), (E), (D), false, (S), (F))
--#else
--#define MY_MEMORY_ORDER_RELAXED
--#define MY_MEMORY_ORDER_CONSUME
--#define MY_MEMORY_ORDER_ACQUIRE
--#define MY_MEMORY_ORDER_RELEASE
--#define MY_MEMORY_ORDER_ACQ_REL
--#define MY_MEMORY_ORDER_SEQ_CST
--
--#define my_atomic_store32_explicit(P, D, O) my_atomic_store32((P), (D))
--#define my_atomic_store64_explicit(P, D, O) my_atomic_store64((P), (D))
--#define my_atomic_storeptr_explicit(P, D, O) my_atomic_storeptr((P), (D))
--
--#define my_atomic_load32_explicit(P, O) my_atomic_load32((P))
--#define my_atomic_load64_explicit(P, O) my_atomic_load64((P))
--#define my_atomic_loadptr_explicit(P, O) my_atomic_loadptr((P))
--
--#define my_atomic_fas32_explicit(P, D, O) my_atomic_fas32((P), (D))
--#define my_atomic_fas64_explicit(P, D, O) my_atomic_fas64((P), (D))
--#define my_atomic_fasptr_explicit(P, D, O) my_atomic_fasptr((P), (D))
--
--#define my_atomic_add32_explicit(P, A, O) my_atomic_add32((P), (A))
--#define my_atomic_add64_explicit(P, A, O) my_atomic_add64((P), (A))
--#define my_atomic_addptr_explicit(P, A, O) my_atomic_addptr((P), (A))
- 
--#define my_atomic_cas32_weak_explicit(P, E, D, S, F) \
--  my_atomic_cas32((P), (E), (D))
--#define my_atomic_cas64_weak_explicit(P, E, D, S, F) \
--  my_atomic_cas64((P), (E), (D))
--#define my_atomic_casptr_weak_explicit(P, E, D, S, F) \
--  my_atomic_casptr((P), (E), (D))
-+#define my_atomic_store32(P, D) __atomic_store_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_store64(P, D) __atomic_store_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_storeptr(P, D) __atomic_store_n((P), (D), __ATOMIC_SEQ_CST)
- 
--#define my_atomic_cas32_strong_explicit(P, E, D, S, F) \
--  my_atomic_cas32((P), (E), (D))
--#define my_atomic_cas64_strong_explicit(P, E, D, S, F) \
--  my_atomic_cas64((P), (E), (D))
--#define my_atomic_casptr_strong_explicit(P, E, D, S, F) \
--  my_atomic_casptr((P), (E), (D))
--#endif
-+#define my_atomic_load32(P) __atomic_load_n((P), __ATOMIC_SEQ_CST)
-+#define my_atomic_load64(P) __atomic_load_n((P), __ATOMIC_SEQ_CST)
-+#define my_atomic_loadptr(P) __atomic_load_n((P), __ATOMIC_SEQ_CST)
-+
-+#define my_atomic_fas32(P, D) __atomic_exchange_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_fas64(P, D) __atomic_exchange_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_fasptr(P, D) __atomic_exchange_n((P), (D), __ATOMIC_SEQ_CST)
-+
-+#define my_atomic_add32(P, A) __atomic_fetch_add((P), (A), __ATOMIC_SEQ_CST)
-+#define my_atomic_add64(P, A) __atomic_fetch_add((P), (A), __ATOMIC_SEQ_CST)
-+
-+#define my_atomic_cas32(P, E, D) \
-+  __atomic_compare_exchange_n((P), (E), (D), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
-+#define my_atomic_cas64(P, E, D) \
-+  __atomic_compare_exchange_n((P), (E), (D), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
-+#define my_atomic_casptr(P, E, D) \
-+  __atomic_compare_exchange_n((P), (E), (D), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
- 
- #endif /* MY_ATOMIC_INCLUDED */
diff --git a/srcpkgs/mariadb/patches/libatomic.patch b/srcpkgs/mariadb/patches/libatomic.patch
deleted file mode 100644
index 0e8e872d9c2..00000000000
--- a/srcpkgs/mariadb/patches/libatomic.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-Source: Debian, q66
-
-This ensures arches that need libatomic properly get it where necessary.
-It also removes the sync builtin checks that are not necessary when
-using C11 atomics (like we always are because we're on a modern gcc)
-that break build on e.g. ppc32 and mips.
-
---- configure.cmake
-+++ configure.cmake
-@@ -992,35 +992,19 @@ SET(SIGNAL_WITH_VIO_CLOSE 1)
- 
- MARK_AS_ADVANCED(NO_ALARM)
- 
--
--IF(WITH_ATOMIC_OPS STREQUAL "up")
--  SET(MY_ATOMIC_MODE_DUMMY 1 CACHE BOOL "Assume single-CPU mode, no concurrency")
--ELSEIF(WITH_ATOMIC_OPS STREQUAL "smp")
--ELSEIF(NOT WITH_ATOMIC_OPS)
--  CHECK_CXX_SOURCE_COMPILES("
--  int main()
--  {
--    int foo= -10; int bar= 10;
--    long long int foo64= -10; long long int bar64= 10;
--    if (!__sync_fetch_and_add(&foo, bar) || foo)
--      return -1;
--    bar= __sync_lock_test_and_set(&foo, bar);
--    if (bar || foo != 10)
--      return -1;
--    bar= __sync_val_compare_and_swap(&bar, foo, 15);
--    if (bar)
--      return -1;
--    if (!__sync_fetch_and_add(&foo64, bar64) || foo64)
--      return -1;
--    bar64= __sync_lock_test_and_set(&foo64, bar64);
--    if (bar64 || foo64 != 10)
--      return -1;
--    bar64= __sync_val_compare_and_swap(&bar64, foo, 15);
--    if (bar64)
--      return -1;
--    return 0;
--  }"
--  HAVE_GCC_ATOMIC_BUILTINS)
-+CHECK_CXX_SOURCE_COMPILES("
-+int main()
-+{
-+  long long int var= 1;
-+  long long int *ptr= &var;
-+  return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
-+}"
-+HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
-+IF (HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
-+  SET(HAVE_GCC_C11_ATOMICS True)
-+ELSE()
-+  SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-+  LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
-   CHECK_CXX_SOURCE_COMPILES("
-   int main()
-   {
-@@ -1028,14 +1012,13 @@ ELSEIF(NOT WITH_ATOMIC_OPS)
-     long long int *ptr= &var;
-     return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
-   }"
--  HAVE_GCC_C11_ATOMICS)
--ELSE()
--  MESSAGE(FATAL_ERROR "${WITH_ATOMIC_OPS} is not a valid value for WITH_ATOMIC_OPS!")
-+  HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+    SET(HAVE_GCC_C11_ATOMICS True)
-+  ENDIF()
-+  SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES})
- ENDIF()
- 
--SET(WITH_ATOMIC_OPS "${WITH_ATOMIC_OPS}" CACHE STRING "Implement atomic operations using atomic CPU instructions for multi-processor (smp) or uniprocessor (up) configuration. By default gcc built-in sync functions are used, if available and 'smp' configuration otherwise.")
--MARK_AS_ADVANCED(WITH_ATOMIC_OPS MY_ATOMIC_MODE_DUMMY)
--
- IF(WITH_VALGRIND)
-   SET(HAVE_valgrind 1)
- ENDIF()
---- mysys/CMakeLists.txt
-+++ mysys/CMakeLists.txt
-@@ -74,6 +74,10 @@ TARGET_LINK_LIBRARIES(mysys dbug strings mysys_ssl ${ZLIB_LIBRARY}
-  ${LIBNSL} ${LIBM} ${LIBRT} ${LIBDL} ${LIBSOCKET} ${LIBEXECINFO})
- DTRACE_INSTRUMENT(mysys)
- 
-+IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  TARGET_LINK_LIBRARIES(mysys atomic)
-+ENDIF()
-+
- IF(HAVE_BFD_H)
-   TARGET_LINK_LIBRARIES(mysys bfd)  
- ENDIF(HAVE_BFD_H)
---- sql/CMakeLists.txt
-+++ sql/CMakeLists.txt
-@@ -172,6 +172,9 @@ ELSE()
-   SET(MYSQLD_SOURCE main.cc ${DTRACE_PROBES_ALL})
- ENDIF()
- 
-+IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  TARGET_LINK_LIBRARIES(sql atomic)
-+ENDIF()
- 
- IF(MSVC AND NOT WITHOUT_DYNAMIC_PLUGINS)
- 
diff --git a/srcpkgs/mariadb/patches/mips-connect-unaligned.patch b/srcpkgs/mariadb/patches/mips-connect-unaligned.patch
new file mode 100644
index 00000000000..ae2f6e03d2e
--- /dev/null
+++ b/srcpkgs/mariadb/patches/mips-connect-unaligned.patch
@@ -0,0 +1,257 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:28 +0200
+Subject: mips-connect-unaligned
+
+---
+ storage/connect/valblk.cpp | 41 ++++++++++++++++++-------------------
+ storage/connect/valblk.h   | 51 +++++++++++++++++++++++++++++-----------------
+ 2 files changed, 52 insertions(+), 40 deletions(-)
+
+--- storage/connect/valblk.cpp
++++ storage/connect/valblk.cpp
+@@ -268,14 +268,14 @@ bool TYPBLK<TYPE>::Init(PGLOBAL g, bool
+ template <class TYPE>
+ char *TYPBLK<TYPE>::GetCharString(char *p, int n)
+   {
+-  sprintf(p, Fmt, Typp[n]);
++  sprintf(p, Fmt, UnalignedRead(n));
+   return p;
+   } // end of GetCharString
+ 
+ template <>
+ char *TYPBLK<double>::GetCharString(char *p, int n)
+   {
+-  sprintf(p, Fmt, Prec, Typp[n]);
++  sprintf(p, Fmt, Prec, UnalignedRead(n));
+   return p;
+   } // end of GetCharString
+ 
+@@ -291,7 +291,7 @@ void TYPBLK<TYPE>::SetValue(PVAL valp, i
+   ChkTyp(valp);
+ 
+   if (!(b = valp->IsNull()))
+-    Typp[n] = GetTypedValue(valp);
++    UnalignedWrite(n, GetTypedValue(valp));
+   else
+     Reset(n);
+ 
+@@ -353,9 +353,9 @@ void TYPBLK<TYPE>::SetValue(PCSZ p, int
+   ulonglong val = CharToNumber(p, strlen(p), maxval, Unsigned, &minus); 
+     
+   if (minus && val < maxval)
+-    Typp[n] = (TYPE)(-(signed)val);
++    UnalignedWrite(n, (TYPE)(-(signed)val));
+   else
+-    Typp[n] = (TYPE)val;
++    UnalignedWrite(n, (TYPE)val);
+ 
+   SetNull(n, false);
+   } // end of SetValue
+@@ -398,7 +398,7 @@ void TYPBLK<double>::SetValue(PCSZ p, in
+ 		throw Type;
+ 	} // endif Check
+ 
+-  Typp[n] = atof(p);
++  UnalignedWrite(n, atof(p));
+   SetNull(n, false);
+   } // end of SetValue
+ 
+@@ -430,7 +430,7 @@ void TYPBLK<TYPE>::SetValue(PVBLK pv, in
+   ChkTyp(pv);
+ 
+   if (!(b = pv->IsNull(n2) && Nullable))
+-    Typp[n1] = GetTypedValue(pv, n2);
++    UnalignedWrite(n1, GetTypedValue(pv, n2));
+   else
+     Reset(n1);
+ 
+@@ -481,10 +481,10 @@ void TYPBLK<TYPE>::SetMin(PVAL valp, int
+   {
+   CheckParms(valp, n)
+   TYPE  tval = GetTypedValue(valp);
+-  TYPE& tmin = Typp[n];
++  TYPE  tmin = UnalignedRead(n);
+ 
+   if (tval < tmin)
+-    tmin = tval;
++    UnalignedWrite(n, tval);
+ 
+   } // end of SetMin
+ 
+@@ -496,10 +496,10 @@ void TYPBLK<TYPE>::SetMax(PVAL valp, int
+   {
+   CheckParms(valp, n)
+   TYPE  tval = GetTypedValue(valp);
+-  TYPE& tmin = Typp[n];
++  TYPE  tmin = UnalignedRead(n);
+ 
+   if (tval > tmin)
+-    tmin = tval;
++    UnalignedWrite(n, tval);
+ 
+   } // end of SetMax
+ 
+@@ -513,8 +513,7 @@ void TYPBLK<TYPE>::SetValues(PVBLK pv, i
+   CheckType(pv)
+   TYPE *lp = ((TYPBLK*)pv)->Typp;
+ 
+-  for (int i = k; i < n; i++)          // TODO
+-    Typp[i] = lp[i];
++  memcpy(Typp + k, lp + k, sizeof(TYPE) * n);
+ 
+   } // end of SetValues
+ #endif // 0
+@@ -525,7 +524,7 @@ void TYPBLK<TYPE>::SetValues(PVBLK pv, i
+ template <class TYPE>
+ void TYPBLK<TYPE>::Move(int i, int j)
+   {
+-  Typp[j] = Typp[i];
++  UnalignedWrite(j, UnalignedRead(i));
+   MoveNull(i, j);
+   } // end of Move
+ 
+@@ -539,7 +538,7 @@ int TYPBLK<TYPE>::CompVal(PVAL vp, int n
+   ChkIndx(n);
+   ChkTyp(vp);
+ #endif   // _DEBUG
+-  TYPE mlv = Typp[n];
++  TYPE mlv = UnalignedRead(n);
+   TYPE vlv = GetTypedValue(vp);
+ 
+   return (vlv > mlv) ? 1 : (vlv < mlv) ? (-1) : 0;
+@@ -551,8 +550,8 @@ int TYPBLK<TYPE>::CompVal(PVAL vp, int n
+ template <class TYPE>
+ int TYPBLK<TYPE>::CompVal(int i1, int i2)
+   {
+-  TYPE lv1 = Typp[i1];
+-  TYPE lv2 = Typp[i2];
++  TYPE lv1 = UnalignedRead(i1);
++  TYPE lv2 = UnalignedRead(i2);
+ 
+   return (lv1 > lv2) ? 1 : (lv1 < lv2) ? (-1) : 0;
+   } // end of CompVal
+@@ -589,7 +588,7 @@ int TYPBLK<TYPE>::Find(PVAL vp)
+   TYPE n = GetTypedValue(vp);
+ 
+   for (i = 0; i < Nval; i++)
+-    if (n == Typp[i])
++    if (n == UnalignedRead(i))
+       break;
+ 
+   return (i < Nval) ? i : (-1);
+@@ -605,7 +604,7 @@ int TYPBLK<TYPE>::GetMaxLength(void)
+   int i, n, m;
+ 
+   for (i = n = 0; i < Nval; i++) {
+-    m = sprintf(buf, Fmt, Typp[i]);
++    m = sprintf(buf, Fmt, UnalignedRead(i));
+     n = MY_MAX(n, m);
+     } // endfor i
+ 
+@@ -1335,7 +1334,7 @@ char *DATBLK::GetCharString(char *p, int
+   char *vp;
+ 
+   if (Dvalp) {
+-    Dvalp->SetValue(Typp[n]);
++    Dvalp->SetValue(UnalignedRead(n));
+     vp = Dvalp->GetCharString(p);
+   } else
+     vp = TYPBLK<int>::GetCharString(p, n);
+@@ -1351,7 +1350,7 @@ void DATBLK::SetValue(PCSZ p, int n)
+   if (Dvalp) {
+     // Decode the string according to format
+     Dvalp->SetValue_psz(p);
+-    Typp[n] = Dvalp->GetIntValue();
++    UnalignedWrite(n, Dvalp->GetIntValue());
+   } else
+     TYPBLK<int>::SetValue(p, n);
+ 
+--- storage/connect/valblk.h
++++ storage/connect/valblk.h
+@@ -139,6 +139,7 @@ class VALBLK : public BLOCK {
+   int     Prec;             // Precision of float values
+   }; // end of class VALBLK
+ 
++
+ /***********************************************************************/
+ /*  Class TYPBLK: represents a block of typed values.                  */
+ /***********************************************************************/
+@@ -151,40 +152,41 @@ class TYPBLK : public VALBLK {
+   // Implementation
+   virtual bool   Init(PGLOBAL g, bool check);
+   virtual int    GetVlen(void) {return sizeof(TYPE);}
+-  virtual char   GetTinyValue(int n) {return (char)Typp[n];}
+-  virtual uchar  GetUTinyValue(int n) {return (uchar)Typp[n];}
+-  virtual short  GetShortValue(int n) {return (short)Typp[n];}
+-  virtual ushort GetUShortValue(int n) {return (ushort)Typp[n];}
+-  virtual int    GetIntValue(int n) {return (int)Typp[n];}
+-  virtual uint   GetUIntValue(int n) {return (uint)Typp[n];}
+-  virtual longlong GetBigintValue(int n) {return (longlong)Typp[n];}
+-  virtual ulonglong GetUBigintValue(int n) {return (ulonglong)Typp[n];}
+-  virtual double GetFloatValue(int n) {return (double)Typp[n];}
++
++  virtual char   GetTinyValue(int n) {return (char)UnalignedRead(n);}
++  virtual uchar  GetUTinyValue(int n) {return (uchar)UnalignedRead(n);}
++  virtual short  GetShortValue(int n) {return (short)UnalignedRead(n);}
++  virtual ushort GetUShortValue(int n) {return (ushort)UnalignedRead(n);}
++  virtual int    GetIntValue(int n) {return (int)UnalignedRead(n);}
++  virtual uint   GetUIntValue(int n) {return (uint)UnalignedRead(n);}
++  virtual longlong GetBigintValue(int n) {return (longlong)UnalignedRead(n);}
++  virtual ulonglong GetUBigintValue(int n) {return (ulonglong)UnalignedRead(n);}
++  virtual double GetFloatValue(int n) {return (double)UnalignedRead(n);}
+   virtual char  *GetCharString(char *p, int n);
+-  virtual void   Reset(int n) {Typp[n] = 0;}
++  virtual void   Reset(int n) {UnalignedWrite(n, 0);}
+ 
+   // Methods
+   using VALBLK::SetValue;
+   virtual void   SetValue(PCSZ sp, int n);
+   virtual void   SetValue(const char *sp, uint len, int n);
+   virtual void   SetValue(short sval, int n)
+-                  {Typp[n] = (TYPE)sval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)sval); SetNull(n, false);}
+   virtual void   SetValue(ushort sval, int n)
+-                  {Typp[n] = (TYPE)sval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)sval); SetNull(n, false);}
+   virtual void   SetValue(int lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(uint lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(longlong lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(ulonglong lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(double fval, int n)
+-                  {Typp[n] = (TYPE)fval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)fval); SetNull(n, false);}
+   virtual void   SetValue(char cval, int n)
+-                  {Typp[n] = (TYPE)cval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)cval); SetNull(n, false);}
+   virtual void   SetValue(uchar cval, int n)
+-                  {Typp[n] = (TYPE)cval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)cval); SetNull(n, false);}
+   virtual void   SetValue(PVAL valp, int n);
+   virtual void   SetValue(PVBLK pv, int n1, int n2);
+   virtual void   SetMin(PVAL valp, int n);
+@@ -206,6 +208,17 @@ class TYPBLK : public VALBLK {
+   // Members
+   TYPE* const &Typp;
+   const char  *Fmt;
++
++  // Unaligned access
++  TYPE UnalignedRead(int n) const {
++    TYPE result;
++    memcpy(&result, Typp + n, sizeof(TYPE));
++    return result;
++  }
++
++  void UnalignedWrite(int n, TYPE value) {
++    memcpy(Typp + n, &value, sizeof(TYPE));
++  }
+   }; // end of class TYPBLK
+ 
+ /***********************************************************************/
diff --git a/srcpkgs/mariadb/patches/mips-groonga-atomic.patch b/srcpkgs/mariadb/patches/mips-groonga-atomic.patch
new file mode 100644
index 00000000000..9c99cc1b026
--- /dev/null
+++ b/srcpkgs/mariadb/patches/mips-groonga-atomic.patch
@@ -0,0 +1,34 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:28 +0200
+Subject: mips-groonga-atomic
+
+---
+ storage/mroonga/vendor/groonga/CMakeLists.txt     | 2 ++
+ storage/mroonga/vendor/groonga/lib/CMakeLists.txt | 1 +
+ 2 files changed, 3 insertions(+)
+
+diff --git storage/mroonga/vendor/groonga/CMakeLists.txt storage/mroonga/vendor/groonga/CMakeLists.txt
+index e27070f..7f1899c 100644
+--- storage/mroonga/vendor/groonga/CMakeLists.txt
++++ storage/mroonga/vendor/groonga/CMakeLists.txt
+@@ -238,6 +238,8 @@ endmacro()
+ include(build/ac_macros/check_headers.m4)
+ include(build/ac_macros/check_functions.m4)
+ 
++ac_check_lib(atomic __atomic_store_8)
++
+ ac_check_symbols(fpclassify math.h)
+ ac_check_lib(m fpclassify)
+ 
+diff --git storage/mroonga/vendor/groonga/lib/CMakeLists.txt storage/mroonga/vendor/groonga/lib/CMakeLists.txt
+index 6765261..6c13737 100644
+--- storage/mroonga/vendor/groonga/lib/CMakeLists.txt
++++ storage/mroonga/vendor/groonga/lib/CMakeLists.txt
+@@ -90,6 +90,7 @@ endif()
+ set_target_properties(libgroonga PROPERTIES OUTPUT_NAME "groonga")
+ 
+ set(GRN_ALL_LIBRARIES
++    ${ATOMIC_LIBS}
+     ${EXECINFO_LIBS}
+     ${RT_LIBS}
+     ${PTHREAD_LIBS}
diff --git a/srcpkgs/mariadb/patches/mips-innobase-atomic.patch b/srcpkgs/mariadb/patches/mips-innobase-atomic.patch
new file mode 100644
index 00000000000..195fe41a422
--- /dev/null
+++ b/srcpkgs/mariadb/patches/mips-innobase-atomic.patch
@@ -0,0 +1,20 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:29 +0200
+Subject: mips-innobase-atomic
+
+---
+ storage/innobase/include/os0sync.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git storage/innobase/include/os0sync.h storage/innobase/include/os0sync.h
+index bb225c5..6520237 100644
+--- storage/innobase/include/os0sync.h
++++ storage/innobase/include/os0sync.h
+@@ -37,6 +37,7 @@ Created 9/6/1995 Heikki Tuuri
+ 
+ #include "univ.i"
+ #include "ut0lst.h"
++#include "sync0types.h"
+ 
+ /** CPU cache line size */
+ #ifdef __powerpc__
diff --git a/srcpkgs/mariadb/patches/mips-machine.patch b/srcpkgs/mariadb/patches/mips-machine.patch
new file mode 100644
index 00000000000..3dbbbaaa538
--- /dev/null
+++ b/srcpkgs/mariadb/patches/mips-machine.patch
@@ -0,0 +1,23 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:29 +0200
+Subject: mips-machine
+
+---
+ cmake/package_name.cmake | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git cmake/package_name.cmake cmake/package_name.cmake
+index 4930a6b..7681f78 100644
+--- cmake/package_name.cmake
++++ cmake/package_name.cmake
+@@ -34,6 +34,10 @@ IF(NOT VERSION)
+       SET(DEFAULT_MACHINE "mips")
+     ENDIF()
+ 
++    IF(NOT 64BIT AND CMAKE_SYSTEM_PROCESSOR MATCHES "^mips64")
++      SET(DEFAULT_MACHINE "mips")
++    ENDIF()
++
+     IF(CMAKE_SYSTEM_NAME MATCHES "Windows")
+       SET(NEED_DASH_BETWEEN_PLATFORM_AND_MACHINE 0)
+       SET(DEFAULT_PLATFORM "win")
diff --git a/srcpkgs/mariadb/patches/musl-ppc.patch b/srcpkgs/mariadb/patches/musl-ppc.patch
index 16cbac71a94..57c7f4bf15b 100644
--- a/srcpkgs/mariadb/patches/musl-ppc.patch
+++ b/srcpkgs/mariadb/patches/musl-ppc.patch
@@ -15,12 +15,11 @@ builtin for this in gcc for ages, so just use that instead.
  # endif
 --- storage/xtradb/include/ut0ut.h
 +++ storage/xtradb/include/ut0ut.h
-@@ -86,8 +86,7 @@ struct ut_when_dtor {
-    independent way by using YieldProcessor. */
- #  define UT_RELAX_CPU() YieldProcessor()
- # elif defined(__powerpc__)
--#include <sys/platform/ppc.h>
--#  define UT_RELAX_CPU() __ppc_get_timebase()
+@@ -86,6 +86,8 @@
+ # elif defined(__powerpc__) && defined __GLIBC__
+ #include <sys/platform/ppc.h>
+ #  define UT_RELAX_CPU() __ppc_get_timebase()
++# elif defined(__powerpc__)
 +#  define UT_RELAX_CPU() __builtin_ppc_get_timebase()
  # else
  #  define UT_RELAX_CPU() ((void)0) /* avoid warning for an empty statement */
diff --git a/srcpkgs/mariadb/template b/srcpkgs/mariadb/template
index 88611438a99..8ba4c5e8642 100644
--- a/srcpkgs/mariadb/template
+++ b/srcpkgs/mariadb/template
@@ -1,7 +1,7 @@
 # Template file for 'mariadb'
 pkgname=mariadb
-version=10.1.30
-revision=8
+version=10.1.45
+revision=1
 build_style=cmake
 configure_args="-DMYSQL_DATADIR=/var/lib/mysql
  -DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock -DDEFAULT_CHARSET=utf8
@@ -27,7 +27,7 @@ maintainer="Orphaned <orphan@voidlinux.org>"
 license="GPL-2.0-only"
 homepage="https://mariadb.org/"
 distfiles="http://archive.mariadb.org/$pkgname-$version/source/$pkgname-$version.tar.gz"
-checksum=173a5e5a24819e0a469c3bd09b5c98491676c37c6095882a2ea34c5af0996c88
+checksum=9d8f0f71f9613b2028ffc5c5be8b98948ec955eb0d89600d18ed7cc04807dad5
 lib32disabled=yes
 provides="mysql-${version}_${revision}"
 replaces="mysql>=0"
@@ -36,6 +36,10 @@ system_accounts="mysql"
 mysql_homedir="/var/lib/mysql"
 CFLAGS="-w"
 
+if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then
+	makedepends+=" libatomic-devel"
+fi
+
 pre_configure() {
 	# We need some host binaries before starting cross compilation.
 	if [ "$CROSS_BUILD" ]; then

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PR PATCH] [Updated] mariadb: update to 10.1.45.
  2020-05-27  6:23 [PR PATCH] mariadb: update to 10.1.45 rmccask
                   ` (4 preceding siblings ...)
  2020-05-27 18:17 ` rmccask
@ 2020-05-27 18:17 ` rmccask
  2020-05-27 18:23 ` rmccask
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: rmccask @ 2020-05-27 18:17 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 325 bytes --]

There is an updated pull request by rmccask against master on the void-packages repository

https://github.com/rmccask/void-packages mariadb-10.1.45
https://github.com/void-linux/void-packages/pull/22348

mariadb: update to 10.1.45.


A patch file from https://github.com/void-linux/void-packages/pull/22348.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-mariadb-10.1.45-22348.patch --]
[-- Type: text/x-diff, Size: 38613 bytes --]

From c9b68c2136ae115db6091ca98da42c29c6542f40 Mon Sep 17 00:00:00 2001
From: Randy McCaskill <randy@mccaskill.us>
Date: Wed, 27 May 2020 02:22:24 -0400
Subject: [PATCH] mariadb: update to 10.1.45.

[ci skip]
---
 .../patches/armhf_mroonga_storage_fail.patch  |  22 ++
 srcpkgs/mariadb/patches/c11_atomics.patch     | 128 ++++++++
 .../mariadb/patches/fix-pthread-detach.patch  |  34 --
 .../mariadb/patches/force-c11-atomics.patch   | 294 ------------------
 srcpkgs/mariadb/patches/libatomic.patch       | 103 ------
 .../patches/mips-connect-unaligned.patch      | 257 +++++++++++++++
 .../mariadb/patches/mips-groonga-atomic.patch |  34 ++
 .../patches/mips-innobase-atomic.patch        |  20 ++
 srcpkgs/mariadb/patches/mips-machine.patch    |  23 ++
 srcpkgs/mariadb/patches/musl-ppc.patch        |  11 +-
 srcpkgs/mariadb/template                      |  10 +-
 11 files changed, 496 insertions(+), 440 deletions(-)
 create mode 100644 srcpkgs/mariadb/patches/armhf_mroonga_storage_fail.patch
 create mode 100644 srcpkgs/mariadb/patches/c11_atomics.patch
 delete mode 100644 srcpkgs/mariadb/patches/fix-pthread-detach.patch
 delete mode 100644 srcpkgs/mariadb/patches/force-c11-atomics.patch
 delete mode 100644 srcpkgs/mariadb/patches/libatomic.patch
 create mode 100644 srcpkgs/mariadb/patches/mips-connect-unaligned.patch
 create mode 100644 srcpkgs/mariadb/patches/mips-groonga-atomic.patch
 create mode 100644 srcpkgs/mariadb/patches/mips-innobase-atomic.patch
 create mode 100644 srcpkgs/mariadb/patches/mips-machine.patch

diff --git a/srcpkgs/mariadb/patches/armhf_mroonga_storage_fail.patch b/srcpkgs/mariadb/patches/armhf_mroonga_storage_fail.patch
new file mode 100644
index 00000000000..228d6b7df26
--- /dev/null
+++ b/srcpkgs/mariadb/patches/armhf_mroonga_storage_fail.patch
@@ -0,0 +1,22 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:29 +0200
+Subject: armhf_mroonga_storage_fail
+
+---
+ storage/mroonga/lib/mrn_multiple_column_key_codec.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- storage/mroonga/lib/mrn_multiple_column_key_codec.cpp
++++ storage/mroonga/lib/mrn_multiple_column_key_codec.cpp
+@@ -623,9 +623,10 @@ namespace mrn {
+     long long int long_long_value;
+     mrn_byte_order_network_to_host(&long_long_value, grn_key, grn_key_size);
+     int max_bit = (grn_key_size * 8 - 1);
+-    *((long long int *)mysql_key) =
++    long_long_value =
+       long_long_value ^ (((long_long_value ^ (1LL << max_bit)) >> max_bit) |
+                          (1LL << max_bit));
++    memcpy(mysql_key, &long_long_value, sizeof(long_long_value));
+     DBUG_VOID_RETURN;
+   }
+ 
diff --git a/srcpkgs/mariadb/patches/c11_atomics.patch b/srcpkgs/mariadb/patches/c11_atomics.patch
new file mode 100644
index 00000000000..da84c12a0e1
--- /dev/null
+++ b/srcpkgs/mariadb/patches/c11_atomics.patch
@@ -0,0 +1,128 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:29 +0200
+Subject: c11_atomics
+
+---
+ configure.cmake               | 23 +++++++++++++++++++++--
+ include/atomic/gcc_builtins.h | 15 +++++++++++++++
+ include/atomic/nolock.h       |  4 ++--
+ mysys/CMakeLists.txt          |  4 ++++
+ sql/CMakeLists.txt            |  4 ++++
+ 5 files changed, 46 insertions(+), 4 deletions(-)
+
+--- configure.cmake
++++ configure.cmake
+@@ -128,7 +128,7 @@ IF(UNIX)
+   ENDIF()
+   FIND_PACKAGE(Threads)
+ 
+-  SET(CMAKE_REQUIRED_LIBRARIES 
++  LIST(APPEND CMAKE_REQUIRED_LIBRARIES
+     ${LIBM} ${LIBNSL} ${LIBBIND} ${LIBCRYPT} ${LIBSOCKET} ${LIBDL} ${CMAKE_THREAD_LIBS_INIT} ${LIBRT} ${LIBEXECINFO})
+   # Need explicit pthread for gcc -fsanitize=address
+   IF(CMAKE_USE_PTHREADS_INIT AND CMAKE_C_FLAGS MATCHES "-fsanitize=")
+@@ -1038,7 +1038,26 @@ ELSEIF(NOT WITH_ATOMIC_OPS)
+     long long int *ptr= &var;
+     return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
+   }"
+-  HAVE_GCC_C11_ATOMICS)
++  HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
++  IF(HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
++    SET(HAVE_GCC_C11_ATOMICS True)
++  ELSE()
++    SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
++    LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
++    CHECK_CXX_SOURCE_COMPILES("
++    int main()
++    {
++      long long int var= 1;
++      long long int *ptr= &var;
++      return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
++    }"
++    HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++    IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++      SET(HAVE_GCC_C11_ATOMICS True)
++    ELSE()
++      SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES})
++    ENDIF()
++  ENDIF()
+ ELSE()
+   MESSAGE(FATAL_ERROR "${WITH_ATOMIC_OPS} is not a valid value for WITH_ATOMIC_OPS!")
+ ENDIF()
+--- include/atomic/gcc_builtins.h
++++ include/atomic/gcc_builtins.h
+@@ -16,6 +16,7 @@
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335  USA */
+ 
++#if defined (HAVE_GCC_ATOMIC_BUILTINS)
+ #define make_atomic_add_body(S)                     \
+   v= __sync_fetch_and_add(a, v);
+ #define make_atomic_fas_body(S)                     \
+@@ -26,6 +27,20 @@
+   sav= __sync_val_compare_and_swap(a, cmp_val, set);\
+   if (!(ret= (sav == cmp_val))) *cmp= sav
+ 
++#elif defined(HAVE_GCC_C11_ATOMICS)
++
++#define make_atomic_add_body(S)                     \
++  v= __atomic_fetch_add(a, v, __ATOMIC_SEQ_CST)
++#define make_atomic_fas_body(S)                     \
++  v= __atomic_exchange_n(a, v, __ATOMIC_SEQ_CST)
++#define make_atomic_cas_body(S)                     \
++  int ## S sav;                                     \
++  ret= __atomic_compare_exchange_n(a, cmp, set,     \
++                                   0,               \
++                                   __ATOMIC_SEQ_CST,\
++                                   __ATOMIC_SEQ_CST);
++#endif
++
+ #ifdef MY_ATOMIC_MODE_DUMMY
+ #define make_atomic_load_body(S)   ret= *a
+ #define make_atomic_store_body(S)  *a= v
+--- include/atomic/nolock.h
++++ include/atomic/nolock.h
+@@ -17,7 +17,7 @@
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335  USA */
+ 
+ #if defined(__i386__) || defined(_MSC_VER) || defined(__x86_64__)   \
+-    || defined(HAVE_GCC_ATOMIC_BUILTINS) \
++    || defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_C11_ATOMICS) \
+     || defined(HAVE_SOLARIS_ATOMIC)
+ 
+ #  ifdef MY_ATOMIC_MODE_DUMMY
+@@ -41,7 +41,7 @@
+ #  elif __GNUC__
+ #    if defined(HAVE_SOLARIS_ATOMIC)
+ #      include "solaris.h"
+-#    elif defined(HAVE_GCC_ATOMIC_BUILTINS)
++#    elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_C11_ATOMICS)
+ #      include "gcc_builtins.h"
+ #    elif defined(__i386__) || defined(__x86_64__)
+ #      include "x86-gcc.h"
+--- mysys/CMakeLists.txt
++++ mysys/CMakeLists.txt
+@@ -79,6 +79,10 @@ IF(HAVE_BFD_H)
+   TARGET_LINK_LIBRARIES(mysys bfd)  
+ ENDIF(HAVE_BFD_H)
+ 
++IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++  TARGET_LINK_LIBRARIES(mysys atomic)
++ENDIF()
++
+ IF (WIN32)
+   TARGET_LINK_LIBRARIES(mysys IPHLPAPI)  
+ ENDIF(WIN32)
+--- sql/CMakeLists.txt
++++ sql/CMakeLists.txt
+@@ -165,6 +165,10 @@ TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATI
+   ${SSL_LIBRARIES}
+   ${LIBSYSTEMD})
+ 
++IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++  TARGET_LINK_LIBRARIES(sql atomic)
++ENDIF()
++
+ IF(WIN32)
+   SET(MYSQLD_SOURCE main.cc nt_servc.cc message.rc)
+   TARGET_LINK_LIBRARIES(sql psapi)
diff --git a/srcpkgs/mariadb/patches/fix-pthread-detach.patch b/srcpkgs/mariadb/patches/fix-pthread-detach.patch
deleted file mode 100644
index a53c05b1320..00000000000
--- a/srcpkgs/mariadb/patches/fix-pthread-detach.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From c45b4a774b6d1404a080a1c1759f780fa78f223b Mon Sep 17 00:00:00 2001
-From: Sergey Vojtovich <svoj@mariadb.org>
-Date: Fri, 21 Sep 2018 16:04:16 +0400
-Subject: [PATCH] MDEV-17200 - pthread_detach called for already detached
- threads
-
-pthread_detach_this_thread() was intended to be defined to something
-meaningful only on some ancient unixes, which don't have
-pthread_attr_setdetachstate() defined. Otherwise, on normal unixes,
-threads are created detached in the first place.
-
-This was broken in 0f01bf267680244ec488adaf65a42838756ed48e so that
-we started calling pthread_detach() for already detached threads.
-Intention was to detach aria checkpoint thread.
-
-However in 87007dc2f71634cc460271eb277ad851ec69c04b aria service threads
-were made joinable with appropriate handling, which makes breaking
-revision unneccessary.
-
-Revert remnants of 0f01bf267680244ec488adaf65a42838756ed48e, so that
-pthread_detach_this_thread() is meaningful only on some ancient unixes
-again.
-
---- include/my_pthread.h
-+++ include/my_pthread.h
-@@ -184,7 +184,7 @@ int pthread_cancel(pthread_t thread);
- #define pthread_key(T,V) pthread_key_t V
- #define my_pthread_getspecific_ptr(T,V) my_pthread_getspecific(T,(V))
- #define my_pthread_setspecific_ptr(T,V) pthread_setspecific(T,(void*) (V))
--#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(tmp); }
-+#define pthread_detach_this_thread()
- #define pthread_handler_t EXTERNC void *
- typedef void *(* pthread_handler)(void *);
- 
diff --git a/srcpkgs/mariadb/patches/force-c11-atomics.patch b/srcpkgs/mariadb/patches/force-c11-atomics.patch
deleted file mode 100644
index 9546798bf97..00000000000
--- a/srcpkgs/mariadb/patches/force-c11-atomics.patch
+++ /dev/null
@@ -1,294 +0,0 @@
---- include/my_atomic.h
-+++ include/my_atomic.h
-@@ -104,217 +104,6 @@
-   but can be added, if necessary.
- */
- 
--#define intptr         void *
--/**
--  Currently we don't support 8-bit and 16-bit operations.
--  It can be added later if needed.
--*/
--#undef MY_ATOMIC_HAS_8_16
--
--/*
-- * Attempt to do atomic ops without locks
-- */
--#include "atomic/nolock.h"
--
--#ifndef make_atomic_cas_body
--/* nolock.h was not able to generate even a CAS function, fall back */
--#error atomic ops for this platform are not implemented
--#endif
--
--/* define missing functions by using the already generated ones */
--#ifndef make_atomic_add_body
--#define make_atomic_add_body(S)                                 \
--  int ## S tmp=*a;                                              \
--  while (!my_atomic_cas ## S(a, &tmp, tmp+v)) ;                 \
--  v=tmp;
--#endif
--#ifndef make_atomic_fas_body
--#define make_atomic_fas_body(S)                                 \
--  int ## S tmp=*a;                                              \
--  while (!my_atomic_cas ## S(a, &tmp, v)) ;                     \
--  v=tmp;
--#endif
--#ifndef make_atomic_load_body
--#define make_atomic_load_body(S)                                \
--  ret= 0; /* avoid compiler warning */                          \
--  (void)(my_atomic_cas ## S(a, &ret, ret));
--#endif
--#ifndef make_atomic_store_body
--#define make_atomic_store_body(S)                               \
--  (void)(my_atomic_fas ## S (a, v));
--#endif
--
--/*
--  transparent_union doesn't work in g++
--  Bug ?
--
--  Darwin's gcc doesn't want to put pointers in a transparent_union
--  when built with -arch ppc64. Complains:
--  warning: 'transparent_union' attribute ignored
--*/
--#if defined(__GNUC__) && !defined(__cplusplus) && \
--      ! (defined(__APPLE__) && (defined(_ARCH_PPC64) ||defined (_ARCH_PPC)))
--/*
--  we want to be able to use my_atomic_xxx functions with
--  both signed and unsigned integers. But gcc will issue a warning
--  "passing arg N of `my_atomic_XXX' as [un]signed due to prototype"
--  if the signedness of the argument doesn't match the prototype, or
--  "pointer targets in passing argument N of my_atomic_XXX differ in signedness"
--  if int* is used where uint* is expected (or vice versa).
--  Let's shut these warnings up
--*/
--#define make_transparent_unions(S)                              \
--        typedef union {                                         \
--          int  ## S  i;                                         \
--          uint ## S  u;                                         \
--        } U_ ## S   __attribute__ ((transparent_union));        \
--        typedef union {                                         \
--          int  ## S volatile *i;                                \
--          uint ## S volatile *u;                                \
--        } Uv_ ## S   __attribute__ ((transparent_union));
--#define uintptr intptr
--make_transparent_unions(8)
--make_transparent_unions(16)
--make_transparent_unions(32)
--make_transparent_unions(64)
--make_transparent_unions(ptr)
--#undef uintptr
--#undef make_transparent_unions
--#define a       U_a.i
--#define cmp     U_cmp.i
--#define v       U_v.i
--#define set     U_set.i
--#else
--#define U_8    int8
--#define U_16   int16
--#define U_32   int32
--#define U_64   int64
--#define U_ptr  intptr
--#define Uv_8   int8
--#define Uv_16  int16
--#define Uv_32  int32
--#define Uv_64  int64
--#define Uv_ptr intptr
--#define U_a    volatile *a
--#define U_cmp  *cmp
--#define U_v    v
--#define U_set  set
--#endif /* __GCC__ transparent_union magic */
--
--#define make_atomic_cas(S)                                      \
--static inline int my_atomic_cas ## S(Uv_ ## S U_a,              \
--                            Uv_ ## S U_cmp, U_ ## S U_set)      \
--{                                                               \
--  int8 ret;                                                     \
--  make_atomic_cas_body(S);                                      \
--  return ret;                                                   \
--}
--
--#define make_atomic_add(S)                                      \
--static inline int ## S my_atomic_add ## S(                      \
--                        Uv_ ## S U_a, U_ ## S U_v)              \
--{                                                               \
--  make_atomic_add_body(S);                                      \
--  return v;                                                     \
--}
--
--#define make_atomic_fas(S)                                      \
--static inline int ## S my_atomic_fas ## S(                      \
--                         Uv_ ## S U_a, U_ ## S U_v)             \
--{                                                               \
--  make_atomic_fas_body(S);                                      \
--  return v;                                                     \
--}
--
--#define make_atomic_load(S)                                     \
--static inline int ## S my_atomic_load ## S(Uv_ ## S U_a)        \
--{                                                               \
--  int ## S ret;                                                 \
--  make_atomic_load_body(S);                                     \
--  return ret;                                                   \
--}
--
--#define make_atomic_store(S)                                    \
--static inline void my_atomic_store ## S(                        \
--                     Uv_ ## S U_a, U_ ## S U_v)                 \
--{                                                               \
--  make_atomic_store_body(S);                                    \
--}
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_cas(8)
--make_atomic_cas(16)
--#endif
--make_atomic_cas(32)
--make_atomic_cas(64)
--make_atomic_cas(ptr)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_add(8)
--make_atomic_add(16)
--#endif
--make_atomic_add(32)
--make_atomic_add(64)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_load(8)
--make_atomic_load(16)
--#endif
--make_atomic_load(32)
--make_atomic_load(64)
--make_atomic_load(ptr)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_fas(8)
--make_atomic_fas(16)
--#endif
--make_atomic_fas(32)
--make_atomic_fas(64)
--make_atomic_fas(ptr)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_store(8)
--make_atomic_store(16)
--#endif
--make_atomic_store(32)
--make_atomic_store(64)
--make_atomic_store(ptr)
--
--#ifdef _atomic_h_cleanup_
--#include _atomic_h_cleanup_
--#undef _atomic_h_cleanup_
--#endif
--
--#undef U_8
--#undef U_16
--#undef U_32
--#undef U_64
--#undef U_ptr
--#undef Uv_8
--#undef Uv_16
--#undef Uv_32
--#undef Uv_64
--#undef Uv_ptr
--#undef a
--#undef cmp
--#undef v
--#undef set
--#undef U_a
--#undef U_cmp
--#undef U_v
--#undef U_set
--#undef make_atomic_add
--#undef make_atomic_cas
--#undef make_atomic_load
--#undef make_atomic_store
--#undef make_atomic_fas
--#undef make_atomic_add_body
--#undef make_atomic_cas_body
--#undef make_atomic_load_body
--#undef make_atomic_store_body
--#undef make_atomic_fas_body
--#undef intptr
--
- /*
-   the macro below defines (as an expression) the code that
-   will be run in spin-loops. Intel manuals recummend to have PAUSE there.
-@@ -328,7 +117,8 @@ make_atomic_store(ptr)
- #define MY_ATOMIC_NOT_1CPU 1
- extern int my_atomic_initialize();
- 
--#ifdef __ATOMIC_SEQ_CST
-+#define MY_ATOMIC_MODE "gcc-atomics-smp"
-+
- #define MY_MEMORY_ORDER_RELAXED __ATOMIC_RELAXED
- #define MY_MEMORY_ORDER_CONSUME __ATOMIC_CONSUME
- #define MY_MEMORY_ORDER_ACQUIRE __ATOMIC_ACQUIRE
-@@ -364,43 +154,27 @@ extern int my_atomic_initialize();
-   __atomic_compare_exchange_n((P), (E), (D), false, (S), (F))
- #define my_atomic_casptr_strong_explicit(P, E, D, S, F) \
-   __atomic_compare_exchange_n((P), (E), (D), false, (S), (F))
--#else
--#define MY_MEMORY_ORDER_RELAXED
--#define MY_MEMORY_ORDER_CONSUME
--#define MY_MEMORY_ORDER_ACQUIRE
--#define MY_MEMORY_ORDER_RELEASE
--#define MY_MEMORY_ORDER_ACQ_REL
--#define MY_MEMORY_ORDER_SEQ_CST
--
--#define my_atomic_store32_explicit(P, D, O) my_atomic_store32((P), (D))
--#define my_atomic_store64_explicit(P, D, O) my_atomic_store64((P), (D))
--#define my_atomic_storeptr_explicit(P, D, O) my_atomic_storeptr((P), (D))
--
--#define my_atomic_load32_explicit(P, O) my_atomic_load32((P))
--#define my_atomic_load64_explicit(P, O) my_atomic_load64((P))
--#define my_atomic_loadptr_explicit(P, O) my_atomic_loadptr((P))
--
--#define my_atomic_fas32_explicit(P, D, O) my_atomic_fas32((P), (D))
--#define my_atomic_fas64_explicit(P, D, O) my_atomic_fas64((P), (D))
--#define my_atomic_fasptr_explicit(P, D, O) my_atomic_fasptr((P), (D))
--
--#define my_atomic_add32_explicit(P, A, O) my_atomic_add32((P), (A))
--#define my_atomic_add64_explicit(P, A, O) my_atomic_add64((P), (A))
--#define my_atomic_addptr_explicit(P, A, O) my_atomic_addptr((P), (A))
- 
--#define my_atomic_cas32_weak_explicit(P, E, D, S, F) \
--  my_atomic_cas32((P), (E), (D))
--#define my_atomic_cas64_weak_explicit(P, E, D, S, F) \
--  my_atomic_cas64((P), (E), (D))
--#define my_atomic_casptr_weak_explicit(P, E, D, S, F) \
--  my_atomic_casptr((P), (E), (D))
-+#define my_atomic_store32(P, D) __atomic_store_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_store64(P, D) __atomic_store_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_storeptr(P, D) __atomic_store_n((P), (D), __ATOMIC_SEQ_CST)
- 
--#define my_atomic_cas32_strong_explicit(P, E, D, S, F) \
--  my_atomic_cas32((P), (E), (D))
--#define my_atomic_cas64_strong_explicit(P, E, D, S, F) \
--  my_atomic_cas64((P), (E), (D))
--#define my_atomic_casptr_strong_explicit(P, E, D, S, F) \
--  my_atomic_casptr((P), (E), (D))
--#endif
-+#define my_atomic_load32(P) __atomic_load_n((P), __ATOMIC_SEQ_CST)
-+#define my_atomic_load64(P) __atomic_load_n((P), __ATOMIC_SEQ_CST)
-+#define my_atomic_loadptr(P) __atomic_load_n((P), __ATOMIC_SEQ_CST)
-+
-+#define my_atomic_fas32(P, D) __atomic_exchange_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_fas64(P, D) __atomic_exchange_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_fasptr(P, D) __atomic_exchange_n((P), (D), __ATOMIC_SEQ_CST)
-+
-+#define my_atomic_add32(P, A) __atomic_fetch_add((P), (A), __ATOMIC_SEQ_CST)
-+#define my_atomic_add64(P, A) __atomic_fetch_add((P), (A), __ATOMIC_SEQ_CST)
-+
-+#define my_atomic_cas32(P, E, D) \
-+  __atomic_compare_exchange_n((P), (E), (D), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
-+#define my_atomic_cas64(P, E, D) \
-+  __atomic_compare_exchange_n((P), (E), (D), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
-+#define my_atomic_casptr(P, E, D) \
-+  __atomic_compare_exchange_n((P), (E), (D), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
- 
- #endif /* MY_ATOMIC_INCLUDED */
diff --git a/srcpkgs/mariadb/patches/libatomic.patch b/srcpkgs/mariadb/patches/libatomic.patch
deleted file mode 100644
index 0e8e872d9c2..00000000000
--- a/srcpkgs/mariadb/patches/libatomic.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-Source: Debian, q66
-
-This ensures arches that need libatomic properly get it where necessary.
-It also removes the sync builtin checks that are not necessary when
-using C11 atomics (like we always are because we're on a modern gcc)
-that break build on e.g. ppc32 and mips.
-
---- configure.cmake
-+++ configure.cmake
-@@ -992,35 +992,19 @@ SET(SIGNAL_WITH_VIO_CLOSE 1)
- 
- MARK_AS_ADVANCED(NO_ALARM)
- 
--
--IF(WITH_ATOMIC_OPS STREQUAL "up")
--  SET(MY_ATOMIC_MODE_DUMMY 1 CACHE BOOL "Assume single-CPU mode, no concurrency")
--ELSEIF(WITH_ATOMIC_OPS STREQUAL "smp")
--ELSEIF(NOT WITH_ATOMIC_OPS)
--  CHECK_CXX_SOURCE_COMPILES("
--  int main()
--  {
--    int foo= -10; int bar= 10;
--    long long int foo64= -10; long long int bar64= 10;
--    if (!__sync_fetch_and_add(&foo, bar) || foo)
--      return -1;
--    bar= __sync_lock_test_and_set(&foo, bar);
--    if (bar || foo != 10)
--      return -1;
--    bar= __sync_val_compare_and_swap(&bar, foo, 15);
--    if (bar)
--      return -1;
--    if (!__sync_fetch_and_add(&foo64, bar64) || foo64)
--      return -1;
--    bar64= __sync_lock_test_and_set(&foo64, bar64);
--    if (bar64 || foo64 != 10)
--      return -1;
--    bar64= __sync_val_compare_and_swap(&bar64, foo, 15);
--    if (bar64)
--      return -1;
--    return 0;
--  }"
--  HAVE_GCC_ATOMIC_BUILTINS)
-+CHECK_CXX_SOURCE_COMPILES("
-+int main()
-+{
-+  long long int var= 1;
-+  long long int *ptr= &var;
-+  return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
-+}"
-+HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
-+IF (HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
-+  SET(HAVE_GCC_C11_ATOMICS True)
-+ELSE()
-+  SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-+  LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
-   CHECK_CXX_SOURCE_COMPILES("
-   int main()
-   {
-@@ -1028,14 +1012,13 @@ ELSEIF(NOT WITH_ATOMIC_OPS)
-     long long int *ptr= &var;
-     return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
-   }"
--  HAVE_GCC_C11_ATOMICS)
--ELSE()
--  MESSAGE(FATAL_ERROR "${WITH_ATOMIC_OPS} is not a valid value for WITH_ATOMIC_OPS!")
-+  HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+    SET(HAVE_GCC_C11_ATOMICS True)
-+  ENDIF()
-+  SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES})
- ENDIF()
- 
--SET(WITH_ATOMIC_OPS "${WITH_ATOMIC_OPS}" CACHE STRING "Implement atomic operations using atomic CPU instructions for multi-processor (smp) or uniprocessor (up) configuration. By default gcc built-in sync functions are used, if available and 'smp' configuration otherwise.")
--MARK_AS_ADVANCED(WITH_ATOMIC_OPS MY_ATOMIC_MODE_DUMMY)
--
- IF(WITH_VALGRIND)
-   SET(HAVE_valgrind 1)
- ENDIF()
---- mysys/CMakeLists.txt
-+++ mysys/CMakeLists.txt
-@@ -74,6 +74,10 @@ TARGET_LINK_LIBRARIES(mysys dbug strings mysys_ssl ${ZLIB_LIBRARY}
-  ${LIBNSL} ${LIBM} ${LIBRT} ${LIBDL} ${LIBSOCKET} ${LIBEXECINFO})
- DTRACE_INSTRUMENT(mysys)
- 
-+IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  TARGET_LINK_LIBRARIES(mysys atomic)
-+ENDIF()
-+
- IF(HAVE_BFD_H)
-   TARGET_LINK_LIBRARIES(mysys bfd)  
- ENDIF(HAVE_BFD_H)
---- sql/CMakeLists.txt
-+++ sql/CMakeLists.txt
-@@ -172,6 +172,9 @@ ELSE()
-   SET(MYSQLD_SOURCE main.cc ${DTRACE_PROBES_ALL})
- ENDIF()
- 
-+IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  TARGET_LINK_LIBRARIES(sql atomic)
-+ENDIF()
- 
- IF(MSVC AND NOT WITHOUT_DYNAMIC_PLUGINS)
- 
diff --git a/srcpkgs/mariadb/patches/mips-connect-unaligned.patch b/srcpkgs/mariadb/patches/mips-connect-unaligned.patch
new file mode 100644
index 00000000000..ae2f6e03d2e
--- /dev/null
+++ b/srcpkgs/mariadb/patches/mips-connect-unaligned.patch
@@ -0,0 +1,257 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:28 +0200
+Subject: mips-connect-unaligned
+
+---
+ storage/connect/valblk.cpp | 41 ++++++++++++++++++-------------------
+ storage/connect/valblk.h   | 51 +++++++++++++++++++++++++++++-----------------
+ 2 files changed, 52 insertions(+), 40 deletions(-)
+
+--- storage/connect/valblk.cpp
++++ storage/connect/valblk.cpp
+@@ -268,14 +268,14 @@ bool TYPBLK<TYPE>::Init(PGLOBAL g, bool
+ template <class TYPE>
+ char *TYPBLK<TYPE>::GetCharString(char *p, int n)
+   {
+-  sprintf(p, Fmt, Typp[n]);
++  sprintf(p, Fmt, UnalignedRead(n));
+   return p;
+   } // end of GetCharString
+ 
+ template <>
+ char *TYPBLK<double>::GetCharString(char *p, int n)
+   {
+-  sprintf(p, Fmt, Prec, Typp[n]);
++  sprintf(p, Fmt, Prec, UnalignedRead(n));
+   return p;
+   } // end of GetCharString
+ 
+@@ -291,7 +291,7 @@ void TYPBLK<TYPE>::SetValue(PVAL valp, i
+   ChkTyp(valp);
+ 
+   if (!(b = valp->IsNull()))
+-    Typp[n] = GetTypedValue(valp);
++    UnalignedWrite(n, GetTypedValue(valp));
+   else
+     Reset(n);
+ 
+@@ -353,9 +353,9 @@ void TYPBLK<TYPE>::SetValue(PCSZ p, int
+   ulonglong val = CharToNumber(p, strlen(p), maxval, Unsigned, &minus); 
+     
+   if (minus && val < maxval)
+-    Typp[n] = (TYPE)(-(signed)val);
++    UnalignedWrite(n, (TYPE)(-(signed)val));
+   else
+-    Typp[n] = (TYPE)val;
++    UnalignedWrite(n, (TYPE)val);
+ 
+   SetNull(n, false);
+   } // end of SetValue
+@@ -398,7 +398,7 @@ void TYPBLK<double>::SetValue(PCSZ p, in
+ 		throw Type;
+ 	} // endif Check
+ 
+-  Typp[n] = atof(p);
++  UnalignedWrite(n, atof(p));
+   SetNull(n, false);
+   } // end of SetValue
+ 
+@@ -430,7 +430,7 @@ void TYPBLK<TYPE>::SetValue(PVBLK pv, in
+   ChkTyp(pv);
+ 
+   if (!(b = pv->IsNull(n2) && Nullable))
+-    Typp[n1] = GetTypedValue(pv, n2);
++    UnalignedWrite(n1, GetTypedValue(pv, n2));
+   else
+     Reset(n1);
+ 
+@@ -481,10 +481,10 @@ void TYPBLK<TYPE>::SetMin(PVAL valp, int
+   {
+   CheckParms(valp, n)
+   TYPE  tval = GetTypedValue(valp);
+-  TYPE& tmin = Typp[n];
++  TYPE  tmin = UnalignedRead(n);
+ 
+   if (tval < tmin)
+-    tmin = tval;
++    UnalignedWrite(n, tval);
+ 
+   } // end of SetMin
+ 
+@@ -496,10 +496,10 @@ void TYPBLK<TYPE>::SetMax(PVAL valp, int
+   {
+   CheckParms(valp, n)
+   TYPE  tval = GetTypedValue(valp);
+-  TYPE& tmin = Typp[n];
++  TYPE  tmin = UnalignedRead(n);
+ 
+   if (tval > tmin)
+-    tmin = tval;
++    UnalignedWrite(n, tval);
+ 
+   } // end of SetMax
+ 
+@@ -513,8 +513,7 @@ void TYPBLK<TYPE>::SetValues(PVBLK pv, i
+   CheckType(pv)
+   TYPE *lp = ((TYPBLK*)pv)->Typp;
+ 
+-  for (int i = k; i < n; i++)          // TODO
+-    Typp[i] = lp[i];
++  memcpy(Typp + k, lp + k, sizeof(TYPE) * n);
+ 
+   } // end of SetValues
+ #endif // 0
+@@ -525,7 +524,7 @@ void TYPBLK<TYPE>::SetValues(PVBLK pv, i
+ template <class TYPE>
+ void TYPBLK<TYPE>::Move(int i, int j)
+   {
+-  Typp[j] = Typp[i];
++  UnalignedWrite(j, UnalignedRead(i));
+   MoveNull(i, j);
+   } // end of Move
+ 
+@@ -539,7 +538,7 @@ int TYPBLK<TYPE>::CompVal(PVAL vp, int n
+   ChkIndx(n);
+   ChkTyp(vp);
+ #endif   // _DEBUG
+-  TYPE mlv = Typp[n];
++  TYPE mlv = UnalignedRead(n);
+   TYPE vlv = GetTypedValue(vp);
+ 
+   return (vlv > mlv) ? 1 : (vlv < mlv) ? (-1) : 0;
+@@ -551,8 +550,8 @@ int TYPBLK<TYPE>::CompVal(PVAL vp, int n
+ template <class TYPE>
+ int TYPBLK<TYPE>::CompVal(int i1, int i2)
+   {
+-  TYPE lv1 = Typp[i1];
+-  TYPE lv2 = Typp[i2];
++  TYPE lv1 = UnalignedRead(i1);
++  TYPE lv2 = UnalignedRead(i2);
+ 
+   return (lv1 > lv2) ? 1 : (lv1 < lv2) ? (-1) : 0;
+   } // end of CompVal
+@@ -589,7 +588,7 @@ int TYPBLK<TYPE>::Find(PVAL vp)
+   TYPE n = GetTypedValue(vp);
+ 
+   for (i = 0; i < Nval; i++)
+-    if (n == Typp[i])
++    if (n == UnalignedRead(i))
+       break;
+ 
+   return (i < Nval) ? i : (-1);
+@@ -605,7 +604,7 @@ int TYPBLK<TYPE>::GetMaxLength(void)
+   int i, n, m;
+ 
+   for (i = n = 0; i < Nval; i++) {
+-    m = sprintf(buf, Fmt, Typp[i]);
++    m = sprintf(buf, Fmt, UnalignedRead(i));
+     n = MY_MAX(n, m);
+     } // endfor i
+ 
+@@ -1335,7 +1334,7 @@ char *DATBLK::GetCharString(char *p, int
+   char *vp;
+ 
+   if (Dvalp) {
+-    Dvalp->SetValue(Typp[n]);
++    Dvalp->SetValue(UnalignedRead(n));
+     vp = Dvalp->GetCharString(p);
+   } else
+     vp = TYPBLK<int>::GetCharString(p, n);
+@@ -1351,7 +1350,7 @@ void DATBLK::SetValue(PCSZ p, int n)
+   if (Dvalp) {
+     // Decode the string according to format
+     Dvalp->SetValue_psz(p);
+-    Typp[n] = Dvalp->GetIntValue();
++    UnalignedWrite(n, Dvalp->GetIntValue());
+   } else
+     TYPBLK<int>::SetValue(p, n);
+ 
+--- storage/connect/valblk.h
++++ storage/connect/valblk.h
+@@ -139,6 +139,7 @@ class VALBLK : public BLOCK {
+   int     Prec;             // Precision of float values
+   }; // end of class VALBLK
+ 
++
+ /***********************************************************************/
+ /*  Class TYPBLK: represents a block of typed values.                  */
+ /***********************************************************************/
+@@ -151,40 +152,41 @@ class TYPBLK : public VALBLK {
+   // Implementation
+   virtual bool   Init(PGLOBAL g, bool check);
+   virtual int    GetVlen(void) {return sizeof(TYPE);}
+-  virtual char   GetTinyValue(int n) {return (char)Typp[n];}
+-  virtual uchar  GetUTinyValue(int n) {return (uchar)Typp[n];}
+-  virtual short  GetShortValue(int n) {return (short)Typp[n];}
+-  virtual ushort GetUShortValue(int n) {return (ushort)Typp[n];}
+-  virtual int    GetIntValue(int n) {return (int)Typp[n];}
+-  virtual uint   GetUIntValue(int n) {return (uint)Typp[n];}
+-  virtual longlong GetBigintValue(int n) {return (longlong)Typp[n];}
+-  virtual ulonglong GetUBigintValue(int n) {return (ulonglong)Typp[n];}
+-  virtual double GetFloatValue(int n) {return (double)Typp[n];}
++
++  virtual char   GetTinyValue(int n) {return (char)UnalignedRead(n);}
++  virtual uchar  GetUTinyValue(int n) {return (uchar)UnalignedRead(n);}
++  virtual short  GetShortValue(int n) {return (short)UnalignedRead(n);}
++  virtual ushort GetUShortValue(int n) {return (ushort)UnalignedRead(n);}
++  virtual int    GetIntValue(int n) {return (int)UnalignedRead(n);}
++  virtual uint   GetUIntValue(int n) {return (uint)UnalignedRead(n);}
++  virtual longlong GetBigintValue(int n) {return (longlong)UnalignedRead(n);}
++  virtual ulonglong GetUBigintValue(int n) {return (ulonglong)UnalignedRead(n);}
++  virtual double GetFloatValue(int n) {return (double)UnalignedRead(n);}
+   virtual char  *GetCharString(char *p, int n);
+-  virtual void   Reset(int n) {Typp[n] = 0;}
++  virtual void   Reset(int n) {UnalignedWrite(n, 0);}
+ 
+   // Methods
+   using VALBLK::SetValue;
+   virtual void   SetValue(PCSZ sp, int n);
+   virtual void   SetValue(const char *sp, uint len, int n);
+   virtual void   SetValue(short sval, int n)
+-                  {Typp[n] = (TYPE)sval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)sval); SetNull(n, false);}
+   virtual void   SetValue(ushort sval, int n)
+-                  {Typp[n] = (TYPE)sval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)sval); SetNull(n, false);}
+   virtual void   SetValue(int lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(uint lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(longlong lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(ulonglong lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(double fval, int n)
+-                  {Typp[n] = (TYPE)fval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)fval); SetNull(n, false);}
+   virtual void   SetValue(char cval, int n)
+-                  {Typp[n] = (TYPE)cval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)cval); SetNull(n, false);}
+   virtual void   SetValue(uchar cval, int n)
+-                  {Typp[n] = (TYPE)cval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)cval); SetNull(n, false);}
+   virtual void   SetValue(PVAL valp, int n);
+   virtual void   SetValue(PVBLK pv, int n1, int n2);
+   virtual void   SetMin(PVAL valp, int n);
+@@ -206,6 +208,17 @@ class TYPBLK : public VALBLK {
+   // Members
+   TYPE* const &Typp;
+   const char  *Fmt;
++
++  // Unaligned access
++  TYPE UnalignedRead(int n) const {
++    TYPE result;
++    memcpy(&result, Typp + n, sizeof(TYPE));
++    return result;
++  }
++
++  void UnalignedWrite(int n, TYPE value) {
++    memcpy(Typp + n, &value, sizeof(TYPE));
++  }
+   }; // end of class TYPBLK
+ 
+ /***********************************************************************/
diff --git a/srcpkgs/mariadb/patches/mips-groonga-atomic.patch b/srcpkgs/mariadb/patches/mips-groonga-atomic.patch
new file mode 100644
index 00000000000..9c99cc1b026
--- /dev/null
+++ b/srcpkgs/mariadb/patches/mips-groonga-atomic.patch
@@ -0,0 +1,34 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:28 +0200
+Subject: mips-groonga-atomic
+
+---
+ storage/mroonga/vendor/groonga/CMakeLists.txt     | 2 ++
+ storage/mroonga/vendor/groonga/lib/CMakeLists.txt | 1 +
+ 2 files changed, 3 insertions(+)
+
+diff --git storage/mroonga/vendor/groonga/CMakeLists.txt storage/mroonga/vendor/groonga/CMakeLists.txt
+index e27070f..7f1899c 100644
+--- storage/mroonga/vendor/groonga/CMakeLists.txt
++++ storage/mroonga/vendor/groonga/CMakeLists.txt
+@@ -238,6 +238,8 @@ endmacro()
+ include(build/ac_macros/check_headers.m4)
+ include(build/ac_macros/check_functions.m4)
+ 
++ac_check_lib(atomic __atomic_store_8)
++
+ ac_check_symbols(fpclassify math.h)
+ ac_check_lib(m fpclassify)
+ 
+diff --git storage/mroonga/vendor/groonga/lib/CMakeLists.txt storage/mroonga/vendor/groonga/lib/CMakeLists.txt
+index 6765261..6c13737 100644
+--- storage/mroonga/vendor/groonga/lib/CMakeLists.txt
++++ storage/mroonga/vendor/groonga/lib/CMakeLists.txt
+@@ -90,6 +90,7 @@ endif()
+ set_target_properties(libgroonga PROPERTIES OUTPUT_NAME "groonga")
+ 
+ set(GRN_ALL_LIBRARIES
++    ${ATOMIC_LIBS}
+     ${EXECINFO_LIBS}
+     ${RT_LIBS}
+     ${PTHREAD_LIBS}
diff --git a/srcpkgs/mariadb/patches/mips-innobase-atomic.patch b/srcpkgs/mariadb/patches/mips-innobase-atomic.patch
new file mode 100644
index 00000000000..195fe41a422
--- /dev/null
+++ b/srcpkgs/mariadb/patches/mips-innobase-atomic.patch
@@ -0,0 +1,20 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:29 +0200
+Subject: mips-innobase-atomic
+
+---
+ storage/innobase/include/os0sync.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git storage/innobase/include/os0sync.h storage/innobase/include/os0sync.h
+index bb225c5..6520237 100644
+--- storage/innobase/include/os0sync.h
++++ storage/innobase/include/os0sync.h
+@@ -37,6 +37,7 @@ Created 9/6/1995 Heikki Tuuri
+ 
+ #include "univ.i"
+ #include "ut0lst.h"
++#include "sync0types.h"
+ 
+ /** CPU cache line size */
+ #ifdef __powerpc__
diff --git a/srcpkgs/mariadb/patches/mips-machine.patch b/srcpkgs/mariadb/patches/mips-machine.patch
new file mode 100644
index 00000000000..3dbbbaaa538
--- /dev/null
+++ b/srcpkgs/mariadb/patches/mips-machine.patch
@@ -0,0 +1,23 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:29 +0200
+Subject: mips-machine
+
+---
+ cmake/package_name.cmake | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git cmake/package_name.cmake cmake/package_name.cmake
+index 4930a6b..7681f78 100644
+--- cmake/package_name.cmake
++++ cmake/package_name.cmake
+@@ -34,6 +34,10 @@ IF(NOT VERSION)
+       SET(DEFAULT_MACHINE "mips")
+     ENDIF()
+ 
++    IF(NOT 64BIT AND CMAKE_SYSTEM_PROCESSOR MATCHES "^mips64")
++      SET(DEFAULT_MACHINE "mips")
++    ENDIF()
++
+     IF(CMAKE_SYSTEM_NAME MATCHES "Windows")
+       SET(NEED_DASH_BETWEEN_PLATFORM_AND_MACHINE 0)
+       SET(DEFAULT_PLATFORM "win")
diff --git a/srcpkgs/mariadb/patches/musl-ppc.patch b/srcpkgs/mariadb/patches/musl-ppc.patch
index 16cbac71a94..57c7f4bf15b 100644
--- a/srcpkgs/mariadb/patches/musl-ppc.patch
+++ b/srcpkgs/mariadb/patches/musl-ppc.patch
@@ -15,12 +15,11 @@ builtin for this in gcc for ages, so just use that instead.
  # endif
 --- storage/xtradb/include/ut0ut.h
 +++ storage/xtradb/include/ut0ut.h
-@@ -86,8 +86,7 @@ struct ut_when_dtor {
-    independent way by using YieldProcessor. */
- #  define UT_RELAX_CPU() YieldProcessor()
- # elif defined(__powerpc__)
--#include <sys/platform/ppc.h>
--#  define UT_RELAX_CPU() __ppc_get_timebase()
+@@ -86,6 +86,8 @@
+ # elif defined(__powerpc__) && defined __GLIBC__
+ #include <sys/platform/ppc.h>
+ #  define UT_RELAX_CPU() __ppc_get_timebase()
++# elif defined(__powerpc__)
 +#  define UT_RELAX_CPU() __builtin_ppc_get_timebase()
  # else
  #  define UT_RELAX_CPU() ((void)0) /* avoid warning for an empty statement */
diff --git a/srcpkgs/mariadb/template b/srcpkgs/mariadb/template
index 88611438a99..8ba4c5e8642 100644
--- a/srcpkgs/mariadb/template
+++ b/srcpkgs/mariadb/template
@@ -1,7 +1,7 @@
 # Template file for 'mariadb'
 pkgname=mariadb
-version=10.1.30
-revision=8
+version=10.1.45
+revision=1
 build_style=cmake
 configure_args="-DMYSQL_DATADIR=/var/lib/mysql
  -DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock -DDEFAULT_CHARSET=utf8
@@ -27,7 +27,7 @@ maintainer="Orphaned <orphan@voidlinux.org>"
 license="GPL-2.0-only"
 homepage="https://mariadb.org/"
 distfiles="http://archive.mariadb.org/$pkgname-$version/source/$pkgname-$version.tar.gz"
-checksum=173a5e5a24819e0a469c3bd09b5c98491676c37c6095882a2ea34c5af0996c88
+checksum=9d8f0f71f9613b2028ffc5c5be8b98948ec955eb0d89600d18ed7cc04807dad5
 lib32disabled=yes
 provides="mysql-${version}_${revision}"
 replaces="mysql>=0"
@@ -36,6 +36,10 @@ system_accounts="mysql"
 mysql_homedir="/var/lib/mysql"
 CFLAGS="-w"
 
+if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then
+	makedepends+=" libatomic-devel"
+fi
+
 pre_configure() {
 	# We need some host binaries before starting cross compilation.
 	if [ "$CROSS_BUILD" ]; then

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: mariadb: update to 10.1.45.
  2020-05-27  6:23 [PR PATCH] mariadb: update to 10.1.45 rmccask
                   ` (5 preceding siblings ...)
  2020-05-27 18:17 ` rmccask
@ 2020-05-27 18:23 ` rmccask
  2020-05-27 22:45 ` [PR PATCH] [Updated] " rmccask
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: rmccask @ 2020-05-27 18:23 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 428 bytes --]

New comment by rmccask on void-packages repository

https://github.com/void-linux/void-packages/pull/22348#issuecomment-634853704

Comment:
This can wait until [#22218](https://github.com/void-linux/void-packages/pull/22218) is merged/settled.  I have added [ci skip] but the problem with Travis isn't downloading the tar ball.  The problem is that the build time is around the maximum limit for Travis and some builds timeout.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PR PATCH] [Updated] mariadb: update to 10.1.45.
  2020-05-27  6:23 [PR PATCH] mariadb: update to 10.1.45 rmccask
                   ` (6 preceding siblings ...)
  2020-05-27 18:23 ` rmccask
@ 2020-05-27 22:45 ` rmccask
  2020-05-27 23:58 ` rmccask
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: rmccask @ 2020-05-27 22:45 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 325 bytes --]

There is an updated pull request by rmccask against master on the void-packages repository

https://github.com/rmccask/void-packages mariadb-10.1.45
https://github.com/void-linux/void-packages/pull/22348

mariadb: update to 10.1.45.


A patch file from https://github.com/void-linux/void-packages/pull/22348.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-mariadb-10.1.45-22348.patch --]
[-- Type: text/x-diff, Size: 35710 bytes --]

From 119b6f8dbb08834f792193101cb4511ee37ed8f8 Mon Sep 17 00:00:00 2001
From: Randy McCaskill <randy@mccaskill.us>
Date: Wed, 27 May 2020 02:22:24 -0400
Subject: [PATCH] mariadb: update to 10.1.45.

[ci skip]
---
 srcpkgs/mariadb/patches/c11_atomics.patch     | 128 ++++++++
 .../mariadb/patches/fix-pthread-detach.patch  |  34 --
 .../mariadb/patches/force-c11-atomics.patch   | 294 ------------------
 srcpkgs/mariadb/patches/libatomic.patch       | 103 ------
 .../patches/mips-connect-unaligned.patch      | 257 +++++++++++++++
 .../patches/mips-innobase-atomic.patch        |  20 ++
 srcpkgs/mariadb/patches/mips-machine.patch    |  23 ++
 srcpkgs/mariadb/patches/musl-ppc.patch        |  11 +-
 srcpkgs/mariadb/template                      |  10 +-
 9 files changed, 440 insertions(+), 440 deletions(-)
 create mode 100644 srcpkgs/mariadb/patches/c11_atomics.patch
 delete mode 100644 srcpkgs/mariadb/patches/fix-pthread-detach.patch
 delete mode 100644 srcpkgs/mariadb/patches/force-c11-atomics.patch
 delete mode 100644 srcpkgs/mariadb/patches/libatomic.patch
 create mode 100644 srcpkgs/mariadb/patches/mips-connect-unaligned.patch
 create mode 100644 srcpkgs/mariadb/patches/mips-innobase-atomic.patch
 create mode 100644 srcpkgs/mariadb/patches/mips-machine.patch

diff --git a/srcpkgs/mariadb/patches/c11_atomics.patch b/srcpkgs/mariadb/patches/c11_atomics.patch
new file mode 100644
index 00000000000..da84c12a0e1
--- /dev/null
+++ b/srcpkgs/mariadb/patches/c11_atomics.patch
@@ -0,0 +1,128 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:29 +0200
+Subject: c11_atomics
+
+---
+ configure.cmake               | 23 +++++++++++++++++++++--
+ include/atomic/gcc_builtins.h | 15 +++++++++++++++
+ include/atomic/nolock.h       |  4 ++--
+ mysys/CMakeLists.txt          |  4 ++++
+ sql/CMakeLists.txt            |  4 ++++
+ 5 files changed, 46 insertions(+), 4 deletions(-)
+
+--- configure.cmake
++++ configure.cmake
+@@ -128,7 +128,7 @@ IF(UNIX)
+   ENDIF()
+   FIND_PACKAGE(Threads)
+ 
+-  SET(CMAKE_REQUIRED_LIBRARIES 
++  LIST(APPEND CMAKE_REQUIRED_LIBRARIES
+     ${LIBM} ${LIBNSL} ${LIBBIND} ${LIBCRYPT} ${LIBSOCKET} ${LIBDL} ${CMAKE_THREAD_LIBS_INIT} ${LIBRT} ${LIBEXECINFO})
+   # Need explicit pthread for gcc -fsanitize=address
+   IF(CMAKE_USE_PTHREADS_INIT AND CMAKE_C_FLAGS MATCHES "-fsanitize=")
+@@ -1038,7 +1038,26 @@ ELSEIF(NOT WITH_ATOMIC_OPS)
+     long long int *ptr= &var;
+     return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
+   }"
+-  HAVE_GCC_C11_ATOMICS)
++  HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
++  IF(HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
++    SET(HAVE_GCC_C11_ATOMICS True)
++  ELSE()
++    SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
++    LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
++    CHECK_CXX_SOURCE_COMPILES("
++    int main()
++    {
++      long long int var= 1;
++      long long int *ptr= &var;
++      return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
++    }"
++    HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++    IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++      SET(HAVE_GCC_C11_ATOMICS True)
++    ELSE()
++      SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES})
++    ENDIF()
++  ENDIF()
+ ELSE()
+   MESSAGE(FATAL_ERROR "${WITH_ATOMIC_OPS} is not a valid value for WITH_ATOMIC_OPS!")
+ ENDIF()
+--- include/atomic/gcc_builtins.h
++++ include/atomic/gcc_builtins.h
+@@ -16,6 +16,7 @@
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335  USA */
+ 
++#if defined (HAVE_GCC_ATOMIC_BUILTINS)
+ #define make_atomic_add_body(S)                     \
+   v= __sync_fetch_and_add(a, v);
+ #define make_atomic_fas_body(S)                     \
+@@ -26,6 +27,20 @@
+   sav= __sync_val_compare_and_swap(a, cmp_val, set);\
+   if (!(ret= (sav == cmp_val))) *cmp= sav
+ 
++#elif defined(HAVE_GCC_C11_ATOMICS)
++
++#define make_atomic_add_body(S)                     \
++  v= __atomic_fetch_add(a, v, __ATOMIC_SEQ_CST)
++#define make_atomic_fas_body(S)                     \
++  v= __atomic_exchange_n(a, v, __ATOMIC_SEQ_CST)
++#define make_atomic_cas_body(S)                     \
++  int ## S sav;                                     \
++  ret= __atomic_compare_exchange_n(a, cmp, set,     \
++                                   0,               \
++                                   __ATOMIC_SEQ_CST,\
++                                   __ATOMIC_SEQ_CST);
++#endif
++
+ #ifdef MY_ATOMIC_MODE_DUMMY
+ #define make_atomic_load_body(S)   ret= *a
+ #define make_atomic_store_body(S)  *a= v
+--- include/atomic/nolock.h
++++ include/atomic/nolock.h
+@@ -17,7 +17,7 @@
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335  USA */
+ 
+ #if defined(__i386__) || defined(_MSC_VER) || defined(__x86_64__)   \
+-    || defined(HAVE_GCC_ATOMIC_BUILTINS) \
++    || defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_C11_ATOMICS) \
+     || defined(HAVE_SOLARIS_ATOMIC)
+ 
+ #  ifdef MY_ATOMIC_MODE_DUMMY
+@@ -41,7 +41,7 @@
+ #  elif __GNUC__
+ #    if defined(HAVE_SOLARIS_ATOMIC)
+ #      include "solaris.h"
+-#    elif defined(HAVE_GCC_ATOMIC_BUILTINS)
++#    elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_C11_ATOMICS)
+ #      include "gcc_builtins.h"
+ #    elif defined(__i386__) || defined(__x86_64__)
+ #      include "x86-gcc.h"
+--- mysys/CMakeLists.txt
++++ mysys/CMakeLists.txt
+@@ -79,6 +79,10 @@ IF(HAVE_BFD_H)
+   TARGET_LINK_LIBRARIES(mysys bfd)  
+ ENDIF(HAVE_BFD_H)
+ 
++IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++  TARGET_LINK_LIBRARIES(mysys atomic)
++ENDIF()
++
+ IF (WIN32)
+   TARGET_LINK_LIBRARIES(mysys IPHLPAPI)  
+ ENDIF(WIN32)
+--- sql/CMakeLists.txt
++++ sql/CMakeLists.txt
+@@ -165,6 +165,10 @@ TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATI
+   ${SSL_LIBRARIES}
+   ${LIBSYSTEMD})
+ 
++IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++  TARGET_LINK_LIBRARIES(sql atomic)
++ENDIF()
++
+ IF(WIN32)
+   SET(MYSQLD_SOURCE main.cc nt_servc.cc message.rc)
+   TARGET_LINK_LIBRARIES(sql psapi)
diff --git a/srcpkgs/mariadb/patches/fix-pthread-detach.patch b/srcpkgs/mariadb/patches/fix-pthread-detach.patch
deleted file mode 100644
index a53c05b1320..00000000000
--- a/srcpkgs/mariadb/patches/fix-pthread-detach.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From c45b4a774b6d1404a080a1c1759f780fa78f223b Mon Sep 17 00:00:00 2001
-From: Sergey Vojtovich <svoj@mariadb.org>
-Date: Fri, 21 Sep 2018 16:04:16 +0400
-Subject: [PATCH] MDEV-17200 - pthread_detach called for already detached
- threads
-
-pthread_detach_this_thread() was intended to be defined to something
-meaningful only on some ancient unixes, which don't have
-pthread_attr_setdetachstate() defined. Otherwise, on normal unixes,
-threads are created detached in the first place.
-
-This was broken in 0f01bf267680244ec488adaf65a42838756ed48e so that
-we started calling pthread_detach() for already detached threads.
-Intention was to detach aria checkpoint thread.
-
-However in 87007dc2f71634cc460271eb277ad851ec69c04b aria service threads
-were made joinable with appropriate handling, which makes breaking
-revision unneccessary.
-
-Revert remnants of 0f01bf267680244ec488adaf65a42838756ed48e, so that
-pthread_detach_this_thread() is meaningful only on some ancient unixes
-again.
-
---- include/my_pthread.h
-+++ include/my_pthread.h
-@@ -184,7 +184,7 @@ int pthread_cancel(pthread_t thread);
- #define pthread_key(T,V) pthread_key_t V
- #define my_pthread_getspecific_ptr(T,V) my_pthread_getspecific(T,(V))
- #define my_pthread_setspecific_ptr(T,V) pthread_setspecific(T,(void*) (V))
--#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(tmp); }
-+#define pthread_detach_this_thread()
- #define pthread_handler_t EXTERNC void *
- typedef void *(* pthread_handler)(void *);
- 
diff --git a/srcpkgs/mariadb/patches/force-c11-atomics.patch b/srcpkgs/mariadb/patches/force-c11-atomics.patch
deleted file mode 100644
index 9546798bf97..00000000000
--- a/srcpkgs/mariadb/patches/force-c11-atomics.patch
+++ /dev/null
@@ -1,294 +0,0 @@
---- include/my_atomic.h
-+++ include/my_atomic.h
-@@ -104,217 +104,6 @@
-   but can be added, if necessary.
- */
- 
--#define intptr         void *
--/**
--  Currently we don't support 8-bit and 16-bit operations.
--  It can be added later if needed.
--*/
--#undef MY_ATOMIC_HAS_8_16
--
--/*
-- * Attempt to do atomic ops without locks
-- */
--#include "atomic/nolock.h"
--
--#ifndef make_atomic_cas_body
--/* nolock.h was not able to generate even a CAS function, fall back */
--#error atomic ops for this platform are not implemented
--#endif
--
--/* define missing functions by using the already generated ones */
--#ifndef make_atomic_add_body
--#define make_atomic_add_body(S)                                 \
--  int ## S tmp=*a;                                              \
--  while (!my_atomic_cas ## S(a, &tmp, tmp+v)) ;                 \
--  v=tmp;
--#endif
--#ifndef make_atomic_fas_body
--#define make_atomic_fas_body(S)                                 \
--  int ## S tmp=*a;                                              \
--  while (!my_atomic_cas ## S(a, &tmp, v)) ;                     \
--  v=tmp;
--#endif
--#ifndef make_atomic_load_body
--#define make_atomic_load_body(S)                                \
--  ret= 0; /* avoid compiler warning */                          \
--  (void)(my_atomic_cas ## S(a, &ret, ret));
--#endif
--#ifndef make_atomic_store_body
--#define make_atomic_store_body(S)                               \
--  (void)(my_atomic_fas ## S (a, v));
--#endif
--
--/*
--  transparent_union doesn't work in g++
--  Bug ?
--
--  Darwin's gcc doesn't want to put pointers in a transparent_union
--  when built with -arch ppc64. Complains:
--  warning: 'transparent_union' attribute ignored
--*/
--#if defined(__GNUC__) && !defined(__cplusplus) && \
--      ! (defined(__APPLE__) && (defined(_ARCH_PPC64) ||defined (_ARCH_PPC)))
--/*
--  we want to be able to use my_atomic_xxx functions with
--  both signed and unsigned integers. But gcc will issue a warning
--  "passing arg N of `my_atomic_XXX' as [un]signed due to prototype"
--  if the signedness of the argument doesn't match the prototype, or
--  "pointer targets in passing argument N of my_atomic_XXX differ in signedness"
--  if int* is used where uint* is expected (or vice versa).
--  Let's shut these warnings up
--*/
--#define make_transparent_unions(S)                              \
--        typedef union {                                         \
--          int  ## S  i;                                         \
--          uint ## S  u;                                         \
--        } U_ ## S   __attribute__ ((transparent_union));        \
--        typedef union {                                         \
--          int  ## S volatile *i;                                \
--          uint ## S volatile *u;                                \
--        } Uv_ ## S   __attribute__ ((transparent_union));
--#define uintptr intptr
--make_transparent_unions(8)
--make_transparent_unions(16)
--make_transparent_unions(32)
--make_transparent_unions(64)
--make_transparent_unions(ptr)
--#undef uintptr
--#undef make_transparent_unions
--#define a       U_a.i
--#define cmp     U_cmp.i
--#define v       U_v.i
--#define set     U_set.i
--#else
--#define U_8    int8
--#define U_16   int16
--#define U_32   int32
--#define U_64   int64
--#define U_ptr  intptr
--#define Uv_8   int8
--#define Uv_16  int16
--#define Uv_32  int32
--#define Uv_64  int64
--#define Uv_ptr intptr
--#define U_a    volatile *a
--#define U_cmp  *cmp
--#define U_v    v
--#define U_set  set
--#endif /* __GCC__ transparent_union magic */
--
--#define make_atomic_cas(S)                                      \
--static inline int my_atomic_cas ## S(Uv_ ## S U_a,              \
--                            Uv_ ## S U_cmp, U_ ## S U_set)      \
--{                                                               \
--  int8 ret;                                                     \
--  make_atomic_cas_body(S);                                      \
--  return ret;                                                   \
--}
--
--#define make_atomic_add(S)                                      \
--static inline int ## S my_atomic_add ## S(                      \
--                        Uv_ ## S U_a, U_ ## S U_v)              \
--{                                                               \
--  make_atomic_add_body(S);                                      \
--  return v;                                                     \
--}
--
--#define make_atomic_fas(S)                                      \
--static inline int ## S my_atomic_fas ## S(                      \
--                         Uv_ ## S U_a, U_ ## S U_v)             \
--{                                                               \
--  make_atomic_fas_body(S);                                      \
--  return v;                                                     \
--}
--
--#define make_atomic_load(S)                                     \
--static inline int ## S my_atomic_load ## S(Uv_ ## S U_a)        \
--{                                                               \
--  int ## S ret;                                                 \
--  make_atomic_load_body(S);                                     \
--  return ret;                                                   \
--}
--
--#define make_atomic_store(S)                                    \
--static inline void my_atomic_store ## S(                        \
--                     Uv_ ## S U_a, U_ ## S U_v)                 \
--{                                                               \
--  make_atomic_store_body(S);                                    \
--}
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_cas(8)
--make_atomic_cas(16)
--#endif
--make_atomic_cas(32)
--make_atomic_cas(64)
--make_atomic_cas(ptr)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_add(8)
--make_atomic_add(16)
--#endif
--make_atomic_add(32)
--make_atomic_add(64)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_load(8)
--make_atomic_load(16)
--#endif
--make_atomic_load(32)
--make_atomic_load(64)
--make_atomic_load(ptr)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_fas(8)
--make_atomic_fas(16)
--#endif
--make_atomic_fas(32)
--make_atomic_fas(64)
--make_atomic_fas(ptr)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_store(8)
--make_atomic_store(16)
--#endif
--make_atomic_store(32)
--make_atomic_store(64)
--make_atomic_store(ptr)
--
--#ifdef _atomic_h_cleanup_
--#include _atomic_h_cleanup_
--#undef _atomic_h_cleanup_
--#endif
--
--#undef U_8
--#undef U_16
--#undef U_32
--#undef U_64
--#undef U_ptr
--#undef Uv_8
--#undef Uv_16
--#undef Uv_32
--#undef Uv_64
--#undef Uv_ptr
--#undef a
--#undef cmp
--#undef v
--#undef set
--#undef U_a
--#undef U_cmp
--#undef U_v
--#undef U_set
--#undef make_atomic_add
--#undef make_atomic_cas
--#undef make_atomic_load
--#undef make_atomic_store
--#undef make_atomic_fas
--#undef make_atomic_add_body
--#undef make_atomic_cas_body
--#undef make_atomic_load_body
--#undef make_atomic_store_body
--#undef make_atomic_fas_body
--#undef intptr
--
- /*
-   the macro below defines (as an expression) the code that
-   will be run in spin-loops. Intel manuals recummend to have PAUSE there.
-@@ -328,7 +117,8 @@ make_atomic_store(ptr)
- #define MY_ATOMIC_NOT_1CPU 1
- extern int my_atomic_initialize();
- 
--#ifdef __ATOMIC_SEQ_CST
-+#define MY_ATOMIC_MODE "gcc-atomics-smp"
-+
- #define MY_MEMORY_ORDER_RELAXED __ATOMIC_RELAXED
- #define MY_MEMORY_ORDER_CONSUME __ATOMIC_CONSUME
- #define MY_MEMORY_ORDER_ACQUIRE __ATOMIC_ACQUIRE
-@@ -364,43 +154,27 @@ extern int my_atomic_initialize();
-   __atomic_compare_exchange_n((P), (E), (D), false, (S), (F))
- #define my_atomic_casptr_strong_explicit(P, E, D, S, F) \
-   __atomic_compare_exchange_n((P), (E), (D), false, (S), (F))
--#else
--#define MY_MEMORY_ORDER_RELAXED
--#define MY_MEMORY_ORDER_CONSUME
--#define MY_MEMORY_ORDER_ACQUIRE
--#define MY_MEMORY_ORDER_RELEASE
--#define MY_MEMORY_ORDER_ACQ_REL
--#define MY_MEMORY_ORDER_SEQ_CST
--
--#define my_atomic_store32_explicit(P, D, O) my_atomic_store32((P), (D))
--#define my_atomic_store64_explicit(P, D, O) my_atomic_store64((P), (D))
--#define my_atomic_storeptr_explicit(P, D, O) my_atomic_storeptr((P), (D))
--
--#define my_atomic_load32_explicit(P, O) my_atomic_load32((P))
--#define my_atomic_load64_explicit(P, O) my_atomic_load64((P))
--#define my_atomic_loadptr_explicit(P, O) my_atomic_loadptr((P))
--
--#define my_atomic_fas32_explicit(P, D, O) my_atomic_fas32((P), (D))
--#define my_atomic_fas64_explicit(P, D, O) my_atomic_fas64((P), (D))
--#define my_atomic_fasptr_explicit(P, D, O) my_atomic_fasptr((P), (D))
--
--#define my_atomic_add32_explicit(P, A, O) my_atomic_add32((P), (A))
--#define my_atomic_add64_explicit(P, A, O) my_atomic_add64((P), (A))
--#define my_atomic_addptr_explicit(P, A, O) my_atomic_addptr((P), (A))
- 
--#define my_atomic_cas32_weak_explicit(P, E, D, S, F) \
--  my_atomic_cas32((P), (E), (D))
--#define my_atomic_cas64_weak_explicit(P, E, D, S, F) \
--  my_atomic_cas64((P), (E), (D))
--#define my_atomic_casptr_weak_explicit(P, E, D, S, F) \
--  my_atomic_casptr((P), (E), (D))
-+#define my_atomic_store32(P, D) __atomic_store_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_store64(P, D) __atomic_store_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_storeptr(P, D) __atomic_store_n((P), (D), __ATOMIC_SEQ_CST)
- 
--#define my_atomic_cas32_strong_explicit(P, E, D, S, F) \
--  my_atomic_cas32((P), (E), (D))
--#define my_atomic_cas64_strong_explicit(P, E, D, S, F) \
--  my_atomic_cas64((P), (E), (D))
--#define my_atomic_casptr_strong_explicit(P, E, D, S, F) \
--  my_atomic_casptr((P), (E), (D))
--#endif
-+#define my_atomic_load32(P) __atomic_load_n((P), __ATOMIC_SEQ_CST)
-+#define my_atomic_load64(P) __atomic_load_n((P), __ATOMIC_SEQ_CST)
-+#define my_atomic_loadptr(P) __atomic_load_n((P), __ATOMIC_SEQ_CST)
-+
-+#define my_atomic_fas32(P, D) __atomic_exchange_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_fas64(P, D) __atomic_exchange_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_fasptr(P, D) __atomic_exchange_n((P), (D), __ATOMIC_SEQ_CST)
-+
-+#define my_atomic_add32(P, A) __atomic_fetch_add((P), (A), __ATOMIC_SEQ_CST)
-+#define my_atomic_add64(P, A) __atomic_fetch_add((P), (A), __ATOMIC_SEQ_CST)
-+
-+#define my_atomic_cas32(P, E, D) \
-+  __atomic_compare_exchange_n((P), (E), (D), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
-+#define my_atomic_cas64(P, E, D) \
-+  __atomic_compare_exchange_n((P), (E), (D), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
-+#define my_atomic_casptr(P, E, D) \
-+  __atomic_compare_exchange_n((P), (E), (D), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
- 
- #endif /* MY_ATOMIC_INCLUDED */
diff --git a/srcpkgs/mariadb/patches/libatomic.patch b/srcpkgs/mariadb/patches/libatomic.patch
deleted file mode 100644
index 0e8e872d9c2..00000000000
--- a/srcpkgs/mariadb/patches/libatomic.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-Source: Debian, q66
-
-This ensures arches that need libatomic properly get it where necessary.
-It also removes the sync builtin checks that are not necessary when
-using C11 atomics (like we always are because we're on a modern gcc)
-that break build on e.g. ppc32 and mips.
-
---- configure.cmake
-+++ configure.cmake
-@@ -992,35 +992,19 @@ SET(SIGNAL_WITH_VIO_CLOSE 1)
- 
- MARK_AS_ADVANCED(NO_ALARM)
- 
--
--IF(WITH_ATOMIC_OPS STREQUAL "up")
--  SET(MY_ATOMIC_MODE_DUMMY 1 CACHE BOOL "Assume single-CPU mode, no concurrency")
--ELSEIF(WITH_ATOMIC_OPS STREQUAL "smp")
--ELSEIF(NOT WITH_ATOMIC_OPS)
--  CHECK_CXX_SOURCE_COMPILES("
--  int main()
--  {
--    int foo= -10; int bar= 10;
--    long long int foo64= -10; long long int bar64= 10;
--    if (!__sync_fetch_and_add(&foo, bar) || foo)
--      return -1;
--    bar= __sync_lock_test_and_set(&foo, bar);
--    if (bar || foo != 10)
--      return -1;
--    bar= __sync_val_compare_and_swap(&bar, foo, 15);
--    if (bar)
--      return -1;
--    if (!__sync_fetch_and_add(&foo64, bar64) || foo64)
--      return -1;
--    bar64= __sync_lock_test_and_set(&foo64, bar64);
--    if (bar64 || foo64 != 10)
--      return -1;
--    bar64= __sync_val_compare_and_swap(&bar64, foo, 15);
--    if (bar64)
--      return -1;
--    return 0;
--  }"
--  HAVE_GCC_ATOMIC_BUILTINS)
-+CHECK_CXX_SOURCE_COMPILES("
-+int main()
-+{
-+  long long int var= 1;
-+  long long int *ptr= &var;
-+  return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
-+}"
-+HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
-+IF (HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
-+  SET(HAVE_GCC_C11_ATOMICS True)
-+ELSE()
-+  SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-+  LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
-   CHECK_CXX_SOURCE_COMPILES("
-   int main()
-   {
-@@ -1028,14 +1012,13 @@ ELSEIF(NOT WITH_ATOMIC_OPS)
-     long long int *ptr= &var;
-     return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
-   }"
--  HAVE_GCC_C11_ATOMICS)
--ELSE()
--  MESSAGE(FATAL_ERROR "${WITH_ATOMIC_OPS} is not a valid value for WITH_ATOMIC_OPS!")
-+  HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+    SET(HAVE_GCC_C11_ATOMICS True)
-+  ENDIF()
-+  SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES})
- ENDIF()
- 
--SET(WITH_ATOMIC_OPS "${WITH_ATOMIC_OPS}" CACHE STRING "Implement atomic operations using atomic CPU instructions for multi-processor (smp) or uniprocessor (up) configuration. By default gcc built-in sync functions are used, if available and 'smp' configuration otherwise.")
--MARK_AS_ADVANCED(WITH_ATOMIC_OPS MY_ATOMIC_MODE_DUMMY)
--
- IF(WITH_VALGRIND)
-   SET(HAVE_valgrind 1)
- ENDIF()
---- mysys/CMakeLists.txt
-+++ mysys/CMakeLists.txt
-@@ -74,6 +74,10 @@ TARGET_LINK_LIBRARIES(mysys dbug strings mysys_ssl ${ZLIB_LIBRARY}
-  ${LIBNSL} ${LIBM} ${LIBRT} ${LIBDL} ${LIBSOCKET} ${LIBEXECINFO})
- DTRACE_INSTRUMENT(mysys)
- 
-+IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  TARGET_LINK_LIBRARIES(mysys atomic)
-+ENDIF()
-+
- IF(HAVE_BFD_H)
-   TARGET_LINK_LIBRARIES(mysys bfd)  
- ENDIF(HAVE_BFD_H)
---- sql/CMakeLists.txt
-+++ sql/CMakeLists.txt
-@@ -172,6 +172,9 @@ ELSE()
-   SET(MYSQLD_SOURCE main.cc ${DTRACE_PROBES_ALL})
- ENDIF()
- 
-+IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  TARGET_LINK_LIBRARIES(sql atomic)
-+ENDIF()
- 
- IF(MSVC AND NOT WITHOUT_DYNAMIC_PLUGINS)
- 
diff --git a/srcpkgs/mariadb/patches/mips-connect-unaligned.patch b/srcpkgs/mariadb/patches/mips-connect-unaligned.patch
new file mode 100644
index 00000000000..ae2f6e03d2e
--- /dev/null
+++ b/srcpkgs/mariadb/patches/mips-connect-unaligned.patch
@@ -0,0 +1,257 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:28 +0200
+Subject: mips-connect-unaligned
+
+---
+ storage/connect/valblk.cpp | 41 ++++++++++++++++++-------------------
+ storage/connect/valblk.h   | 51 +++++++++++++++++++++++++++++-----------------
+ 2 files changed, 52 insertions(+), 40 deletions(-)
+
+--- storage/connect/valblk.cpp
++++ storage/connect/valblk.cpp
+@@ -268,14 +268,14 @@ bool TYPBLK<TYPE>::Init(PGLOBAL g, bool
+ template <class TYPE>
+ char *TYPBLK<TYPE>::GetCharString(char *p, int n)
+   {
+-  sprintf(p, Fmt, Typp[n]);
++  sprintf(p, Fmt, UnalignedRead(n));
+   return p;
+   } // end of GetCharString
+ 
+ template <>
+ char *TYPBLK<double>::GetCharString(char *p, int n)
+   {
+-  sprintf(p, Fmt, Prec, Typp[n]);
++  sprintf(p, Fmt, Prec, UnalignedRead(n));
+   return p;
+   } // end of GetCharString
+ 
+@@ -291,7 +291,7 @@ void TYPBLK<TYPE>::SetValue(PVAL valp, i
+   ChkTyp(valp);
+ 
+   if (!(b = valp->IsNull()))
+-    Typp[n] = GetTypedValue(valp);
++    UnalignedWrite(n, GetTypedValue(valp));
+   else
+     Reset(n);
+ 
+@@ -353,9 +353,9 @@ void TYPBLK<TYPE>::SetValue(PCSZ p, int
+   ulonglong val = CharToNumber(p, strlen(p), maxval, Unsigned, &minus); 
+     
+   if (minus && val < maxval)
+-    Typp[n] = (TYPE)(-(signed)val);
++    UnalignedWrite(n, (TYPE)(-(signed)val));
+   else
+-    Typp[n] = (TYPE)val;
++    UnalignedWrite(n, (TYPE)val);
+ 
+   SetNull(n, false);
+   } // end of SetValue
+@@ -398,7 +398,7 @@ void TYPBLK<double>::SetValue(PCSZ p, in
+ 		throw Type;
+ 	} // endif Check
+ 
+-  Typp[n] = atof(p);
++  UnalignedWrite(n, atof(p));
+   SetNull(n, false);
+   } // end of SetValue
+ 
+@@ -430,7 +430,7 @@ void TYPBLK<TYPE>::SetValue(PVBLK pv, in
+   ChkTyp(pv);
+ 
+   if (!(b = pv->IsNull(n2) && Nullable))
+-    Typp[n1] = GetTypedValue(pv, n2);
++    UnalignedWrite(n1, GetTypedValue(pv, n2));
+   else
+     Reset(n1);
+ 
+@@ -481,10 +481,10 @@ void TYPBLK<TYPE>::SetMin(PVAL valp, int
+   {
+   CheckParms(valp, n)
+   TYPE  tval = GetTypedValue(valp);
+-  TYPE& tmin = Typp[n];
++  TYPE  tmin = UnalignedRead(n);
+ 
+   if (tval < tmin)
+-    tmin = tval;
++    UnalignedWrite(n, tval);
+ 
+   } // end of SetMin
+ 
+@@ -496,10 +496,10 @@ void TYPBLK<TYPE>::SetMax(PVAL valp, int
+   {
+   CheckParms(valp, n)
+   TYPE  tval = GetTypedValue(valp);
+-  TYPE& tmin = Typp[n];
++  TYPE  tmin = UnalignedRead(n);
+ 
+   if (tval > tmin)
+-    tmin = tval;
++    UnalignedWrite(n, tval);
+ 
+   } // end of SetMax
+ 
+@@ -513,8 +513,7 @@ void TYPBLK<TYPE>::SetValues(PVBLK pv, i
+   CheckType(pv)
+   TYPE *lp = ((TYPBLK*)pv)->Typp;
+ 
+-  for (int i = k; i < n; i++)          // TODO
+-    Typp[i] = lp[i];
++  memcpy(Typp + k, lp + k, sizeof(TYPE) * n);
+ 
+   } // end of SetValues
+ #endif // 0
+@@ -525,7 +524,7 @@ void TYPBLK<TYPE>::SetValues(PVBLK pv, i
+ template <class TYPE>
+ void TYPBLK<TYPE>::Move(int i, int j)
+   {
+-  Typp[j] = Typp[i];
++  UnalignedWrite(j, UnalignedRead(i));
+   MoveNull(i, j);
+   } // end of Move
+ 
+@@ -539,7 +538,7 @@ int TYPBLK<TYPE>::CompVal(PVAL vp, int n
+   ChkIndx(n);
+   ChkTyp(vp);
+ #endif   // _DEBUG
+-  TYPE mlv = Typp[n];
++  TYPE mlv = UnalignedRead(n);
+   TYPE vlv = GetTypedValue(vp);
+ 
+   return (vlv > mlv) ? 1 : (vlv < mlv) ? (-1) : 0;
+@@ -551,8 +550,8 @@ int TYPBLK<TYPE>::CompVal(PVAL vp, int n
+ template <class TYPE>
+ int TYPBLK<TYPE>::CompVal(int i1, int i2)
+   {
+-  TYPE lv1 = Typp[i1];
+-  TYPE lv2 = Typp[i2];
++  TYPE lv1 = UnalignedRead(i1);
++  TYPE lv2 = UnalignedRead(i2);
+ 
+   return (lv1 > lv2) ? 1 : (lv1 < lv2) ? (-1) : 0;
+   } // end of CompVal
+@@ -589,7 +588,7 @@ int TYPBLK<TYPE>::Find(PVAL vp)
+   TYPE n = GetTypedValue(vp);
+ 
+   for (i = 0; i < Nval; i++)
+-    if (n == Typp[i])
++    if (n == UnalignedRead(i))
+       break;
+ 
+   return (i < Nval) ? i : (-1);
+@@ -605,7 +604,7 @@ int TYPBLK<TYPE>::GetMaxLength(void)
+   int i, n, m;
+ 
+   for (i = n = 0; i < Nval; i++) {
+-    m = sprintf(buf, Fmt, Typp[i]);
++    m = sprintf(buf, Fmt, UnalignedRead(i));
+     n = MY_MAX(n, m);
+     } // endfor i
+ 
+@@ -1335,7 +1334,7 @@ char *DATBLK::GetCharString(char *p, int
+   char *vp;
+ 
+   if (Dvalp) {
+-    Dvalp->SetValue(Typp[n]);
++    Dvalp->SetValue(UnalignedRead(n));
+     vp = Dvalp->GetCharString(p);
+   } else
+     vp = TYPBLK<int>::GetCharString(p, n);
+@@ -1351,7 +1350,7 @@ void DATBLK::SetValue(PCSZ p, int n)
+   if (Dvalp) {
+     // Decode the string according to format
+     Dvalp->SetValue_psz(p);
+-    Typp[n] = Dvalp->GetIntValue();
++    UnalignedWrite(n, Dvalp->GetIntValue());
+   } else
+     TYPBLK<int>::SetValue(p, n);
+ 
+--- storage/connect/valblk.h
++++ storage/connect/valblk.h
+@@ -139,6 +139,7 @@ class VALBLK : public BLOCK {
+   int     Prec;             // Precision of float values
+   }; // end of class VALBLK
+ 
++
+ /***********************************************************************/
+ /*  Class TYPBLK: represents a block of typed values.                  */
+ /***********************************************************************/
+@@ -151,40 +152,41 @@ class TYPBLK : public VALBLK {
+   // Implementation
+   virtual bool   Init(PGLOBAL g, bool check);
+   virtual int    GetVlen(void) {return sizeof(TYPE);}
+-  virtual char   GetTinyValue(int n) {return (char)Typp[n];}
+-  virtual uchar  GetUTinyValue(int n) {return (uchar)Typp[n];}
+-  virtual short  GetShortValue(int n) {return (short)Typp[n];}
+-  virtual ushort GetUShortValue(int n) {return (ushort)Typp[n];}
+-  virtual int    GetIntValue(int n) {return (int)Typp[n];}
+-  virtual uint   GetUIntValue(int n) {return (uint)Typp[n];}
+-  virtual longlong GetBigintValue(int n) {return (longlong)Typp[n];}
+-  virtual ulonglong GetUBigintValue(int n) {return (ulonglong)Typp[n];}
+-  virtual double GetFloatValue(int n) {return (double)Typp[n];}
++
++  virtual char   GetTinyValue(int n) {return (char)UnalignedRead(n);}
++  virtual uchar  GetUTinyValue(int n) {return (uchar)UnalignedRead(n);}
++  virtual short  GetShortValue(int n) {return (short)UnalignedRead(n);}
++  virtual ushort GetUShortValue(int n) {return (ushort)UnalignedRead(n);}
++  virtual int    GetIntValue(int n) {return (int)UnalignedRead(n);}
++  virtual uint   GetUIntValue(int n) {return (uint)UnalignedRead(n);}
++  virtual longlong GetBigintValue(int n) {return (longlong)UnalignedRead(n);}
++  virtual ulonglong GetUBigintValue(int n) {return (ulonglong)UnalignedRead(n);}
++  virtual double GetFloatValue(int n) {return (double)UnalignedRead(n);}
+   virtual char  *GetCharString(char *p, int n);
+-  virtual void   Reset(int n) {Typp[n] = 0;}
++  virtual void   Reset(int n) {UnalignedWrite(n, 0);}
+ 
+   // Methods
+   using VALBLK::SetValue;
+   virtual void   SetValue(PCSZ sp, int n);
+   virtual void   SetValue(const char *sp, uint len, int n);
+   virtual void   SetValue(short sval, int n)
+-                  {Typp[n] = (TYPE)sval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)sval); SetNull(n, false);}
+   virtual void   SetValue(ushort sval, int n)
+-                  {Typp[n] = (TYPE)sval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)sval); SetNull(n, false);}
+   virtual void   SetValue(int lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(uint lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(longlong lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(ulonglong lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(double fval, int n)
+-                  {Typp[n] = (TYPE)fval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)fval); SetNull(n, false);}
+   virtual void   SetValue(char cval, int n)
+-                  {Typp[n] = (TYPE)cval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)cval); SetNull(n, false);}
+   virtual void   SetValue(uchar cval, int n)
+-                  {Typp[n] = (TYPE)cval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)cval); SetNull(n, false);}
+   virtual void   SetValue(PVAL valp, int n);
+   virtual void   SetValue(PVBLK pv, int n1, int n2);
+   virtual void   SetMin(PVAL valp, int n);
+@@ -206,6 +208,17 @@ class TYPBLK : public VALBLK {
+   // Members
+   TYPE* const &Typp;
+   const char  *Fmt;
++
++  // Unaligned access
++  TYPE UnalignedRead(int n) const {
++    TYPE result;
++    memcpy(&result, Typp + n, sizeof(TYPE));
++    return result;
++  }
++
++  void UnalignedWrite(int n, TYPE value) {
++    memcpy(Typp + n, &value, sizeof(TYPE));
++  }
+   }; // end of class TYPBLK
+ 
+ /***********************************************************************/
diff --git a/srcpkgs/mariadb/patches/mips-innobase-atomic.patch b/srcpkgs/mariadb/patches/mips-innobase-atomic.patch
new file mode 100644
index 00000000000..195fe41a422
--- /dev/null
+++ b/srcpkgs/mariadb/patches/mips-innobase-atomic.patch
@@ -0,0 +1,20 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:29 +0200
+Subject: mips-innobase-atomic
+
+---
+ storage/innobase/include/os0sync.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git storage/innobase/include/os0sync.h storage/innobase/include/os0sync.h
+index bb225c5..6520237 100644
+--- storage/innobase/include/os0sync.h
++++ storage/innobase/include/os0sync.h
+@@ -37,6 +37,7 @@ Created 9/6/1995 Heikki Tuuri
+ 
+ #include "univ.i"
+ #include "ut0lst.h"
++#include "sync0types.h"
+ 
+ /** CPU cache line size */
+ #ifdef __powerpc__
diff --git a/srcpkgs/mariadb/patches/mips-machine.patch b/srcpkgs/mariadb/patches/mips-machine.patch
new file mode 100644
index 00000000000..3dbbbaaa538
--- /dev/null
+++ b/srcpkgs/mariadb/patches/mips-machine.patch
@@ -0,0 +1,23 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:29 +0200
+Subject: mips-machine
+
+---
+ cmake/package_name.cmake | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git cmake/package_name.cmake cmake/package_name.cmake
+index 4930a6b..7681f78 100644
+--- cmake/package_name.cmake
++++ cmake/package_name.cmake
+@@ -34,6 +34,10 @@ IF(NOT VERSION)
+       SET(DEFAULT_MACHINE "mips")
+     ENDIF()
+ 
++    IF(NOT 64BIT AND CMAKE_SYSTEM_PROCESSOR MATCHES "^mips64")
++      SET(DEFAULT_MACHINE "mips")
++    ENDIF()
++
+     IF(CMAKE_SYSTEM_NAME MATCHES "Windows")
+       SET(NEED_DASH_BETWEEN_PLATFORM_AND_MACHINE 0)
+       SET(DEFAULT_PLATFORM "win")
diff --git a/srcpkgs/mariadb/patches/musl-ppc.patch b/srcpkgs/mariadb/patches/musl-ppc.patch
index 16cbac71a94..57c7f4bf15b 100644
--- a/srcpkgs/mariadb/patches/musl-ppc.patch
+++ b/srcpkgs/mariadb/patches/musl-ppc.patch
@@ -15,12 +15,11 @@ builtin for this in gcc for ages, so just use that instead.
  # endif
 --- storage/xtradb/include/ut0ut.h
 +++ storage/xtradb/include/ut0ut.h
-@@ -86,8 +86,7 @@ struct ut_when_dtor {
-    independent way by using YieldProcessor. */
- #  define UT_RELAX_CPU() YieldProcessor()
- # elif defined(__powerpc__)
--#include <sys/platform/ppc.h>
--#  define UT_RELAX_CPU() __ppc_get_timebase()
+@@ -86,6 +86,8 @@
+ # elif defined(__powerpc__) && defined __GLIBC__
+ #include <sys/platform/ppc.h>
+ #  define UT_RELAX_CPU() __ppc_get_timebase()
++# elif defined(__powerpc__)
 +#  define UT_RELAX_CPU() __builtin_ppc_get_timebase()
  # else
  #  define UT_RELAX_CPU() ((void)0) /* avoid warning for an empty statement */
diff --git a/srcpkgs/mariadb/template b/srcpkgs/mariadb/template
index 88611438a99..8ba4c5e8642 100644
--- a/srcpkgs/mariadb/template
+++ b/srcpkgs/mariadb/template
@@ -1,7 +1,7 @@
 # Template file for 'mariadb'
 pkgname=mariadb
-version=10.1.30
-revision=8
+version=10.1.45
+revision=1
 build_style=cmake
 configure_args="-DMYSQL_DATADIR=/var/lib/mysql
  -DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock -DDEFAULT_CHARSET=utf8
@@ -27,7 +27,7 @@ maintainer="Orphaned <orphan@voidlinux.org>"
 license="GPL-2.0-only"
 homepage="https://mariadb.org/"
 distfiles="http://archive.mariadb.org/$pkgname-$version/source/$pkgname-$version.tar.gz"
-checksum=173a5e5a24819e0a469c3bd09b5c98491676c37c6095882a2ea34c5af0996c88
+checksum=9d8f0f71f9613b2028ffc5c5be8b98948ec955eb0d89600d18ed7cc04807dad5
 lib32disabled=yes
 provides="mysql-${version}_${revision}"
 replaces="mysql>=0"
@@ -36,6 +36,10 @@ system_accounts="mysql"
 mysql_homedir="/var/lib/mysql"
 CFLAGS="-w"
 
+if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then
+	makedepends+=" libatomic-devel"
+fi
+
 pre_configure() {
 	# We need some host binaries before starting cross compilation.
 	if [ "$CROSS_BUILD" ]; then

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PR PATCH] [Updated] mariadb: update to 10.1.45.
  2020-05-27  6:23 [PR PATCH] mariadb: update to 10.1.45 rmccask
                   ` (7 preceding siblings ...)
  2020-05-27 22:45 ` [PR PATCH] [Updated] " rmccask
@ 2020-05-27 23:58 ` rmccask
  2020-05-28  3:19 ` rmccask
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: rmccask @ 2020-05-27 23:58 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 325 bytes --]

There is an updated pull request by rmccask against master on the void-packages repository

https://github.com/rmccask/void-packages mariadb-10.1.45
https://github.com/void-linux/void-packages/pull/22348

mariadb: update to 10.1.45.


A patch file from https://github.com/void-linux/void-packages/pull/22348.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-mariadb-10.1.45-22348.patch --]
[-- Type: text/x-diff, Size: 35425 bytes --]

From fba749d93f38d85f919c55a78e72b378ece1dad1 Mon Sep 17 00:00:00 2001
From: Randy McCaskill <randy@mccaskill.us>
Date: Wed, 27 May 2020 02:22:24 -0400
Subject: [PATCH] mariadb: update to 10.1.45.

[ci skip]
---
 srcpkgs/mariadb/patches/c11_atomics.patch     | 128 ++++++++
 .../mariadb/patches/fix-pthread-detach.patch  |  34 --
 .../mariadb/patches/force-c11-atomics.patch   | 294 ------------------
 srcpkgs/mariadb/patches/libatomic.patch       | 103 ------
 .../patches/mips-connect-unaligned.patch      | 257 +++++++++++++++
 .../patches/mips-innobase-atomic.patch        |  20 ++
 srcpkgs/mariadb/patches/mips-machine.patch    |  23 ++
 srcpkgs/mariadb/patches/musl-ppc.patch        |  11 +-
 srcpkgs/mariadb/template                      |   6 +-
 9 files changed, 436 insertions(+), 440 deletions(-)
 create mode 100644 srcpkgs/mariadb/patches/c11_atomics.patch
 delete mode 100644 srcpkgs/mariadb/patches/fix-pthread-detach.patch
 delete mode 100644 srcpkgs/mariadb/patches/force-c11-atomics.patch
 delete mode 100644 srcpkgs/mariadb/patches/libatomic.patch
 create mode 100644 srcpkgs/mariadb/patches/mips-connect-unaligned.patch
 create mode 100644 srcpkgs/mariadb/patches/mips-innobase-atomic.patch
 create mode 100644 srcpkgs/mariadb/patches/mips-machine.patch

diff --git a/srcpkgs/mariadb/patches/c11_atomics.patch b/srcpkgs/mariadb/patches/c11_atomics.patch
new file mode 100644
index 00000000000..da84c12a0e1
--- /dev/null
+++ b/srcpkgs/mariadb/patches/c11_atomics.patch
@@ -0,0 +1,128 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:29 +0200
+Subject: c11_atomics
+
+---
+ configure.cmake               | 23 +++++++++++++++++++++--
+ include/atomic/gcc_builtins.h | 15 +++++++++++++++
+ include/atomic/nolock.h       |  4 ++--
+ mysys/CMakeLists.txt          |  4 ++++
+ sql/CMakeLists.txt            |  4 ++++
+ 5 files changed, 46 insertions(+), 4 deletions(-)
+
+--- configure.cmake
++++ configure.cmake
+@@ -128,7 +128,7 @@ IF(UNIX)
+   ENDIF()
+   FIND_PACKAGE(Threads)
+ 
+-  SET(CMAKE_REQUIRED_LIBRARIES 
++  LIST(APPEND CMAKE_REQUIRED_LIBRARIES
+     ${LIBM} ${LIBNSL} ${LIBBIND} ${LIBCRYPT} ${LIBSOCKET} ${LIBDL} ${CMAKE_THREAD_LIBS_INIT} ${LIBRT} ${LIBEXECINFO})
+   # Need explicit pthread for gcc -fsanitize=address
+   IF(CMAKE_USE_PTHREADS_INIT AND CMAKE_C_FLAGS MATCHES "-fsanitize=")
+@@ -1038,7 +1038,26 @@ ELSEIF(NOT WITH_ATOMIC_OPS)
+     long long int *ptr= &var;
+     return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
+   }"
+-  HAVE_GCC_C11_ATOMICS)
++  HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
++  IF(HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
++    SET(HAVE_GCC_C11_ATOMICS True)
++  ELSE()
++    SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
++    LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
++    CHECK_CXX_SOURCE_COMPILES("
++    int main()
++    {
++      long long int var= 1;
++      long long int *ptr= &var;
++      return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
++    }"
++    HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++    IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++      SET(HAVE_GCC_C11_ATOMICS True)
++    ELSE()
++      SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES})
++    ENDIF()
++  ENDIF()
+ ELSE()
+   MESSAGE(FATAL_ERROR "${WITH_ATOMIC_OPS} is not a valid value for WITH_ATOMIC_OPS!")
+ ENDIF()
+--- include/atomic/gcc_builtins.h
++++ include/atomic/gcc_builtins.h
+@@ -16,6 +16,7 @@
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335  USA */
+ 
++#if defined (HAVE_GCC_ATOMIC_BUILTINS)
+ #define make_atomic_add_body(S)                     \
+   v= __sync_fetch_and_add(a, v);
+ #define make_atomic_fas_body(S)                     \
+@@ -26,6 +27,20 @@
+   sav= __sync_val_compare_and_swap(a, cmp_val, set);\
+   if (!(ret= (sav == cmp_val))) *cmp= sav
+ 
++#elif defined(HAVE_GCC_C11_ATOMICS)
++
++#define make_atomic_add_body(S)                     \
++  v= __atomic_fetch_add(a, v, __ATOMIC_SEQ_CST)
++#define make_atomic_fas_body(S)                     \
++  v= __atomic_exchange_n(a, v, __ATOMIC_SEQ_CST)
++#define make_atomic_cas_body(S)                     \
++  int ## S sav;                                     \
++  ret= __atomic_compare_exchange_n(a, cmp, set,     \
++                                   0,               \
++                                   __ATOMIC_SEQ_CST,\
++                                   __ATOMIC_SEQ_CST);
++#endif
++
+ #ifdef MY_ATOMIC_MODE_DUMMY
+ #define make_atomic_load_body(S)   ret= *a
+ #define make_atomic_store_body(S)  *a= v
+--- include/atomic/nolock.h
++++ include/atomic/nolock.h
+@@ -17,7 +17,7 @@
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335  USA */
+ 
+ #if defined(__i386__) || defined(_MSC_VER) || defined(__x86_64__)   \
+-    || defined(HAVE_GCC_ATOMIC_BUILTINS) \
++    || defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_C11_ATOMICS) \
+     || defined(HAVE_SOLARIS_ATOMIC)
+ 
+ #  ifdef MY_ATOMIC_MODE_DUMMY
+@@ -41,7 +41,7 @@
+ #  elif __GNUC__
+ #    if defined(HAVE_SOLARIS_ATOMIC)
+ #      include "solaris.h"
+-#    elif defined(HAVE_GCC_ATOMIC_BUILTINS)
++#    elif defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_GCC_C11_ATOMICS)
+ #      include "gcc_builtins.h"
+ #    elif defined(__i386__) || defined(__x86_64__)
+ #      include "x86-gcc.h"
+--- mysys/CMakeLists.txt
++++ mysys/CMakeLists.txt
+@@ -79,6 +79,10 @@ IF(HAVE_BFD_H)
+   TARGET_LINK_LIBRARIES(mysys bfd)  
+ ENDIF(HAVE_BFD_H)
+ 
++IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++  TARGET_LINK_LIBRARIES(mysys atomic)
++ENDIF()
++
+ IF (WIN32)
+   TARGET_LINK_LIBRARIES(mysys IPHLPAPI)  
+ ENDIF(WIN32)
+--- sql/CMakeLists.txt
++++ sql/CMakeLists.txt
+@@ -165,6 +165,10 @@ TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATI
+   ${SSL_LIBRARIES}
+   ${LIBSYSTEMD})
+ 
++IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++  TARGET_LINK_LIBRARIES(sql atomic)
++ENDIF()
++
+ IF(WIN32)
+   SET(MYSQLD_SOURCE main.cc nt_servc.cc message.rc)
+   TARGET_LINK_LIBRARIES(sql psapi)
diff --git a/srcpkgs/mariadb/patches/fix-pthread-detach.patch b/srcpkgs/mariadb/patches/fix-pthread-detach.patch
deleted file mode 100644
index a53c05b1320..00000000000
--- a/srcpkgs/mariadb/patches/fix-pthread-detach.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From c45b4a774b6d1404a080a1c1759f780fa78f223b Mon Sep 17 00:00:00 2001
-From: Sergey Vojtovich <svoj@mariadb.org>
-Date: Fri, 21 Sep 2018 16:04:16 +0400
-Subject: [PATCH] MDEV-17200 - pthread_detach called for already detached
- threads
-
-pthread_detach_this_thread() was intended to be defined to something
-meaningful only on some ancient unixes, which don't have
-pthread_attr_setdetachstate() defined. Otherwise, on normal unixes,
-threads are created detached in the first place.
-
-This was broken in 0f01bf267680244ec488adaf65a42838756ed48e so that
-we started calling pthread_detach() for already detached threads.
-Intention was to detach aria checkpoint thread.
-
-However in 87007dc2f71634cc460271eb277ad851ec69c04b aria service threads
-were made joinable with appropriate handling, which makes breaking
-revision unneccessary.
-
-Revert remnants of 0f01bf267680244ec488adaf65a42838756ed48e, so that
-pthread_detach_this_thread() is meaningful only on some ancient unixes
-again.
-
---- include/my_pthread.h
-+++ include/my_pthread.h
-@@ -184,7 +184,7 @@ int pthread_cancel(pthread_t thread);
- #define pthread_key(T,V) pthread_key_t V
- #define my_pthread_getspecific_ptr(T,V) my_pthread_getspecific(T,(V))
- #define my_pthread_setspecific_ptr(T,V) pthread_setspecific(T,(void*) (V))
--#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(tmp); }
-+#define pthread_detach_this_thread()
- #define pthread_handler_t EXTERNC void *
- typedef void *(* pthread_handler)(void *);
- 
diff --git a/srcpkgs/mariadb/patches/force-c11-atomics.patch b/srcpkgs/mariadb/patches/force-c11-atomics.patch
deleted file mode 100644
index 9546798bf97..00000000000
--- a/srcpkgs/mariadb/patches/force-c11-atomics.patch
+++ /dev/null
@@ -1,294 +0,0 @@
---- include/my_atomic.h
-+++ include/my_atomic.h
-@@ -104,217 +104,6 @@
-   but can be added, if necessary.
- */
- 
--#define intptr         void *
--/**
--  Currently we don't support 8-bit and 16-bit operations.
--  It can be added later if needed.
--*/
--#undef MY_ATOMIC_HAS_8_16
--
--/*
-- * Attempt to do atomic ops without locks
-- */
--#include "atomic/nolock.h"
--
--#ifndef make_atomic_cas_body
--/* nolock.h was not able to generate even a CAS function, fall back */
--#error atomic ops for this platform are not implemented
--#endif
--
--/* define missing functions by using the already generated ones */
--#ifndef make_atomic_add_body
--#define make_atomic_add_body(S)                                 \
--  int ## S tmp=*a;                                              \
--  while (!my_atomic_cas ## S(a, &tmp, tmp+v)) ;                 \
--  v=tmp;
--#endif
--#ifndef make_atomic_fas_body
--#define make_atomic_fas_body(S)                                 \
--  int ## S tmp=*a;                                              \
--  while (!my_atomic_cas ## S(a, &tmp, v)) ;                     \
--  v=tmp;
--#endif
--#ifndef make_atomic_load_body
--#define make_atomic_load_body(S)                                \
--  ret= 0; /* avoid compiler warning */                          \
--  (void)(my_atomic_cas ## S(a, &ret, ret));
--#endif
--#ifndef make_atomic_store_body
--#define make_atomic_store_body(S)                               \
--  (void)(my_atomic_fas ## S (a, v));
--#endif
--
--/*
--  transparent_union doesn't work in g++
--  Bug ?
--
--  Darwin's gcc doesn't want to put pointers in a transparent_union
--  when built with -arch ppc64. Complains:
--  warning: 'transparent_union' attribute ignored
--*/
--#if defined(__GNUC__) && !defined(__cplusplus) && \
--      ! (defined(__APPLE__) && (defined(_ARCH_PPC64) ||defined (_ARCH_PPC)))
--/*
--  we want to be able to use my_atomic_xxx functions with
--  both signed and unsigned integers. But gcc will issue a warning
--  "passing arg N of `my_atomic_XXX' as [un]signed due to prototype"
--  if the signedness of the argument doesn't match the prototype, or
--  "pointer targets in passing argument N of my_atomic_XXX differ in signedness"
--  if int* is used where uint* is expected (or vice versa).
--  Let's shut these warnings up
--*/
--#define make_transparent_unions(S)                              \
--        typedef union {                                         \
--          int  ## S  i;                                         \
--          uint ## S  u;                                         \
--        } U_ ## S   __attribute__ ((transparent_union));        \
--        typedef union {                                         \
--          int  ## S volatile *i;                                \
--          uint ## S volatile *u;                                \
--        } Uv_ ## S   __attribute__ ((transparent_union));
--#define uintptr intptr
--make_transparent_unions(8)
--make_transparent_unions(16)
--make_transparent_unions(32)
--make_transparent_unions(64)
--make_transparent_unions(ptr)
--#undef uintptr
--#undef make_transparent_unions
--#define a       U_a.i
--#define cmp     U_cmp.i
--#define v       U_v.i
--#define set     U_set.i
--#else
--#define U_8    int8
--#define U_16   int16
--#define U_32   int32
--#define U_64   int64
--#define U_ptr  intptr
--#define Uv_8   int8
--#define Uv_16  int16
--#define Uv_32  int32
--#define Uv_64  int64
--#define Uv_ptr intptr
--#define U_a    volatile *a
--#define U_cmp  *cmp
--#define U_v    v
--#define U_set  set
--#endif /* __GCC__ transparent_union magic */
--
--#define make_atomic_cas(S)                                      \
--static inline int my_atomic_cas ## S(Uv_ ## S U_a,              \
--                            Uv_ ## S U_cmp, U_ ## S U_set)      \
--{                                                               \
--  int8 ret;                                                     \
--  make_atomic_cas_body(S);                                      \
--  return ret;                                                   \
--}
--
--#define make_atomic_add(S)                                      \
--static inline int ## S my_atomic_add ## S(                      \
--                        Uv_ ## S U_a, U_ ## S U_v)              \
--{                                                               \
--  make_atomic_add_body(S);                                      \
--  return v;                                                     \
--}
--
--#define make_atomic_fas(S)                                      \
--static inline int ## S my_atomic_fas ## S(                      \
--                         Uv_ ## S U_a, U_ ## S U_v)             \
--{                                                               \
--  make_atomic_fas_body(S);                                      \
--  return v;                                                     \
--}
--
--#define make_atomic_load(S)                                     \
--static inline int ## S my_atomic_load ## S(Uv_ ## S U_a)        \
--{                                                               \
--  int ## S ret;                                                 \
--  make_atomic_load_body(S);                                     \
--  return ret;                                                   \
--}
--
--#define make_atomic_store(S)                                    \
--static inline void my_atomic_store ## S(                        \
--                     Uv_ ## S U_a, U_ ## S U_v)                 \
--{                                                               \
--  make_atomic_store_body(S);                                    \
--}
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_cas(8)
--make_atomic_cas(16)
--#endif
--make_atomic_cas(32)
--make_atomic_cas(64)
--make_atomic_cas(ptr)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_add(8)
--make_atomic_add(16)
--#endif
--make_atomic_add(32)
--make_atomic_add(64)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_load(8)
--make_atomic_load(16)
--#endif
--make_atomic_load(32)
--make_atomic_load(64)
--make_atomic_load(ptr)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_fas(8)
--make_atomic_fas(16)
--#endif
--make_atomic_fas(32)
--make_atomic_fas(64)
--make_atomic_fas(ptr)
--
--#ifdef MY_ATOMIC_HAS_8_16
--make_atomic_store(8)
--make_atomic_store(16)
--#endif
--make_atomic_store(32)
--make_atomic_store(64)
--make_atomic_store(ptr)
--
--#ifdef _atomic_h_cleanup_
--#include _atomic_h_cleanup_
--#undef _atomic_h_cleanup_
--#endif
--
--#undef U_8
--#undef U_16
--#undef U_32
--#undef U_64
--#undef U_ptr
--#undef Uv_8
--#undef Uv_16
--#undef Uv_32
--#undef Uv_64
--#undef Uv_ptr
--#undef a
--#undef cmp
--#undef v
--#undef set
--#undef U_a
--#undef U_cmp
--#undef U_v
--#undef U_set
--#undef make_atomic_add
--#undef make_atomic_cas
--#undef make_atomic_load
--#undef make_atomic_store
--#undef make_atomic_fas
--#undef make_atomic_add_body
--#undef make_atomic_cas_body
--#undef make_atomic_load_body
--#undef make_atomic_store_body
--#undef make_atomic_fas_body
--#undef intptr
--
- /*
-   the macro below defines (as an expression) the code that
-   will be run in spin-loops. Intel manuals recummend to have PAUSE there.
-@@ -328,7 +117,8 @@ make_atomic_store(ptr)
- #define MY_ATOMIC_NOT_1CPU 1
- extern int my_atomic_initialize();
- 
--#ifdef __ATOMIC_SEQ_CST
-+#define MY_ATOMIC_MODE "gcc-atomics-smp"
-+
- #define MY_MEMORY_ORDER_RELAXED __ATOMIC_RELAXED
- #define MY_MEMORY_ORDER_CONSUME __ATOMIC_CONSUME
- #define MY_MEMORY_ORDER_ACQUIRE __ATOMIC_ACQUIRE
-@@ -364,43 +154,27 @@ extern int my_atomic_initialize();
-   __atomic_compare_exchange_n((P), (E), (D), false, (S), (F))
- #define my_atomic_casptr_strong_explicit(P, E, D, S, F) \
-   __atomic_compare_exchange_n((P), (E), (D), false, (S), (F))
--#else
--#define MY_MEMORY_ORDER_RELAXED
--#define MY_MEMORY_ORDER_CONSUME
--#define MY_MEMORY_ORDER_ACQUIRE
--#define MY_MEMORY_ORDER_RELEASE
--#define MY_MEMORY_ORDER_ACQ_REL
--#define MY_MEMORY_ORDER_SEQ_CST
--
--#define my_atomic_store32_explicit(P, D, O) my_atomic_store32((P), (D))
--#define my_atomic_store64_explicit(P, D, O) my_atomic_store64((P), (D))
--#define my_atomic_storeptr_explicit(P, D, O) my_atomic_storeptr((P), (D))
--
--#define my_atomic_load32_explicit(P, O) my_atomic_load32((P))
--#define my_atomic_load64_explicit(P, O) my_atomic_load64((P))
--#define my_atomic_loadptr_explicit(P, O) my_atomic_loadptr((P))
--
--#define my_atomic_fas32_explicit(P, D, O) my_atomic_fas32((P), (D))
--#define my_atomic_fas64_explicit(P, D, O) my_atomic_fas64((P), (D))
--#define my_atomic_fasptr_explicit(P, D, O) my_atomic_fasptr((P), (D))
--
--#define my_atomic_add32_explicit(P, A, O) my_atomic_add32((P), (A))
--#define my_atomic_add64_explicit(P, A, O) my_atomic_add64((P), (A))
--#define my_atomic_addptr_explicit(P, A, O) my_atomic_addptr((P), (A))
- 
--#define my_atomic_cas32_weak_explicit(P, E, D, S, F) \
--  my_atomic_cas32((P), (E), (D))
--#define my_atomic_cas64_weak_explicit(P, E, D, S, F) \
--  my_atomic_cas64((P), (E), (D))
--#define my_atomic_casptr_weak_explicit(P, E, D, S, F) \
--  my_atomic_casptr((P), (E), (D))
-+#define my_atomic_store32(P, D) __atomic_store_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_store64(P, D) __atomic_store_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_storeptr(P, D) __atomic_store_n((P), (D), __ATOMIC_SEQ_CST)
- 
--#define my_atomic_cas32_strong_explicit(P, E, D, S, F) \
--  my_atomic_cas32((P), (E), (D))
--#define my_atomic_cas64_strong_explicit(P, E, D, S, F) \
--  my_atomic_cas64((P), (E), (D))
--#define my_atomic_casptr_strong_explicit(P, E, D, S, F) \
--  my_atomic_casptr((P), (E), (D))
--#endif
-+#define my_atomic_load32(P) __atomic_load_n((P), __ATOMIC_SEQ_CST)
-+#define my_atomic_load64(P) __atomic_load_n((P), __ATOMIC_SEQ_CST)
-+#define my_atomic_loadptr(P) __atomic_load_n((P), __ATOMIC_SEQ_CST)
-+
-+#define my_atomic_fas32(P, D) __atomic_exchange_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_fas64(P, D) __atomic_exchange_n((P), (D), __ATOMIC_SEQ_CST)
-+#define my_atomic_fasptr(P, D) __atomic_exchange_n((P), (D), __ATOMIC_SEQ_CST)
-+
-+#define my_atomic_add32(P, A) __atomic_fetch_add((P), (A), __ATOMIC_SEQ_CST)
-+#define my_atomic_add64(P, A) __atomic_fetch_add((P), (A), __ATOMIC_SEQ_CST)
-+
-+#define my_atomic_cas32(P, E, D) \
-+  __atomic_compare_exchange_n((P), (E), (D), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
-+#define my_atomic_cas64(P, E, D) \
-+  __atomic_compare_exchange_n((P), (E), (D), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
-+#define my_atomic_casptr(P, E, D) \
-+  __atomic_compare_exchange_n((P), (E), (D), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
- 
- #endif /* MY_ATOMIC_INCLUDED */
diff --git a/srcpkgs/mariadb/patches/libatomic.patch b/srcpkgs/mariadb/patches/libatomic.patch
deleted file mode 100644
index 0e8e872d9c2..00000000000
--- a/srcpkgs/mariadb/patches/libatomic.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-Source: Debian, q66
-
-This ensures arches that need libatomic properly get it where necessary.
-It also removes the sync builtin checks that are not necessary when
-using C11 atomics (like we always are because we're on a modern gcc)
-that break build on e.g. ppc32 and mips.
-
---- configure.cmake
-+++ configure.cmake
-@@ -992,35 +992,19 @@ SET(SIGNAL_WITH_VIO_CLOSE 1)
- 
- MARK_AS_ADVANCED(NO_ALARM)
- 
--
--IF(WITH_ATOMIC_OPS STREQUAL "up")
--  SET(MY_ATOMIC_MODE_DUMMY 1 CACHE BOOL "Assume single-CPU mode, no concurrency")
--ELSEIF(WITH_ATOMIC_OPS STREQUAL "smp")
--ELSEIF(NOT WITH_ATOMIC_OPS)
--  CHECK_CXX_SOURCE_COMPILES("
--  int main()
--  {
--    int foo= -10; int bar= 10;
--    long long int foo64= -10; long long int bar64= 10;
--    if (!__sync_fetch_and_add(&foo, bar) || foo)
--      return -1;
--    bar= __sync_lock_test_and_set(&foo, bar);
--    if (bar || foo != 10)
--      return -1;
--    bar= __sync_val_compare_and_swap(&bar, foo, 15);
--    if (bar)
--      return -1;
--    if (!__sync_fetch_and_add(&foo64, bar64) || foo64)
--      return -1;
--    bar64= __sync_lock_test_and_set(&foo64, bar64);
--    if (bar64 || foo64 != 10)
--      return -1;
--    bar64= __sync_val_compare_and_swap(&bar64, foo, 15);
--    if (bar64)
--      return -1;
--    return 0;
--  }"
--  HAVE_GCC_ATOMIC_BUILTINS)
-+CHECK_CXX_SOURCE_COMPILES("
-+int main()
-+{
-+  long long int var= 1;
-+  long long int *ptr= &var;
-+  return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
-+}"
-+HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
-+IF (HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
-+  SET(HAVE_GCC_C11_ATOMICS True)
-+ELSE()
-+  SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-+  LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
-   CHECK_CXX_SOURCE_COMPILES("
-   int main()
-   {
-@@ -1028,14 +1012,13 @@ ELSEIF(NOT WITH_ATOMIC_OPS)
-     long long int *ptr= &var;
-     return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
-   }"
--  HAVE_GCC_C11_ATOMICS)
--ELSE()
--  MESSAGE(FATAL_ERROR "${WITH_ATOMIC_OPS} is not a valid value for WITH_ATOMIC_OPS!")
-+  HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+    SET(HAVE_GCC_C11_ATOMICS True)
-+  ENDIF()
-+  SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES})
- ENDIF()
- 
--SET(WITH_ATOMIC_OPS "${WITH_ATOMIC_OPS}" CACHE STRING "Implement atomic operations using atomic CPU instructions for multi-processor (smp) or uniprocessor (up) configuration. By default gcc built-in sync functions are used, if available and 'smp' configuration otherwise.")
--MARK_AS_ADVANCED(WITH_ATOMIC_OPS MY_ATOMIC_MODE_DUMMY)
--
- IF(WITH_VALGRIND)
-   SET(HAVE_valgrind 1)
- ENDIF()
---- mysys/CMakeLists.txt
-+++ mysys/CMakeLists.txt
-@@ -74,6 +74,10 @@ TARGET_LINK_LIBRARIES(mysys dbug strings mysys_ssl ${ZLIB_LIBRARY}
-  ${LIBNSL} ${LIBM} ${LIBRT} ${LIBDL} ${LIBSOCKET} ${LIBEXECINFO})
- DTRACE_INSTRUMENT(mysys)
- 
-+IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  TARGET_LINK_LIBRARIES(mysys atomic)
-+ENDIF()
-+
- IF(HAVE_BFD_H)
-   TARGET_LINK_LIBRARIES(mysys bfd)  
- ENDIF(HAVE_BFD_H)
---- sql/CMakeLists.txt
-+++ sql/CMakeLists.txt
-@@ -172,6 +172,9 @@ ELSE()
-   SET(MYSQLD_SOURCE main.cc ${DTRACE_PROBES_ALL})
- ENDIF()
- 
-+IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  TARGET_LINK_LIBRARIES(sql atomic)
-+ENDIF()
- 
- IF(MSVC AND NOT WITHOUT_DYNAMIC_PLUGINS)
- 
diff --git a/srcpkgs/mariadb/patches/mips-connect-unaligned.patch b/srcpkgs/mariadb/patches/mips-connect-unaligned.patch
new file mode 100644
index 00000000000..ae2f6e03d2e
--- /dev/null
+++ b/srcpkgs/mariadb/patches/mips-connect-unaligned.patch
@@ -0,0 +1,257 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:28 +0200
+Subject: mips-connect-unaligned
+
+---
+ storage/connect/valblk.cpp | 41 ++++++++++++++++++-------------------
+ storage/connect/valblk.h   | 51 +++++++++++++++++++++++++++++-----------------
+ 2 files changed, 52 insertions(+), 40 deletions(-)
+
+--- storage/connect/valblk.cpp
++++ storage/connect/valblk.cpp
+@@ -268,14 +268,14 @@ bool TYPBLK<TYPE>::Init(PGLOBAL g, bool
+ template <class TYPE>
+ char *TYPBLK<TYPE>::GetCharString(char *p, int n)
+   {
+-  sprintf(p, Fmt, Typp[n]);
++  sprintf(p, Fmt, UnalignedRead(n));
+   return p;
+   } // end of GetCharString
+ 
+ template <>
+ char *TYPBLK<double>::GetCharString(char *p, int n)
+   {
+-  sprintf(p, Fmt, Prec, Typp[n]);
++  sprintf(p, Fmt, Prec, UnalignedRead(n));
+   return p;
+   } // end of GetCharString
+ 
+@@ -291,7 +291,7 @@ void TYPBLK<TYPE>::SetValue(PVAL valp, i
+   ChkTyp(valp);
+ 
+   if (!(b = valp->IsNull()))
+-    Typp[n] = GetTypedValue(valp);
++    UnalignedWrite(n, GetTypedValue(valp));
+   else
+     Reset(n);
+ 
+@@ -353,9 +353,9 @@ void TYPBLK<TYPE>::SetValue(PCSZ p, int
+   ulonglong val = CharToNumber(p, strlen(p), maxval, Unsigned, &minus); 
+     
+   if (minus && val < maxval)
+-    Typp[n] = (TYPE)(-(signed)val);
++    UnalignedWrite(n, (TYPE)(-(signed)val));
+   else
+-    Typp[n] = (TYPE)val;
++    UnalignedWrite(n, (TYPE)val);
+ 
+   SetNull(n, false);
+   } // end of SetValue
+@@ -398,7 +398,7 @@ void TYPBLK<double>::SetValue(PCSZ p, in
+ 		throw Type;
+ 	} // endif Check
+ 
+-  Typp[n] = atof(p);
++  UnalignedWrite(n, atof(p));
+   SetNull(n, false);
+   } // end of SetValue
+ 
+@@ -430,7 +430,7 @@ void TYPBLK<TYPE>::SetValue(PVBLK pv, in
+   ChkTyp(pv);
+ 
+   if (!(b = pv->IsNull(n2) && Nullable))
+-    Typp[n1] = GetTypedValue(pv, n2);
++    UnalignedWrite(n1, GetTypedValue(pv, n2));
+   else
+     Reset(n1);
+ 
+@@ -481,10 +481,10 @@ void TYPBLK<TYPE>::SetMin(PVAL valp, int
+   {
+   CheckParms(valp, n)
+   TYPE  tval = GetTypedValue(valp);
+-  TYPE& tmin = Typp[n];
++  TYPE  tmin = UnalignedRead(n);
+ 
+   if (tval < tmin)
+-    tmin = tval;
++    UnalignedWrite(n, tval);
+ 
+   } // end of SetMin
+ 
+@@ -496,10 +496,10 @@ void TYPBLK<TYPE>::SetMax(PVAL valp, int
+   {
+   CheckParms(valp, n)
+   TYPE  tval = GetTypedValue(valp);
+-  TYPE& tmin = Typp[n];
++  TYPE  tmin = UnalignedRead(n);
+ 
+   if (tval > tmin)
+-    tmin = tval;
++    UnalignedWrite(n, tval);
+ 
+   } // end of SetMax
+ 
+@@ -513,8 +513,7 @@ void TYPBLK<TYPE>::SetValues(PVBLK pv, i
+   CheckType(pv)
+   TYPE *lp = ((TYPBLK*)pv)->Typp;
+ 
+-  for (int i = k; i < n; i++)          // TODO
+-    Typp[i] = lp[i];
++  memcpy(Typp + k, lp + k, sizeof(TYPE) * n);
+ 
+   } // end of SetValues
+ #endif // 0
+@@ -525,7 +524,7 @@ void TYPBLK<TYPE>::SetValues(PVBLK pv, i
+ template <class TYPE>
+ void TYPBLK<TYPE>::Move(int i, int j)
+   {
+-  Typp[j] = Typp[i];
++  UnalignedWrite(j, UnalignedRead(i));
+   MoveNull(i, j);
+   } // end of Move
+ 
+@@ -539,7 +538,7 @@ int TYPBLK<TYPE>::CompVal(PVAL vp, int n
+   ChkIndx(n);
+   ChkTyp(vp);
+ #endif   // _DEBUG
+-  TYPE mlv = Typp[n];
++  TYPE mlv = UnalignedRead(n);
+   TYPE vlv = GetTypedValue(vp);
+ 
+   return (vlv > mlv) ? 1 : (vlv < mlv) ? (-1) : 0;
+@@ -551,8 +550,8 @@ int TYPBLK<TYPE>::CompVal(PVAL vp, int n
+ template <class TYPE>
+ int TYPBLK<TYPE>::CompVal(int i1, int i2)
+   {
+-  TYPE lv1 = Typp[i1];
+-  TYPE lv2 = Typp[i2];
++  TYPE lv1 = UnalignedRead(i1);
++  TYPE lv2 = UnalignedRead(i2);
+ 
+   return (lv1 > lv2) ? 1 : (lv1 < lv2) ? (-1) : 0;
+   } // end of CompVal
+@@ -589,7 +588,7 @@ int TYPBLK<TYPE>::Find(PVAL vp)
+   TYPE n = GetTypedValue(vp);
+ 
+   for (i = 0; i < Nval; i++)
+-    if (n == Typp[i])
++    if (n == UnalignedRead(i))
+       break;
+ 
+   return (i < Nval) ? i : (-1);
+@@ -605,7 +604,7 @@ int TYPBLK<TYPE>::GetMaxLength(void)
+   int i, n, m;
+ 
+   for (i = n = 0; i < Nval; i++) {
+-    m = sprintf(buf, Fmt, Typp[i]);
++    m = sprintf(buf, Fmt, UnalignedRead(i));
+     n = MY_MAX(n, m);
+     } // endfor i
+ 
+@@ -1335,7 +1334,7 @@ char *DATBLK::GetCharString(char *p, int
+   char *vp;
+ 
+   if (Dvalp) {
+-    Dvalp->SetValue(Typp[n]);
++    Dvalp->SetValue(UnalignedRead(n));
+     vp = Dvalp->GetCharString(p);
+   } else
+     vp = TYPBLK<int>::GetCharString(p, n);
+@@ -1351,7 +1350,7 @@ void DATBLK::SetValue(PCSZ p, int n)
+   if (Dvalp) {
+     // Decode the string according to format
+     Dvalp->SetValue_psz(p);
+-    Typp[n] = Dvalp->GetIntValue();
++    UnalignedWrite(n, Dvalp->GetIntValue());
+   } else
+     TYPBLK<int>::SetValue(p, n);
+ 
+--- storage/connect/valblk.h
++++ storage/connect/valblk.h
+@@ -139,6 +139,7 @@ class VALBLK : public BLOCK {
+   int     Prec;             // Precision of float values
+   }; // end of class VALBLK
+ 
++
+ /***********************************************************************/
+ /*  Class TYPBLK: represents a block of typed values.                  */
+ /***********************************************************************/
+@@ -151,40 +152,41 @@ class TYPBLK : public VALBLK {
+   // Implementation
+   virtual bool   Init(PGLOBAL g, bool check);
+   virtual int    GetVlen(void) {return sizeof(TYPE);}
+-  virtual char   GetTinyValue(int n) {return (char)Typp[n];}
+-  virtual uchar  GetUTinyValue(int n) {return (uchar)Typp[n];}
+-  virtual short  GetShortValue(int n) {return (short)Typp[n];}
+-  virtual ushort GetUShortValue(int n) {return (ushort)Typp[n];}
+-  virtual int    GetIntValue(int n) {return (int)Typp[n];}
+-  virtual uint   GetUIntValue(int n) {return (uint)Typp[n];}
+-  virtual longlong GetBigintValue(int n) {return (longlong)Typp[n];}
+-  virtual ulonglong GetUBigintValue(int n) {return (ulonglong)Typp[n];}
+-  virtual double GetFloatValue(int n) {return (double)Typp[n];}
++
++  virtual char   GetTinyValue(int n) {return (char)UnalignedRead(n);}
++  virtual uchar  GetUTinyValue(int n) {return (uchar)UnalignedRead(n);}
++  virtual short  GetShortValue(int n) {return (short)UnalignedRead(n);}
++  virtual ushort GetUShortValue(int n) {return (ushort)UnalignedRead(n);}
++  virtual int    GetIntValue(int n) {return (int)UnalignedRead(n);}
++  virtual uint   GetUIntValue(int n) {return (uint)UnalignedRead(n);}
++  virtual longlong GetBigintValue(int n) {return (longlong)UnalignedRead(n);}
++  virtual ulonglong GetUBigintValue(int n) {return (ulonglong)UnalignedRead(n);}
++  virtual double GetFloatValue(int n) {return (double)UnalignedRead(n);}
+   virtual char  *GetCharString(char *p, int n);
+-  virtual void   Reset(int n) {Typp[n] = 0;}
++  virtual void   Reset(int n) {UnalignedWrite(n, 0);}
+ 
+   // Methods
+   using VALBLK::SetValue;
+   virtual void   SetValue(PCSZ sp, int n);
+   virtual void   SetValue(const char *sp, uint len, int n);
+   virtual void   SetValue(short sval, int n)
+-                  {Typp[n] = (TYPE)sval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)sval); SetNull(n, false);}
+   virtual void   SetValue(ushort sval, int n)
+-                  {Typp[n] = (TYPE)sval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)sval); SetNull(n, false);}
+   virtual void   SetValue(int lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(uint lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(longlong lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(ulonglong lval, int n)
+-                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
+   virtual void   SetValue(double fval, int n)
+-                  {Typp[n] = (TYPE)fval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)fval); SetNull(n, false);}
+   virtual void   SetValue(char cval, int n)
+-                  {Typp[n] = (TYPE)cval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)cval); SetNull(n, false);}
+   virtual void   SetValue(uchar cval, int n)
+-                  {Typp[n] = (TYPE)cval; SetNull(n, false);}
++                  {UnalignedWrite(n, (TYPE)cval); SetNull(n, false);}
+   virtual void   SetValue(PVAL valp, int n);
+   virtual void   SetValue(PVBLK pv, int n1, int n2);
+   virtual void   SetMin(PVAL valp, int n);
+@@ -206,6 +208,17 @@ class TYPBLK : public VALBLK {
+   // Members
+   TYPE* const &Typp;
+   const char  *Fmt;
++
++  // Unaligned access
++  TYPE UnalignedRead(int n) const {
++    TYPE result;
++    memcpy(&result, Typp + n, sizeof(TYPE));
++    return result;
++  }
++
++  void UnalignedWrite(int n, TYPE value) {
++    memcpy(Typp + n, &value, sizeof(TYPE));
++  }
+   }; // end of class TYPBLK
+ 
+ /***********************************************************************/
diff --git a/srcpkgs/mariadb/patches/mips-innobase-atomic.patch b/srcpkgs/mariadb/patches/mips-innobase-atomic.patch
new file mode 100644
index 00000000000..195fe41a422
--- /dev/null
+++ b/srcpkgs/mariadb/patches/mips-innobase-atomic.patch
@@ -0,0 +1,20 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:29 +0200
+Subject: mips-innobase-atomic
+
+---
+ storage/innobase/include/os0sync.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git storage/innobase/include/os0sync.h storage/innobase/include/os0sync.h
+index bb225c5..6520237 100644
+--- storage/innobase/include/os0sync.h
++++ storage/innobase/include/os0sync.h
+@@ -37,6 +37,7 @@ Created 9/6/1995 Heikki Tuuri
+ 
+ #include "univ.i"
+ #include "ut0lst.h"
++#include "sync0types.h"
+ 
+ /** CPU cache line size */
+ #ifdef __powerpc__
diff --git a/srcpkgs/mariadb/patches/mips-machine.patch b/srcpkgs/mariadb/patches/mips-machine.patch
new file mode 100644
index 00000000000..3dbbbaaa538
--- /dev/null
+++ b/srcpkgs/mariadb/patches/mips-machine.patch
@@ -0,0 +1,23 @@
+From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
+Date: Thu, 10 Aug 2017 20:40:29 +0200
+Subject: mips-machine
+
+---
+ cmake/package_name.cmake | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git cmake/package_name.cmake cmake/package_name.cmake
+index 4930a6b..7681f78 100644
+--- cmake/package_name.cmake
++++ cmake/package_name.cmake
+@@ -34,6 +34,10 @@ IF(NOT VERSION)
+       SET(DEFAULT_MACHINE "mips")
+     ENDIF()
+ 
++    IF(NOT 64BIT AND CMAKE_SYSTEM_PROCESSOR MATCHES "^mips64")
++      SET(DEFAULT_MACHINE "mips")
++    ENDIF()
++
+     IF(CMAKE_SYSTEM_NAME MATCHES "Windows")
+       SET(NEED_DASH_BETWEEN_PLATFORM_AND_MACHINE 0)
+       SET(DEFAULT_PLATFORM "win")
diff --git a/srcpkgs/mariadb/patches/musl-ppc.patch b/srcpkgs/mariadb/patches/musl-ppc.patch
index 16cbac71a94..57c7f4bf15b 100644
--- a/srcpkgs/mariadb/patches/musl-ppc.patch
+++ b/srcpkgs/mariadb/patches/musl-ppc.patch
@@ -15,12 +15,11 @@ builtin for this in gcc for ages, so just use that instead.
  # endif
 --- storage/xtradb/include/ut0ut.h
 +++ storage/xtradb/include/ut0ut.h
-@@ -86,8 +86,7 @@ struct ut_when_dtor {
-    independent way by using YieldProcessor. */
- #  define UT_RELAX_CPU() YieldProcessor()
- # elif defined(__powerpc__)
--#include <sys/platform/ppc.h>
--#  define UT_RELAX_CPU() __ppc_get_timebase()
+@@ -86,6 +86,8 @@
+ # elif defined(__powerpc__) && defined __GLIBC__
+ #include <sys/platform/ppc.h>
+ #  define UT_RELAX_CPU() __ppc_get_timebase()
++# elif defined(__powerpc__)
 +#  define UT_RELAX_CPU() __builtin_ppc_get_timebase()
  # else
  #  define UT_RELAX_CPU() ((void)0) /* avoid warning for an empty statement */
diff --git a/srcpkgs/mariadb/template b/srcpkgs/mariadb/template
index 88611438a99..cfdd2717fc5 100644
--- a/srcpkgs/mariadb/template
+++ b/srcpkgs/mariadb/template
@@ -1,7 +1,7 @@
 # Template file for 'mariadb'
 pkgname=mariadb
-version=10.1.30
-revision=8
+version=10.1.45
+revision=1
 build_style=cmake
 configure_args="-DMYSQL_DATADIR=/var/lib/mysql
  -DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock -DDEFAULT_CHARSET=utf8
@@ -27,7 +27,7 @@ maintainer="Orphaned <orphan@voidlinux.org>"
 license="GPL-2.0-only"
 homepage="https://mariadb.org/"
 distfiles="http://archive.mariadb.org/$pkgname-$version/source/$pkgname-$version.tar.gz"
-checksum=173a5e5a24819e0a469c3bd09b5c98491676c37c6095882a2ea34c5af0996c88
+checksum=9d8f0f71f9613b2028ffc5c5be8b98948ec955eb0d89600d18ed7cc04807dad5
 lib32disabled=yes
 provides="mysql-${version}_${revision}"
 replaces="mysql>=0"

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: mariadb: update to 10.1.45.
  2020-05-27  6:23 [PR PATCH] mariadb: update to 10.1.45 rmccask
                   ` (8 preceding siblings ...)
  2020-05-27 23:58 ` rmccask
@ 2020-05-28  3:19 ` rmccask
  2020-05-28  3:48 ` rmccask
  2020-10-24 15:26 ` [PR PATCH] [Closed]: " leahneukirchen
  11 siblings, 0 replies; 13+ messages in thread
From: rmccask @ 2020-05-28  3:19 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 423 bytes --]

New comment by rmccask on void-packages repository

https://github.com/void-linux/void-packages/pull/22348#issuecomment-635072071

Comment:
Is it worth keeping more than one version of mariadb available like an lts?  It looks like 5.5, 10.1, 10.2, 10.3, 10.4 and 10.5 are getting updates currently.  10.5 is still in development.  Debian has mariadb-10.0, 10.1, 10.3 and 10.4.  Arch only has 10.4.  Gentoo has all of them.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: mariadb: update to 10.1.45.
  2020-05-27  6:23 [PR PATCH] mariadb: update to 10.1.45 rmccask
                   ` (9 preceding siblings ...)
  2020-05-28  3:19 ` rmccask
@ 2020-05-28  3:48 ` rmccask
  2020-10-24 15:26 ` [PR PATCH] [Closed]: " leahneukirchen
  11 siblings, 0 replies; 13+ messages in thread
From: rmccask @ 2020-05-28  3:48 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 481 bytes --]

New comment by rmccask on void-packages repository

https://github.com/void-linux/void-packages/pull/22348#issuecomment-635072071

Comment:
Is it worth keeping more than one version of mariadb available like an lts?  It looks like 5.5, 10.1, 10.2, 10.3, 10.4 and 10.5 are getting updates currently.  10.5 is still in development.  Debian has mariadb-10.0 (jessie), 10.1 (stretch), 10.3 (bullseye, sid, buster) and 10.4 (experimental).  Arch only has 10.4.  Gentoo has all of them.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PR PATCH] [Closed]: mariadb: update to 10.1.45.
  2020-05-27  6:23 [PR PATCH] mariadb: update to 10.1.45 rmccask
                   ` (10 preceding siblings ...)
  2020-05-28  3:48 ` rmccask
@ 2020-10-24 15:26 ` leahneukirchen
  11 siblings, 0 replies; 13+ messages in thread
From: leahneukirchen @ 2020-10-24 15:26 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 161 bytes --]

There's a closed pull request on the void-packages repository

mariadb: update to 10.1.45.
https://github.com/void-linux/void-packages/pull/22348

Description:


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2020-10-24 15:26 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-27  6:23 [PR PATCH] mariadb: update to 10.1.45 rmccask
2020-05-27 12:48 ` [PR PATCH] [Updated] " rmccask
2020-05-27 12:52 ` sgn
2020-05-27 12:54 ` sgn
2020-05-27 17:28 ` [PR PATCH] [Updated] " rmccask
2020-05-27 18:17 ` rmccask
2020-05-27 18:17 ` rmccask
2020-05-27 18:23 ` rmccask
2020-05-27 22:45 ` [PR PATCH] [Updated] " rmccask
2020-05-27 23:58 ` rmccask
2020-05-28  3:19 ` rmccask
2020-05-28  3:48 ` rmccask
2020-10-24 15:26 ` [PR PATCH] [Closed]: " leahneukirchen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).