gnu: Default to GCC 5.
* gnu/packages/patches/gcc-libiberty-printf-decl.patch: New file. * gnu/packages/gcc.scm (gcc-5)[source]: Use it. (gcc): Switch to GCC-5. * gnu/packages/commencement.scm (libstdc++-boot0): New variable. (gcc-boot0)[inputs]: Add it. [native-inputs]: Remove. (gcc-toolchain-4.9): Switch to GCC-4.9. (gcc-toolchain-5): Switch to GCC-FINAL. * gnu-system.am (dist_patch_DATA): Add 'gcc-libiberty-printf-decl.patch'.
This commit is contained in:
		
							parent
							
								
									868c13c53a
								
							
						
					
					
						commit
						e3d0fcbf7e
					
				
					 4 changed files with 59 additions and 9 deletions
				
			
		|  | @ -478,6 +478,7 @@ dist_patch_DATA =						\ | |||
|   gnu/packages/patches/gawk-shell.patch				\ | ||||
|   gnu/packages/patches/gcc-arm-link-spec-fix.patch		\ | ||||
|   gnu/packages/patches/gcc-cross-environment-variables.patch	\ | ||||
|   gnu/packages/patches/gcc-libiberty-printf-decl.patch		\ | ||||
|   gnu/packages/patches/gcc-libvtv-runpath.patch			\ | ||||
|   gnu/packages/patches/gcc-5.0-libvtv-runpath.patch		\ | ||||
|   gnu/packages/patches/geoclue-config.patch			\ | ||||
|  |  | |||
|  | @ -170,6 +170,26 @@ | |||
|                     ,cf))))) | ||||
|      (inputs %boot0-inputs)))) | ||||
| 
 | ||||
| (define libstdc++-boot0 | ||||
|   ;; GCC's libcc1 is always built as a shared library (the top-level | ||||
|   ;; 'Makefile.def' forcefully adds --enable-shared) and thus needs to refer | ||||
|   ;; to libstdc++.so.  We cannot build libstdc++-5.3 because it relies on | ||||
|   ;; C++14 features missing in our bootstrap compiler. | ||||
|   (let ((lib (package-with-bootstrap-guile (make-libstdc++ gcc-4.9)))) | ||||
|     (package | ||||
|       (inherit lib) | ||||
|       (name "libstdc++-boot0") | ||||
|       (arguments | ||||
|        `(#:guile ,%bootstrap-guile | ||||
|          #:implicit-inputs? #f | ||||
| 
 | ||||
|          ;; XXX: libstdc++.so NEEDs ld.so for some reason. | ||||
|          #:validate-runpath? #f | ||||
| 
 | ||||
|          ,@(package-arguments lib))) | ||||
|       (inputs %boot0-inputs) | ||||
|       (native-inputs '())))) | ||||
| 
 | ||||
| (define gcc-boot0 | ||||
|   (package-with-bootstrap-guile | ||||
|    (package (inherit gcc) | ||||
|  | @ -255,14 +275,13 @@ | |||
|                ("mpc-source" ,(package-source mpc)) | ||||
|                ("binutils-cross" ,binutils-boot0) | ||||
| 
 | ||||
|                ;; The libstdc++ that libcc1 links against. | ||||
|                ("libstdc++" ,libstdc++-boot0) | ||||
| 
 | ||||
|                ;; Call it differently so that the builder can check whether | ||||
|                ;; the "libc" input is #f. | ||||
|                ("libc-native" ,@(assoc-ref %boot0-inputs "libc")) | ||||
|                ,@(alist-delete "libc" %boot0-inputs))) | ||||
| 
 | ||||
|      ;; No need for Texinfo at this stage. | ||||
|      (native-inputs (alist-delete "texinfo" | ||||
|                                   (package-native-inputs gcc)))))) | ||||
|                ,@(alist-delete "libc" %boot0-inputs)))))) | ||||
| 
 | ||||
| (define perl-boot0 | ||||
|   (let ((perl (package | ||||
|  | @ -882,9 +901,9 @@ and binaries, plus debugging symbols in the 'debug' output), and Binutils.") | |||
|   (gcc-toolchain gcc-4.8)) | ||||
| 
 | ||||
| (define-public gcc-toolchain-4.9 | ||||
|   (gcc-toolchain gcc-final)) | ||||
|   (gcc-toolchain gcc-4.9)) | ||||
| 
 | ||||
| (define-public gcc-toolchain-5 | ||||
|   (gcc-toolchain gcc-5)) | ||||
|   (gcc-toolchain gcc-final)) | ||||
| 
 | ||||
| ;;; commencement.scm ends here | ||||
|  |  | |||
|  | @ -352,14 +352,16 @@ Go.  It also includes runtime support libraries for these languages.") | |||
|               (sha256 | ||||
|                (base32 | ||||
|                 "1ny4smkp5bzs3cp8ss7pl6lk8yss0d9m4av1mvdp72r1x695akxq")) | ||||
|               (patches (list (search-patch "gcc-5.0-libvtv-runpath.patch"))))) | ||||
|               (patches (list (search-patch "gcc-5.0-libvtv-runpath.patch") | ||||
|                              (search-patch | ||||
|                               "gcc-libiberty-printf-decl.patch"))))) | ||||
| 
 | ||||
|     ;; GCC 5 ships with .info files, so no need for Texinfo. | ||||
|     (native-inputs '()))) | ||||
| 
 | ||||
| ;; Note: When changing the default gcc version, update | ||||
| ;;       the gcc-toolchain-* definitions accordingly. | ||||
| (define-public gcc gcc-4.9) | ||||
| (define-public gcc gcc-5) | ||||
| 
 | ||||
| (define-public (make-libstdc++ gcc) | ||||
|   "Return a libstdc++ package based on GCC.  The primary use case is when | ||||
|  |  | |||
							
								
								
									
										28
									
								
								gnu/packages/patches/gcc-libiberty-printf-decl.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								gnu/packages/patches/gcc-libiberty-printf-decl.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | |||
| This patch makes the exeception specifier of libiberty's 'asprintf' | ||||
| and 'vasprintf' declarations match those of glibc to work around the | ||||
| problem described at <https://gcc.gnu.org/ml/gcc-help/2016-04/msg00039.html>. | ||||
| 
 | ||||
| The problem in part stems from the fact that libiberty is configured | ||||
| without _GNU_SOURCE (thus, it sets HAVE_DECL_ASPRINTF to 0), whereas libcc1 | ||||
| is configured and built with _GNU_SOURCE, hence the conflicting declarations. | ||||
| 
 | ||||
| --- gcc-5.3.0/include/libiberty.h	2016-04-23 22:45:46.262709079 +0200
 | ||||
| +++ gcc-5.3.0/include/libiberty.h	2016-04-23 22:45:37.110635439 +0200
 | ||||
| @@ -625,7 +625,7 @@ extern int pwait (int, int *, int);
 | ||||
|  /* Like sprintf but provides a pointer to malloc'd storage, which must | ||||
|     be freed by the caller.  */ | ||||
|   | ||||
| -extern int asprintf (char **, const char *, ...) ATTRIBUTE_PRINTF_2;
 | ||||
| +extern int asprintf (char **, const char *, ...) __THROWNL ATTRIBUTE_PRINTF_2;
 | ||||
|  #endif | ||||
|   | ||||
|  /* Like asprintf but allocates memory without fail. This works like | ||||
| @@ -637,7 +637,7 @@ extern char *xasprintf (const char *, ..
 | ||||
|  /* Like vsprintf but provides a pointer to malloc'd storage, which | ||||
|     must be freed by the caller.  */ | ||||
|   | ||||
| -extern int vasprintf (char **, const char *, va_list) ATTRIBUTE_PRINTF(2,0);
 | ||||
| +extern int vasprintf (char **, const char *, va_list) __THROWNL ATTRIBUTE_PRINTF(2,0);
 | ||||
|  #endif | ||||
|   | ||||
|  /* Like vasprintf but allocates memory without fail. This works like | ||||
		Reference in a new issue