hydra: Fix typo in core package list.
[jackhill/guix/guix.git] / gnu / packages / guile.scm
index b53f3eb..d1ea6e8 100644 (file)
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -35,7 +36,9 @@
   #:use-module (gnu packages which)
   #:use-module (guix packages)
   #:use-module (guix download)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (guix utils)
+  #:use-module (ice-9 match))
 
 ;;; Commentary:
 ;;;
                                 ".tar.gz"))
             (sha256
              (base32
-              "0l200a0v7h8bh0cwz6v7hc13ds39cgqsmfrks55b1rbj5vniyiy3"))))
+              "0l200a0v7h8bh0cwz6v7hc13ds39cgqsmfrks55b1rbj5vniyiy3"))
+            (patches (list (search-patch "guile-1.8-cpp-4.5.patch")))))
    (build-system gnu-build-system)
    (arguments '(#:configure-flags '("--disable-error-on-warning")
-                #:patches (list (assoc-ref %build-inputs "patch/snarf"))
 
                 ;; Insert a phase before `configure' to patch things up.
                 #:phases (alist-cons-before
@@ -77,8 +80,7 @@
                              (substitute* "ice-9/popen.scm"
                                (("/bin/sh") (which "sh"))))
                            %standard-phases)))
-   (inputs `(("patch/snarf" ,(search-patch "guile-1.8-cpp-4.5.patch"))
-             ("gawk" ,gawk)
+   (inputs `(("gawk" ,gawk)
              ("readline" ,readline)))
 
    ;; Since `guile-1.8.pc' has "Libs: ... -lgmp -lltdl", these must be
 
    (synopsis "Scheme implementation intended especially for extensions")
    (description
-"GNU Guile 1.8 is an interpreter for the Scheme programming language,
-packaged as a library that can be embedded into programs to make them
-extensible.  It supports many SRFIs.")
+    "Guile is the GNU Ubiquitous Intelligent Language for Extensions, the
+official extension language of the GNU system.  It is an implementation of
+the Scheme language which can be easily embedded in other applications to
+provide a convenient means of extending the functionality of the application
+without requiring the source code to be rewritten.")
    (home-page "http://www.gnu.org/software/guile/")
    (license lgpl2.0+)))
 
 (define-public guile-2.0
   (package
    (name "guile")
-   (version "2.0.9")
+   (version "2.0.11")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/guile/guile-" version
                                 ".tar.xz"))
             (sha256
              (base32
-              "0nw9y8vjyz4r61v06p9msks5lm58pd91irmzg4k487vmv743h2pp"))))
+              "1qh3j7308qvsjgwf7h94yqgckpbgz2k3yqdkzsyhqcafvfka9l5f"))))
    (build-system gnu-build-system)
    (native-inputs `(("pkgconfig" ,pkg-config)))
    (inputs `(("libffi" ,libffi)
@@ -138,33 +142,18 @@ extensible.  It supports many SRFIs.")
 
    (self-native-input? #t)
 
+   (outputs '("out" "debug"))
+
    (arguments
     `(#:phases (alist-cons-before
                 'configure 'pre-configure
                 (lambda* (#:key inputs #:allow-other-keys)
-                  ;; By default we end up with GUILE_LOAD_PATH="" and
-                  ;; GUILE_LOAD_COMPILED_PATH="".  But that is equivalent to
-                  ;; ".", and breaks the build system when cross-compiling.
-                  ;; Thus, make sure they are unset.
-                  ;; TODO: Eventually fix `set-path-environment-variable'
-                  ;; for that case.
-                  ,@(if (%current-target-system)
-                        '((unsetenv "GUILE_LOAD_PATH")
-                          (unsetenv "GUILE_LOAD_COMPILED_PATH"))
-                        '())
-
                   ;; Tell (ice-9 popen) the file name of Bash.
                   (let ((bash (assoc-ref inputs "bash")))
                     (substitute* "module/ice-9/popen.scm"
                       (("/bin/sh")
                        (string-append bash "/bin/bash")))))
-                ,(if (%current-target-system)
-                     '%standard-cross-phases
-                     '%standard-phases))
-
-      ,@(if (%current-target-system)
-            '(#:configure-flags '("CC_FOR_BUILD=gcc"))
-            '())))
+                %standard-phases)))
 
    (native-search-paths
     (list (search-path-specification
@@ -176,12 +165,11 @@ extensible.  It supports many SRFIs.")
 
    (synopsis "Scheme implementation intended especially for extensions")
    (description
-"GNU Guile is an implementation of the Scheme programming language, with
-support for many SRFIs, packaged for use in a wide variety of environments.
-In addition to implementing the R5RS Scheme standard and a large subset of
-R6RS, Guile includes a module system, full access to POSIX system calls,
-networking support, multiple threads, dynamic linking, a foreign function
-call interface, and powerful string processing.")
+    "Guile is the GNU Ubiquitous Intelligent Language for Extensions, the
+official extension language of the GNU system.  It is an implementation of
+the Scheme language which can be easily embedded in other applications to
+provide a convenient means of extending the functionality of the application
+without requiring the source code to be rewritten.")
    (home-page "http://www.gnu.org/software/guile/")
    (license lgpl3+)))
 
@@ -261,7 +249,7 @@ many readers as needed).")
     (arguments
      '(#:configure-flags (list (string-append "--with-guilesitedir="
                                               (assoc-ref %outputs "out")
-                                              "/share/guile/site"))
+                                              "/share/guile/site/2.0"))
        #:phases (alist-cons-after
                  'install 'post-install
                  (lambda* (#:key outputs #:allow-other-keys)
@@ -276,10 +264,8 @@ many readers as needed).")
     (home-page "http://www.gnu.org/software/guile-ncurses/")
     (synopsis "Guile bindings to ncurses")
     (description
-     "GNU Guile-Ncurses is a library for the Guile Scheme interpreter that
-provides functions for creating text user interfaces.  The text user interface
-functionality is built on the ncurses libraries: curses, form, panel, and
-menu.")
+     "guile-ncurses provides Guile language bindings for the ncurses
+library.")
     (license lgpl3+)))
 
 (define-public mcron
@@ -292,21 +278,52 @@ menu.")
                                  version ".tar.gz"))
              (sha256
               (base32
-               "0yvrfzzdy2m7fbqkr61fw01wd9r2jpnbyabxhcsfivgxywknl0fy"))))
+               "0yvrfzzdy2m7fbqkr61fw01wd9r2jpnbyabxhcsfivgxywknl0fy"))
+             (patches (list (search-patch "mcron-install.patch")))))
     (build-system gnu-build-system)
-    (arguments
-     '(#:patches (list (assoc-ref %build-inputs "patch/install"))))
     (inputs
-     `(("ed" ,ed) ("which" ,which) ("guile" ,guile-1.8)
-       ("patch/install" ,(search-patch "mcron-install.patch"))))
+     `(("ed" ,ed) ("which" ,which) ("guile" ,guile-1.8)))
     (home-page "http://www.gnu.org/software/mcron/")
     (synopsis "Run jobs at scheduled times")
     (description
-     "The GNU package mcron (Mellor's cron) is a 100% compatible replacement
-for Vixie cron.  It is written in pure Guile, and allows configuration files
-to be written in scheme (as well as Vixie's original format) for infinite
-flexibility in specifying when jobs should be run.  Mcron was written by Dale
-Mellor.")
+     "GNU Mcron is a complete replacement for Vixie cron.  It is used to run
+tasks on a schedule, such as every hour or every Monday.  Mcron is written in
+Guile, so its configuration can be written in Scheme; the original cron
+format is also supported.")
+    (license gpl3+)))
+
+(define-public guile-lib
+  (package
+    (name "guile-lib")
+    (version "0.2.2")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "mirror://savannah/guile-lib/guile-lib-"
+                                 version ".tar.gz"))
+             (sha256
+              (base32
+               "1f9n2b5b5r75lzjinyk6zp6g20g60msa0jpfrk5hhg4j8cy0ih4b"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (alist-cons-before
+                 'configure 'patch-module-dir
+                 (lambda _
+                   (substitute* "src/Makefile.in"
+                     (("^moddir[[:blank:]]*=[[:blank:]]*([[:graph:]]+)" _ rhs)
+                      (string-append "moddir = " rhs "/2.0\n"))))
+                 %standard-phases)))
+    (inputs `(("guile" ,guile-2.0)))
+    (home-page "http://www.nongnu.org/guile-lib/")
+    (synopsis "Collection of useful Guile Scheme modules")
+    (description
+     "guile-lib is intended as an accumulation place for pure-scheme Guile
+modules, allowing for people to cooperate integrating their generic Guile
+modules into a coherent library.  Think \"a down-scaled, limited-scope CPAN
+for Guile\".")
+
+    ;; The whole is under GPLv3+, but some modules are under laxer
+    ;; distribution terms such as LGPL and public domain.  See `COPYING' for
+    ;; details.
     (license gpl3+)))
 
 ;;; guile.scm ends here