gnu: webkitgtk: Update to 2.28.2.
[jackhill/guix/guix.git] / gnu / packages / guile.scm
index 5a5d1af..c643f9d 100644 (file)
@@ -1,15 +1,15 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014, 2016, 2018 David Thompson <davet@gnu.org>
 ;;; Copyright © 2014, 2017, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2017 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016, 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017, 2018 Amirouche <amirouche@hypermove.net>
 ;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
@@ -250,17 +250,21 @@ without requiring the source code to be rewritten.")
             (variable "GUILE_LOAD_COMPILED_PATH")
             (files '("lib/guile/2.2/site-ccache")))))))
 
-(define-public guile-2.2/bug-fix
-  ;; This variant contains a bug fix for a relatively rare crash that could
+(define-public guile-2.2.7
+  ;; This version contains a bug fix for a relatively rare crash that could
   ;; affect shepherd as PID 1: <https://bugs.gnu.org/37757>.
   (package
     (inherit guile-2.2)
-    (version (string-append (package-version guile-2.2) "-1"))
+    (version "2.2.7")
     (source (origin
               (inherit (package-source guile-2.2))
-              (patches
-               (append (search-patches "guile-finalization-crash.patch")
-                       (origin-patches (package-source guile-2.2))))))))
+              (uri (string-append "mirror://gnu/guile/guile-" version
+                                  ".tar.xz"))
+              (sha256
+               (base32
+                "013mydzhfswqci6xmyc1ajzd59pfbdak15i0b090nhr9bzm7dxyd"))))))
+
+(define-deprecated guile-2.2/bug-fix guile-2.2.7)
 
 (define-public guile-2.2/fixed
   ;; A package of Guile 2.2 that's rarely changed.  It is the one used
@@ -283,19 +287,19 @@ without requiring the source code to be rewritten.")
               (base32
                "07p3g0v2ba2vlfbfidqzlgbhnzdx46wh2rgc5gszq1mjyx5bks6r"))))))
 
-(define-public guile-next
-  ;; This is the upcoming Guile 3.0, with JIT support.
+(define-public guile-3.0
+  ;; This is the latest Guile stable version.
   (package
     (inherit guile-2.2)
-    (name "guile-next")
-    (version "2.9.7")
+    (name "guile-next")                           ;to be renamed to "guile"
+    (version "3.0.2")
     (source (origin
               (inherit (package-source guile-2.2))
-              (uri (string-append "ftp://alpha.gnu.org/gnu/guile/guile-"
+              (uri (string-append "mirror://gnu/guile/guile-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "1dskpj8a2gl3h8si4virq8z4y06v9ywyadfa92gn2fiip2qmkw0d"))))
+                "12lziar4j27j9whqp2n18427q45y9ghq7gdd8lqhmj1k0lr7vi2k"))))
     (native-search-paths
      (list (search-path-specification
             (variable "GUILE_LOAD_PATH")
@@ -303,13 +307,13 @@ without requiring the source code to be rewritten.")
            (search-path-specification
             (variable "GUILE_LOAD_COMPILED_PATH")
             (files '("lib/guile/3.0/site-ccache"
-                     "share/guile/site/3.0")))))
-    (properties '((ftp-server . "alpha.gnu.org")
-                  (upstream-name . "guile")))))
+                     "share/guile/site/3.0")))))))
+
+(define-public guile-next guile-3.0)
 
-(define (make-guile-readline guile)
+(define* (make-guile-readline guile #:optional (name "guile-readline"))
   (package
-    (name "guile-readline")
+    (name name)
     (version (package-version guile))
     (source (package-source guile))
     (build-system gnu-build-system)
@@ -366,6 +370,9 @@ GNU@tie{}Guile.  Use the @code{(ice-9 readline)} module and call its
 (define-public guile-readline
   (make-guile-readline guile-2.2))
 
+(define-public guile3.0-readline
+  (make-guile-readline guile-next "guile3.0-readline"))
+
 (define (guile-variant-package-name prefix)
   (lambda (name)
     "Return NAME with PREFIX instead of \"guile-\", when applicable."
@@ -386,40 +393,50 @@ GNU@tie{}Guile.  Use the @code{(ice-9 readline)} module and call its
                            (guile-variant-package-name "guile3.0")))
 
 (define-public guile-for-guile-emacs
-  (package (inherit guile-2.2)
-    (name "guile-for-guile-emacs")
-    (version "20150510.d8d9a8d")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "git://git.hcoop.net/git/bpt/guile.git")
-                    (commit "d8d9a8da05ec876acba81a559798eb5eeceb5a17")))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "00sprsshy16y8pxjy126hr2adqcvvzzz96hjyjwgg8swva1qh6b0"))))
-    (arguments
-     `(;; Tests aren't passing for now.
-       ;; Obviously we should re-enable this!
-       #:tests? #f
-       ,@(package-arguments guile-2.2)))
-    (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("libtool" ,libtool)
-       ("flex" ,flex)
-       ("texinfo" ,texinfo)
-       ("gettext" ,gettext-minimal)
-       ,@(package-native-inputs guile-2.2)))
-    ;; Same as in guile-2.0
-    (native-search-paths
-     (list (search-path-specification
-            (variable "GUILE_LOAD_PATH")
-            (files '("share/guile/site/2.0")))
-           (search-path-specification
-            (variable "GUILE_LOAD_COMPILED_PATH")
-            (files '("lib/guile/2.0/site-ccache"
-                     "share/guile/site/2.0")))))))
+  (let ((commit "15ca78482ac0dd2e3eb36dcb31765d8652d7106d")
+        (revision "1"))
+    (package (inherit guile-2.2)
+      (name "guile-for-guile-emacs")
+      (version (git-version "2.1.2" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "git://git.savannah.gnu.org/guile.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1l7ik4q4zk7vq4m3gnwizc0b64b1mdr31hxqlzxs94xaf2lvi7s2"))))
+      (arguments
+       (substitute-keyword-arguments (package-arguments guile-2.2)
+         ((#:phases phases '%standard-phases)
+          `(modify-phases ,phases
+             (replace 'bootstrap
+               (lambda _
+                 ;; Disable broken tests.
+                 ;; TODO: Fix them!
+                 (substitute* "test-suite/tests/gc.test"
+                   (("\\(pass-if \"after-gc-hook gets called\"" m)
+                    (string-append "#;" m)))
+                 (substitute* "test-suite/tests/version.test"
+                   (("\\(pass-if \"version reporting works\"" m)
+                    (string-append "#;" m)))
+                 ;; Warning: Unwind-only `out-of-memory' exception; skipping pre-unwind handler.
+                 ;; FAIL: test-out-of-memory
+                 (substitute* "test-suite/standalone/Makefile.am"
+                   (("(check_SCRIPTS|TESTS) \\+= test-out-of-memory") ""))
+                 
+                 (patch-shebang "build-aux/git-version-gen")
+                 (invoke "sh" "autogen.sh")
+                 #t))))))
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("libtool" ,libtool)
+         ("flex" ,flex)
+         ("texinfo" ,texinfo)
+         ("gettext" ,gettext-minimal)
+         ,@(package-native-inputs guile-2.2))))))
 
 \f
 ;;;
@@ -460,9 +477,7 @@ specification.  These are the main features:
 ;; Deprecate the 'guile-json' alias to force the use 'guile-json-1' or
 ;; 'guile-json-3'.  In the future, we may reuse 'guile-json' as an alias for
 ;; 'guile-json-3'.
-(define-deprecated guile-json
-  guile-json-1
-  guile-json-1)
+(define-deprecated guile-json guile-json-1)
 (export guile-json)
 
 (define-public guile2.0-json
@@ -584,21 +599,36 @@ Guile's foreign function interface.")
 (define-public guile-bytestructures
   (package
     (name "guile-bytestructures")
-    (version "1.0.6")
+    (version "1.0.7")
+    (home-page "https://github.com/TaylanUB/scheme-bytestructures")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/TaylanUB/scheme-bytestructures"
-                                  "/releases/download/v" version
-                                  "/bytestructures-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "07dffrmc6cnw9mmw0pdrqlkbhzzpz0hm8p26z738l2j5i84dypnk"))))
+                "0q0habjiy3h9cigb7q1br9kz6z212dn2ab31f6dgd3rrmsfn5rvb"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags '("GUILE_AUTO_COMPILE=0")     ;to prevent guild warnings
+
+       #:phases (modify-phases %standard-phases
+                  (add-after 'install 'install-doc
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out"))
+                             (package ,(package-full-name this-package "-"))
+                             (doc (string-append out "/share/doc/" package)))
+                        (install-file "README.md" doc)
+                        #t))))))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)
+       ("guile" ,guile-2.2)))
     (inputs
      `(("guile" ,guile-2.2)))
-    (home-page "https://github.com/TaylanUB/scheme-bytestructures")
     (synopsis "Structured access to bytevector contents for Guile")
     (description
      "Guile bytestructures offers a system imitating the type system
@@ -618,36 +648,21 @@ type system, elevating types to first-class status.")
 (define-public guile-git
   (package
     (name "guile-git")
-    (version "0.2.0")
+    (version "0.3.0")
     (home-page "https://gitlab.com/guile-git/guile-git.git")
     (source (origin
-              (method git-fetch)
-              (uri (git-reference (url home-page)
-                                  (commit (string-append "v" version))))
+              (method url-fetch)
+              (uri (string-append "https://gitlab.com/guile-git/guile-git/uploads/"
+                                  "4c563d8e7e1ff84396abe8ca7011bcaf/guile-git-"
+                                  version ".tar.gz"))
               (sha256
                (base32
-                "018hmfsh0rjwfvr4h7y10jc6k8a2k9xsirngghy3pjasin4nd2yz"))
-              (file-name (git-file-name name version))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; Allow builds with Guile 3.0.
-                  (substitute* "configure.ac"
-                    (("^GUILE_PKG.*")
-                     "GUILE_PKG([3.0 2.2 2.0])\n"))
-
-                  ;; The 'guile.m4' that's shipped is too old and fails to
-                  ;; recognize Guile 2.9/3.0.  Delete it and pick the one
-                  ;; provided by the Guile we're using.
-                  (delete-file "m4/guile.m4")
-
-                  #t))))
+                "0c5i3d16hp7gp9rd78vk9zc45js8bphf92m4lbb5gyi4l1yl7kkm"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("texinfo" ,texinfo)
-       ("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)
+       ("guile" ,guile-2.2)
+       ("guile-bytestructures" ,guile-bytestructures)))
     (inputs
      `(("guile" ,guile-2.2)
        ("libgit2" ,libgit2)))