container: Gracefully report mount errors in the child process.
[jackhill/guix/guix.git] / gnu / packages / autotools.scm
index c2e4637..de7f1f6 100644 (file)
@@ -1,6 +1,10 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
+;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
+;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2016 David Thompson <davet@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,7 +31,9 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
-  #:use-module (guix build-system trivial))
+  #:use-module (guix build-system trivial)
+  #:use-module (ice-9 match)
+  #:export (autoconf-wrapper))
 
 (define-public autoconf
   (package
@@ -42,7 +48,7 @@
        (base32
         "113nlmidxy9kjr45kg9x3ngar4951mvag1js2a3j8nxcz34wxsv4"))))
     (build-system gnu-build-system)
-    (inputs
+    (native-inputs
      `(("perl" ,perl)
        ("m4" ,m4)))
     ;; XXX: testsuite: 209 and 279 failed. The latter is an impurity. It
@@ -59,13 +65,38 @@ scripts are self-contained and portable, freeing the user from needing to
 know anything about Autoconf or M4.")
     (license gpl3+))) ; some files are under GPLv2+
 
-(define-public autoconf-wrapper
-  ;; An Autoconf wrapper that generates `configure' scripts that use our
-  ;; own Bash instead of /bin/sh in shebangs.  For that reason, it
-  ;; should only be used internally---users should not end up
-  ;; distributing `configure' files with a system-specific shebang.
+(define-public autoconf-2.68
+  (package (inherit autoconf)
+    (version "2.68")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "mirror://gnu/autoconf/autoconf-"
+                          version ".tar.xz"))
+      (sha256
+       (base32
+        "1fjm21k2na07f3vasf288a0zx66lbv0hd3l9bvv3q8p62s3pg569"))))))
+
+(define-public autoconf-2.64
+  ;; As of GDB 7.8, GDB is still developed using this version of Autoconf.
+  (package (inherit autoconf)
+    (version "2.64")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "mirror://gnu/autoconf/autoconf-"
+                          version ".tar.xz"))
+      (sha256
+       (base32
+        "0j3jdjpf5ly39dlp0bg70h72nzqr059k0x8iqxvaxf106chpgn9j"))))))
+
+
+(define* (autoconf-wrapper #:optional (autoconf autoconf))
+  "Return an wrapper around AUTOCONF that generates `configure' scripts that
+use our own Bash instead of /bin/sh in shebangs.  For that reason, it should
+only be used internally---users should not end up distributing `configure'
+files with a system-specific shebang."
   (package (inherit autoconf)
-    (location (source-properties->location (current-source-location)))
     (name (string-append (package-name autoconf) "-wrapper"))
     (build-system trivial-build-system)
     (inputs `(("guile"
@@ -129,27 +160,73 @@ exec ~a --no-auto-compile \"$0\" \"$@\"
                 port)))
            (chmod (string-append bin "/autoconf") #o555)))))))
 
+(define-public autoconf-archive
+  (package
+    (name "autoconf-archive")
+    (version "2016.03.20")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "mirror://gnu/autoconf-archive/autoconf-archive-"
+                          version ".tar.xz"))
+      (sha256
+       (base32
+        "0dz4fnc723jqn3by22ds5fys7g31apzm1r9allldvva0yvzjxyw8"))))
+    (build-system gnu-build-system)
+    (home-page "https://www.gnu.org/software/autoconf-archive")
+    (synopsis "Collection of freely reusable Autoconf macros")
+    (description
+     "Autoconf Archive is a collection of over 450 new macros for Autoconf,
+greatly expanding the domain of its functionality.  These macros have been
+contributed as free software by the community.")
+    (license gpl3+)))
+
+(define-public autobuild
+  (package
+    (name "autobuild")
+    (version "5.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://savannah/autobuild/autobuild-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0gv7g61ja9q9zg1m30k4snqwwy1kq7b4df6sb7d2qra7kbdq8af1"))))
+    (build-system gnu-build-system)
+    (inputs `(("perl" ,perl)))
+    (synopsis "Process generated build logs")
+    (description "Autobuild is a package that processes build logs generated
+when building software.  Autobuild is primarily focused on packages using
+Autoconf and Automake, but can be used with other build systems too.
+Autobuild generates an HTML summary file, containing links to each build log.
+The summary includes project name, version, build hostname, host type (cross
+compile aware), date of build, and indication of success or failure.  The
+output is indexed in many ways to simplify browsing.")
+    (home-page "http://josefsson.org/autobuild/")
+    (license gpl3+)))
+
 (define-public automake
   (package
     (name "automake")
-    (version "1.14.1")
+    (version "1.15")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/automake/automake-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0s86rzdayj1licgj35q0mnynv5xa8f4p32m36blc5jk9id5z1d59"))
+               "0dl6vfi2lzz8alnklwxzfz624b95hb1ipjvd3mk177flmddcf24r"))
              (patches
-              (list (search-patch "automake-skip-amhello-tests.patch")))))
+              (search-patches "automake-regexp-syntax.patch"
+                              "automake-skip-amhello-tests.patch"))))
     (build-system gnu-build-system)
-    (inputs
-     `(("autoconf" ,autoconf-wrapper)
+    (native-inputs
+     `(("autoconf" ,(autoconf-wrapper))
        ("perl" ,perl)))
     (native-search-paths
      (list (search-path-specification
             (variable "ACLOCAL_PATH")
-            (directories '("share/aclocal")))))
+            (files '("share/aclocal")))))
     (arguments
      '(#:modules ((guix build gnu-build-system)
                   (guix build utils)
@@ -209,52 +286,47 @@ Makefile, simplifying the entire process for the developer.")
 (define-public libtool
   (package
     (name "libtool")
-    (version "2.4.2")
+    (version "2.4.6")
     (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://gnu/libtool/libtool-"
-                                 version ".tar.gz"))
-             (sha256
-              (base32
-               "0649qfpzkswgcj9vqkkr9rn4nlcx80faxpyqscy2k1x9c94f93dk"))
-             (patches
-              (list (search-patch "libtool-skip-tests.patch")
-                    (search-patch "libtool-skip-tests-for-mips.patch")))))
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/libtool/libtool-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "0vxj52zm709125gwv9qqlw02silj8bnjnh4y07arrz60r31ai1vw"))
+              (patches (search-patches "libtool-skip-tests2.patch"))))
     (build-system gnu-build-system)
+    (propagated-inputs `(("m4" ,m4)))
     (native-inputs `(("m4" ,m4)
-                     ("perl" ,perl)))
-
-    ;; Separate binaries from the rest.  During bootstrap, only ltdl is
-    ;; used; not depending on the binaries allows us to avoid retaining
-    ;; a reference to the bootstrap bash.
-    (outputs '("bin"                         ; libtoolize, libtool, etc.
-               "out"))                       ; libltdl.so, ltdl.h, etc.
+                     ("perl" ,perl)
+                     ("automake" ,automake)      ;some tests rely on 'aclocal'
+                     ("autoconf" ,(autoconf-wrapper)))) ;others on 'autom4te'
 
     (arguments
-     (if (%current-target-system)
-         '()                            ; no `check' phase when cross-building
-         '(#:phases (alist-cons-before
-                     'check 'pre-check
-                     (lambda* (#:key inputs #:allow-other-keys)
-                       ;; Run the test suite in parallel, if possible.
-                       (let ((ncores
-                              (cond
-                               ((getenv "NIX_BUILD_CORES")
-                                =>
-                                (lambda (n)
-                                  (if (zero? (string->number n))
-                                      (number->string (current-processor-count))
-                                      n)))
-                               (else "1"))))
-                         (setenv "TESTSUITEFLAGS"
-                                 (string-append "-j" ncores)))
+     `(;; Libltdl is provided as a separate package, so don't install it here.
+       #:configure-flags '("--disable-ltdl-install")
+
+       ;; XXX: There are test failures on mips64el-linux starting from 2.4.4:
+       ;; <http://hydra.gnu.org/build/181662>.
+       #:tests? ,(not (string-prefix? "mips64"
+                                      (or (%current-target-system)
+                                          (%current-system))))
+
+       #:phases (alist-cons-before
+                 'check 'pre-check
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   ;; Run the test suite in parallel, if possible.
+                   (setenv "TESTSUITEFLAGS"
+                           (string-append
+                            "-j"
+                            (number->string (parallel-job-count))))
 
-                       ;; Path references to /bin/sh.
-                       (let ((bash (assoc-ref inputs "bash")))
-                         (substitute* "tests/testsuite"
-                           (("/bin/sh")
-                            (string-append bash "/bin/bash")))))
-                     %standard-phases))))
+                   ;; Path references to /bin/sh.
+                   (let ((bash (assoc-ref inputs "bash")))
+                     (substitute* "tests/testsuite"
+                       (("/bin/sh")
+                        (string-append bash "/bin/bash")))))
+                 %standard-phases)))
     (synopsis "Generic shared library support tools")
     (description
      "GNU Libtool helps in the creation and use of shared libraries, by
@@ -262,3 +334,32 @@ presenting a single consistent, portable interface that hides the usual
 complexity of working with shared libraries across platforms.")
     (license gpl3+)
     (home-page "http://www.gnu.org/software/libtool/")))
+
+(define-public libltdl
+  ;; This is a libltdl package separate from the libtool package.  This is
+  ;; useful because, unlike libtool, it has zero extra dependencies (making it
+  ;; readily usable during bootstrap), and it builds very quickly since
+  ;; Libtool's extensive test suite isn't run.
+  (package
+    (name "libltdl")
+    (version "2.4.6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/libtool/libtool-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "0vxj52zm709125gwv9qqlw02silj8bnjnh4y07arrz60r31ai1vw"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--enable-ltdl-install") ;really install it
+       #:phases (alist-cons-before
+                 'configure 'change-directory
+                 (lambda _
+                   (chdir "libltdl"))
+                 %standard-phases)))
+
+    (synopsis "System-independent dlopen wrapper of GNU libtool")
+    (description (package-description libtool))
+    (home-page (package-home-page libtool))
+    (license lgpl2.1+)))