aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2012-09-26 22:17:41 +0200
committerLudovic Courtès <ludo@gnu.org>2012-09-26 23:00:36 +0200
commit1722d6800fb769804600f91a442e07903f8af00a (patch)
treeebc5d6a920145ef47d8f56df797a02b47b5a2a70
parent1f455fdca60c90710322d99ac529a31d71764a0d (diff)
downloadguix-1722d6800fb769804600f91a442e07903f8af00a.tar
guix-1722d6800fb769804600f91a442e07903f8af00a.tar.gz
distro: Add the `guile', `typesetting', and `databases' package modules.
* distro.scm (package-files): Adjust PREFIX-LEN to use the top-level directory, not %DISTRO-MODULE-DIRECTORY. * distro/packages/base.scm (guile-reader, guile-reader/guile-1.8, guile-reader/guile-2.0, lout, recutils): Move to... * distro/packages/guile.scm, distro/packages/typesetting.scm, distro/packages/databases.scm: ... here. New files. * Makefile.am (MODULES): Add them. (EXTRA_DIST): Add `.dir-locals.el'. * .dir-locals.el: New file, with settings formerly in `base.scm'.
-rw-r--r--.dir-locals.el16
-rw-r--r--Makefile.am6
-rw-r--r--distro.scm2
-rw-r--r--distro/packages/base.scm192
-rw-r--r--distro/packages/databases.scm60
-rw-r--r--distro/packages/guile.scm75
-rw-r--r--distro/packages/typesetting.scm137
7 files changed, 296 insertions, 192 deletions
diff --git a/.dir-locals.el b/.dir-locals.el
new file mode 100644
index 0000000000..f04fdc6fc7
--- /dev/null
+++ b/.dir-locals.el
@@ -0,0 +1,16 @@
+;; Per-directory local variables for GNU Emacs 23 and later.
+
+((nil . ((fill-column . 72)
+ (tab-width . 8)))
+ (c-mode . ((c-file-style . "gnu")))
+ (scheme-mode
+ .
+ ((indent-tabs-mode . nil)
+ (eval . (put 'lambda* 'scheme-indent-function 1))
+ (eval . (put 'substitute* 'scheme-indent-function 1))
+ (eval . (put 'with-directory-excursion 'scheme-indent-function 1))
+ (eval . (put 'package 'scheme-indent-function 1))
+ (eval . (put 'substitute-keyword-arguments 'scheme-indent-function 1))))
+ (emacs-lisp-mode . ((indent-tabs-mode . nil)))
+ (texinfo-mode . ((indent-tabs-mode . nil)
+ (fill-column . 72))))
diff --git a/Makefile.am b/Makefile.am
index 88f3d87796..1c27516a4d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -36,7 +36,10 @@ MODULES = \
guix.scm \
distro.scm \
distro/packages/base.scm \
- distro/packages/ld-wrapper.scm
+ distro/packages/databases.scm \
+ distro/packages/guile.scm \
+ distro/packages/ld-wrapper.scm \
+ distro/packages/typesetting.scm
GOBJECTS = $(MODULES:%.scm=%.go)
@@ -78,6 +81,7 @@ LOG_COMPILER = \
$(GUILE) --no-auto-compile -L "$(top_srcdir)"
EXTRA_DIST = \
+ .dir-locals.el \
srfi/srfi-64.scm \
srfi/srfi-64.upstream.scm \
tests/test.drv \
diff --git a/distro.scm b/distro.scm
index 79e09a3cc6..fc48285bbf 100644
--- a/distro.scm
+++ b/distro.scm
@@ -53,7 +53,7 @@
(define (package-files)
"Return the list of files that implement distro modules."
(define prefix-len
- (string-length (dirname %distro-module-directory)))
+ (string-length (dirname (search-path %load-path "distro.scm"))))
(file-system-fold (const #t) ; enter?
(lambda (path stat result) ; leaf
diff --git a/distro/packages/base.scm b/distro/packages/base.scm
index 67b8b1c602..cbe53999e5 100644
--- a/distro/packages/base.scm
+++ b/distro/packages/base.scm
@@ -30,7 +30,7 @@
;;; Commentary:
;;;
-;;; A Guix-based distribution.
+;;; Base packages of the Guix-based GNU user-land software distribution.
;;;
;;; Code:
@@ -1049,34 +1049,6 @@ internal in-memory representation.")
(home-page "http://www.gnu.org/software/libunistring/")
(license "LGPLv3+")))
-(define-public recutils
- (package
- (name "recutils")
- (version "1.5")
- (source (origin
- (method http-fetch)
- (uri (string-append "http://ftp.gnu.org/gnu/recutils/recutils-"
- version ".tar.gz"))
- (sha256
- (base32
- "1v2xzwwwhc5j5kmvg4sv6baxjpsfqh8ln7ilv4mgb1408rs7xmky"))))
- (build-system gnu-build-system)
- (inputs `(("curl" ,(nixpkgs-derivation* "curl"))
- ("emacs" ,(nixpkgs-derivation* "emacs"))
- ("check" ,(nixpkgs-derivation* "check"))
- ("bc" ,(nixpkgs-derivation* "bc"))
- ("patch/gets"
- ,(search-patch "diffutils-gets-undeclared.patch"))))
- (arguments `(#:patches (list (assoc-ref %build-inputs "patch/gets"))))
- (description "GNU recutils, tools and libraries to access human-editable,
-text-based databases")
- (long-description
- "GNU recutils is a set of tools and libraries to access human-editable,
-text-based databases called recfiles. The data is stored as a sequence of
-records, each record containing an arbitrary number of named fields.")
- (license "GPLv3+")
- (home-page "http://www.gnu.org/software/recutils/")))
-
(define-public guile-1.8
(package
(name "guile")
@@ -1763,164 +1735,4 @@ store.")
("gcc" ,gcc-final)
("libc" ,glibc-final))))
-
-;;;
-;;; Apps & libs --- TODO: move to separate module.
-;;;
-
-(define (guile-reader guile)
- "Build Guile-Reader against GUILE, a package of some version of Guile 1.8
-or 2.0."
- (package
- (name (string-append "guile-reader-for-guile-" (package-version guile)))
- (version "0.6")
- (source (origin
- (method http-fetch)
- (uri (string-append
- "http://download-mirror.savannah.gnu.org/releases/guile-reader/guile-reader-"
- version ".tar.gz"))
- (sha256
- (base32
- "1svlyk5pm4fsdp2g7n6qffdl6fdggxnlicj0jn9s4lxd63gzxy1n"))))
- (build-system gnu-build-system)
- (native-inputs `(("pkgconfig" ,(nixpkgs-derivation* "pkgconfig"))
- ("gperf" ,(nixpkgs-derivation* "gperf"))))
- (inputs `(("guile" ,guile)))
- (description "Guile-Reader, a simple framework for building readers for
-GNU Guile")
- (long-description
-"Guile-Reader is a simple framework for building readers for GNU Guile.
-
-The idea is to make it easy to build procedures that extend Guile’s read
-procedure. Readers supporting various syntax variants can easily be written,
-possibly by re-using existing “token readers” of a standard Scheme
-readers. For example, it is used to implement Skribilo’s R5RS-derived
-document syntax.
-
-Guile-Reader’s approach is similar to Common Lisp’s “read table”, but
-hopefully more powerful and flexible (for instance, one may instantiate as
-many readers as needed).")
- (home-page "http://www.nongnu.org/guile-reader/")
- (license "GPLv3+")))
-
-(define-public guile-reader/guile-1.8
- ;; Guile-Reader built against Guile 1.8.
- (guile-reader guile-1.8))
-
-(define-public guile-reader/guile-2.0
- ;; Guile-Reader built against Guile 2.0.
- (guile-reader guile-2.0))
-
-(define-public lout
- ;; This one is a bit tricky, because it doesn't follow the GNU Build System
- ;; rules. Instead, it has a makefile that has to be patched to set the
- ;; prefix, etc., and it has no makefile rules to build its doc.
- (let ((configure-phase
- '(lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (doc (assoc-ref outputs "doc")))
- (substitute* "makefile"
- (("^PREFIX[[:blank:]]*=.*$")
- (string-append "PREFIX = " out "\n"))
- (("^LOUTLIBDIR[[:blank:]]*=.*$")
- (string-append "LOUTLIBDIR = " out "/lib/lout\n"))
- (("^LOUTDOCDIR[[:blank:]]*=.*$")
- (string-append "LOUTDOCDIR = " doc "/doc/lout\n"))
- (("^MANDIR[[:blank:]]*=.*$")
- (string-append "MANDIR = " out "/man\n")))
- (mkdir out)
- (mkdir (string-append out "/bin")) ; TODO: use `mkdir-p'
- (mkdir (string-append out "/lib"))
- (mkdir (string-append out "/man"))
- (mkdir doc)
- (mkdir (string-append doc "/doc"))
- (mkdir (string-append doc "/doc/lout")))))
- (install-man-phase
- '(lambda* (#:key outputs #:allow-other-keys)
- (zero? (system* "make" "installman"))))
- (doc-phase
- '(lambda* (#:key outputs #:allow-other-keys)
- (define out
- (assoc-ref outputs "doc"))
-
- (setenv "PATH"
- (string-append (assoc-ref outputs "out")
- "/bin:" (getenv "PATH")))
- (chdir "doc")
- (every (lambda (doc)
- (format #t "doc: building `~a'...~%" doc)
- (with-directory-excursion doc
- (let ((file (string-append out "/doc/lout/"
- doc ".ps")))
- (and (or (file-exists? "outfile.ps")
- (zero? (system* "lout" "-r4" "-o"
- "outfile.ps" "all")))
- (begin
- (copy-file "outfile.ps" file)
- #t)
- (zero? (system* "ps2pdf"
- "-dPDFSETTINGS=/prepress"
- "-sPAPERSIZE=a4"
- file
- (string-append out "/doc/lout/"
- doc ".pdf")))))))
- '("design" "expert" "slides" "user")))))
- (package
- (name "lout")
- (version "3.39")
- (source (origin
- (method http-fetch)
- ;; FIXME: `http-get' doesn't follow redirects, hence the URL.
- (uri (string-append
- "http://download-mirror.savannah.gnu.org/releases/lout/lout-"
- version ".tar.gz"))
- (sha256
- (base32
- "12gkyqrn0kaa8xq7sc7v3wm407pz2fxg9ngc75aybhi5z825b9vq"))))
- (build-system gnu-build-system) ; actually, just a makefile
- (outputs '("out" "doc"))
- (inputs `(("ghostscript" ,(nixpkgs-derivation* "ghostscript"))))
- (arguments `(#:modules ((guix build utils)
- (guix build gnu-build-system)
- (srfi srfi-1)) ; we need SRFI-1
- #:tests? #f ; no "check" target
-
- ;; Customize the build phases.
- #:phases (alist-replace
- 'configure ,configure-phase
-
- (alist-cons-after
- 'install 'install-man-pages
- ,install-man-phase
-
- (alist-cons-after
- 'install 'install-doc
- ,doc-phase
- %standard-phases)))))
- (description "Lout, a document layout system similar in style to LaTeX")
- (long-description
-"The Lout document formatting system is now reads a high-level description of
-a document similar in style to LaTeX and produces a PostScript or plain text
-output file.
-
-Lout offers an unprecedented range of advanced features, including optimal
-paragraph and page breaking, automatic hyphenation, PostScript EPS file
-inclusion and generation, equation formatting, tables, diagrams, rotation and
-scaling, sorted indexes, bibliographic databases, running headers and
-odd-even pages, automatic cross referencing, multilingual documents including
-hyphenation (most European languages are supported), formatting of computer
-programs, and much more, all ready to use. Furthermore, Lout is easily
-extended with definitions which are very much easier to write than troff of
-TeX macros because Lout is a high-level, purely functional language, the
-outcome of an eight-year research project that went back to the
-beginning.")
- (license "GPLv3+")
- (home-page "http://savannah.nongnu.org/projects/lout/"))))
-
-;;; Local Variables:
-;;; eval: (put 'lambda* 'scheme-indent-function 1)
-;;; eval: (put 'substitute* 'scheme-indent-function 1)
-;;; eval: (put 'with-directory-excursion 'scheme-indent-function 1)
-;;; eval: (put 'package 'scheme-indent-function 1)
-;;; eval: (put 'substitute-keyword-arguments 'scheme-indent-function 1)
-;;; End:
+;;; base.scm ends here
diff --git a/distro/packages/databases.scm b/distro/packages/databases.scm
new file mode 100644
index 0000000000..5c42ef142b
--- /dev/null
+++ b/distro/packages/databases.scm
@@ -0,0 +1,60 @@
+;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
+;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of Guix.
+;;;
+;;; 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.
+;;;
+;;; 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 Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (distro packages databases)
+ #:use-module (distro)
+ #:use-module (guix packages)
+ #:use-module (guix http)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu))
+
+;;; Commentary:
+;;;
+;;; Database management software and related packages.
+;;;
+;;; Code:
+
+(define-public recutils
+ (package
+ (name "recutils")
+ (version "1.5")
+ (source (origin
+ (method http-fetch)
+ (uri (string-append "http://ftp.gnu.org/gnu/recutils/recutils-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1v2xzwwwhc5j5kmvg4sv6baxjpsfqh8ln7ilv4mgb1408rs7xmky"))))
+ (build-system gnu-build-system)
+ (inputs `(("curl" ,(nixpkgs-derivation* "curl"))
+ ("emacs" ,(nixpkgs-derivation* "emacs"))
+ ("check" ,(nixpkgs-derivation* "check"))
+ ("bc" ,(nixpkgs-derivation* "bc"))
+ ("patch/gets"
+ ,(search-patch "diffutils-gets-undeclared.patch"))))
+ (arguments `(#:patches (list (assoc-ref %build-inputs "patch/gets"))))
+ (description "GNU recutils, tools and libraries to access human-editable,
+text-based databases")
+ (long-description
+ "GNU recutils is a set of tools and libraries to access human-editable,
+text-based databases called recfiles. The data is stored as a sequence of
+records, each record containing an arbitrary number of named fields.")
+ (license "GPLv3+")
+ (home-page "http://www.gnu.org/software/recutils/")))
+
+;;; databases.scm ends here
diff --git a/distro/packages/guile.scm b/distro/packages/guile.scm
new file mode 100644
index 0000000000..c72bd3b41d
--- /dev/null
+++ b/distro/packages/guile.scm
@@ -0,0 +1,75 @@
+;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
+;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of Guix.
+;;;
+;;; 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.
+;;;
+;;; 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 Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (distro packages guile)
+ #:use-module (distro packages base)
+ #:use-module (guix packages)
+ #:use-module (guix http)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu))
+
+;;; Commentary:
+;;;
+;;; Modules and extensions for GNU Guile.
+;;;
+;;; Code:
+
+(define (guile-reader guile)
+ "Build Guile-Reader against GUILE, a package of some version of Guile 1.8
+or 2.0."
+ (package
+ (name (string-append "guile-reader-for-guile-" (package-version guile)))
+ (version "0.6")
+ (source (origin
+ (method http-fetch)
+ (uri (string-append
+ "http://download-mirror.savannah.gnu.org/releases/guile-reader/guile-reader-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1svlyk5pm4fsdp2g7n6qffdl6fdggxnlicj0jn9s4lxd63gzxy1n"))))
+ (build-system gnu-build-system)
+ (native-inputs `(("pkgconfig" ,(nixpkgs-derivation* "pkgconfig"))
+ ("gperf" ,(nixpkgs-derivation* "gperf"))))
+ (inputs `(("guile" ,guile)))
+ (description "Guile-Reader, a simple framework for building readers for
+GNU Guile")
+ (long-description
+"Guile-Reader is a simple framework for building readers for GNU Guile.
+
+The idea is to make it easy to build procedures that extend Guile’s read
+procedure. Readers supporting various syntax variants can easily be written,
+possibly by re-using existing “token readers” of a standard Scheme
+readers. For example, it is used to implement Skribilo’s R5RS-derived
+document syntax.
+
+Guile-Reader’s approach is similar to Common Lisp’s “read table”, but
+hopefully more powerful and flexible (for instance, one may instantiate as
+many readers as needed).")
+ (home-page "http://www.nongnu.org/guile-reader/")
+ (license "GPLv3+")))
+
+(define-public guile-reader/guile-1.8
+ ;; Guile-Reader built against Guile 1.8.
+ (guile-reader guile-1.8))
+
+(define-public guile-reader/guile-2.0
+ ;; Guile-Reader built against Guile 2.0.
+ (guile-reader guile-2.0))
+
+;;; guile.scm ends here
diff --git a/distro/packages/typesetting.scm b/distro/packages/typesetting.scm
new file mode 100644
index 0000000000..cd0eae1187
--- /dev/null
+++ b/distro/packages/typesetting.scm
@@ -0,0 +1,137 @@
+;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
+;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of Guix.
+;;;
+;;; 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.
+;;;
+;;; 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 Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (distro packages typesetting)
+ #:use-module (guix packages)
+ #:use-module (guix http)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu))
+
+;;; Commentary:
+;;;
+;;; Typesetting-related packages.
+;;;
+;;; Code:
+
+(define-public lout
+ ;; This one is a bit tricky, because it doesn't follow the GNU Build System
+ ;; rules. Instead, it has a makefile that has to be patched to set the
+ ;; prefix, etc., and it has no makefile rules to build its doc.
+ (let ((configure-phase
+ '(lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (doc (assoc-ref outputs "doc")))
+ (substitute* "makefile"
+ (("^PREFIX[[:blank:]]*=.*$")
+ (string-append "PREFIX = " out "\n"))
+ (("^LOUTLIBDIR[[:blank:]]*=.*$")
+ (string-append "LOUTLIBDIR = " out "/lib/lout\n"))
+ (("^LOUTDOCDIR[[:blank:]]*=.*$")
+ (string-append "LOUTDOCDIR = " doc "/doc/lout\n"))
+ (("^MANDIR[[:blank:]]*=.*$")
+ (string-append "MANDIR = " out "/man\n")))
+ (mkdir out)
+ (mkdir (string-append out "/bin")) ; TODO: use `mkdir-p'
+ (mkdir (string-append out "/lib"))
+ (mkdir (string-append out "/man"))
+ (mkdir doc)
+ (mkdir (string-append doc "/doc"))
+ (mkdir (string-append doc "/doc/lout")))))
+ (install-man-phase
+ '(lambda* (#:key outputs #:allow-other-keys)
+ (zero? (system* "make" "installman"))))
+ (doc-phase
+ '(lambda* (#:key outputs #:allow-other-keys)
+ (define out
+ (assoc-ref outputs "doc"))
+
+ (setenv "PATH"
+ (string-append (assoc-ref outputs "out")
+ "/bin:" (getenv "PATH")))
+ (chdir "doc")
+ (every (lambda (doc)
+ (format #t "doc: building `~a'...~%" doc)
+ (with-directory-excursion doc
+ (let ((file (string-append out "/doc/lout/"
+ doc ".ps")))
+ (and (or (file-exists? "outfile.ps")
+ (zero? (system* "lout" "-r4" "-o"
+ "outfile.ps" "all")))
+ (begin
+ (copy-file "outfile.ps" file)
+ #t)
+ (zero? (system* "ps2pdf"
+ "-dPDFSETTINGS=/prepress"
+ "-sPAPERSIZE=a4"
+ file
+ (string-append out "/doc/lout/"
+ doc ".pdf")))))))
+ '("design" "expert" "slides" "user")))))
+ (package
+ (name "lout")
+ (version "3.39")
+ (source (origin
+ (method http-fetch)
+ ;; FIXME: `http-get' doesn't follow redirects, hence the URL.
+ (uri (string-append
+ "http://download-mirror.savannah.gnu.org/releases/lout/lout-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "12gkyqrn0kaa8xq7sc7v3wm407pz2fxg9ngc75aybhi5z825b9vq"))))
+ (build-system gnu-build-system) ; actually, just a makefile
+ (outputs '("out" "doc"))
+ (inputs `(("ghostscript" ,(nixpkgs-derivation* "ghostscript"))))
+ (arguments `(#:modules ((guix build utils)
+ (guix build gnu-build-system)
+ (srfi srfi-1)) ; we need SRFI-1
+ #:tests? #f ; no "check" target
+
+ ;; Customize the build phases.
+ #:phases (alist-replace
+ 'configure ,configure-phase
+
+ (alist-cons-after
+ 'install 'install-man-pages
+ ,install-man-phase
+
+ (alist-cons-after
+ 'install 'install-doc
+ ,doc-phase
+ %standard-phases)))))
+ (description "Lout, a document layout system similar in style to LaTeX")
+ (long-description
+"The Lout document formatting system is now reads a high-level description of
+a document similar in style to LaTeX and produces a PostScript or plain text
+output file.
+
+Lout offers an unprecedented range of advanced features, including optimal
+paragraph and page breaking, automatic hyphenation, PostScript EPS file
+inclusion and generation, equation formatting, tables, diagrams, rotation and
+scaling, sorted indexes, bibliographic databases, running headers and
+odd-even pages, automatic cross referencing, multilingual documents including
+hyphenation (most European languages are supported), formatting of computer
+programs, and much more, all ready to use. Furthermore, Lout is easily
+extended with definitions which are very much easier to write than troff of
+TeX macros because Lout is a high-level, purely functional language, the
+outcome of an eight-year research project that went back to the
+beginning.")
+ (license "GPLv3+")
+ (home-page "http://savannah.nongnu.org/projects/lout/"))))
+
+;;; typesetting.scm ends here