diff --git a/doc/guix.texi b/doc/guix.texi index 97d797c13f..6703c2756c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -6405,9 +6405,11 @@ tool. This build system runs @code{scons} to build the package, the package. Additional flags to be passed to @code{scons} can be specified with the -@code{#:scons-flags} parameter. The version of Python used to run SCons -can be specified by selecting the appropriate SCons package with the -@code{#:scons} parameter. +@code{#:scons-flags} parameter. The default build and install targets +can be overridden with @code{#:build-targets} and +@code{#:install-targets} respectively. The version of Python used to +run SCons can be specified by selecting the appropriate SCons package +with the @code{#:scons} parameter. @end defvr @defvr {Scheme Variable} haskell-build-system diff --git a/gnu/local.mk b/gnu/local.mk index 9f5bce3d2b..e46d74be64 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -261,6 +261,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/imagemagick.scm \ %D%/packages/inklingreader.scm \ %D%/packages/inkscape.scm \ + %D%/packages/installers.scm \ %D%/packages/ipfs.scm \ %D%/packages/irc.scm \ %D%/packages/iso-codes.scm \ @@ -793,7 +794,6 @@ dist_patch_DATA = \ %D%/packages/patches/emacs-dired-toggle-sudo-emacs-26.patch \ %D%/packages/patches/emacs-exec-path.patch \ %D%/packages/patches/emacs-fix-scheme-indent-function.patch \ - %D%/packages/patches/emacs-helm-org-ql.patch \ %D%/packages/patches/emacs-json-reformat-fix-tests.patch \ %D%/packages/patches/emacs-highlight-stages-add-gexp.patch \ %D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch \ @@ -977,6 +977,7 @@ dist_patch_DATA = \ %D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch \ %D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch \ %D%/packages/patches/id3lib-CVE-2007-4460.patch \ + %D%/packages/patches/id3lib-UTF16-writing-bug.patch \ %D%/packages/patches/ilmbase-fix-tests.patch \ %D%/packages/patches/ilmbase-openexr-pkg-config.patch \ %D%/packages/patches/inkscape-poppler-0.76.patch \ @@ -1148,6 +1149,7 @@ dist_patch_DATA = \ %D%/packages/patches/nfs-utils-missing-headers.patch \ %D%/packages/patches/ngircd-handle-zombies.patch \ %D%/packages/patches/nm-plugin-path.patch \ + %D%/packages/patches/nsis-env-passthru.patch \ %D%/packages/patches/nss-freebl-stubs.patch \ %D%/packages/patches/nss-increase-test-timeout.patch \ %D%/packages/patches/nss-pkgconfig.patch \ @@ -1188,7 +1190,6 @@ dist_patch_DATA = \ %D%/packages/patches/p7zip-CVE-2016-9296.patch \ %D%/packages/patches/p7zip-CVE-2017-17969.patch \ %D%/packages/patches/p7zip-remove-unused-code.patch \ - %D%/packages/patches/parted-glibc-compat.patch \ %D%/packages/patches/patchelf-page-size.patch \ %D%/packages/patches/patchelf-rework-for-arm.patch \ %D%/packages/patches/patchutils-test-perms.patch \ @@ -1330,7 +1331,6 @@ dist_patch_DATA = \ %D%/packages/patches/sooperlooper-build-with-wx-30.patch \ %D%/packages/patches/soundconverter-remove-gconf-dependency.patch \ %D%/packages/patches/steghide-fixes.patch \ - %D%/packages/patches/strace-ipc-tests.patch \ %D%/packages/patches/streamlink-update-test.patch \ %D%/packages/patches/stumpwm-fix-broken-read-one-line.patch \ %D%/packages/patches/supercollider-boost-1.70-build-fix.patch \ diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm index 527555abfc..26a6d23a8a 100644 --- a/gnu/packages/assembly.scm +++ b/gnu/packages/assembly.scm @@ -117,14 +117,14 @@ (define-public yasm (define-public lightning (package (name "lightning") - (version "2.1.2") + (version "2.1.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/lightning/lightning-" version ".tar.gz")) (sha256 (base32 - "0sbs2lm8b9in2m8d52zf0x9gpp40x6r7sl6sha92yq3pr78rwa4v")))) + "1jgxbq2cm51dzi3zhz38mmgwdcgs328mfl8iviw8dxn6dn36p1gd")))) (build-system gnu-build-system) (native-inputs `(("zlib" ,zlib))) (synopsis "Library for generating assembly code at runtime") diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 49ec474ffd..88f3b5eccd 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -1109,7 +1109,7 @@ (define-public g2reverb (define-public fluidsynth (package (name "fluidsynth") - (version "2.0.6") + (version "2.0.7") (source (origin (method git-fetch) (uri (git-reference @@ -1118,7 +1118,7 @@ (define-public fluidsynth (file-name (git-file-name name version)) (sha256 (base32 - "0nas9pp9r8rnziznxm65x2yzf1ryg98zr3946g0br3s38sjf8l3a")))) + "1h1dj3wmjwzny2hgr41k3p67w4kxvzn365kkqwyfd6yk0v3rahic")))) (build-system cmake-build-system) (arguments '(#:tests? #f ; no check target @@ -2771,22 +2771,14 @@ (define-public soxr (define-public twolame (package (name "twolame") - (version "0.3.13") + (version "0.4.0") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/twolame/twolame/" version "/twolame-" version ".tar.gz")) (sha256 - (base32 "0ahiqqng5pidwhj1wzph4vxxgxxgcfa3gl0gywipzx2ii7s35wwq")) - (modules '((guix build utils))) - ;; The tests break with Perl 5.24: - ;; https://github.com/njh/twolame/issues/21 - ;; TODO: Remove this snippet when upgrading twolame. - (snippet - '(begin - (substitute* "tests/test.pl" (("\\(@_\\)") "($_[0])")) - #t)))) + (base32 "0zf8sxqb02w07ah55b1y7ab643zmpbhn62spa9pqra0rc17l4dfc")))) (build-system gnu-build-system) (inputs `(("libsndfile" ,libsndfile))) diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index dab0bd39c3..6a48c08064 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -354,6 +354,25 @@ (define-public cxxtest and it supports a very flexible form of test discovery.") (license license:lgpl3+))) +(define-public doctest + (package + (name "doctest") + (version "2.3.5") + (home-page "https://github.com/onqtam/doctest") + (source (origin + (method git-fetch) + (uri (git-reference (url home-page) (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0rddlzhnv0f5036q0m0p019pismka7sx6x8cnzk65sk77b1dsbhg")))) + (build-system cmake-build-system) + (synopsis "C++ test framework") + (description + "doctest is a single-header testing framework for C++11 and later. It +has been designed to be fast, light and unintrusive.") + (license license:expat))) + (define-public go-gopkg.in-check.v1 (let ((commit "788fd78401277ebd861206a03c884797c6ec5541") (revision "1")) @@ -816,6 +835,22 @@ (define-public python-pytest-runner (define-public python2-pytest-runner (package-with-python2 python-pytest-runner)) +;; python-bleach 3.1.0 requires this ancient version of pytest-runner. +;; Remove once no longer needed. +(define-public python-pytest-runner-2 + (package/inherit + python-pytest-runner + (version "2.12.2") + (source (origin + (method url-fetch) + (uri (pypi-uri "pytest-runner" version)) + (sha256 + (base32 + "11ivjj9hfphkv4yfb2g74av4yy86y8gcbf7gbif0p1hcdfnxg3w6")))))) + +(define-public python2-pytest-runner-2 + (package-with-python2 python-pytest-runner-2)) + (define-public python-pytest-mock (package (name "python-pytest-mock") diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index fd98c80dc3..54746151ce 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -85,80 +85,80 @@ (define-module (gnu packages commencement) ;;; Code: (define mes-boot - (package-with-bootstrap-guile - (package - (inherit mes) - (name "mes-boot") - (version "0.19") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/mes/" - "mes-" version ".tar.gz")) - (sha256 - (base32 - "15h4yhaywdc0djpjlin2jz1kzahpqxfki0r0aav1qm9nxxmnp1l0")))) - (inputs '()) - (propagated-inputs '()) - (native-inputs - `(("mescc-tools" ,%bootstrap-mescc-tools) - ("nyacc-source" ,(package-source nyacc-0.86)) + (package + (inherit mes) + (name "mes-boot") + (version "0.19") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/mes/" + "mes-" version ".tar.gz")) + (sha256 + (base32 + "15h4yhaywdc0djpjlin2jz1kzahpqxfki0r0aav1qm9nxxmnp1l0")))) + (inputs '()) + (propagated-inputs '()) + (native-inputs + `(("mescc-tools" ,%bootstrap-mescc-tools) + ("nyacc-source" ,(bootstrap-origin + (package-source nyacc-0.86))) - ("coreutils" , %bootstrap-coreutils&co) - ("bootstrap-mes" ,%bootstrap-mes))) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:strip-binaries? #f ; binutil's strip b0rkes MesCC/M1/hex2 binaries - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'unpack-seeds - (lambda _ - (let ((nyacc-source (assoc-ref %build-inputs "nyacc-source")) - (bootstrap-mes (assoc-ref %build-inputs "bootstrap-mes"))) - (with-directory-excursion ".." - (mkdir-p "nyacc-source") - (invoke "tar" "--strip=1" "-C" "nyacc-source" "-xvf" nyacc-source) - (symlink (string-append bootstrap-mes "/share/mes/lib") "mes-seed")) - #t))) - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref %outputs "out"))) - (setenv "GUILE" "mes") - (setenv "GUILE_EFFECTIVE_VERSION" "2.2") - (setenv "GUILE_LOAD_PATH" "nyacc") - (symlink (string-append "../nyacc-source/module") "nyacc") - (invoke "bash" "configure.sh" - (string-append "--prefix=" out))))) - (replace 'build - (lambda _ - (let ((mes (assoc-ref %build-inputs "bootstrap-mes"))) - (setenv "MES_PREFIX" (string-append mes "/share/mes")) - (setenv "MES_ARENA" "100000000") - (setenv "MES_MAX_ARENA" "100000000") - (setenv "MES_STACK" "10000000") - (invoke "sh" "bootstrap.sh")))) - (replace 'check - (lambda _ - (setenv "DIFF" "sh scripts/diff.scm") - ;; fail fast tests - ;; (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/t") - ;; (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/63-struct-cell") - (invoke "sh" "check.sh"))) - (replace 'install - (lambda _ - (invoke "sh" "install.sh")))))) - (native-search-paths - ;; Use the language-specific variables rather than 'CPATH' because they - ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. - ;; The intent is to allow headers that are in the search path to be - ;; treated as "system headers" (headers exempt from warnings) just like - ;; the typical /usr/include headers on an FHS system. - (list (search-path-specification - (variable "C_INCLUDE_PATH") - (files '("share/mes/include"))) - (search-path-specification - (variable "LIBRARY_PATH") - (files '("share/mes/lib")))))))) + ("coreutils" , %bootstrap-coreutils&co) + ("bootstrap-mes" ,%bootstrap-mes))) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:strip-binaries? #f ; binutil's strip b0rkes MesCC/M1/hex2 binaries + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'unpack-seeds + (lambda _ + (let ((nyacc-source (assoc-ref %build-inputs "nyacc-source")) + (bootstrap-mes (assoc-ref %build-inputs "bootstrap-mes"))) + (with-directory-excursion ".." + (mkdir-p "nyacc-source") + (invoke "tar" "--strip=1" "-C" "nyacc-source" "-xvf" nyacc-source) + (symlink (string-append bootstrap-mes "/share/mes/lib") "mes-seed")) + #t))) + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref %outputs "out"))) + (setenv "GUILE" "mes") + (setenv "GUILE_EFFECTIVE_VERSION" "2.2") + (setenv "GUILE_LOAD_PATH" "nyacc") + (symlink (string-append "../nyacc-source/module") "nyacc") + (invoke "bash" "configure.sh" + (string-append "--prefix=" out))))) + (replace 'build + (lambda _ + (let ((mes (assoc-ref %build-inputs "bootstrap-mes"))) + (setenv "MES_PREFIX" (string-append mes "/share/mes")) + (setenv "MES_ARENA" "100000000") + (setenv "MES_MAX_ARENA" "100000000") + (setenv "MES_STACK" "10000000") + (invoke "sh" "bootstrap.sh")))) + (replace 'check + (lambda _ + (setenv "DIFF" "sh scripts/diff.scm") + ;; fail fast tests + ;; (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/t") + ;; (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/63-struct-cell") + (invoke "sh" "check.sh"))) + (replace 'install + (lambda _ + (invoke "sh" "install.sh")))))) + (native-search-paths + ;; Use the language-specific variables rather than 'CPATH' because they + ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. + ;; The intent is to allow headers that are in the search path to be + ;; treated as "system headers" (headers exempt from warnings) just like + ;; the typical /usr/include headers on an FHS system. + (list (search-path-specification + (variable "C_INCLUDE_PATH") + (files '("share/mes/include"))) + (search-path-specification + (variable "LIBRARY_PATH") + (files '("share/mes/lib"))))))) (define tcc-boot0 ;; Pristine tcc cannot be built by MesCC, we are keeping a delta of 11 @@ -170,348 +170,349 @@ (define tcc-boot0 (let ((version "0.9.26") (revision "6") (commit "c004e9a34fb026bb44d211ab98bb768e79900eef")) - (package-with-bootstrap-guile - (package - (inherit tcc) - (name "tcc-boot0") - (version (string-append version "-" revision "." (string-take commit 7))) - (source (origin - (method url-fetch) - (uri (string-append "https://gitlab.com/janneke/tinycc" - "/-/archive/" commit - "/tinycc-" commit ".tar.gz")) - (sha256 - (base32 - "1hmzn1pq0x22ppd80hyrn5qzqq94mxd0ychzj6vrr2vnj2frjv5b")))) - (build-system gnu-build-system) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (native-inputs - `(("mes" ,mes-boot) - ("mescc-tools" ,%bootstrap-mescc-tools) - ("nyacc-source" ,(package-source nyacc-0.86)) + (package + (inherit tcc) + (name "tcc-boot0") + (version (string-append version "-" revision "." (string-take commit 7))) + (source (origin + (method url-fetch) + (uri (string-append "https://gitlab.com/janneke/tinycc" + "/-/archive/" commit + "/tinycc-" commit ".tar.gz")) + (sha256 + (base32 + "1hmzn1pq0x22ppd80hyrn5qzqq94mxd0ychzj6vrr2vnj2frjv5b")))) + (build-system gnu-build-system) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs + `(("mes" ,mes-boot) + ("mescc-tools" ,%bootstrap-mescc-tools) + ("nyacc-source" ,(bootstrap-origin + (package-source nyacc-0.86))) - ("coreutils" , %bootstrap-coreutils&co) - ("bootstrap-mes" ,%bootstrap-mes))) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:strip-binaries? #f ; binutil's strip b0rkes MesCC/M1/hex2 binaries - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'unpack-seeds - (lambda* (#:key outputs #:allow-other-keys) - (let* ((coreutils (assoc-ref %build-inputs "coreutils")) - (nyacc-source (assoc-ref %build-inputs "nyacc-source")) - (bootstrap-mes (assoc-ref %build-inputs "bootstrap-mes"))) - (setenv "PATH" (string-append - coreutils "/bin")) - (format (current-error-port) "PATH=~s\n" (getenv "PATH")) - (with-directory-excursion ".." - (mkdir-p "nyacc-source") - (invoke "tar" "--strip=1" "-C" "nyacc-source" - "-xvf" nyacc-source) - (symlink (string-append bootstrap-mes "/share/mes/lib") "mes-seed")) - #t))) - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref %outputs "out")) - (dir (with-directory-excursion ".." (getcwd))) - (coreutils (assoc-ref %build-inputs "coreutils")) - (mes (assoc-ref %build-inputs "mes")) - (mescc-tools (assoc-ref %build-inputs "mescc-tools")) - (libc (assoc-ref %build-inputs "libc")) - (interpreter (if libc - ;; also for x86_64-linux, we are still on i686-linux - (string-append libc ,(glibc-dynamic-linker "i686-linux")) - (string-append mes "/lib/mes-loader")))) - (setenv "PATH" (string-append - coreutils "/bin" - ":" mes "/bin" - ":" mescc-tools "/bin")) - (format (current-error-port) "PATH=~s\n" (getenv "PATH")) + ("coreutils" , %bootstrap-coreutils&co) + ("bootstrap-mes" ,%bootstrap-mes))) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:strip-binaries? #f ; binutil's strip b0rkes MesCC/M1/hex2 binaries + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'unpack-seeds + (lambda* (#:key outputs #:allow-other-keys) + (let* ((coreutils (assoc-ref %build-inputs "coreutils")) + (nyacc-source (assoc-ref %build-inputs "nyacc-source")) + (bootstrap-mes (assoc-ref %build-inputs "bootstrap-mes"))) + (setenv "PATH" (string-append + coreutils "/bin")) + (format (current-error-port) "PATH=~s\n" (getenv "PATH")) + (with-directory-excursion ".." + (mkdir-p "nyacc-source") + (invoke "tar" "--strip=1" "-C" "nyacc-source" + "-xvf" nyacc-source) + (symlink (string-append bootstrap-mes "/share/mes/lib") "mes-seed")) + #t))) + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref %outputs "out")) + (dir (with-directory-excursion ".." (getcwd))) + (coreutils (assoc-ref %build-inputs "coreutils")) + (mes (assoc-ref %build-inputs "mes")) + (mescc-tools (assoc-ref %build-inputs "mescc-tools")) + (libc (assoc-ref %build-inputs "libc")) + (interpreter (if libc + ;; also for x86_64-linux, we are still on i686-linux + (string-append libc ,(glibc-dynamic-linker "i686-linux")) + (string-append mes "/lib/mes-loader")))) + (setenv "PATH" (string-append + coreutils "/bin" + ":" mes "/bin" + ":" mescc-tools "/bin")) + (format (current-error-port) "PATH=~s\n" (getenv "PATH")) - (setenv "PREFIX" out) - (symlink (string-append mes "/share/mes") "mes") - (symlink (string-append "../nyacc-source/module") "nyacc") - (setenv "MES_PREFIX" "mes") - (setenv "MES_ARENA" "100000000") - (setenv "MES_MAX_ARENA" "100000000") - (setenv "MES_STACK" "10000000") - (setenv "MES" "mes") - (setenv "GUILE_LOAD_PATH" "nyacc") - (invoke "sh" "configure" - "--prefix=$PREFIX" - (string-append "--elfinterp=" interpreter) - "--crtprefix=." - "--tccdir=.")))) - (replace 'build - (lambda _ - (substitute* "bootstrap.sh" - (("^ cmp") "# cmp")) - (invoke "sh" "bootstrap.sh"))) - (replace 'check - (lambda _ - (setenv "DIFF" "diff.scm") - (setenv "OBJDUMP" "true") - ;; fail fast tests - ;; (invoke "sh" "test.sh" "mes/scaffold/tests/30-strlen") - ;; (invoke "sh" "-x" "test.sh" "mes/scaffold/tinycc/00_assignment") - (setenv "TCC" "./tcc") - (invoke "sh" "check.sh"))) - (replace 'install - (lambda _ - (invoke "sh" "install.sh")))))) - (native-search-paths - ;; Use the language-specific variables rather than 'CPATH' because they - ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. - ;; The intent is to allow headers that are in the search path to be - ;; treated as "system headers" (headers exempt from warnings) just like - ;; the typical /usr/include headers on an FHS system. - (list (search-path-specification - (variable "C_INCLUDE_PATH") - (files '("include"))) - (search-path-specification - (variable "LIBRARY_PATH") - (files '("lib"))))))))) + (setenv "PREFIX" out) + (symlink (string-append mes "/share/mes") "mes") + (symlink (string-append "../nyacc-source/module") "nyacc") + (setenv "MES_PREFIX" "mes") + (setenv "MES_ARENA" "100000000") + (setenv "MES_MAX_ARENA" "100000000") + (setenv "MES_STACK" "10000000") + (setenv "MES" "mes") + (setenv "GUILE_LOAD_PATH" "nyacc") + (invoke "sh" "configure" + "--prefix=$PREFIX" + (string-append "--elfinterp=" interpreter) + "--crtprefix=." + "--tccdir=.")))) + (replace 'build + (lambda _ + (substitute* "bootstrap.sh" + (("^ cmp") "# cmp")) + (invoke "sh" "bootstrap.sh"))) + (replace 'check + (lambda _ + (setenv "DIFF" "diff.scm") + (setenv "OBJDUMP" "true") + ;; fail fast tests + ;; (invoke "sh" "test.sh" "mes/scaffold/tests/30-strlen") + ;; (invoke "sh" "-x" "test.sh" "mes/scaffold/tinycc/00_assignment") + (setenv "TCC" "./tcc") + (invoke "sh" "check.sh"))) + (replace 'install + (lambda _ + (invoke "sh" "install.sh")))))) + (native-search-paths + ;; Use the language-specific variables rather than 'CPATH' because they + ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. + ;; The intent is to allow headers that are in the search path to be + ;; treated as "system headers" (headers exempt from warnings) just like + ;; the typical /usr/include headers on an FHS system. + (list (search-path-specification + (variable "C_INCLUDE_PATH") + (files '("include"))) + (search-path-specification + (variable "LIBRARY_PATH") + (files '("lib")))))))) (define tcc-boot - (package-with-bootstrap-guile - (package - (inherit tcc-boot0) - (name "tcc-boot") - (version "0.9.27") - (source (origin + (package + (inherit tcc-boot0) + (name "tcc-boot") + (version "0.9.27") + (source (bootstrap-origin + (origin (inherit (package-source tcc)) - (patches (search-patches "tcc-boot-0.9.27.patch")))) - (build-system gnu-build-system) - (inputs '()) - (propagated-inputs '()) - (native-inputs - `(("mes" ,mes-boot) - ("tcc" ,tcc-boot0) + (patches (search-patches "tcc-boot-0.9.27.patch"))))) + (build-system gnu-build-system) + (inputs '()) + (propagated-inputs '()) + (native-inputs + `(("mes" ,mes-boot) + ("tcc" ,tcc-boot0) - ("coreutils" , %bootstrap-coreutils&co))) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:strip-binaries? #f ; binutil's strip b0rkes MesCC/M1/hex2 - ; binaries, tcc-boot also comes with - ; MesCC/M1/hex2-built binaries - #:phases - (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref %outputs "out")) - (coreutils (assoc-ref %build-inputs "coreutils")) - (mes (assoc-ref %build-inputs "mes")) - (tcc (assoc-ref %build-inputs "tcc")) - (libc (assoc-ref %build-inputs "libc")) - (interpreter (if libc - ;; also for x86_64-linux, we are still on i686-linux - (string-append libc ,(glibc-dynamic-linker "i686-linux")) - (string-append mes "/lib/mes-loader")))) - ;; unpack - (setenv "PATH" (string-append - coreutils "/bin" - ":" tcc "/bin")) - (format (current-error-port) "PATH=~s\n" (getenv "PATH")) - (invoke "sh" "configure" - (string-append "--cc=tcc") - (string-append "--cpu=i386") - (string-append "--prefix=" out) - (string-append "--elfinterp=" interpreter) - (string-append "--crtprefix=" tcc "/lib") - (string-append "--sysincludepaths=" tcc "/include") - (string-append "--libpaths=" tcc "/lib"))))) - (replace 'build - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref %outputs "out")) - (mes (assoc-ref %build-inputs "mes")) - (tcc (assoc-ref %build-inputs "tcc")) - (libc (assoc-ref %build-inputs "libc")) - (interpreter (if libc - ;; also for x86_64-linux, we are still on i686-linux - (string-append libc ,(glibc-dynamic-linker "i686-linux")) - (string-append mes "/lib/mes-loader")))) - (invoke "tcc" - "-vvv" - "-D" "BOOTSTRAP=1" - "-D" "ONE_SOURCE=1" - "-D" "TCC_TARGET_I386=1" - "-D" "CONFIG_TCC_STATIC=1" - "-D" "CONFIG_USE_LIBGCC=1" - "-D" (string-append "CONFIG_TCCDIR=\"" out "/lib/tcc\"") - "-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out "/lib:{B}/lib:.\"") - "-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out "/lib:{B}/lib:.\"") - "-D" (string-append "CONFIG_TCC_ELFINTERP=\"" interpreter "\"") - "-D" (string-append "CONFIG_TCC_LIBPATHS=\"" tcc "/lib:{B}/lib:.\"") - "-D" (string-append "CONFIG_TCC_SYSINCLUDEPATHS=\"" tcc "/include" ":/include:{B}/include\"") - "-D" (string-append "TCC_LIBGCC=\"" tcc "/lib/libc.a\"") - "-o" "tcc" - "tcc.c")))) - (replace 'check - (lambda _ - ;; FIXME: add sensible check target (without depending on make) - ;; ./check.sh ? - (= 1 (status:exit-val (system* "./tcc" "--help"))))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref %outputs "out")) - (tcc (assoc-ref %build-inputs "tcc"))) - (mkdir-p (string-append out "/bin")) - (copy-file "tcc" (string-append out "/bin/tcc")) - (mkdir-p (string-append out "/lib/tcc")) - (copy-recursively (string-append tcc "/include") - (string-append out "/include")) - (copy-recursively (string-append tcc "/lib") - (string-append out "/lib")) - (invoke "tcc" "-D" "TCC_TARGET_I386=1" "-c" "-o" "libtcc1.o" "lib/libtcc1.c") - (invoke "tcc" "-ar" "rc" "libtcc1.a" "libtcc1.o") - (copy-file "libtcc1.a" (string-append out "/lib/libtcc1.a")) - (delete-file (string-append out "/lib/tcc/libtcc1.a")) - (copy-file "libtcc1.a" (string-append out "/lib/tcc/libtcc1.a")) - #t))))))))) + ("coreutils" , %bootstrap-coreutils&co))) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + + ;; Binutils' 'strip' b0rkes MesCC/M1/hex2 binaries, tcc-boot also comes + ;; with MesCC/M1/hex2-built binaries. + #:strip-binaries? #f + + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref %outputs "out")) + (coreutils (assoc-ref %build-inputs "coreutils")) + (mes (assoc-ref %build-inputs "mes")) + (tcc (assoc-ref %build-inputs "tcc")) + (libc (assoc-ref %build-inputs "libc")) + (interpreter (if libc + ;; also for x86_64-linux, we are still on i686-linux + (string-append libc ,(glibc-dynamic-linker "i686-linux")) + (string-append mes "/lib/mes-loader")))) + ;; unpack + (setenv "PATH" (string-append + coreutils "/bin" + ":" tcc "/bin")) + (format (current-error-port) "PATH=~s\n" (getenv "PATH")) + (invoke "sh" "configure" + (string-append "--cc=tcc") + (string-append "--cpu=i386") + (string-append "--prefix=" out) + (string-append "--elfinterp=" interpreter) + (string-append "--crtprefix=" tcc "/lib") + (string-append "--sysincludepaths=" tcc "/include") + (string-append "--libpaths=" tcc "/lib"))))) + (replace 'build + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref %outputs "out")) + (mes (assoc-ref %build-inputs "mes")) + (tcc (assoc-ref %build-inputs "tcc")) + (libc (assoc-ref %build-inputs "libc")) + (interpreter (if libc + ;; also for x86_64-linux, we are still on i686-linux + (string-append libc ,(glibc-dynamic-linker "i686-linux")) + (string-append mes "/lib/mes-loader")))) + (invoke "tcc" + "-vvv" + "-D" "BOOTSTRAP=1" + "-D" "ONE_SOURCE=1" + "-D" "TCC_TARGET_I386=1" + "-D" "CONFIG_TCC_STATIC=1" + "-D" "CONFIG_USE_LIBGCC=1" + "-D" (string-append "CONFIG_TCCDIR=\"" out "/lib/tcc\"") + "-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out "/lib:{B}/lib:.\"") + "-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out + "/lib:{B}/lib:.\"") + "-D" (string-append "CONFIG_TCC_ELFINTERP=\"" interpreter "\"") + "-D" (string-append "CONFIG_TCC_LIBPATHS=\"" tcc "/lib:{B}/lib:.\"") + "-D" (string-append "CONFIG_TCC_SYSINCLUDEPATHS=\"" tcc "/include" ":/include:{B}/include\"") + "-D" (string-append "TCC_LIBGCC=\"" tcc "/lib/libc.a\"") + "-o" "tcc" + "tcc.c")))) + (replace 'check + (lambda _ + ;; FIXME: add sensible check target (without depending on make) + ;; ./check.sh ? + (= 1 (status:exit-val (system* "./tcc" "--help"))))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref %outputs "out")) + (tcc (assoc-ref %build-inputs "tcc"))) + (mkdir-p (string-append out "/bin")) + (copy-file "tcc" (string-append out "/bin/tcc")) + (mkdir-p (string-append out "/lib/tcc")) + (copy-recursively (string-append tcc "/include") + (string-append out "/include")) + (copy-recursively (string-append tcc "/lib") + (string-append out "/lib")) + (invoke "tcc" "-D" "TCC_TARGET_I386=1" "-c" "-o" "libtcc1.o" "lib/libtcc1.c") + (invoke "tcc" "-ar" "rc" "libtcc1.a" "libtcc1.o") + (copy-file "libtcc1.a" (string-append out "/lib/libtcc1.a")) + (delete-file (string-append out "/lib/tcc/libtcc1.a")) + (copy-file "libtcc1.a" (string-append out "/lib/tcc/libtcc1.a")) + #t)))))))) (define make-mesboot0 - (package-with-bootstrap-guile - (package - (inherit gnu-make) - (name "make-mesboot0") - (version "3.80") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/make/make-" - version ".tar.gz")) - (sha256 - (base32 - "1pb7fb7fqf9wz9najm85qdma1xhxzf1rhj5gwrlzdsz2zm0hpcv4")))) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (native-inputs `(("tcc" ,tcc-boot) + (package + (inherit gnu-make) + (name "make-mesboot0") + (version "3.80") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/make/make-" + version ".tar.gz")) + (sha256 + (base32 + "1pb7fb7fqf9wz9najm85qdma1xhxzf1rhj5gwrlzdsz2zm0hpcv4")))) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs `(("tcc" ,tcc-boot) - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co))) - (arguments - `(#:implicit-inputs? #f - #:tests? #f ; check depends on perl - #:guile ,%bootstrap-guile - #:configure-flags `("CC=tcc -DO_RDONLY=0" - "LD=tcc" - "--disable-nls") - #:phases - (modify-phases %standard-phases - (add-after 'configure 'configure-fixup - (lambda _ - (substitute* "build.sh" - (("^REMOTE=.*") "REMOTE=stub\n") - (("^extras=.*") "extras=getloadavg.c\n")) - (substitute* "make.h" - (("^extern long int lseek.*" all) (string-append "// " all))) - #t)) - (delete 'patch-generated-file-shebangs) ; no perl - (replace 'build - (lambda _ - (invoke "sh" "./build.sh"))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin"))) - (install-file "make" bin) - #t))))))))) + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co))) + (arguments + `(#:implicit-inputs? #f + #:tests? #f ; check depends on perl + #:guile ,%bootstrap-guile + #:configure-flags `("CC=tcc -DO_RDONLY=0" + "LD=tcc" + "--disable-nls") + #:phases + (modify-phases %standard-phases + (add-after 'configure 'configure-fixup + (lambda _ + (substitute* "build.sh" + (("^REMOTE=.*") "REMOTE=stub\n") + (("^extras=.*") "extras=getloadavg.c\n")) + (substitute* "make.h" + (("^extern long int lseek.*" all) (string-append "// " all))) + #t)) + (delete 'patch-generated-file-shebangs) ; no perl + (replace 'build + (lambda _ + (invoke "sh" "./build.sh"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (install-file "make" bin) + #t)))))))) (define diffutils-mesboot - (package-with-bootstrap-guile - (package - (inherit diffutils) - (name "diffutils-mesboot") - (version "2.7") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/diffutils/diffutils-" - version ".tar.gz")) - (sha256 - (base32 - "1mirn5i825bn5w7rh6mgn0r8aj9xqanav95dwcl1b8sn82f4iwnm")))) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (native-inputs `(("mes" ,mes-boot) - ("tcc" ,tcc-boot) + (package + (inherit diffutils) + (name "diffutils-mesboot") + (version "2.7") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/diffutils/diffutils-" + version ".tar.gz")) + (sha256 + (base32 + "1mirn5i825bn5w7rh6mgn0r8aj9xqanav95dwcl1b8sn82f4iwnm")))) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs `(("mes" ,mes-boot) + ("tcc" ,tcc-boot) - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("make" ,make-mesboot0))) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:parallel-build? #f - #:tests? #f ; check is naive, also checks non-built PROGRAMS - #:strip-binaries? #f ; no strip yet - #:phases - (modify-phases %standard-phases - ;; diffutils-2.7 needs more traditional configure - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (bash (assoc-ref %build-inputs "bash"))) - (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) - (setenv "CC" "tcc") - (setenv "LD" "tcc") - (invoke "./configure" (string-append "--prefix=" out))))) - (add-before 'configure 'remove-diff3-sdiff - (lambda* (#:key outputs #:allow-other-keys) - (substitute* "Makefile.in" - (("PROGRAMS = .*" all) "PROGRAMS = cmp diff")) - #t)))))))) + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("make" ,make-mesboot0))) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:parallel-build? #f + #:tests? #f ; check is naive, also checks non-built PROGRAMS + #:strip-binaries? #f ; no strip yet + #:phases + (modify-phases %standard-phases + ;; diffutils-2.7 needs more traditional configure + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (bash (assoc-ref %build-inputs "bash"))) + (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) + (setenv "CC" "tcc") + (setenv "LD" "tcc") + (invoke "./configure" (string-append "--prefix=" out))))) + (add-before 'configure 'remove-diff3-sdiff + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "Makefile.in" + (("PROGRAMS = .*" all) "PROGRAMS = cmp diff")) + #t))))))) (define binutils-mesboot0 - (package-with-bootstrap-guile - (package - (inherit binutils) - (name "binutils-mesboot0") - (version "2.20.1a") - (source (origin + (package + (inherit binutils) + (name "binutils-mesboot0") + (version "2.20.1a") + (source (bootstrap-origin + (origin (method url-fetch) (uri (string-append "mirror://gnu/binutils/binutils-" version ".tar.bz2")) (patches (search-patches "binutils-boot-2.20.1a.patch")) (sha256 (base32 - "0r7dr0brfpchh5ic0z9r4yxqn4ybzmlh25sbp30cacqk8nb7rlvi")))) - (inputs '()) - (propagated-inputs '()) - (native-inputs `(("tcc" ,tcc-boot) + "0r7dr0brfpchh5ic0z9r4yxqn4ybzmlh25sbp30cacqk8nb7rlvi"))))) + (inputs '()) + (propagated-inputs '()) + (native-inputs `(("tcc" ,tcc-boot) - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("diffutils" ,diffutils-mesboot) - ("make" ,make-mesboot0))) - (supported-systems '("i686-linux" "x86_64-linux")) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:tests? #f ; runtest: command not found - #:parallel-build? #f - #:strip-binaries? #f ; no strip yet - #:configure-flags - (let ((cppflags (string-append " -D __GLIBC_MINOR__=6" - " -D MES_BOOTSTRAP=1")) - (bash (assoc-ref %build-inputs "bash"))) - `(,(string-append "CONFIG_SHELL=" bash "/bin/sh") - ,(string-append "CPPFLAGS=" cppflags) - "AR=tcc -ar" - "CXX=false" - "RANLIB=true" - ,(string-append "CC=tcc" cppflags) - "--disable-nls" - "--disable-shared" - "--disable-werror" - "--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - "--with-sysroot=/"))))))) + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("diffutils" ,diffutils-mesboot) + ("make" ,make-mesboot0))) + (supported-systems '("i686-linux" "x86_64-linux")) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:tests? #f ; runtest: command not found + #:parallel-build? #f + #:strip-binaries? #f ; no strip yet + #:configure-flags + (let ((cppflags (string-append " -D __GLIBC_MINOR__=6" + " -D MES_BOOTSTRAP=1")) + (bash (assoc-ref %build-inputs "bash"))) + `(,(string-append "CONFIG_SHELL=" bash "/bin/sh") + ,(string-append "CPPFLAGS=" cppflags) + "AR=tcc -ar" + "CXX=false" + "RANLIB=true" + ,(string-append "CC=tcc" cppflags) + "--disable-nls" + "--disable-shared" + "--disable-werror" + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + "--with-sysroot=/")))))) (define gcc-core-mesboot ;; Gcc-2.95.3 is the most recent GCC that is supported by what the Mes C @@ -519,12 +520,12 @@ (define gcc-core-mesboot ;; library, such as dir.h/struct DIR/readdir, locales, signals... Also, ;; with gcc-2.95.3, binutils-boot-2.20.1a and glibc-2.2.5 we found a GNU ;; toolchain triplet "that works". - (package-with-bootstrap-guile - (package - (inherit gcc) - (name "gcc-core-mesboot") - (version "2.95.3") - (source (origin + (package + (inherit gcc) + (name "gcc-core-mesboot") + (version "2.95.3") + (source (bootstrap-origin + (origin (method url-fetch) (uri (string-append "mirror://gnu/gcc/gcc-2.95.3/gcc-core-" version @@ -532,162 +533,161 @@ (define gcc-core-mesboot (patches (search-patches "gcc-boot-2.95.3.patch")) (sha256 (base32 - "1xvfy4pqhrd5v2cv8lzf63iqg92k09g6z9n2ah6ndd4h17k1x0an")))) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (native-inputs `(("binutils" ,binutils-mesboot0) - ("tcc" ,tcc-boot) + "1xvfy4pqhrd5v2cv8lzf63iqg92k09g6z9n2ah6ndd4h17k1x0an"))))) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs `(("binutils" ,binutils-mesboot0) + ("tcc" ,tcc-boot) - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("diffutils" ,diffutils-mesboot) - ("make" ,make-mesboot0))) - (outputs '("out")) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:tests? #f - #:parallel-build? #f - #:strip-binaries? #f - #:configure-flags - (let ((out (assoc-ref %outputs "out"))) - `("--enable-static" - "--disable-shared" - "--disable-werror" - "--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - ,(string-append "--prefix=" out))) - #:make-flags (list - "CC=tcc -static -D __GLIBC_MINOR__=6" - "OLDCC=tcc -static -D __GLIBC_MINOR__=6" - "CC_FOR_BUILD=tcc -static -D __GLIBC_MINOR__=6" - "AR=ar" - "RANLIB=ranlib" - (string-append "LIBGCC2_INCLUDES=-I " - (assoc-ref %build-inputs "tcc") - "/include") - "LANGUAGES=c" - (string-append "BOOT_LDFLAGS=" - " -B" (assoc-ref %build-inputs "tcc") - "/lib/")) - #:modules ((guix build gnu-build-system) - (guix build utils) - (srfi srfi-1)) - #:phases - (modify-phases %standard-phases - ;; gcc-2.95.3 needs more traditional configure - (add-before 'configure 'setenv - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (bash (assoc-ref %build-inputs "bash")) - (tcc (assoc-ref %build-inputs "tcc")) - (cppflags " -D __GLIBC_MINOR__=6")) - (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) - (setenv "CPPFLAGS" cppflags) - (setenv "CC" (string-append "tcc" cppflags)) - (setenv "CC_FOR_BUILD" (string-append "tcc" cppflags)) - (setenv "CPP" (string-append "tcc -E" cppflags)) - (with-output-to-file "config.cache" - (lambda _ - (display " + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("diffutils" ,diffutils-mesboot) + ("make" ,make-mesboot0))) + (outputs '("out")) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:tests? #f + #:parallel-build? #f + #:strip-binaries? #f + #:configure-flags + (let ((out (assoc-ref %outputs "out"))) + `("--enable-static" + "--disable-shared" + "--disable-werror" + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + ,(string-append "--prefix=" out))) + #:make-flags (list + "CC=tcc -static -D __GLIBC_MINOR__=6" + "OLDCC=tcc -static -D __GLIBC_MINOR__=6" + "CC_FOR_BUILD=tcc -static -D __GLIBC_MINOR__=6" + "AR=ar" + "RANLIB=ranlib" + (string-append "LIBGCC2_INCLUDES=-I " + (assoc-ref %build-inputs "tcc") + "/include") + "LANGUAGES=c" + (string-append "BOOT_LDFLAGS=" + " -B" (assoc-ref %build-inputs "tcc") + "/lib/")) + #:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-1)) + #:phases + (modify-phases %standard-phases + ;; gcc-2.95.3 needs more traditional configure + (add-before 'configure 'setenv + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (tcc (assoc-ref %build-inputs "tcc")) + (cppflags " -D __GLIBC_MINOR__=6")) + (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) + (setenv "CPPFLAGS" cppflags) + (setenv "CC" (string-append "tcc" cppflags)) + (setenv "CC_FOR_BUILD" (string-append "tcc" cppflags)) + (setenv "CPP" (string-append "tcc -E" cppflags)) + (with-output-to-file "config.cache" + (lambda _ + (display " ac_cv_c_float_format='IEEE (little-endian)' "))) - #t))) - (replace 'configure - (lambda* (#:key configure-flags #:allow-other-keys) - (format (current-error-port) - "running ./configure ~a\n" (string-join configure-flags)) - (apply invoke "./configure" configure-flags))) - (add-after 'configure 'remove-info - (lambda _ - ;; no info at this stage - (delete-file-recursively "texinfo") - (invoke "touch" "gcc/cpp.info" "gcc/gcc.info"))) - (add-after 'install 'install2 - (lambda* (#:key outputs #:allow-other-keys) - (let* ((tcc (assoc-ref %build-inputs "tcc")) - (tcc-lib (string-append tcc "/lib/x86-mes-gcc")) - (out (assoc-ref outputs "out")) - (gcc-dir (string-append - out "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3"))) - (mkdir-p "tmp") - (zero? (system (string-append "set -x; cd tmp && ar x ../gcc/libgcc2.a"))) - (zero? (system (string-append "set -x; cd tmp && ar r " gcc-dir "/libgcc.a *.o"))) - (copy-file "gcc/libgcc2.a" (string-append out "/lib/libgcc2.a")) - (copy-file (string-append tcc "/lib/libtcc1.a") - (string-append out "/lib/libtcc1.a")) - (invoke "ar" "r" (string-append gcc-dir "/libc.a") - (string-append tcc-lib "/libc+gnu.o") - (string-append tcc-lib "/libtcc1.o")) - (invoke "ar" "r" (string-append out "/lib/libc.a") - (string-append tcc-lib "/libc+gnu.o") - (string-append tcc-lib "/libtcc1.o")) - (invoke "ls" "-ltrF" gcc-dir) - (copy-recursively (string-append tcc "/include") - (string-append out "/include")) - #t)))))) - (native-search-paths - ;; Use the language-specific variables rather than 'CPATH' because they - ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. - ;; The intent is to allow headers that are in the search path to be - ;; treated as "system headers" (headers exempt from warnings) just like - ;; the typical /usr/include headers on an FHS system. - (list (search-path-specification - (variable "C_INCLUDE_PATH") - (files '("include" "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include"))) - (search-path-specification - (variable "LIBRARY_PATH") - (files '("lib")))))))) + #t))) + (replace 'configure + (lambda* (#:key configure-flags #:allow-other-keys) + (format (current-error-port) + "running ./configure ~a\n" (string-join configure-flags)) + (apply invoke "./configure" configure-flags))) + (add-after 'configure 'remove-info + (lambda _ + ;; no info at this stage + (delete-file-recursively "texinfo") + (invoke "touch" "gcc/cpp.info" "gcc/gcc.info"))) + (add-after 'install 'install2 + (lambda* (#:key outputs #:allow-other-keys) + (let* ((tcc (assoc-ref %build-inputs "tcc")) + (tcc-lib (string-append tcc "/lib/x86-mes-gcc")) + (out (assoc-ref outputs "out")) + (gcc-dir (string-append + out "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3"))) + (mkdir-p "tmp") + (zero? (system (string-append "set -x; cd tmp && ar x ../gcc/libgcc2.a"))) + (zero? (system (string-append "set -x; cd tmp && ar r " gcc-dir "/libgcc.a *.o"))) + (copy-file "gcc/libgcc2.a" (string-append out "/lib/libgcc2.a")) + (copy-file (string-append tcc "/lib/libtcc1.a") + (string-append out "/lib/libtcc1.a")) + (invoke "ar" "r" (string-append gcc-dir "/libc.a") + (string-append tcc-lib "/libc+gnu.o") + (string-append tcc-lib "/libtcc1.o")) + (invoke "ar" "r" (string-append out "/lib/libc.a") + (string-append tcc-lib "/libc+gnu.o") + (string-append tcc-lib "/libtcc1.o")) + (invoke "ls" "-ltrF" gcc-dir) + (copy-recursively (string-append tcc "/include") + (string-append out "/include")) + #t)))))) + (native-search-paths + ;; Use the language-specific variables rather than 'CPATH' because they + ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. + ;; The intent is to allow headers that are in the search path to be + ;; treated as "system headers" (headers exempt from warnings) just like + ;; the typical /usr/include headers on an FHS system. + (list (search-path-specification + (variable "C_INCLUDE_PATH") + (files '("include" "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include"))) + (search-path-specification + (variable "LIBRARY_PATH") + (files '("lib"))))))) (define mesboot-headers - (package-with-bootstrap-guile - (package - (inherit mes-boot) - (name "mesboot-headers") - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (native-inputs `(("coreutils" ,%bootstrap-coreutils&co) - ("headers" ,%bootstrap-linux-libre-headers))) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:tests? #f - #:strip-binaries? #f - #:phases - (modify-phases %standard-phases - (delete 'configure) - (delete 'build) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (include (string-append out "/include")) - (headers (assoc-ref %build-inputs "headers" ))) - (mkdir-p include) - (copy-recursively "include" out) - (copy-recursively headers out) - #t)))))) - (native-search-paths - ;; Use the language-specific variables rather than 'CPATH' because they - ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. - ;; The intent is to allow headers that are in the search path to be - ;; treated as "system headers" (headers exempt from warnings) just like - ;; the typical /usr/include headers on an FHS system. - (list (search-path-specification - (variable "C_INCLUDE_PATH") - (files '("include")))))))) + (package + (inherit mes-boot) + (name "mesboot-headers") + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs `(("coreutils" ,%bootstrap-coreutils&co) + ("headers" ,%bootstrap-linux-libre-headers))) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:tests? #f + #:strip-binaries? #f + #:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (include (string-append out "/include")) + (headers (assoc-ref %build-inputs "headers" ))) + (mkdir-p include) + (copy-recursively "include" out) + (copy-recursively headers out) + #t)))))) + (native-search-paths + ;; Use the language-specific variables rather than 'CPATH' because they + ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. + ;; The intent is to allow headers that are in the search path to be + ;; treated as "system headers" (headers exempt from warnings) just like + ;; the typical /usr/include headers on an FHS system. + (list (search-path-specification + (variable "C_INCLUDE_PATH") + (files '("include"))))))) (define glibc-mesboot0 ;; GNU C Library 2.2.5 is the most recent glibc that we managed to build ;; using gcc-2.95.3. Newer versions (2.3.x, 2.6, 2.1x) seem to need a newer ;; gcc. - (package-with-bootstrap-guile - (package - (inherit glibc) - (name "glibc-mesboot0") - (version "2.2.5") - (source (origin + (package + (inherit glibc) + (name "glibc-mesboot0") + (version "2.2.5") + (source (bootstrap-origin + (origin (method url-fetch) (uri (string-append "mirror://gnu/glibc/glibc-" version @@ -695,211 +695,208 @@ (define glibc-mesboot0 (patches (search-patches "glibc-boot-2.2.5.patch")) (sha256 (base32 - "1vl48i16gx6h68whjyhgnn1s57vqq32f9ygfa2fls7pdkbsqvp2q")))) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (native-inputs `(("binutils" ,binutils-mesboot0) - ("gcc" ,gcc-core-mesboot) + "1vl48i16gx6h68whjyhgnn1s57vqq32f9ygfa2fls7pdkbsqvp2q"))))) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs `(("binutils" ,binutils-mesboot0) + ("gcc" ,gcc-core-mesboot) - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("diffutils" ,diffutils-mesboot) - ("headers" ,mesboot-headers) - ("make" ,make-mesboot0))) - (outputs '("out")) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:tests? #f - #:strip-binaries? #f - #:parallel-build? #f ; gcc-2.95.3 ICEs on massively parallel builds - #:make-flags (list (string-append - "SHELL=" - (assoc-ref %build-inputs "bash") - "/bin/sh")) - #:configure-flags - (let ((out (assoc-ref %outputs "out")) - (headers (assoc-ref %build-inputs "headers"))) - (list - "--disable-shared" - "--enable-static" - "--disable-sanity-checks" - "--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - (string-append "--with-headers=" headers "/include") - "--enable-static-nss" - "--without-__thread" - "--without-cvs" - "--without-gd" - "--without-tls" - (string-append "--prefix=" out))) - #:phases - (modify-phases %standard-phases - (add-before 'configure 'setenv - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bash (assoc-ref %build-inputs "bash")) - (gcc (assoc-ref %build-inputs "gcc")) - (headers (assoc-ref %build-inputs "headers")) - (cppflags (string-append - ;;" -D __STDC__=1" - " -D MES_BOOTSTRAP=1" - " -D BOOTSTRAP_GLIBC=1")) - (cflags (string-append " -L " (getcwd)))) - (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) - (setenv "SHELL" (getenv "CONFIG_SHELL")) - (setenv "CPP" (string-append gcc "/bin/gcc -E " cppflags)) - (setenv "CC" (string-append gcc "/bin/gcc " cppflags cflags)) - #t))) - ;; glibc-2.2.5 needs a more classic invocation of configure - ;; configure: warning: CONFIG_SHELL=/gnu/store/…-bash-minimal-4.4.12/bin/bash: invalid host type - (replace 'configure - (lambda* (#:key configure-flags #:allow-other-keys) - (format (current-error-port) - "running ./configure ~a\n" (string-join configure-flags)) - (apply invoke "./configure" configure-flags)))))) - (native-search-paths - ;; Use the language-specific variables rather than 'CPATH' because they - ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. - ;; The intent is to allow headers that are in the search path to be - ;; treated as "system headers" (headers exempt from warnings) just like - ;; the typical /usr/include headers on an FHS system. - (list (search-path-specification - (variable "C_INCLUDE_PATH") - (files '("include"))) - (search-path-specification - (variable "CPLUS_INCLUDE_PATH") - (files '("include"))) - (search-path-specification - (variable "LIBRARY_PATH") - (files '("lib")))))))) + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("diffutils" ,diffutils-mesboot) + ("headers" ,mesboot-headers) + ("make" ,make-mesboot0))) + (outputs '("out")) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:tests? #f + #:strip-binaries? #f + #:parallel-build? #f ; gcc-2.95.3 ICEs on massively parallel builds + #:make-flags (list (string-append + "SHELL=" + (assoc-ref %build-inputs "bash") + "/bin/sh")) + #:configure-flags + (let ((out (assoc-ref %outputs "out")) + (headers (assoc-ref %build-inputs "headers"))) + (list + "--disable-shared" + "--enable-static" + "--disable-sanity-checks" + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + (string-append "--with-headers=" headers "/include") + "--enable-static-nss" + "--without-__thread" + "--without-cvs" + "--without-gd" + "--without-tls" + (string-append "--prefix=" out))) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'setenv + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (gcc (assoc-ref %build-inputs "gcc")) + (headers (assoc-ref %build-inputs "headers")) + (cppflags (string-append + ;;" -D __STDC__=1" + " -D MES_BOOTSTRAP=1" + " -D BOOTSTRAP_GLIBC=1")) + (cflags (string-append " -L " (getcwd)))) + (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) + (setenv "SHELL" (getenv "CONFIG_SHELL")) + (setenv "CPP" (string-append gcc "/bin/gcc -E " cppflags)) + (setenv "CC" (string-append gcc "/bin/gcc " cppflags cflags)) + #t))) + ;; glibc-2.2.5 needs a more classic invocation of configure + ;; configure: warning: CONFIG_SHELL=/gnu/store/…-bash-minimal-4.4.12/bin/bash: invalid host type + (replace 'configure + (lambda* (#:key configure-flags #:allow-other-keys) + (format (current-error-port) + "running ./configure ~a\n" (string-join configure-flags)) + (apply invoke "./configure" configure-flags)))))) + (native-search-paths + ;; Use the language-specific variables rather than 'CPATH' because they + ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. + ;; The intent is to allow headers that are in the search path to be + ;; treated as "system headers" (headers exempt from warnings) just like + ;; the typical /usr/include headers on an FHS system. + (list (search-path-specification + (variable "C_INCLUDE_PATH") + (files '("include"))) + (search-path-specification + (variable "CPLUS_INCLUDE_PATH") + (files '("include"))) + (search-path-specification + (variable "LIBRARY_PATH") + (files '("lib"))))))) (define gcc-mesboot0 - (package-with-bootstrap-guile - (package - (inherit gcc-core-mesboot) - (name "gcc-mesboot0") - (native-inputs `(("binutils" ,binutils-mesboot0) - ("gcc" ,gcc-core-mesboot) - ("libc" ,glibc-mesboot0) + (package + (inherit gcc-core-mesboot) + (name "gcc-mesboot0") + (native-inputs `(("binutils" ,binutils-mesboot0) + ("gcc" ,gcc-core-mesboot) + ("libc" ,glibc-mesboot0) - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("diffutils" ,diffutils-mesboot) - ("kernel-headers" ,%bootstrap-linux-libre-headers) - ("make" ,make-mesboot0))) - (arguments - (substitute-keyword-arguments (package-arguments gcc-core-mesboot) - ((#:phases phases) - `(modify-phases ,phases - (replace 'setenv - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (bash (assoc-ref %build-inputs "bash")) - (gcc (assoc-ref %build-inputs "gcc")) - (glibc (assoc-ref %build-inputs "libc")) - (kernel-headers (assoc-ref %build-inputs "kernel-headers"))) - (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) - (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH")) - (setenv "C_INCLUDE_PATH" (string-append - gcc "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include" - ":" kernel-headers "/include" - ":" glibc "/include")) - (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH")) - (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH")) - ;; FIXME: add glibc dirs to paths manually - (setenv "LIBRARY_PATH" (string-join - (list (string-append glibc "/lib") - (getenv "LIBRARY_PATH")) - ":")) - (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH")) - (with-output-to-file "config.cache" - (lambda _ - (display " + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("diffutils" ,diffutils-mesboot) + ("kernel-headers" ,%bootstrap-linux-libre-headers) + ("make" ,make-mesboot0))) + (arguments + (substitute-keyword-arguments (package-arguments gcc-core-mesboot) + ((#:phases phases) + `(modify-phases ,phases + (replace 'setenv + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (gcc (assoc-ref %build-inputs "gcc")) + (glibc (assoc-ref %build-inputs "libc")) + (kernel-headers (assoc-ref %build-inputs "kernel-headers"))) + (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) + (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH")) + (setenv "C_INCLUDE_PATH" (string-append + gcc "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include" + ":" kernel-headers "/include" + ":" glibc "/include")) + (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH")) + (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH")) + ;; FIXME: add glibc dirs to paths manually + (setenv "LIBRARY_PATH" (string-join + (list (string-append glibc "/lib") + (getenv "LIBRARY_PATH")) + ":")) + (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH")) + (with-output-to-file "config.cache" + (lambda _ + (display " ac_cv_c_float_format='IEEE (little-endian)' "))) - #t))) - (replace 'install2 - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (gcc-dir (string-append - out "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3"))) - (mkdir-p "tmp") - (zero? (system (string-append "set -x; cd tmp && ar x ../gcc/libgcc2.a"))) - (zero? (system (string-append "set -x; cd tmp && ar r " gcc-dir "/libgcc.a *.o"))) - (copy-file "gcc/libgcc2.a" (string-append out "/lib/libgcc2.a")) - #t))))) - ((#:configure-flags configure-flags) - `(let ((out (assoc-ref %outputs "out"))) - `("--disable-shared" - "--disable-werror" - "--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - ,(string-append "--prefix=" out)))) - ((#:make-flags make-flags) - `(let ((gcc (assoc-ref %build-inputs "gcc"))) - `("RANLIB=true" - ,(string-append "LIBGCC2_INCLUDES=-I " gcc "/include") - "LANGUAGES=c")))))))) + #t))) + (replace 'install2 + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (gcc-dir (string-append + out "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3"))) + (mkdir-p "tmp") + (zero? (system (string-append "set -x; cd tmp && ar x ../gcc/libgcc2.a"))) + (zero? (system (string-append "set -x; cd tmp && ar r " gcc-dir "/libgcc.a *.o"))) + (copy-file "gcc/libgcc2.a" (string-append out "/lib/libgcc2.a")) + #t))))) + ((#:configure-flags configure-flags) + `(let ((out (assoc-ref %outputs "out"))) + `("--disable-shared" + "--disable-werror" + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + ,(string-append "--prefix=" out)))) + ((#:make-flags make-flags) + `(let ((gcc (assoc-ref %build-inputs "gcc"))) + `("RANLIB=true" + ,(string-append "LIBGCC2_INCLUDES=-I " gcc "/include") + "LANGUAGES=c"))))))) (define binutils-mesboot - (package-with-bootstrap-guile - (package - (inherit binutils-mesboot0) - (name "binutils-mesboot") - (native-inputs `(("binutils" ,binutils-mesboot0) - ("libc" ,glibc-mesboot0) - ("gcc" ,gcc-mesboot0) + (package + (inherit binutils-mesboot0) + (name "binutils-mesboot") + (native-inputs `(("binutils" ,binutils-mesboot0) + ("libc" ,glibc-mesboot0) + ("gcc" ,gcc-mesboot0) - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("diffutils" ,diffutils-mesboot) - ("kernel-headers" ,%bootstrap-linux-libre-headers) - ("make" ,make-mesboot0))) - (arguments - (substitute-keyword-arguments (package-arguments binutils-mesboot0) - ((#:configure-flags configure-flags) - '(list "--disable-nls" - "--disable-shared" - "--disable-werror" - "--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - "--with-sysroot=/"))))))) + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("diffutils" ,diffutils-mesboot) + ("kernel-headers" ,%bootstrap-linux-libre-headers) + ("make" ,make-mesboot0))) + (arguments + (substitute-keyword-arguments (package-arguments binutils-mesboot0) + ((#:configure-flags configure-flags) + '(list "--disable-nls" + "--disable-shared" + "--disable-werror" + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + "--with-sysroot=/")))))) (define make-mesboot - (package-with-bootstrap-guile - (package - (inherit make-mesboot0) - (name "make-mesboot") - (version "3.82") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/make/make-" - version ".tar.gz")) - (sha256 - (base32 - "1rs2f9hmvy3q6zkl15jnlmnpgffm0bhw5ax0h5c7q604wqrip69x")))) - (native-inputs `(("binutils" ,binutils-mesboot0) - ("libc" ,glibc-mesboot0) - ("gcc" ,gcc-mesboot0) - ("make" ,make-mesboot0) + (package + (inherit make-mesboot0) + (name "make-mesboot") + (version "3.82") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/make/make-" + version ".tar.gz")) + (sha256 + (base32 + "1rs2f9hmvy3q6zkl15jnlmnpgffm0bhw5ax0h5c7q604wqrip69x")))) + (native-inputs `(("binutils" ,binutils-mesboot0) + ("libc" ,glibc-mesboot0) + ("gcc" ,gcc-mesboot0) + ("make" ,make-mesboot0) - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("kernel-headers" ,%bootstrap-linux-libre-headers))) - (arguments - (substitute-keyword-arguments (package-arguments make-mesboot0) - ((#:configure-flags configure-flags) - `(let ((out (assoc-ref %outputs "out"))) - `(,(string-append "--prefix=" out)))) - ((#:phases phases) - `(modify-phases ,phases - (delete 'configure-fixup) - (add-before 'configure 'setenv - (lambda _ - (setenv "LIBS" "-lc -lnss_files -lnss_dns -lresolv") - #t))))))))) + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("kernel-headers" ,%bootstrap-linux-libre-headers))) + (arguments + (substitute-keyword-arguments (package-arguments make-mesboot0) + ((#:configure-flags configure-flags) + `(let ((out (assoc-ref %outputs "out"))) + `(,(string-append "--prefix=" out)))) + ((#:phases phases) + `(modify-phases ,phases + (delete 'configure-fixup) + (add-before 'configure 'setenv + (lambda _ + (setenv "LIBS" "-lc -lnss_files -lnss_dns -lresolv") + #t)))))))) (define gmp-boot (package @@ -936,158 +933,157 @@ (define mpc-boot "1hzci2zrrd7v3g1jk35qindq05hbl0bhjcyyisq9z209xb3fqzb1")))))) (define gcc-mesboot1 - (package-with-bootstrap-guile - (package - (inherit gcc-mesboot0) - (name "gcc-mesboot1") - (version "4.7.4") - (source (origin (inherit (package-source gcc-4.7)) - (patches (search-patches "gcc-boot-4.7.4.patch")))) - (inputs `(("gmp-source" ,(package-source gmp-boot)) - ("mpfr-source" ,(package-source mpfr-boot)) - ("mpc-source" ,(package-source mpc-boot)))) - (native-inputs `(("binutils" ,binutils-mesboot) - ("gcc" ,gcc-mesboot0) - ("libc" ,glibc-mesboot0) + (package + (inherit gcc-mesboot0) + (name "gcc-mesboot1") + (version "4.7.4") + (source (bootstrap-origin + (origin (inherit (package-source gcc-4.7)) + (patches (search-patches "gcc-boot-4.7.4.patch"))))) + (inputs `(("gmp-source" ,(package-source gmp-boot)) + ("mpfr-source" ,(package-source mpfr-boot)) + ("mpc-source" ,(package-source mpc-boot)))) + (native-inputs `(("binutils" ,binutils-mesboot) + ("gcc" ,gcc-mesboot0) + ("libc" ,glibc-mesboot0) - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("diffutils" ,diffutils-mesboot) - ("kernel-headers" ,%bootstrap-linux-libre-headers) - ("make" ,make-mesboot))) - (arguments - (substitute-keyword-arguments (package-arguments gcc-core-mesboot) - ((#:make-flags make-flags) - `(let* ((libc (assoc-ref %build-inputs "libc")) - (ldflags (string-append - "-B" libc "/lib " - "-Wl,-dynamic-linker " - "-Wl," libc - ,(glibc-dynamic-linker "i686-linux")))) - (list (string-append "LDFLAGS=" ldflags) - (string-append "LDFLAGS_FOR_TARGET=" ldflags)))) - ((#:phases phases) - `(modify-phases ,phases - ;; c&p from commencement.scm:gcc-boot0 - (add-after 'unpack 'unpack-gmp&co - (lambda* (#:key inputs #:allow-other-keys) - (let ((gmp (assoc-ref %build-inputs "gmp-source")) - (mpfr (assoc-ref %build-inputs "mpfr-source")) - (mpc (assoc-ref %build-inputs "mpc-source"))) + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("diffutils" ,diffutils-mesboot) + ("kernel-headers" ,%bootstrap-linux-libre-headers) + ("make" ,make-mesboot))) + (arguments + (substitute-keyword-arguments (package-arguments gcc-core-mesboot) + ((#:make-flags make-flags) + `(let* ((libc (assoc-ref %build-inputs "libc")) + (ldflags (string-append + "-B" libc "/lib " + "-Wl,-dynamic-linker " + "-Wl," libc + ,(glibc-dynamic-linker "i686-linux")))) + (list (string-append "LDFLAGS=" ldflags) + (string-append "LDFLAGS_FOR_TARGET=" ldflags)))) + ((#:phases phases) + `(modify-phases ,phases + ;; c&p from commencement.scm:gcc-boot0 + (add-after 'unpack 'unpack-gmp&co + (lambda* (#:key inputs #:allow-other-keys) + (let ((gmp (assoc-ref %build-inputs "gmp-source")) + (mpfr (assoc-ref %build-inputs "mpfr-source")) + (mpc (assoc-ref %build-inputs "mpc-source"))) - ;; To reduce the set of pre-built bootstrap inputs, build - ;; GMP & co. from GCC. - (for-each (lambda (source) - (or (invoke "tar" "xvf" source) - (error "failed to unpack tarball" - source))) - (list gmp mpfr mpc)) + ;; To reduce the set of pre-built bootstrap inputs, build + ;; GMP & co. from GCC. + (for-each (lambda (source) + (or (invoke "tar" "xvf" source) + (error "failed to unpack tarball" + source))) + (list gmp mpfr mpc)) - ;; Create symlinks like `gmp' -> `gmp-x.y.z'. - ,@(map (lambda (lib) - ;; Drop trailing letters, as gmp-6.0.0a unpacks - ;; into gmp-6.0.0. - `(symlink ,(string-trim-right - (package-full-name lib "-") - char-set:letter) - ,(package-name lib))) - (list gmp-boot mpfr-boot mpc-boot)) - #t))) - (delete 'remove-info) - (replace 'setenv - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (binutils (assoc-ref %build-inputs "binutils")) - (bash (assoc-ref %build-inputs "bash")) - (gcc (assoc-ref %build-inputs "gcc")) - (glibc (assoc-ref %build-inputs "libc")) - (kernel-headers (assoc-ref %build-inputs "kernel-headers"))) - (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) - (setenv "C_INCLUDE_PATH" (string-append - gcc "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include" - ":" kernel-headers "/include" - ":" glibc "/include" - ":" (getcwd) "/mpfr/src")) - (setenv "LIBRARY_PATH" (string-append glibc "/lib" - ":" gcc "/lib")) - (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH")) - (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH")) - #t))) - (delete 'install2))) - ((#:configure-flags configure-flags) - `(let ((out (assoc-ref %outputs "out")) - (glibc (assoc-ref %build-inputs "libc"))) - (list (string-append "--prefix=" out) - "--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" + ;; Create symlinks like `gmp' -> `gmp-x.y.z'. + ,@(map (lambda (lib) + ;; Drop trailing letters, as gmp-6.0.0a unpacks + ;; into gmp-6.0.0. + `(symlink ,(string-trim-right + (package-full-name lib "-") + char-set:letter) + ,(package-name lib))) + (list gmp-boot mpfr-boot mpc-boot)) + #t))) + (delete 'remove-info) + (replace 'setenv + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (binutils (assoc-ref %build-inputs "binutils")) + (bash (assoc-ref %build-inputs "bash")) + (gcc (assoc-ref %build-inputs "gcc")) + (glibc (assoc-ref %build-inputs "libc")) + (kernel-headers (assoc-ref %build-inputs "kernel-headers"))) + (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) + (setenv "C_INCLUDE_PATH" (string-append + gcc "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include" + ":" kernel-headers "/include" + ":" glibc "/include" + ":" (getcwd) "/mpfr/src")) + (setenv "LIBRARY_PATH" (string-append glibc "/lib" + ":" gcc "/lib")) + (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH")) + (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH")) + #t))) + (delete 'install2))) + ((#:configure-flags configure-flags) + `(let ((out (assoc-ref %outputs "out")) + (glibc (assoc-ref %build-inputs "libc"))) + (list (string-append "--prefix=" out) + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" - (string-append "--with-native-system-header-dir=" glibc "/include") - (string-append "--with-build-sysroot=" glibc "/include") + (string-append "--with-native-system-header-dir=" glibc "/include") + (string-append "--with-build-sysroot=" glibc "/include") - "--disable-bootstrap" - "--disable-decimal-float" - "--disable-libatomic" - "--disable-libcilkrts" - "--disable-libgomp" - "--disable-libitm" - "--disable-libmudflap" - "--disable-libquadmath" - "--disable-libsanitizer" - "--disable-libssp" - "--disable-libvtv" - "--disable-lto" - "--disable-lto-plugin" - "--disable-multilib" - "--disable-plugin" - "--disable-threads" - "--enable-languages=c,c++" + "--disable-bootstrap" + "--disable-decimal-float" + "--disable-libatomic" + "--disable-libcilkrts" + "--disable-libgomp" + "--disable-libitm" + "--disable-libmudflap" + "--disable-libquadmath" + "--disable-libsanitizer" + "--disable-libssp" + "--disable-libvtv" + "--disable-lto" + "--disable-lto-plugin" + "--disable-multilib" + "--disable-plugin" + "--disable-threads" + "--enable-languages=c,c++" - "--enable-static" - ;; libstdc++.so: error: depends on 'libgcc_s.so.1', which cannot be found in RUNPATH () - "--disable-shared" - "--enable-threads=single" + "--enable-static" + ;; libstdc++.so: error: depends on 'libgcc_s.so.1', which cannot be found in RUNPATH () + "--disable-shared" + "--enable-threads=single" - ;; No pre-compiled libstdc++ headers, to save space. - "--disable-libstdcxx-pch" + ;; No pre-compiled libstdc++ headers, to save space. + "--disable-libstdcxx-pch" - ;; for libcpp ... - "--disable-build-with-cxx")))))))) + ;; for libcpp ... + "--disable-build-with-cxx"))))))) (define gcc-mesboot1-wrapper ;; We need this so gcc-mesboot1 can be used to create shared binaries that ;; have the correct interpreter, otherwise configuring gcc-mesboot using ;; --enable-shared will fail. - (package-with-bootstrap-guile - (package - (inherit gcc-mesboot1) - (name "gcc-mesboot1-wrapper") - (source #f) - (inputs '()) - (native-inputs `(("bash" ,%bootstrap-coreutils&co) - ("libc" ,glibc-mesboot) - ("gcc" ,gcc-mesboot1))) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:phases - (modify-phases %standard-phases - (delete 'unpack) - (delete 'configure) - (delete 'install) - (replace 'build - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bash (assoc-ref %build-inputs "bash")) - (libc (assoc-ref %build-inputs "libc")) - (gcc (assoc-ref %build-inputs "gcc")) - (bin (string-append out "/bin"))) - (mkdir-p bin) - (for-each - (lambda (program) - (let ((wrapper (string-append bin "/" program))) - (with-output-to-file wrapper - (lambda _ - (display (string-append "#! " bash "/bin/bash + (package + (inherit gcc-mesboot1) + (name "gcc-mesboot1-wrapper") + (source #f) + (inputs '()) + (native-inputs `(("bash" ,%bootstrap-coreutils&co) + ("libc" ,glibc-mesboot) + ("gcc" ,gcc-mesboot1))) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:phases + (modify-phases %standard-phases + (delete 'unpack) + (delete 'configure) + (delete 'install) + (replace 'build + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (libc (assoc-ref %build-inputs "libc")) + (gcc (assoc-ref %build-inputs "gcc")) + (bin (string-append out "/bin"))) + (mkdir-p bin) + (for-each + (lambda (program) + (let ((wrapper (string-append bin "/" program))) + (with-output-to-file wrapper + (lambda _ + (display (string-append "#! " bash "/bin/bash exec " gcc "/bin/" program " -Wl,--dynamic-linker" ;; also for x86_64-linux, we are still on i686-linux @@ -1096,28 +1092,28 @@ (define gcc-mesboot1-wrapper " -Wl," libc "/lib" " \"$@\" ")) - (chmod wrapper #o555))))) - '( - "gcc" - "g++" - "i686-unknown-linux-gnu-gcc" - "i686-unknown-linux-gnu-g++" - )) - #t))) - (replace 'check - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (program (string-append bin "/gcc"))) - (invoke program "--help")))))))))) + (chmod wrapper #o555))))) + '( + "gcc" + "g++" + "i686-unknown-linux-gnu-gcc" + "i686-unknown-linux-gnu-g++" + )) + #t))) + (replace 'check + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (program (string-append bin "/gcc"))) + (invoke program "--help"))))))))) (define glibc-headers-mesboot - (package-with-bootstrap-guile - (package - (inherit glibc-mesboot0) - (name "glibc-headers-mesboot") - (version "2.16.0") - (source (origin + (package + (inherit glibc-mesboot0) + (name "glibc-headers-mesboot") + (version "2.16.0") + (source (bootstrap-origin + (origin (method url-fetch) (uri (string-append "mirror://gnu/glibc/glibc-" version @@ -1126,273 +1122,269 @@ (define glibc-headers-mesboot "glibc-bootstrap-system-2.16.0.patch")) (sha256 (base32 - "0vlz4x6cgz7h54qq4528q526qlhnsjzbsvgc4iizn76cb0bfanx7")))) - (native-inputs `(("binutils" ,binutils-mesboot) - ("libc" ,glibc-mesboot0) - ("gcc" ,gcc-mesboot1) - ("headers" ,mesboot-headers) + "0vlz4x6cgz7h54qq4528q526qlhnsjzbsvgc4iizn76cb0bfanx7"))))) + (native-inputs `(("binutils" ,binutils-mesboot) + ("libc" ,glibc-mesboot0) + ("gcc" ,gcc-mesboot1) + ("headers" ,mesboot-headers) - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("diffutils" ,diffutils-mesboot) - ("kernel-headers" ,%bootstrap-linux-libre-headers) - ("make" ,make-mesboot))) + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("diffutils" ,diffutils-mesboot) + ("kernel-headers" ,%bootstrap-linux-libre-headers) + ("make" ,make-mesboot))) - (arguments - (substitute-keyword-arguments (package-arguments glibc-mesboot0) - ((#:configure-flags configure-flags) - `(let ((out (assoc-ref %outputs "out")) - (headers (assoc-ref %build-inputs "headers"))) - (list - (string-append "--prefix=" out) - "--disable-obsolete-rpc" - "--host=i686-unknown-linux-gnu" - (string-append "--with-headers=" headers "/include") - "--enable-static-nss" - "--with-pthread" - "--without-cvs" - "--without-gd" - "--enable-add-ons=nptl"))) - ((#:make-flags make-flags) - `(let ((bash (assoc-ref %build-inputs "bash"))) - (list (string-append "SHELL=" bash "/bin/sh") - "install-bootstrap-headers=yes" "install-headers"))) - ((#:phases phases) - `(modify-phases ,phases - (replace 'setenv - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (headers (assoc-ref %build-inputs "headers")) - (bash (assoc-ref %build-inputs "bash")) - (coreutils (assoc-ref %build-inputs "coreutils")) - (libc (assoc-ref %build-inputs "libc")) - (gcc (assoc-ref %build-inputs "gcc")) - (cppflags (string-append - " -I " (getcwd) "/nptl/sysdeps/pthread/bits" - " -D BOOTSTRAP_GLIBC=1")) - (cflags (string-append " -L " (getcwd) - " -L " libc "/lib"))) - (setenv "libc_cv_friendly_stddef" "yes") - (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) - (setenv "SHELL" (getenv "CONFIG_SHELL")) - (format (current-error-port) "CONFIG_SHELL=~s\n" (getenv "CONFIG_SHELL")) + (arguments + (substitute-keyword-arguments (package-arguments glibc-mesboot0) + ((#:configure-flags configure-flags) + `(let ((out (assoc-ref %outputs "out")) + (headers (assoc-ref %build-inputs "headers"))) + (list + (string-append "--prefix=" out) + "--disable-obsolete-rpc" + "--host=i686-unknown-linux-gnu" + (string-append "--with-headers=" headers "/include") + "--enable-static-nss" + "--with-pthread" + "--without-cvs" + "--without-gd" + "--enable-add-ons=nptl"))) + ((#:make-flags make-flags) + `(let ((bash (assoc-ref %build-inputs "bash"))) + (list (string-append "SHELL=" bash "/bin/sh") + "install-bootstrap-headers=yes" "install-headers"))) + ((#:phases phases) + `(modify-phases ,phases + (replace 'setenv + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (headers (assoc-ref %build-inputs "headers")) + (bash (assoc-ref %build-inputs "bash")) + (coreutils (assoc-ref %build-inputs "coreutils")) + (libc (assoc-ref %build-inputs "libc")) + (gcc (assoc-ref %build-inputs "gcc")) + (cppflags (string-append + " -I " (getcwd) "/nptl/sysdeps/pthread/bits" + " -D BOOTSTRAP_GLIBC=1")) + (cflags (string-append " -L " (getcwd) + " -L " libc "/lib"))) + (setenv "libc_cv_friendly_stddef" "yes") + (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) + (setenv "SHELL" (getenv "CONFIG_SHELL")) + (format (current-error-port) "CONFIG_SHELL=~s\n" (getenv "CONFIG_SHELL")) - (setenv "CPP" (string-append gcc "/bin/gcc -E " cppflags)) - (setenv "CC" (string-append gcc "/bin/gcc " cppflags cflags)) + (setenv "CPP" (string-append gcc "/bin/gcc -E " cppflags)) + (setenv "CC" (string-append gcc "/bin/gcc " cppflags cflags)) - ;; avoid -fstack-protector - (setenv "libc_cv_ssp" "false") - (substitute* "configure" - (("/bin/pwd") (string-append coreutils "/bin/pwd"))) - (setenv "C_INCLUDE_PATH" (string-append libc "/include" - headers "/include")) - (setenv "LIBRARY_PATH" (string-append libc "/lib")) - #t))) - (replace 'install - (lambda* (#:key outputs make-flags #:allow-other-keys) - (let ((kernel-headers (assoc-ref %build-inputs "kernel-headers")) - (out (assoc-ref outputs "out"))) - (apply invoke "make" make-flags) - (copy-recursively kernel-headers out) - #t))) - (replace 'configure - (lambda* (#:key configure-flags #:allow-other-keys) - (format (current-error-port) "running ../configure ~a\n" (string-join configure-flags)) - (mkdir-p "build") - (chdir "build") - (apply invoke "../configure" configure-flags))) - (add-after 'configure 'remove-sunrpc - (lambda _ - (invoke "make" (string-append (getcwd) "/sysd-sorted" ) - (string-append "SHELL=" (getenv "CONFIG_SHELL"))) - (substitute* "sysd-sorted" - ((" sunrpc") " ") - ((" nis") " ")) - ;; 'rpcgen' needs native libc headers to be built. - (substitute* "../Makefile" - (("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL")))) - (substitute* "../Makeconfig" - (("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL")))) - (substitute* "../elf/Makefile" - (("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL"))))))))))))) + ;; avoid -fstack-protector + (setenv "libc_cv_ssp" "false") + (substitute* "configure" + (("/bin/pwd") (string-append coreutils "/bin/pwd"))) + (setenv "C_INCLUDE_PATH" (string-append libc "/include" + headers "/include")) + (setenv "LIBRARY_PATH" (string-append libc "/lib")) + #t))) + (replace 'install + (lambda* (#:key outputs make-flags #:allow-other-keys) + (let ((kernel-headers (assoc-ref %build-inputs "kernel-headers")) + (out (assoc-ref outputs "out"))) + (apply invoke "make" make-flags) + (copy-recursively kernel-headers out) + #t))) + (replace 'configure + (lambda* (#:key configure-flags #:allow-other-keys) + (format (current-error-port) "running ../configure ~a\n" (string-join configure-flags)) + (mkdir-p "build") + (chdir "build") + (apply invoke "../configure" configure-flags))) + (add-after 'configure 'remove-sunrpc + (lambda _ + (invoke "make" (string-append (getcwd) "/sysd-sorted" ) + (string-append "SHELL=" (getenv "CONFIG_SHELL"))) + (substitute* "sysd-sorted" + ((" sunrpc") " ") + ((" nis") " ")) + ;; 'rpcgen' needs native libc headers to be built. + (substitute* "../Makefile" + (("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL")))) + (substitute* "../Makeconfig" + (("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL")))) + (substitute* "../elf/Makefile" + (("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL")))))))))))) (define glibc-mesboot - (package-with-bootstrap-guile - (package - (inherit glibc-headers-mesboot) - (name "glibc-mesboot") - (native-inputs `(("binutils" ,binutils-mesboot) - ("libc" ,glibc-mesboot0) - ("headers" ,glibc-headers-mesboot) - ("gcc" ,gcc-mesboot1) + (package + (inherit glibc-headers-mesboot) + (name "glibc-mesboot") + (native-inputs `(("binutils" ,binutils-mesboot) + ("libc" ,glibc-mesboot0) + ("headers" ,glibc-headers-mesboot) + ("gcc" ,gcc-mesboot1) - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("diffutils" ,diffutils-mesboot) - ("kernel-headers" ,%bootstrap-linux-libre-headers) - ("make" ,make-mesboot))) + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("diffutils" ,diffutils-mesboot) + ("kernel-headers" ,%bootstrap-linux-libre-headers) + ("make" ,make-mesboot))) - (arguments - `(#:validate-runpath? #f ; fails when using --enable-shared - ,@(substitute-keyword-arguments (package-arguments glibc-headers-mesboot) - ((#:make-flags make-flags) - `(let ((bash (assoc-ref %build-inputs "bash"))) - (list (string-append "SHELL=" bash "/bin/sh")))) - ((#:phases phases) - `(modify-phases ,phases - (replace 'install - (lambda* (#:key outputs make-flags #:allow-other-keys) - (let* ((kernel-headers (assoc-ref %build-inputs "kernel-headers")) - (out (assoc-ref outputs "out")) - (install-flags (cons "install" make-flags))) - (apply invoke "make" install-flags) - (copy-recursively kernel-headers out) - #t)))))))) - (native-search-paths ;; FIXME: move to glibc-mesboot0 - ;; Use the language-specific variables rather than 'CPATH' because they - ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. - ;; The intent is to allow headers that are in the search path to be - ;; treated as "system headers" (headers exempt from warnings) just like - ;; the typical /usr/include headers on an FHS system. - (list (search-path-specification - (variable "C_INCLUDE_PATH") - (files '("include"))) - (search-path-specification - (variable "CPLUS_INCLUDE_PATH") - (files '("include"))) - (search-path-specification - (variable "LIBRARY_PATH") - (files '("lib")))))))) + (arguments + `(#:validate-runpath? #f ; fails when using --enable-shared + ,@(substitute-keyword-arguments (package-arguments glibc-headers-mesboot) + ((#:make-flags make-flags) + `(let ((bash (assoc-ref %build-inputs "bash"))) + (list (string-append "SHELL=" bash "/bin/sh")))) + ((#:phases phases) + `(modify-phases ,phases + (replace 'install + (lambda* (#:key outputs make-flags #:allow-other-keys) + (let* ((kernel-headers (assoc-ref %build-inputs "kernel-headers")) + (out (assoc-ref outputs "out")) + (install-flags (cons "install" make-flags))) + (apply invoke "make" install-flags) + (copy-recursively kernel-headers out) + #t)))))))) + (native-search-paths ;; FIXME: move to glibc-mesboot0 + ;; Use the language-specific variables rather than 'CPATH' because they + ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. + ;; The intent is to allow headers that are in the search path to be + ;; treated as "system headers" (headers exempt from warnings) just like + ;; the typical /usr/include headers on an FHS system. + (list (search-path-specification + (variable "C_INCLUDE_PATH") + (files '("include"))) + (search-path-specification + (variable "CPLUS_INCLUDE_PATH") + (files '("include"))) + (search-path-specification + (variable "LIBRARY_PATH") + (files '("lib"))))))) (define gcc-mesboot - (package-with-bootstrap-guile - (package - (inherit gcc-mesboot1) - (name "gcc-mesboot") - (version "4.9.4") - (source (package-source gcc-4.9)) - (native-inputs `(("binutils" ,binutils-mesboot) - ("gcc-wrapper" ,gcc-mesboot1-wrapper) - ("gcc" ,gcc-mesboot1) - ("libc" ,glibc-mesboot) + (package + (inherit gcc-mesboot1) + (name "gcc-mesboot") + (version "4.9.4") + (source (bootstrap-origin (package-source gcc-4.9))) + (native-inputs `(("binutils" ,binutils-mesboot) + ("gcc-wrapper" ,gcc-mesboot1-wrapper) + ("gcc" ,gcc-mesboot1) + ("libc" ,glibc-mesboot) - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("diffutils" ,diffutils-mesboot) - ("kernel-headers" ,%bootstrap-linux-libre-headers) - ("make" ,make-mesboot))) - (arguments - `(#:validate-runpath? #f - ,@(substitute-keyword-arguments (package-arguments gcc-mesboot1) - ((#:configure-flags configure-flags) - `(let ((out (assoc-ref %outputs "out")) - (glibc (assoc-ref %build-inputs "libc"))) - (list (string-append "--prefix=" out) - "--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("diffutils" ,diffutils-mesboot) + ("kernel-headers" ,%bootstrap-linux-libre-headers) + ("make" ,make-mesboot))) + (arguments + `(#:validate-runpath? #f + ,@(substitute-keyword-arguments (package-arguments gcc-mesboot1) + ((#:configure-flags configure-flags) + `(let ((out (assoc-ref %outputs "out")) + (glibc (assoc-ref %build-inputs "libc"))) + (list (string-append "--prefix=" out) + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" - "--with-host-libstdcxx=-lsupc++" + "--with-host-libstdcxx=-lsupc++" - (string-append "--with-native-system-header-dir=" glibc "/include") - (string-append "--with-build-sysroot=" glibc "/include") + (string-append "--with-native-system-header-dir=" glibc "/include") + (string-append "--with-build-sysroot=" glibc "/include") - "--disable-bootstrap" - "--disable-decimal-float" - "--disable-libatomic" - "--disable-libcilkrts" - "--disable-libgomp" - "--disable-libitm" - "--disable-libmudflap" - "--disable-libquadmath" - "--disable-libsanitizer" - "--disable-libssp" - "--disable-libvtv" - "--disable-lto" - "--disable-lto-plugin" - "--disable-multilib" - "--disable-plugin" - "--disable-threads" - "--enable-languages=c,c++" + "--disable-bootstrap" + "--disable-decimal-float" + "--disable-libatomic" + "--disable-libcilkrts" + "--disable-libgomp" + "--disable-libitm" + "--disable-libmudflap" + "--disable-libquadmath" + "--disable-libsanitizer" + "--disable-libssp" + "--disable-libvtv" + "--disable-lto" + "--disable-lto-plugin" + "--disable-multilib" + "--disable-plugin" + "--disable-threads" + "--enable-languages=c,c++" - "--enable-static" - "--enable-shared" - "--enable-threads=single" + "--enable-static" + "--enable-shared" + "--enable-threads=single" - ;; No pre-compiled libstdc++ headers, to save space. - "--disable-libstdcxx-pch" + ;; No pre-compiled libstdc++ headers, to save space. + "--disable-libstdcxx-pch" - ;; for libcpp ... - "--disable-build-with-cxx"))) - ((#:phases phases) - `(modify-phases ,phases - (replace 'setenv - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (binutils (assoc-ref %build-inputs "binutils")) - (bash (assoc-ref %build-inputs "bash")) - (gcc (assoc-ref %build-inputs "gcc")) - (glibc (assoc-ref %build-inputs "libc")) - (kernel-headers (assoc-ref %build-inputs "kernel-headers"))) - (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) - (setenv "C_INCLUDE_PATH" (string-append - gcc "/lib/gcc-lib/i686-unknown-linux-gnu/4.7.4/include" - ":" kernel-headers "/include" - ":" glibc "/include" - ":" (getcwd) "/mpfr/src")) - (setenv "CPLUS_INCLUDE_PATH" (string-append - gcc "/lib/gcc-lib/i686-unknown-linux-gnu/4.7.4/include" - ":" kernel-headers "/include" - ":" glibc "/include" - ":" (getcwd) "/mpfr/src")) - (setenv "LIBRARY_PATH" (string-append glibc "/lib" - ":" gcc "/lib")) - (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH")) - (format (current-error-port) "CPLUS_INCLUDE_PATH=~a\n" (getenv "CPLUS_INCLUDE_PATH")) - (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH")) - #t))))))))))) + ;; for libcpp ... + "--disable-build-with-cxx"))) + ((#:phases phases) + `(modify-phases ,phases + (replace 'setenv + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (binutils (assoc-ref %build-inputs "binutils")) + (bash (assoc-ref %build-inputs "bash")) + (gcc (assoc-ref %build-inputs "gcc")) + (glibc (assoc-ref %build-inputs "libc")) + (kernel-headers (assoc-ref %build-inputs "kernel-headers"))) + (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) + (setenv "C_INCLUDE_PATH" (string-append + gcc "/lib/gcc-lib/i686-unknown-linux-gnu/4.7.4/include" + ":" kernel-headers "/include" + ":" glibc "/include" + ":" (getcwd) "/mpfr/src")) + (setenv "CPLUS_INCLUDE_PATH" (string-append + gcc "/lib/gcc-lib/i686-unknown-linux-gnu/4.7.4/include" + ":" kernel-headers "/include" + ":" glibc "/include" + ":" (getcwd) "/mpfr/src")) + (setenv "LIBRARY_PATH" (string-append glibc "/lib" + ":" gcc "/lib")) + (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH")) + (format (current-error-port) "CPLUS_INCLUDE_PATH=~a\n" (getenv "CPLUS_INCLUDE_PATH")) + (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH")) + #t)))))))))) (define gcc-mesboot-wrapper ;; We need this so gcc-mesboot can be used to create shared binaries that ;; have the correct interpreter and runpath to libc. - (package-with-bootstrap-guile - (package - (inherit gcc-mesboot1-wrapper) - (name "gcc-mesboot-wrapper") - (version (package-version gcc-mesboot)) - (source #f) - (inputs '()) - (native-inputs `(("bash" ,%bootstrap-coreutils&co) - ("libc" ,glibc-mesboot) - ("gcc" ,gcc-mesboot)))))) + (package + (inherit gcc-mesboot1-wrapper) + (name "gcc-mesboot-wrapper") + (version (package-version gcc-mesboot)) + (source #f) + (inputs '()) + (native-inputs `(("bash" ,%bootstrap-coreutils&co) + ("libc" ,glibc-mesboot) + ("gcc" ,gcc-mesboot))))) (define m4-mesboot - (package-with-bootstrap-guile - (package - (inherit m4) - (name "m4-mesboot") - (version "1.4") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/m4/m4-" - version ".tar.gz")) - (sha256 - (base32 - "1f9bxj176kf3pvs350w2dfs8jgwhminywri5pyn01b11yc4yhsjw")))) - (supported-systems '("i686-linux" "x86_64-linux")) - (native-inputs `(("mes" ,mes-boot) - ("tcc" ,tcc-boot))) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (setenv "CONFIG_SHELL" (string-append - (assoc-ref %build-inputs "bash") - "/bin/sh")) - (setenv "CC" "tcc -static") - (setenv "CPP" "tcc -E") - (invoke "./configure" (string-append "--prefix=" out))))))))))) + (package + (inherit m4) + (name "m4-mesboot") + (version "1.4") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/m4/m4-" + version ".tar.gz")) + (sha256 + (base32 + "1f9bxj176kf3pvs350w2dfs8jgwhminywri5pyn01b11yc4yhsjw")))) + (supported-systems '("i686-linux" "x86_64-linux")) + (native-inputs `(("mes" ,mes-boot) + ("tcc" ,tcc-boot))) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (setenv "CONFIG_SHELL" (string-append + (assoc-ref %build-inputs "bash") + "/bin/sh")) + (setenv "CC" "tcc -static") + (setenv "CPP" "tcc -E") + (invoke "./configure" (string-append "--prefix=" out)))))))))) (define (%bootstrap-inputs+toolchain) ;; The traditional bootstrap-inputs. For the i686-linux Reduced Binary Seed @@ -1409,66 +1401,70 @@ (define (%bootstrap-inputs+toolchain) (%bootstrap-inputs)))) (define gnu-make-boot0 - (package-with-bootstrap-guile - (package (inherit gnu-make) - (name "make-boot0") - (arguments - `(#:guile ,%bootstrap-guile - #:implicit-inputs? #f - #:tests? #f ; cannot run "make check" - ,@(substitute-keyword-arguments (package-arguments gnu-make) - ((#:phases phases) - `(modify-phases ,phases - (replace 'build - (lambda _ - (invoke "./build.sh"))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin"))) - (install-file "make" bin) - #t)))))))) - (native-inputs '()) ; no need for 'pkg-config' - (inputs (%bootstrap-inputs+toolchain))))) + (package + (inherit gnu-make) + (source (bootstrap-origin (package-source gnu-make))) + (name "make-boot0") + (arguments + `(#:guile ,%bootstrap-guile + #:implicit-inputs? #f + #:tests? #f ; cannot run "make check" + ,@(substitute-keyword-arguments (package-arguments gnu-make) + ((#:phases phases) + `(modify-phases ,phases + (replace 'build + (lambda _ + (invoke "./build.sh"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (install-file "make" bin) + #t)))))))) + (native-inputs '()) ; no need for 'pkg-config' + (inputs (%bootstrap-inputs+toolchain)))) (define diffutils-boot0 - (package-with-bootstrap-guile - (let ((p (package-with-explicit-inputs diffutils - (lambda _ - `(("make" ,gnu-make-boot0) - ,@(%bootstrap-inputs+toolchain))) - #:guile %bootstrap-guile))) - (package (inherit p) - (name "diffutils-boot0") - (native-inputs `()) - (arguments `(#:tests? #f ; the test suite needs diffutils - ,@(package-arguments p))))))) + (package + (inherit diffutils) + (name "diffutils-boot0") + (native-inputs `()) + (inputs + `(("make" ,gnu-make-boot0) + ,@(%bootstrap-inputs+toolchain))) + (arguments + `(#:tests? #f ; the test suite needs diffutils + #:guile ,%bootstrap-guile + #:implicit-inputs? #f + ,@(package-arguments diffutils))))) (define findutils-boot0 - (package-with-bootstrap-guile - (package-with-explicit-inputs (package - (inherit findutils) - (name "findutils-boot0")) - (lambda _ - `(("make" ,gnu-make-boot0) - ("diffutils" ,diffutils-boot0) ; for tests - ,@(%bootstrap-inputs+toolchain))) - (current-source-location) - #:guile %bootstrap-guile))) + (package + (inherit findutils) + (name "findutils-boot0") + (source (bootstrap-origin (package-source findutils))) + (inputs + `(("make" ,gnu-make-boot0) + ("diffutils" ,diffutils-boot0) ; for tests + ,@(%bootstrap-inputs+toolchain))) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + ,@(package-arguments findutils))))) (define file-boot0 - (package-with-bootstrap-guile - (package-with-explicit-inputs (package - (inherit file) - (name "file-boot0") - (arguments - '(#:strip-binaries? #f - #:validate-runpath? #f))) - (lambda _ - `(("make" ,gnu-make-boot0) - ,@(%bootstrap-inputs+toolchain))) - (current-source-location) - #:guile %bootstrap-guile))) + (package + (inherit file) + (source (bootstrap-origin (package-source file))) + (name "file-boot0") + (inputs + `(("make" ,gnu-make-boot0) + ,@(%bootstrap-inputs+toolchain))) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:strip-binaries? #f + #:validate-runpath? #f)))) (define (%boot0-inputs) `(("make" ,gnu-make-boot0) @@ -1489,47 +1485,49 @@ (define* (boot-triplet #:optional (system (%current-system))) ;; reference to the target libc. (define binutils-boot0 - (package-with-bootstrap-guile - (package (inherit binutils) - (name "binutils-cross-boot0") - (arguments - `(#:guile ,%bootstrap-guile - #:implicit-inputs? #f + (package + (inherit binutils) + (source (bootstrap-origin (package-source binutils))) + (name "binutils-cross-boot0") + (arguments + `(#:guile ,%bootstrap-guile + #:implicit-inputs? #f - #:modules ((guix build gnu-build-system) - (guix build utils) - (ice-9 ftw)) ; for 'scandir' - #:phases (modify-phases %standard-phases - (add-after 'install 'add-symlinks - (lambda* (#:key outputs #:allow-other-keys) - ;; The cross-gcc invokes 'as', 'ld', etc, without the - ;; triplet prefix, so add symlinks. - (let ((out (assoc-ref outputs "out")) - (triplet-prefix (string-append ,(boot-triplet) "-"))) - (define (has-triplet-prefix? name) - (string-prefix? triplet-prefix name)) - (define (remove-triplet-prefix name) - (substring name (string-length triplet-prefix))) - (with-directory-excursion (string-append out "/bin") - (for-each (lambda (name) - (symlink name (remove-triplet-prefix name))) - (scandir "." has-triplet-prefix?))) - #t)))) + #:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 ftw)) ; for 'scandir' + #:phases (modify-phases %standard-phases + (add-after 'install 'add-symlinks + (lambda* (#:key outputs #:allow-other-keys) + ;; The cross-gcc invokes 'as', 'ld', etc, without the + ;; triplet prefix, so add symlinks. + (let ((out (assoc-ref outputs "out")) + (triplet-prefix (string-append ,(boot-triplet) "-"))) + (define (has-triplet-prefix? name) + (string-prefix? triplet-prefix name)) + (define (remove-triplet-prefix name) + (substring name (string-length triplet-prefix))) + (with-directory-excursion (string-append out "/bin") + (for-each (lambda (name) + (symlink name (remove-triplet-prefix name))) + (scandir "." has-triplet-prefix?))) + #t)))) - ,@(substitute-keyword-arguments (package-arguments binutils) - ((#:configure-flags cf) - `(cons ,(string-append "--target=" (boot-triplet)) - ,cf))))) - (inputs (%boot0-inputs))))) + ,@(substitute-keyword-arguments (package-arguments binutils) + ((#:configure-flags cf) + `(cons ,(string-append "--target=" (boot-triplet)) + ,cf))))) + (inputs (%boot0-inputs)))) (define libstdc++-boot0 ;; GCC's libcc1 is always built as a shared library (the top-level ;; 'Makefile.def' forcefully adds --enable-shared) and thus needs to refer ;; to libstdc++.so. We cannot build libstdc++-5.3 because it relies on ;; C++14 features missing in some of our bootstrap compilers. - (let ((lib (package-with-bootstrap-guile (make-libstdc++ gcc-4.9)))) + (let ((lib (make-libstdc++ gcc-4.9))) (package (inherit lib) + (source (bootstrap-origin (package-source lib))) (name "libstdc++-boot0") (arguments `(#:guile ,%bootstrap-guile @@ -1555,86 +1553,87 @@ (define libstdc++-boot0 (native-inputs '())))) (define gcc-boot0 - (package-with-bootstrap-guile - (package (inherit gcc) - (name "gcc-cross-boot0") - (arguments - `(#:guile ,%bootstrap-guile - #:implicit-inputs? #f - #:modules ((guix build gnu-build-system) - (guix build utils) - (ice-9 regex) - (srfi srfi-1) - (srfi srfi-26)) - ,@(substitute-keyword-arguments (package-arguments gcc) - ((#:configure-flags flags) - `(append (list ,(string-append "--target=" (boot-triplet)) + (package + (inherit gcc) + (name "gcc-cross-boot0") + (source (bootstrap-origin (package-source gcc))) + (arguments + `(#:guile ,%bootstrap-guile + #:implicit-inputs? #f + #:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 regex) + (srfi srfi-1) + (srfi srfi-26)) + ,@(substitute-keyword-arguments (package-arguments gcc) + ((#:configure-flags flags) + `(append (list ,(string-append "--target=" (boot-triplet)) - ;; No libc yet. - "--without-headers" + ;; No libc yet. + "--without-headers" - ;; Disable features not needed at this stage. - "--disable-shared" - "--enable-languages=c,c++" + ;; Disable features not needed at this stage. + "--disable-shared" + "--enable-languages=c,c++" - ;; libstdc++ cannot be built at this stage - ;; ("Link tests are not allowed after - ;; GCC_NO_EXECUTABLES."). - "--disable-libstdc++-v3" + ;; libstdc++ cannot be built at this stage + ;; ("Link tests are not allowed after + ;; GCC_NO_EXECUTABLES."). + "--disable-libstdc++-v3" - "--disable-threads" - "--disable-libmudflap" - "--disable-libatomic" - "--disable-libsanitizer" - "--disable-libitm" - "--disable-libgomp" - "--disable-libmpx" - "--disable-libcilkrts" - "--disable-libvtv" - "--disable-libssp" - "--disable-libquadmath" - "--disable-decimal-float") - (remove (cut string-match - "--(with-system-zlib|enable-languages.*)" <>) - ,flags))) - ((#:make-flags flags) - `(let* ((libc (assoc-ref %build-inputs "libc")) - (libc-native (or (assoc-ref %build-inputs "libc-native") - libc))) - `(,(string-append "LDFLAGS=" - "-Wl,-rpath=" libc-native "/lib " - "-Wl,-dynamic-linker " - "-Wl," libc-native ,(glibc-dynamic-linker - (match (%current-system) - ("x86_64-linux" "i686-linux") - (_ (%current-system)))))))) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'unpack-gmp&co - (lambda* (#:key inputs #:allow-other-keys) - (let ((gmp (assoc-ref %build-inputs "gmp-source")) - (mpfr (assoc-ref %build-inputs "mpfr-source")) - (mpc (assoc-ref %build-inputs "mpc-source"))) + "--disable-threads" + "--disable-libmudflap" + "--disable-libatomic" + "--disable-libsanitizer" + "--disable-libitm" + "--disable-libgomp" + "--disable-libmpx" + "--disable-libcilkrts" + "--disable-libvtv" + "--disable-libssp" + "--disable-libquadmath" + "--disable-decimal-float") + (remove (cut string-match + "--(with-system-zlib|enable-languages.*)" <>) + ,flags))) + ((#:make-flags flags) + `(let* ((libc (assoc-ref %build-inputs "libc")) + (libc-native (or (assoc-ref %build-inputs "libc-native") + libc))) + `(,(string-append "LDFLAGS=" + "-Wl,-rpath=" libc-native "/lib " + "-Wl,-dynamic-linker " + "-Wl," libc-native ,(glibc-dynamic-linker + (match (%current-system) + ("x86_64-linux" "i686-linux") + (_ (%current-system)))))))) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'unpack-gmp&co + (lambda* (#:key inputs #:allow-other-keys) + (let ((gmp (assoc-ref %build-inputs "gmp-source")) + (mpfr (assoc-ref %build-inputs "mpfr-source")) + (mpc (assoc-ref %build-inputs "mpc-source"))) - ;; To reduce the set of pre-built bootstrap inputs, build - ;; GMP & co. from GCC. - (for-each (lambda (source) - (invoke "tar" "xvf" source)) - (list gmp mpfr mpc)) + ;; To reduce the set of pre-built bootstrap inputs, build + ;; GMP & co. from GCC. + (for-each (lambda (source) + (invoke "tar" "xvf" source)) + (list gmp mpfr mpc)) - ;; Create symlinks like `gmp' -> `gmp-x.y.z'. - ,@(map (lambda (lib) - ;; Drop trailing letters, as gmp-6.0.0a unpacks - ;; into gmp-6.0.0. - `(symlink ,(string-trim-right - (package-full-name lib "-") - char-set:letter) - ,(package-name lib))) - (list gmp-6.0 mpfr mpc)) - #t))) - ,(match (%current-system) - ((or "i686-linux" "x86_64-linux") - '(add-before 'configure 'fix-libcc1 + ;; Create symlinks like `gmp' -> `gmp-x.y.z'. + ,@(map (lambda (lib) + ;; Drop trailing letters, as gmp-6.0.0a unpacks + ;; into gmp-6.0.0. + `(symlink ,(string-trim-right + (package-full-name lib "-") + char-set:letter) + ,(package-name lib))) + (list gmp-6.0 mpfr mpc)) + #t))) + ,(match (%current-system) + ((or "i686-linux" "x86_64-linux") + '(add-before 'configure 'fix-libcc1 (lambda* (#:key inputs #:allow-other-keys) ;; libcc1.so NEEDs libgcc_s.so, so provide one here ;; to placate the 'validate-runpath' phase. @@ -1646,127 +1645,137 @@ (define gcc-boot0 (substitute* "libcc1/configure" (("g\\+\\+ -v") "true")) #t))) - (_ '(add-before 'configure 'return-true - (lambda _ #t)))) - (add-after 'install 'symlink-libgcc_eh - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "lib"))) - ;; Glibc wants to link against libgcc_eh, so provide - ;; it. - (with-directory-excursion - (string-append out "/lib/gcc/" - ,(boot-triplet) - "/" ,(package-version gcc)) - (symlink "libgcc.a" "libgcc_eh.a")) - #t)))))))) + (_ '(add-before 'configure 'return-true + (lambda _ #t)))) + (add-after 'install 'symlink-libgcc_eh + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "lib"))) + ;; Glibc wants to link against libgcc_eh, so provide + ;; it. + (with-directory-excursion + (string-append out "/lib/gcc/" + ,(boot-triplet) + "/" ,(package-version gcc)) + (symlink "libgcc.a" "libgcc_eh.a")) + #t)))))))) - (inputs `(("gmp-source" ,(package-source gmp-6.0)) - ("mpfr-source" ,(package-source mpfr)) - ("mpc-source" ,(package-source mpc)) - ("binutils-cross" ,binutils-boot0) + (inputs `(("gmp-source" ,(bootstrap-origin (package-source gmp-6.0))) + ("mpfr-source" ,(bootstrap-origin (package-source mpfr))) + ("mpc-source" ,(bootstrap-origin (package-source mpc))) + ("binutils-cross" ,binutils-boot0) - ;; The libstdc++ that libcc1 links against. - ("libstdc++" ,libstdc++-boot0) + ;; The libstdc++ that libcc1 links against. + ("libstdc++" ,libstdc++-boot0) - ;; Call it differently so that the builder can check whether - ;; the "libc" input is #f. - ("libc-native" ,@(assoc-ref (%boot0-inputs) "libc")) - ,@(alist-delete "libc" (%boot0-inputs)))) + ;; Call it differently so that the builder can check whether + ;; the "libc" input is #f. + ("libc-native" ,@(assoc-ref (%boot0-inputs) "libc")) + ,@(alist-delete "libc" (%boot0-inputs)))) - ;; No need for the native-inputs to build the documentation at this stage. - (native-inputs `())))) + ;; No need for the native-inputs to build the documentation at this stage. + (native-inputs `()))) (define perl-boot0 - (let ((perl (package - (inherit perl) - (name "perl-boot0") - (arguments - ;; At the very least, this must not depend on GCC & co. - (let ((args `(#:validate-runpath? #f - #:disallowed-references - ,(list %bootstrap-binutils)))) - `(,@args - ,@(substitute-keyword-arguments (package-arguments perl) - ((#:phases phases) - `(modify-phases ,phases - ;; Pthread support is missing in the bootstrap compiler - ;; (broken spec file), so disable it. - (add-before 'configure 'disable-pthreads - (lambda _ - (substitute* "Configure" - (("^libswanted=(.*)pthread" _ before) - (string-append "libswanted=" before))) - #t)))) - ;; Do not configure with '-Dusethreads' since pthread - ;; support is missing. - ((#:configure-flags configure-flags) - `(delete "-Dusethreads" ,configure-flags))))))))) - (package-with-bootstrap-guile - (package-with-explicit-inputs perl - %boot0-inputs - (current-source-location) - #:guile %bootstrap-guile)))) + (package + (inherit perl) + (name "perl-boot0") + (source (bootstrap-origin (package-source perl))) + (inputs (%boot0-inputs)) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:validate-runpath? #f + + ;; At the very least, this must not depend on GCC & co. + #:disallowed-references ,(list %bootstrap-binutils) + + ,@(substitute-keyword-arguments (package-arguments perl) + ((#:phases phases) + `(modify-phases ,phases + ;; Pthread support is missing in the bootstrap compiler + ;; (broken spec file), so disable it. + (add-before 'configure 'disable-pthreads + (lambda _ + (substitute* "Configure" + (("^libswanted=(.*)pthread" _ before) + (string-append "libswanted=" before))) + #t)))) + ;; Do not configure with '-Dusethreads' since pthread + ;; support is missing. + ((#:configure-flags configure-flags) + `(delete "-Dusethreads" ,configure-flags))))))) (define m4-boot0 - (package-with-bootstrap-guile - (package - (inherit m4) - (name "m4-boot0") - (inputs (%boot0-inputs)) - (arguments - `(#:guile ,%bootstrap-guile - #:implicit-inputs? #f - ,@(package-arguments m4)))))) + (package + (inherit m4) + (name "m4-boot0") + (source (bootstrap-origin (package-source m4))) + (inputs (%boot0-inputs)) + (arguments + `(#:guile ,%bootstrap-guile + #:implicit-inputs? #f + ,@(package-arguments m4))))) + +(define m4-boot0* + (package + ;; TODO: On the next rebuild cycle, use M4-BOOT0 as is. + (inherit m4-boot0) + (name "m4"))) (define bison-boot0 ;; This Bison is needed to build MiG so we need it early in the process. ;; Recent versions of Linux-Libre headers also depend on this. - (let* ((bison (package (inherit bison) - (propagated-inputs `(("m4" ,m4))) - (inputs '()) ;remove Flex... - (arguments - `(#:tests? #f ;... and thus disable tests + (package + (inherit bison) + ;; TODO: On the next build cycle, do: + ;;(name "bison-boot0") + (propagated-inputs `(("m4" ,m4-boot0*))) + (native-inputs `(("perl" ,perl-boot0))) + (inputs (%boot0-inputs)) ;remove Flex... + (arguments + `(#:tests? #f ;... and thus disable tests + #:implicit-inputs? #f + #:guile ,%bootstrap-guile - ;; XXX: These flags should be unconditional, but for now - ;; we just add them on x86 to avoid a full rebuild. - ;; TODO: On the next core-updates, use - ;; 'substitute-keyword-arguments' to inherit them from - ;; BISON. - ,@(if (member (%current-system) - '("x86_64-linux" "i686-linux")) - '(#:parallel-build? #f - #:parallel-tests? #f) - '()) + ;; XXX: These flags should be unconditional, but for now + ;; we just add them on x86 to avoid a full rebuild. + ;; TODO: On the next core-updates, use + ;; 'substitute-keyword-arguments' to inherit them from + ;; BISON. + ,@(if (member (%current-system) + '("x86_64-linux" "i686-linux")) + '(#:parallel-build? #f + #:parallel-tests? #f) + '()) - ;; Zero timestamps in liby.a; this must be done - ;; explicitly here because the bootstrap Binutils don't - ;; do that (default is "cru".) - #:make-flags `("ARFLAGS=crD" - ,,(match (%current-system) - ;; ranlib: '-D': No such file - ((or "i686-linux" "x86_64-linux") - "RANLIB=ranlib") - (_ - "RANLIB=ranlib -D")) - "V=1")))))) - (package - (inherit (package-with-bootstrap-guile - (package-with-explicit-inputs bison %boot0-inputs - (current-source-location) - #:guile %bootstrap-guile))) - (native-inputs `(("perl" ,perl-boot0)))))) + ;; Zero timestamps in liby.a; this must be done + ;; explicitly here because the bootstrap Binutils don't + ;; do that (default is "cru".) + #:make-flags `("ARFLAGS=crD" + ,,(match (%current-system) + ;; ranlib: '-D': No such file + ((or "i686-linux" "x86_64-linux") + "RANLIB=ranlib") + (_ + "RANLIB=ranlib -D")) + "V=1"))))) (define flex-boot0 ;; This Flex is needed to build MiG as well as Linux-Libre headers. - (let* ((flex (package (inherit flex) - (native-inputs `(("bison" ,bison-boot0))) - (propagated-inputs `(("m4" ,m4))) - (inputs '()) - (arguments '(#:tests? #f))))) - (package-with-bootstrap-guile - (package-with-explicit-inputs flex %boot0-inputs - (current-source-location) - #:guile %bootstrap-guile)))) + (package + (inherit flex) + (native-inputs `(("bison" ,bison-boot0))) + (propagated-inputs + ;; XXX: Here we use an 'm4-boot0' package that's not eq? so that it + ;; appears twice in '%build-inputs', like when we were using + ;; 'package-with-explicit-inputs'. + ;; TODO: Remove this hack on the next rebuild cycle. + `(("m4" ,(package (inherit m4-boot0*))))) + (inputs (%boot0-inputs)) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:tests? #f)))) (define linux-libre-headers-boot0 (mlambda () @@ -1775,28 +1784,30 @@ (define linux-libre-headers-boot0 ;; between (gnu packages linux) and this module. Additionally, memoize ;; the result to play well with further memoization and code that relies ;; on pointer identity; see . - (package-with-bootstrap-guile - (package (inherit linux-libre-headers) - (arguments `(#:guile ,%bootstrap-guile - #:implicit-inputs? #f - ,@(package-arguments linux-libre-headers))) - (native-inputs - `(("perl" ,perl-boot0) + (package + (inherit linux-libre-headers) + (arguments + `(#:guile ,%bootstrap-guile + #:implicit-inputs? #f + ,@(package-arguments linux-libre-headers))) + (native-inputs + `(("perl" ,perl-boot0) - ;; Flex and Bison are required since version 4.16. - ("flex" ,flex-boot0) - ("bison" ,bison-boot0) - ,@(%boot0-inputs))))))) + ;; Flex and Bison are required since version 4.16. + ("flex" ,flex-boot0) + ("bison" ,bison-boot0) + ,@(%boot0-inputs)))))) + +(define with-boot0 + (package-with-explicit-inputs %boot0-inputs + %bootstrap-guile)) (define gnumach-headers-boot0 - (package-with-bootstrap-guile - (package-with-explicit-inputs gnumach-headers - (%boot0-inputs) - (current-source-location) - #:guile %bootstrap-guile))) + (with-boot0 (package-with-bootstrap-guile gnumach-headers))) (define mig-boot0 - (let* ((mig (package (inherit mig) + (let* ((mig (package + (inherit (package-with-bootstrap-guile mig)) (native-inputs `(("bison" ,bison-boot0) ("flex" ,flex-boot0))) (inputs `(("flex" ,flex-boot0))) @@ -1804,42 +1815,32 @@ (define mig-boot0 `(#:configure-flags `(,(string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %build-inputs "flex") "/lib/"))))))) - (package-with-bootstrap-guile - (package-with-explicit-inputs mig (%boot0-inputs) - (current-source-location) - #:guile %bootstrap-guile)))) + (with-boot0 mig))) (define hurd-headers-boot0 (let ((hurd-headers (package (inherit hurd-headers) (native-inputs `(("mig" ,mig-boot0))) (inputs '())))) - (package-with-bootstrap-guile - (package-with-explicit-inputs hurd-headers (%boot0-inputs) - (current-source-location) - #:guile %bootstrap-guile)))) + (with-boot0 (package-with-bootstrap-guile hurd-headers)))) (define hurd-minimal-boot0 (let ((hurd-minimal (package (inherit hurd-minimal) (native-inputs `(("mig" ,mig-boot0))) (inputs '())))) - (package-with-bootstrap-guile - (package-with-explicit-inputs hurd-minimal (%boot0-inputs) - (current-source-location) - #:guile %bootstrap-guile)))) + (with-boot0 (package-with-bootstrap-guile hurd-minimal)))) (define hurd-core-headers-boot0 (mlambda () "Return the Hurd and Mach headers as well as initial Hurd libraries for the bootstrap environment." - (package-with-bootstrap-guile - (package (inherit hurd-core-headers) - (arguments `(#:guile ,%bootstrap-guile - ,@(package-arguments hurd-core-headers))) - (inputs - `(("gnumach-headers" ,gnumach-headers-boot0) - ("hurd-headers" ,hurd-headers-boot0) - ("hurd-minimal" ,hurd-minimal-boot0) - ,@(%boot0-inputs))))))) + (package (inherit (package-with-bootstrap-guile hurd-core-headers)) + (arguments `(#:guile ,%bootstrap-guile + ,@(package-arguments hurd-core-headers))) + (inputs + `(("gnumach-headers" ,gnumach-headers-boot0) + ("hurd-headers" ,hurd-headers-boot0) + ("hurd-minimal" ,hurd-minimal-boot0) + ,@(%boot0-inputs)))))) (define* (kernel-headers-boot0 #:optional (system (%current-system))) (match system @@ -1851,91 +1852,97 @@ (define texinfo-boot0 ;; We build without ncurses because it fails to build at this stage, and ;; because we don't need the stand-alone Info reader. ;; Also, use (%BOOT0-INPUTS) to avoid building Perl once more. - (let ((texinfo (package (inherit texinfo) - (native-inputs '()) - (inputs `(("perl" ,perl-boot0))) + (package + (inherit texinfo) + (native-inputs '()) + (inputs `(,@(%boot0-inputs) + ("perl" ,perl-boot0))) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile - ;; Some of Texinfo 6.1's tests would fail with "Couldn't - ;; set UTF-8 character type in locale" but we don't have a - ;; UTF-8 locale at this stage, so skip them. - (arguments '(#:tests? #f))))) - (package-with-bootstrap-guile - (package-with-explicit-inputs texinfo %boot0-inputs - (current-source-location) - #:guile %bootstrap-guile)))) + ;; Some of Texinfo 6.1's tests would fail with "Couldn't set UTF-8 + ;; character type in locale" but we don't have a UTF-8 locale at this + ;; stage, so skip them. + #:tests? #f)))) (define expat-sans-tests (package (inherit expat) + (inputs (%boot0-inputs)) (arguments ;; XXX: Linking 'runtestscpp' fails with things like: ;; ;; ld: Dwarf Error: found dwarf version '3789', this reader only handles version 2 and 3 information. ;; ;; Skip tests altogether. - (substitute-keyword-arguments (package-arguments expat) - ((#:configure-flags flags ''()) - ;; Since we're not passing the right -Wl,-rpath flags, build the - ;; static library to avoid RUNPATH validation failure. - `(cons "--disable-shared" ,flags)) - ((#:tests? _ #f) #f))))) + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + + ,@(substitute-keyword-arguments (package-arguments expat) + ((#:configure-flags flags ''()) + ;; Since we're not passing the right -Wl,-rpath flags, build the + ;; static library to avoid RUNPATH validation failure. + `(cons "--disable-shared" ,flags)) + ((#:tests? _ #f) #f)))))) (define python-boot0 - (let ((python (package - (inherit python-minimal) - ;; We cannot use Python 3.7 and later here, because they require - ;; pthreads, which is missing on non-x86 platforms at this stage. - ;; Python 3.6 technically supports being built without threading - ;; support, but requires additional patches. - (version "3.5.7") - (source (origin - (inherit (package-source python)) - (uri (string-append "https://www.python.org/ftp/python/" - version "/Python-" version ".tar.xz")) - (patches '()) - (sha256 - (base32 - "1p67pnp2ca5przx2s45r8m55dcn6f5hsm0l4s1zp7mglkf4r4n18")))) - (inputs - `(("expat" ,expat-sans-tests))) ;remove OpenSSL, zlib, etc. - (native-inputs '()) ;and pkg-config - (arguments - (substitute-keyword-arguments (package-arguments - python-minimal) - ;; Disable features that cannot be built at this stage. - ((#:configure-flags _ ''()) - `(list "--without-ensurepip" - "--without-threads")) - ;; Clear #:make-flags, such that changes to the regular - ;; Python package won't interfere with this one. - ((#:make-flags _ ''()) ''()) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'configure 'disable-modules - (lambda _ - (substitute* "setup.py" - ;; Disable ctypes, since it requires libffi. - (("extensions\\.append\\(ctypes\\)") "") - ;; Prevent the 'ossaudiodev' extension from being - ;; built, since it requires Linux headers. - (("'linux', ") "")) - #t)) - (delete 'set-TZDIR))) - ((#:tests? _ #f) #f)))))) - (package-with-bootstrap-guile - (package-with-explicit-inputs python %boot0-inputs - (current-source-location) - #:guile %bootstrap-guile)))) + (package + (inherit python-minimal) + ;; We cannot use Python 3.7 and later here, because they require + ;; pthreads, which is missing on non-x86 platforms at this stage. + ;; Python 3.6 technically supports being built without threading + ;; support, but requires additional patches. + (version "3.5.7") + (source (bootstrap-origin + (origin + (inherit (package-source python)) + (uri (string-append "https://www.python.org/ftp/python/" + version "/Python-" version ".tar.xz")) + (patches '()) + (sha256 + (base32 + "1p67pnp2ca5przx2s45r8m55dcn6f5hsm0l4s1zp7mglkf4r4n18"))))) + (inputs + `(,@(%boot0-inputs) + ("expat" ,expat-sans-tests))) ;remove OpenSSL, zlib, etc. + (native-inputs '()) ;and pkg-config + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile -(define (ld-wrapper-boot0) - ;; We need this so binaries on Hurd will have libmachuser and libhurduser - ;; in their RUNPATH, otherwise validate-runpath will fail. - (make-ld-wrapper "ld-wrapper-boot0" - #:target boot-triplet - #:binutils binutils-boot0 - #:guile %bootstrap-guile - #:bash (car (assoc-ref (%boot0-inputs) "bash")) - #:guile-for-build %bootstrap-guile)) + ,@(substitute-keyword-arguments (package-arguments python-minimal) + ;; Disable features that cannot be built at this stage. + ((#:configure-flags _ ''()) + `(list "--without-ensurepip" + "--without-threads")) + ;; Clear #:make-flags, such that changes to the regular + ;; Python package won't interfere with this one. + ((#:make-flags _ ''()) ''()) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'configure 'disable-modules + (lambda _ + (substitute* "setup.py" + ;; Disable ctypes, since it requires libffi. + (("extensions\\.append\\(ctypes\\)") "") + ;; Prevent the 'ossaudiodev' extension from being + ;; built, since it requires Linux headers. + (("'linux', ") "")) + #t)) + (delete 'set-TZDIR))) + ((#:tests? _ #f) #f)))))) + +(define ld-wrapper-boot0 + (mlambda () + ;; We need this so binaries on Hurd will have libmachuser and libhurduser + ;; in their RUNPATH, otherwise validate-runpath will fail. + (make-ld-wrapper "ld-wrapper-boot0" + #:target boot-triplet + #:binutils binutils-boot0 + #:guile %bootstrap-guile + #:bash (car (assoc-ref (%boot0-inputs) "bash")) + #:guile-for-build %bootstrap-guile))) (define (%boot1-inputs) ;; 2nd stage inputs. @@ -1949,65 +1956,66 @@ (define glibc-final-with-bootstrap-bash ;; store path has no dependencies. Actually, the really-final libc is ;; built just below; the only difference is that this one uses the ;; bootstrap Bash. - (package-with-bootstrap-guile - (package (inherit glibc) - (name "glibc-intermediate") - (arguments - `(#:guile ,%bootstrap-guile - #:implicit-inputs? #f + (package + (inherit glibc) + (name "glibc-intermediate") + (source (bootstrap-origin (package-source glibc))) + (arguments + `(#:guile ,%bootstrap-guile + #:implicit-inputs? #f - ,@(substitute-keyword-arguments (package-arguments glibc) - ((#:configure-flags flags) - `(append (list ,(string-append "--host=" (boot-triplet)) - ,(string-append "--build=" - (nix-system->gnu-triplet))) - ,flags)) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'configure 'pre-configure - (lambda* (#:key inputs #:allow-other-keys) - ;; Don't clobber CPATH with the bootstrap libc. - (setenv "NATIVE_CPATH" (getenv "CPATH")) - (unsetenv "CPATH") + ,@(substitute-keyword-arguments (package-arguments glibc) + ((#:configure-flags flags) + `(append (list ,(string-append "--host=" (boot-triplet)) + ,(string-append "--build=" + (nix-system->gnu-triplet))) + ,flags)) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'configure 'pre-configure + (lambda* (#:key inputs #:allow-other-keys) + ;; Don't clobber CPATH with the bootstrap libc. + (setenv "NATIVE_CPATH" (getenv "CPATH")) + (unsetenv "CPATH") - ;; Tell 'libpthread' where to find 'libihash' on Hurd systems. - ,@(if (hurd-triplet? (%current-system)) - `((substitute* "libpthread/Makefile" - (("LDLIBS-pthread.so =.*") - (string-append "LDLIBS-pthread.so = " - (assoc-ref %build-inputs "kernel-headers") - "/lib/libihash.a\n")))) - '()) + ;; Tell 'libpthread' where to find 'libihash' on Hurd systems. + ,@(if (hurd-triplet? (%current-system)) + `((substitute* "libpthread/Makefile" + (("LDLIBS-pthread.so =.*") + (string-append "LDLIBS-pthread.so = " + (assoc-ref %build-inputs "kernel-headers") + "/lib/libihash.a\n")))) + '()) - ;; 'rpcgen' needs native libc headers to be built. - (substitute* "sunrpc/Makefile" - (("sunrpc-CPPFLAGS =.*" all) - (string-append "CPATH = $(NATIVE_CPATH)\n" - "export CPATH\n" - all "\n"))) - #t))))))) - (propagated-inputs `(("kernel-headers" ,(kernel-headers-boot0)))) - (native-inputs - `(("bison" ,bison-boot0) - ("texinfo" ,texinfo-boot0) - ("perl" ,perl-boot0) - ("python" ,python-boot0))) - (inputs - `(;; The boot inputs. That includes the bootstrap libc. We don't want - ;; it in $CPATH, hence the 'pre-configure' phase above. - ,@(%boot1-inputs) + ;; 'rpcgen' needs native libc headers to be built. + (substitute* "sunrpc/Makefile" + (("sunrpc-CPPFLAGS =.*" all) + (string-append "CPATH = $(NATIVE_CPATH)\n" + "export CPATH\n" + all "\n"))) + #t))))))) + (propagated-inputs `(("kernel-headers" ,(kernel-headers-boot0)))) + (native-inputs + `(("bison" ,bison-boot0) + ("texinfo" ,texinfo-boot0) + ("perl" ,perl-boot0) + ("python" ,python-boot0))) + (inputs + `( ;; The boot inputs. That includes the bootstrap libc. We don't want + ;; it in $CPATH, hence the 'pre-configure' phase above. + ,@(%boot1-inputs) - ;; A native MiG is needed to build Glibc on Hurd. - ,@(if (hurd-triplet? (%current-system)) - `(("mig" ,mig-boot0)) - '()) + ;; A native MiG is needed to build Glibc on Hurd. + ,@(if (hurd-triplet? (%current-system)) + `(("mig" ,mig-boot0)) + '()) - ;; A native GCC is needed to build `cross-rpcgen'. - ("native-gcc" ,@(assoc-ref (%boot0-inputs) "gcc")) + ;; A native GCC is needed to build `cross-rpcgen'. + ("native-gcc" ,@(assoc-ref (%boot0-inputs) "gcc")) - ;; Here, we use the bootstrap Bash, which is not satisfactory - ;; because we don't want to depend on bootstrap tools. - ("static-bash" ,@(assoc-ref (%boot0-inputs) "bash"))))))) + ;; Here, we use the bootstrap Bash, which is not satisfactory + ;; because we don't want to depend on bootstrap tools. + ("static-bash" ,@(assoc-ref (%boot0-inputs) "bash")))))) (define (cross-gcc-wrapper gcc binutils glibc bash) "Return a wrapper for the pseudo-cross toolchain GCC/BINUTILS/GLIBC @@ -2071,99 +2079,92 @@ (define (gcc-boot0-intermediate-wrapped) (define static-bash-for-glibc ;; A statically-linked Bash to be used by GLIBC-FINAL in system(3) & co. - (let ((bash (package - (inherit static-bash) - (arguments - (substitute-keyword-arguments - (package-arguments static-bash) - ((#:guile _ #f) - '%bootstrap-guile) - ((#:configure-flags flags '()) - ;; Add a '-L' flag so that the pseudo-cross-ld of - ;; BINUTILS-BOOT0 can find libc.a. - `(append ,flags - (list (string-append "LDFLAGS=-static -L" - (assoc-ref %build-inputs - "libc:static") - "/lib"))))))))) - (package-with-bootstrap-guile - (package-with-explicit-inputs - bash - (lambda _ - `(("gcc" ,(gcc-boot0-intermediate-wrapped)) - ("libc" ,glibc-final-with-bootstrap-bash) - ("libc:static" ,glibc-final-with-bootstrap-bash "static") - ,@(fold alist-delete (%boot1-inputs) - '("gcc" "libc")))) - (current-source-location) - #:guile %bootstrap-guile)))) + (package + (inherit static-bash) + (source (bootstrap-origin (package-source static-bash))) + (inputs `(("gcc" ,(gcc-boot0-intermediate-wrapped)) + ("libc" ,glibc-final-with-bootstrap-bash) + ("libc:static" ,glibc-final-with-bootstrap-bash "static") + ,@(fold alist-delete (%boot1-inputs) + '("gcc" "libc")))) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + + ,@(substitute-keyword-arguments (package-arguments static-bash) + ((#:configure-flags flags '()) + ;; Add a '-L' flag so that the pseudo-cross-ld of + ;; BINUTILS-BOOT0 can find libc.a. + `(append ,flags + (list (string-append "LDFLAGS=-static -L" + (assoc-ref %build-inputs + "libc:static") + "/lib"))))))))) (define gettext-boot0 ;; A minimal gettext used during bootstrap. - (let ((gettext-minimal - (package (inherit gettext-minimal) - (name "gettext-boot0") - ;; Newer versions of GNU gettext depends on libxml2 and ncurses. To - ;; simplify the dependency chain, we stick to this version here. - (version "0.19.8.1") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/gettext/gettext-" - version ".tar.gz")) - (sha256 - (base32 - "0hsw28f9q9xaggjlsdp2qmbp2rbd1mp0njzan2ld9kiqwkq2m57z")))) - (inputs '()) ;zero dependencies - (arguments - `(#:tests? #f - #:phases (modify-phases %standard-phases - ;; Build only the tools. - (add-after 'unpack 'chdir - (lambda _ - (chdir "gettext-tools") - #t)) + (package + (inherit gettext-minimal) + (name "gettext-boot0") + ;; Newer versions of GNU gettext depends on libxml2 and ncurses. To + ;; simplify the dependency chain, we stick to this version here. + (version "0.19.8.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gettext/gettext-" + version ".tar.gz")) + (sha256 + (base32 + "0hsw28f9q9xaggjlsdp2qmbp2rbd1mp0njzan2ld9kiqwkq2m57z")))) + (inputs (%boot1-inputs)) ;zero dependencies + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:tests? #f + #:phases (modify-phases %standard-phases + ;; Build only the tools. + (add-after 'unpack 'chdir + (lambda _ + (chdir "gettext-tools") + #t)) - ;; Some test programs require pthreads, which we don't have. - (add-before 'configure 'no-test-programs - (lambda _ - (substitute* "tests/Makefile.in" - (("^PROGRAMS =.*$") - "PROGRAMS =\n")) - #t)))))))) - (package-with-bootstrap-guile - (package-with-explicit-inputs gettext-minimal - %boot1-inputs - (current-source-location) - #:guile %bootstrap-guile)))) + ;; Some test programs require pthreads, which we don't have. + (add-before 'configure 'no-test-programs + (lambda _ + (substitute* "tests/Makefile.in" + (("^PROGRAMS =.*$") + "PROGRAMS =\n")) + #t))))))) (define glibc-final ;; The final glibc, which embeds the statically-linked Bash built above. ;; Use 'package/inherit' so we get the 'replacement' of 'glibc', if any. - (let ((glibc (package-with-bootstrap-guile glibc))) - (package/inherit glibc - (name "glibc") - (inputs `(("static-bash" ,static-bash-for-glibc) - ,@(alist-delete - "static-bash" - (package-inputs glibc-final-with-bootstrap-bash)))) + (package/inherit + glibc + (name "glibc") + (source (bootstrap-origin (package-source glibc))) + (inputs `(("static-bash" ,static-bash-for-glibc) + ,@(alist-delete + "static-bash" + (package-inputs glibc-final-with-bootstrap-bash)))) - ;; This time we need 'msgfmt' to install all the libc.mo files. - (native-inputs `(,@(package-native-inputs glibc-final-with-bootstrap-bash) - ("gettext" ,gettext-boot0))) + ;; This time we need 'msgfmt' to install all the libc.mo files. + (native-inputs `(,@(package-native-inputs glibc-final-with-bootstrap-bash) + ("gettext" ,gettext-boot0))) - (propagated-inputs - (package-propagated-inputs glibc-final-with-bootstrap-bash)) + (propagated-inputs + (package-propagated-inputs glibc-final-with-bootstrap-bash)) - ;; The final libc only refers to itself, but the 'debug' output contains - ;; references to GCC-BOOT0 and to the Linux headers. XXX: Would be great - ;; if 'allowed-references' were per-output. - (arguments - `(#:allowed-references - ,(cons* `(,gcc-boot0 "lib") (kernel-headers-boot0) - static-bash-for-glibc - (package-outputs glibc-final-with-bootstrap-bash)) + ;; The final libc only refers to itself, but the 'debug' output contains + ;; references to GCC-BOOT0 and to the Linux headers. XXX: Would be great + ;; if 'allowed-references' were per-output. + (arguments + `(#:allowed-references + ,(cons* `(,gcc-boot0 "lib") (kernel-headers-boot0) + static-bash-for-glibc + (package-outputs glibc-final-with-bootstrap-bash)) - ,@(package-arguments glibc-final-with-bootstrap-bash)))))) + ,@(package-arguments glibc-final-with-bootstrap-bash))))) (define (gcc-boot0-wrapped) ;; Make the cross-tools GCC-BOOT0 and BINUTILS-BOOT0 available under the @@ -2179,21 +2180,23 @@ (define (%boot2-inputs) ,@(fold alist-delete (%boot1-inputs) '("libc" "gcc" "linux-libre-headers")))) (define binutils-final - (package-with-bootstrap-guile - (package (inherit binutils) - (arguments - `(#:guile ,%bootstrap-guile - #:implicit-inputs? #f - #:allowed-references ("out" ,glibc-final) - ,@(package-arguments binutils))) - (inputs (%boot2-inputs))))) + (package + (inherit binutils) + (source (bootstrap-origin (package-source binutils))) + (arguments + `(#:guile ,%bootstrap-guile + #:implicit-inputs? #f + #:allowed-references ("out" ,glibc-final) + ,@(package-arguments binutils))) + (inputs (%boot2-inputs)))) (define libstdc++ ;; Intermediate libstdc++ that will allow us to build the final GCC ;; (remember that GCC-BOOT0 cannot build libstdc++.) - (let ((lib (package-with-bootstrap-guile (make-libstdc++ gcc)))) + (let ((lib (make-libstdc++ gcc))) (package (inherit lib) + (source (bootstrap-origin (package-source lib))) (arguments `(#:guile ,%bootstrap-guile #:implicit-inputs? #f @@ -2218,23 +2221,23 @@ (define libstdc++ (define zlib-final ;; Zlib used by GCC-FINAL. - (package-with-bootstrap-guile - (package - (inherit zlib) - (arguments - `(#:guile ,%bootstrap-guile - #:implicit-inputs? #f - #:allowed-references ("out" ,glibc-final) - ,@(package-arguments zlib))) - (inputs (%boot2-inputs))))) + (package + (inherit zlib) + (arguments + `(#:guile ,%bootstrap-guile + #:implicit-inputs? #f + #:allowed-references ("out" ,glibc-final) + ,@(package-arguments zlib))) + (inputs (%boot2-inputs)))) -(define (ld-wrapper-boot3) - ;; A linker wrapper that uses the bootstrap Guile. - (make-ld-wrapper "ld-wrapper-boot3" - #:binutils binutils-final - #:guile %bootstrap-guile - #:bash (car (assoc-ref (%boot2-inputs) "bash")) - #:guile-for-build %bootstrap-guile)) +(define ld-wrapper-boot3 + (mlambda () + ;; A linker wrapper that uses the bootstrap Guile. + (make-ld-wrapper "ld-wrapper-boot3" + #:binutils binutils-final + #:guile %bootstrap-guile + #:bash (car (assoc-ref (%boot2-inputs) "bash")) + #:guile-for-build %bootstrap-guile))) (define gcc-final ;; The final GCC. @@ -2335,31 +2338,32 @@ (define bash-final ;; Link with `-static-libgcc' to make sure we don't retain a reference ;; to the bootstrap GCC. Use "bash-minimal" to avoid an extra dependency ;; on Readline and ncurses. - (let ((bash (package - (inherit bash-minimal) - (arguments - `(#:disallowed-references - ,(assoc-ref (%boot3-inputs) "coreutils&co") - ,@(package-arguments bash-minimal)))))) - (package-with-bootstrap-guile - (package-with-explicit-inputs (static-libgcc-package bash) - %boot3-inputs - (current-source-location) - #:guile %bootstrap-guile)))) + (let ((bash (static-libgcc-package bash-minimal))) + (package + (inherit bash) + (source (bootstrap-origin (package-source bash))) + (inputs (%boot3-inputs)) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + + #:disallowed-references ,(assoc-ref (%boot3-inputs) "coreutils&co") + + ,@(package-arguments bash)))))) (define (%boot4-inputs) ;; Now use the final Bash. `(("bash" ,bash-final) ,@(alist-delete "bash" (%boot3-inputs)))) +(define with-boot4 + (package-with-explicit-inputs %boot4-inputs %bootstrap-guile)) + (define-public guile-final ;; This package must be public because other modules refer to it. However, ;; mark it as hidden so that 'fold-packages' ignores it. - (package-with-bootstrap-guile - (package-with-explicit-inputs (hidden-package guile-2.2/fixed) - %boot4-inputs - (current-source-location) - #:guile %bootstrap-guile))) + (with-boot4 (hidden-package + (package-with-bootstrap-guile guile-2.2/fixed)))) (define glibc-utf8-locales-final ;; Now that we have GUILE-FINAL, build the UTF-8 locales. They are needed @@ -2371,10 +2375,7 @@ (define glibc-utf8-locales-final (inherit glibc-utf8-locales) (native-inputs `(("glibc" ,glibc-final) - ("gzip" - ,(package-with-explicit-inputs gzip %boot4-inputs - (current-source-location) - #:guile %bootstrap-guile)))))) + ("gzip" ,(with-boot4 gzip)))))) (define-public ld-wrapper ;; The final 'ld' wrapper, which uses the final Guile and Binutils. @@ -2390,36 +2391,45 @@ (define (%boot5-inputs) `(("locales" ,glibc-utf8-locales-final) ,@(%boot4-inputs))) +(define with-boot5 + (package-with-explicit-inputs %boot5-inputs)) + (define gnu-make-final ;; The final GNU Make, which uses the final Guile. - (package-with-bootstrap-guile - (package-with-explicit-inputs gnu-make - (lambda _ - `(("guile" ,guile-final) - ,@(%boot5-inputs))) - (current-source-location)))) + ;; FIXME: This is a mistake: we shouldn't be propagating GUILE-FINAL to + ;; PKG-CONFIG. + ;; TODO: Fix that on the next rebuild cycle. + (let ((pkg-config (package + (inherit pkg-config) + (inputs `(("guile" ,guile-final) + ,@(%boot5-inputs))) + (arguments + `(#:implicit-inputs? #f + ,@(package-arguments pkg-config)))))) + (package + (inherit (package-with-bootstrap-guile gnu-make)) + (inputs `(("guile" ,guile-final) + ,@(%boot5-inputs))) + (native-inputs `(("pkg-config" ,pkg-config))) + (arguments + `(#:implicit-inputs? #f + ,@(package-arguments gnu-make)))))) + (define coreutils-final ;; The final Coreutils. Treat them specially because some packages, such as ;; Findutils, keep a reference to the Coreutils they were built with. - (package-with-bootstrap-guile - (package-with-explicit-inputs coreutils - %boot5-inputs - (current-source-location) - - ;; Use the final Guile, linked against the - ;; final libc with working iconv, so that - ;; 'substitute*' works well when touching - ;; test files in Gettext. - #:guile guile-final))) + (with-boot5 (package-with-bootstrap-guile coreutils) + ;; Use the final Guile, linked against the + ;; final libc with working iconv, so that + ;; 'substitute*' works well when touching + ;; test files in Gettext. + )) (define grep-final ;; The final grep. Gzip holds a reference to it (via zgrep), so it must be ;; built before gzip. - (let ((grep (package-with-bootstrap-guile - (package-with-explicit-inputs grep %boot5-inputs - (current-source-location) - #:guile guile-final)))) + (let ((grep (with-boot5 (package-with-bootstrap-guile grep)))) (package/inherit grep (inputs (alist-delete "pcre" (package-inputs grep))) (native-inputs `(("perl" ,perl-boot0)))))) @@ -2430,12 +2440,12 @@ (define (%boot6-inputs) ("grep" ,grep-final) ,@(%boot5-inputs))) +(define with-boot6 + (package-with-explicit-inputs %boot6-inputs)) + (define sed-final ;; The final sed. - (let ((sed (package-with-bootstrap-guile - (package-with-explicit-inputs sed %boot6-inputs - (current-source-location) - #:guile guile-final)))) + (let ((sed (with-boot6 (package-with-bootstrap-guile sed)))) (package/inherit sed (native-inputs `(("perl" ,perl-boot0)))))) (define-public %final-inputs @@ -2443,12 +2453,11 @@ (define-public %final-inputs ;; still use 'package-with-bootstrap-guile' so that the bootstrap tools are ;; used for origins that have patches, thereby avoiding circular ;; dependencies. - (let ((finalize (compose package-with-bootstrap-guile - (cut package-with-explicit-inputs <> %boot6-inputs - (current-source-location))))) + (let ((finalize (compose with-boot6 + package-with-bootstrap-guile))) `(,@(map (match-lambda - ((name package) - (list name (finalize package)))) + ((name package) + (list name (finalize package)))) `(("tar" ,tar) ("gzip" ,gzip) ("bzip2" ,bzip2) diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm index 1c98e381ab..6aac60d284 100644 --- a/gnu/packages/cpp.scm +++ b/gnu/packages/cpp.scm @@ -206,7 +206,7 @@ (define-public fifo-map (define-public json-modern-cxx (package (name "json-modern-cxx") - (version "3.1.2") + (version "3.7.0") (home-page "https://github.com/nlohmann/json") (source (origin @@ -215,30 +215,34 @@ (define-public json-modern-cxx (commit (string-append "v" version)))) (sha256 (base32 - "1mpr781fb2dfbyscrr7nil75lkxsazg4wkm749168lcf2ksrrbfi")) + "0v7xih4zjixxxfvkfbs7a8j9qcvpwlsv4vrkbyns3hc7b44nb8ap")) (file-name (git-file-name name version)) (modules '((guix build utils))) (snippet '(begin - (delete-file-recursively "./third_party") - (delete-file-recursively "./test/thirdparty") - (delete-file-recursively "./benchmarks/thirdparty") - ;; Splits catch and fifo_map + ;; Delete bundled software. Preserve doctest_compatibility.h, which + ;; is a wrapper library added by this package. + (install-file "./test/thirdparty/doctest/doctest_compatibility.h" "/tmp") + (for-each delete-file-recursively + '("./third_party" "./test/thirdparty" "./benchmarks/thirdparty")) + (install-file "/tmp/doctest_compatibility.h" "./test/thirdparty/doctest") + + ;; Adjust for the unbundled fifo_map and doctest. + (substitute* "./test/thirdparty/doctest/doctest_compatibility.h" + (("#include \"doctest\\.h\"") + "#include ")) (with-directory-excursion "test/src" - (let ((files (find-files "." ".*\\.cpp"))) - (substitute* files - (("#include ?\"(catch.hpp)\"" all catch-hpp) - (string-append "#include "))) + (let ((files (find-files "." "\\.cpp$"))) (substitute* files (("#include ?\"(fifo_map.hpp)\"" all fifo-map-hpp) (string-append "#include "))))) #t)))) (native-inputs - `(("amalgamate" ,amalgamate))) + `(("amalgamate" ,amalgamate) + ("doctest" ,doctest))) (inputs - `(("catch2" ,catch-framework2) - ("fifo-map" ,fifo-map))) + `(("fifo-map" ,fifo-map))) (build-system cmake-build-system) (synopsis "JSON parser and printer library for C++") (description "JSON for Modern C++ is a C++ JSON library that provides diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm index 5e1e7eb400..aa5d24c401 100644 --- a/gnu/packages/curl.scm +++ b/gnu/packages/curl.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2015 Tomáš Čech ;;; Copyright © 2015 Ludovic Courtès ;;; Copyright © 2016, 2017, 2019 Leo Famulari -;;; Copyright © 2017 Marius Bakke +;;; Copyright © 2017, 2019 Marius Bakke ;;; Copyright © 2017 Efraim Flashner ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2018 Roel Janssen @@ -51,6 +51,7 @@ (define-public curl (package (name "curl") (version "7.65.3") + (replacement curl-7.66.0) (source (origin (method url-fetch) (uri (string-append "https://curl.haxx.se/download/curl-" @@ -142,6 +143,18 @@ (define-public curl "See COPYING in the distribution.")) (home-page "https://curl.haxx.se/"))) +(define curl-7.66.0 + (package + (inherit curl) + (version "7.66.0") + (source (origin + (method url-fetch) + (uri (string-append "https://curl.haxx.se/download/curl-" + version ".tar.xz")) + (sha256 + (base32 + "1hcqxpibhknhjy56wcxz5vd6m9ggx3ykwp3wp5wx05ih36481d6v")))))) + (define-public kurly (package (name "kurly") diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm index 82631deef6..3372fc89e1 100644 --- a/gnu/packages/debug.scm +++ b/gnu/packages/debug.scm @@ -264,21 +264,21 @@ (define-public american-fuzzy-lop (license asl2.0)))) (define-public stress-make - (let ((commit "506e6cfd98d165f22bee91c408b7c20117a682c4") - (revision "0")) ;No official source distribution + (let ((commit "9e92dff8f0157f012aaf31de5b8b8112ad720100") + (revision "1")) ;No official source distribution (package (name "stress-make") - (version (string-append "1.0-" revision "." (string-take commit 7))) + (version (git-version "1.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/losalamos/stress-make.git") + (url "https://github.com/lanl/stress-make.git") (commit commit))) - (file-name (string-append name "-" version "-checkout")) + (file-name (git-file-name name version)) (sha256 (base32 - "1j330yqhc7plwin04qxbh8afpg5nfnw1xvnmh8rk6mmqg9w6ik70")))) + "1z1yiwnqyzv3v6152fnjbfh2lr8q8fi5xxfdclnr8l8sd4c1rasp")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) @@ -308,8 +308,12 @@ (define-public stress-make (which "sh")))))) (add-before 'configure 'repack-make (lambda _ - (invoke "tar" "cJf" "./make.tar.xz" ,make-dir))))))) - (home-page "https://github.com/losalamos/stress-make") + (invoke "tar" "cJf" "./make.tar.xz" ,make-dir))) + (add-before 'build 'setup-go + ;; The Go cache is required starting in Go 1.12, and it needs + ;; to be writable. + (lambda _ (setenv "GOCACHE" "/tmp/go-cache") #t)))))) + (home-page "https://github.com/lanl/stress-make") (synopsis "Expose race conditions in Makefiles") (description "Stress Make is a customized GNU Make that explicitly manages the order @@ -320,7 +324,7 @@ (define-public stress-make conditions.") ;; stress-make wrapper is under BSD-3-modifications-must-be-indicated, ;; and patched GNU Make is under its own license. - (license (list (non-copyleft "COPYING.md") + (license (list (non-copyleft "LICENSE.md") (package-license gnu-make)))))) (define-public zzuf diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm index 4de0745190..8421682924 100644 --- a/gnu/packages/disk.scm +++ b/gnu/packages/disk.scm @@ -78,26 +78,25 @@ (define-module (gnu packages disk) (define-public parted (package (name "parted") - (version "3.2") + (version "3.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/parted/parted-" version ".tar.xz")) - (patches (search-patches "parted-glibc-compat.patch")) (sha256 (base32 - "1r3qpg3bhz37mgvp9chsaa3k0csby3vayfvz8ggsqz194af5i2w5")))) + "0i1xp367wpqw75b20c3jnism3dg3yqj4a7a22p2jb1h1hyyv9qjp")))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases - (add-after - 'unpack 'fix-locales-and-python - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "tests/t0251-gpt-unicode.sh" - (("C.UTF-8") "en_US.utf8")) ;not in Glibc locales - (substitute* "tests/msdos-overlap" - (("/usr/bin/python") (which "python")))))))) + (add-after 'unpack 'fix-locales-and-python + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "tests/t0251-gpt-unicode.sh" + (("C.UTF-8") "en_US.utf8")) ;not in Glibc locales + (substitute* "tests/msdos-overlap" + (("/usr/bin/python") (which "python"))) + #t))))) (inputs `(("lvm2" ,lvm2) ("readline" ,readline) @@ -105,6 +104,7 @@ (define-public parted (native-inputs `(("gettext" ,gettext-minimal) ;; For the tests. + ("e2fsprogs" ,e2fsprogs) ("perl" ,perl) ("python" ,python-2))) (home-page "https://www.gnu.org/software/parted/") diff --git a/gnu/packages/distributed.scm b/gnu/packages/distributed.scm index 0eaa1d8b83..4e1acc4b67 100644 --- a/gnu/packages/distributed.scm +++ b/gnu/packages/distributed.scm @@ -18,6 +18,7 @@ (define-module (gnu packages distributed) #:use-module (guix packages) + #:use-module (guix utils) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system gnu) @@ -47,8 +48,9 @@ (define-public boinc-client (uri (git-reference (url "https://github.com/boinc/boinc.git") (commit (string-append "client_release/" - "7.16/" - version)))) + (version-major+minor version) + "/" version)))) + (file-name (git-file-name "boinc" version)) (sha256 (base32 "0w2qimcwyjhapk3z7zyq7jkls23hsnmm35iw7m4s4if04fp70dx0")))) @@ -72,12 +74,10 @@ (define-public boinc-client (description "BOINC is a platform for high-throughput computing on a large scale (thousands or millions of computers). It can be used for volunteer computing (using consumer devices) or grid computing (using organizational -resources). It supports virtualized, parallel, and GPU-based applications. - -BOINC is distributed under the LGPL open source license. It can be used for -commercial purposes, and applications need not be open source.") +resources). It supports virtualized, parallel, and GPU-based applications.") (home-page "https://boinc.berkeley.edu/") - (license license:gpl3+))) + ;; BOINC is distributed as LGPL3+, with some individual modules under GPL3+. + (license (list license:lgpl3+ license:gpl3+)))) (define-public boinc-server (package (inherit boinc-client) diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm index dcef7370bd..8e43447921 100644 --- a/gnu/packages/django.scm +++ b/gnu/packages/django.scm @@ -41,13 +41,13 @@ (define-module (gnu packages django) (define-public python-django (package (name "python-django") - (version "1.11.21") + (version "1.11.25") (source (origin (method url-fetch) (uri (pypi-uri "Django" version)) (sha256 (base32 - "0adhcw8sx2mgwk9y2j760y96pqbip1ni3sf2v2ls5zxc9x93wwms")))) + "0rpgx212n8gh61nwizkyldvskna808xpcvawmavk5mc5c9cfh52k")))) (build-system python-build-system) (arguments '(#:modules ((srfi srfi-1) diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm index 5f3686347d..5167cf8379 100644 --- a/gnu/packages/dns.scm +++ b/gnu/packages/dns.scm @@ -578,14 +578,14 @@ (define-public yadifa (define-public knot (package (name "knot") - (version "2.8.2") + (version "2.9.0") (source (origin (method url-fetch) (uri (string-append "https://secure.nic.cz/files/knot-dns/" "knot-" version ".tar.xz")) (sha256 - (base32 "0dx1lp4w33rpa54nns41k4vfdfin6naaskwh132r4qs0l9hl7lh0")) + (base32 "18i1kdyaqaskjyhmq888wml4d2p4ic1sbjynlb6ggfxsxzm38x6z")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index e6cf4bd1eb..bbafd548b1 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -265,21 +265,28 @@ (define-public emacs-with-editor (license license:gpl3+))) (define-public emacs-magit - ;; Version 2.90.1 has trouble loading the transient library, - ;; so we use a more recent commit that fixes it. - (let ((commit "b4aec016b5577afa8d889f258b499814d1bb1d94")) + ;; `magit-setup-buffer' macro introduced in c761d28d and required in + ;; `emacs-forge'. + (let ((commit "c761d28d49e5238037512b898db0ec9b40d85770")) (package (name "emacs-magit") - (version (git-version "2.90.1" "1" commit)) + (version (git-version "2.90.1" "2" commit)) (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/magit/magit") + (url "https://github.com/magit/magit.git") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 - "0zl7v6z0y50pcgqsf2r8c1k3r5nwjad9ba7r6sgrnf4rc62br7jv")))) + "16qx0404l05q1m6w7y5j8ck1z5nfmpinm00w0p2yh1hn5zzwy6dd")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Fix syntax error + (substitute* "lisp/magit-extras.el" + (("rev\\)\\)\\)\\)\\)\\)") "rev)))))")) + #t)))) (build-system gnu-build-system) (native-inputs `(("texinfo" ,texinfo) ("emacs" ,emacs-minimal))) @@ -318,6 +325,39 @@ (define-public emacs-magit #:phases (modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda _ + (chmod "lisp/magit-extras.el" #o644) + (emacs-batch-edit-file "lisp/magit-extras.el" + `(progn (progn + (goto-char (point-min)) + (re-search-forward "(defun magit-copy-buffer-revision ()") + (forward-sexp 2) + (kill-sexp) + (insert ,(format #f "~S" + '(if (use-region-p) + (copy-region-as-kill nil nil 'region) + (when-let ((rev (cl-case major-mode + ((magit-cherry-mode + magit-log-select-mode + magit-reflog-mode + magit-refs-mode + magit-revision-mode + magit-stash-mode + magit-stashes-mode) + (car magit-refresh-args)) + ((magit-diff-mode magit-log-mode) + (let ((r (caar magit-refresh-args))) + (if (string-match "\\.\\.\\.?\\(.+\\)" r) + (match-string 1 r) + r))) + (magit-status-mode "HEAD")))) + (when (magit-commit-p rev) + (setq rev (magit-rev-parse rev)) + (push (list rev default-directory) magit-revision-stack) + (kill-new (message "%s" rev)))))))) + (basic-save-buffer))) + #t)) (delete 'configure) (add-before 'build 'patch-exec-paths @@ -524,39 +564,41 @@ (define-public emacs-graphql (license license:gpl3+))) (define-public emacs-ghub - (package - (name "emacs-ghub") - (version "3.2.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/magit/ghub") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0lp52qygyavddl1lrgsyb6mq7hcf9h89dy2pzya3mb2va49f0vvl")))) - (build-system emacs-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'install 'make-info - (lambda _ - (invoke "make" "info")))))) - (native-inputs - `(("texinfo" ,texinfo))) - (propagated-inputs - `(("dash" ,emacs-dash) - ("graphql" ,emacs-graphql) - ("treepy" ,emacs-treepy))) - (home-page "https://github.com/magit/ghub") - (synopsis "Emacs client libraries for the APIs of various Git forges") - (description - "Ghub provides basic support for using the APIs of various Git forges from + ;; We need a newer commit to avoid problems in emacs-forge. + (let ((commit "cf0b13aeba4df3798e49c205cac2d8fefd53a137") + (revision "1")) + (package + (name "emacs-ghub") + (version (git-version "3.2.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/magit/ghub") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0fzayvcysk80vv4q332axcjf80x6gsnpcbl0svmpb017ii6wxhid")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'install 'make-info + (lambda _ + (invoke "make" "info")))))) + (native-inputs + `(("texinfo" ,texinfo))) + (propagated-inputs + `(("dash" ,emacs-dash) + ("treepy" ,emacs-treepy))) + (home-page "https://github.com/magit/ghub") + (synopsis "Emacs client libraries for the APIs of various Git forges") + (description + "Ghub provides basic support for using the APIs of various Git forges from Emacs packages. It supports the REST APIs of Github, Github GraphQL, Gitlab, Gitea, Gogs and Bitbucket. It abstracts access to API resources using only a handful of functions that are not resource-specific.") - (license license:gpl3+))) + (license license:gpl3+)))) (define-public emacs-scribble-mode (let ((commit "217945d54de5e4bb207033f2116baa28f5c5ecf2") @@ -610,8 +652,8 @@ (define-public emacs-shroud (license license:gpl3+))) (define-public emacs-unpackaged-el - (let ((commit "c0d58cf81e531b2b6fa1bd5dd612dc1b93d4d186") - (revision "2")) + (let ((commit "746801a677ada6cd6fa076e423aa0953779f3fad") + (revision "3")) (package (name "emacs-unpackaged-el") (version (git-version "0" revision commit)) @@ -624,7 +666,7 @@ (define-public emacs-unpackaged-el (file-name (git-file-name name version)) (sha256 (base32 - "0y3sgvd51l4pb3acps92bazfk49da6nim1f1hyxzy1ravg4kbw83")))) + "0jvb2ci0h0lj368qhbff3pzkxj3nhlligpbkjzi525k9rkjgm7l8")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-dash" ,emacs-dash) @@ -2946,29 +2988,35 @@ (define-public emacs-robot-mode (license license:gpl3+)))) (define-public emacs-rspec - (package - (name "emacs-rspec") - (version "1.11") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/pezra/rspec-mode.git") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0hrn5n7aaymwimk511kjij44vqaxbmhly1gwmlmsrnbvvma7f2mp")))) - (build-system emacs-build-system) - (home-page "https://github.com/pezra/rspec-mode") - (synopsis "Provides a rspec mode for working with RSpec") - (description - "The Emacs RSpec mode provides keybindings for Ruby source files, e.g. to + (let ((commit "66ea7cc9699d6edc6115daa024818adbd85efc20") + (revision "1")) + (package + (name "emacs-rspec") + (version (git-version "1.11" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pezra/rspec-mode.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0b11s8r0pi7ah54km4yg4fqff8wkk409d25qnlwm1l94pdwjd1c8")))) + (build-system emacs-build-system) + (arguments + `(#:include (cons "^snippets\\/rspec-mode\\/" %default-include) + #:tests? #t + #:test-command '("make" "test"))) + (home-page "https://github.com/pezra/rspec-mode") + (synopsis "Provides a rspec mode for working with RSpec") + (description + "The Emacs RSpec mode provides keybindings for Ruby source files, e.g. to verify the spec associated with the current buffer, or entire project, as well as moving between the spec files, and corresponding code files. Also included are keybindings for spec files and Dired buffers, as well as snippets for yasnippet.") - (license license:gpl3+))) + (license license:gpl3+)))) (define-public emacs-smart-mode-line (package @@ -3306,14 +3354,14 @@ (define-public emacs-ob-ipython (define-public emacs-debbugs (package (name "emacs-debbugs") - (version "0.19") + (version "0.20") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/debbugs-" version ".tar")) (sha256 (base32 - "0cpby8f088cqb5mpd756a2mb706x763k15cg2xdmmsxl415k3yw4")))) + "03mmb1zvbqlsznl5agq8k3xrlcz310vnsa2zn0y8myanm4ra51zm")))) (build-system emacs-build-system) (arguments '(#:include '("\\.el$" "\\.wsdl$" "\\.info$"))) (propagated-inputs @@ -4978,15 +5026,14 @@ (define-public emacs-test-simple (define-public emacs-load-relative (package (name "emacs-load-relative") - (version "1.3") + (version "1.3.1") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/load-relative-" version ".el")) (sha256 - (base32 - "1hfxb2436jdsi9wfmsv47lkkpa5galjf5q81bqabbsv79rv59dps")))) + (base32 "1m37scr82lqqy954fchjxrmdh4lngrl4d1yzxhp3yfjhsydizhrj")))) (build-system emacs-build-system) (home-page "http://github.com/rocky/emacs-load-relative") (synopsis "Emacs Lisp relative file loading related functions") @@ -5266,12 +5313,11 @@ (define-public emacs-ivy-yasnippet (define-public emacs-ivy-rich ;; The latest release version has a small mistake that has since been fixed, ;; so we use a more recent commit. - (let ((commit "f6bfa293c6df0b43cc411876b665816ec3f03d08") - (version "0.1.4") - (revision "1")) + (let ((commit "7a667b135983a1f3ad33d6db8514638e2a3bdfb3") + (revision "2")) (package (name "emacs-ivy-rich") - (version (git-version version revision commit)) + (version (git-version "0.1.4" revision commit)) (source (origin (method git-fetch) @@ -5280,7 +5326,7 @@ (define-public emacs-ivy-rich (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "1s8nwwb1z6lkc58g02pi8w99qms948k8d02lw8k8cq47dw87i219")))) + (base32 "1v5j6pak2j1wjw19y7rx9rhxif0bj2h47xyl2knfcl6fi4qiqm9y")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-ivy" ,emacs-ivy))) @@ -6595,26 +6641,29 @@ (define-public emacs-web-mode (license license:gpl3+))) (define-public emacs-wgrep - (package - (name "emacs-wgrep") - (version "2.3.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/mhayashi1120/Emacs-wgrep") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0pgyf9vfcahb495q01hi1mvkmv846w4rj6zyf52is8x7sjj7x44s")))) - (build-system emacs-build-system) - (home-page "https://github.com/mhayashi1120/Emacs-wgrep") - (synopsis "Edit a grep buffer and apply those changes to the files") - (description - "Emacs wgrep allows you to edit a grep buffer and apply those changes + ;; Tag is missing, so we use the commit directly. + ;; https://github.com/mhayashi1120/Emacs-wgrep/issues/64 + (let ((commit "379afd89ebd76f63842c8589127d66096a8bb595")) + (package + (name "emacs-wgrep") + (version "2.3.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mhayashi1120/Emacs-wgrep") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0v1qx8z1xj9qzirlycbihnkpwcklyi3a0j8lil78pmdpixdbgh47")))) + (build-system emacs-build-system) + (home-page "https://github.com/mhayashi1120/Emacs-wgrep") + (synopsis "Edit a grep buffer and apply those changes to the files") + (description + "Emacs wgrep allows you to edit a grep buffer and apply those changes to the file buffer. Several backends are supported beside the classic grep: ack, ag, helm and pt.") - (license license:gpl3+))) + (license license:gpl3+)))) (define-public emacs-helm (package @@ -6889,14 +6938,14 @@ (define-public emacs-cider CIDER).") (license license:gpl3+))) -;; There hasn't been a tag or release since 2015, so we take the latest +;; There hasn't been a tag or release since 2016, so we take the latest ;; commit. (define-public emacs-sly - (let ((commit "486bfbe95612bcdc0960c490207970a188e0fbb9") - (revision "1")) + (let ((commit "29dccc0735283897a6dbd97e0b6828a45c2985e2") + (revision "2")) (package (name "emacs-sly") - (version (string-append "1.0.0-" revision "." (string-take commit 9))) + (version (git-version "1.0.0" revision commit)) (source (origin (method git-fetch) @@ -6906,14 +6955,45 @@ (define-public emacs-sly (file-name (git-file-name name version)) (sha256 (base32 - "0ib4q4k3h3qn88pymyjjmlmnpizdn1mfg5gpk5a715nqsgxlg09l")))) + "0d0skgyqn422130xn8lrdp04m5cjk3sl18w6lf2wrmrndc1crqxk")))) (build-system emacs-build-system) + (native-inputs + `(("texinfo" ,texinfo))) (arguments - `(#:include (cons "^lib\\/" %default-include) + `(#:include (cons* "^contrib\\/" "^lib\\/" "^slynk\\/" %default-include) #:phases ;; The package provides autoloads. (modify-phases %standard-phases - (delete 'make-autoloads)))) + (delete 'make-autoloads) + (add-before 'install 'install-doc + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (info-dir (string-append out "/share/info")) + (doc-dir (string-append out "/share/doc/" + ,name "-" ,version)) + (doc-files '(;; "doc/sly-refcard.pdf" ; See sly-refcard.pdf below. + "README.md" "NEWS.md" "PROBLEMS.md" + "CONTRIBUTING.md"))) + (with-directory-excursion "doc" + (substitute* "Makefile" + (("infodir=/usr/local/info") + (string-append "infodir=" info-dir)) + ;; Don't rebuild contributors.texi since we are not in + ;; the git repo. + (("contributors.texi: Makefile texinfo-tabulate.awk") + "contributors.texi:")) + (invoke "make" "html/index.html") + (invoke "make" "sly.info") + ;; TODO: We need minimal texlive with "preprint" package + ;; (for fullpage.sty). (invoke "make" "sly-refcard.pdf") + (install-file "sly.info" info-dir) + (copy-recursively "html" (string-append doc-dir "/html"))) + (for-each (lambda (f) + (install-file f doc-dir) + (delete-file f)) + doc-files) + (delete-file-recursively "doc") + #t)))))) (home-page "https://github.com/joaotavora/sly") (synopsis "Sylvester the Cat's Common Lisp IDE") (description @@ -6922,13 +7002,13 @@ (define-public emacs-sly @enumerate @item Completely redesigned REPL based on Emacs's own full-featured - @code{comint.el} -@item Live code annotations via a new @code{sly-stickers} contrib + @code{comint.el}. +@item Live code annotations via a new @code{sly-stickers} contrib. @item Consistent interactive button interface. Everything can be copied to the REPL. -@item Multiple inspectors with independent history -@item Regexp-capable @code{M-x sly-apropos} -@item Contribs are first class SLY citizens and enabled by default +@item Multiple inspectors with independent history. +@item Regexp-capable @code{M-x sly-apropos}. +@item Contribs are first class SLY citizens and enabled by default. @item Use ASDF to loads contribs on demand. @end enumerate @@ -6936,6 +7016,75 @@ (define-public emacs-sly xref, etc...) are still available, but with better integration.") (license license:gpl3+)))) +(define-public emacs-sly-quicklisp + (let ((commit "01ebe3976a244309f2e277c09206831135a0b66c") + (revision "1")) + (package + (name "emacs-sly-quicklisp") + (version (git-version "0.0.0" revision commit)) + (home-page "https://github.com/joaotavora/sly-quicklisp") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1vfqmvayf35g6y3ljsm3rlzv5jm50qikhh4lv2zkkswj6gkkb1cv")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-sly" ,emacs-sly))) + (arguments + `(#:include (cons* "\\.lisp$" "\\.asd$" %default-include) + #:phases + ;; The package provides autoloads. + (modify-phases %standard-phases + (delete 'make-autoloads)))) + (synopsis "Quicklisp support for SLY") + (description + "@command{sly-quicklisp} is an external contrib for SLY that provides a +sly-quickload command that prompts the user for a package to install. ") + (license license:gpl3+)))) + +(define-public emacs-sly-asdf + (let ((commit "355739e42c91b9b2339f84453292b938b6d17b0d") + (revision "1")) + (package + (name "emacs-sly-asdf") + (version (git-version "0.1.0" revision commit)) + (home-page "https://github.com/mmgeorge/sly-asdf") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1plkqh4dj35c3cf8ykan8fcvqmxcdqragh4j6xg0sls27mjjz1bq")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-sly" ,emacs-sly))) + (arguments + `(#:include (cons* "\\.lisp$" "\\.asd$" %default-include) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-autoload + ;; TODO: Reported upstream: https://github.com/mmgeorge/sly-asdf/pull/11 + (lambda _ + (substitute* "sly-asdf.el" + (("\\(add-to-list 'sly-contribs 'sly-asdf 'append\\)") + "(with-eval-after-load 'sly + (add-to-list 'sly-contribs 'sly-asdf 'append))"))))))) + (synopsis "ASDF contrib for SLY") + (description + "@command{sly-asdf} is an external contrib for SLY that provides +additional support for working with ASDF projects.") + (license license:gpl3+)))) + (define-public emacs-lua-mode (let ((commit "95c64bb5634035630e8c59d10d4a1d1003265743") (revision "2")) @@ -7007,11 +7156,11 @@ (define-public emacs-evil (license license:gpl3+))) (define-public emacs-evil-collection - (let ((commit "986ca7eb0b75eccd843bdad2f7fdb48f4ca6ac22") - (revision "10")) + (let ((commit "bf4200a57c81c2302a3bf5b2058d74c6f90a3e6c") + (revision "11")) (package (name "emacs-evil-collection") - (version (git-version "0.0.2" revision commit)) + (version (git-version "0.0.3" revision commit)) (source (origin (method git-fetch) (uri (git-reference @@ -7020,10 +7169,13 @@ (define-public emacs-evil-collection (file-name (git-file-name name version)) (sha256 (base32 - "172sx5w50x5wrs5w0sb6rkbj3q22s7mmsnk4c6pwknhbz3vwlvwz")))) + "01xw0m5gj14ly42y8ikvldpab5my28sylf6l9gvwd5cf909bd445")))) (build-system emacs-build-system) (propagated-inputs - `(("emacs-evil" ,emacs-evil))) + `(("emacs-evil" ,emacs-evil) + ("emacs-annalist" ,emacs-annalist))) + (arguments + `(#:include (cons* "^modes\\/" %default-include))) (home-page "https://github.com/emacs-evil/evil-collection") (synopsis "Collection of Evil bindings for many major and minor modes") (description "This is a collection of Evil bindings for the parts of @@ -10349,20 +10501,17 @@ (define-public emacs-easy-kill (define-public emacs-csv-mode (package (name "emacs-csv-mode") - (version "1.7") + (version "1.9") (source (origin (method url-fetch) - (uri (string-append "http://elpa.gnu.org/packages/csv-mode-" + (uri (string-append "https://elpa.gnu.org/packages/csv-mode-" version ".el")) (sha256 - (base32 - "0r4bip0w3h55i8h6sxh06czf294mrhavybz0zypzrjw91m1bi7z6")))) + (base32 "0sdnyi9in904k49yy5imapypnmk75lv14k9c1yyjhjpalvvh6br1")))) (build-system emacs-build-system) - (home-page - "http://elpa.gnu.org/packages/csv-mode.html") - (synopsis - "Major mode for editing comma/char separated values") + (home-page "https://elpa.gnu.org/packages/csv-mode.html") + (synopsis "Major mode for editing comma/char separated values") (description "This Emacs package implements CSV mode, a major mode for editing records in a generalized CSV (character-separated values) format.") @@ -10657,20 +10806,22 @@ (define-public groovy-emacs-modes (deprecated-package "groovy-emacs-modes" emacs-groovy-modes)) (define-public emacs-org-tree-slide - (let ((commit "dff8f1a4a64c8dd0a1fde0b0131e2fe186747134") - (revision "0")) + (let ((commit "036a36eec1cf712d3db155572aed325daa372eb5") + (revision "2")) (package (name "emacs-org-tree-slide") - (version (git-version "0.1" revision commit)) - (home-page "https://github.com/takaxp/org-tree-slide") + (version (git-version "2.8.4" revision commit)) (source (origin (method git-fetch) - (uri (git-reference (url home-page) (commit commit))) + (uri (git-reference + (url "https://github.com/takaxp/org-tree-slide.git") + (commit commit))) (sha256 (base32 - "153bg0x7ypla11pq51jmsgzfjklwwnrq56xgpbfhk1j16xwz9hyf")) + "1r8ncx25xmxicgciyv5przp68y8qgy40fm10ba55awvql4xcm0yk")) (file-name (git-file-name name version)))) (build-system emacs-build-system) + (home-page "https://github.com/takaxp/org-tree-slide") (synopsis "Presentation tool for org-mode") (description "Org-tree-slide provides a slideshow mode to view org-mode files. Use @@ -11347,31 +11498,33 @@ (define-public emacs-emacsql (license license:gpl3+))) (define-public emacs-closql - (package - (name "emacs-closql") - (version "1.0.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/emacscollective/closql.git") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1xhpfjjkjqfc1k2rj77cscclz5r7gpvv3hi202x178vdcpipjwar")))) - (build-system emacs-build-system) - (propagated-inputs - `(("emacs-emacsql" ,emacs-emacsql))) - (home-page "https://github.com/emacscollective/closql") - (synopsis "Store EIEIO objects using EmacSQL") - (description - "This package allows to store uniform EIEIO objects in an EmacSQL + ;; Take a commit newer than 1.0.0 release because of Emacs upgrade to 26.3. + (let ((commit "70b98dbae53611d10a461d9b4a6f71086910dcef")) + (package + (name "emacs-closql") + (version (git-version "1.0.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacscollective/closql.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1wvhrihg663f61yzc7f0vha2abjdnlwbk0gjcwakdfk1bhwf5ikh")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-emacsql" ,emacs-emacsql))) + (home-page "https://github.com/emacscollective/closql") + (synopsis "Store EIEIO objects using EmacSQL") + (description + "This package allows to store uniform EIEIO objects in an EmacSQL database. SQLite is used as backend. This library imposes some restrictions on what kind of objects can be stored; it isn't intended to store arbitrary objects. All objects have to share a common superclass and subclasses cannot add any additional instance slots.") - (license license:gpl3))) + (license license:gpl3)))) (define-public emacs-epkg ;; The release version is to old for the current database scheme. @@ -11745,7 +11898,7 @@ (define-public emacs-peg (define-public emacs-org-ql (let ((commit "949a06c3ab50482b749fd2d4350837a197660d96") - (revision "2")) + (revision "3")) (package (name "emacs-org-ql") (version (git-version "0.3.1" revision commit)) @@ -11757,9 +11910,6 @@ (define-public emacs-org-ql (sha256 (base32 "0apcg63xm0242mjgsgw0jrcda4p4iqj7fy3sgh0p7khi4hrs5ch0")) - (patches - (search-patches - "emacs-helm-org-ql.patch")) (file-name (git-file-name name version)))) (build-system emacs-build-system) (propagated-inputs @@ -11776,7 +11926,15 @@ (define-public emacs-org-ql (native-inputs `(("emacs-buttercup" ,emacs-buttercup))) (arguments - `(#:tests? #t + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'require-helm + (lambda _ + (substitute* "helm-org-ql.el" + (("^;;;; Requirements") + ";;;; Requirements\n(require 'helm)\n(require 'helm-org)")) + #t))) + #:tests? #t #:test-command '("buttercup" "-L" "."))) (home-page "https://github.com/alphapapa/org-ql/") (synopsis "Query language for Org buffers") @@ -12424,15 +12582,14 @@ (define-public emacs-m-buffer-el (define-public emacs-let-alist (package (name "emacs-let-alist") - (version "1.0.5") + (version "1.0.6") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/let-alist-" version ".el")) (sha256 - (base32 - "0r7b9jni50la1m79kklml11syg8d2fmdlr83pv005sv1wh02jszw")))) + (base32 "0szj7vnjzz4zci5fvz7xqgcpi4pzdyyf4qi2s8xar2hi7v3yaawr")))) (build-system emacs-build-system) (home-page "https://elpa.gnu.org/packages/let-alist.html") (synopsis "Easily let-bind values of an assoc-list by their names") @@ -13389,14 +13546,14 @@ (define-public emacs-highlight-numbers (define-public emacs-darkroom (package (name "emacs-darkroom") - (version "0.1") + (version "0.2") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/darkroom-" version ".el")) (sha256 (base32 - "0fif8fm1h7x7g16949shfnaik5f5488clsvkf8bi5izpqp3vi6ak")))) + "1a528brhz4vckhp77n2c1phkyqdliykpj9kzk3f834f4rwnb5mp0")))) (build-system emacs-build-system) (home-page "https://elpa.gnu.org/packages/darkroom.html") (synopsis "Remove visual distractions and focus on writing") @@ -13526,8 +13683,8 @@ (define-public emacs-faceup (license license:gpl3+)))) (define-public emacs-racket-mode - (let ((commit "5300aa004f08535c3fac99f1af78462f129aca81") - (revision "3")) + (let ((commit "2a9a102a097d04fbcd2a443fec84078036c2e277") + (revision "4")) (package (name "emacs-racket-mode") (version (git-version "0.0.2" revision commit)) @@ -13540,7 +13697,7 @@ (define-public emacs-racket-mode (file-name (git-file-name name version)) (sha256 (base32 - "1gkpm4fl1ybsm9qqgrkwyjbd9znddy438x266k27fs90lkxrfray")))) + "1n71dxxh62jixq20b5haapv651dxc0zyrxpl1d0yqsg8ncp726bl")))) (build-system emacs-build-system) (arguments `(#:include '("\\.el$" "\\.rkt$"))) @@ -15565,11 +15722,11 @@ (define-public emacs-magit-todos (define-public emacs-git-annex ;; Unreleased version has a fontification fix. - (let ((commit "ebdb44aef1883f1b2b8058e05d30fb9315b03707") - (revision "1")) + (let ((commit "1324d3f23c534fe79391a2c256bb8803054e383b") + (revision "2")) (package (name "emacs-git-annex") - (version (string-append "1.1-" revision "." (string-take commit 8))) + (version (git-version "1.1" revision commit)) (source (origin (method git-fetch) @@ -15579,7 +15736,7 @@ (define-public emacs-git-annex (file-name (git-file-name name version)) (sha256 (base32 - "1mzv40gj7k10h7h5s43my8msgzjpj680qprqa9pp8nbyhl49v3wh")))) + "1lfky2nsrlndlbvk6vwbswnvbvkz1sxgg0n3r5q6xykdkjym0lrh")))) (build-system emacs-build-system) (home-page "https://github.com/jwiegley/git-annex-el") (synopsis "Emacs integration for git-annex") @@ -16215,6 +16372,42 @@ (define-public emacs-arduino-mode (home-page "https://github.com/bookest/arduino-mode") (license license:gpl3+)))) +(define-public emacs-annalist + (let ((commit "e0601539c9ac0171a684ea3ff6266d215d1d08e6") + (revision "1")) + (package + (name "emacs-annalist") + (version (git-version "1.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/noctuid/annalist.el.git") + (commit commit))) + (sha256 + (base32 + "10bmimdzpi6cql4sb2hbgdvrza83xbac50bi9qng4z662pfnlaam")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (native-inputs + `(("emacs-buttercup" ,emacs-buttercup) + ("emacs-lispy" ,emacs-lispy) + ("emacs-evil" ,emacs-evil))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'fix-makefile + (lambda _ + (substitute* "Makefile" + (("cask exec ") "")) + #t))) + #:tests? #t + #:test-command '("make" "test"))) + (home-page "https://github.com/noctuid/annalist.el") + (synopsis "Record and display information with Org headings and tables") + (description "This package allows for keybindings, settings, hooks, and +advice to be recorded and displayed.") + (license license:gpl3+)))) + (define-public emacs-general (let ((commit "f38fb2294bd29261374b772f765730f2fa168b3e") (revision "3")) @@ -17096,6 +17289,85 @@ (define-public emacs-transient a suffix) we prefer to call it just a \"transient\".") (license license:gpl3+)))) +(define-public emacs-forge + (let ((commit "a6721c071226ae8da6852e9330f2bdcba92a4577")) + (package + (name "emacs-forge") + (version (git-version "0.1.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/magit/forge.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1gzr1di29a9szkzm6kjznq7c8md71cm5761pznf08nmmk63dl3zm")))) + (build-system gnu-build-system) + (native-inputs + `(("texinfo" ,texinfo) + ("emacs" ,emacs-minimal))) + (propagated-inputs + `(("emacs-closql" ,emacs-closql) + ("emacs-dash" ,emacs-dash) + ("emacs-emacsql-sqlite" ,emacs-emacsql) + ("emacs-ghub" ,emacs-ghub) + ("emacs-let-alist" ,emacs-let-alist) + ("emacs-magit" ,emacs-magit) + ("emacs-markdown-mode" ,emacs-markdown-mode) + ("emacs-transient" ,emacs-transient))) + (arguments + `(#:tests? #f ;no tests + #:modules ((srfi srfi-26) + (guix build gnu-build-system) + ((guix build emacs-build-system) #:prefix emacs:) + (guix build utils) + (guix build emacs-utils)) + #:imported-modules (,@%gnu-build-system-modules + (guix build emacs-build-system) + (guix build emacs-utils)) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'install) + (add-after 'unpack 'delete-doc-targets + (lambda _ + (substitute* "./Makefile" + (("lisp docs") "lisp")))) + (add-after 'delete-doc-targets 'emacs-set-emacs-load-path + (assoc-ref emacs:%standard-phases 'set-emacs-load-path)) + (add-after 'emacs-set-emacs-load-path 'chdir-lisp + (lambda _ + (chdir "lisp"))) + (add-after 'chdir-lisp 'emacs-install + (assoc-ref emacs:%standard-phases 'install)) + (add-after 'emacs-install 'emacs-make-autoloads + (assoc-ref emacs:%standard-phases 'make-autoloads)) + (add-after 'build 'install-elc + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (el-dir (string-append + out "/share/emacs/site-lisp/guix.d/forge-" + ,version))) + (for-each (cut install-file <> el-dir) + (find-files "." "\\.elc")) + #t))) + (add-after 'install-elc 'install-doc + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (info (string-append out "/share/info"))) + (with-directory-excursion "../docs" + (invoke "makeinfo" "forge.texi") + (install-file "forge.info" info) + #t))))))) + (home-page "https://github.com/magit/ghub/") + (synopsis "Access Git forges from Magit") + (description + "Work with Git forges, such as Github and Gitlab, from the comfort of +Magit and the rest of Emacs.") + (license license:gpl3+)))) + (define-public emacs-matcha (let ((commit "c7df5cf5cdac9ae369e241342389ccda0205eab9")) (package @@ -18054,7 +18326,7 @@ (define-public emacs-semantic-refactor (define-public emacs-nhexl-mode (package (name "emacs-nhexl-mode") - (version "1.2") + (version "1.3") (source (origin (method url-fetch) @@ -18062,10 +18334,9 @@ (define-public emacs-nhexl-mode "https://elpa.gnu.org/packages/nhexl-mode-" version ".el")) (sha256 - (base32 - "031h22p564qdvr9khs05qcba06pmsk68cr7zyc7c04hfr3y3ziaf")))) + (base32 "1fcy4ybr12dvswmzaqkv4798snb1x1y7ldxwrsgjv5sx7bb5j60z")))) (build-system emacs-build-system) - (home-page "http://elpa.gnu.org/packages/nhexl-mode.html") + (home-page "https://elpa.gnu.org/packages/nhexl-mode.html") (synopsis "Minor mode to edit files via hex-dump format") (description "This package implements NHexl mode, a minor mode for editing files diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 5a3577350d..6c6f0e4567 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -16,6 +16,7 @@ ;;; Copyright © 2018 Efraim Flashner ;;; Copyright © 2018 Mathieu Othacehe ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice +;;; Copyright © 2019 Jesse John Gildersleve ;;; ;;; This file is part of GNU Guix. ;;; @@ -49,12 +50,13 @@ (define-module (gnu packages emacs) #:use-module (gnu packages gd) #:use-module (gnu packages gettext) #:use-module (gnu packages glib) - #:use-module (gnu packages gnome) ; for librsvg + #:use-module (gnu packages gnome) ; for librsvg #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) - #:use-module (gnu packages linux) ; alsa-lib + #:use-module (gnu packages linux) ; alsa-lib + #:use-module (gnu packages mail) ; for mailutils #:use-module (gnu packages ncurses) #:use-module (gnu packages pkg-config) #:use-module (gnu packages texinfo) @@ -146,6 +148,10 @@ (define-public emacs `(("gnutls" ,gnutls) ("ncurses" ,ncurses) + ;; Avoid Emacs's limited movemail substitute that retrieves POP3 email + ;; only via insecure channels. This is not needed for (modern) IMAP. + ("mailutils" ,mailutils) + ;; TODO: Add the optional dependencies. ("libx11" ,libx11) ("gtk+" ,gtk+) diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index 8384f4c0ed..1da6d2aea2 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm @@ -67,7 +67,7 @@ (define-module (gnu packages enlightenment) (define-public efl (package (name "efl") - (version "1.23.0") + (version "1.23.1") (source (origin (method url-fetch) (uri (string-append @@ -75,7 +75,7 @@ (define-public efl version ".tar.xz")) (sha256 (base32 - "1iawq5k1ggas41h3vrwc0y98hf83vr0vh3phfgw22iij3cb2b5nd")))) + "0q9g4j7k10s1a8rv2ca9v9lydh7ml3zsrqvgncc4qhvdl76208nn")))) (build-system meson-build-system) (native-inputs `(("check" ,check) @@ -365,7 +365,7 @@ (define-public enlightenment (define-public python-efl (package (name "python-efl") - (version "1.22.0") + (version "1.23.0") (source (origin (method url-fetch) @@ -373,7 +373,7 @@ (define-public python-efl "python/python-efl-" version ".tar.xz")) (sha256 (base32 - "1qhy63c3fs2bxkx2np5z14hyxbr12ii030crsjnhpbyw3mic0s63")) + "16yn6a1b9167nfmryyi44ma40m20ansfpwgrvqzfvwix7qaz9pib")) (modules '((guix build utils))) ;; Remove files generated by Cython (snippet diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm index 3a7e3284a9..85bfd8dd38 100644 --- a/gnu/packages/file-systems.scm +++ b/gnu/packages/file-systems.scm @@ -316,7 +316,6 @@ (define-public apfs-fuse (install-file "apfs-dump-quick" bin) (install-file "apfs-fuse" bin) (install-file "libapfs.a" lib) - (install-file "../source/LICENSE" doc) #t)))))) (inputs `(("bzip2" ,bzip2) diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index 8a302ba5bc..4339f14f35 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -14,6 +14,7 @@ ;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; Copyright © 2018 Pierre Neidhardt ;;; Copyright © 2018 Stefan Stefanović +;;; Copyright © 2019 Reza Alizadeh Majd ;;; ;;; This file is part of GNU Guix. ;;; @@ -1414,3 +1415,26 @@ (define-public perl-file-mimeinfo their MIME type. @end itemize") (license license:perl-license))) + +(define-public uchardet + (package + (name "uchardet") + (version "0.0.6") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.freedesktop.org/software/" + name "/releases/" name "-" version ".tar.xz")) + (sha256 + (base32 "0q9c02b6nmw41yfsiqsnphgc3f0yg3fj31wkccp47cmwvy634lc3")))) + (build-system cmake-build-system) + (home-page "https://www.freedesktop.org/wiki/Software/uchardet/") + (synopsis "Encoding detector library") + (description "uchardet is an encoding detector library, which takes a +sequence of bytes in an unknown character encoding without any additional +information, and attempts to determine the encoding of the text. Returned +encoding names are iconv-compatible.") + + ;; This combines code under MPL 1.1, LGPL 2.1+, and GPL 2.0+, so the + ;; combination is GPL 2.0+. + (license license:gpl2+))) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 1b6849a9aa..2ed505bbc4 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -6828,13 +6828,12 @@ (define-public arx-libertatis ("innoextract" ,innoextract))) (home-page "https://arx-libertatis.org/") (synopsis "Port of Arx Fatalis, a first-person role-playing game") - (description "Arx Libertatis is a cross-platform, open source port of Arx -Fatalis, a 2002 first-person role-playing game / dungeon crawler developed by -Arkane Studios. This port however does not include the game data, so you need -to obtain a copy of the original Arx Fatalis or its demo to play Arx -Libertatis. Arx Fatalis features crafting, melee and ranged combat, as well -as a unique casting system where the player draws runes in real time to effect -the desired spell.") + (description "Arx Libertatis is a cross-platform port of Arx Fatalis, a 2002 +first-person role-playing game / dungeon crawler developed by Arkane Studios. +This port however does not include the game data, so you need to obtain a copy +of the original Arx Fatalis or its demo to play Arx Libertatis. Arx Fatalis +features crafting, melee and ranged combat, as well as a unique casting system +where the player draws runes in real time to effect the desired spell.") (license license:gpl3+))) (define-public edgar diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index c3dadbdfd3..c558d9fcb6 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -839,7 +839,7 @@ (define-public dbus-c++ (define-public appstream-glib (package (name "appstream-glib") - (version "0.7.15") + (version "0.7.16") (source (origin (method url-fetch) (uri (string-append "https://people.freedesktop.org/~hughsient/" @@ -847,7 +847,7 @@ (define-public appstream-glib "appstream-glib-" version ".tar.xz")) (sha256 (base32 - "17ram4j3cvs78si0gi1labarr91pw68zn8kam41cqbvlwdyr89vy")))) + "14jr1psx5kxywdprgbqn79w309yz8lrqlsq7288hfrf87gbr1wh4")))) (build-system meson-build-system) (native-inputs `(("gettext" ,gettext-minimal) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 2a664e3db7..7f16b17499 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -1397,7 +1397,7 @@ (define-public librsvg (define-public librsvg-next (package (name "librsvg") - (version "2.44.12") + (version "2.46.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -1405,7 +1405,7 @@ (define-public librsvg-next name "-" version ".tar.xz")) (sha256 (base32 - "1h3qnqhr0l7pd2bxg69ki6ckl4srdwgr471dpp4jq9i4784hp0v6")))) + "1la3az2af2ccm6rp86b6wh0kq7kxzl4n8pli5qxhyic1rd91xj4n")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -1423,6 +1423,7 @@ (define-public librsvg-next (lambda _ (for-each patch-shebang '("tap-driver.sh" "tap-test")) (patch-/usr/bin/file "configure") + (patch-makefile-SHELL "po/Makefile.in.in") #t)) (add-before 'configure 'pre-configure (lambda* (#:key inputs #:allow-other-keys) @@ -1460,9 +1461,9 @@ (define-public librsvg-next #t))))) (native-inputs `(("pkg-config" ,pkg-config) - ;; This is the minimum supported Rust version in Librsvg 2.44. - ("rust" ,rust-1.27) - ("cargo" ,rust-1.27 "cargo") + ;; This is the minimum supported Rust version in Librsvg 2.46. + ("rust" ,rust-1.34) + ("cargo" ,rust-1.34 "cargo") ("vala" ,vala) ("glib" ,glib "bin") ; glib-mkenums, etc. ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc. @@ -2690,7 +2691,7 @@ (define-public rest (define-public libsoup (package (name "libsoup") - (version "2.66.2") + (version "2.68.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/libsoup/" @@ -2698,7 +2699,7 @@ (define-public libsoup "libsoup-" version ".tar.xz")) (sha256 (base32 - "0amfw1yvy1kjrg41rfh2vvrw5gkwnyckqbw1fab50hm6xc1acbmx")))) + "0crr9qprmacr626fx83cx81ggk85zsgxr4mn577kpzj6m40k1bai")))) (build-system meson-build-system) (outputs '("out" "doc")) (arguments @@ -2706,7 +2707,7 @@ (define-public libsoup (guix build meson-build-system) (ice-9 popen)) - #:configure-flags '("-Ddoc=true") + #:configure-flags '("-Dgtk_doc=true") #:phases (modify-phases %standard-phases (add-after 'unpack 'adjust-tests @@ -2716,6 +2717,16 @@ (define-public libsoup (substitute* "tests/socket-test.c" ((".*/sockets/unconnected.*") "")) + ;; These fail because "subdomain.localhost" does not resolve in + ;; the build environment. + (substitute* "tests/hsts-test.c" + ((".*/hsts/basic.*") "") + ((".*/hsts/subdomains.*") "") + ((".*/hsts/superdomain.*") "") + ((".*/hsts/utf8-address.*") "")) + (substitute* "tests/hsts-db-test.c" + ((".*/hsts-db/subdomains.*") "")) + ;; Generate a self-signed certificate that has "localhost" as its ;; 'dnsName'. Failing to do that, and starting with GnuTLS ;; 3.5.12, tests such as "ssl-tests" fail: @@ -2784,10 +2795,12 @@ (define-public libsoup ("httpd" ,httpd))) (propagated-inputs ;; libsoup-2.4.pc refers to all these. - `(("glib" ,glib) + `(("brotli" ,google-brotli) + ("glib" ,glib) ("libpsl" ,libpsl) ("libxml2" ,libxml2) - ("sqlite" ,sqlite))) + ("sqlite" ,sqlite) + ("zlib" ,zlib))) (inputs `(("glib-networking" ,glib-networking) ("mit-krb5" ,mit-krb5))) @@ -3395,21 +3408,21 @@ (define-public aisleriot (define-public amtk (package (name "amtk") - (version "5.0.0") + (version "5.0.1") (source (origin (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" + (uri (string-append "mirror://gnome/sources/amtk/" (version-major+minor version) "/" - name "-" version ".tar.xz")) + "amtk-" version ".tar.xz")) (sha256 (base32 - "1zriix7bdwcg0868mfc7jy6zbwjwdmjwbh0ah6dbddrhiabrda8j")))) + "09yy95w1s83c43mh9vha1jbb780yighf5pd2j0ygjmc68sjg871d")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--enable-gtk-doc"))) (native-inputs `(("gobject-introspection" ,gobject-introspection) - ("glib:bin" ,glib "bin") ; for glib-mkenums + ("glib:bin" ,glib "bin") ; for glib-mkenums ("gtk-doc" ,gtk-doc) ("pkg-config" ,pkg-config))) (inputs @@ -4134,7 +4147,7 @@ (define-public eog-plugins ;; 'XDG_DATA_DIRS' appropriately set. (package (name "eog-plugins") - (version "3.26.3") + (version "3.26.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/eog-plugins/" @@ -4142,7 +4155,7 @@ (define-public eog-plugins "eog-plugins-" version ".tar.xz")) (sha256 (base32 - "06fnjs2p18ad5vk07z685cx26sc7d3azywss00w9xvz794b2i1g3")))) + "0pd7fqa4ciy5844k5s1c6rlsqkk8pxd8cchxjcjhxlsngm9lynnx")))) (build-system gnu-build-system) (home-page "https://wiki.gnome.org/Apps/EyeOfGnome/Plugins") (synopsis "Extensions for the Eye of GNOME image viewer") @@ -4709,15 +4722,15 @@ (define-public gexiv2 (define-public shotwell (package (name "shotwell") - (version "0.30.4") + (version "0.30.7") (source (origin (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" + (uri (string-append "mirror://gnome/sources/shotwell/" (version-major+minor version) "/" - name "-" version ".tar.xz")) + "shotwell-" version ".tar.xz")) (sha256 (base32 - "1yiz3j0y2yg6985y3alb3hpkfbv68n8ibys5gpwcjdhmhf3czg5p")))) + "1m9i8r4gyd2hzlxjjwfyck4kz7gdg2vz2k6l6d0ga9hdfq2l4p9l")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t)) diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index e0c11cb0a1..f97f687d36 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -14,7 +14,7 @@ ;;; Copyright © 2017 Leo Famulari ;;; Copyright © 2017 Petter ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice -;;; Copyright © 2018 Marius Bakke +;;; Copyright © 2018, 2019 Marius Bakke ;;; Copyright © 2018 Björn Höfling ;;; ;;; This file is part of GNU Guix. @@ -136,6 +136,7 @@ (define-public libgcrypt (package (name "libgcrypt") (version "1.8.4") + (replacement libgcrypt-1.8.5) (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-" @@ -168,6 +169,18 @@ (define-public libgcrypt (properties '((ftp-server . "ftp.gnupg.org") (ftp-directory . "/gcrypt/libgcrypt"))))) +(define-public libgcrypt-1.8.5 + (package + (inherit libgcrypt) + (version "1.8.5") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-" + version ".tar.bz2")) + (sha256 + (base32 + "1hvsazms1bfd769q0ngl0r9g5i4m9mpz9jmvvrdzyzk3rfa2ljiv")))))) + (define-public libassuan (package (name "libassuan") diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm index e09285d63a..13d228b856 100644 --- a/gnu/packages/haskell-apps.scm +++ b/gnu/packages/haskell-apps.scm @@ -245,7 +245,7 @@ (define-public darcs (define-public git-annex (package (name "git-annex") - (version "7.20190912") + (version "7.20191009") (source (origin (method url-fetch) @@ -253,7 +253,7 @@ (define-public git-annex "git-annex/git-annex-" version ".tar.gz")) (sha256 (base32 - "1a3jvl5cx32v78s3015i10cx00jprm1391rpww4mzkk1vskzn9cv")))) + "10ycvjl9b3aa81zdz239ngjbbambfjrzds1a23wdlbjkn12nsg4g")))) (build-system haskell-build-system) (arguments `(#:configure-flags diff --git a/gnu/packages/installers.scm b/gnu/packages/installers.scm new file mode 100644 index 0000000000..c987254d61 --- /dev/null +++ b/gnu/packages/installers.scm @@ -0,0 +1,116 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019 Carl Dong +;;; +;;; 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 . + +(define-module (gnu packages installers) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (gnu packages) + #:use-module (gnu packages compression) + #:use-module (gnu packages cross-base) + #:use-module (gnu packages python-xyz) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system scons) + #:use-module (guix utils)) + +(define (make-nsis machine target-arch nsis-target-type) + (let ((triplet (string-append machine "-" "w64-mingw32"))) + (package + (name (string-append "nsis-" machine)) + (version "3.04") + (source (origin + (method url-fetch) + (uri (string-append "http://prdownloads.sourceforge.net/nsis/nsis-" + version "-src.tar.bz2")) + (sha256 + (base32 + "1xgllk2mk36ll2509hd31mfq6blgncmdzmwxj3ymrwshdh23d5b0")) + (patches (search-patches "nsis-env-passthru.patch")))) + (build-system scons-build-system) + (native-inputs `(("xgcc" ,(cross-gcc triplet #:libc (cross-libc triplet))) + ("xbinutils" ,(cross-binutils triplet)) + ("mingw-w64" ,(cross-libc triplet)))) + (inputs `(("zlib" ,zlib))) + (arguments + `(#:scons ,scons-python2 + #:modules ((srfi srfi-1) + (guix build utils) + (guix build scons-build-system)) + #:tests? #f + #:scons-flags `("UNICODE=yes" + "SKIPUTILS=MakeLangId,Makensisw,NSIS Menu,SubStart,zip2exe" + "SKIPDOC=COPYING" + "STRIP_CP=no" + ,(string-append "PREFIX=" %output) + ,(string-append "TARGET_ARCH=" ,target-arch) + ,(string-append "XGCC_W32_PREFIX=" ,triplet "-") + ,(string-append "PREFIX_PLUGINAPI_INC=" (assoc-ref %build-inputs "mingw-w64") "/include/") + ,(string-append "PREFIX_PLUGINAPI_LIB=" (assoc-ref %build-inputs "mingw-w64") "/lib/")) + #:build-targets '("makensis" + "stubs" + "plugins" + "utils") + #:install-targets '("install-stubs" + "install-plugins" + "install-data" + "install-utils" + "install-compiler" + "install-conf") + #:phases (modify-phases %standard-phases + (add-before 'build 'fix-env + (lambda _ + (define* (filter-delimited-string delimited-string predicate #:optional (delimiter #\:)) + ;; Given a DELIMITED-STRING delimited by DELIMITER, + ;; only keep items that satisfy PREDICATE + (string-join + (filter predicate (string-split delimited-string delimiter)) + (string delimiter))) + (define (mingw-path? path) + (string-prefix? (assoc-ref %build-inputs "mingw-w64") path)) + (for-each + (lambda (env-name) + (let ((env-val (getenv env-name))) + ;; Remove all mingw-w64 paths from env vars meant + ;; for native toolchain + (setenv env-name + (filter-delimited-string env-val (negate mingw-path?))) + ;; Add the removed paths back into + ;; CROSS_-prefixed version of env vars + (setenv (string-append "CROSS_" env-name) + (filter-delimited-string env-val mingw-path?)))) + '("CPLUS_INCLUDE_PATH" "LIBRARY_PATH" "C_INCLUDE_PATH")))) + (add-before 'build 'fix-target-detection + (lambda _ + ;; NSIS target detection is screwed up, manually + ;; change it ourselves + (substitute* "Source/build.cpp" (("m_target_type=TARGET_X86ANSI") + (string-append "m_target_type=" ,nsis-target-type)))))))) + (home-page "http://nsis.sourceforge.net/") + (synopsis "A professional open source system to create Windows installers") + (description + "NSIS (Nullsoft Scriptable Install System) is a professional open +source system to create Windows installers. It is designed to be as small and +flexible as possible and is therefore very suitable for internet +distribution.") + (license (license:non-copyleft "file://COPYING" + "See COPYING in the distribution."))))) + +(define-public nsis-x86_64 + (make-nsis "x86_64" "amd64" "TARGET_AMD64")) + +(define-public nsis-i686 + (make-nsis "i686" "x86" "TARGET_X86UNICODE")) diff --git a/gnu/packages/jupyter.scm b/gnu/packages/jupyter.scm index 7ec987b2a4..fbb4367ea5 100644 --- a/gnu/packages/jupyter.scm +++ b/gnu/packages/jupyter.scm @@ -118,9 +118,7 @@ (define-public python-jupyter-kernel-test (replace 'install (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) - (version ((@@ (guix build python-build-system) - get-python-version) - (assoc-ref inputs "python"))) + (version (python-version (assoc-ref inputs "python"))) (pydir (string-append out "/lib/python" version "/site-packages/" "jupyter_kernel_test"))) diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm index a9b5b85a47..0e032d05db 100644 --- a/gnu/packages/kodi.scm +++ b/gnu/packages/kodi.scm @@ -271,7 +271,7 @@ (define-public fstrcmp (define-public kodi (package (name "kodi") - (version "18.3") + (version "18.4") (source (origin (method git-fetch) (uri (git-reference @@ -280,7 +280,7 @@ (define-public kodi (file-name (git-file-name name version)) (sha256 (base32 - "18fbl5hs3aqccrn0m3x7hp95wlafjav0yvrwmb5q3gj24mwf6jld")) + "1m0295czxabdcqyqf5m94av9d88pzhnzjvyfs1q07xqq82h313p7")) (patches (search-patches "kodi-skip-test-449.patch" "kodi-set-libcurl-ssl-parameters.patch")) (snippet diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index a8aa72da19..ccde9d172d 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -1090,7 +1090,7 @@ (define-public util-linux #t)))) (build-system gnu-build-system) (outputs '("out" - "static")) ; >2 MiB of static .a libraries + "static")) ;>2 MiB of static .a libraries (arguments `(#:configure-flags (list "--disable-use-tty-group" "--enable-fs-paths-default=/run/current-system/profile/sbin" @@ -1102,45 +1102,42 @@ (define-public util-linux (assoc-ref %outputs "out") "/etc/bash_completion.d")) #:phases (modify-phases %standard-phases - (add-before - 'build 'set-umount-file-name - (lambda* (#:key outputs #:allow-other-keys) - ;; Tell 'eject' the right file name of 'umount'. - (let ((out (assoc-ref outputs "out"))) - (substitute* "sys-utils/eject.c" - (("\"/bin/umount\"") - (string-append "\"" out "/bin/umount\""))) - #t))) - (add-before - 'check 'pre-check - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (net (assoc-ref inputs "net-base"))) - ;; Change the test to refer to the right file. - (substitute* "tests/ts/misc/mcookie" - (("/etc/services") - (string-append net "/etc/services"))) - #t))) - (add-after - 'install 'move-static-libraries - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (static (assoc-ref outputs "static"))) - (mkdir-p (string-append static "/lib")) - (with-directory-excursion out - (for-each (lambda (file) - (rename-file file - (string-append static "/" - file))) - (find-files "lib" "\\.a$")) + (add-before 'build 'set-umount-file-name + (lambda* (#:key outputs #:allow-other-keys) + ;; Tell 'eject' the right file name of 'umount'. + (let ((out (assoc-ref outputs "out"))) + (substitute* "sys-utils/eject.c" + (("\"/bin/umount\"") + (string-append "\"" out "/bin/umount\""))) + #t))) + (add-before 'check 'pre-check + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (net (assoc-ref inputs "net-base"))) + ;; Change the test to refer to the right file. + (substitute* "tests/ts/misc/mcookie" + (("/etc/services") + (string-append net "/etc/services"))) + #t))) + (add-after 'install 'move-static-libraries + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (static (assoc-ref outputs "static"))) + (mkdir-p (string-append static "/lib")) + (with-directory-excursion out + (for-each (lambda (file) + (rename-file file + (string-append static "/" + file))) + (find-files "lib" "\\.a$")) - ;; Remove references to the static library from the '.la' - ;; files so that Libtool does the right thing when both - ;; the shared and static library is available. - (substitute* (find-files "lib" "\\.la$") - (("old_library=.*") "old_library=''\n"))) + ;; Remove references to the static library from the '.la' + ;; files so that Libtool does the right thing when both + ;; the shared and static library is available. + (substitute* (find-files "lib" "\\.la$") + (("old_library=.*") "old_library=''\n"))) - #t)))))) + #t)))))) (inputs `(("zlib" ,zlib) ("ncurses" ,ncurses) @@ -1150,7 +1147,7 @@ (define-public util-linux '()))) (native-inputs `(("perl" ,perl) - ("net-base" ,net-base))) ;for tests + ("net-base" ,net-base))) ;for tests (home-page "https://www.kernel.org/pub/linux/utils/util-linux/") (synopsis "Collection of utilities for the Linux kernel") (description "Util-linux is a diverse collection of Linux kernel @@ -1285,7 +1282,7 @@ (define-public usbutils (define-public e2fsprogs (package (name "e2fsprogs") - (version "1.45.2") + (version "1.45.4") (source (origin (method url-fetch) (uri (string-append @@ -1294,7 +1291,7 @@ (define-public e2fsprogs name "-" version ".tar.xz")) (sha256 (base32 - "02g0cm72sgz709s9pkg4mvj56m7bgs7rwnyc2cp7cvg3j6pcjlj9")))) + "00nwl1ppjalxbnx40dsm895r3q793p8nni6n81saj7faj2szdyk5")))) (build-system gnu-build-system) (inputs `(("util-linux" ,util-linux))) (native-inputs `(("pkg-config" ,pkg-config) @@ -1465,18 +1462,15 @@ (define-public zerofree (define-public strace (package (name "strace") - (version "5.2") + (version "5.3") (home-page "https://strace.io") (source (origin (method url-fetch) (uri (string-append home-page "/files/" version "/strace-" version ".tar.xz")) - ;; XXX Remove the 'regenerate-tests' phase below when - ;; "strace-ipc-tests.patch" is no longer applied. - (patches (search-patches "strace-ipc-tests.patch")) (sha256 (base32 - "1li49i75wrdw91hchyyd8spnzfcmxcfyfb5g9zbaza89aq4bq4ym")))) + "0ix06z4vnc49mv76f22kixz8dsh7daqv9mpgwcgl0mlnfjc124vc")))) (build-system gnu-build-system) (arguments '(#:phases @@ -1485,14 +1479,7 @@ (define-public strace (lambda _ (substitute* "strace.c" (("/bin/sh") (which "sh"))) - #t)) - (add-before 'configure 'regenerate-tests - ;; XXX Remove this phase when "strace-ipc-tests.patch" is no longer - ;; applied in the 'source' field above. This phase is needed to - ;; regenerate many other files from tests/gen_tests.in, which is - ;; modified by the aforementioned patch. - (lambda _ - (invoke "tests/gen_tests.sh")))) + #t))) ;; Don't fail if the architecture doesn't support different personalities. #:configure-flags '("--enable-mpers=check") ;; See . diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index b1fd2a451c..254ee59c4a 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -109,9 +109,9 @@ (define-public fann (home-page "http://leenissen.dk/fann/wp/") (synopsis "Fast Artificial Neural Network") (description - "FANN is a free open source neural network library, which implements -multilayer artificial neural networks in C with support for both fully -connected and sparsely connected networks.") + "FANN is a neural network library, which implements multilayer +artificial neural networks in C with support for both fully connected and +sparsely connected networks.") (license license:lgpl2.1)))) (define-public libsvm @@ -794,7 +794,7 @@ (define-public dlib (define-public python-scikit-learn (package (name "python-scikit-learn") - (version "0.20.3") + (version "0.20.4") (source (origin (method git-fetch) @@ -804,7 +804,7 @@ (define-public python-scikit-learn (file-name (git-file-name name version)) (sha256 (base32 - "08aaby5zphfxy83mggg35bwyka7wk91l2qijh8kk0bl08dikq8dl")))) + "08zbzi8yx5wdlxfx9jap61vg1malc9ajf576w7a0liv6jvvrxlpj")))) (build-system python-build-system) (arguments `(#:phases @@ -1306,12 +1306,12 @@ (define-public grpc ("python" ,python-wrapper))) (home-page "https://grpc.io") (synopsis "High performance universal RPC framework") - (description "gRPC is a modern open source high performance @dfn{Remote -Procedure Call} (RPC) framework that can run in any environment. It can -efficiently connect services in and across data centers with pluggable support -for load balancing, tracing, health checking and authentication. It is also -applicable in last mile of distributed computing to connect devices, mobile -applications and browsers to backend services.") + (description "gRPC is a modern high performance @dfn{Remote Procedure Call} +(RPC) framework that can run in any environment. It can efficiently connect +services in and across data centers with pluggable support for load balancing, +tracing, health checking and authentication. It is also applicable in last +mile of distributed computing to connect devices, mobile applications and +browsers to backend services.") (license license:asl2.0))) ;; Note that Tensorflow includes a "third_party" directory, which seems to not diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index f937f50d6d..a994e4d344 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -140,14 +140,14 @@ (define-module (gnu packages mail) (define-public mailutils (package (name "mailutils") - (version "3.6") + (version "3.7") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/mailutils/mailutils-" version ".tar.xz")) (sha256 (base32 - "07phzpwrnkdclx6jvirljk9zcavl8wh02kpx3mfba9msr99kpqj6")))) + "1gwajsl39f1dkzrjld0dm9px8hrj7l7rwzazz00h5rwghk9mhwhq")))) (build-system gnu-build-system) (arguments '(#:phases diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm index fb3c5ab6df..d55d1b4461 100644 --- a/gnu/packages/mate.scm +++ b/gnu/packages/mate.scm @@ -1279,7 +1279,7 @@ (define-public mate-utils ("pkg-config" ,pkg-config) ("scrollkeeper" ,scrollkeeper) ("xorgproto" ,xorgproto) - ("yelp-tools" ,yelp-tools))) + ("yelp-tools" ,yelp-tools/fixed))) (inputs `(("atk" ,atk) ("cairo" ,cairo) diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm index 1b5bb331f5..3174c0c115 100644 --- a/gnu/packages/mes.scm +++ b/gnu/packages/mes.scm @@ -159,16 +159,16 @@ (define-public mescc-tools-0.5.2 (version "0.5.2")) (package (name "mescc-tools") - (version (string-append version "-" revision "." (string-take commit 7))) + (version (git-version version revision commit)) (source (origin - (method url-fetch) - (uri (string-append - "https://git.savannah.nongnu.org/cgit/mescc-tools.git/snapshot/" - name "-" commit - ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.nongnu.org/r/mescc-tools.git") + (commit commit))) + (file-name (git-file-name name version)) (sha256 (base32 - "1h6j57wyf91i42b26f8msbv6451cw3nm4nmpl1fckp9c7vi8mwkh")))) + "1nc6rnax66vmhqsjg0kgx23pihdcxmww6v325ywf59vsq1jqjvff")))) (build-system gnu-build-system) (supported-systems '("i686-linux" "x86_64-linux")) (arguments @@ -191,15 +191,14 @@ (define-public mescc-tools (name "mescc-tools") (version "0.6.1") (source (origin - (method url-fetch) - (uri (string-append - "http://git.savannah.nongnu.org/cgit/mescc-tools.git/snapshot/" - name "-Release_" version - ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.nongnu.org/r/mescc-tools.git") + (commit (string-append "Release_" version)))) + (file-name (string-append "mescc-tools-" version "-checkout")) (sha256 (base32 - "06jpvq6xfjzn2al6b4rdwd3zv3h4cvilc4n9gqcnjr9cr6wjpw2n")))) + "1cgxcdza6ws725x84i31la7jxmlk5a3nsij5shz1zljg0i36kj99")))) (arguments (substitute-keyword-arguments (package-arguments mescc-tools-0.5.2) ((#:make-flags _) diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm index a218071edb..9a1cf60c2e 100644 --- a/gnu/packages/mp3.scm +++ b/gnu/packages/mp3.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2015 Mark H Weaver ;;; Copyright © 2016 Efraim Flashner ;;; Copyright © 2017 Thomas Danckaert -;;; Copyright © 2017 Pierre Langlois +;;; Copyright © 2017, 2019 Pierre Langlois ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. @@ -123,7 +123,8 @@ (define-public id3lib (modules '((guix build utils))) ;; Don't use bundled zlib (snippet '(begin (delete-file-recursively "zlib") #t)) - (patches (search-patches "id3lib-CVE-2007-4460.patch")))) + (patches (search-patches "id3lib-CVE-2007-4460.patch" + "id3lib-UTF16-writing-bug.patch")))) (build-system gnu-build-system) (inputs `(("zlib" ,zlib))) (arguments diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index ac4333168c..250f3136bb 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 Eric Bavier +;;; Copyright © 2014, 2019 Eric Bavier ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus ;;; Copyright © 2015 Paul van der Walt ;;; Copyright © 2016 Al McElrath @@ -11,7 +11,7 @@ ;;; Copyright © 2017 ng0 ;;; Copyright © 2017 Rodger Fox ;;; Copyright © 2017, 2018, 2019 Nicolas Goaziou -;;; Copyright © 2017, 2018 Pierre Langlois +;;; Copyright © 2017, 2018, 2019 Pierre Langlois ;;; Copyright © 2017 Arun Isaac ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2018 nee @@ -23,6 +23,7 @@ ;;; Copyright © 2019 Timotej Lazar ;;; Copyright © 2019 Jakob L. Kreuze ;;; Copyright © 2019 raingloom +;;; Copyright © 2019 David Wilson ;;; ;;; This file is part of GNU Guix. ;;; @@ -593,12 +594,17 @@ (define-public easytag "prefix=~@*~a~@ libdir=${prefix}/lib~@ includedir=${prefix}/include~@ + + Name: libid3tag~@ + Description:~@ + Version:~@ Libs: -L${libdir} -lid3tag -lz~@ Cflags: -I${includedir}~%" libid3tag))) (setenv "PKG_CONFIG_PATH" (string-append (getenv "PKG_CONFIG_PATH") - ":" (getcwd) "/pkgconfig"))))) + ":" (getcwd) "/pkgconfig")) + #t))) (add-after 'unpack 'patch-makefile (lambda _ (substitute* "Makefile.in" @@ -606,7 +612,8 @@ (define-public easytag ;; script with /bin/sh hard-coded. (("/bin/sh") (which "sh")) ;; Don't create 'icon-theme.cache'. - (("gtk-update-icon-cache") "true"))))))) + (("gtk-update-icon-cache") "true")) + #t))))) (home-page "https://wiki.gnome.org/Apps/EasyTAG") (synopsis "Simple application for viewing and editing tags in audio files") (description @@ -4622,3 +4629,82 @@ (define-public mloop @item Adjust tempo; Playback speed of loops can be adjusted on the fly. @end itemize\n") (license license:gpl2)))) + +(define-public pragha + (package + (name "pragha") + (version "1.3.4") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/pragha-music-player/pragha/" + "releases/download/v" version "/pragha-" version + ".tar.bz2")) + (sha256 + (base32 + "19kbhq99bkimx3aqrdzln0vlr4slkpx6kq66j731jvqyq76nlkp5")))) + (build-system glib-or-gtk-build-system) + (native-inputs + `(("intltool" ,intltool) + ("pkg-config" ,pkg-config))) + (inputs + `(("glib" ,glib) + ("grilo" ,grilo) + ("gstreamer" ,gstreamer) + ("gst-plugins-base" ,gst-plugins-base) + ("gst-plugins-good" ,gst-plugins-good) + ("gtk+" ,gtk+) + ("libcddb" ,libcddb) + ("libcdio" ,libcdio) + ("libcdio-paranoia" ,libcdio-paranoia) + ("libgudev" ,libgudev) + ("libnotify" ,libnotify) + ("libpeas" ,libpeas) + ("libsoup" ,libsoup) + ("sqlite" ,sqlite) + ("taglib" ,taglib))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))) + (wrap-program (string-append out "/bin/pragha") + `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))) + #t)))))) + (home-page "https://pragha-music-player.github.io") + (synopsis "Music player") + (description "Pragha is a lightweight music player based on Gtk and +sqlite. It is constructed to be fast, light, and simultaneously tries to be +complete without obstructing your daily work.") + (license license:gpl3+))) + +(define-public playerctl + (package + (name "playerctl") + (version "2.0.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/altdesktop/playerctl.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1f3njnpd52djx3dmhh9a8p5a67f0jmr1gbk98icflr2q91149gjz")))) + (build-system meson-build-system) + (arguments + `(#:configure-flags '("-Dintrospection=false" "-Dgtk-doc=false"))) + (inputs `(("python-pygobject" ,python-pygobject))) + (native-inputs + `(("glib:bin" ,glib "bin") + ("pkg-config" ,pkg-config))) + (synopsis "Control MPRIS-supporting media player applications") + (description + "Playerctl is a command-line utility and library for controlling media +players that implement the MPRIS D-Bus Interface Specification. Playerctl +makes it easy to bind player actions, such as play and pause, to media keys. +You can also get metadata about the playing track such as the artist and title +for integration into status line generators or other command-line tools.") + (home-page "https://github.com/altdesktop/playerctl") + (license license:lgpl3+))) diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 753e73d9d1..c0597c7e45 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -551,14 +551,15 @@ (define-public iodine (define-public whois (package (name "whois") - (version "5.5.1") + (version "5.5.2") (source (origin (method url-fetch) (uri (string-append "mirror://debian/pool/main/w/whois/" "whois_" version ".tar.xz")) (sha256 - (base32 "10mc7iqhdnvd1kk8gnnhihd5ga2rw3sz69n3nd6x8fb65qpq13gf")))) + (base32 + "1h55zs3cj4w9b0hq0x3z7s2mn46v0jyc39gz320ra4hwr0xlsnf0")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no test suite diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 40fcb5a66c..3b7d4b18dd 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -127,7 +127,7 @@ (define-public guix (commit commit))) (sha256 (base32 - "1j2d9anxgybv86pxcn1zdv121hb4nmjjp5ngx365fnd0mcg8q1iw")) + "0yx19hxvmkr6ar65ym87xd83n6hz02mr7ibwis7i8wah85ypfq26")) (file-name (string-append "guix-" version "-checkout")))) (build-system gnu-build-system) (arguments diff --git a/gnu/packages/patches/emacs-helm-org-ql.patch b/gnu/packages/patches/emacs-helm-org-ql.patch deleted file mode 100644 index 362e3d7d15..0000000000 --- a/gnu/packages/patches/emacs-helm-org-ql.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 3918944856834ef4a7ed613243a1612424d2daba Mon Sep 17 00:00:00 2001 -From: Brian Leung -Date: Thu, 10 Oct 2019 06:54:33 +0200 -Subject: [PATCH] Use require statements. - ---- - helm-org-ql.el | 19 ++----------------- - 1 file changed, 2 insertions(+), 17 deletions(-) - -diff --git a/helm-org-ql.el b/helm-org-ql.el -index 26beab9..113b7f2 100644 ---- a/helm-org-ql.el -+++ b/helm-org-ql.el -@@ -35,23 +35,8 @@ - (require 'org-ql) - (require 'org-ql-search) - --;; (require 'helm) --;; (require 'helm-org) -- --;;;; Compatibility -- --;; Declare Helm functions since Helm may not be installed. --(declare-function helm "ext:helm") --(declare-function helm-run-after-exit "ext:helm") --(declare-function helm-window "ext:helm-lib") --(declare-function helm-buffer-get "ext:helm-lib") --(declare-function helm-make-source "ext:helm-source") --(declare-function helm-org-goto-marker "ext:helm-org") -- --;; Silence byte-compiler about variables. --(defvar helm-map) --(defvar helm-pattern) --(defvar helm-input-idle-delay) -+(require 'helm) -+(require 'helm-org) - - ;;;; Variables - --- -2.23.0 - diff --git a/gnu/packages/patches/id3lib-UTF16-writing-bug.patch b/gnu/packages/patches/id3lib-UTF16-writing-bug.patch new file mode 100644 index 0000000000..4a8f69b321 --- /dev/null +++ b/gnu/packages/patches/id3lib-UTF16-writing-bug.patch @@ -0,0 +1,39 @@ +diff -ruN id3lib-3.8.3.orig/ChangeLog id3lib-3.8.3/ChangeLog +--- id3lib-3.8.3.orig/ChangeLog 2003-03-02 01:23:00.000000000 +0100 ++++ id3lib-3.8.3/ChangeLog 2006-02-22 00:33:59.946214472 +0100 +@@ -1,3 +1,8 @@ ++2006-02-17 Jerome Couderc ++ ++ * Patch from Spoon to fix UTF-16 writing bug ++ http://sourceforge.net/tracker/index.php?func=detail&aid=1016290&group_id=979&atid=300979 ++ + 2003-03-02 Sunday 17:38 Thijmen Klok + + * THANKS (1.20): added more people +diff -ruN id3lib-3.8.3.orig/src/io_helpers.cpp id3lib-3.8.3/src/io_helpers.cpp +--- id3lib-3.8.3.orig/src/io_helpers.cpp 2003-03-02 01:23:00.000000000 +0100 ++++ id3lib-3.8.3/src/io_helpers.cpp 2006-02-22 00:35:02.926639992 +0100 +@@ -363,11 +363,22 @@ + // Write the BOM: 0xFEFF + unicode_t BOM = 0xFEFF; + writer.writeChars((const unsigned char*) &BOM, 2); ++ // Patch from Spoon : 2004-08-25 14:17 ++ // http://sourceforge.net/tracker/index.php?func=detail&aid=1016290&group_id=979&atid=300979 ++ // Wrong code ++ //for (size_t i = 0; i < size; i += 2) ++ //{ ++ // unicode_t ch = (data[i] << 8) | data[i+1]; ++ // writer.writeChars((const unsigned char*) &ch, 2); ++ //} ++ // Right code ++ unsigned char *pdata = (unsigned char *) data.c_str(); + for (size_t i = 0; i < size; i += 2) + { +- unicode_t ch = (data[i] << 8) | data[i+1]; ++ unicode_t ch = (pdata[i] << 8) | pdata[i+1]; + writer.writeChars((const unsigned char*) &ch, 2); + } ++ // End patch + } + return writer.getCur() - beg; + } diff --git a/gnu/packages/patches/nsis-env-passthru.patch b/gnu/packages/patches/nsis-env-passthru.patch new file mode 100644 index 0000000000..36b4092230 --- /dev/null +++ b/gnu/packages/patches/nsis-env-passthru.patch @@ -0,0 +1,12 @@ +--- nsis-3.04-src/SConstruct 2019-05-30 14:53:30.276775332 -0400 ++++ nsis-3.04-src/SConstruct 2019-05-30 14:54:17.901232914 -0400 +@@ -77,6 +77,9 @@ + if not toolset and not path: + defenv = Environment(TARGET_ARCH = arch) + ++import os; ++defenv['ENV'] = os.environ ++ + Export('defenv') + + ###################################################################### diff --git a/gnu/packages/patches/parted-glibc-compat.patch b/gnu/packages/patches/parted-glibc-compat.patch deleted file mode 100644 index edf4afb0d1..0000000000 --- a/gnu/packages/patches/parted-glibc-compat.patch +++ /dev/null @@ -1,17 +0,0 @@ -Include for "major" and "minor". - -Taken from upstream: -https://git.savannah.gnu.org/cgit/parted.git/commit/?id=ba5e0451b51c983e40afd123b6e0d3eddb55e610 - -diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c -index 31b98ab..7e86b51 100644 ---- a/libparted/arch/linux.c -+++ b/libparted/arch/linux.c -@@ -41,6 +41,7 @@ - #include /* for uname() */ - #include - #include -+#include - #ifdef ENABLE_DEVICE_MAPPER - #include - #endif diff --git a/gnu/packages/patches/strace-ipc-tests.patch b/gnu/packages/patches/strace-ipc-tests.patch deleted file mode 100644 index 49341765ca..0000000000 --- a/gnu/packages/patches/strace-ipc-tests.patch +++ /dev/null @@ -1,30 +0,0 @@ -Fix a test failure on some systems. - -Taken from upstream: -https://github.com/strace/strace/commit/4377e3a1535a0ec3a42da8a1366ad6943f4efa0e - -diff --git a/tests/gen_tests.in b/tests/gen_tests.in -index 4a506b94c..4fdf4722c 100644 ---- a/tests/gen_tests.in -+++ b/tests/gen_tests.in -@@ -168,16 +168,16 @@ ipc_msg-Xabbrev +ipc.sh -Xabbrev -a26 - ipc_msg-Xraw +ipc.sh -Xraw -a16 - ipc_msg-Xverbose +ipc.sh -Xverbose -a34 - ipc_msgbuf-Xabbrev +ipc_msgbuf.test -Xabbrev --ipc_msgbuf-Xraw +ipc_msgbuf.test -Xraw -a22 -+ipc_msgbuf-Xraw +ipc_msgbuf.test -Xraw -a20 - ipc_msgbuf-Xverbose +ipc_msgbuf.test -Xverbose - ipc_sem +ipc.sh -a29 - ipc_sem-Xabbrev +ipc.sh -Xabbrev -a29 - ipc_sem-Xraw +ipc.sh -Xraw -a19 - ipc_sem-Xverbose +ipc.sh -Xverbose -a36 --ipc_shm +ipc.sh -a29 --ipc_shm-Xabbrev +ipc.sh -Xabbrev -a29 -+ipc_shm +ipc.sh -a26 -+ipc_shm-Xabbrev +ipc.sh -Xabbrev -a26 - ipc_shm-Xraw +ipc.sh -Xraw -a19 --ipc_shm-Xverbose +ipc.sh -Xverbose -a36 -+ipc_shm-Xverbose +ipc.sh -Xverbose -a34 - kcmp -a22 - kcmp-y -a22 -y -e trace=kcmp - kern_features -a16 diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 10fe5ee553..8137d665fd 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -2197,14 +2197,14 @@ (define-public python2-unidecode (define-public python-pyjwt (package (name "python-pyjwt") - (version "1.5.3") + (version "1.7.1") (source (origin (method url-fetch) (uri (pypi-uri "PyJWT" version)) (sha256 (base32 - "1rxsg14i33vm2i6lz0my628108c81k43v10n4h3p0gx62xdyf2sh")) + "15hflax5qkw1v6nssk1r0wkj83jgghskcmn875m3wgvpzdvajncd")) (modules '((guix build utils))) (snippet '(begin @@ -7742,20 +7742,21 @@ (define-public python2-nbformat (define-public python-bleach (package (name "python-bleach") - (version "1.4.3") + (version "3.1.0") (source (origin (method url-fetch) (uri (pypi-uri "bleach" version)) (sha256 (base32 - "0jvg3jxrvnx7xmm9gj262v60ib452xlnwlb0navyp7jsvcd0d4qj")))) + "1yhrgrhkln8bd6gn3imj69g1h4xqah9gaz9q26crqr6gmmvpzprz")))) (build-system python-build-system) (propagated-inputs - `(("python-html5lib" ,python-html5lib-0.9) + `(("python-webencodings" ,python-webencodings) ("python-six" ,python-six))) (native-inputs - `(("python-nose" ,python-nose))) + `(("python-pytest" ,python-pytest) + ("python-pytest-runner" ,python-pytest-runner-2))) (home-page "https://github.com/jsocol/bleach") (synopsis "Whitelist-based HTML-sanitizing tool") (description "Bleach is an easy whitelist-based HTML-sanitizing tool.") diff --git a/gnu/packages/re2c.scm b/gnu/packages/re2c.scm index e9668cba26..f81d4f67f7 100644 --- a/gnu/packages/re2c.scm +++ b/gnu/packages/re2c.scm @@ -26,15 +26,15 @@ (define-module (gnu packages re2c) (define-public re2c (package (name "re2c") - (version "1.1.1") + (version "1.2.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/skvadrik/" name "/releases/download/" version "/" - name "-" version ".tar.gz")) + name "-" version ".tar.xz")) (sha256 (base32 - "1ksifjn18v6nra935dpqllmvkqgcdsggfjgmj77282x0gqrrfrc5")))) + "05xq0571mkgr20v827jm63nhsirr8arghg4fszzswrmrnl3dfk0s")))) (build-system gnu-build-system) (home-page "http://re2c.org/") (synopsis "Lexer generator for C/C++") diff --git a/gnu/packages/tbb.scm b/gnu/packages/tbb.scm index f6d7e9b8b4..926e1caca1 100644 --- a/gnu/packages/tbb.scm +++ b/gnu/packages/tbb.scm @@ -28,7 +28,7 @@ (define-module (gnu packages tbb) (define-public tbb (package (name "tbb") - (version "2019_U8") + (version "2019_U9") (source (origin (method git-fetch) (uri (git-reference @@ -37,7 +37,7 @@ (define-public tbb (file-name (git-file-name name version)) (sha256 (base32 - "0z0kh1a5g28gckcxlv3x7qqskh5fsl8knf2ypbbvk7z9ln9k3wfq")) + "1a39nflw7b2n51jfp3fdprnkpgzaspzww1dckfvaigflfli9s8rj")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm index 9ef95b42ed..31f9ae848e 100644 --- a/gnu/packages/tcl.scm +++ b/gnu/packages/tcl.scm @@ -88,7 +88,7 @@ (define-public tcl ;; likely related to name resolution), but that doesn't cause ;; `make' to fail. #:test-target "test")) - (home-page "http://www.tcl.tk/") + (home-page "https://www.tcl.tk/") (synopsis "The Tcl scripting language") (description "The Tcl (Tool Command Language) scripting language.") (license license:tcl/tk))) diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index c45767c1b3..2def6ee703 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -392,6 +392,7 @@ (define-public openssl-1.0 (inherit openssl) (name "openssl") (version "1.0.2s") + (replacement openssl-1.0.2t) (source (origin (method url-fetch) (uri (list (string-append "https://www.openssl.org/source/openssl-" @@ -473,6 +474,27 @@ (define-public openssl-1.0 ,version "/misc")) #t))))))))) +(define openssl-1.0.2t + (package + (inherit openssl) + (version "1.0.2t") + (source (origin + (inherit (package-source openssl-1.0)) + (uri (list (string-append "https://www.openssl.org/source/openssl-" + version ".tar.gz") + (string-append "ftp://ftp.openssl.org/source/" + "openssl-" version ".tar.gz") + (string-append "ftp://ftp.openssl.org/source/old/" + (string-trim-right version char-set:letter) + "/openssl-" version ".tar.gz"))) + (sha256 + (base32 + "1g67ra0ph7gpz6fgvv1i96d792jmd6ymci5kk53vbikszr74djql")))) + (arguments + (substitute-keyword-arguments (package-arguments openssl-1.0) + ;; Parallel build is not supported in 1.0.x. + ((#:parallel-build? _ #f) #f))))) + (define-public libressl (package (name "libressl") diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index dcd586c97a..8f4019b9c0 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -2637,14 +2637,14 @@ (define-public mps-youtube (define-public handbrake (package (name "handbrake") - (version "1.2.0") + (version "1.2.2") (source (origin (method url-fetch) (uri (string-append "https://download.handbrake.fr/releases/" version "/HandBrake-" version "-source.tar.bz2")) (sha256 (base32 - "03clkknaq3mz84p85cvr21gsy9b8vv2g4vvyfz44hz8la253jfqi")) + "0k2yaqy7zi06k8mkp9az2mn9dlgj3a1339vacakfh2nn2zsics6z")) (modules '((guix build utils))) (snippet ;; Remove "contrib" and source not necessary for diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index fc7626df38..5088aa07e0 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -466,15 +466,14 @@ (define-public fcgiwrap (define-public starman (package (name "starman") - (version "0.4014") + (version "0.4015") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/" "Starman-" version ".tar.gz")) (sha256 - (base32 - "1sbb5rb3vs82rlh1fjkgkcmj5pj62b4y9si4ihh45sl9m8c2qxx5")))) + (base32 "1y1kn4929k299fbf6sw9lxcsdlq9fvq777p6yrzk591rr9xhkx8h")))) (build-system perl-build-system) (native-inputs `(("perl-libwww" ,perl-libwww) @@ -6544,6 +6543,7 @@ (define-public nghttp2 (package (name "nghttp2") (version "1.39.1") + (replacement nghttp2-1.39.2) (source (origin (method url-fetch) @@ -6622,6 +6622,19 @@ (define-public nghttp2 @end itemize\n") (license license:expat))) +(define nghttp2-1.39.2 + (package + (inherit nghttp2) + (version "1.39.2") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/nghttp2/nghttp2/" + "releases/download/v" version "/" + "nghttp2-" version ".tar.xz")) + (sha256 + (base32 + "12yfsjghbaypp4w964d45ih9vs38g6anih80wbsflaxx192idlm2")))))) + (define-public hpcguix-web (let ((commit "f39c90b35e99e4122b0866ec4337020d61c81508") (revision "4")) diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm index bac6ac0d4d..51719a2b4f 100644 --- a/gnu/packages/xiph.scm +++ b/gnu/packages/xiph.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2014 Mark H Weaver ;;; Copyright © 2015 Paul van der Walt ;;; Copyright © 2015, 2016, 2017, 2019 Efraim Flashner -;;; Copyright © 2017, 2018 Marius Bakke +;;; Copyright © 2017, 2018, 2019 Marius Bakke ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2018 Leo Famulari ;;; @@ -27,6 +27,7 @@ (define-module (gnu packages xiph) #:use-module (gnu packages) + #:use-module (gnu packages autotools) #:use-module (gnu packages bison) #:use-module (gnu packages compression) #:use-module (gnu packages curl) @@ -41,6 +42,7 @@ (define-module (gnu packages xiph) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system gnu) #:export (libogg libvorbis @@ -185,15 +187,17 @@ (define speexdsp (define ao (package (name "ao") - (version "1.2.0") - (source - (origin - (method url-fetch) - (uri (string-append "https://downloads.xiph.org/releases/ao/libao-" - version ".tar.gz")) - (sha256 - (base32 - "1bwwv1g9lchaq6qmhvj1pp3hnyqr64ydd4j38x94pmprs4d27b83")))) + ;; We need a few commits on top of 1.2.2 to fix CVE-2017-11548. + (version "1.2.2-5-g20dc8ed") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.xiph.org/libao.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1d1b3g2a7jd43c32242yq6nfysqsmp7rjslhvbrmpgk119l5fnbj")))) (build-system gnu-build-system) ;; FIXME: Add further backends, see the summary printed after configure. ;; XXX: Should back-ends be pushed to different outputs? For instance, @@ -203,7 +207,10 @@ (define ao `(("alsa-lib" ,alsa-lib) ("pulseaudio" ,pulseaudio))) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("pkg-config" ,pkg-config) + ("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool))) (synopsis "Cross platform audio library") (description "Libao is a cross-platform audio library that allows programs to @@ -230,6 +237,7 @@ (define ao @end enumerate ") (license license:gpl2+) + (properties '((cpe-name . "libao"))) (home-page "https://www.xiph.org/ao/"))) (define flac diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index 5686a960e0..7af0d55750 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -13,7 +13,7 @@ ;;; Copyright © 2016 Jan Nieuwenhuizen ;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice -;;; Copyright © 2016, 2017, 2018 Marius Bakke +;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke ;;; Copyright © 2017 Adriano Peluso ;;; Copyright © 2017 Gregor Giesen ;;; Copyright © 2017 Alex Vong @@ -67,6 +67,7 @@ (define-public expat (package (name "expat") (version "2.2.7") + (replacement expat-2.2.9) (source (let ((dot->underscore (lambda (c) (if (char=? #\. c) #\_ c)))) (origin (method url-fetch) @@ -88,6 +89,23 @@ (define-public expat things the parser might find in the XML document (like start tags).") (license license:expat))) +(define expat-2.2.9 + (package + (inherit expat) + (version "2.2.9") + (source (let ((dot->underscore (lambda (c) (if (char=? #\. c) #\_ c)))) + (origin + (method url-fetch) + (uri (list (string-append "mirror://sourceforge/expat/expat/" + version "/expat-" version ".tar.xz") + (string-append + "https://github.com/libexpat/libexpat/releases/download/R_" + (string-map dot->underscore version) + "/expat-" version ".tar.xz"))) + (sha256 + (base32 + "1960mmgbb4cm64n1p0nz3hrs1pw03hkrfcw8prmnn4622mdrd9hy"))))))) + (define-public libebml (package (name "libebml") diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 5225c06a17..8c409eaebb 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -4394,14 +4394,14 @@ (define-public xwd redisplay, printing, editing, formatting, archiving, image processing, etc. The target window is selected by clicking the pointer in the desired window. The keyboard bell is rung once at the beginning of the -dump and twice whenthe dump is completed.") +dump and twice when the dump is completed.") (license license:x11))) (define-public xwininfo (package (name "xwininfo") - (version "1.1.4") + (version "1.1.5") (source (origin (method url-fetch) @@ -4411,7 +4411,7 @@ (define-public xwininfo ".tar.bz2")) (sha256 (base32 - "00avrpw4h5mr1klp41lv2j4dmq465v6l5kb5bhm4k5ml8sm9i543")))) + "03h8clirhw5ki1xxp18xbf5vynm7r0dwspsgfin6cxn4vx0m8h3s")))) (build-system gnu-build-system) (inputs `(("libx11" ,libx11) diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm index c9140074b7..3cc89f8852 100644 --- a/guix/build-system/gnu.scm +++ b/guix/build-system/gnu.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -57,12 +57,16 @@ (define %default-modules '((guix build gnu-build-system) (guix build utils))) -(define* (package-with-explicit-inputs p inputs - #:optional - (loc (current-source-location)) - #:key (native-inputs '()) - guile) - "Rewrite P, which is assumed to use GNU-BUILD-SYSTEM, to take INPUTS and +(define* (package-with-explicit-inputs/deprecated p inputs + #:optional + (loc (current-source-location)) + #:key (native-inputs '()) + guile) + "This variant is deprecated because it is inefficient: it memoizes only +temporarily instead of memoizing across all transformations where INPUTS is +the same. + +Rewrite P, which is assumed to use GNU-BUILD-SYSTEM, to take INPUTS and NATIVE-INPUTS as explicit inputs instead of the implicit default, and return it. INPUTS and NATIVE-INPUTS can be either input lists or thunks; in the latter case, they will be called in a context where the `%current-system' and @@ -124,6 +128,47 @@ (define rewritten-input ,@(map rewritten-input (filtered (package-inputs p))))))))) +(define* (package-with-explicit-inputs* inputs #:optional guile) + "Return a procedure that rewrites the given package and all its dependencies +so that they use INPUTS (a thunk) instead of implicit inputs." + (define (duplicate-filter package-inputs) + (let ((names (match (inputs) + (((name _ ...) ...) + name)))) + (fold alist-delete package-inputs names))) + + (define (add-explicit-inputs p) + (if (and (eq? (package-build-system p) gnu-build-system) + (not (memq #:implicit-inputs? (package-arguments p)))) + (package + (inherit p) + (inputs (append (inputs) + (duplicate-filter (package-inputs p)))) + (arguments + (ensure-keyword-arguments (package-arguments p) + `(#:implicit-inputs? #f + #:guile ,guile)))) + p)) + + (define (cut? p) + (and (eq? (package-build-system p) gnu-build-system) + (memq #:implicit-inputs? (package-arguments p)))) + + (package-mapping add-explicit-inputs cut?)) + +(define package-with-explicit-inputs + (case-lambda* + ((inputs #:optional guile) + (package-with-explicit-inputs* inputs guile)) + ((p inputs #:optional (loc (current-source-location)) + #:key (native-inputs '()) guile) + ;; deprecated + (package-with-explicit-inputs/deprecated p inputs + loc + #:native-inputs + native-inputs + #:guile guile)))) + (define (package-with-extra-configure-variable p variable value) "Return a version of P with VARIABLE=VALUE specified as an extra `configure' flag, recursively. An example is LDFLAGS=-static. If P already has configure diff --git a/guix/build-system/scons.scm b/guix/build-system/scons.scm index 5e76d64180..aad455c419 100644 --- a/guix/build-system/scons.scm +++ b/guix/build-system/scons.scm @@ -76,7 +76,9 @@ (define* (scons-build store name inputs #:key (tests? #t) (scons-flags ''()) + (build-targets ''()) (test-target "test") + (install-targets ''("install")) (phases '(@ (guix build scons-build-system) %standard-phases)) (outputs '("out")) @@ -101,8 +103,10 @@ (define builder source)) #:scons-flags ,scons-flags #:system ,system + #:build-targets ,build-targets #:test-target ,test-target #:tests? ,tests? + #:install-targets ,install-targets #:phases ,phases #:outputs %outputs #:search-paths ',(map search-path-specification->sexp diff --git a/guix/build/scons-build-system.scm b/guix/build/scons-build-system.scm index eb013f03b6..17a0b7b877 100644 --- a/guix/build/scons-build-system.scm +++ b/guix/build/scons-build-system.scm @@ -29,7 +29,7 @@ (define-module (guix build scons-build-system) ;; ;; Code: -(define* (build #:key outputs (scons-flags '()) (parallel-build? #t) #:allow-other-keys) +(define* (build #:key outputs (build-targets '()) (scons-flags '()) (parallel-build? #t) #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (mkdir-p out) (apply invoke "scons" @@ -37,7 +37,8 @@ (define* (build #:key outputs (scons-flags '()) (parallel-build? #t) #:allow-oth (list "-j" (number->string (parallel-job-count))) (list)) - scons-flags)))) + scons-flags + build-targets)))) (define* (check #:key tests? test-target (scons-flags '()) #:allow-other-keys) "Run the test suite of a given SCons application." @@ -46,9 +47,9 @@ (define* (check #:key tests? test-target (scons-flags '()) #:allow-other-keys) (format #t "test suite not run~%")) #t) -(define* (install #:key outputs (scons-flags '()) #:allow-other-keys) +(define* (install #:key outputs (install-targets '("install")) (scons-flags '()) #:allow-other-keys) "Install a given SCons application." - (apply invoke "scons" "install" scons-flags)) + (apply invoke "scons" (append scons-flags install-targets))) (define %standard-phases (modify-phases gnu:%standard-phases diff --git a/guix/gexp.scm b/guix/gexp.scm index 600750e846..7323277511 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -1508,7 +1508,7 @@ (define* (load-path-expression modules #:optional (path %load-path) (gexp (eval-when (expand load eval) ;; Augment the load paths and delete duplicates. Do that ;; without loading (srfi srfi-1) or anything. - (let ((extensions '((ungexp-native-splicing extensions))) + (let ((extensions '((ungexp-splicing extensions))) (prepend (lambda (items lst) ;; This is O(N²) but N is typically small. (let loop ((items items)