diff options
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/packages/base.scm | 45 | ||||
-rw-r--r-- | gnu/packages/bootstrap.scm | 1 | ||||
-rw-r--r-- | gnu/packages/cross-base.scm | 243 | ||||
-rw-r--r-- | gnu/packages/curl.scm | 13 | ||||
-rw-r--r-- | gnu/packages/gcc.scm | 6 | ||||
-rw-r--r-- | gnu/packages/linux.scm | 25 | ||||
-rw-r--r-- | gnu/packages/multiprecision.scm | 15 | ||||
-rw-r--r-- | gnu/packages/openldap.scm | 16 | ||||
-rw-r--r-- | gnu/packages/patches/gcc-cross-environment-variables.patch | 24 | ||||
-rw-r--r-- | gnu/packages/wget.scm | 7 |
10 files changed, 331 insertions, 64 deletions
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 92b94dc035..606e59b851 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -89,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 @@ -264,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) @@ -343,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 @@ -368,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.)") @@ -396,13 +400,28 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.") ;; 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") @@ -468,7 +487,12 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.") (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)))) @@ -571,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 diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm index ffe1ec6528..82a8db614f 100644 --- a/gnu/packages/bootstrap.scm +++ b/gnu/packages/bootstrap.scm @@ -135,6 +135,7 @@ check whether everything is alright." "Return the name of Glibc's dynamic linker for SYSTEM." (cond ((string=? system "x86_64-linux") "/lib/ld-linux-x86-64.so.2") ((string=? system "i686-linux") "/lib/ld-linux.so.2") + ((string=? system "mips64el-linux") "/lib/ld.so.1") (else (error "dynamic linker name not known for this system" system)))) diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm new file mode 100644 index 0000000000..69dc9f5b0b --- /dev/null +++ b/gnu/packages/cross-base.scm @@ -0,0 +1,243 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages cross-base) + #:use-module (guix licenses) + #:use-module (gnu packages) + #:use-module (gnu packages base) + #:use-module (gnu packages linux) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu) + #:use-module (guix build-system trivial) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:use-module (ice-9 match)) + +(define (cross p target) + (package (inherit p) + (location (source-properties->location (current-source-location))) + (name (string-append (package-name p) "-cross-" target)) + (arguments + (substitute-keyword-arguments (package-arguments p) + ((#:configure-flags flags) + `(cons ,(string-append "--target=" target) + ,flags)))))) + +(define cross-binutils + (cut cross binutils <>)) + +(define* (cross-gcc target + #:optional (xbinutils (cross-binutils target)) libc) + "Return a cross-compiler for TARGET, where TARGET is a GNU triplet. Use +XBINUTILS as the associated cross-Binutils. If LIBC is false, then build a +GCC that does not target a libc; otherwise, target that libc." + (define args + ;; Get the arguments as if we were building for TARGET. In particular, we + ;; want `glibc-dynamic-linker' to return the right thing. + (parameterize ((%current-system (gnu-triplet->nix-system target))) + (package-arguments gcc-4.7))) + + (package (inherit gcc-4.7) + (name (string-append "gcc-cross-" + (if libc "" "sans-libc-") + target)) + (arguments + `(#:implicit-inputs? #f + #:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 regex) + (srfi srfi-1) + (srfi srfi-26)) + #:patches (list (assoc-ref %build-inputs "patch/cross-env-vars")) + + ,@(substitute-keyword-arguments args + ((#:configure-flags flags) + `(append (list ,(string-append "--target=" target) + ,@(if libc + '() + `( ;; Disable features not needed at this stage. + "--disable-shared" "--enable-static" + + ;; Disable C++ because libstdc++'s + ;; configure script otherwise fails with + ;; "Link tests are not allowed after + ;; GCC_NO_EXECUTABLES." + "--enable-languages=c" + + "--disable-threads" ; libgcc, would need libc + "--disable-libmudflap" + "--disable-libgomp" + "--disable-libssp" + "--disable-libquadmath" + "--disable-decimal-float" ; would need libc + ))) + + ,(if libc + flags + `(remove (cut string-match "--enable-languages.*" <>) + ,flags)))) + ((#:make-flags flags) + (if libc + `(let ((libc (assoc-ref %build-inputs "libc"))) + ;; FLAGS_FOR_TARGET are needed for the target libraries to + ;; receive the -Bxxx for the startfiles. + (cons (string-append "FLAGS_FOR_TARGET=-B" libc "/lib") + ,flags)) + flags)) + ((#:phases phases) + (let ((phases + `(alist-cons-after + 'install 'make-cross-binutils-visible + (lambda* (#:key outputs inputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (libexec (string-append out "/libexec/gcc/" + ,target)) + (binutils (string-append + (assoc-ref inputs "binutils-cross") + "/bin/" ,target "-"))) + (for-each (lambda (file) + (symlink (string-append binutils file) + (string-append libexec "/" + file))) + '("as" "ld" "nm")) + #t)) + ,phases))) + (if libc + `(alist-cons-before + 'configure 'set-cross-path + (lambda* (#:key inputs #:allow-other-keys) + ;; Add the cross Linux headers to CROSS_CPATH, and remove + ;; them from CPATH. + (let ((libc (assoc-ref inputs "libc")) + (linux (assoc-ref inputs + "libc/cross-linux-headers"))) + (define (cross? x) + ;; Return #t if X is a cross-libc or cross Linux. + (or (string-prefix? libc x) + (string-prefix? linux x))) + + (setenv "CROSS_CPATH" + (string-append libc "/include:" + linux "/include")) + (setenv "CROSS_LIBRARY_PATH" + (string-append libc "/lib")) + + (let ((cpath (search-path-as-string->list + (getenv "CPATH"))) + (libpath (search-path-as-string->list + (getenv "LIBRARY_PATH")))) + (setenv "CPATH" + (list->search-path-as-string + (remove cross? cpath) ":")) + (setenv "LIBRARY_PATH" + (list->search-path-as-string + (remove cross? libpath) ":")) + #t))) + ,phases) + phases))) + ((#:strip-binaries? _) + ;; Disable stripping as this can break binaries, with object files + ;; of libgcc.a showing up as having an unknown architecture. See + ;; <http://lists.fedoraproject.org/pipermail/arm/2010-August/000663.html> + ;; for instance. + #f)))) + (inputs + `(("patch/cross-env-vars" + ,(search-patch "gcc-cross-environment-variables.patch")) + + ("binutils-cross" ,xbinutils) + + ;; Call it differently so that the builder can check whether the "libc" + ;; input is #f. + ("libc-native" ,@(assoc-ref %final-inputs "libc")) + + ;; Remaining inputs. + ,@(let ((inputs (append (package-inputs gcc-4.7) + (alist-delete "libc" %final-inputs)))) + (if libc + `(("libc" ,libc) + ,@inputs) + inputs)))))) + +(define* (cross-libc target + #:optional + (xgcc (cross-gcc target)) + (xbinutils (cross-binutils target))) + "Return a libc cross-built for TARGET, a GNU triplet. Use XGCC and +XBINUTILS and the cross tool chain." + (define xlinux-headers + (package (inherit linux-libre-headers) + (name (string-append (package-name linux-libre-headers) + "-cross-" target)) + (arguments + (substitute-keyword-arguments (package-arguments linux-libre-headers) + ((#:phases phases) + `(alist-replace + 'build + (lambda _ + (setenv "ARCH" ,(system->linux-architecture target)) + (format #t "`ARCH' set to `~a' (cross compiling)~%" (getenv "ARCH")) + + (and (zero? (system* "make" "defconfig")) + (zero? (system* "make" "mrproper" "headers_check")))) + ,phases)))) + (inputs `(("cross-gcc" ,xgcc) + ("cross-binutils" ,xbinutils) + ,@(package-inputs linux-libre-headers))))) + + (package (inherit glibc) + (name (string-append "glibc-cross-" target)) + (arguments + (substitute-keyword-arguments + `(#:strip-binaries? #f ; disable stripping (see above) + ,@(package-arguments glibc)) + ((#:configure-flags flags) + `(cons ,(string-append "--host=" target) + ,flags)) + ((#:phases phases) + `(alist-cons-before + 'configure 'set-cross-linux-headers-path + (lambda* (#:key inputs #:allow-other-keys) + (let ((linux (assoc-ref inputs "cross-linux-headers"))) + (setenv "CROSS_CPATH" + (string-append linux "/include")) + #t)) + ,phases)))) + (propagated-inputs `(("cross-linux-headers" ,xlinux-headers))) + (inputs `(("cross-gcc" ,xgcc) + ("cross-binutils" ,xbinutils) + ,@(package-inputs glibc))))) + + +;;; +;;; Concrete cross toolchains. +;;; + +(define-public xgcc-mips64el + (let ((triplet "mips64el-linux-gnu")) + (cross-gcc triplet + (cross-binutils triplet) + (cross-libc triplet)))) + +;; (define-public xgcc-armel +;; (let ((triplet "armel-linux-gnueabi")) +;; (cross-gcc triplet +;; (cross-binutils triplet) +;; (cross-libc triplet)))) diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm index 00fd0f3232..4f5d96087e 100644 --- a/gnu/packages/curl.scm +++ b/gnu/packages/curl.scm @@ -55,18 +55,7 @@ ("pkg-config" ,pkg-config) ("zlib" ,zlib))) (arguments - `(#:configure-flags '("--with-gnutls" "--with-gssapi") - #:phases - (alist-replace - 'unpack - (lambda* (#:key #:allow-other-keys #:rest args) - (let ((unpack (assoc-ref %standard-phases 'unpack))) - (apply unpack args) - ;; The following patch-shebang phase will replace perl - ;; by the correct path. - (substitute* "tests/runtests.pl" - (("#!/usr/bin/env perl") "#!/usr/bin/perl")))) - %standard-phases))) + `(#:configure-flags '("--with-gnutls" "--with-gssapi"))) (synopsis "curl, command line tool for transferring data with URL syntax") (description "curl is a command line tool for transferring data with URL syntax, diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 116c1859a9..a26dc24a4f 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -64,8 +64,8 @@ #:make-flags (let ((libc (assoc-ref %build-inputs "libc"))) `(,@(if libc - (list (string-append "LDFLAGS_FOR_BUILD=" - "-L" libc "/lib " + (list (string-append "LDFLAGS_FOR_TARGET=" + "-B" libc "/lib " "-Wl,-dynamic-linker " "-Wl," libc ,(glibc-dynamic-linker))) @@ -101,7 +101,7 @@ ;; 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~%" +%{!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\" diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index b97315580b..b687e363f6 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -31,18 +31,25 @@ #:use-module (guix download) #:use-module (guix build-system gnu)) +(define-public (system->linux-architecture arch) + "Return the Linux architecture name for ARCH, a Guix system name such as +\"x86_64-linux\"." + (let ((arch (car (string-split arch #\-)))) + (cond ((string=? arch "i686") "i386") + ((string-prefix? "mips" arch) "mips") + ((string-prefix? "arm" arch) "arm") + (else arch)))) + (define-public linux-libre-headers (let* ((version* "3.3.8") (build-phase - '(lambda* (#:key system #:allow-other-keys) - (let ((arch (car (string-split system #\-)))) - (setenv "ARCH" - (cond ((string=? arch "i686") "i386") - (else arch))) - (format #t "`ARCH' set to `~a'~%" (getenv "ARCH"))) + (lambda (arch) + `(lambda _ + (setenv "ARCH" ,(system->linux-architecture arch)) + (format #t "`ARCH' set to `~a'~%" (getenv "ARCH")) - (and (zero? (system* "make" "defconfig")) - (zero? (system* "make" "mrproper" "headers_check"))))) + (and (zero? (system* "make" "defconfig")) + (zero? (system* "make" "mrproper" "headers_check")))))) (install-phase `(lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) @@ -73,7 +80,7 @@ (guix build utils) (srfi srfi-1)) #:phases (alist-replace - 'build ,build-phase + 'build ,(build-phase (%current-system)) (alist-replace 'install ,install-phase (alist-delete 'configure %standard-phases))) diff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scm index 7778552b40..acff875db1 100644 --- a/gnu/packages/multiprecision.scm +++ b/gnu/packages/multiprecision.scm @@ -27,18 +27,15 @@ (define-public gmp (package (name "gmp") - (version "5.1.0") + (version "5.1.1") (source (origin (method url-fetch) (uri - ;; Note: this version is not available from GNU mirrors - ;; because it was made with an Automake affected by - ;; CVE-2012-3386. - (string-append "ftp://ftp.gmplib.org/pub/gmp-" - version "/gmp-" version ".tar.bz2")) + (string-append "mirror://gnu/gmp/gmp-" + version ".tar.xz")) (sha256 (base32 - "15n7xxgasbxdch8ii8z9ic6fxc2ysk3q8iavf55abjp5iylspnfz")))) + "1hili06lcf0clg5qfvz7knm6pmj6ab54yhsvskp1mdny5xw4vmjb")))) (build-system gnu-build-system) (native-inputs `(("m4" ,m4))) (arguments `(#:configure-flags @@ -73,13 +70,13 @@ faster algorithms.") (define-public mpfr (package (name "mpfr") - (version "3.1.1") + (version "3.1.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/mpfr/mpfr-" version ".tar.xz")) (sha256 (base32 - "0ym1ylcq803n52qrggxqmkz66gbn8ncc3ybawal31v5y5p1srma9")))) + "0fs501qi8l523gs3cpy4jjcnvwxggyfbklcys80wq236xx3hz79r")))) (build-system gnu-build-system) (propagated-inputs `(("gmp" ,gmp))) ; <mpfr.h> refers to <gmp.h> (synopsis "GNU MPFR, a library for multiple-precision floating-point diff --git a/gnu/packages/openldap.scm b/gnu/packages/openldap.scm index d2525a6310..a4a28ccf1b 100644 --- a/gnu/packages/openldap.scm +++ b/gnu/packages/openldap.scm @@ -55,7 +55,7 @@ ("libtool" ,libtool "bin") ("zlib" ,zlib))) (arguments - `(#:parallel-tests? #f + `(#:tests? #f #:phases (alist-replace 'configure @@ -63,19 +63,7 @@ (let ((configure (assoc-ref %standard-phases 'configure))) (apply configure args) (copy-file (which "libtool") "libtool"))) - (alist-replace - 'check - (lambda* (#:key #:allow-other-keys #:rest args) - (let ((check (assoc-ref %standard-phases 'check))) - (for-each (lambda (f) - (substitute* (string-append "tests/scripts/" f) - (("/bin/rm") "rm"))) - '("all" "its-all" "passwd-search" "sql-all" "test027-emptydn")) - ;; disable especially finicky tests - (delete-file "tests/scripts/test058-syncrepl-asymmetric") - (delete-file "tests/scripts/test061-syncreplication-initiation") - (apply check args))) - %standard-phases)))) + %standard-phases))) (synopsis "openldap, an implementation of the Lightweight Directory Access Protocol") (description "OpenLDAP is a free implementation of the Lightweight Directory Access Protocol.") diff --git a/gnu/packages/patches/gcc-cross-environment-variables.patch b/gnu/packages/patches/gcc-cross-environment-variables.patch new file mode 100644 index 0000000000..30a07ec3db --- /dev/null +++ b/gnu/packages/patches/gcc-cross-environment-variables.patch @@ -0,0 +1,24 @@ +Search path environment variables for cross-compilers. See the discussion +at <http://gcc.gnu.org/ml/gcc/2013-02/msg00124.html>. + +--- gcc-4.7.2/gcc/incpath.c 2012-01-27 00:34:58.000000000 +0100 ++++ gcc-4.7.2/gcc/incpath.c 2013-02-12 10:11:27.000000000 +0100 +@@ -452,7 +452,7 @@ register_include_chains (cpp_reader *pfi + + /* CPATH and language-dependent environment variables may add to the + include chain. */ +- add_env_var_paths ("CPATH", BRACKET); ++ add_env_var_paths ("CROSS_CPATH", BRACKET); + add_env_var_paths (lang_env_vars[idx], SYSTEM); + + target_c_incpath.extra_pre_includes (sysroot, iprefix, stdinc); + +--- gcc-4.7.2/gcc/system.h 2012-02-17 00:16:28.000000000 +0100 ++++ gcc-4.7.2/gcc/system.h 2013-02-12 10:22:17.000000000 +0100 +@@ -1023,4 +1023,6 @@ helper_const_non_const_cast (const char + #define DEBUG_VARIABLE + #endif + ++#define LIBRARY_PATH_ENV "CROSS_LIBRARY_PATH" ++ + #endif /* ! GCC_SYSTEM_H */ diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm index ea31a1e70d..1f2f53c97f 100644 --- a/gnu/packages/wget.scm +++ b/gnu/packages/wget.scm @@ -43,13 +43,6 @@ `(("gnutls" ,gnutls) ("perl" ,perl) ("gettext" ,guix:gettext))) - (arguments - '(#:phases - (alist-cons-before 'build 'patch-/usr/bin/env - (lambda _ - (for-each patch-shebang - '("doc/texi2pod.pl" "tests/run-px"))) - %standard-phases))) (home-page "http://www.gnu.org/software/wget/") (synopsis "GNU Wget, a tool for retrieving files using HTTP, HTTPS, and FTP") |