X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/27783023993f9272ce422868d14529159c4a5218..bdb1a3385df8b16ecdbded9142ed12c40b2a5954:/gnu/packages/autotools.scm diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm index 99ca52730e..33e1905a25 100644 --- a/gnu/packages/autotools.scm +++ b/gnu/packages/autotools.scm @@ -1,15 +1,17 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012 Nikita Karetnikov -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2020 Ludovic Courtès +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2020, 2021 Ludovic Courtès ;;; Copyright © 2015 Mathieu Lirzin ;;; Copyright © 2014 Manolis Fragkiskos Ragkousis ;;; Copyright © 2015, 2017, 2018 Mark H Weaver ;;; Copyright © 2016 David Thompson -;;; Copyright © 2017 ng0 -;;; Copyright © 2017, 2019 Efraim Flashner +;;; Copyright © 2017 Nikita +;;; Copyright © 2017, 2019, 2021 Efraim Flashner ;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; Copyright © 2018 Ricardo Wurmus ;;; Copyright © 2019 Pierre-Moana Levesque +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen +;;; Copyright © 2021 Maxim Cournoyer ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,12 +39,13 @@ #:use-module (guix utils) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) #:use-module (ice-9 match) #:export (autoconf-wrapper)) -(define-public autoconf +(define-public autoconf-2.69 (package (name "autoconf") (version "2.69") @@ -55,12 +58,43 @@ (base32 "113nlmidxy9kjr45kg9x3ngar4951mvag1js2a3j8nxcz34wxsv4")))) (build-system gnu-build-system) + (inputs + ;; TODO: remove `if' in the next rebuild cycle. + (if (%current-target-system) + `(("bash" ,bash-minimal) + ("perl" ,perl) + ("m4" ,m4)) + '())) (native-inputs `(("perl" ,perl) ("m4" ,m4))) - ;; XXX: testsuite: 209 and 279 failed. The latter is an impurity. It - ;; should use our own "cpp" instead of "/lib/cpp". - (arguments `(#:tests? #f)) + (arguments + `(;; XXX: testsuite: 209 and 279 failed. The latter is an impurity. It + ;; should use our own "cpp" instead of "/lib/cpp". + #:tests? #f + ,@(if (%current-target-system) + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'patch-non-shebang-references + (lambda* (#:key build inputs outputs #:allow-other-keys) + ;; `patch-shebangs' patches shebangs only, and the Perl + ;; scripts use a re-exec feature that references the + ;; build hosts' perl. Also, BASH and M4 store references + ;; hide in the scripts. + (let ((bash (assoc-ref inputs "bash")) + (m4 (assoc-ref inputs "m4")) + (perl (assoc-ref inputs "perl")) + (out (assoc-ref outputs "out")) + (store-directory (%store-directory))) + (substitute* (find-files (string-append out "/bin")) + (((string-append store-directory "/[^/]*-bash-[^/]*")) + bash) + (((string-append store-directory "/[^/]*-m4-[^/]*")) + m4) + (((string-append store-directory "/[^/]*-perl-[^/]*")) + perl)) + #t))))) + '()))) (home-page "https://www.gnu.org/software/autoconf/") (synopsis "Create source code configuration scripts") (description @@ -71,6 +105,40 @@ 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+ +;; This is the renaissance version, which is not widely supported yet. +(define-public autoconf-2.71 + (package + (inherit autoconf-2.69) + (version "2.71") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/autoconf/autoconf-" + version ".tar.xz")) + (sha256 + (base32 + "197sl23irn6s9pd54rxj5vcp5y8dv65jb9yfqgr2g56cxg7q6k7i")))) + (arguments + (substitute-keyword-arguments (package-arguments autoconf-2.69) + ((#:tests? _ #f) + ;; FIXME: To run the test suite, fix all the instances where scripts + ;; generates "#! /bin/sh" shebangs. + #f) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-before 'check 'prepare-tests + (lambda _ + (for-each patch-shebang + (append (find-files "tests" + (lambda (file stat) + (executable-file? file))) + (find-files "bin" + (lambda (file stat) + (executable-file? file))))) + #t)))))))) + +(define-public autoconf autoconf-2.69) + (define-public autoconf-2.68 (package (inherit autoconf) (version "2.68") @@ -199,13 +267,15 @@ exec ~a --no-auto-compile \"$0\" \"$@\" ;; Do not show it in the UI since it's meant for internal use. (properties '((hidden? . #t))))) +;; Only use this package when autoconf is not usable, +;; see . (define-public autoconf-wrapper (make-autoconf-wrapper autoconf)) (define-public autoconf-archive (package (name "autoconf-archive") - (version "2019.01.06") + (version "2021.02.19") (source (origin (method url-fetch) @@ -213,7 +283,7 @@ exec ~a --no-auto-compile \"$0\" \"$@\" version ".tar.xz")) (sha256 (base32 - "0gqya7nf4j5k98dkky0c3bnr0paciya91vkqazg7knlq621mq68p")))) + "1gcwqspcxiygnyk02smsk8ivzs9r69ji38izxzzsijyx52fyp9p8")))) (build-system gnu-build-system) (home-page "https://www.gnu.org/software/autoconf-archive/") (synopsis "Collection of freely reusable Autoconf macros") @@ -261,6 +331,13 @@ output is indexed in many ways to simplify browsing.") (patches (search-patches "automake-skip-amhello-tests.patch")))) (build-system gnu-build-system) + (inputs + ;; TODO: remove `if' in the next rebuild cycle. + (if (%current-target-system) + `(("autoconf" ,autoconf-wrapper) + ("bash" ,bash-minimal) + ("perl" ,perl)) + '())) (native-inputs `(("autoconf" ,autoconf-wrapper) ("perl" ,perl))) @@ -269,7 +346,7 @@ output is indexed in many ways to simplify browsing.") (variable "ACLOCAL_PATH") (files '("share/aclocal"))))) (arguments - '(#:modules ((guix build gnu-build-system) + `(#:modules ((guix build gnu-build-system) (guix build utils) (srfi srfi-1) (srfi srfi-26) @@ -298,6 +375,28 @@ output is indexed in many ways to simplify browsing.") (string-append "exit 77\n" all "\n"))) #t)) + ,@(if (%current-target-system) + `((add-after 'install 'patch-non-shebang-references + (lambda* (#:key build inputs outputs #:allow-other-keys) + ;; `patch-shebangs' patches shebangs only, and the Perl + ;; scripts use a re-exec feature that references the + ;; build hosts' perl. Also, AUTOCONF and BASH store + ;; references hide in the scripts. + (let ((autoconf (assoc-ref inputs "autoconf")) + (bash (assoc-ref inputs "bash")) + (perl (assoc-ref inputs "perl")) + (out (assoc-ref outputs "out")) + (store-directory (%store-directory))) + (substitute* (find-files (string-append out "/bin")) + (((string-append store-directory "/[^/]*-autoconf-[^/]*")) + autoconf) + (((string-append store-directory "/[^/]*-bash-[^/]*")) + bash) + (((string-append store-directory "/[^/]*-perl-[^/]*")) + perl)) + #t)))) + '()) + ;; Files like `install-sh', `mdate.sh', etc. must use ;; #!/bin/sh, otherwise users could leak erroneous shebangs ;; in the wild. See for an @@ -397,6 +496,53 @@ complexity of working with shared libraries across platforms.") (license gpl3+) (home-page "https://www.gnu.org/software/libtool/"))) +(define-public config + (let ((revision "1") + (commit "c8ddc8472f8efcadafc1ef53ca1d863415fddd5f")) + (package + (name "config") + (version (git-version "0.0.0" revision commit)) ;no release tag + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.gnu.org/git/config.git/") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0x6ycvkmmhhhag97wsf0pw8n5fvh12rjvrck90rz17my4ys16qwv")))) + (build-system gnu-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'patch-/bin/sh + (lambda _ + (substitute* "testsuite/config-guess.sh" + (("#!/bin/sh") + (string-append "#!" (which "sh")))) + #t)) + (replace 'build + (lambda _ + (invoke "make" "manpages"))) + (delete 'configure) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (man1 (string-append out "/share/man/man1"))) + (install-file "config.guess" bin) + (install-file "config.sub" bin) + (install-file "doc/config.guess.1" man1) + (install-file "doc/config.sub.1" man1) + #t)))))) + (native-inputs + `(("help2man" ,help2man))) + (home-page "https://savannah.gnu.org/projects/config") + (synopsis "Ubiquitous config.guess and config.sub scripts") + (description "The `config.guess' script tries to guess a canonical system triple, +and `config.sub' validates and canonicalizes. These are used as part of +configuration in nearly all GNU packages (and many others).") + (license gpl2+)))) + (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