build: Set 'NIX_LIBEXEC_DIR' in 'pre-inst-env'.
[jackhill/guix/guix.git] / gnu / packages / guile.scm
index c580e0c..1f42325 100644 (file)
@@ -1,5 +1,5 @@
 ;;; 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>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -35,7 +35,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 +79,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+)))
 
@@ -133,7 +136,7 @@ extensible.  It supports many SRFIs.")
 
       ;; The headers and/or `guile-2.0.pc' refer to these packages, so they
       ;; must be propagated.
-      ("bdw-gc" ,libgc)
+      ("bdw-gc" ,libgc-7.4)
       ("gmp" ,gmp)))
 
    (self-native-input? #t)
@@ -165,19 +168,26 @@ 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+)))
 
 (define-public guile-2.0/fixed
   ;; A package of Guile 2.0 that's rarely changed.  It is the one used
   ;; in the `base' module, and thus changing it entails a full rebuild.
-  guile-2.0)
+  (package (inherit guile-2.0)
+    (location (source-properties->location (current-source-location)))
+
+    ;; Keep using the stable libgc.
+    (propagated-inputs (map (match-lambda
+                             (("bdw-gc" _)
+                              `("bdw-gc" ,libgc))
+                             (x x))
+                            (package-propagated-inputs guile-2.0)))))
 
 \f
 ;;;
@@ -265,10 +275,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
@@ -281,21 +289,18 @@ 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