;;; 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.
;;;
#: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
(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
"http://www.gnu.org/software/autoconf/")
(synopsis "Create source code configuration scripts")
(description
- "GNU Autoconf is an extensible package of M4 macros that produce
-shell scripts to automatically configure software source code
-packages. These scripts can adapt the packages to many kinds of
-UNIX-like systems without manual user intervention. Autoconf
-creates a configuration script for a package from a template
-file that lists the operating system features that the package
-can use, in the form of M4 macro calls.")
+ "Autoconf offers the developer a robust set of M4 macros which expand
+into shell code to test the features of Unix-like systems and to adapt
+automatically their software package to these systems. The resulting shell
+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"
(use-modules (guix build utils))
(let ((result (apply system* ,autoconf
(cdr (command-line)))))
- (if (and (zero? result)
- (file-exists? "configure")
- (not (file-exists? "/bin/sh")))
- (begin
- (patch-shebang "configure")
- #t)
- (exit (status:exit-val result)))))
+ (when (and (file-exists? "configure")
+ (not (file-exists? "/bin/sh")))
+ ;; Patch regardless of RESULT, because `autoconf
+ ;; -Werror' can both create a `configure' file and
+ ;; return a non-zero exit code.
+ (patch-shebang "configure"))
+ (exit (status:exit-val result))))
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.13.1")
+ (version "1.15")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/automake/automake-"
version ".tar.xz"))
(sha256
(base32
- "12yi1bzkipi7qdmkdy77pazljsa9z7q66hi6c4rq73p7hbv6rkbf"))))
+ "0dl6vfi2lzz8alnklwxzfz624b95hb1ipjvd3mk177flmddcf24r"))
+ (patches
+ (search-patches "automake-regexp-syntax.patch"
+ "automake-skip-amhello-tests.patch"))))
(build-system gnu-build-system)
- (inputs
- `(("autoconf" ,autoconf-wrapper)
- ("perl" ,perl)
- ("patch/skip-amhello"
- ,(search-patch "automake-skip-amhello-tests.patch"))))
+ (native-inputs
+ `(("autoconf" ,(autoconf-wrapper))
+ ("perl" ,perl)))
(native-search-paths
(list (search-path-specification
(variable "ACLOCAL_PATH")
- (directories '("share/aclocal")))))
+ (files '("share/aclocal")))))
(arguments
- '(#:patches (list (assoc-ref %build-inputs "patch/skip-amhello"))
- #:modules ((guix build gnu-build-system)
+ '(#:modules ((guix build gnu-build-system)
(guix build utils)
(srfi srfi-1)
(srfi srfi-26)
(home-page "http://www.gnu.org/software/automake/")
(synopsis "Making GNU standards-compliant Makefiles")
(description
- "GNU Automake is a tool for automatically generating
-`Makefile.in' files compliant with the GNU Coding
-Standards. Automake requires the use of Autoconf.")
+ "Automake the part of the GNU build system for producing
+standards-compliant Makefiles. Build requirements are entered in an
+intuitive format and then Automake works with Autoconf to produce a robust
+Makefile, simplifying the entire process for the developer.")
(license gpl2+))) ; some files are under GPLv3+
(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"))))
+ (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
- `(#:patches (list (assoc-ref %build-inputs "patch/skip-tests"))
+ `(;; 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.
- (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)))
+ (setenv "TESTSUITEFLAGS"
+ (string-append
+ "-j"
+ (number->string (parallel-job-count))))
;; Path references to /bin/sh.
(let ((bash (assoc-ref inputs "bash")))
(("/bin/sh")
(string-append bash "/bin/bash")))))
%standard-phases)))
- (inputs `(("patch/skip-tests"
- ,(search-patch "libtool-skip-tests.patch"))))
(synopsis "Generic shared library support tools")
(description
- "GNU libtool is a generic library support script. Libtool hides the
-complexity of using shared libraries behind a consistent, portable interface.
-
-To use libtool, add the new generic library building commands to your
-Makefile, Makefile.in, or Makefile.am. See the documentation for
-details.")
+ "GNU Libtool helps in the creation and use of shared libraries, by
+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+)))