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.
This commit is contained in:
		
							parent
							
								
									346a632144
								
							
						
					
					
						commit
						5193ae64ca
					
				
					 3 changed files with 42 additions and 2 deletions
				
			
		|  | @ -926,6 +926,7 @@ dist_patch_DATA =						\ | ||||||
|   %D%/packages/patches/mailutils-uninitialized-memory.patch	\
 |   %D%/packages/patches/mailutils-uninitialized-memory.patch	\
 | ||||||
|   %D%/packages/patches/make-glibc-compat.patch			\
 |   %D%/packages/patches/make-glibc-compat.patch			\
 | ||||||
|   %D%/packages/patches/make-impure-dirs.patch			\
 |   %D%/packages/patches/make-impure-dirs.patch			\
 | ||||||
|  |   %D%/packages/patches/mariadb-gcc-ice.patch			\
 | ||||||
|   %D%/packages/patches/mars-install.patch			\
 |   %D%/packages/patches/mars-install.patch			\
 | ||||||
|   %D%/packages/patches/mars-sfml-2.3.patch			\
 |   %D%/packages/patches/mars-sfml-2.3.patch			\
 | ||||||
|   %D%/packages/patches/maxima-defsystem-mkdir.patch		\
 |   %D%/packages/patches/maxima-defsystem-mkdir.patch		\
 | ||||||
|  |  | ||||||
|  | @ -638,7 +638,7 @@ Language.") | ||||||
|                 "0bax748j4srsyhw5cs5jvwigndh0zwmf4r2cjvhja31ckx8jqccl")))) |                 "0bax748j4srsyhw5cs5jvwigndh0zwmf4r2cjvhja31ckx8jqccl")))) | ||||||
|     (build-system cmake-build-system) |     (build-system cmake-build-system) | ||||||
|     (arguments |     (arguments | ||||||
|      '(#:configure-flags |      `(#:configure-flags | ||||||
|        '("-DBUILD_CONFIG=mysql_release" |        '("-DBUILD_CONFIG=mysql_release" | ||||||
|          ;; Linking with libarchive fails, like this: |          ;; Linking with libarchive fails, like this: | ||||||
| 
 | 
 | ||||||
|  | @ -665,6 +665,18 @@ Language.") | ||||||
|          "-DINSTALL_SHAREDIR=share/mysql") |          "-DINSTALL_SHAREDIR=share/mysql") | ||||||
|        #:phases |        #:phases | ||||||
|        (modify-phases %standard-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 |          (add-before | ||||||
|           'configure 'pre-configure |           'configure 'pre-configure | ||||||
|           (lambda _ |           (lambda _ | ||||||
|  | @ -686,7 +698,10 @@ Language.") | ||||||
|               #t)))))) |               #t)))))) | ||||||
|     (native-inputs |     (native-inputs | ||||||
|      `(("bison" ,bison) |      `(("bison" ,bison) | ||||||
|        ("perl" ,perl))) |        ("perl" ,perl) | ||||||
|  |        ,@(if (string=? "armhf-linux" (%current-system)) | ||||||
|  |              `(("gcc-ice-patch" ,(search-patch "mariadb-gcc-ice.patch"))) | ||||||
|  |              '()))) | ||||||
|     (inputs |     (inputs | ||||||
|      `(("jemalloc" ,jemalloc) |      `(("jemalloc" ,jemalloc) | ||||||
|        ("libaio" ,libaio) |        ("libaio" ,libaio) | ||||||
|  |  | ||||||
							
								
								
									
										24
									
								
								gnu/packages/patches/mariadb-gcc-ice.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								gnu/packages/patches/mariadb-gcc-ice.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | ||||||
|  | Work around this GCC ICE: <https://bugs.gnu.org/31708>.  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); | ||||||
|  | 
 | ||||||
		Reference in a new issue