Merge branch 'master' into core-updates
[jackhill/guix/guix.git] / gnu / packages / base.scm
index 5c39ec3..606e59b 100644 (file)
@@ -24,6 +24,7 @@
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bootstrap)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages multiprecision)
@@ -88,14 +89,14 @@ lines.")
 (define-public sed
   (package
    (name "sed")
-   (version "4.2.1")
+   (version "4.2.2")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/sed/sed-" version
                                 ".tar.bz2"))
             (sha256
              (base32
-              "13wlsb4sf5d5a82xjhxqmdvrrn36rmw5f0pl9qyb9zkvldnb7hra"))))
+              "1myvrmh99jsvk7v3d7crm0gcrq51hmmm1r2kjyyci152in1x2j7h"))))
    (build-system gnu-build-system)
    (synopsis "GNU sed, a batch stream editor")
    (arguments
@@ -263,14 +264,14 @@ The tools supplied with this package are:
 (define-public coreutils
   (package
    (name "coreutils")
-   (version "8.20")
+   (version "8.21")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/coreutils/coreutils-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "1cly97xdy3v4nbbx631k43smqw0nnpn651kkprs0yyl2cj3pkjyv"))))
+              "064f512185iysqqcvhnhaf3bfmzrvcgs7n405qsyp99zmfyl9amd"))))
    (build-system gnu-build-system)
    (inputs `(("acl"  ,acl)
              ("gmp"  ,gmp)
@@ -342,14 +343,14 @@ that it is possible to use Make to build and install the program.")
 (define-public binutils
   (package
    (name "binutils")
-   (version "2.22")
+   (version "2.23.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/binutils/binutils-"
                                 version ".tar.bz2"))
             (sha256
              (base32
-              "1a9w66v5dwvbnawshjwqcgz7km6kw6ihkzp6sswv9ycc3knzhykc"))))
+              "06bs5v5ndb4g5qx96d52lc818gkbskd1m0sz57314v887sqfbcia"))))
    (build-system gnu-build-system)
 
    ;; Split Binutils in several outputs, mostly to avoid collisions in
@@ -367,7 +368,11 @@ that it is possible to use Make to build and install the program.")
                           "LDFLAGS=-static-libgcc"
 
                           ;; Don't search under /usr/lib & co.
-                          "--with-lib-path=/no-ld-lib-path")))
+                          "--with-lib-path=/no-ld-lib-path"
+
+                          ;; Glibc 2.17 has a "comparison of unsigned
+                          ;; expression >= 0 is always true" in wchar.h.
+                          "--disable-werror")))
 
    (synopsis "GNU Binutils, tools for manipulating binaries (linker,
 assembler, etc.)")
@@ -378,119 +383,6 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
    (license gpl3+)
    (home-page "http://www.gnu.org/software/binutils/")))
 
-(define-public gcc-4.7
-  (let ((stripped? #t))                         ; TODO: make this a parameter
-    (package
-     (name "gcc")
-     (version "4.7.2")
-     (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/gcc/gcc-"
-                                  version "/gcc-" version ".tar.bz2"))
-              (sha256
-               (base32
-                "115h03hil99ljig8lkrq4qk426awmzh0g99wrrggxf8g07bq74la"))))
-     (build-system gnu-build-system)
-     (inputs `(("gmp" ,gmp)
-               ("mpfr" ,mpfr)
-               ("mpc" ,mpc)))           ; TODO: libelf, ppl, cloog, zlib, etc.
-     (arguments
-      `(#:out-of-source? #t
-        #:strip-binaries? ,stripped?
-        #:configure-flags
-        `("--enable-plugin"
-          "--enable-languages=c,c++"
-          "--disable-multilib"
-
-          "--with-local-prefix=/no-gcc-local-prefix"
-
-          ,(let ((libc (assoc-ref %build-inputs "libc")))
-             (if libc
-                 (string-append "--with-native-system-header-dir=" libc
-                                "/include")
-                 "--without-headers")))
-        #:make-flags
-        (let ((libc (assoc-ref %build-inputs "libc")))
-          `(,@(if libc
-                  (list (string-append "LDFLAGS_FOR_BUILD="
-                                       "-L" libc "/lib "
-                                       "-Wl,-dynamic-linker "
-                                       "-Wl," libc
-                                       ,(glibc-dynamic-linker)))
-                  '())
-            ,(string-append "BOOT_CFLAGS=-O2 "
-                            ,(if stripped? "-g0" "-g"))))
-
-        #:tests? #f
-        #:phases
-        (alist-cons-before
-         'configure 'pre-configure
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (let ((out  (assoc-ref outputs "out"))
-                 (libc (assoc-ref inputs "libc")))
-             (when libc
-               ;; The following is not performed for `--without-headers'
-               ;; cross-compiler builds.
-
-               ;; Fix the dynamic linker's file name.
-               (substitute* (find-files "gcc/config"
-                                        "^linux(64|-elf)?\\.h$")
-                 (("#define GLIBC_DYNAMIC_LINKER([^ ]*).*$" _ suffix)
-                  (format #f "#define GLIBC_DYNAMIC_LINKER~a \"~a\"~%"
-                          suffix
-                          (string-append libc ,(glibc-dynamic-linker)))))
-
-               ;; Tell where to find libstdc++, libc, and `?crt*.o', except
-               ;; `crt{begin,end}.o', which come with GCC.
-               (substitute* (find-files "gcc/config"
-                                        "^(gnu-user(64)?|linux-elf)\\.h$")
-                 (("#define LIB_SPEC (.*)$" _ suffix)
-                  ;; Note that with this "lib" spec, we may still add a
-                  ;; RUNPATH to GCC even when `libgcc_s' is not NEEDED.
-                  ;; There's not much that can be done to avoid it, though.
-                  (format #f "#define LIB_SPEC \"-L~a/lib %{!static:-rpath=~a/lib \
-%{!static-libgcc:-rpath=~a/lib64 -rpath=~a/lib}} \" ~a"
-                          libc libc out out suffix))
-                 (("#define STARTFILE_SPEC.*$" line)
-                  (format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib\"
-#define STANDARD_STARTFILE_PREFIX_2 \"\"
-~a~%"
-                          libc line))))
-
-             ;; Don't retain a dependency on the build-time sed.
-             (substitute* "fixincludes/fixincl.x"
-               (("static char const sed_cmd_z\\[\\] =.*;")
-                "static char const sed_cmd_z[] = \"sed\";"))))
-
-         (alist-cons-after
-          'configure 'post-configure
-          (lambda _
-            ;; Don't store configure flags, to avoid retaining references to
-            ;; build-time dependencies---e.g., `--with-ppl=/nix/store/xxx'.
-            (substitute* "Makefile"
-              (("^TOPLEVEL_CONFIGURE_ARGUMENTS=(.*)$" _ rest)
-               "TOPLEVEL_CONFIGURE_ARGUMENTS=\n")))
-          (alist-replace 'install
-                         (lambda* (#:key outputs #:allow-other-keys)
-                           (zero?
-                            (system* "make"
-                                     ,(if stripped?
-                                          "install-strip"
-                                          "install"))))
-                         %standard-phases)))))
-
-     (properties `((gcc-libc . ,(assoc-ref inputs "libc"))))
-     (synopsis "The GNU Compiler Collection")
-     (description
-      "The GNU Compiler Collection includes compiler front ends for C, C++,
-Objective-C, Fortran, OpenMP for C/C++/Fortran, Java, and Ada, as well as
-libraries for these languages (libstdc++, libgcj, libgomp,...).
-
-GCC development is a part of the GNU Project, aiming to improve the compiler
-used in the GNU system including the GNU/Linux variant.")
-     (license gpl3+)
-     (home-page "http://gcc.gnu.org/"))))
-
 (define-public glibc
   (package
    (name "glibc")
@@ -508,13 +400,28 @@ used in the GNU system including the GNU/Linux variant.")
    ;; users should automatically pull Linux headers as well.
    (propagated-inputs `(("linux-headers" ,linux-libre-headers)))
 
+   ;; Store the locales separately (~100 MiB).  Note that "out" retains a
+   ;; reference to them anyway, so there's no space savings here.
+   ;; TODO: Eventually we may want to add a $LOCALE_ARCHIVE search path like
+   ;; Nixpkgs does.
+   (outputs '("out" "locales"))
+
    (arguments
     `(#:out-of-source? #t
       #:patches (list (assoc-ref %build-inputs "patch/ld.so.cache"))
       #:configure-flags
       (list "--enable-add-ons"
             "--sysconfdir=/etc"
-            "--localedir=/var/run/current-system/sw/lib/locale" ; XXX
+            (string-append "--localedir=" (assoc-ref %outputs "locales")
+                           "/share/locale")
+
+            ;; `--localedir' is not honored, so work around it.
+            ;; See <http://sourceware.org/ml/libc-alpha/2013-03/msg00093.html>.
+            (string-append "libc_cv_localedir="
+                           (assoc-ref %outputs "locales")
+                           "/share/locale")
+
+
             (string-append "--with-headers="
                            (assoc-ref %build-inputs "linux-headers")
                            "/include")
@@ -580,7 +487,12 @@ used in the GNU system including the GNU/Linux variant.")
                     (substitute* "libio/iopopen.c"
                       (("/bin/sh")
                        (string-append out "/bin/bash")))))
-                %standard-phases)))
+                (alist-cons-after
+                 'install 'install-locales
+                 (lambda _
+                   (zero? (system* "make" "localedata/install-locales")))
+                 %standard-phases))))
+
    (inputs `(("patch/ld.so.cache"
               ,(search-patch "glibc-no-ld-so-cache.patch"))
              ("static-bash" ,(static-package bash-light))))
@@ -683,7 +595,8 @@ identifier SYSTEM."
         #:implicit-inputs? #f
         ,@(substitute-keyword-arguments (package-arguments binutils)
             ((#:configure-flags cf)
-             `(list ,(string-append "--target=" (boot-triplet)))))))
+             `(cons ,(string-append "--target=" (boot-triplet))
+                    ,cf)))))
      (inputs %boot0-inputs))))
 
 (define gcc-boot0