From 5193ae64ca0c3322364163d356a6d69173c3d233 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 28 Jul 2018 11:00:49 +0200 Subject: gnu: mariadb: Work around GCC ICE on armhf-linux. * gnu/packages/patches/mariadb-gcc-ice.patch: New file. * gnu/packages/databases.scm (mariadb)[arguments]: Conditionally add 'apply-patch' phase. [native-inputs]: Conditionally add "gcc-ice-patch" input. --- gnu/packages/databases.scm | 19 +++++++++++++++++-- gnu/packages/patches/mariadb-gcc-ice.patch | 24 ++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 gnu/packages/patches/mariadb-gcc-ice.patch (limited to 'gnu/packages') diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 382c74cfd9..1433ca59c6 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -638,7 +638,7 @@ Language.") "0bax748j4srsyhw5cs5jvwigndh0zwmf4r2cjvhja31ckx8jqccl")))) (build-system cmake-build-system) (arguments - '(#:configure-flags + `(#:configure-flags '("-DBUILD_CONFIG=mysql_release" ;; Linking with libarchive fails, like this: @@ -665,6 +665,18 @@ Language.") "-DINSTALL_SHAREDIR=share/mysql") #:phases (modify-phases %standard-phases + + ;; Apply this patch that's only needed on ARM. + ,@(if (and (not (%current-target-system)) + (string=? "armhf-linux" (%current-system))) + `((add-after 'unpack 'apply-patch + (lambda* (#:key inputs #:allow-other-keys) + (let ((patch (assoc-ref inputs "gcc-ice-patch"))) + (invoke "patch" "-p1" "--force" + "--input" patch) + #t)))) + '()) + (add-before 'configure 'pre-configure (lambda _ @@ -686,7 +698,10 @@ Language.") #t)))))) (native-inputs `(("bison" ,bison) - ("perl" ,perl))) + ("perl" ,perl) + ,@(if (string=? "armhf-linux" (%current-system)) + `(("gcc-ice-patch" ,(search-patch "mariadb-gcc-ice.patch"))) + '()))) (inputs `(("jemalloc" ,jemalloc) ("libaio" ,libaio) diff --git a/gnu/packages/patches/mariadb-gcc-ice.patch b/gnu/packages/patches/mariadb-gcc-ice.patch new file mode 100644 index 0000000000..59b188f45a --- /dev/null +++ b/gnu/packages/patches/mariadb-gcc-ice.patch @@ -0,0 +1,24 @@ +Work around this GCC ICE: . It shows up +only when doing native compiles on armhf-linux. + +--- mariadb-10.1.33/plugin/semisync/semisync_master.cc 2018-07-28 02:13:12.604020250 +0200 ++++ mariadb-10.1.33/plugin/semisync/semisync_master.cc 2018-07-28 02:14:11.907753417 +0200 +@@ -847,6 +847,8 @@ + return function_exit(kWho, 0); + } + ++volatile const void *kSyncHeaderPtr = &ReplSemiSyncMaster::kSyncHeader; ++ + int ReplSemiSyncMaster::reserveSyncHeader(unsigned char *header, + unsigned long size) + { +@@ -873,7 +875,7 @@ + /* Set the magic number and the sync status. By default, no sync + * is required. + */ +- memcpy(header, kSyncHeader, sizeof(kSyncHeader)); ++ memcpy(header, (void *)kSyncHeaderPtr, sizeof(kSyncHeader)); + hlen= sizeof(kSyncHeader); + } + return function_exit(kWho, hlen); + -- cgit 1.4.1