aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-01-18 01:06:24 +0100
committerLudovic Courtès <ludo@gnu.org>2013-01-18 01:07:31 +0100
commit1ffa7090b99dfd2f54fa883929c5e78d7852657a (patch)
tree1c8bd191e31212e172b3e9158408cccd571a5020 /gnu
parent08ba7ff318720d926215de83daed0da628908ca3 (diff)
downloadgnu-guix-1ffa7090b99dfd2f54fa883929c5e78d7852657a.tar
gnu-guix-1ffa7090b99dfd2f54fa883929c5e78d7852657a.tar.gz
distro: Change the module name space to (gnu ...).
* distro: Rename to... * gnu: ... this. Update module names accordingly. * Makefile.am: Adjust accordingly. * po/POTFILES.in: Likewise. * distro.scm: Search for files under /gnu/packages instead of /distro/packages. * gnu/packages/base.scm (ld-wrapper-boot3): Likewise.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/acl.scm66
-rw-r--r--gnu/packages/algebra.scm193
-rw-r--r--gnu/packages/aspell.scm54
-rw-r--r--gnu/packages/attr.scm77
-rw-r--r--gnu/packages/autotools.scm144
-rw-r--r--gnu/packages/base.scm1082
-rw-r--r--gnu/packages/bash.scm110
-rw-r--r--gnu/packages/bdb.scm57
-rw-r--r--gnu/packages/bdw-gc.scm60
-rw-r--r--gnu/packages/bison.scm57
-rw-r--r--gnu/packages/bootstrap.scm378
-rwxr-xr-xgnu/packages/bootstrap/i686-linux/bashbin0 -> 1331220 bytes
-rwxr-xr-xgnu/packages/bootstrap/i686-linux/mkdirbin0 -> 725756 bytes
-rwxr-xr-xgnu/packages/bootstrap/i686-linux/tarbin0 -> 1140196 bytes
-rwxr-xr-xgnu/packages/bootstrap/i686-linux/xzbin0 -> 865372 bytes
-rwxr-xr-xgnu/packages/bootstrap/x86_64-linux/bashbin0 -> 1419928 bytes
-rwxr-xr-xgnu/packages/bootstrap/x86_64-linux/mkdirbin0 -> 799312 bytes
-rwxr-xr-xgnu/packages/bootstrap/x86_64-linux/tarbin0 -> 1229888 bytes
-rwxr-xr-xgnu/packages/bootstrap/x86_64-linux/xzbin0 -> 926000 bytes
-rw-r--r--gnu/packages/check.scm48
-rw-r--r--gnu/packages/compression.scm200
-rw-r--r--gnu/packages/cpio.scm58
-rw-r--r--gnu/packages/cyrus-sasl.scm57
-rw-r--r--gnu/packages/ddrescue.scm60
-rw-r--r--gnu/packages/dejagnu.scm88
-rw-r--r--gnu/packages/ed.scm53
-rw-r--r--gnu/packages/emacs.scm93
-rw-r--r--gnu/packages/file.scm44
-rw-r--r--gnu/packages/flex.scm63
-rw-r--r--gnu/packages/gawk.scm71
-rw-r--r--gnu/packages/gdb.scm65
-rw-r--r--gnu/packages/gdbm.scm56
-rw-r--r--gnu/packages/gettext.scm78
-rw-r--r--gnu/packages/global.scm58
-rw-r--r--gnu/packages/gnupg.scm168
-rw-r--r--gnu/packages/gnutls.scm98
-rw-r--r--gnu/packages/gperf.scm55
-rw-r--r--gnu/packages/gsasl.scm113
-rw-r--r--gnu/packages/guile.scm197
-rw-r--r--gnu/packages/help2man.scm52
-rw-r--r--gnu/packages/icu4c.scm66
-rw-r--r--gnu/packages/idutils.scm65
-rw-r--r--gnu/packages/indent.scm44
-rw-r--r--gnu/packages/ld-wrapper.scm147
-rw-r--r--gnu/packages/less.scm51
-rw-r--r--gnu/packages/libffi.scm73
-rw-r--r--gnu/packages/libidn.scm51
-rw-r--r--gnu/packages/libjpeg.scm57
-rw-r--r--gnu/packages/libsigsegv.scm47
-rw-r--r--gnu/packages/libtiff.scm65
-rw-r--r--gnu/packages/libunistring.scm58
-rw-r--r--gnu/packages/libusb.scm44
-rw-r--r--gnu/packages/linux.scm259
-rw-r--r--gnu/packages/lout.scm132
-rw-r--r--gnu/packages/lsh.scm126
-rw-r--r--gnu/packages/m4.scm87
-rw-r--r--gnu/packages/mailutils.scm106
-rw-r--r--gnu/packages/make-bootstrap.scm562
-rw-r--r--gnu/packages/mit-krb5.scm69
-rw-r--r--gnu/packages/multiprecision.scm124
-rw-r--r--gnu/packages/mysql.scm87
-rw-r--r--gnu/packages/nano.scm52
-rw-r--r--gnu/packages/ncurses.scm128
-rw-r--r--gnu/packages/nettle.scm60
-rw-r--r--gnu/packages/openssl.scm68
-rw-r--r--gnu/packages/patches/bigloo-gc-shebangs.patch17
-rw-r--r--gnu/packages/patches/binutils-ld-new-dtags.patch16
-rw-r--r--gnu/packages/patches/cpio-gets-undeclared.patch45
-rw-r--r--gnu/packages/patches/diffutils-gets-undeclared.patch71
-rw-r--r--gnu/packages/patches/emacs-configure-sh.patch14
-rw-r--r--gnu/packages/patches/findutils-absolute-paths.patch29
-rw-r--r--gnu/packages/patches/flex-bison-tests.patch24
-rw-r--r--gnu/packages/patches/gawk-shell.patch34
-rw-r--r--gnu/packages/patches/gettext-gets-undeclared.patch77
-rw-r--r--gnu/packages/patches/glibc-bootstrap-system.patch28
-rw-r--r--gnu/packages/patches/glibc-no-ld-so-cache.patch53
-rw-r--r--gnu/packages/patches/guile-1.8-cpp-4.5.patch24
-rw-r--r--gnu/packages/patches/guile-default-utf8.patch111
-rw-r--r--gnu/packages/patches/guile-relocatable.patch70
-rw-r--r--gnu/packages/patches/libtool-skip-tests.patch37
-rw-r--r--gnu/packages/patches/lsh-guile-compat.patch9
-rw-r--r--gnu/packages/patches/lsh-no-root-login.patch16
-rw-r--r--gnu/packages/patches/lsh-pam-service-name.patch14
-rw-r--r--gnu/packages/patches/m4-gets-undeclared.patch45
-rw-r--r--gnu/packages/patches/m4-readlink-EINVAL.patch18
-rw-r--r--gnu/packages/patches/m4-s_isdir.patch14
-rw-r--r--gnu/packages/patches/make-impure-dirs.patch40
-rw-r--r--gnu/packages/patches/perl-no-sys-dirs.patch156
-rw-r--r--gnu/packages/patches/procps-make-3.82.patch14
-rw-r--r--gnu/packages/patches/readline-link-ncurses.patch18
-rw-r--r--gnu/packages/patches/shishi-gets-undeclared.patch71
-rw-r--r--gnu/packages/patches/tar-gets-undeclared.patch26
-rw-r--r--gnu/packages/perl.scm73
-rw-r--r--gnu/packages/pkg-config.scm51
-rw-r--r--gnu/packages/pth.scm61
-rw-r--r--gnu/packages/python.scm58
-rw-r--r--gnu/packages/readline.scm79
-rw-r--r--gnu/packages/recutils.scm57
-rw-r--r--gnu/packages/rsync.scm51
-rw-r--r--gnu/packages/scheme.scm168
-rw-r--r--gnu/packages/shishi.scm71
-rw-r--r--gnu/packages/system.scm91
-rw-r--r--gnu/packages/tcl.scm109
-rw-r--r--gnu/packages/texinfo.scm61
-rw-r--r--gnu/packages/time.scm66
-rw-r--r--gnu/packages/wget.scm61
-rw-r--r--gnu/packages/which.scm48
-rw-r--r--gnu/packages/xml.scm44
-rw-r--r--gnu/packages/zile.scm66
109 files changed, 8987 insertions, 0 deletions
diff --git a/gnu/packages/acl.scm b/gnu/packages/acl.scm
new file mode 100644
index 0000000000..1cba608c8c
--- /dev/null
+++ b/gnu/packages/acl.scm
@@ -0,0 +1,66 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages acl)
+ #:use-module (guix licenses)
+ #:use-module (gnu packages attr)
+ #:use-module (gnu packages perl)
+ #:use-module ((gnu packages gettext)
+ #:renamer (symbol-prefix-proc 'guix:))
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public acl
+ (package
+ (name "acl")
+ (version "2.2.51")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://savannah/acl/acl-"
+ version ".src.tar.gz"))
+ (sha256
+ (base32
+ "09aj30m49ivycl3irram8c3givc0crivjm3ymw0nhfaxrwhlb186"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (alist-cons-after
+ 'configure 'patch-makefile-SHELL
+ (lambda _
+ (patch-makefile-SHELL "include/buildmacros"))
+ (alist-replace
+ 'check
+ (lambda _
+ (system* "make" "tests" "-C" "test")
+
+ ;; XXX: Ignore the test result since this is
+ ;; dependent on the underlying file system.
+ #t)
+ %standard-phases))))
+ (inputs `(("attr" ,attr)
+ ("gettext" ,guix:gettext)
+ ("perl" ,perl)))
+ (home-page
+ "http://savannah.nongnu.org/projects/acl")
+ (synopsis
+ "Library and tools for manipulating access control lists")
+ (description
+ "Library and tools for manipulating access control lists.")
+ (license '(gpl2+ lgpl2.1+))))
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
new file mode 100644
index 0000000000..088e32bc0c
--- /dev/null
+++ b/gnu/packages/algebra.scm
@@ -0,0 +1,193 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012, 2013 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages algebra)
+ #:use-module (distro)
+ #:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages readline)
+ #:use-module (gnu packages flex)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+
+(define-public mpfrcx
+ (package
+ (name "mpfrcx")
+ (version "0.4.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://www.multiprecision.org/mpfrcx/download/mpfrcx-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1rrc75chxyicqjgg5mfhgbz7p9mx1fgh0qlx14a82m25vfhifnd1"))))
+ (build-system gnu-build-system)
+ (inputs `(("gmp" ,gmp)
+ ("mpfr" ,mpfr)
+ ("mpc" ,mpc)))
+ (synopsis "mpfrcx, a library for the arithmetic of univariate polynomials
+over arbitrary precision real or complex numbers")
+ (description
+ "mpfrcx is a library for the arithmetic of univariate polynomials over
+arbitrary precision real (mpfr) or complex (mpc) numbers, without control
+on the rounding. For the time being, only the few functions needed to
+implement the floating point approach to complex multiplication are
+implemented. On the other hand, these comprise asymptotically fast
+multiplication routines such as Toom–Cook and the FFT. ")
+ (license lgpl2.1+)
+ (home-page "http://mpfrcx.multiprecision.org/")))
+
+(define-public fplll
+ (package
+ (name "fplll")
+ (version "4.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://perso.ens-lyon.fr/damien.stehle/fplll/libfplll-"
+ version ".tar.gz"))
+ (sha256 (base32
+ "122bpqdlikshhd7nmq0l5qfc0agyk7x21gvplv1l9hb77l8cy9rw"))))
+ (build-system gnu-build-system)
+ (inputs `(("gmp" ,gmp)
+ ("mpfr" ,mpfr)))
+ (synopsis "fplll, a library for LLL-reduction of euclidean lattices")
+ (description
+ "fplll LLL-reduces euclidean lattices. Since version 3, it can also
+solve the shortest vector problem.")
+ (license lgpl2.1+)
+ (home-page "http://perso.ens-lyon.fr/damien.stehle/fplll/")))
+
+(define-public gsl
+ (package
+ (name "gsl")
+ (version "1.15")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/gsl/gsl-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "18qf6jzz1r3mzb5qynywv4xx3z9g61hgkbpkdrhbgqh2g7jhgfc5"))))
+ (build-system gnu-build-system)
+ (home-page "http://www.gnu.org/software/gsl/")
+ (synopsis "The GNU Scientific Library, a large numerical library")
+ (description
+ "The GNU Scientific Library (GSL) is a numerical library for C
+and C++ programmers. It is free software under the GNU General
+Public License.
+
+The library provides a wide range of mathematical routines such
+as random number generators, special functions and least-squares
+fitting. There are over 1000 functions in total with an
+extensive test suite.")
+ (license gpl3+)))
+
+(define-public pari-gp
+ (package
+ (name "pari-gp")
+ (version "2.5.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://pari.math.u-bordeaux.fr/pub/pari/unix/pari-"
+ version ".tar.gz"))
+ (sha256 (base32
+ "0zsjccnnv00kwj2gk3ww2v530kjin1rgj8p8hbl4pwcnwc7m68gl"))))
+ (build-system gnu-build-system)
+ (inputs `(("gmp" ,gmp)
+ ("perl" ,perl)
+ ("readline" ,readline)))
+ (arguments
+ (lambda (system)
+ `(#:make-flags '("gp")
+;; FIXME: building the documentation requires tex; once this is available,
+;; replace "gp" by "all"
+ #:test-target "dobench"
+ #:phases
+ (alist-replace
+ 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (readline (assoc-ref inputs "readline"))
+ (gmp (assoc-ref inputs "gmp")))
+ (zero?
+ (system* "./Configure"
+ (string-append "--prefix=" out)
+ (string-append "--with-readline=" readline)
+ (string-append "--with-gmp=" gmp)))))
+;; FIXME: readline and gmp will be detected automatically in the next
+;; stable release
+ %standard-phases))))
+ (synopsis "PARI/GP, a computer algebra system for number theory")
+ (description
+ "PARI/GP is a widely used computer algebra system designed for fast
+computations in number theory (factorisations, algebraic number theory,
+elliptic curves...), but it also contains a large number of other useful
+functions to compute with mathematical entities such as matrices,
+polynomials, power series, algebraic numbers, etc., and a lot of
+transcendental functions.
+PARI is also available as a C library to allow for faster computations.")
+ (license gpl2+)
+ (home-page "http://pari.math.u-bordeaux.fr/")))
+
+(define-public bc
+ (package
+ (name "bc")
+ (version "1.06")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/bc/bc-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0cqf5jkwx6awgd2xc2a0mkpxilzcfmhncdcfg7c9439wgkqxkxjf"))))
+ (build-system gnu-build-system)
+ (inputs `(("readline" ,readline)
+ ("flex" ,flex)))
+ (arguments
+ '(#:phases
+ (alist-replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; This old `configure' script doesn't support
+ ;; variables passed as arguments.
+ (let ((out (assoc-ref outputs "out")))
+ (setenv "CONFIG_SHELL" (which "bash"))
+ (zero?
+ (system* "./configure"
+ (string-append "--prefix=" out)))))
+ %standard-phases)))
+ (home-page "http://www.gnu.org/software/bc/")
+ (synopsis "GNU software calculator")
+ (description
+ "bc is an arbitrary precision numeric processing language. Syntax
+is similar to C, but differs in many substantial areas. It supports
+interactive execution of statements. bc is a utility included in the
+POSIX P1003.2/D11 draft standard.
+
+Since the POSIX document does not specify how bc must be implemented,
+this version does not use the historical method of having bc be a
+compiler for the dc calculator. This version has a single executable
+that both compiles the language and runs the resulting `byte code'. The
+byte code is not the dc language.")
+ (license gpl2+)))
diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm
new file mode 100644
index 0000000000..ca0218d814
--- /dev/null
+++ b/gnu/packages/aspell.scm
@@ -0,0 +1,54 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages aspell)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix licenses)
+ #:use-module (gnu packages perl))
+
+(define-public aspell
+ (package
+ (name "aspell")
+ (version "0.60.6.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/aspell/aspell-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1qgn5psfyhbrnap275xjfrzppf5a83fb67gpql0kfqv37al869gm"))))
+ (build-system gnu-build-system)
+ (inputs `(("perl" ,perl)))
+ (home-page "http://aspell.net/")
+ (synopsis
+ "GNU Aspell, A spell checker for many languages")
+ (description
+ "GNU Aspell is a free spell checker designed to eventually replace
+Ispell. It can either be used as a library or as an independent spell
+checker. Its main feature is that it does a superior job of suggesting
+possible replacements for a misspelled word than just about any other
+spell checker out there for the English language. Unlike Ispell, Aspell
+can also easily check documents in UTF-8 without having to use a special
+dictionary. Aspell will also do its best to respect the current locale
+setting. Other advantages over Ispell include support for using
+multiple dictionaries at once and intelligently handling personal
+dictionaries when more than one Aspell process is open at once.")
+ (license lgpl2.1+)))
diff --git a/gnu/packages/attr.scm b/gnu/packages/attr.scm
new file mode 100644
index 0000000000..2f8a0e0e65
--- /dev/null
+++ b/gnu/packages/attr.scm
@@ -0,0 +1,77 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages attr)
+ #:use-module (guix licenses)
+ #:use-module (gnu packages perl)
+ #:use-module ((gnu packages gettext)
+ #:renamer (symbol-prefix-proc 'guix:))
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public attr
+ (package
+ (name "attr")
+ (version "2.4.46")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://savannah/attr/attr-"
+ version ".src.tar.gz"))
+ (sha256
+ (base32
+ "07qf6kb2zk512az481bbnsk9jycn477xpva1a726n5pzlzf9pmnw"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (alist-cons-after
+ 'configure 'patch-makefile-SHELL
+ (lambda _
+ (patch-makefile-SHELL "include/buildmacros"))
+ (alist-replace
+ 'install
+ (lambda _
+ (zero? (system* "make"
+ "install"
+ "install-lib"
+ "install-dev")))
+ (alist-replace
+ 'check
+ (lambda _
+ ;; Use the right shell.
+ (substitute* "test/run"
+ (("/bin/sh")
+ (which "bash")))
+
+ (system* "make" "tests" "-C" "test")
+
+ ;; XXX: Ignore the test result since this is dependent on the
+ ;; underlying file system.
+ #t)
+ %standard-phases)))))
+ (inputs `(("perl" ,perl)
+ ("gettext" ,guix:gettext)))
+ (home-page
+ "http://savannah.nongnu.org/projects/attr/")
+ (synopsis
+ "Library and tools for manipulating extended attributes")
+ (description
+ "Portable library and tools for manipulating extended attributes.")
+ (license '(gpl2+ lgpl2.1+))))
diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm
new file mode 100644
index 0000000000..b5c8b6ec87
--- /dev/null
+++ b/gnu/packages/autotools.scm
@@ -0,0 +1,144 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
+;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages autotools)
+ #:use-module (guix licenses)
+ #:use-module (distro)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages m4)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public autoconf
+ (package
+ (name "autoconf")
+ (version "2.69")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/autoconf/autoconf-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "113nlmidxy9kjr45kg9x3ngar4951mvag1js2a3j8nxcz34wxsv4"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("perl" ,perl)
+ ("m4" ,m4)))
+ ;; XXX: testsuite: 209 and 279 failed. The latter is an impurity. It
+ ;; should use our own "cpp" instead of "/lib/cpp".
+ (arguments `(#:tests? #f))
+ (home-page
+ "http://www.gnu.org/software/autoconf/")
+ (synopsis
+ "GNU Autoconf, a part of the GNU Build System")
+ (description
+ "GNU Autoconf is an extensible package of M4 macros that produce
+shell scripts to automatically configure software source code
+packages. These scripts can adapt the packages to many kinds of
+UNIX-like systems without manual user intervention. Autoconf
+creates a configuration script for a package from a template
+file that lists the operating system features that the package
+can use, in the form of M4 macro calls.")
+ (license gpl3+))) ; some files are under GPLv2+
+
+(define-public automake
+ (package
+ (name "automake")
+ (version "1.12.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/automake/automake-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "1ynvca8z4aqcwr94rf7j1bfiid2w9w250y9qhnyj9vmi8lhsnd7q"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("autoconf" ,autoconf)
+ ("perl" ,perl)))
+ (home-page
+ "http://www.gnu.org/software/automake/")
+ (synopsis
+ "GNU Automake, a GNU standard-compliant makefile generator")
+ (description
+ "GNU Automake is a tool for automatically generating
+`Makefile.in' files compliant with the GNU Coding
+Standards. Automake requires the use of Autoconf.")
+ (license gpl2+))) ; some files are under GPLv3+
+
+(define-public libtool
+ (package
+ (name "libtool")
+ (version "2.4.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/libtool/libtool-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0649qfpzkswgcj9vqkkr9rn4nlcx80faxpyqscy2k1x9c94f93dk"))))
+ (build-system gnu-build-system)
+ (native-inputs `(("m4" ,m4)
+ ("perl" ,perl)))
+
+ ;; Separate binaries from the rest. During bootstrap, only ltdl is
+ ;; used; not depending on the binaries allows us to avoid retaining
+ ;; a reference to the bootstrap bash.
+ (outputs '("bin" ; libtoolize, libtool, etc.
+ "out")) ; libltdl.so, ltdl.h, etc.
+
+ (arguments
+ `(#:patches (list (assoc-ref %build-inputs "patch/skip-tests"))
+ #:phases (alist-cons-before
+ 'check 'pre-check
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Run the test suite in parallel, if possible.
+ (let ((ncores
+ (cond
+ ((getenv "NIX_BUILD_CORES")
+ =>
+ (lambda (n)
+ (if (zero? (string->number n))
+ (number->string (current-processor-count))
+ n)))
+ (else "1"))))
+ (setenv "TESTSUITEFLAGS"
+ (string-append "-j" ncores)))
+
+ ;; Path references to /bin/sh.
+ (let ((bash (assoc-ref inputs "bash")))
+ (substitute* "tests/testsuite"
+ (("/bin/sh")
+ (string-append bash "/bin/bash")))))
+ %standard-phases)))
+ (inputs `(("patch/skip-tests"
+ ,(search-patch "libtool-skip-tests.patch"))))
+ (synopsis "GNU Libtool, a generic library support script")
+ (description
+ "GNU libtool is a generic library support script. Libtool hides the
+complexity of using shared libraries behind a consistent, portable interface.
+
+To use libtool, add the new generic library building commands to your
+Makefile, Makefile.in, or Makefile.am. See the documentation for
+details.")
+ (license gpl3+)
+ (home-page "http://www.gnu.org/software/libtool/")))
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
new file mode 100644
index 0000000000..b5a5856609
--- /dev/null
+++ b/gnu/packages/base.scm
@@ -0,0 +1,1082 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages base)
+ #:use-module (guix licenses)
+ #:use-module (distro)
+ #:use-module (gnu packages acl)
+ #:use-module (gnu packages bash)
+ #:use-module (gnu packages bootstrap)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages gawk)
+ #:use-module (gnu packages guile)
+ #:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages linux)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system trivial)
+ #:use-module (guix utils)
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-26)
+ #:use-module (ice-9 match))
+
+;;; Commentary:
+;;;
+;;; Base packages of the Guix-based GNU user-land software distribution.
+;;;
+;;; Code:
+
+(define-public hello
+ (package
+ (name "hello")
+ (version "2.8")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/hello/hello-" version
+ ".tar.gz"))
+ (sha256
+ (base32 "0wqd8sjmxfskrflaxywc7gqw7sfawrfvdxd9skxawzfgyy0pzdz6"))))
+ (build-system gnu-build-system)
+ (arguments '(#:configure-flags
+ `("--disable-dependency-tracking"
+ ,(string-append "--with-gawk=" ; for illustration purposes
+ (assoc-ref %build-inputs "gawk")))))
+ (inputs `(("gawk" ,gawk)))
+ (synopsis "GNU Hello")
+ (description "Yeah...")
+ (home-page "http://www.gnu.org/software/hello/")
+ (license gpl3+)))
+
+(define-public grep
+ (package
+ (name "grep")
+ (version "2.14")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/grep/grep-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "1qbjb1l7f9blckc5pqy8jlf6482hpx4awn2acmhyf5mv9wfq03p7"))))
+ (build-system gnu-build-system)
+ (synopsis "GNU implementation of the Unix grep command")
+ (description
+ "The grep command searches one or more input files for lines containing a
+match to a specified pattern. By default, grep prints the matching
+lines.")
+ (license gpl3+)
+ (home-page "http://www.gnu.org/software/grep/")))
+
+(define-public sed
+ (package
+ (name "sed")
+ (version "4.2.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/sed/sed-" version
+ ".tar.bz2"))
+ (sha256
+ (base32
+ "13wlsb4sf5d5a82xjhxqmdvrrn36rmw5f0pl9qyb9zkvldnb7hra"))))
+ (build-system gnu-build-system)
+ (synopsis "GNU sed, a batch stream editor")
+ (arguments
+ `(#:phases (alist-cons-before
+ 'patch-source-shebangs 'patch-test-suite
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((bash (assoc-ref inputs "bash")))
+ (patch-makefile-SHELL "testsuite/Makefile.tests")
+ (substitute* '("testsuite/bsd.sh"
+ "testsuite/bug-regex9.c")
+ (("/bin/sh")
+ (string-append bash "/bin/bash")))))
+ %standard-phases)))
+ (description
+ "Sed (stream editor) isn't really a true text editor or text processor.
+Instead, it is used to filter text, i.e., it takes text input and performs
+some operation (or set of operations) on it and outputs the modified text.
+Sed is typically used for extracting part of a file using pattern matching or
+substituting multiple occurrences of a string within a file.")
+ (license gpl3+)
+ (home-page "http://www.gnu.org/software/sed/")))
+
+(define-public tar
+ (package
+ (name "tar")
+ (version "1.26")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/tar/tar-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "0hbdkzmchq9ycr2x1pxqdcgdbaxksh8c6ac0jf75jajhcks6jlss"))))
+ (build-system gnu-build-system)
+ (inputs `(("patch/gets" ,(search-patch "tar-gets-undeclared.patch"))))
+ (arguments
+ `(#:patches (list (assoc-ref %build-inputs "patch/gets"))))
+ (synopsis "GNU implementation of the `tar' archiver")
+ (description
+ "The Tar program provides the ability to create tar archives, as well as
+various other kinds of manipulation. For example, you can use Tar on
+previously created archives to extract files, to store additional files, or
+to update or list files which were already stored.
+
+Initially, tar archives were used to store files conveniently on magnetic
+tape. The name \"Tar\" comes from this use; it stands for tape archiver.
+Despite the utility's name, Tar can direct its output to available devices,
+files, or other programs (using pipes), it can even access remote devices or
+files (as archives).")
+ (license gpl3+)
+ (home-page "http://www.gnu.org/software/tar/")))
+
+(define-public patch
+ (package
+ (name "patch")
+ (version "2.6.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/patch/patch-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "18012gxs9wc96izskp1q7bclrwns6rdmkn4jj31c8jbyfz6l5npq"))))
+ (build-system gnu-build-system)
+ (native-inputs '()) ; FIXME: needs `ed' for the tests
+ (arguments
+ (case-lambda
+ ((system) '(#:tests? #f))
+ ((system cross-system)
+ '(#:configure-flags '("ac_cv_func_strnlen_working=yes")))))
+ (synopsis "GNU Patch, a program to apply differences to files")
+ (description
+ "GNU Patch takes a patch file containing a difference listing produced by
+the diff program and applies those differences to one or more original files,
+producing patched versions.")
+ (license gpl3+)
+ (home-page "http://savannah.gnu.org/projects/patch/")))
+
+(define-public diffutils
+ (package
+ (name "diffutils")
+ (version "3.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/diffutils/diffutils-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0jci0wv68025xd0s0rq4s5qxpx56dd9d730lka63qpzk1rfvfkxb"))))
+ (build-system gnu-build-system)
+ (inputs `(("patch/gets"
+ ,(search-patch "diffutils-gets-undeclared.patch"))))
+ (arguments `(#:patches (list (assoc-ref %build-inputs "patch/gets"))))
+ (synopsis "Programs to find differences among text files")
+ (description
+ "GNU Diffutils is a package of several programs related to finding
+differences between files.
+
+Computer users often find occasion to ask how two files differ. Perhaps one
+file is a newer version of the other file. Or maybe the two files started out
+as identical copies but were changed by different people.
+
+You can use the diff command to show differences between two files, or each
+corresponding file in two directories. diff outputs differences between files
+line by line in any of several formats, selectable by command line
+options. This set of differences is often called a ‘diff’ or ‘patch’. For
+files that are identical, diff normally produces no output; for
+binary (non-text) files, diff normally reports only that they are different.
+
+You can use the cmp command to show the offsets and line numbers where two
+files differ. cmp can also show all the characters that differ between the
+two files, side by side.
+
+You can use the diff3 command to show differences among three files. When two
+people have made independent changes to a common original, diff3 can report
+the differences between the original and the two changed versions, and can
+produce a merged file that contains both persons' changes together with
+warnings about conflicts.
+
+You can use the sdiff command to merge two files interactively.")
+ (license gpl3+)
+ (home-page "http://www.gnu.org/software/diffutils/")))
+
+(define-public findutils
+ (package
+ (name "findutils")
+ (version "4.4.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/findutils/findutils-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0amn0bbwqvsvvsh6drfwz20ydc2czk374lzw5kksbh6bf78k4ks3"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("patch/absolute-paths"
+ ,(search-patch "findutils-absolute-paths.patch"))))
+ (arguments
+ (case-lambda
+ ((system)
+ `(#:patches (list (assoc-ref %build-inputs "patch/absolute-paths"))))
+ ((system cross-system)
+ ;; Work around cross-compilation failure.
+ ;; See <http://savannah.gnu.org/bugs/?27299#comment1>.
+ `(#:configure-flags '("gl_cv_func_wcwidth_works=yes")
+ ,@(arguments cross-system)))))
+ (synopsis "Basic directory searching utilities of the GNU operating
+system")
+ (description
+ "The GNU Find Utilities are the basic directory searching utilities of
+the GNU operating system. These programs are typically used in conjunction
+with other programs to provide modular and powerful directory search and file
+locating capabilities to other commands.
+
+The tools supplied with this package are:
+
+ * find - search for files in a directory hierarchy;
+ * locate - list files in databases that match a pattern;
+ * updatedb - update a file name database;
+ * xargs - build and execute command lines from standard input.
+")
+ (license gpl3+)
+ (home-page "http://www.gnu.org/software/findutils/")))
+
+(define-public coreutils
+ (package
+ (name "coreutils")
+ (version "8.20")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/coreutils/coreutils-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "1cly97xdy3v4nbbx631k43smqw0nnpn651kkprs0yyl2cj3pkjyv"))))
+ (build-system gnu-build-system)
+ (inputs `(("acl" ,acl)
+ ("gmp" ,gmp)
+ ("perl" ,perl))) ; TODO: add SELinux
+ (arguments
+ `(#:parallel-build? #f ; help2man may be called too early
+ #:phases (alist-cons-before
+ 'build 'patch-shell-references
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((bash (assoc-ref inputs "bash")))
+ (substitute* (cons "src/split.c"
+ (find-files "gnulib-tests"
+ "\\.c$"))
+ (("/bin/sh")
+ (format #f "~a/bin/sh" bash)))
+ (substitute* (find-files "tests" "\\.sh$")
+ (("#!/bin/sh")
+ (format #f "#!~a/bin/bash" bash)))))
+ %standard-phases)))
+ (synopsis
+ "The basic file, shell and text manipulation utilities of the GNU
+operating system")
+ (description
+ "The GNU Core Utilities are the basic file, shell and text manipulation
+utilities of the GNU operating system. These are the core utilities which
+are expected to exist on every operating system.")
+ (license gpl3+)
+ (home-page "http://www.gnu.org/software/coreutils/")))
+
+(define-public gnu-make
+ (package
+ (name "make")
+ (version "3.82")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/make/make-" version
+ ".tar.bz2"))
+ (sha256
+ (base32
+ "0ri98385hsd7li6rh4l5afcq92v8l2lgiaz85wgcfh4w2wzsghg2"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("patch/impure-dirs" ,(search-patch "make-impure-dirs.patch"))))
+ (arguments
+ '(#:patches (list (assoc-ref %build-inputs "patch/impure-dirs"))
+ #:phases (alist-cons-before
+ 'build 'set-default-shell
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Change the default shell from /bin/sh.
+ (let ((bash (assoc-ref inputs "bash")))
+ (substitute* "job.c"
+ (("default_shell\\[\\] =.*$")
+ (format #f "default_shell[] = \"~a/bin/bash\";\n"
+ bash)))))
+ %standard-phases)))
+ (synopsis "GNU Make, a program controlling the generation of non-source
+files from sources")
+ (description
+ "Make is a tool which controls the generation of executables and other
+non-source files of a program from the program's source files.
+
+Make gets its knowledge of how to build your program from a file called the
+makefile, which lists each of the non-source files and how to compute it from
+other files. When you write a program, you should write a makefile for it, so
+that it is possible to use Make to build and install the program.")
+ (license gpl3+)
+ (home-page "http://www.gnu.org/software/make/")))
+
+(define-public binutils
+ (package
+ (name "binutils")
+ (version "2.22")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/binutils/binutils-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "1a9w66v5dwvbnawshjwqcgz7km6kw6ihkzp6sswv9ycc3knzhykc"))))
+ (build-system gnu-build-system)
+
+ ;; Split Binutils in several outputs, mostly to avoid collisions in
+ ;; user profiles with GCC---e.g., libiberty.a.
+ (outputs '("out" ; ar, ld, binutils.info, etc.
+ "lib")) ; libbfd.a, bfd.h, etc.
+
+ ;; TODO: Add dependency on zlib + those for Gold.
+ (native-inputs
+ `(("patch/new-dtags" ,(search-patch "binutils-ld-new-dtags.patch"))))
+ (arguments
+ `(#:patches (list (assoc-ref %build-inputs "patch/new-dtags"))
+ #:configure-flags '(;; Add `-static-libgcc' to not retain a dependency
+ ;; on GCC when bootstrapping.
+ "LDFLAGS=-static-libgcc"
+
+ ;; Don't search under /usr/lib & co.
+ "--with-lib-path=/no-ld-lib-path")))
+
+ (synopsis "GNU Binutils, tools for manipulating binaries (linker,
+assembler, etc.)")
+ (description
+ "The GNU Binutils are a collection of binary tools. The main ones are
+`ld' (the GNU linker) and `as' (the GNU assembler). They also include the
+BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
+ (license gpl3+)
+ (home-page "http://www.gnu.org/software/binutils/")))
+
+(define-public gcc-4.7
+ (let ((stripped? #t)) ; TODO: make this a parameter
+ (package
+ (name "gcc")
+ (version "4.7.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/gcc/gcc-"
+ version "/gcc-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "115h03hil99ljig8lkrq4qk426awmzh0g99wrrggxf8g07bq74la"))))
+ (build-system gnu-build-system)
+ (inputs `(("gmp" ,gmp)
+ ("mpfr" ,mpfr)
+ ("mpc" ,mpc))) ; TODO: libelf, ppl, cloog, zlib, etc.
+ (arguments
+ (lambda (system)
+ `(#:out-of-source? #t
+ #:strip-binaries? ,stripped?
+ #:configure-flags
+ `("--enable-plugin"
+ "--enable-languages=c,c++"
+ "--disable-multilib"
+
+ "--with-local-prefix=/no-gcc-local-prefix"
+
+ ,(let ((libc (assoc-ref %build-inputs "libc")))
+ (if libc
+ (string-append "--with-native-system-header-dir=" libc
+ "/include")
+ "--without-headers")))
+ #:make-flags
+ (let ((libc (assoc-ref %build-inputs "libc")))
+ `(,@(if libc
+ (list (string-append "LDFLAGS_FOR_BUILD="
+ "-L" libc "/lib "
+ "-Wl,-dynamic-linker "
+ "-Wl," libc
+ ,(glibc-dynamic-linker system)))
+ '())
+ ,(string-append "BOOT_CFLAGS=-O2 "
+ ,(if stripped? "-g0" "-g"))))
+
+ #:tests? #f
+ #:phases
+ (alist-cons-before
+ 'configure 'pre-configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (libc (assoc-ref inputs "libc")))
+ (when libc
+ ;; The following is not performed for `--without-headers'
+ ;; cross-compiler builds.
+
+ ;; Fix the dynamic linker's file name.
+ (substitute* (find-files "gcc/config"
+ "^linux(64|-elf)?\\.h$")
+ (("#define GLIBC_DYNAMIC_LINKER([^ ]*).*$" _ suffix)
+ (format #f "#define GLIBC_DYNAMIC_LINKER~a \"~a\"~%"
+ suffix
+ (string-append libc ,(glibc-dynamic-linker system)))))
+
+ ;; Tell where to find libstdc++, libc, and `?crt*.o', except
+ ;; `crt{begin,end}.o', which come with GCC.
+ (substitute* (find-files "gcc/config"
+ "^(gnu-user(64)?|linux-elf)\\.h$")
+ (("#define LIB_SPEC (.*)$" _ suffix)
+ ;; Note that with this "lib" spec, we may still add a
+ ;; RUNPATH to GCC even when `libgcc_s' is not NEEDED.
+ ;; There's not much that can be done to avoid it, though.
+ (format #f "#define LIB_SPEC \"-L~a/lib %{!static:-rpath=~a/lib \
+%{!static-libgcc:-rpath=~a/lib64 -rpath=~a/lib}} \" ~a~%"
+ libc libc out out suffix))
+ (("#define STARTFILE_SPEC.*$" line)
+ (format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib\"
+#define STANDARD_STARTFILE_PREFIX_2 \"\"
+~a~%"
+ libc line))))
+
+ ;; Don't retain a dependency on the build-time sed.
+ (substitute* "fixincludes/fixincl.x"
+ (("static char const sed_cmd_z\\[\\] =.*;")
+ "static char const sed_cmd_z[] = \"sed\";"))))
+
+ (alist-cons-after
+ 'configure 'post-configure
+ (lambda _
+ ;; Don't store configure flags, to avoid retaining references to
+ ;; build-time dependencies---e.g., `--with-ppl=/nix/store/xxx'.
+ (substitute* "Makefile"
+ (("^TOPLEVEL_CONFIGURE_ARGUMENTS=(.*)$" _ rest)
+ "TOPLEVEL_CONFIGURE_ARGUMENTS=\n")))
+ (alist-replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (zero?
+ (system* "make"
+ ,(if stripped?
+ "install-strip"
+ "install"))))
+ %standard-phases))))))
+
+ (properties `((gcc-libc . ,(assoc-ref inputs "libc"))))
+ (synopsis "The GNU Compiler Collection")
+ (description
+ "The GNU Compiler Collection includes compiler front ends for C, C++,
+Objective-C, Fortran, OpenMP for C/C++/Fortran, Java, and Ada, as well as
+libraries for these languages (libstdc++, libgcj, libgomp,...).
+
+GCC development is a part of the GNU Project, aiming to improve the compiler
+used in the GNU system including the GNU/Linux variant.")
+ (license gpl3+)
+ (home-page "http://gcc.gnu.org/"))))
+
+(define-public glibc
+ (package
+ (name "glibc")
+ (version "2.17")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/glibc/glibc-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0gmjnn4kma9vgizccw1jv979xw55a8n1nkk94gg0l3hy80vy6539"))))
+ (build-system gnu-build-system)
+
+ ;; Glibc's <limits.h> refers to <linux/limit.h>, for instance, so glibc
+ ;; users should automatically pull Linux headers as well.
+ (propagated-inputs `(("linux-headers" ,linux-libre-headers)))
+
+ (arguments
+ `(#:out-of-source? #t
+ #:patches (list (assoc-ref %build-inputs "patch/ld.so.cache"))
+ #:configure-flags
+ (list "--enable-add-ons"
+ "--sysconfdir=/etc"
+ "--localedir=/var/run/current-system/sw/lib/locale" ; XXX
+ (string-append "--with-headers="
+ (assoc-ref %build-inputs "linux-headers")
+ "/include")
+
+ ;; The default is to assume a 2.4 Linux interface, but we'll
+ ;; always use something newer. See "kernel-features.h" in the
+ ;; GNU libc for details.
+ "--enable-kernel=2.6.30"
+
+ ;; Use our Bash instead of /bin/sh.
+ (string-append "BASH_SHELL="
+ (assoc-ref %build-inputs "bash")
+ "/bin/bash")
+
+ ;; XXX: Work around "undefined reference to `__stack_chk_guard'".
+ "libc_cv_ssp=no")
+
+ #:tests? #f ; XXX
+ #:phases (alist-cons-before
+ 'configure 'pre-configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin")))
+ ;; Use `pwd', not `/bin/pwd'.
+ (substitute* "configure"
+ (("/bin/pwd") "pwd"))
+
+ ;; Install the rpc data base file under `$out/etc/rpc'.
+ ;; FIXME: Use installFlags = [ "sysconfdir=$(out)/etc" ];
+ (substitute* "sunrpc/Makefile"
+ (("^\\$\\(inst_sysconfdir\\)/rpc(.*)$" _ suffix)
+ (string-append out "/etc/rpc" suffix "\n"))
+ (("^install-others =.*$")
+ (string-append "install-others = " out "/etc/rpc\n")))
+
+ (substitute* "Makeconfig"
+ ;; According to
+ ;; <http://www.linuxfromscratch.org/lfs/view/stable/chapter05/glibc.html>,
+ ;; linking against libgcc_s is not needed with GCC
+ ;; 4.7.1.
+ ((" -lgcc_s") ""))
+
+ ;; Copy a statically-linked Bash in the output, with
+ ;; no references to other store paths.
+ (mkdir-p bin)
+ (copy-file (string-append (assoc-ref inputs "static-bash")
+ "/bin/bash")
+ (string-append bin "/bash"))
+ (remove-store-references (string-append bin "/bash"))
+ (chmod (string-append bin "/bash") #o555)
+
+ ;; Keep a symlink, for `patch-shebang' resolution.
+ (with-directory-excursion bin
+ (symlink "bash" "sh"))
+
+ ;; Have `system' use that Bash.
+ (substitute* "sysdeps/posix/system.c"
+ (("#define[[:blank:]]+SHELL_PATH.*$")
+ (format #f "#define SHELL_PATH \"~a/bin/bash\"\n"
+ out)))
+
+ ;; Same for `popen'.
+ (substitute* "libio/iopopen.c"
+ (("/bin/sh")
+ (string-append out "/bin/bash")))))
+ %standard-phases)))
+ (inputs `(("patch/ld.so.cache"
+ ,(search-patch "glibc-no-ld-so-cache.patch"))
+ ("static-bash" ,(static-package bash-light))))
+ (synopsis "The GNU C Library")
+ (description
+ "Any Unix-like operating system needs a C library: the library which
+defines the \"system calls\" and other basic facilities such as open, malloc,
+printf, exit...
+
+The GNU C library is used as the C library in the GNU system and most systems
+with the Linux kernel.")
+ (license lgpl2.0+)
+ (home-page "http://www.gnu.org/software/libc/")))
+
+
+;;;
+;;; Bootstrap packages.
+;;;
+
+(define gnu-make-boot0
+ (package-with-bootstrap-guile
+ (package (inherit gnu-make)
+ (name "make-boot0")
+ (location (source-properties->location (current-source-location)))
+ (arguments
+ `(#:guile ,%bootstrap-guile
+ #:implicit-inputs? #f
+ #:tests? #f ; cannot run "make check"
+ ,@(substitute-keyword-arguments (package-arguments gnu-make)
+ ((#:phases phases)
+ `(alist-replace
+ 'build (lambda _
+ (zero? (system* "./build.sh")))
+ (alist-replace
+ 'install (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin")))
+ (mkdir-p bin)
+ (copy-file "make"
+ (string-append bin "/make"))))
+ ,phases))))))
+ (inputs %bootstrap-inputs))))
+
+(define diffutils-boot0
+ (package-with-bootstrap-guile
+ (let ((p (package-with-explicit-inputs diffutils
+ `(("make" ,gnu-make-boot0)
+ ,@%bootstrap-inputs)
+ #:guile %bootstrap-guile)))
+ (package (inherit p)
+ (location (source-properties->location (current-source-location)))
+ (arguments `(#:tests? #f ; the test suite needs diffutils
+ ,@(package-arguments p)))))))
+
+(define findutils-boot0
+ (package-with-bootstrap-guile
+ (package-with-explicit-inputs findutils
+ `(("make" ,gnu-make-boot0)
+ ("diffutils" ,diffutils-boot0) ; for tests
+ ,@%bootstrap-inputs)
+ (current-source-location)
+ #:guile %bootstrap-guile)))
+
+
+(define %boot0-inputs
+ `(("make" ,gnu-make-boot0)
+ ("diffutils" ,diffutils-boot0)
+ ("findutils" ,findutils-boot0)
+ ,@%bootstrap-inputs))
+
+(define* (nix-system->gnu-triplet system #:optional (vendor "unknown"))
+ "Return an a guess of the GNU triplet corresponding to Nix system
+identifier SYSTEM."
+ (let* ((dash (string-index system #\-))
+ (arch (substring system 0 dash))
+ (os (substring system (+ 1 dash))))
+ (string-append arch
+ "-" vendor "-"
+ (if (string=? os "linux")
+ "linux-gnu"
+ os))))
+
+(define boot-triplet
+ ;; Return the triplet used to create the cross toolchain needed in the
+ ;; first bootstrapping stage.
+ (cut nix-system->gnu-triplet <> "guix"))
+
+;; Following Linux From Scratch, build a cross-toolchain in stage 0. That
+;; toolchain actually targets the same OS and arch, but it has the advantage
+;; of being independent of the libc and tools in %BOOTSTRAP-INPUTS, since
+;; GCC-BOOT0 (below) is built without any reference to the target libc.
+
+(define binutils-boot0
+ (package-with-bootstrap-guile
+ (package (inherit binutils)
+ (name "binutils-cross-boot0")
+ (arguments
+ (lambda (system)
+ `(#:guile ,%bootstrap-guile
+ #:implicit-inputs? #f
+ ,@(substitute-keyword-arguments (package-arguments binutils)
+ ((#:configure-flags cf)
+ `(list ,(string-append "--target=" (boot-triplet system))))))))
+ (inputs %boot0-inputs))))
+
+(define gcc-boot0
+ (package-with-bootstrap-guile
+ (package (inherit gcc-4.7)
+ (name "gcc-cross-boot0")
+ (arguments
+ (lambda (system)
+ `(#: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-4.7) system)
+ ((#:configure-flags flags)
+ `(append (list ,(string-append "--target="
+ (boot-triplet system))
+
+ ;; No libc yet.
+ "--without-headers"
+
+ ;; Disable features not needed at this stage.
+ "--disable-shared"
+ "--enable-languages=c"
+ "--disable-libmudflap"
+ "--disable-libgomp"
+ "--disable-libssp"
+ "--disable-libquadmath"
+ "--disable-decimal-float")
+ (remove (cut string-match "--enable-languages.*" <>)
+ ,flags)))
+ ((#:phases phases)
+ `(alist-cons-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 (zero? (system* "tar" "xvf" source))
+ (error "failed to unpack tarball"
+ source)))
+ (list gmp mpfr mpc))
+
+ ;; Create symlinks like `gmp' -> `gmp-5.0.5'.
+ ,@(map (lambda (lib)
+ `(symlink ,(package-full-name lib)
+ ,(package-name lib)))
+ (list gmp mpfr mpc))
+
+ ;; MPFR headers/lib are found under $(MPFR)/src, but
+ ;; `configure' wrongfully tells MPC too look under
+ ;; $(MPFR), so fix that.
+ (substitute* "configure"
+ (("extra_mpc_mpfr_configure_flags(.+)--with-mpfr-include=([^/]+)/mpfr(.*)--with-mpfr-lib=([^ ]+)/mpfr"
+ _ equals include middle lib)
+ (string-append "extra_mpc_mpfr_configure_flags" equals
+ "--with-mpfr-include=" include
+ "/mpfr/src" middle
+ "--with-mpfr-lib=" lib
+ "/mpfr/src"))
+ (("gmpinc='-I([^ ]+)/mpfr -I([^ ]+)/mpfr" _ a b)
+ (string-append "gmpinc='-I" a "/mpfr/src "
+ "-I" b "/mpfr/src"))
+ (("gmplibs='-L([^ ]+)/mpfr" _ a)
+ (string-append "gmplibs='-L" a "/mpfr/src")))))
+ (alist-cons-after
+ 'install 'symlink-libgcc_eh
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ ;; Glibc wants to link against libgcc_eh, so provide
+ ;; it.
+ (with-directory-excursion
+ (string-append out "/lib/gcc/"
+ ,(boot-triplet system)
+ "/" ,(package-version gcc-4.7))
+ (symlink "libgcc.a" "libgcc_eh.a"))))
+ ,phases)))))))
+
+ (inputs `(("gmp-source" ,(package-source gmp))
+ ("mpfr-source" ,(package-source mpfr))
+ ("mpc-source" ,(package-source mpc))
+ ("binutils-cross" ,binutils-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))))))
+
+(define linux-libre-headers-boot0
+ (package-with-bootstrap-guile
+ (package (inherit linux-libre-headers)
+ (arguments `(#:guile ,%bootstrap-guile
+ #:implicit-inputs? #f
+ ,@(package-arguments linux-libre-headers)))
+ (native-inputs
+ (let ((perl (package-with-explicit-inputs perl
+ %boot0-inputs
+ (current-source-location)
+ #:guile %bootstrap-guile)))
+ `(("perl" ,perl)
+ ,@%boot0-inputs))))))
+
+(define %boot1-inputs
+ ;; 2nd stage inputs.
+ `(("gcc" ,gcc-boot0)
+ ("binutils-cross" ,binutils-boot0)
+
+ ;; Keep "binutils" here because the cross-gcc invokes `as', not the
+ ;; cross-`as'.
+ ,@%boot0-inputs))
+
+(define glibc-final-with-bootstrap-bash
+ ;; The final libc, "cross-built". If everything went well, the resulting
+ ;; 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
+ (lambda (system)
+ `(#:guile ,%bootstrap-guile
+ #:implicit-inputs? #f
+
+ ,@(substitute-keyword-arguments (package-arguments glibc)
+ ((#:configure-flags flags)
+ `(append (list ,(string-append "--host=" (boot-triplet system))
+ ,(string-append "--build="
+ (nix-system->gnu-triplet system))
+
+ ;; Build Sun/ONC RPC support. In particular,
+ ;; install rpc/*.h.
+ "--enable-obsolete-rpc")
+ ,flags))))))
+ (propagated-inputs `(("linux-headers" ,linux-libre-headers-boot0)))
+ (inputs
+ `( ;; 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"))
+
+ ,@%boot1-inputs
+ ,@(alist-delete "static-bash"
+ (package-inputs glibc))))))) ; patches
+
+(define (cross-gcc-wrapper gcc binutils glibc bash)
+ "Return a wrapper for the pseudo-cross toolchain GCC/BINUTILS/GLIBC
+that makes it available under the native tool names."
+ (package (inherit gcc-4.7)
+ (name (string-append (package-name gcc) "-wrapped"))
+ (source #f)
+ (build-system trivial-build-system)
+ (arguments
+ (lambda (system)
+ `(#:guile ,%bootstrap-guile
+ #:modules ((guix build utils))
+ #:builder (begin
+ (use-modules (guix build utils))
+
+ (let* ((binutils (assoc-ref %build-inputs "binutils"))
+ (gcc (assoc-ref %build-inputs "gcc"))
+ (libc (assoc-ref %build-inputs "libc"))
+ (bash (assoc-ref %build-inputs "bash"))
+ (out (assoc-ref %outputs "out"))
+ (bindir (string-append out "/bin"))
+ (triplet ,(boot-triplet system)))
+ (mkdir-p bindir)
+ (with-directory-excursion bindir
+ (for-each (lambda (tool)
+ (symlink (string-append binutils "/bin/"
+ triplet "-" tool)
+ tool))
+ '("ar" "ranlib"))
+
+ ;; GCC-BOOT0 is a libc-less cross-compiler, so it
+ ;; needs to be told where to find the crt files and
+ ;; the dynamic linker.
+ (call-with-output-file "gcc"
+ (lambda (p)
+ (format p "#!~a/bin/bash
+exec ~a/bin/~a-gcc -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
+ bash
+ gcc triplet
+ libc libc
+ ,(glibc-dynamic-linker system))))
+
+ (chmod "gcc" #o555)))))))
+ (native-inputs
+ `(("binutils" ,binutils)
+ ("gcc" ,gcc)
+ ("libc" ,glibc)
+ ("bash" ,bash)))
+ (inputs '())))
+
+(define static-bash-for-glibc
+ ;; A statically-linked Bash to be embedded in GLIBC-FINAL, for use by
+ ;; system(3) & co.
+ (let* ((gcc (cross-gcc-wrapper gcc-boot0 binutils-boot0
+ glibc-final-with-bootstrap-bash
+ (car (assoc-ref %boot1-inputs "bash"))))
+ (bash (package (inherit bash-light)
+ (arguments
+ (lambda (system)
+ `(#:guile ,%bootstrap-guile
+ ,@(package-arguments bash-light)))))))
+ (package-with-bootstrap-guile
+ (package-with-explicit-inputs (static-package bash)
+ `(("gcc" ,gcc)
+ ("libc" ,glibc-final-with-bootstrap-bash)
+ ,@(fold alist-delete %boot1-inputs
+ '("gcc" "libc")))
+ (current-source-location)))))
+
+(define-public glibc-final
+ ;; The final glibc, which embeds the statically-linked Bash built above.
+ (package (inherit glibc-final-with-bootstrap-bash)
+ (name "glibc")
+ (inputs `(("static-bash" ,static-bash-for-glibc)
+ ,@(alist-delete
+ "static-bash"
+ (package-inputs glibc-final-with-bootstrap-bash))))))
+
+(define gcc-boot0-wrapped
+ ;; Make the cross-tools GCC-BOOT0 and BINUTILS-BOOT0 available under the
+ ;; non-cross names.
+ (cross-gcc-wrapper gcc-boot0 binutils-boot0 glibc-final
+ (car (assoc-ref %boot1-inputs "bash"))))
+
+(define %boot2-inputs
+ ;; 3rd stage inputs.
+ `(("libc" ,glibc-final)
+ ("gcc" ,gcc-boot0-wrapped)
+ ,@(fold alist-delete %boot1-inputs '("libc" "gcc"))))
+
+(define-public binutils-final
+ (package-with-bootstrap-guile
+ (package (inherit binutils)
+ (arguments
+ (lambda (system)
+ `(#:guile ,%bootstrap-guile
+ #:implicit-inputs? #f
+ ,@(package-arguments binutils))))
+ (inputs %boot2-inputs))))
+
+(define-public gcc-final
+ ;; The final GCC.
+ (package (inherit gcc-boot0)
+ (name "gcc")
+ (arguments
+ (lambda (system)
+ `(#:guile ,%bootstrap-guile
+ #:implicit-inputs? #f
+
+ ;; Build again GMP & co. within GCC's build process, because it's hard
+ ;; to do outside (because GCC-BOOT0 is a cross-compiler, and thus
+ ;; doesn't honor $LIBRARY_PATH, which breaks `gnu-build-system'.)
+ ,@(substitute-keyword-arguments ((package-arguments gcc-boot0) system)
+ ((#:configure-flags boot-flags)
+ (let loop ((args ((package-arguments gcc-4.7) system)))
+ (match args
+ ((#:configure-flags normal-flags _ ...)
+ normal-flags)
+ ((_ rest ...)
+ (loop rest)))))
+ ((#:phases phases)
+ `(alist-delete 'symlink-libgcc_eh ,phases))))))
+
+ (inputs `(("gmp-source" ,(package-source gmp))
+ ("mpfr-source" ,(package-source mpfr))
+ ("mpc-source" ,(package-source mpc))
+ ("binutils" ,binutils-final)
+ ,@%boot2-inputs))))
+
+(define ld-wrapper-boot3
+ ;; A linker wrapper that uses the bootstrap Guile.
+ (package
+ (name "ld-wrapper-boot3")
+ (version "0")
+ (source #f)
+ (build-system trivial-build-system)
+ (inputs `(("binutils" ,binutils-final)
+ ("guile" ,%bootstrap-guile)
+ ("bash" ,@(assoc-ref %boot2-inputs "bash"))
+ ("wrapper" ,(search-path %load-path
+ "gnu/packages/ld-wrapper.scm"))))
+ (arguments
+ `(#:guile ,%bootstrap-guile
+ #:modules ((guix build utils))
+ #:builder (begin
+ (use-modules (guix build utils)
+ (system base compile))
+
+ (let* ((out (assoc-ref %outputs "out"))
+ (bin (string-append out "/bin"))
+ (ld (string-append bin "/ld"))
+ (go (string-append bin "/ld.go")))
+
+ (setvbuf (current-output-port) _IOLBF)
+ (format #t "building ~s/bin/ld wrapper in ~s~%"
+ (assoc-ref %build-inputs "binutils")
+ out)
+
+ (mkdir-p bin)
+ (copy-file (assoc-ref %build-inputs "wrapper") ld)
+ (substitute* ld
+ (("@GUILE@")
+ (string-append (assoc-ref %build-inputs "guile")
+ "/bin/guile"))
+ (("@BASH@")
+ (string-append (assoc-ref %build-inputs "bash")
+ "/bin/bash"))
+ (("@LD@")
+ (string-append (assoc-ref %build-inputs "binutils")
+ "/bin/ld")))
+ (chmod ld #o555)
+ (compile-file ld #:output-file go)))))
+ (synopsis "The linker wrapper")
+ (description
+ "The linker wrapper (or `ld-wrapper') wraps the linker to add any
+missing `-rpath' flags, and to detect any misuse of libraries outside of the
+store.")
+ (home-page #f)
+ (license gpl3+)))
+
+(define %boot3-inputs
+ ;; 4th stage inputs.
+ `(("gcc" ,gcc-final)
+ ("ld-wrapper" ,ld-wrapper-boot3)
+ ,@(alist-delete "gcc" %boot2-inputs)))
+
+(define-public bash-final
+ ;; Link with `-static-libgcc' to make sure we don't retain a reference
+ ;; to the bootstrap GCC.
+ (package-with-bootstrap-guile
+ (package-with-explicit-inputs (static-libgcc-package bash)
+ %boot3-inputs
+ (current-source-location)
+ #:guile %bootstrap-guile)))
+
+(define %boot4-inputs
+ ;; Now use the final Bash.
+ `(("bash" ,bash-final)
+ ,@(alist-delete "bash" %boot3-inputs)))
+
+(define-public guile-final
+ (package-with-bootstrap-guile
+ (package-with-explicit-inputs guile-2.0/fixed
+ %boot4-inputs
+ (current-source-location)
+ #:guile %bootstrap-guile)))
+
+(define-public ld-wrapper
+ ;; The final `ld' wrapper, which uses the final Guile.
+ (package (inherit ld-wrapper-boot3)
+ (name "ld-wrapper")
+ (inputs `(("guile" ,guile-final)
+ ("bash" ,bash-final)
+ ,@(fold alist-delete (package-inputs ld-wrapper-boot3)
+ '("guile" "bash"))))))
+
+(define-public %final-inputs
+ ;; Final derivations used as implicit inputs by `gnu-build-system'.
+ (let ((finalize (cut package-with-explicit-inputs <> %boot4-inputs
+ (current-source-location))))
+ `(,@(map (match-lambda
+ ((name package)
+ (list name (finalize package))))
+ `(("tar" ,tar)
+ ("gzip" ,gzip)
+ ("bzip2" ,bzip2)
+ ("xz" ,xz)
+ ("diffutils" ,diffutils)
+ ("patch" ,patch)
+ ("coreutils" ,coreutils)
+ ("sed" ,sed)
+ ("grep" ,grep)
+ ("findutils" ,findutils)
+ ("gawk" ,gawk)
+ ("make" ,gnu-make)))
+ ("bash" ,bash-final)
+ ("ld-wrapper" ,ld-wrapper)
+ ("binutils" ,binutils-final)
+ ("gcc" ,gcc-final)
+ ("libc" ,glibc-final))))
+
+;;; base.scm ends here
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
new file mode 100644
index 0000000000..d74315ad18
--- /dev/null
+++ b/gnu/packages/bash.scm
@@ -0,0 +1,110 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages bash)
+ #:use-module (guix licenses)
+ #:use-module (gnu packages ncurses)
+ #:use-module (gnu packages readline)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu))
+
+(define-public bash
+ (let ((cppflags (string-join '("-DSYS_BASHRC='\"/etc/bashrc\"'"
+ "-DSYS_BASH_LOGOUT='\"/etc/bash_logout\"'"
+ "-DDEFAULT_PATH_VALUE='\"/no-such-path\"'"
+ "-DSTANDARD_UTILS_PATH='\"/no-such-path\"'"
+ "-DNON_INTERACTIVE_LOGIN_SHELLS"
+ "-DSSH_SOURCE_BASHRC")
+ " "))
+ (post-install-phase
+ '(lambda* (#:key outputs #:allow-other-keys)
+ ;; Add a `bash' -> `sh' link.
+ (let ((out (assoc-ref outputs "out")))
+ (with-directory-excursion (string-append out "/bin")
+ (symlink "bash" "sh"))))))
+ (package
+ (name "bash")
+ (version "4.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://gnu/bash/bash-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1n5kbblp5ykbz5q8aq88lsif2z0gnvddg9babk33024wxiwi2ym2"))))
+ (build-system gnu-build-system)
+ (inputs `(("readline" ,readline)
+ ("ncurses" ,ncurses))) ; TODO: add texinfo
+ (arguments
+ `(#:configure-flags `("--with-installed-readline"
+ ,,(string-append "CPPFLAGS=" cppflags)
+ ,(string-append
+ "LDFLAGS=-Wl,-rpath -Wl,"
+ (assoc-ref %build-inputs "readline")
+ "/lib"
+ " -Wl,-rpath -Wl,"
+ (assoc-ref %build-inputs "ncurses")
+ "/lib"))
+
+ ;; Bash is reportedly not parallel-safe. See, for instance,
+ ;; <http://patches.openembedded.org/patch/32745/> and
+ ;; <http://git.buildroot.net/buildroot/commit/?h=79e2d802ae7e376a413c02097790493e1f65c3a4>.
+ #:parallel-build? #f
+ #:parallel-tests? #f
+
+ ;; XXX: The tests have a lot of hard-coded paths, so disable them
+ ;; for now.
+ #:tests? #f
+
+ #:phases (alist-cons-after 'install 'post-install
+ ,post-install-phase
+ %standard-phases)))
+ (synopsis "GNU Bourne-Again Shell")
+ (description
+ "Bash is the shell, or command language interpreter, that will appear in
+the GNU operating system. Bash is an sh-compatible shell that incorporates
+useful features from the Korn shell (ksh) and C shell (csh). It is intended
+to conform to the IEEE POSIX P1003.2/ISO 9945.2 Shell and Tools standard. It
+offers functional improvements over sh for both programming and interactive
+use. In addition, most sh scripts can be run by Bash without
+modification.")
+ (license gpl3+)
+ (home-page "http://www.gnu.org/software/bash/"))))
+
+(define-public bash-light
+ ;; A stripped-down Bash for non-interactive use.
+ (package (inherit bash)
+ (name "bash-light")
+ (inputs '()) ; no readline, no curses
+ (arguments
+ (let ((args `(#:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (srfi srfi-1)
+ (srfi srfi-26))
+ ,@(package-arguments bash))))
+ (substitute-keyword-arguments args
+ ((#:configure-flags flags)
+ `(list "--without-bash-malloc"
+ "--disable-readline"
+ "--disable-history"
+ "--disable-help-builtin"
+ "--disable-progcomp"
+ "--disable-net-redirections"
+ "--disable-nls")))))))
diff --git a/gnu/packages/bdb.scm b/gnu/packages/bdb.scm
new file mode 100644
index 0000000000..1be57b302a
--- /dev/null
+++ b/gnu/packages/bdb.scm
@@ -0,0 +1,57 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Andreas Enge <andreas@enge.fr>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages bdb)
+ #:use-module (distro)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public bdb
+ (package
+ (name "bdb")
+ (version "5.3.21")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://download.oracle.com/berkeley-db/db-" version
+ ".tar.gz"))
+ (sha256 (base32
+ "1f2g2612lf8djbwbwhxsvmffmf9d7693kh2l20195pqp0f9jmnfx"))))
+ (build-system gnu-build-system)
+ (arguments
+ (lambda (system)
+ `(#:tests? #f ; no check target available
+ #:phases
+ (alist-replace
+ 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (zero?
+ (system* "./dist/configure"
+ (string-append "--prefix=" out)
+ (string-append "CONFIG_SHELL=" (which "bash"))
+ (string-append "SHELL=" (which "bash"))))))
+ %standard-phases))))
+ (synopsis "db, the Berkeley database")
+ (description
+ "Berkeley DB is an embeddable database allowing developers the choice of
+SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
+ (license (bsd-style "file://LICENSE"
+ "See LICENSE in the distribution."))
+ (home-page "http://www.oracle.com/us/products/database/berkeley-db/overview/index.html")))
diff --git a/gnu/packages/bdw-gc.scm b/gnu/packages/bdw-gc.scm
new file mode 100644
index 0000000000..65c2fd99ce
--- /dev/null
+++ b/gnu/packages/bdw-gc.scm
@@ -0,0 +1,60 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages bdw-gc)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu))
+
+(define-public libgc
+ (package
+ (name "libgc")
+ (version "7.2alpha6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "05jwadjbrv8pr7z9cb4miskicxqpxm0pca4h2rg5cgbpajr2bx7b"))))
+ (build-system gnu-build-system)
+ (synopsis "The Boehm-Demers-Weiser conservative garbage collector
+for C and C++")
+ (description
+ "The Boehm-Demers-Weiser conservative garbage collector can be used
+as a garbage collecting replacement for C malloc or C++ new. It allows
+you to allocate memory basically as you normally would, without
+explicitly deallocating memory that is no longer useful. The collector
+automatically recycles memory when it determines that it can no longer
+be otherwise accessed.
+
+The collector is also used by a number of programming language
+implementations that either use C as intermediate code, want to
+facilitate easier interoperation with C libraries, or just prefer the
+simple collector interface.
+
+Alternatively, the garbage collector may be used as a leak detector for
+C or C++ programs, though that is not its primary goal.")
+ (home-page "http://www.hpl.hp.com/personal/Hans_Boehm/gc/")
+
+ ;; permissive X11-style license:
+ ;; http://www.hpl.hp.com/personal/Hans_Boehm/gc/license.txt
+ (license x11)))
diff --git a/gnu/packages/bison.scm b/gnu/packages/bison.scm
new file mode 100644
index 0000000000..95ffb17522
--- /dev/null
+++ b/gnu/packages/bison.scm
@@ -0,0 +1,57 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages bison)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (gnu packages m4)
+ #:use-module (gnu packages perl))
+
+(define-public bison
+ (package
+ (name "bison")
+ (version "2.6.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/bison/bison-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0y9svfkbw8jc8yv280hqzilpvlwg60gayck83jj98djmzaxr1w86"))))
+ (build-system gnu-build-system)
+ (inputs `(("perl" ,perl)))
+ (propagated-inputs `(("m4" ,m4)))
+ (home-page "http://www.gnu.org/software/bison/")
+ (synopsis
+ "GNU Bison, a Yacc-compatible parser generator")
+ (description
+ "Bison is a general-purpose parser generator that converts an
+annotated context-free grammar into an LALR(1) or GLR parser for
+that grammar. Once you are proficient with Bison, you can use
+it to develop a wide range of language parsers, from those used
+in simple desk calculators to complex programming languages.
+
+Bison is upward compatible with Yacc: all properly-written Yacc
+grammars ought to work with Bison with no change. Anyone
+familiar with Yacc should be able to use Bison with little
+trouble. You need to be fluent in C or C++ programming in order
+to use Bison.")
+ (license gpl3+)))
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
new file mode 100644
index 0000000000..6cad933644
--- /dev/null
+++ b/gnu/packages/bootstrap.scm
@@ -0,0 +1,378 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages bootstrap)
+ #:use-module (guix licenses)
+ #:use-module (distro)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system trivial)
+ #:use-module ((guix store) #:select (add-to-store add-text-to-store))
+ #:use-module ((guix derivations) #:select (derivation))
+ #:use-module (guix utils)
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-26)
+ #:use-module (ice-9 match)
+ #:export (bootstrap-origin
+ package-with-bootstrap-guile
+ glibc-dynamic-linker
+
+ %bootstrap-guile
+ %bootstrap-coreutils&co
+ %bootstrap-binutils
+ %bootstrap-gcc
+ %bootstrap-glibc
+ %bootstrap-inputs))
+
+;;; Commentary:
+;;;
+;;; Pre-built packages that are used to bootstrap the
+;;; distribution--i.e., to build all the core packages from scratch.
+;;;
+;;; Code:
+
+
+
+;;;
+;;; Helper procedures.
+;;;
+
+(define (bootstrap-origin source)
+ "Return a variant of SOURCE, an <origin> instance, whose method uses
+%BOOTSTRAP-GUILE to do its job."
+ (define (boot fetch)
+ (lambda* (store url hash-algo hash
+ #:optional name #:key system)
+ (fetch store url hash-algo hash
+ #:guile %bootstrap-guile
+ #:system system)))
+
+ (let ((orig-method (origin-method source)))
+ (origin (inherit source)
+ (method (cond ((eq? orig-method url-fetch)
+ (boot url-fetch))
+ (else orig-method))))))
+
+(define (package-from-tarball name* source* program-to-test description*)
+ "Return a package that correspond to the extraction of SOURCE*.
+PROGRAM-TO-TEST is a program to run after extraction of SOURCE*, to
+check whether everything is alright."
+ (package
+ (name name*)
+ (version "0")
+ (source #f)
+ (build-system trivial-build-system)
+ (arguments
+ `(#:guile ,%bootstrap-guile
+ #:modules ((guix build utils))
+ #:builder
+ (let ((out (assoc-ref %outputs "out"))
+ (tar (assoc-ref %build-inputs "tar"))
+ (xz (assoc-ref %build-inputs "xz"))
+ (tarball (assoc-ref %build-inputs "tarball")))
+ (use-modules (guix build utils))
+
+ (mkdir out)
+ (copy-file tarball "binaries.tar.xz")
+ (system* xz "-d" "binaries.tar.xz")
+ (let ((builddir (getcwd)))
+ (with-directory-excursion out
+ (and (zero? (system* tar "xvf"
+ (string-append builddir "/binaries.tar")))
+ (zero? (system* (string-append "bin/" ,program-to-test)
+ "--version"))))))))
+ (inputs
+ `(("tar" ,(lambda (system)
+ (search-bootstrap-binary "tar" system)))
+ ("xz" ,(lambda (system)
+ (search-bootstrap-binary "xz" system)))
+ ("tarball" ,(lambda (system)
+ (bootstrap-origin (source* system))))))
+ (synopsis description*)
+ (description #f)
+ (home-page #f)))
+
+(define package-with-bootstrap-guile
+ (memoize
+ (lambda (p)
+ "Return a variant of P such that all its origins are fetched with
+%BOOTSTRAP-GUILE."
+ (define rewritten-input
+ (match-lambda
+ ((name (? origin? o))
+ `(,name ,(bootstrap-origin o)))
+ ((name (? package? p) sub-drvs ...)
+ `(,name ,(package-with-bootstrap-guile p) ,@sub-drvs))
+ (x x)))
+
+ (package (inherit p)
+ (source (match (package-source p)
+ ((? origin? o) (bootstrap-origin o))
+ (s s)))
+ (inputs (map rewritten-input
+ (package-inputs p)))
+ (native-inputs (map rewritten-input
+ (package-native-inputs p)))
+ (propagated-inputs (map rewritten-input
+ (package-propagated-inputs p)))))))
+
+(define (glibc-dynamic-linker system)
+ "Return the name of Glibc's dynamic linker for SYSTEM."
+ (cond ((string=? system "x86_64-linux") "/lib/ld-linux-x86-64.so.2")
+ ((string=? system "i686-linux") "/lib/ld-linux.so.2")
+ (else (error "dynamic linker name not known for this system"
+ system))))
+
+
+;;;
+;;; Bootstrap packages.
+;;;
+
+(define %bootstrap-guile
+ ;; The Guile used to run the build scripts of the initial derivations.
+ ;; It is just unpacked from a tarball containing a pre-built binary.
+ ;; This is typically built using %GUILE-BOOTSTRAP-TARBALL below.
+ ;;
+ ;; XXX: Would need libc's `libnss_files2.so' for proper `getaddrinfo'
+ ;; support (for /etc/services).
+ (let ((raw (build-system
+ (name "raw")
+ (description "Raw build system with direct store access")
+ (build (lambda* (store name source inputs #:key outputs system)
+ (define (->store file)
+ (add-to-store store file #t #t "sha256"
+ (or (search-bootstrap-binary file
+ system)
+ (error "bootstrap binary not found"
+ file system))))
+
+ (let* ((tar (->store "tar"))
+ (xz (->store "xz"))
+ (mkdir (->store "mkdir"))
+ (bash (->store "bash"))
+ (guile (->store "guile-2.0.7.tar.xz"))
+ (builder
+ (add-text-to-store store
+ "build-bootstrap-guile.sh"
+ (format #f "
+echo \"unpacking bootstrap Guile to '$out'...\"
+~a $out
+cd $out
+~a -dc < ~a | ~a xv
+
+# Sanity check.
+$out/bin/guile --version~%"
+ mkdir xz guile tar)
+ (list mkdir xz guile tar))))
+ (derivation store name system
+ bash `(,builder) '()
+ `((,bash) (,builder)))))))))
+ (package
+ (name "guile-bootstrap")
+ (version "2.0")
+ (source #f)
+ (build-system raw)
+ (synopsis "Bootstrap Guile")
+ (description "Pre-built Guile for bootstrapping purposes.")
+ (home-page #f)
+ (license lgpl3+))))
+
+(define %bootstrap-base-urls
+ ;; This is where the initial binaries come from.
+ '("http://alpha.gnu.org/gnu/guix/bootstrap"
+ "http://www.fdn.fr/~lcourtes/software/guix/packages"))
+
+(define %bootstrap-coreutils&co
+ (package-from-tarball "bootstrap-binaries"
+ (lambda (system)
+ (origin
+ (method url-fetch)
+ (uri (map (cut string-append <> "/" system
+ "/20130105/static-binaries.tar.xz")
+ %bootstrap-base-urls))
+ (sha256
+ (match system
+ ("x86_64-linux"
+ (base32
+ "0md23alzy6nc5f16pric7mkagczdzr8xbh074sb3rjzrls06j1ls"))
+ ("i686-linux"
+ (base32
+ "0nzj1lmm9b94g7k737cr4w1dv282w5nmhb53238ikax9r6pkc0yb"))))))
+ "true" ; the program to test
+ "Bootstrap binaries of Coreutils, Awk, etc."))
+
+(define %bootstrap-binutils
+ (package-from-tarball "binutils-bootstrap"
+ (lambda (system)
+ (origin
+ (method url-fetch)
+ (uri (map (cut string-append <> "/" system
+ "/20130105/binutils-2.22.tar.xz")
+ %bootstrap-base-urls))
+ (sha256
+ (match system
+ ("x86_64-linux"
+ (base32
+ "1ffmk2yy2pxvkqgzrkzp3s4jpn4qaaksyk3b5nsc5cjwfm7qkgzh"))
+ ("i686-linux"
+ (base32
+ "1rafk6aq4sayvv3r3d2khn93nkyzf002xzh0xadlyci4mznr6b0a"))))))
+ "ld" ; the program to test
+ "Bootstrap binaries of the GNU Binutils"))
+
+(define %bootstrap-glibc
+ ;; The initial libc.
+ (package
+ (name "glibc-bootstrap")
+ (version "0")
+ (source #f)
+ (build-system trivial-build-system)
+ (arguments
+ `(#:guile ,%bootstrap-guile
+ #:modules ((guix build utils))
+ #:builder
+ (let ((out (assoc-ref %outputs "out"))
+ (tar (assoc-ref %build-inputs "tar"))
+ (xz (assoc-ref %build-inputs "xz"))
+ (tarball (assoc-ref %build-inputs "tarball")))
+ (use-modules (guix build utils))
+
+ (mkdir out)
+ (copy-file tarball "binaries.tar.xz")
+ (system* xz "-d" "binaries.tar.xz")
+ (let ((builddir (getcwd)))
+ (with-directory-excursion out
+ (system* tar "xvf"
+ (string-append builddir
+ "/binaries.tar"))
+ (chmod "lib" #o755)
+
+ ;; Patch libc.so so it refers to the right path.
+ (substitute* "lib/libc.so"
+ (("/[^ ]+/lib/(libc|ld)" _ prefix)
+ (string-append out "/lib/" prefix))))))))
+ (inputs
+ `(("tar" ,(lambda (system)
+ (search-bootstrap-binary "tar" system)))
+ ("xz" ,(lambda (system)
+ (search-bootstrap-binary "xz" system)))
+ ("tarball" ,(lambda (system)
+ (bootstrap-origin
+ (origin
+ (method url-fetch)
+ (uri (map (cut string-append <> "/" system
+ "/20130105/glibc-2.17.tar.xz")
+ %bootstrap-base-urls))
+ (sha256
+ (match system
+ ("x86_64-linux"
+ (base32
+ "18kv1z9d8dr1j3hm9w7663kchqw9p6rsx11n1m143jgba2jz6jy3"))
+ ("i686-linux"
+ (base32
+ "08hv8i0axwnihrcgbz19x0a7s6zyv3yx38x8r29liwl8h82x9g88"))))))))))
+ (synopsis "Bootstrap binaries and headers of the GNU C Library")
+ (description #f)
+ (home-page #f)))
+
+(define %bootstrap-gcc
+ ;; The initial GCC. Uses binaries from a tarball typically built by
+ ;; %GCC-BOOTSTRAP-TARBALL.
+ (package
+ (name "gcc-bootstrap")
+ (version "0")
+ (source #f)
+ (build-system trivial-build-system)
+ (arguments
+ (lambda (system)
+ `(#:guile ,%bootstrap-guile
+ #:modules ((guix build utils))
+ #:builder
+ (let ((out (assoc-ref %outputs "out"))
+ (tar (assoc-ref %build-inputs "tar"))
+ (xz (assoc-ref %build-inputs "xz"))
+ (bash (assoc-ref %build-inputs "bash"))
+ (libc (assoc-ref %build-inputs "libc"))
+ (tarball (assoc-ref %build-inputs "tarball")))
+ (use-modules (guix build utils)
+ (ice-9 popen))
+
+ (mkdir out)
+ (copy-file tarball "binaries.tar.xz")
+ (system* xz "-d" "binaries.tar.xz")
+ (let ((builddir (getcwd))
+ (bindir (string-append out "/bin")))
+ (with-directory-excursion out
+ (system* tar "xvf"
+ (string-append builddir "/binaries.tar")))
+
+ (with-directory-excursion bindir
+ (chmod "." #o755)
+ (rename-file "gcc" ".gcc-wrapped")
+ (call-with-output-file "gcc"
+ (lambda (p)
+ (format p "#!~a
+exec ~a/bin/.gcc-wrapped -B~a/lib \
+ -Wl,-rpath -Wl,~a/lib \
+ -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
+ bash
+ out libc libc libc
+ ,(glibc-dynamic-linker system))))
+
+ (chmod "gcc" #o555)))))))
+ (inputs
+ `(("tar" ,(lambda (system)
+ (search-bootstrap-binary "tar" system)))
+ ("xz" ,(lambda (system)
+ (search-bootstrap-binary "xz" system)))
+ ("bash" ,(lambda (system)
+ (search-bootstrap-binary "bash" system)))
+ ("libc" ,%bootstrap-glibc)
+ ("tarball" ,(lambda (system)
+ (bootstrap-origin
+ (origin
+ (method url-fetch)
+ (uri (map (cut string-append <> "/" system
+ "/20130105/gcc-4.7.2.tar.xz")
+ %bootstrap-base-urls))
+ (sha256
+ (match system
+ ("x86_64-linux"
+ (base32
+ "1x1p7han5crnbw906iwdifykr6grzm0w27dy9gz75j0q1b32i4px"))
+ ("i686-linux"
+ (base32
+ "06wqs0xxnpw3hn0xjb4c9cs0899p1xwkcysa2rvzhvpra0c5vsg2"))))))))))
+ (synopsis "Bootstrap binaries of the GNU Compiler Collection")
+ (description #f)
+ (home-page #f)))
+
+(define %bootstrap-inputs
+ ;; The initial, pre-built inputs. From now on, we can start building our
+ ;; own packages.
+ `(("libc" ,%bootstrap-glibc)
+ ("gcc" ,%bootstrap-gcc)
+ ("binutils" ,%bootstrap-binutils)
+ ("coreutils&co" ,%bootstrap-coreutils&co)
+
+ ;; In gnu-build-system.scm, we rely on the availability of Bash.
+ ("bash" ,%bootstrap-coreutils&co)))
+
+;;; bootstrap.scm ends here
diff --git a/gnu/packages/bootstrap/i686-linux/bash b/gnu/packages/bootstrap/i686-linux/bash
new file mode 100755
index 0000000000..9882d4adc7
--- /dev/null
+++ b/gnu/packages/bootstrap/i686-linux/bash
Binary files differ
diff --git a/gnu/packages/bootstrap/i686-linux/mkdir b/gnu/packages/bootstrap/i686-linux/mkdir
new file mode 100755
index 0000000000..0ddab232b7
--- /dev/null
+++ b/gnu/packages/bootstrap/i686-linux/mkdir
Binary files differ
diff --git a/gnu/packages/bootstrap/i686-linux/tar b/gnu/packages/bootstrap/i686-linux/tar
new file mode 100755
index 0000000000..6bee702cf5
--- /dev/null
+++ b/gnu/packages/bootstrap/i686-linux/tar
Binary files differ
diff --git a/gnu/packages/bootstrap/i686-linux/xz b/gnu/packages/bootstrap/i686-linux/xz
new file mode 100755
index 0000000000..5a126e4fc5
--- /dev/null
+++ b/gnu/packages/bootstrap/i686-linux/xz
Binary files differ
diff --git a/gnu/packages/bootstrap/x86_64-linux/bash b/gnu/packages/bootstrap/x86_64-linux/bash
new file mode 100755
index 0000000000..3b0227fbb1
--- /dev/null
+++ b/gnu/packages/bootstrap/x86_64-linux/bash
Binary files differ
diff --git a/gnu/packages/bootstrap/x86_64-linux/mkdir b/gnu/packages/bootstrap/x86_64-linux/mkdir
new file mode 100755
index 0000000000..7207ad8a46
--- /dev/null
+++ b/gnu/packages/bootstrap/x86_64-linux/mkdir
Binary files differ
diff --git a/gnu/packages/bootstrap/x86_64-linux/tar b/gnu/packages/bootstrap/x86_64-linux/tar
new file mode 100755
index 0000000000..9104da7b53
--- /dev/null
+++ b/gnu/packages/bootstrap/x86_64-linux/tar
Binary files differ
diff --git a/gnu/packages/bootstrap/x86_64-linux/xz b/gnu/packages/bootstrap/x86_64-linux/xz
new file mode 100755
index 0000000000..488e319b37
--- /dev/null
+++ b/gnu/packages/bootstrap/x86_64-linux/xz
Binary files differ
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
new file mode 100644
index 0000000000..ec2997cbe6
--- /dev/null
+++ b/gnu/packages/check.scm
@@ -0,0 +1,48 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages check)
+ #:use-module (distro)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public check
+ (package
+ (name "check")
+ (version "0.9.9")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/check/check/"
+ version "/check-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1jcahzrvxcnp5chdn2x46l0y4aba8d8yd70lljfin7h5knxrlyhs"))))
+ (build-system gnu-build-system)
+ (home-page "http://check.sourceforge.net/")
+ (synopsis "Check, a unit testing framework for C")
+ (description
+ "Check is a unit testing framework for C. It features a simple
+interface for defining unit tests, putting little in the way of the
+developer. Tests are run in a separate address space, so Check can
+catch both assertion failures and code errors that cause segmentation
+faults or other signals. The output from unit tests can be used within
+source code editors and IDEs.")
+ (license lgpl2.1+)))
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
new file mode 100644
index 0000000000..dc00f323ce
--- /dev/null
+++ b/gnu/packages/compression.scm
@@ -0,0 +1,200 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages compression)
+ #:use-module ((guix licenses)
+ #:renamer (symbol-prefix-proc 'license:))
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public zlib
+ (package
+ (name "zlib")
+ (version "1.2.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://zlib.net/zlib-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1i96gsdvxqb6skp9a58bacf1wxamwi9m9pg4yn7cpf7g7239r77s"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases (alist-replace
+ 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Zlib's home-made `configure' doesn't fails when passed
+ ;; extra flags like `--enable-fast-install', so we need to
+ ;; invoke it with just what it understand.
+ (let ((out (assoc-ref outputs "out")))
+ (zero? (system* "./configure"
+ (string-append "--prefix=" out)))))
+ %standard-phases)))
+ (home-page "http://zlib.net/")
+ (synopsis "The zlib compression library")
+ (description
+ "zlib is designed to be a free, general-purpose, legally unencumbered --
+that is, not covered by any patents -- lossless data-compression library for
+use on virtually any computer hardware and operating system. The zlib data
+format is itself portable across platforms. Unlike the LZW compression method
+used in Unix compress(1) and in the GIF image format, the compression method
+currently used in zlib essentially never expands the data. (LZW can double or
+triple the file size in extreme cases.) zlib's memory footprint is also
+independent of the input data and can be reduced, if necessary, at some cost
+in compression.")
+ (license license:zlib)))
+
+(define-public gzip
+ (package
+ (name "gzip")
+ (version "1.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/gzip/gzip-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "18rm80kar7n016g8bsyy1a3zk50i2826xdgs874yh64rzj7nxmdm"))))
+ (build-system gnu-build-system)
+ (synopsis "Gzip, the GNU zip compression program")
+ (arguments
+ ;; FIXME: The test suite wants `less', and optionally Perl.
+ '(#:tests? #f))
+ (description
+ "gzip (GNU zip) is a popular data compression program written by Jean-loup
+Gailly for the GNU project. Mark Adler wrote the decompression part.
+
+We developed this program as a replacement for compress because of the Unisys
+and IBM patents covering the LZW algorithm used by compress. These patents
+made it impossible for us to use compress, and we needed a replacement. The
+superior compression ratio of gzip is just a bonus.")
+ (license license:gpl3+)
+ (home-page "http://www.gnu.org/software/gzip/")))
+
+(define-public bzip2
+ (let ((fix-man-dir
+ ;; Move man pages to $out/share/.
+ '(lambda* (#:key outputs #:allow-other-keys)
+ (with-directory-excursion (assoc-ref outputs "out")
+ (mkdir "share")
+ (rename-file "man" "share"))))
+ (build-shared-lib
+ ;; Build a shared library.
+ '(lambda* (#:key inputs #:allow-other-keys)
+ (patch-makefile-SHELL "Makefile-libbz2_so")
+ (zero? (system* "make" "-f" "Makefile-libbz2_so"))))
+ (install-shared-lib
+ '(lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (libdir (string-append out "/lib")))
+ (for-each (lambda (file)
+ (let ((base (basename file)))
+ (format #t "installing `~a' to `~a'~%"
+ base libdir)
+ (copy-file file
+ (string-append libdir "/" base))))
+ (find-files "." "^libbz2\\.so"))))))
+ (package
+ (name "bzip2")
+ (version "1.0.6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://www.bzip.org/" version "/bzip2-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1kfrc7f0ja9fdn6j1y6yir6li818npy6217hvr3wzmnmzhs8z152"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (srfi srfi-1))
+ #:phases
+ (alist-cons-before
+ 'build 'build-shared-lib ,build-shared-lib
+ (alist-cons-after
+ 'install 'fix-man-dir ,fix-man-dir
+ (alist-cons-after
+ 'install 'install-shared-lib ,install-shared-lib
+ (alist-delete 'configure %standard-phases))))
+ #:make-flags (list (string-append "PREFIX="
+ (assoc-ref %outputs "out")))))
+ (synopsis "high-quality data compression program")
+ (description
+ "bzip2 is a freely available, patent free (see below), high-quality data
+compressor. It typically compresses files to within 10% to 15% of the best
+available techniques (the PPM family of statistical compressors), whilst
+being around twice as fast at compression and six times faster at
+decompression.")
+ (license (license:bsd-style "file://LICENSE"
+ "See LICENSE in the distribution."))
+ (home-page "http://www.bzip.org/"))))
+
+(define-public xz
+ (package
+ (name "xz")
+ (version "5.0.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://tukaani.org/xz/xz-" version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "1dl35ca8fdss9z2d6y234gxh24ixq904xksizrjmjr5dimwhax6n"))))
+ (build-system gnu-build-system)
+ (synopsis
+ "XZ, general-purpose data compression software, successor of LZMA")
+ (description
+ "XZ Utils is free general-purpose data compression software with high
+compression ratio. XZ Utils were written for POSIX-like systems, but also
+work on some not-so-POSIX systems. XZ Utils are the successor to LZMA Utils.
+
+The core of the XZ Utils compression code is based on LZMA SDK, but it has
+been modified quite a lot to be suitable for XZ Utils. The primary
+compression algorithm is currently LZMA2, which is used inside the .xz
+container format. With typical files, XZ Utils create 30 % smaller output
+than gzip and 15 % smaller output than bzip2.")
+ (license '(license:gpl2+ license:lgpl2.1+)) ; bits of both
+ (home-page "http://tukaani.org/xz/")))
+
+(define-public lzo
+ (package
+ (name "lzo")
+ (version "2.06")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://www.oberhumer.com/opensource/lzo/download/lzo-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0wryshs446s7cclrbjykyj766znhcpnr7s3cxy33ybfn6vwfcygz"))))
+ (build-system gnu-build-system)
+ (home-page "http://www.oberhumer.com/opensource/lzo")
+ (synopsis
+ "A data compresion library suitable for real-time data de-/compression")
+ (description
+ "LZO is a data compression library which is suitable for data
+de-/compression in real-time. This means it favours speed over
+compression ratio.
+
+LZO is written in ANSI C. Both the source code and the compressed data
+format are designed to be portable across platforms.")
+ (license license:gpl2+)))
diff --git a/gnu/packages/cpio.scm b/gnu/packages/cpio.scm
new file mode 100644
index 0000000000..6fddc3f768
--- /dev/null
+++ b/gnu/packages/cpio.scm
@@ -0,0 +1,58 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages cpio)
+ #:use-module (guix licenses)
+ #:use-module (distro)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public cpio
+ (package
+ (name "cpio")
+ (version "2.11")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/cpio/cpio-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "1gavgpzqwgkpagjxw72xgxz52y1ifgz0ckqh8g7cckz7jvyhp0mv"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:patches (list (assoc-ref %build-inputs
+ "patch/gets"))))
+ (inputs
+ `(("patch/gets" ,(search-patch "cpio-gets-undeclared.patch"))))
+ (home-page "https://www.gnu.org/software/cpio/")
+ (synopsis
+ "A program to create or extract from cpio archives")
+ (description
+ "GNU Cpio copies files into or out of a cpio or tar archive. The
+archive can be another file on the disk, a magnetic tape, or a pipe.
+
+GNU Cpio supports the following archive formats: binary, old ASCII, new
+ASCII, crc, HPUX binary, HPUX old ASCII, old tar, and POSIX.1 tar. The
+tar format is provided for compatability with the tar program. By
+default, cpio creates binary format archives, for compatibility with
+older cpio programs. When extracting from archives, cpio automatically
+recognizes which kind of archive it is reading and can read archives
+created on machines with a different byte-order.")
+ (license gpl3+))) \ No newline at end of file
diff --git a/gnu/packages/cyrus-sasl.scm b/gnu/packages/cyrus-sasl.scm
new file mode 100644
index 0000000000..fe8ea4ef7c
--- /dev/null
+++ b/gnu/packages/cyrus-sasl.scm
@@ -0,0 +1,57 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages cyrus-sasl)
+ #:use-module (distro)
+ #:use-module (gnu packages gdbm)
+ #:use-module (gnu packages mit-krb5)
+ #:use-module (gnu packages openssl)
+ #:use-module ((guix licenses)
+ #:renamer (symbol-prefix-proc 'license:))
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public cyrus-sasl
+ (package
+ (name "cyrus-sasl")
+ (version "2.1.26")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-" version
+ ".tar.gz"))
+ (sha256 (base32
+ "1hvvbcsg21nlncbgs0cgn3iwlnb3vannzwsp6rwvnn9ba4v53g4g"))))
+ (build-system gnu-build-system)
+ (inputs `(("gdbm" ,gdbm)
+ ("mit-krb5" ,mit-krb5)
+ ("openssl" ,openssl)))
+ (arguments
+ '(#:configure-flags (list (string-append "--with-plugindir="
+ (assoc-ref %outputs "out")
+ "/lib/sasl2"))))
+ (synopsis "Cyrus SASL, an implementation of the Simple Authentication Security Layer framework")
+ (description
+ "SASL (Simple Authentication Security Layer) is an Internet
+standards-track method for remote computers to authenticate. The Cyrus SASL
+library makes supporting various SASL mechanisms easy for both client and
+server writers.")
+ (license (license:bsd-style "file://COPYING"
+ "See COPYING in the distribution."))
+ (home-page "http://cyrusimap.web.cmu.edu/index.php")))
diff --git a/gnu/packages/ddrescue.scm b/gnu/packages/ddrescue.scm
new file mode 100644
index 0000000000..e9c7856af3
--- /dev/null
+++ b/gnu/packages/ddrescue.scm
@@ -0,0 +1,60 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages ddrescue)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public ddrescue
+ (package
+ (name "ddrescue")
+ (version "1.16")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/ddrescue/ddrescue-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1rixya7p8c4jrn4p0flf6h5dqwybrilf3hrj4r7x41h3zgjz5cvn"))))
+ (build-system gnu-build-system)
+ (home-page
+ "http://www.gnu.org/software/ddrescue/ddrescue.html")
+ (synopsis "GNU ddrescue, a data recovery tool")
+ (description
+ "GNU ddrescue is a data recovery tool. It copies data from one
+file or block device (hard disc, cdrom, etc) to another, trying hard to
+rescue data in case of read errors.
+
+The basic operation of ddrescue is fully automatic. That is, you don't
+have to wait for an error, stop the program, read the log, run it in
+reverse mode, etc.
+
+If you use the logfile feature of ddrescue, the data is rescued very
+efficiently (only the needed blocks are read). Also you can interrupt
+the rescue at any time and resume it later at the same point.
+
+Automatic merging of backups: If you have two or more damaged copies of
+a file, cdrom, etc, and run ddrescue on all of them, one at a time, with
+the same output file, you will probably obtain a complete and error-free
+file. This is so because the probability of having damaged areas at the
+same places on different input files is very low. Using the logfile,
+only the needed blocks are read from the second and successive copies.")
+ (license gpl3+)))
diff --git a/gnu/packages/dejagnu.scm b/gnu/packages/dejagnu.scm
new file mode 100644
index 0000000000..1efc7c78e7
--- /dev/null
+++ b/gnu/packages/dejagnu.scm
@@ -0,0 +1,88 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages dejagnu)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix licenses)
+ #:use-module (gnu packages tcl))
+
+(define-public dejagnu
+ (package
+ (name "dejagnu")
+ (version "1.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/dejagnu/dejagnu-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1nx3x3h96a82q92q108q71giv2nz9xmbbn2nrlr3wvvs6l45id68"))))
+ (build-system gnu-build-system)
+ (inputs `(("expect" ,expect)))
+ (arguments
+ '(#:phases (alist-replace
+ 'check
+ (lambda _
+ ;; Note: The test-suite *requires* /dev/pts among the
+ ;; `build-chroot-dirs' of the build daemon when
+ ;; building in a chroot. See
+ ;; <http://thread.gmane.org/gmane.linux.distributions.nixos/1036>
+ ;; for details.
+ (if (and (directory-exists? "/dev/pts")
+ (directory-exists? "/proc"))
+ (begin
+ ;; Provide `runtest' with a log name, otherwise
+ ;; it tries to run `whoami', which fails when in
+ ;; a chroot.
+ (setenv "LOGNAME" "guix-builder")
+
+ ;; The test-suite needs to have a non-empty stdin:
+ ;; <http://lists.gnu.org/archive/html/bug-dejagnu/2003-06/msg00002.html>.
+ (zero?
+ (system "make check < /dev/zero")))
+ (begin
+ (display "test suite cannot be run, skipping\n")
+ #t)))
+ (alist-cons-after
+ 'install 'post-install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; Use the right `expect' binary.
+ (let ((out (assoc-ref outputs "out"))
+ (expect (assoc-ref inputs "expect")))
+ (substitute* (string-append out "/bin/runtest")
+ (("^mypath.*$" all)
+ (string-append all
+ "export PATH="
+ expect "/bin:$PATH\n")))))
+ %standard-phases))))
+ (home-page
+ "http://www.gnu.org/software/dejagnu/")
+ (synopsis "The DejaGNU testing framework")
+ (description
+ "DejaGnu is a framework for testing other programs. Its purpose
+is to provide a single front end for all tests. Think of it as a
+custom library of Tcl procedures crafted to support writing a
+test harness. A test harness is the testing infrastructure that
+is created to support a specific program or tool. Each program
+can have multiple testsuites, all supported by a single test
+harness. DejaGnu is written in Expect, which in turn uses Tcl --
+Tool command language.")
+ (license gpl2+)))
diff --git a/gnu/packages/ed.scm b/gnu/packages/ed.scm
new file mode 100644
index 0000000000..83d8b21bfb
--- /dev/null
+++ b/gnu/packages/ed.scm
@@ -0,0 +1,53 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages ed)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public ed
+ (package
+ (name "ed")
+ (version "1.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://gnu/ed/ed-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "18gvhyhwpabmgv4lh21lg8vl3z7acdyhh2mr2kj9g75wksj39pcp"))))
+ (build-system gnu-build-system)
+ (arguments '(#:configure-flags '("CC=gcc")))
+ (home-page "http://www.gnu.org/software/ed/")
+ (synopsis
+ "GNU ed, an implementation of the standard Unix editor")
+ (description
+ "GNU ed is a line-oriented text editor. It is used to create,
+display, modify and otherwise manipulate text files, both
+interactively and via shell scripts. A restricted version of ed,
+red, can only edit files in the current directory and cannot
+execute shell commands. Ed is the \"standard\" text editor in the
+sense that it is the original editor for Unix, and thus widely
+available. For most purposes, however, it is superseded by
+full-screen editors such as GNU Emacs or GNU Moe.")
+ (license gpl3+)))
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
new file mode 100644
index 0000000000..c9d0822a80
--- /dev/null
+++ b/gnu/packages/emacs.scm
@@ -0,0 +1,93 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages emacs)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (distro)
+ #:use-module (gnu packages ncurses)
+ #:use-module (gnu packages texinfo)
+ #:use-module (gnu packages gnutls)
+ #:use-module (gnu packages pkg-config))
+
+(define-public emacs
+ (package
+ (name "emacs")
+ (version "24.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/emacs/emacs-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "13wbjfjmz13qpjwssy44nw2230lllmkkgjsy0rqfm6am2cf87n3k"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:configure-flags
+ (list (string-append "--with-crt-dir=" (assoc-ref %build-inputs "libc")
+ "/lib"))
+ #:patches (list (assoc-ref %build-inputs "patch/epaths"))
+ #:phases (alist-cons-before
+ 'configure 'fix-/bin/pwd
+ (lambda _
+ ;; Use `pwd', not `/bin/pwd'.
+ (substitute* (find-files "." "^Makefile\\.in$")
+ (("/bin/pwd")
+ "pwd")))
+ %standard-phases)))
+ (inputs
+ `(("pkg-config" ,pkg-config)
+ ("gnutls" ,gnutls)
+ ("texinfo" ,texinfo)
+ ("ncurses" ,ncurses)
+
+ ;; TODO: Add the optional dependencies.
+ ;; ("xlibs" ,xlibs)
+ ;; ("gtk+" ,gtk+)
+ ;; ("libXft" ,libXft)
+ ;; ("libtiff" ,libtiff)
+ ;; ("libungif" ,libungif)
+ ;; ("libjpeg" ,libjpeg)
+ ;; ("libpng" ,libpng)
+ ;; ("libXpm" ,libXpm)
+ ;; ("libxml2" ,libxml2)
+ ;; ("dbus-library" ,dbus-library)
+
+ ("patch/epaths" ,(search-patch "emacs-configure-sh.patch"))
+ ))
+ (home-page "http://www.gnu.org/software/emacs/")
+ (synopsis
+ "GNU Emacs 24, the extensible, customizable text editor")
+ (description
+ "GNU Emacs is an extensible, customizable text editor—and more. At its
+core is an interpreter for Emacs Lisp, a dialect of the Lisp
+programming language with extensions to support text editing.
+
+The features of GNU Emacs include: content-sensitive editing modes,
+including syntax coloring, for a wide variety of file types including
+plain text, source code, and HTML; complete built-in documentation,
+including a tutorial for new users; full Unicode support for nearly all
+human languages and their scripts; highly customizable, using Emacs
+Lisp code or a graphical interface; a large number of extensions that
+add other functionality, including a project planner, mail and news
+reader, debugger interface, calendar, and more. Many of these
+extensions are distributed with GNU Emacs; others are available
+separately.")
+ (license gpl3+)))
diff --git a/gnu/packages/file.scm b/gnu/packages/file.scm
new file mode 100644
index 0000000000..5a2cc2ad80
--- /dev/null
+++ b/gnu/packages/file.scm
@@ -0,0 +1,44 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages file)
+ #:use-module (distro)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public file
+ (package
+ (name "file")
+ (version "5.12")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "ftp://ftp.astron.com/pub/file/file-"
+ version ".tar.gz"))
+ (sha256 (base32
+ "08ix4xrvan0k80n0l5lqfmc4azjv5lyhvhwdxny4r09j5smhv78r"))))
+ (build-system gnu-build-system)
+ (synopsis "file, a file type guesser")
+ (description
+ "The file command is a file type guesser, a command-line tool that tells
+you in words what kind of data a file contains. It does not rely on filename
+extentions to tell you the type of a file, but looks at the actual contents
+of the file.")
+ (license bsd-2)
+ (home-page "http://www.darwinsys.com/file/")))
diff --git a/gnu/packages/flex.scm b/gnu/packages/flex.scm
new file mode 100644
index 0000000000..7a6d5f507d
--- /dev/null
+++ b/gnu/packages/flex.scm
@@ -0,0 +1,63 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages flex)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (distro)
+ #:use-module (gnu packages m4)
+ #:use-module (gnu packages bison)
+ #:use-module (gnu packages indent))
+
+(define-public flex
+ (package
+ (name "flex")
+ (version "2.5.37")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/flex/flex-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "0ah5mi4j62b85a9rllv1004mzjb5cd0mn4glvz13p88rpx77pahp"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:patches (list (assoc-ref %build-inputs "patch/bison-tests"))))
+ (inputs `(("patch/bison-tests" ,(search-patch "flex-bison-tests.patch"))
+ ("bison" ,bison)
+ ("indent" ,indent)))
+ (propagated-inputs `(("m4" ,m4)))
+ (home-page "http://flex.sourceforge.net/")
+ (synopsis "A fast lexical analyser generator")
+ (description
+ "Flex is a tool for generating scanners. A scanner, sometimes
+called a tokenizer, is a program which recognizes lexical patterns in
+text. The flex program reads user-specified input files, or its standard
+input if no file names are given, for a description of a scanner to
+generate. The description is in the form of pairs of regular expressions
+and C code, called rules. Flex generates a C source file named,
+\"lex.yy.c\", which defines the function yylex(). The file \"lex.yy.c\"
+can be compiled and linked to produce an executable. When the executable
+is run, it analyzes its input for occurrences of text matching the
+regular expressions for each rule. Whenever it finds a match, it
+executes the corresponding C code.")
+ (license (bsd-style "file://COPYING"
+ "See COPYING in the distribution."))))
+
diff --git a/gnu/packages/gawk.scm b/gnu/packages/gawk.scm
new file mode 100644
index 0000000000..802042665a
--- /dev/null
+++ b/gnu/packages/gawk.scm
@@ -0,0 +1,71 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages gawk)
+ #:use-module (guix licenses)
+ #:use-module (gnu packages libsigsegv)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu))
+
+(define-public gawk
+ (package
+ (name "gawk")
+ (version "4.0.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/gawk/gawk-" version
+ ".tar.bz2"))
+ (sha256
+ (base32 "0sss7rhpvizi2a88h6giv0i7w5h07s2fxkw3s6n1hqvcnhrfgbb0"))))
+ (build-system gnu-build-system)
+ (arguments
+ (case-lambda
+ ((system)
+ `(#:parallel-tests? #f ; test suite fails in parallel
+
+ ;; Work around test failure on Cygwin.
+ #:tests? ,(not (string=? system "i686-cygwin"))
+
+ #:phases (alist-cons-before
+ 'configure 'set-shell-file-name
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Refer to the right shell.
+ (let ((bash (assoc-ref inputs "bash")))
+ (substitute* "io.c"
+ (("/bin/sh")
+ (string-append bash "/bin/bash")))))
+ %standard-phases)))
+ ((system cross-system)
+ '(#:parallel-tests? #f))))
+ (inputs `(("libsigsegv" ,libsigsegv)))
+ (home-page "http://www.gnu.org/software/gawk/")
+ (synopsis "GNU implementation of the Awk programming language")
+ (description
+ "Many computer users need to manipulate text files: extract and then
+operate on data from parts of certain lines while discarding the rest, make
+changes in various text files wherever certain patterns appear, and so on.
+To write a program to do these things in a language such as C or Pascal is a
+time-consuming inconvenience that may take many lines of code. The job is
+easy with awk, especially the GNU implementation: Gawk.
+
+The awk utility interprets a special-purpose programming language that makes
+it possible to handle many data-reformatting jobs with just a few lines of
+code.")
+ (license gpl3+)))
diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm
new file mode 100644
index 0000000000..c8c771bfd5
--- /dev/null
+++ b/gnu/packages/gdb.scm
@@ -0,0 +1,65 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages gdb)
+ #:use-module (gnu packages ncurses)
+ #:use-module (gnu packages readline)
+ #:use-module (gnu packages dejagnu)
+ #:use-module (gnu packages texinfo)
+ #:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages xml)
+ #:use-module (gnu packages python)
+ #:use-module ((guix licenses) #:select (gpl3+))
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public gdb
+ (package
+ (name "gdb")
+ (version "7.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/gdb/gdb-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "0chrws5ga90b50kp06yll6zy42fhnx9yr87r4i7swsc369fc8y6i"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:phases (alist-cons-after
+ 'configure 'post-configure
+ (lambda _
+ (patch-makefile-SHELL "gdb/gdbserver/Makefile.in"))
+ %standard-phases)))
+ (inputs
+ `(("expat" ,expat)
+ ("mpfr" ,mpfr)
+ ("gmp" ,gmp)
+ ("readline" ,readline)
+ ("ncurses" ,ncurses)
+ ("python" ,python)
+ ("texinfo" ,texinfo)
+ ("dejagnu" ,dejagnu)))
+ (home-page "http://www.gnu.org/software/gdb/")
+ (synopsis "GDB, the GNU Project debugger")
+ (description
+ "GDB, the GNU Project debugger, allows you to see what is going
+on `inside' another program while it executes -- or what another
+program was doing at the moment it crashed.")
+ (license gpl3+)))
diff --git a/gnu/packages/gdbm.scm b/gnu/packages/gdbm.scm
new file mode 100644
index 0000000000..588b732b02
--- /dev/null
+++ b/gnu/packages/gdbm.scm
@@ -0,0 +1,56 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages gdbm)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public gdbm
+ (package
+ (name "gdbm")
+ (version "1.10")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/gdbm/gdbm-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0h9lfzdjc2yl849y0byg51h6xfjg0y7vg9jnsw3gpfwlbd617y13"))))
+ (build-system gnu-build-system)
+ (home-page "http://www.gnu.org/software/gdbm/")
+ (synopsis "GNU dbm key/value database library")
+ (description
+ "GNU dbm (or GDBM, for short) is a library of database functions
+that use extensible hashing and work similar to the standard UNIX dbm.
+These routines are provided to a programmer needing to create and
+manipulate a hashed database.
+
+The basic use of GDBM is to store key/data pairs in a data file. Each
+key must be unique and each key is paired with only one data item.
+
+The library provides primitives for storing key/data pairs, searching
+and retrieving the data by its key and deleting a key along with its
+data. It also support sequential iteration over all key/data pairs in a
+database.
+
+For compatibility with programs using old UNIX dbm function, the package
+also provides traditional dbm and ndbm interfaces.")
+ (license gpl3+)))
diff --git a/gnu/packages/gettext.scm b/gnu/packages/gettext.scm
new file mode 100644
index 0000000000..c45a488dca
--- /dev/null
+++ b/gnu/packages/gettext.scm
@@ -0,0 +1,78 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages gettext)
+ #:use-module (guix licenses)
+ #:use-module (distro)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public gettext
+ (package
+ (name "gettext")
+ (version "0.18.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/gettext/gettext-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1sa3ch12qxa4h3ya6hkz119yclcccmincl9j20dhrdx5mykp3b4k"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:patches (list (assoc-ref %build-inputs "patch/gets"))
+ #:phases (alist-cons-before
+ 'check 'patch-tests
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((bash (assoc-ref inputs "bash")))
+ (substitute* (find-files "gettext-tools/tests"
+ "^msgexec-[0-9]")
+ (("#![[:blank:]]/bin/sh")
+ (format #f "#!~a/bin/sh" bash)))
+ (substitute* (find-files "gettext-tools/gnulib-tests"
+ "posix_spawn")
+ (("/bin/sh")
+ (format #f "~a/bin/bash" bash)))))
+ %standard-phases)))
+ (inputs
+ `(("patch/gets"
+ ,(search-patch "gettext-gets-undeclared.patch"))))
+ (home-page
+ "http://www.gnu.org/software/gettext/")
+ (synopsis
+ "GNU gettext, a well integrated set of translation tools and documentation")
+ (description
+ "Usually, programs are written and documented in English, and use
+English at execution time for interacting with users. Using a common
+language is quite handy for communication between developers,
+maintainers and users from all countries. On the other hand, most
+people are less comfortable with English than with their own native
+language, and would rather be using their mother tongue for day to
+day's work, as far as possible. Many would simply love seeing their
+computer screen showing a lot less of English, and far more of their
+own language.
+
+GNU `gettext' is an important step for the GNU Translation Project, as
+bit is an asset on which we may build many other steps. This package
+offers to programmers, translators, and even users, a well integrated
+set of tools and documentation. Specifically, the GNU `gettext'
+utilities are a set of tools that provides a framework to help other
+GNU packages produce multi-lingual messages.")
+ (license gpl3))) ; some files are under GPLv2+
diff --git a/gnu/packages/global.scm b/gnu/packages/global.scm
new file mode 100644
index 0000000000..705efbbbed
--- /dev/null
+++ b/gnu/packages/global.scm
@@ -0,0 +1,58 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages global)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix licenses)
+ #:use-module (gnu packages ncurses)
+ #:use-module (gnu packages autotools)
+ #:use-module (distro))
+
+(define-public global ; a global variable
+ (package
+ (name "global")
+ (version "6.2.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/global/global-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1dr250kz65wqpbms4lhz857mzmvmpmiaxgyqxvxkb4b0s840i14i"))))
+ (build-system gnu-build-system)
+ (inputs `(("ncurses" ,ncurses)
+ ("libtool" ,libtool)))
+ (arguments
+ `(#:configure-flags
+ (list (string-append "--with-ncurses="
+ (assoc-ref %build-inputs "ncurses")))))
+ (home-page "http://www.gnu.org/software/global/")
+ (synopsis "GNU GLOBAL source code tag system")
+ (description
+ "GNU GLOBAL is a source code tagging system that works the same way
+across diverse environments (Emacs, vi, less, Bash, web browser, etc).
+You can locate specified objects in source files and move there easily.
+It is useful for hacking a large project containing many
+subdirectories, many #ifdef and many main() functions. It is similar
+to ctags or etags but is different from them at the point of
+independence of any editor. It runs on a UNIX (POSIX) compatible
+operating system like GNU and BSD.")
+ (license "GPLv3+")))
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
new file mode 100644
index 0000000000..82f8d26a65
--- /dev/null
+++ b/gnu/packages/gnupg.scm
@@ -0,0 +1,168 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages gnupg)
+ #:use-module (guix licenses)
+ #:use-module (gnu packages pth)
+ #:use-module (gnu packages readline)
+ #:use-module ((gnu packages compression)
+ #:renamer (symbol-prefix-proc 'guix:))
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public libgpg-error
+ (package
+ (name "libgpg-error")
+ (version "1.10")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnupg/libgpg-error/libgpg-error-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "0cal3jdnzdailr13qcy74grfbplbghkgr3qwk6qjjp4bass2j1jj"))))
+ (build-system gnu-build-system)
+ (home-page "http://gnupg.org")
+ (synopsis
+ "Libgpg-error, a small library that defines common error values for all GnuPG components")
+ (description
+ "Libgpg-error is a small library that defines common error values
+for all GnuPG components. Among these are GPG, GPGSM, GPGME,
+GPG-Agent, libgcrypt, Libksba, DirMngr, Pinentry, SmartCard
+Daemon and possibly more in the future.")
+ (license lgpl2.0+)))
+
+(define-public libgcrypt
+ (package
+ (name "libgcrypt")
+ (version "1.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "1ykkh7dm0gyndz7bbpvn3agijj8xb2h02m02f42hm504c18zqqjb"))))
+ (build-system gnu-build-system)
+ (propagated-inputs
+ `(("libgpg-error" ,libgpg-error)))
+ (home-page "http://gnupg.org/")
+ (synopsis
+ "GNU Libgcrypt, a general-pupose cryptographic library")
+ (description
+ "GNU Libgcrypt is a general purpose cryptographic library based on
+the code from GnuPG. It provides functions for all
+cryptographic building blocks: symmetric ciphers, hash
+algorithms, MACs, public key algorithms, large integer
+functions, random numbers and a lot of supporting functions.")
+ (license lgpl2.0+)))
+
+(define-public libassuan
+ (package
+ (name "libassuan")
+ (version "2.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnupg/libassuan/libassuan-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "06xckkvxxlx7cj77803m8x58gxksap4k8yhspc5cqsy7fhinimds"))))
+ (build-system gnu-build-system)
+ (propagated-inputs
+ `(("libgpg-error" ,libgpg-error) ("pth" ,pth)))
+ (home-page "http://gnupg.org")
+ (synopsis
+ "Libassuan, the IPC library used by GnuPG and related software")
+ (description
+ "Libassuan is a small library implementing the so-called Assuan
+protocol. This protocol is used for IPC between most newer
+GnuPG components. Both, server and client side functions are
+provided.")
+ (license lgpl2.0+)))
+
+(define-public libksba
+ (package
+ (name "libksba")
+ (version "1.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://gnupg/libksba/libksba-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "0jwk7hm3x3g4hd7l12z3d79dy7359x7lc88dq6z7q0ixn1jwxbq9"))))
+ (build-system gnu-build-system)
+ (propagated-inputs
+ `(("libgpg-error" ,libgpg-error)))
+ (home-page "http://www.gnupg.org")
+ (synopsis
+ "Libksba is a CMS and X.509 access library under development")
+ (description
+ "KSBA (pronounced Kasbah) is a library to make X.509 certificates
+as well as the CMS easily accessible by other applications. Both
+specifications are building blocks of S/MIME and TLS.")
+ (license gpl3+)))
+
+(define-public gnupg
+ (package
+ (name "gnupg")
+ (version "2.0.19")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
+ ".tar.bz2"))
+ (sha256
+ (base32
+ "08n636sfffs5qvg9ppiprvsh00q0dmdw425psg3m3nssja53m8pg"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(;; TODO: Add missing optional deps.
+ ;; ("curl" ,curl)
+ ;; ("libusb" ,libusb)
+ ;; ("openldap" ,openldap)
+
+ ("bzip2" ,guix:bzip2)
+ ("libassuan" ,libassuan)
+ ("libgcrypt" ,libgcrypt)
+ ("libksba" ,libksba)
+ ("pth" ,pth)
+ ("libgpg-error" ,libgpg-error)
+ ("zlib" ,guix:zlib)
+ ("readline" ,readline)))
+ (home-page "http://gnupg.org/")
+ (synopsis
+ "GNU Privacy Guard (GnuPG), GNU Project's implementation of the OpenPGP standard")
+ (description
+ "GnuPG is the GNU project's complete and free implementation of
+the OpenPGP standard as defined by RFC4880. GnuPG allows to
+encrypt and sign your data and communication, features a
+versatile key managment system as well as access modules for all
+kind of public key directories. GnuPG, also known as GPG, is a
+command line tool with features for easy integration with other
+applications. A wealth of frontend applications and libraries
+are available. Version 2 of GnuPG also provides support for
+S/MIME.")
+ (license gpl3+)))
diff --git a/gnu/packages/gnutls.scm b/gnu/packages/gnutls.scm
new file mode 100644
index 0000000000..4bda9a9ac5
--- /dev/null
+++ b/gnu/packages/gnutls.scm
@@ -0,0 +1,98 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages gnutls)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (gnu packages base)
+ #:use-module ((gnu packages compression)
+ #:renamer (symbol-prefix-proc 'guix:))
+ #:use-module (gnu packages nettle)
+ #:use-module (gnu packages guile)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages which))
+
+(define-public libtasn1
+ (package
+ (name "libtasn1")
+ (version "3.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/libtasn1/libtasn1-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0gvgndypwicchf7m660zh7jdgmkfj9g9xavpcc08pyd0120y0bk7"))))
+ (build-system gnu-build-system)
+ (home-page "http://www.gnu.org/software/libtasn1/")
+ (synopsis "GNU Libtasn1, an ASN.1 library")
+ (description
+ "Libtasn1 is the ASN.1 library used by GnuTLS, GNU Shishi and some
+other packages. The goal of this implementation is to be highly
+portable, and only require an ANSI C89 platform.")
+ (license lgpl2.0+)))
+
+(define-public gnutls
+ (package
+ (name "gnutls")
+ (version "3.1.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://gnu/gnutls/gnutls-"
+ version
+ ".tar.xz"))
+ (sha256
+ (base32
+ "0zsybr9plllk1phh83bx9bg7c5ccik427j4n3k1s9fiy4j69n0w3"))))
+ (build-system gnu-build-system)
+
+ ;; Build of the Guile bindings is not parallel-safe. See
+ ;; <http://git.savannah.gnu.org/cgit/gnutls.git/commit/?id=330995a920037b6030ec0282b51dde3f8b493cad>
+ ;; for the actual fix.
+ (arguments '(#:parallel-build? #f))
+
+ (inputs
+ `(("guile" ,guile-2.0)
+ ;; ("lzo" ,lzo)
+ ("zlib" ,guix:zlib)
+ ("perl" ,perl)))
+ (propagated-inputs
+ `(("libtasn1" ,libtasn1)
+ ("nettle" ,nettle)
+ ("which" ,which)))
+ (home-page "http://www.gnu.org/software/gnutls/")
+ (synopsis
+ "The GNU Transport Layer Security Library")
+ (description
+ "GnuTLS is a project that aims to develop a library which provides
+a secure layer, over a reliable transport layer. Currently the GnuTLS
+library implements the proposed standards by the IETF's TLS working
+group.
+
+Quoting from the TLS protocol specification:
+
+\"The TLS protocol provides communications privacy over the
+Internet. The protocol allows client/server applications to communicate
+in a way that is designed to prevent eavesdropping, tampering, or
+message forgery.\"")
+ (license lgpl2.1+)))
diff --git a/gnu/packages/gperf.scm b/gnu/packages/gperf.scm
new file mode 100644
index 0000000000..94fa62b652
--- /dev/null
+++ b/gnu/packages/gperf.scm
@@ -0,0 +1,55 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages gperf)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu))
+
+(define-public gperf
+ (package
+ (name "gperf")
+ (version "3.0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/gperf/gperf-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0gnnm8iqcl52m8iha3sxrzrl9mcyhg7lfrhhqgdn4zj00ji14wbn"))))
+ (build-system gnu-build-system)
+ (arguments '(#:parallel-tests? #f))
+ (home-page "http://www.gnu.org/software/gperf/")
+ (synopsis
+ "GNU gperf, a perfect hash function generator")
+ (description
+ "GNU gperf is a perfect hash function generator. For a given
+list of strings, it produces a hash function and hash table, in
+form of C or C++ code, for looking up a value depending on the
+input string. The hash function is perfect, which means that
+the hash table has no collisions, and the hash table lookup
+needs a single string comparison only.
+
+GNU gperf is highly customizable. There are options for
+generating C or C++ code, for emitting switch statements or
+nested ifs instead of a hash table, and for tuning the algorithm
+employed by gperf.")
+ (license gpl3+)))
diff --git a/gnu/packages/gsasl.scm b/gnu/packages/gsasl.scm
new file mode 100644
index 0000000000..dc75b18455
--- /dev/null
+++ b/gnu/packages/gsasl.scm
@@ -0,0 +1,113 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Andreas Enge <andreas@enge.fr>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages gsasl)
+ #:use-module (distro)
+ #:use-module ((gnu packages compression)
+ #:renamer (symbol-prefix-proc 'guix:))
+ #:use-module (gnu packages gnutls)
+ #:use-module (gnu packages libidn)
+ #:use-module (gnu packages nettle)
+ #:use-module (gnu packages shishi)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public libntlm
+ (package
+ (name "libntlm")
+ (version "1.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://www.nongnu.org/libntlm/releases/libntlm-" version
+ ".tar.gz"))
+ (sha256 (base32
+ "101pr110ardcj2di940g6vaqifsaxc44h6hjn81l63dvmkj5a6ga"))))
+ (build-system gnu-build-system)
+ (synopsis "Libntlm, a library that implements NTLM authentication")
+ (description
+ "Libntlm is a library that implements NTLM authentication")
+ (license lgpl2.1+)
+ (home-page "http://www.nongnu.org/libntlm/")))
+
+(define-public gss
+ (package
+ (name "gss")
+ (version "1.0.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/gss/gss-" version
+ ".tar.gz"))
+ (sha256 (base32
+ "1qa8lbkzi6ilfggx7mchfzjnchvhwi68rck3jf9j4425ncz7zsd9"))))
+ (build-system gnu-build-system)
+ (inputs `(("nettle" ,nettle)
+ ("shishi" ,shishi)
+ ("zlib" ,guix:zlib)
+ ))
+ (synopsis "GNU GSS (Generic Security Service), a free implementatio of RFC 2743/2744")
+ (description
+ "GNU GSS is an implementation of the Generic Security Service Application
+Program Interface (GSS-API). GSS-API is used by network servers to provide
+security services, e.g., to authenticate SMTP/IMAP clients against
+SMTP/IMAP servers. GSS consists of a library and a manual.")
+ (license gpl3+)
+ (home-page "http://www.gnu.org/software/gss/")))
+
+(define-public gsasl
+ (package
+ (name "gsasl")
+ (version "1.8.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/gsasl/gsasl-" version
+ ".tar.gz"))
+ (sha256 (base32
+ "1rci64cxvcfr8xcjpqc4inpfq7aw4snnsbf5xz7d30nhvv8n40ii"))))
+ (build-system gnu-build-system)
+ (inputs `(("libidn" ,libidn)
+ ("libntlm" ,libntlm)
+ ("gnutls" ,gnutls)
+ ("gss" ,gss)
+ ("zlib" ,guix:zlib)
+ ))
+ (synopsis "GNU SASL, an implementation of the Simple Authentication and Security Layer framework")
+ (description
+ "GNU SASL is an implementation of the Simple Authentication and Security
+Layer framework and a few common SASL mechanisms. SASL is used by network
+servers (e.g., IMAP, SMTP) to request authentication from clients, and in
+clients to authenticate against servers.
+
+GNU SASL consists of a library (libgsasl), a command line utility (gsasl)
+to access the library from the shell, and a manual. The library includes
+support for the framework (with authentication functions and application
+data privacy and integrity functions) and at least partial support for the
+CRAM-MD5, EXTERNAL, GSSAPI, ANONYMOUS, PLAIN, SECURID, DIGEST-MD5,
+SCRAM-SHA-1, SCRAM-SHA-1-PLUS, LOGIN, and NTLM mechanisms.
+
+The library is portable because it does not do network communication by
+itself, but rather leaves it up to the calling application. The library is
+flexible with regards to the authorization infrastructure used, as it
+utilises callbacks into the application to decide whether an user is
+authorised or not.
+
+The gsasl package distribution includes the library part as well,
+so there is no need to install two packages.")
+ (license gpl3+)
+ (home-page "http://www.gnu.org/software/gsasl/")))
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
new file mode 100644
index 0000000000..5034ae914a
--- /dev/null
+++ b/gnu/packages/guile.scm
@@ -0,0 +1,197 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages guile)
+ #:use-module (guix licenses)
+ #:use-module (distro)
+ #:use-module (gnu packages bdw-gc)
+ #:use-module (gnu packages gawk)
+ #:use-module (gnu packages gperf)
+ #:use-module (gnu packages libffi)
+ #:use-module (gnu packages autotools)
+ #:use-module (gnu packages libunistring)
+ #:use-module (gnu packages m4)
+ #:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages readline)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+;;; Commentary:
+;;;
+;;; GNU Guile, and modules and extensions.
+;;;
+;;; Code:
+
+(define-public guile-1.8
+ (package
+ (name "guile")
+ (version "1.8.8")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/guile/guile-" version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0l200a0v7h8bh0cwz6v7hc13ds39cgqsmfrks55b1rbj5vniyiy3"))))
+ (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
+ 'configure
+ 'patch-loader-search-path
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Add a call to `lt_dladdsearchdir' so that
+ ;; `libguile-readline.so' & co. are in the
+ ;; loader's search path.
+ (substitute* "libguile/dynl.c"
+ (("lt_dlinit.*$" match)
+ (format #f
+ " ~a~% lt_dladdsearchdir(\"~a/lib\");~%"
+ match
+ (assoc-ref outputs "out")))))
+ %standard-phases)))
+ (inputs `(("patch/snarf" ,(search-patch "guile-1.8-cpp-4.5.patch"))
+ ("gawk" ,gawk)
+ ("readline" ,readline)))
+
+ ;; Since `guile-1.8.pc' has "Libs: ... -lgmp -lltdl", these must be
+ ;; propagated.
+ (propagated-inputs `(("gmp" ,gmp)
+ ("libtool" ,libtool)))
+
+ ;; When cross-compiling, a native version of Guile itself is needed.
+ (self-native-input? #t)
+
+ (synopsis "GNU Guile 1.8, an embeddable Scheme interpreter")
+ (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.")
+ (home-page "http://www.gnu.org/software/guile/")
+ (license lgpl2.0+)))
+
+(define-public guile-2.0
+ (package
+ (name "guile")
+ (version "2.0.7")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/guile/guile-" version
+ ".tar.xz"))
+ (sha256
+ (base32
+ "0f53pxkia4v17n0avwqlcjpy0n89hkazm2xsa6p84lv8k6k8y9vg"))))
+ (build-system gnu-build-system)
+ (native-inputs `(("pkgconfig" ,pkg-config)))
+ (inputs `(("libffi" ,libffi)
+ ("readline" ,readline)))
+
+ (propagated-inputs
+ `( ;; These ones aren't normally needed here, but since `libguile-2.0.la'
+ ;; reads `-lltdl -lunistring', adding them here will add the needed
+ ;; `-L' flags. As for why the `.la' file lacks the `-L' flags, see
+ ;; <http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/18903>.
+ ("libunistring" ,libunistring)
+ ("libtool" ,libtool)
+
+ ;; The headers and/or `guile-2.0.pc' refer to these packages, so they
+ ;; must be propagated.
+ ("bdw-gc" ,libgc)
+ ("gmp" ,gmp)))
+
+ (self-native-input? #t)
+
+ (arguments
+ '(#:phases (alist-cons-before
+ 'configure 'pre-configure
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((bash (assoc-ref inputs "bash")))
+ (substitute* "module/ice-9/popen.scm"
+ (("/bin/sh")
+ (string-append bash "/bin/bash")))))
+ %standard-phases)))
+
+ (synopsis "GNU Guile 2.0, an embeddable Scheme implementation")
+ (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.")
+ (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)
+
+
+;;;
+;;; Extensions.
+;;;
+
+(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 url-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" ,pkg-config)
+ ("gperf" ,gperf)))
+ (inputs `(("guile" ,guile)))
+ (synopsis "Guile-Reader, a simple framework for building readers for
+GNU Guile")
+ (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 gpl3+)))
+
+(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/gnu/packages/help2man.scm b/gnu/packages/help2man.scm
new file mode 100644
index 0000000000..0acd39a524
--- /dev/null
+++ b/gnu/packages/help2man.scm
@@ -0,0 +1,52 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages help2man)
+ #:use-module (guix licenses)
+ #:use-module (guix download)
+ #:use-module (guix packages)
+ #:use-module (guix build-system gnu)
+ #:use-module (gnu packages perl))
+
+(define-public help2man
+ (package
+ (name "help2man")
+ (version "1.40.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/help2man/help2man-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0s6phazn8jgvpbsby8kj2m58rj1zjghi1aipvamh8af226ssqfzj"))))
+ (build-system gnu-build-system)
+ (arguments `(;; There's no `check' target.
+ #:tests? #f))
+ (inputs
+ `(("perl" ,perl)
+ ;; TODO: Add these optional dependencies.
+ ;; ("perl-LocaleGettext" ,perl-LocaleGettext)
+ ;; ("gettext" ,gettext)
+ ))
+ (home-page "http://www.gnu.org/software/help2man/")
+ (synopsis "GNU help2man generates man pages from `--help' output")
+ (description
+ "help2man produces simple manual pages from the ‘--help’ and
+‘--version’ output of other commands.")
+ (license gpl3+)))
diff --git a/gnu/packages/icu4c.scm b/gnu/packages/icu4c.scm
new file mode 100644
index 0000000000..e0aa3bcd88
--- /dev/null
+++ b/gnu/packages/icu4c.scm
@@ -0,0 +1,66 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages icu4c)
+ #:use-module (distro)
+ #:use-module (gnu packages perl)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public icu4c
+ (package
+ (name "icu4c")
+ (version "50.1.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://download.icu-project.org/files/icu4c/"
+ version
+ "/icu4c-"
+ (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
+ "-src.tgz"))
+ (sha256 (base32
+ "13yz0kk6zsgj94idnlr3vbg8iph5z4ly4b4xrd5wfja7q3ijdx56"))))
+ (build-system gnu-build-system)
+ (inputs `(("perl" ,perl)))
+ (arguments
+ `(#:phases
+ (alist-replace
+ 'unpack
+ (lambda* (#:key source #:allow-other-keys)
+ (and (zero? (system* "tar" "xvf" source))
+ (chdir "icu/source")))
+ (alist-replace
+ 'configure
+ (lambda* (#:key #:allow-other-keys #:rest args)
+ (let ((configure (assoc-ref %standard-phases 'configure)))
+ ;; patch out two occurrences of /bin/sh from configure script
+ ;; that might have disappeared in a release later than 50.1.1
+ (substitute* "configure"
+ (("`/bin/sh")
+ (string-append "`" (which "bash"))))
+ (apply configure args)))
+ %standard-phases))))
+ (synopsis "ICU, International Components for Unicode")
+ (description
+ "ICU is a set of C/C++ and Java libraries providing Unicode and
+globalisation support for software applications. This package contains the
+C/C++ part.")
+ (license x11)
+ (home-page "http://site.icu-project.org/")))
diff --git a/gnu/packages/idutils.scm b/gnu/packages/idutils.scm
new file mode 100644
index 0000000000..34b6dfcff9
--- /dev/null
+++ b/gnu/packages/idutils.scm
@@ -0,0 +1,65 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages idutils)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix licenses)
+ #:use-module (distro))
+
+(define-public idutils
+ (package
+ (name "idutils")
+ (version "4.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/idutils/idutils-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "1hmai3422iaqnp34kkzxdnywl7n7pvlxp11vrw66ybxn9wxg90c1"))))
+ (build-system gnu-build-system)
+ (inputs `(;; TODO: Add Emacs as an input for byte-compilation.
+ ;; ("emacs" ,emacs)
+ ("patch/gets"
+ ,(search-patch "diffutils-gets-undeclared.patch"))))
+ (arguments `(#:patches (list (assoc-ref %build-inputs "patch/gets"))))
+ (home-page "http://www.gnu.org/software/idutils/")
+ (synopsis "GNU Idutils, a text searching utility")
+ (description
+ "An \"ID database\" is a binary file containing a list of file
+names, a list of tokens, and a sparse matrix indicating which
+tokens appear in which files.
+
+With this database and some tools to query it, many
+text-searching tasks become simpler and faster. For example,
+you can list all files that reference a particular `\\#include'
+file throughout a huge source hierarchy, search for all the
+memos containing references to a project, or automatically
+invoke an editor on all files containing references to some
+function or variable. Anyone with a large software project to
+maintain, or a large set of text files to organize, can benefit
+from the ID utilities.
+
+Although the name `ID' is short for `identifier', the ID
+utilities handle more than just identifiers; they also treat
+other kinds of tokens, most notably numeric constants, and the
+contents of certain character strings.")
+ (license gpl3+)))
diff --git a/gnu/packages/indent.scm b/gnu/packages/indent.scm
new file mode 100644
index 0000000000..eb42e6a7b4
--- /dev/null
+++ b/gnu/packages/indent.scm
@@ -0,0 +1,44 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages indent)
+ #:use-module (distro)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public indent
+ (package
+ (name "indent")
+ (version "2.2.10")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/indent/indent-" version
+ ".tar.gz"))
+ (sha256 (base32
+ "0f9655vqdvfwbxvs1gpa7py8k1z71aqh8hp73f65vazwbfz436wa"))))
+ (build-system gnu-build-system)
+ (synopsis "GNU Indent, a program for code indentation and formatting")
+ (description
+ "GNU Indent can be used to make code easier to read. It can also convert
+from one style of writing C to another. Indent understands a substantial
+amount about the syntax of C, but it also attempts to cope with incomplete
+and misformed syntax. The GNU style of indenting is the default.")
+ (license gpl3+)
+ (home-page "http://www.gnu.org/software/indent/")))
diff --git a/gnu/packages/ld-wrapper.scm b/gnu/packages/ld-wrapper.scm
new file mode 100644
index 0000000000..fd5a4cbd0c
--- /dev/null
+++ b/gnu/packages/ld-wrapper.scm
@@ -0,0 +1,147 @@
+#!@BASH@
+# -*- mode: scheme; coding: utf-8; -*-
+
+# XXX: We have to go through Bash because there's no command-line switch to
+# augment %load-compiled-path, and because of the silly 127-byte limit for
+# the shebang line in Linux.
+# Use `load-compiled' because `load' (and `-l') doesn't otherwise load our
+# .go file (see <http://bugs.gnu.org/12519>).
+
+main="(@ (gnu build-support ld-wrapper) ld-wrapper)"
+exec @GUILE@ -c "(load-compiled \"$0.go\") (apply $main (cdr (command-line)))" "$@"
+!#
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu build-support ld-wrapper)
+ #:use-module (srfi srfi-1)
+ #:export (ld-wrapper))
+
+;;; Commentary:
+;;;
+;;; This is a wrapper for the linker. Its purpose is to inspect the -L and
+;;; -l switches passed to the linker, add corresponding -rpath arguments, and
+;;; invoke the actual linker with this new set of arguments.
+;;;
+;;; The alternatives to this hack would be:
+;;;
+;;; 1. Using $LD_RUN_PATH. However, that would tend to include more than
+;;; needed in the RPATH; for instance, given a package with `libfoo' as
+;;; an input, all its binaries would have libfoo in their RPATH,
+;;; regardless of whether they actually NEED it.
+;;;
+;;; 2. Use a GCC "lib" spec string such as `%{L*:-rpath %*}', which adds a
+;;; `-rpath LIBDIR' argument for each occurrence of `-L LIBDIR'.
+;;; However, this doesn't work when $LIBRARY_PATH is used, because the
+;;; additional `-L' switches are not matched by the above rule, because
+;;; the rule only matches explicit user-provided switches. See
+;;; <http://gcc.gnu.org/ml/gcc-help/2012-09/msg00110.html> for details.
+;;;
+;;; As a bonus, this wrapper checks for "impurities"--i.e., references to
+;;; libraries outside the store.
+;;;
+;;; Code:
+
+(define %real-ld
+ ;; Name of the linker that we wrap.
+ "@LD@")
+
+(define %store-directory
+ ;; File name of the store.
+ (or (getenv "NIX_STORE") "/nix/store"))
+
+(define %temporary-directory
+ ;; Temporary directory.
+ (or (getenv "TMPDIR") "/tmp"))
+
+(define %build-directory
+ ;; Top build directory when run from a builder.
+ (getenv "NIX_BUILD_TOP"))
+
+(define %allow-impurities?
+ ;; Whether to allow references to libraries outside the store.
+ (getenv "GUIX_LD_WRAPPER_ALLOW_IMPURITIES"))
+
+(define %debug?
+ ;; Whether to emit debugging output.
+ (getenv "GUIX_LD_WRAPPER_DEBUG"))
+
+(define (pure-file-name? file)
+ ;; Return #t when FILE is the name of a file either within the store or
+ ;; within the build directory.
+ (or (not (string-prefix? "/" file))
+ (string-prefix? %store-directory file)
+ (string-prefix? %temporary-directory file)
+ (and %build-directory
+ (string-prefix? %build-directory file))))
+
+(define (switch-arguments switch args)
+ ;; Return the arguments passed for the occurrences of SWITCH--e.g.,
+ ;; "-L"--in ARGS.
+ (let ((prefix-len (string-length switch)))
+ (fold-right (lambda (arg path)
+ (if (string-prefix? switch arg)
+ (cons (substring arg prefix-len) path)
+ path))
+ '()
+ args)))
+
+(define (library-path args)
+ ;; Return the library search path extracted from `-L' switches in ARGS.
+ ;; Note: allow references to out-of-store directories. When this leads to
+ ;; actual impurities, this is caught later.
+ (switch-arguments "-L" args))
+
+(define (library-files-linked args)
+ ;; Return the file names of shared libraries explicitly linked against via
+ ;; `-l' in ARGS.
+ (map (lambda (lib)
+ (string-append "lib" lib ".so"))
+ (switch-arguments "-l" args)))
+
+(define (rpath-arguments lib-path library-files)
+ ;; Return the `-rpath' argument list for each of LIBRARY-FILES found in
+ ;; LIB-PATH.
+ (fold-right (lambda (file args)
+ (let ((absolute (search-path lib-path file)))
+ (if absolute
+ (if (or %allow-impurities?
+ (pure-file-name? absolute))
+ (cons* "-rpath" (dirname absolute)
+ args)
+ (begin
+ (format (current-error-port)
+ "ld-wrapper: error: attempt to use impure library ~s~%"
+ absolute)
+ (exit 1)))
+ args)))
+ '()
+ library-files))
+
+(define (ld-wrapper . args)
+ ;; Invoke the real `ld' with ARGS, augmented with `-rpath' switches.
+ (let* ((lib-path (library-path args))
+ (libs (library-files-linked args))
+ (args (append args (rpath-arguments lib-path libs))))
+ (if %debug?
+ (format (current-error-port)
+ "ld-wrapper: invoking `~a' with ~s~%"
+ %real-ld args))
+ (apply execl %real-ld (basename %real-ld) args)))
+
+;;; ld-wrapper.scm ends here
diff --git a/gnu/packages/less.scm b/gnu/packages/less.scm
new file mode 100644
index 0000000000..63a3d98a9b
--- /dev/null
+++ b/gnu/packages/less.scm
@@ -0,0 +1,51 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages less)
+ #:use-module (guix licenses)
+ #:use-module (gnu packages ncurses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public less
+ (package
+ (name "less")
+ (version "451")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/less/less-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0mszdd9m1dsbg59pav62swg9f87xmjpfspcw2jsazzksciy2is4z"))))
+ (build-system gnu-build-system)
+ (inputs `(("ncurses" ,ncurses)))
+ (home-page "https://www.gnu.org/software/less/")
+ (synopsis
+ "GNU less is a program similar to more, but which allows backward
+movement in the file as well as forward movement")
+ (description
+ "GNU less is a program similar to more, but which allows backward
+movement in the file as well as forward movement. Also, less does not
+have to read the entire input file before starting, so with large input
+files it starts up faster than text editors like vi. Less uses
+termcap (or terminfo on some systems), so it can run on a variety of
+terminals. There is even limited support for hardcopy terminals.")
+ (license gpl3+))) ; some files are under GPLv2+ \ No newline at end of file
diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm
new file mode 100644
index 0000000000..87c849e564
--- /dev/null
+++ b/gnu/packages/libffi.scm
@@ -0,0 +1,73 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages libffi)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu))
+
+(define-public libffi
+ (let ((post-install-phase
+ ;; Install headers in the right place.
+ '(lambda* (#:key outputs #:allow-other-keys)
+ (define out (assoc-ref outputs "out"))
+ (mkdir (string-append out "/include"))
+ (with-directory-excursion
+ (string-append out "/lib/libffi-3.0.9/include")
+ (for-each (lambda (h)
+ (format #t "moving `~a' to includedir~%" h)
+ (rename-file h (string-append out "/include/" h)))
+ (scandir "."
+ (lambda (x)
+ (not (member x '("." ".."))))))))))
+ (package
+ (name "libffi")
+ (version "3.0.9")
+ (source (origin
+ (method url-fetch)
+ (uri
+ (string-append "ftp://sourceware.org/pub/libffi/"
+ name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0ln4jbpb6clcsdpb9niqk0frgx4k0xki96wiv067ig0q4cajb7aq"))))
+ (build-system gnu-build-system)
+ (arguments `(#:modules ((guix build utils) (guix build gnu-build-system)
+ (ice-9 ftw) (srfi srfi-26))
+ #:phases (alist-cons-after 'install 'post-install
+ ,post-install-phase
+ %standard-phases)))
+ (synopsis "libffi, a foreign function call interface library")
+ (description
+ "The libffi library provides a portable, high level programming interface
+to various calling conventions. This allows a programmer to call any
+function specified by a call interface description at run-time.
+
+FFI stands for Foreign Function Interface. A foreign function interface is
+the popular name for the interface that allows code written in one language
+to call code written in another language. The libffi library really only
+provides the lowest, machine dependent layer of a fully featured foreign
+function interface. A layer must exist above libffi that handles type
+conversions for values passed between the two languages.")
+ (home-page "http://sources.redhat.com/libffi/")
+
+ ;; See <http://github.com/atgreen/libffi/blob/master/LICENSE>.
+ (license expat))))
+
diff --git a/gnu/packages/libidn.scm b/gnu/packages/libidn.scm
new file mode 100644
index 0000000000..dd246ef3e1
--- /dev/null
+++ b/gnu/packages/libidn.scm
@@ -0,0 +1,51 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Andreas Enge <andreas@enge.fr>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages libidn)
+ #:use-module (distro)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public libidn
+ (package
+ (name "libidn")
+ (version "1.26")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/libidn/libidn-" version
+ ".tar.gz"))
+ (sha256 (base32
+ "0g657kv60rh486m7bwyp5k24ljmym4wnb8nmk6d3i3qgr1qlqbqa"))))
+ (build-system gnu-build-system)
+;; FIXME: No Java and C# libraries are currently built.
+ (synopsis "GNU Libidn, a library to encode and decode internationalised domain names")
+ (description
+ "GNU Libidn is a fully documented implementation of the Stringprep,
+Punycode and IDNA specifications. Libidn's purpose is to encode and decode
+internationalised domain names.
+
+The library contains a generic Stringprep implementation. Profiles for
+Nameprep, iSCSI, SASL, XMPP and Kerberos V5 are included. Punycode and
+ASCII Compatible Encoding (ACE) via IDNA are supported. A mechanism to
+define Top-Level Domain (TLD) specific validation tables, and to compare
+strings against those tables, is included.
+Default tables for some TLDs are also included.")
+ (license lgpl2.1+)
+ (home-page "http://www.gnu.org/software/libidn/")))
diff --git a/gnu/packages/libjpeg.scm b/gnu/packages/libjpeg.scm
new file mode 100644
index 0000000000..22d5a6b1c1
--- /dev/null
+++ b/gnu/packages/libjpeg.scm
@@ -0,0 +1,57 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages libjpeg)
+ #:use-module (distro)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public libjpeg
+ (package
+ (name "libjpeg")
+ (version "9")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://www.ijg.org/files/jpegsrc.v"
+ version ".tar.gz"))
+ (sha256 (base32
+ "0dg5wxcx3cw0hal9gvivj97vid9z0s5sb1yvg55hpxmafn9rxqn4"))))
+ (build-system gnu-build-system)
+ (synopsis "Libjpeg, a library for handling JPEG files")
+ (description
+ "Libjpeg implements JPEG image encoding, decoding, and transcoding.
+JPEG is a standardized compression method for full-color and gray-scale
+images.
+The included programs provide conversion between the JPEG format and
+image files in PBMPLUS PPM/PGM, GIF, BMP, and Targa file formats.")
+ (license ijg)
+ (home-page "http://www.ijg.org/")))
+
+(define-public libjpeg-8
+ (package (inherit libjpeg)
+ (name "libjpeg-8")
+ (version "8d")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://www.ijg.org/files/jpegsrc.v"
+ version ".tar.gz"))
+ (sha256 (base32
+ "1cz0dy05mgxqdgjf52p54yxpyy95rgl30cnazdrfmw7hfca9n0h0"))))))
+
diff --git a/gnu/packages/libsigsegv.scm b/gnu/packages/libsigsegv.scm
new file mode 100644
index 0000000000..de896e4e8b
--- /dev/null
+++ b/gnu/packages/libsigsegv.scm
@@ -0,0 +1,47 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages libsigsegv)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu))
+
+(define-public libsigsegv
+ (package
+ (name "libsigsegv")
+ (version "2.10")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://gnu/libsigsegv/libsigsegv-"
+ version ".tar.gz"))
+ (sha256
+ (base32 "16hrs8k3nmc7a8jam5j1fpspd6sdpkamskvsdpcw6m29vnis8q44"))))
+ (build-system gnu-build-system)
+ (home-page "http://www.gnu.org/software/libsigsegv/")
+ (synopsis "GNU libsigsegv, a library to handle page faults in user mode")
+ (description
+"GNU libsigsegv is a library for handling page faults in user mode. A page
+fault occurs when a program tries to access to a region of memory that is
+currently not available. Catching and handling a page fault is a useful
+technique for implementing pageable virtual memory, memory-mapped access to
+persistent databases, generational garbage collectors, stack overflow
+handlers, distributed shared memory, and more.")
+ (license gpl2+)))
diff --git a/gnu/packages/libtiff.scm b/gnu/packages/libtiff.scm
new file mode 100644
index 0000000000..0e785a622b
--- /dev/null
+++ b/gnu/packages/libtiff.scm
@@ -0,0 +1,65 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages libtiff)
+ #:use-module (distro)
+ #:use-module (gnu packages file)
+ #:use-module (gnu packages libjpeg)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public libtiff
+ (package
+ (name "libtiff")
+ (version "4.0.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "ftp://ftp.remotesensing.org/pub/libtiff/tiff-"
+ version ".tar.gz"))
+ (sha256 (base32
+ "0wj8d1iwk9vnpax2h29xqc2hwknxg3s0ay2d5pxkg59ihbifn6pa"))))
+ (build-system gnu-build-system)
+ (inputs `(("file" ,file)
+ ("libjpeg-8" ,libjpeg-8)))
+ ;; currently does not compile with libjpeg version 9
+ (arguments
+ `(#:configure-flags
+ (list (string-append "--with-jpeg-include-dir="
+ (assoc-ref %build-inputs "libjpeg-8")
+ "/include"))
+ #:phases
+ (alist-replace
+ 'configure
+ (lambda* (#:key #:allow-other-keys #:rest args)
+ (let ((configure (assoc-ref %standard-phases 'configure)))
+ (substitute* "configure"
+ (("`/usr/bin/file")
+ (string-append "`" (which "file"))))
+ (apply configure args)))
+ %standard-phases)))
+ (synopsis "Libtiff, a library for handling TIFF files")
+ (description
+ "Libtiff provides support for the Tag Image File Format (TIFF), a format
+used for storing image data.
+Included are a library, libtiff, for reading and writing TIFF and a small
+collection of tools for doing simple manipulations of TIFF images.")
+ (license (bsd-style "file://COPYRIGHT"
+ "See COPYRIGHT in the distribution."))
+ (home-page "http://www.libtiff.org/")))
diff --git a/gnu/packages/libunistring.scm b/gnu/packages/libunistring.scm
new file mode 100644
index 0000000000..62ade5e378
--- /dev/null
+++ b/gnu/packages/libunistring.scm
@@ -0,0 +1,58 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages libunistring)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu))
+
+(define-public libunistring
+ (package
+ (name "libunistring")
+ (version "0.9.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://gnu/libunistring/libunistring-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "18q620269xzpw39dwvr9zpilnl2dkw5z5kz3mxaadnpv4k3kw3b1"))))
+ (propagated-inputs '()) ; FIXME: add libiconv when !glibc
+ (build-system gnu-build-system)
+ (synopsis "GNU Libunistring, a Unicode string library")
+ (description
+ "This library provides functions for manipulating Unicode strings and for
+manipulating C strings according to the Unicode standard.
+
+GNU libunistring is for you if your application involves non-trivial text
+processing, such as upper/lower case conversions, line breaking, operations
+on words, or more advanced analysis of text. Text provided by the user can,
+in general, contain characters of all kinds of scripts. The text processing
+functions provided by this library handle all scripts and all languages.
+
+libunistring is for you if your application already uses the ISO C / POSIX
+<ctype.h>, <wctype.h> functions and the text it operates on is provided by
+the user and can be in any language.
+
+libunistring is also for you if your application uses Unicode strings as
+internal in-memory representation.")
+ (home-page "http://www.gnu.org/software/libunistring/")
+ (license lgpl3+)))
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
new file mode 100644
index 0000000000..1813f0cd04
--- /dev/null
+++ b/gnu/packages/libusb.scm
@@ -0,0 +1,44 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages libusb)
+ #:use-module (distro)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public libusb
+ (package
+ (name "libusb")
+ (version "1.0.9")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/libusb/libusb-1.0/"
+ "libusb-" version "/libusb-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "16sz34ix6hw2wwl3kqx6rf26fg210iryr68wc439dc065pffw879"))))
+ (build-system gnu-build-system)
+ (home-page "http://www.libusb.org")
+ (synopsis "Libusb, a user-space USB library")
+ (description
+ "Libusb is a library that gives applications easy access to USB
+devices on various operating systems.")
+ (license lgpl2.1+))) \ No newline at end of file
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
new file mode 100644
index 0000000000..ded36c5eec
--- /dev/null
+++ b/gnu/packages/linux.scm
@@ -0,0 +1,259 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages linux)
+ #:use-module (guix licenses)
+ #:use-module (distro)
+ #:use-module ((gnu packages compression)
+ #:renamer (symbol-prefix-proc 'guix:))
+ #:use-module (gnu packages flex)
+ #:use-module (gnu packages libusb)
+ #:use-module (gnu packages ncurses)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public linux-libre-headers
+ (let* ((version* "3.3.8")
+ (build-phase
+ '(lambda* (#:key system #:allow-other-keys)
+ (let ((arch (car (string-split system #\-))))
+ (setenv "ARCH"
+ (cond ((string=? arch "i686") "i386")
+ (else arch)))
+ (format #t "`ARCH' set to `~a'~%" (getenv "ARCH")))
+
+ (and (zero? (system* "make" "defconfig"))
+ (zero? (system* "make" "mrproper" "headers_check")))))
+ (install-phase
+ `(lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (and (zero? (system* "make"
+ (string-append "INSTALL_HDR_PATH=" out)
+ "headers_install"))
+ (mkdir (string-append out "/include/config"))
+ (call-with-output-file
+ (string-append out
+ "/include/config/kernel.release")
+ (lambda (p)
+ (format p "~a-default~%" ,version*))))))))
+ (package
+ (name "linux-libre-headers")
+ (version version*)
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://linux-libre.fsfla.org/pub/linux-libre/releases/3.3.8-gnu/linux-libre-"
+ version "-gnu.tar.xz"))
+ (sha256
+ (base32
+ "0jkfh0z1s6izvdnc3njm39dhzp1cg8i06jv06izwqz9w9qsprvnl"))))
+ (build-system gnu-build-system)
+ (native-inputs `(("perl" ,perl)))
+ (arguments
+ `(#:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (srfi srfi-1))
+ #:phases (alist-replace
+ 'build ,build-phase
+ (alist-replace
+ 'install ,install-phase
+ (alist-delete 'configure %standard-phases)))
+ #:tests? #f))
+ (synopsis "GNU Linux-Libre kernel headers")
+ (description "Headers of the Linux-Libre kernel.")
+ (license "GPLv2")
+ (home-page "http://www.gnu.org/software/linux-libre/"))))
+
+(define-public linux-pam
+ (package
+ (name "linux-pam")
+ (version "1.1.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (list (string-append "http://www.linux-pam.org/library/Linux-PAM-"
+ version ".tar.bz2")
+ (string-append "mirror://kernel.org/linux/libs/pam/library/Linux-PAM-"
+ version ".tar.bz2")))
+ (sha256
+ (base32
+ "1hlz2kqvbjisvwyicdincq7nz897b9rrafyzccwzqiqg53b8gf5s"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("flex" ,flex)
+
+ ;; TODO: optional dependencies
+ ;; ("libxcrypt" ,libxcrypt)
+ ;; ("cracklib" ,cracklib)
+ ))
+ (arguments
+ ;; XXX: Tests won't run in chroot, presumably because /etc/pam.d
+ ;; isn't available.
+ '(#:tests? #f))
+ (home-page "http://www.linux-pam.org/")
+ (synopsis "Pluggable authentication modules for Linux")
+ (description
+ "A *Free* project to implement OSF's RFC 86.0.
+Pluggable authentication modules are small shared object files that can
+be used through the PAM API to perform tasks, like authenticating a user
+at login. Local and dynamic reconfiguration are its key features")
+ (license bsd-3)))
+
+(define-public psmisc
+ (package
+ (name "psmisc")
+ (version "22.20")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/psmisc/psmisc/psmisc-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "052mfraykmxnavpi8s78aljx8w87hyvpx8mvzsgpjsjz73i28wmi"))))
+ (build-system gnu-build-system)
+ (inputs `(("ncurses" ,ncurses)))
+ (home-page "http://psmisc.sourceforge.net/")
+ (synopsis
+ "set of utilities that use the proc filesystem, such as fuser, killall, and pstree")
+ (description
+ "This PSmisc package is a set of some small useful utilities that
+use the proc filesystem. We're not about changing the world, but
+providing the system administrator with some help in common tasks.")
+ (license gpl2+)))
+
+(define-public util-linux
+ (package
+ (name "util-linux")
+ (version "2.21")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://kernel.org/linux/utils/"
+ name "/v" version "/"
+ name "-" version ".2" ".tar.xz"))
+ (sha256
+ (base32
+ "1rpgghf7n0zx0cdy8hibr41wvkm2qp1yvd8ab1rxr193l1jmgcir"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags '("--disable-use-tty-group")
+ #:phases (alist-cons-after
+ 'install 'patch-chkdupexe
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* (string-append out "/bin/chkdupexe")
+ ;; Allow 'patch-shebang' to do its work.
+ (("@PERL@") "/bin/perl"))))
+ %standard-phases)))
+ (inputs `(("zlib" ,guix:zlib)
+ ("ncurses" ,ncurses)
+ ("perl" ,perl)))
+ (home-page "https://www.kernel.org/pub/linux/utils/util-linux/")
+ (synopsis
+ "util-linux is a random collection of utilities for the Linux kernel")
+ (description
+ "util-linux is a random collection of utilities for the Linux kernel.")
+
+ ;; Note that util-linux doesn't use the same license for all the
+ ;; code. GPLv2+ is the default license for a code without an
+ ;; explicitly defined license.
+ (license (list gpl3+ gpl2+ gpl2 lgpl2.0+
+ bsd-4 public-domain))))
+
+(define-public procps
+ (package
+ (name "procps")
+ (version "3.2.8")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://procps.sourceforge.net/procps-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0d8mki0q4yamnkk4533kx8mc0jd879573srxhg6r2fs3lkc6iv8i"))))
+ (build-system gnu-build-system)
+ (inputs `(("ncurses" ,ncurses)
+ ("patch/make-3.82" ,(search-patch "procps-make-3.82.patch"))))
+ (arguments
+ '(#:patches (list (assoc-ref %build-inputs "patch/make-3.82"))
+ #:phases (alist-replace
+ 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; No `configure', just a single Makefile.
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "Makefile"
+ (("/usr/") "/")
+ (("--(owner|group) 0") "")
+ (("ldconfig") "true")
+ (("^LDFLAGS[[:blank:]]*:=(.*)$" _ value)
+ ;; Add libproc to the RPATH.
+ (string-append "LDFLAGS := -Wl,-rpath="
+ out "/lib" value))))
+ (setenv "CC" "gcc"))
+ (alist-replace
+ 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (and (zero?
+ (system* "make" "install"
+ (string-append "DESTDIR=" out)))
+
+ ;; Sanity check.
+ (zero?
+ (system* (string-append out "/bin/ps")
+ "--version")))))
+ %standard-phases))
+
+ ;; What did you expect? Tests?
+ #:tests? #f))
+ (home-page "http://procps.sourceforge.net/")
+ (synopsis
+ "Utilities that give information about processes using the /proc filesystem")
+ (description
+ "procps is the package that has a bunch of small useful utilities
+that give information about processes using the Linux /proc file system.
+The package includes the programs ps, top, vmstat, w, kill, free,
+slabtop, and skill.")
+ (license gpl2)))
+
+(define-public usbutils
+ (package
+ (name "usbutils")
+ (version "006")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://kernel.org/linux/utils/usb/usbutils/"
+ "usbutils-" version ".tar.xz"))
+ (sha256
+ (base32
+ "03pd57vv8c6x0hgjqcbrxnzi14h8hcghmapg89p8k5zpwpkvbdfr"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("libusb" ,libusb) ("pkg-config" ,pkg-config)))
+ (home-page "http://www.linux-usb.org/")
+ (synopsis
+ "Tools for working with USB devices, such as lsusb")
+ (description
+ "Tools for working with USB devices, such as lsusb.")
+ (license gpl2+)))
diff --git a/gnu/packages/lout.scm b/gnu/packages/lout.scm
new file mode 100644
index 0000000000..b95b694ab4
--- /dev/null
+++ b/gnu/packages/lout.scm
@@ -0,0 +1,132 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages lout)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu))
+
+(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"))
+ (mkdir (string-append out "/lib"))
+ (mkdir (string-append out "/man"))
+ (mkdir-p (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 url-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
+ `(;; FIXME: Add dependency on Ghostscript.
+ ;; ("ghostscript" ,(lambda _
+ ;; (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)))))
+ (synopsis "Lout, a document layout system similar in style to LaTeX")
+ (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 gpl3+)
+ (home-page "http://savannah.nongnu.org/projects/lout/"))))
diff --git a/gnu/packages/lsh.scm b/gnu/packages/lsh.scm
new file mode 100644
index 0000000000..b42eb24639
--- /dev/null
+++ b/gnu/packages/lsh.scm
@@ -0,0 +1,126 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages lsh)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (distro)
+ #:use-module (gnu packages m4)
+ #:use-module (gnu packages linux)
+ #:use-module ((gnu packages compression)
+ #:renamer (symbol-prefix-proc 'guix:))
+ #:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages readline)
+ #:use-module (gnu packages gperf)
+ #:use-module (gnu packages base))
+
+(define-public liboop
+ (package
+ (name "liboop")
+ (version "1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://download.ofb.net/liboop/liboop-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0z6rlalhvfca64jpvksppc9bdhs7jwhiw4y35g5ibvh91xp3rn1l"))))
+ (build-system gnu-build-system)
+ (home-page "http://liboop.ofb.net/")
+ (synopsis "`liboop', an event loop library")
+ (description "liboop is an event loop library.")
+ (license lgpl2.1+)))
+
+(define-public lsh
+ (package
+ (name "lsh")
+ (version "2.0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/lsh/lsh-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "149hf49xcj99wwvi7hcb59igq4vpyv8har1br1if3lrsw5irsjv1"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("linux-pam" ,linux-pam)
+ ("m4" ,m4)
+ ("readline" ,readline)
+ ("liboop" ,liboop)
+ ("zlib" ,guix:zlib)
+ ("gmp" ,gmp)
+ ("guile" ,guile-final)
+ ("gperf" ,gperf)
+ ("psmisc" ,psmisc) ; for `killall'
+
+ ("patch/no-root-login" ,(search-patch "lsh-no-root-login.patch"))
+ ("patch/guile-compat" ,(search-patch "lsh-guile-compat.patch"))
+ ("patch/pam-service-name"
+ ,(search-patch "lsh-pam-service-name.patch"))))
+ (arguments
+ '(#:patches (list (assoc-ref %build-inputs "patch/no-root-login")
+ (assoc-ref %build-inputs "patch/pam-service-name")
+ (assoc-ref %build-inputs "patch/guile-compat"))
+
+ ;; Skip the `configure' test that checks whether /dev/ptmx &
+ ;; co. work as expected, because it relies on impurities (for
+ ;; instance, /dev/pts may be unavailable in chroots.)
+ #:configure-flags '("lsh_cv_sys_unix98_ptys=yes")
+
+ ;; FIXME: Tests won't run in a chroot, presumably because
+ ;; /etc/profile is missing, and thus clients get an empty $PATH
+ ;; and nothing works.
+ #:tests? #f
+
+ #:phases
+ (alist-cons-before
+ 'configure 'fix-test-suite
+ (lambda _
+ ;; Tests rely on $USER being set.
+ (setenv "USER" "guix")
+
+ (substitute* "src/testsuite/functions.sh"
+ (("localhost")
+ ;; Avoid host name lookups since they don't work in chroot
+ ;; builds.
+ "127.0.0.1")
+ (("set -e")
+ ;; Make tests more verbose.
+ "set -e\nset -x"))
+
+ (substitute* (find-files "src/testsuite" "-test$")
+ (("localhost") "127.0.0.1"))
+
+ (substitute* "src/testsuite/login-auth-test"
+ (("/bin/cat")
+ ;; Use the right path to `cat'.
+ (which "cat"))))
+ %standard-phases)))
+ (home-page "http://www.lysator.liu.se/~nisse/lsh/")
+ (synopsis
+ "GNU lsh, a GPL'd implementation of the SSH protocol")
+ (description
+ "lsh is a free implementation (in the GNU sense) of the ssh
+version 2 protocol, currently being standardised by the IETF
+SECSH working group.")
+ (license gpl2+)))
diff --git a/gnu/packages/m4.scm b/gnu/packages/m4.scm
new file mode 100644
index 0000000000..bac8d02c85
--- /dev/null
+++ b/gnu/packages/m4.scm
@@ -0,0 +1,87 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages m4)
+ #:use-module (guix licenses)
+ #:use-module (distro)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu))
+
+(define-public m4
+ (package
+ (name "m4")
+ (version "1.4.16")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/m4/m4-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "035r7ma272j2cwni2961jp22k6bn3n9xwn3b3qbcn2yrvlghql22"))))
+ (build-system gnu-build-system)
+ (arguments (case-lambda
+ ((system)
+ ;; XXX: Disable tests on those platforms with know issues.
+ `(#:tests? ,(not (member system
+ '("x86_64-darwin"
+ "i686-cygwin"
+ "i686-sunos")))
+ #:patches (list (assoc-ref %build-inputs "patch/s_isdir")
+ (assoc-ref %build-inputs
+ "patch/readlink-EINVAL")
+ (assoc-ref %build-inputs "patch/gets"))
+ #:phases (alist-cons-before
+ 'check 'pre-check
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Fix references to /bin/sh.
+ (let ((bash (assoc-ref inputs "bash")))
+ (for-each patch-shebang
+ (find-files "tests" "\\.sh$"))
+ (substitute* (find-files "tests"
+ "posix_spawn")
+ (("/bin/sh")
+ (format #f "~a/bin/bash" bash)))))
+ %standard-phases)))
+ ((system cross-system)
+ `(#:patches (list (assoc-ref %build-inputs "patch/s_isdir")
+ (assoc-ref %build-inputs
+ "patch/readlink-EINVAL")
+ (assoc-ref %build-inputs "patch/gets"))))))
+ (inputs `(("patch/s_isdir" ,(search-patch "m4-s_isdir.patch"))
+ ("patch/readlink-EINVAL"
+ ,(search-patch "m4-readlink-EINVAL.patch"))
+ ("patch/gets" ,(search-patch "m4-gets-undeclared.patch"))))
+ (synopsis "GNU M4, a macro processor")
+ (description
+ "GNU M4 is an implementation of the traditional Unix macro processor. It
+is mostly SVR4 compatible although it has some extensions (for example,
+handling more than 9 positional parameters to macros). GNU M4 also has
+built-in functions for including files, running shell commands, doing
+arithmetic, etc.
+
+GNU M4 is a macro processor in the sense that it copies its input to the
+output expanding macros as it goes. Macros are either builtin or
+user-defined and can take any number of arguments. Besides just doing macro
+expansion, m4 has builtin functions for including named files, running UNIX
+commands, doing integer arithmetic, manipulating text in various ways,
+recursion etc... m4 can be used either as a front-end to a compiler or as a
+macro processor in its own right.")
+ (license gpl3+)
+ (home-page "http://www.gnu.org/software/m4/")))
diff --git a/gnu/packages/mailutils.scm b/gnu/packages/mailutils.scm
new file mode 100644
index 0000000000..f6d46aaf34
--- /dev/null
+++ b/gnu/packages/mailutils.scm
@@ -0,0 +1,106 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages mailutils)
+ #:use-module (distro)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages gnutls)
+ #:use-module (gnu packages gdbm)
+ #:use-module (gnu packages guile)
+ #:use-module (gnu packages ncurses)
+ #:use-module (gnu packages readline)
+ #:use-module (gnu packages dejagnu)
+ #:use-module (gnu packages m4)
+ #:use-module (gnu packages texinfo)
+ #:use-module (gnu packages mysql)
+ #:use-module (gnu packages autotools)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public mailutils
+ (package
+ (name "mailutils")
+ (version "2.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/mailutils/mailutils-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "0szbqa12zqzldqyw97lxqax3ja2adis83i7brdfsxmrfw68iaf65"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(;; TODO: Add `--with-sql'.
+ #:patches (list (assoc-ref %build-inputs
+ "patch/gets-undeclared"))
+ #:phases (alist-cons-before
+ 'build 'pre-build
+ (lambda _
+ ;; Use Guile 2.0's public API.
+ (substitute* "libmu_scm/mu_message.c"
+ (("scm_i_string_length")
+ "scm_c_string_length"))
+
+ ;; This file should be generated to use the right
+ ;; value of $(libdir) et al.
+ (delete-file "libmu_scm/mailutils.scm")
+
+ ;; Use the right file name for `cat'.
+ (substitute* "testsuite/lib/mailutils.exp"
+ (("/bin/cat")
+ (which "cat"))))
+ %standard-phases)
+ #:parallel-tests? #f))
+ (inputs
+ `(("dejagnu" ,dejagnu)
+ ("m4" ,m4)
+ ("texinfo" ,texinfo)
+ ("guile" ,guile-2.0)
+ ("gnutls" ,gnutls)
+ ("ncurses" ,ncurses)
+ ("readline" ,readline)
+ ("linux-pam" ,linux-pam)
+ ("libtool" ,libtool)
+ ("gdbm" ,gdbm)
+ ("patch/gets-undeclared"
+ ,(search-patch "m4-gets-undeclared.patch"))))
+ (home-page "http://www.gnu.org/software/mailutils/")
+ (synopsis "A rich and powerful protocol-independent mail framework")
+ (description
+ "GNU Mailutils is a rich and powerful protocol-independent mail
+framework. It contains a series of useful mail libraries, clients, and
+servers. These are the primary mail utilities for the GNU system. The
+central library is capable of handling electronic mail in various
+mailbox formats and protocols, both local and remote. Specifically,
+this project contains a POP3 server, an IMAP4 server, and a Sieve mail
+filter. It also provides a POSIX `mailx' client, and a collection of
+other handy tools.
+
+The GNU Mailutils libraries supply an ample set of primitives for
+handling electronic mail in programs written in C, C++, Python or
+Scheme.
+
+The utilities provided by Mailutils include imap4d and pop3d mail
+servers, mail reporting utility comsatd, general-purpose mail delivery
+agent maidag, mail filtering program sieve, and an implementation of MH
+message handling system.")
+ (license
+ ;; Libraries are under LGPLv3+, and programs under GPLv3+.
+ (list gpl3+ lgpl3+))))
diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
new file mode 100644
index 0000000000..20679d2244
--- /dev/null
+++ b/gnu/packages/make-bootstrap.scm
@@ -0,0 +1,562 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages make-bootstrap)
+ #:use-module (guix utils)
+ #:use-module (guix packages)
+ #:use-module (guix licenses)
+ #:use-module (guix build-system trivial)
+ #:use-module (guix build-system gnu)
+ #:use-module ((distro) #:select (search-patch))
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages gawk)
+ #:use-module (gnu packages guile)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages multiprecision)
+ #:use-module (ice-9 match)
+ #:use-module (srfi srfi-1)
+ #:export (%bootstrap-binaries-tarball
+ %binutils-bootstrap-tarball
+ %glibc-bootstrap-tarball
+ %gcc-bootstrap-tarball
+ %guile-bootstrap-tarball
+ %bootstrap-tarballs))
+
+;;; Commentary:
+;;;
+;;; This modules provides tools to build tarballs of the "bootstrap binaries"
+;;; used in (gnu packages bootstrap). These statically-linked binaries are
+;;; taken for granted and used as the root of the whole bootstrap procedure.
+;;;
+;;; Code:
+
+(define %glibc-for-bootstrap
+ ;; A libc whose `system' and `popen' functions looks for `sh' in $PATH,
+ ;; without nscd, and with static NSS modules.
+ (package (inherit glibc-final)
+ (arguments
+ (lambda (system)
+ (substitute-keyword-arguments ((package-arguments glibc-final) system)
+ ((#:patches patches)
+ `(cons (assoc-ref %build-inputs "patch/system")
+ ,patches))
+ ((#:configure-flags flags)
+ ;; Arrange so that getaddrinfo & co. do not contact the nscd,
+ ;; and can use statically-linked NSS modules.
+ `(cons* "--disable-nscd" "--disable-build-nscd"
+ "--enable-static-nss"
+ ,flags)))))
+ (inputs
+ `(("patch/system" ,(search-patch "glibc-bootstrap-system.patch"))
+ ,@(package-inputs glibc-final)))))
+
+(define %standard-inputs-with-relocatable-glibc
+ ;; Standard inputs with the above libc and corresponding GCC.
+ `(("libc", %glibc-for-bootstrap)
+ ("gcc" ,(package-with-explicit-inputs
+ gcc-4.7
+ `(("libc",%glibc-for-bootstrap)
+ ,@(alist-delete "libc" %final-inputs))
+ (current-source-location)))
+ ,@(fold alist-delete %final-inputs '("libc" "gcc"))))
+
+(define %bash-static
+ (static-package bash-light))
+
+(define %static-inputs
+ ;; Packages that are to be used as %BOOTSTRAP-INPUTS.
+ (let ((coreutils (package (inherit coreutils)
+ (arguments
+ `(#:configure-flags
+ '("--disable-nls"
+ "--disable-silent-rules"
+ "--enable-no-install-program=stdbuf,libstdbuf.so"
+ "CFLAGS=-Os -g0" ; smaller, please
+ "LDFLAGS=-static -pthread")
+ #:tests? #f ; signal-related Gnulib tests fail
+ ,@(package-arguments coreutils)))
+
+ ;; Remove optional dependencies such as GMP.
+ (inputs `(,(assoc "perl" (package-inputs coreutils))))))
+ (bzip2 (package (inherit bzip2)
+ (arguments
+ (substitute-keyword-arguments (package-arguments bzip2)
+ ((#:phases phases)
+ `(alist-cons-before
+ 'build 'dash-static
+ (lambda _
+ (substitute* "Makefile"
+ (("^LDFLAGS[[:blank:]]*=.*$")
+ "LDFLAGS = -static")))
+ ,phases))))))
+ (xz (package (inherit xz)
+ (arguments
+ `(#:strip-flags '("--strip-all")
+ #:phases (alist-cons-before
+ 'configure 'static-executable
+ (lambda _
+ ;; Ask Libtool for a static executable.
+ (substitute* "src/xz/Makefile.in"
+ (("^xz_LDADD =")
+ "xz_LDADD = -all-static")))
+ %standard-phases)))))
+ (gawk (package (inherit gawk)
+ (arguments
+ (lambda (system)
+ `(#:patches (list (assoc-ref %build-inputs "patch/sh"))
+ ,@(substitute-keyword-arguments
+ ((package-arguments gawk) system)
+ ((#:phases phases)
+ `(alist-cons-before
+ 'configure 'no-export-dynamic
+ (lambda _
+ ;; Since we use `-static', remove
+ ;; `-export-dynamic'.
+ (substitute* "configure"
+ (("-export-dynamic") "")))
+ ,phases))))))
+ (inputs `(("patch/sh" ,(search-patch "gawk-shell.patch"))))))
+ (finalize (lambda (p)
+ (static-package (package-with-explicit-inputs
+ p
+ %standard-inputs-with-relocatable-glibc)
+ (current-source-location)))))
+ `(,@(map (match-lambda
+ ((name package)
+ (list name (finalize package))))
+ `(("tar" ,tar)
+ ("gzip" ,gzip)
+ ("bzip2" ,bzip2)
+ ("xz" ,xz)
+ ("patch" ,patch)
+ ("coreutils" ,coreutils)
+ ("sed" ,sed)
+ ("grep" ,grep)
+ ("gawk" ,gawk)))
+ ("bash" ,%bash-static)
+ ;; ("ld-wrapper" ,ld-wrapper)
+ ;; ("binutils" ,binutils-final)
+ ;; ("gcc" ,gcc-final)
+ ;; ("libc" ,glibc-final)
+ )))
+
+(define %static-binaries
+ (package
+ (name "static-binaries")
+ (version "0")
+ (build-system trivial-build-system)
+ (source #f)
+ (inputs %static-inputs)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (ice-9 ftw)
+ (ice-9 match)
+ (srfi srfi-1)
+ (srfi srfi-26)
+ (guix build utils))
+
+ (let ()
+ (define (directory-contents dir)
+ (map (cut string-append dir "/" <>)
+ (scandir dir (negate (cut member <> '("." ".."))))))
+
+ (define (copy-directory source destination)
+ (for-each (lambda (file)
+ (format #t "copying ~s...~%" file)
+ (copy-file file
+ (string-append destination "/"
+ (basename file))))
+ (directory-contents source)))
+
+ (let* ((out (assoc-ref %outputs "out"))
+ (bin (string-append out "/bin")))
+ (mkdir-p bin)
+
+ ;; Copy Coreutils binaries.
+ (let* ((coreutils (assoc-ref %build-inputs "coreutils"))
+ (source (string-append coreutils "/bin")))
+ (copy-directory source bin))
+
+ ;; For the other inputs, copy just one binary, which has the
+ ;; same name as the input.
+ (for-each (match-lambda
+ ((name . dir)
+ (let ((source (string-append dir "/bin/" name)))
+ (format #t "copying ~s...~%" source)
+ (copy-file source
+ (string-append bin "/" name)))))
+ (alist-delete "coreutils" %build-inputs))
+
+ ;; But of course, there are exceptions to this rule.
+ (let ((grep (assoc-ref %build-inputs "grep")))
+ (copy-file (string-append grep "/bin/fgrep")
+ (string-append bin "/fgrep"))
+ (copy-file (string-append grep "/bin/egrep")
+ (string-append bin "/egrep")))
+
+ ;; Clear references to the store path.
+ (for-each remove-store-references
+ (directory-contents bin))
+
+ (with-directory-excursion bin
+ ;; Programs such as Perl's build system want these aliases.
+ (symlink "bash" "sh")
+ (symlink "gawk" "awk"))
+
+ #t)))))
+ (synopsis "Statically-linked bootstrap binaries")
+ (description
+ "Binaries used to bootstrap the distribution.")
+ (license #f)
+ (home-page #f)))
+
+(define %binutils-static
+ ;; Statically-linked Binutils.
+ (package (inherit binutils)
+ (name "binutils-static")
+ (arguments
+ `(#:configure-flags '("--disable-gold" "--with-lib-path=/no-ld-lib-path")
+ #:strip-flags '("--strip-all")
+ #:phases (alist-cons-before
+ 'configure 'all-static
+ (lambda _
+ ;; The `-all-static' libtool flag can only be passed
+ ;; after `configure', since configure tests don't use
+ ;; libtool, and only for executables built with libtool.
+ (substitute* '("binutils/Makefile.in"
+ "gas/Makefile.in"
+ "ld/Makefile.in")
+ (("^LDFLAGS =(.*)$" line)
+ (string-append line
+ "\nAM_LDFLAGS = -static -all-static\n"))))
+ %standard-phases)))))
+
+(define %binutils-static-stripped
+ ;; The subset of Binutils that we need.
+ (package (inherit %binutils-static)
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+
+ (setvbuf (current-output-port) _IOLBF)
+ (let* ((in (assoc-ref %build-inputs "binutils"))
+ (out (assoc-ref %outputs "out"))
+ (bin (string-append out "/bin")))
+ (mkdir-p bin)
+ (for-each (lambda (file)
+ (let ((target (string-append bin "/" file)))
+ (format #t "copying `~a'...~%" file)
+ (copy-file (string-append in "/bin/" file)
+ target)
+ (remove-store-references target)))
+ '("ar" "as" "ld" "nm" "objcopy" "objdump"
+ "ranlib" "readelf" "size" "strings" "strip"))
+ #t))))
+ (inputs `(("binutils" ,%binutils-static)))))
+
+(define %glibc-stripped
+ ;; GNU libc's essential shared libraries, dynamic linker, and headers,
+ ;; with all references to store directories stripped. As a result,
+ ;; libc.so is unusable and need to be patched for proper relocation.
+ (let ((glibc %glibc-for-bootstrap))
+ (package (inherit glibc)
+ (name "glibc-stripped")
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+
+ (setvbuf (current-output-port) _IOLBF)
+ (let* ((out (assoc-ref %outputs "out"))
+ (libdir (string-append out "/lib"))
+ (incdir (string-append out "/include"))
+ (libc (assoc-ref %build-inputs "libc"))
+ (linux (assoc-ref %build-inputs "linux-headers")))
+ (mkdir-p libdir)
+ (for-each (lambda (file)
+ (let ((target (string-append libdir "/"
+ (basename file))))
+ (copy-file file target)
+ (remove-store-references target)))
+ (find-files (string-append libc "/lib")
+ "^(crt.*|ld.*|lib(c|m|dl|rt|pthread|nsl|util).*\\.so(\\..*)?|libc_nonshared\\.a)$"))
+
+ (copy-recursively (string-append libc "/include") incdir)
+
+ ;; Copy some of the Linux-Libre headers that glibc headers
+ ;; refer to.
+ (mkdir (string-append incdir "/linux"))
+ (for-each (lambda (file)
+ (copy-file (string-append linux "/include/linux/" file)
+ (string-append incdir "/linux/"
+ (basename file))))
+ '("limits.h" "errno.h" "socket.h" "kernel.h"
+ "sysctl.h" "param.h" "ioctl.h" "types.h"
+ "posix_types.h" "stddef.h"))
+
+ (copy-recursively (string-append linux "/include/asm")
+ (string-append incdir "/asm"))
+ (copy-recursively (string-append linux "/include/asm-generic")
+ (string-append incdir "/asm-generic"))
+ #t))))
+ (inputs `(("libc" ,glibc)
+ ("linux-headers" ,linux-libre-headers))))))
+
+(define %gcc-static
+ ;; A statically-linked GCC, with stripped-down functionality.
+ (package-with-explicit-inputs
+ (package (inherit gcc-final)
+ (name "gcc-static")
+ (arguments
+ (lambda (system)
+ `(#:modules ((guix build utils)
+ (guix build gnu-build-system)
+ (srfi srfi-1)
+ (srfi srfi-26)
+ (ice-9 regex))
+ ,@(substitute-keyword-arguments ((package-arguments gcc-final) system)
+ ((#:guile _) #f)
+ ((#:implicit-inputs? _) #t)
+ ((#:configure-flags flags)
+ `(append (list
+ "--disable-shared"
+ "--disable-plugin"
+ "--enable-languages=c"
+ "--disable-libmudflap"
+ "--disable-libgomp"
+ "--disable-libssp"
+ "--disable-libquadmath"
+ "--disable-decimal-float")
+ (remove (cut string-match "--(.*plugin|enable-languages)" <>)
+ ,flags)))
+ ((#:make-flags flags)
+ `(cons "BOOT_LDFLAGS=-static" ,flags))))))
+ (inputs `(("gmp-source" ,(package-source gmp))
+ ("mpfr-source" ,(package-source mpfr))
+ ("mpc-source" ,(package-source mpc))
+ ("binutils" ,binutils-final)
+ ,@(package-inputs gcc-4.7))))
+ %standard-inputs-with-relocatable-glibc))
+
+(define %gcc-stripped
+ ;; The subset of GCC files needed for bootstrap.
+ (package (inherit gcc-4.7)
+ (name "gcc-stripped")
+ (build-system trivial-build-system)
+ (source #f)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (srfi srfi-1)
+ (srfi srfi-26)
+ (guix build utils))
+
+ (setvbuf (current-output-port) _IOLBF)
+ (let* ((out (assoc-ref %outputs "out"))
+ (bindir (string-append out "/bin"))
+ (libdir (string-append out "/lib"))
+ (libexecdir (string-append out "/libexec"))
+ (gcc (assoc-ref %build-inputs "gcc")))
+ (copy-recursively (string-append gcc "/bin") bindir)
+ (for-each remove-store-references
+ (find-files bindir ".*"))
+
+ (copy-recursively (string-append gcc "/lib") libdir)
+ (for-each remove-store-references
+ (remove (cut string-suffix? ".h" <>)
+ (find-files libdir ".*")))
+
+ (copy-recursively (string-append gcc "/libexec")
+ libexecdir)
+ (for-each remove-store-references
+ (find-files libexecdir ".*"))
+ #t))))
+ (inputs `(("gcc" ,%gcc-static)))))
+
+(define %guile-static
+ ;; A statically-linked Guile that is relocatable--i.e., it can search
+ ;; .scm and .go files relative to its installation directory, rather
+ ;; than in hard-coded configure-time paths.
+ (let ((guile (package (inherit guile-2.0)
+ (inputs
+ `(("patch/relocatable"
+ ,(search-patch "guile-relocatable.patch"))
+ ("patch/utf8"
+ ,(search-patch "guile-default-utf8.patch"))
+ ,@(package-inputs guile-2.0)))
+ (arguments
+ `(;; When `configure' checks for ltdl availability, it
+ ;; doesn't try to link using libtool, and thus fails
+ ;; because of a missing -ldl. Work around that.
+ #:configure-flags '("LDFLAGS=-ldl")
+
+ #:phases (alist-cons-before
+ 'configure 'static-guile
+ (lambda _
+ (substitute* "libguile/Makefile.in"
+ ;; Create a statically-linked `guile'
+ ;; executable.
+ (("^guile_LDFLAGS =")
+ "guile_LDFLAGS = -all-static")
+
+ ;; Add `-ldl' *after* libguile-2.0.la.
+ (("^guile_LDADD =(.*)$" _ ldadd)
+ (string-append "guile_LDADD = "
+ (string-trim-right ldadd)
+ " -ldl\n"))))
+ %standard-phases)
+
+ ;; Allow Guile to be relocated, as is needed during
+ ;; bootstrap.
+ #:patches
+ (list (assoc-ref %build-inputs "patch/relocatable")
+ (assoc-ref %build-inputs "patch/utf8"))
+
+ ;; There are uses of `dynamic-link' in
+ ;; {foreign,coverage}.test that don't fly here.
+ #:tests? #f)))))
+ (package-with-explicit-inputs (static-package guile)
+ %standard-inputs-with-relocatable-glibc
+ (current-source-location))))
+
+(define %guile-static-stripped
+ ;; A stripped static Guile binary, for use during bootstrap.
+ (package (inherit %guile-static)
+ (name "guile-static-stripped")
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (let ()
+ (use-modules (guix build utils))
+
+ (let ((in (assoc-ref %build-inputs "guile"))
+ (out (assoc-ref %outputs "out")))
+ (mkdir-p (string-append out "/share/guile/2.0"))
+ (copy-recursively (string-append in "/share/guile/2.0")
+ (string-append out "/share/guile/2.0"))
+
+ (mkdir-p (string-append out "/lib/guile/2.0/ccache"))
+ (copy-recursively (string-append in "/lib/guile/2.0/ccache")
+ (string-append out "/lib/guile/2.0/ccache"))
+
+ (mkdir (string-append out "/bin"))
+ (copy-file (string-append in "/bin/guile")
+ (string-append out "/bin/guile"))
+ (remove-store-references (string-append out "/bin/guile"))
+ #t))))
+ (inputs `(("guile" ,%guile-static)))))
+
+(define (tarball-package pkg)
+ "Return a package containing a tarball of PKG."
+ (package (inherit pkg)
+ (location (source-properties->location (current-source-location)))
+ (name (string-append (package-name pkg) "-tarball"))
+ (build-system trivial-build-system)
+ (inputs `(("tar" ,tar)
+ ("xz" ,xz)
+ ("input" ,pkg)))
+ (arguments
+ (lambda (system)
+ (let ((name (package-name pkg))
+ (version (package-version pkg)))
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (let ((out (assoc-ref %outputs "out"))
+ (input (assoc-ref %build-inputs "input"))
+ (tar (assoc-ref %build-inputs "tar"))
+ (xz (assoc-ref %build-inputs "xz")))
+ (mkdir out)
+ (set-path-environment-variable "PATH" '("bin") (list tar xz))
+ (with-directory-excursion input
+ (zero? (system* "tar" "cJvf"
+ (string-append out "/"
+ ,name "-" ,version
+ "-" ,system ".tar.xz")
+ ".")))))))))))
+
+(define %bootstrap-binaries-tarball
+ ;; A tarball with the statically-linked bootstrap binaries.
+ (tarball-package %static-binaries))
+
+(define %binutils-bootstrap-tarball
+ ;; A tarball with the statically-linked Binutils programs.
+ (tarball-package %binutils-static-stripped))
+
+(define %glibc-bootstrap-tarball
+ ;; A tarball with GNU libc's shared libraries, dynamic linker, and headers.
+ (tarball-package %glibc-stripped))
+
+(define %gcc-bootstrap-tarball
+ ;; A tarball with a dynamic-linked GCC and its headers.
+ (tarball-package %gcc-stripped))
+
+(define %guile-bootstrap-tarball
+ ;; A tarball with the statically-linked, relocatable Guile.
+ (tarball-package %guile-static-stripped))
+
+(define %bootstrap-tarballs
+ ;; A single derivation containing all the bootstrap tarballs, for
+ ;; convenience.
+ (package
+ (name "bootstrap-tarballs")
+ (version "0")
+ (source #f)
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (let ((out (assoc-ref %outputs "out")))
+ (use-modules (guix build utils)
+ (ice-9 match)
+ (srfi srfi-26))
+
+ (setvbuf (current-output-port) _IOLBF)
+ (mkdir out)
+ (chdir out)
+ (for-each (match-lambda
+ ((name . directory)
+ (for-each (lambda (file)
+ (format #t "~a -> ~a~%" file out)
+ (symlink file (basename file)))
+ (find-files directory "\\.tar\\."))))
+ %build-inputs)
+ #t)))
+ (inputs `(("guile-tarball" ,%guile-bootstrap-tarball)
+ ("gcc-tarball" ,%gcc-bootstrap-tarball)
+ ("binutils-tarball" ,%binutils-bootstrap-tarball)
+ ("glibc-tarball" ,%glibc-bootstrap-tarball)
+ ("coreutils&co-tarball" ,%bootstrap-binaries-tarball)))
+ (synopsis #f)
+ (description #f)
+ (home-page #f)
+ (license gpl3+)))
+
+;;; make-bootstrap.scm ends here
diff --git a/gnu/packages/mit-krb5.scm b/gnu/packages/mit-krb5.scm
new file mode 100644
index 0000000000..4b30a7ca17
--- /dev/null
+++ b/gnu/packages/mit-krb5.scm
@@ -0,0 +1,69 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Andreas Enge <andreas@enge.fr>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages mit-krb5)
+ #:use-module (distro)
+ #:use-module (gnu packages bison)
+ #:use-module (gnu packages perl)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public mit-krb5
+ (package
+ (name "mit-krb5")
+ (version "1.11")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://web.mit.edu/kerberos/www/dist/krb5/"
+ version
+ "/krb5-" version
+ "-signed.tar"))
+ (sha256 (base32
+ "0lc6lxb98qzg4x01lppq700vkr1ax9rld09znahrinwqnf9zndzy"))))
+ (build-system gnu-build-system)
+ (inputs `(("bison" ,bison)
+ ("perl" ,perl)
+ ))
+ (arguments
+ (lambda (system)
+ `(#:tests? #f
+ #:phases
+ (alist-replace
+ 'unpack
+ (lambda* (#:key source #:allow-other-keys)
+ (system* "echo" source)
+ (let ((inner
+ (substring source
+ (string-index-right source #\k)
+ (string-index-right source #\-))))
+ (system* "echo" inner)
+ (and (zero? (system* "tar" "xvf" source))
+ (zero? (system* "tar" "xvf" (string-append inner ".tar.gz")))
+ (chdir inner)
+ (chdir "src"))))
+ %standard-phases))))
+ (synopsis "MIT Kerberos 5")
+ (description
+ "Massachusetts Institute of Technology implementation of Kerberos.
+Kerberos is a network authentication protocol designed to provide strong
+authentication for client/server applications by using secret-key cryptography.")
+ (license (bsd-style "file://NOTICE"
+ "See NOTICE in the distribution."))
+ (home-page "http://web.mit.edu/kerberos/")))
diff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scm
new file mode 100644
index 0000000000..f05fe1994e
--- /dev/null
+++ b/gnu/packages/multiprecision.scm
@@ -0,0 +1,124 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages multiprecision)
+ #:use-module (guix licenses)
+ #:use-module (distro)
+ #:use-module (gnu packages m4)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu))
+
+(define-public gmp
+ (package
+ (name "gmp")
+ (version "5.1.0")
+ (source (origin
+ (method url-fetch)
+ (uri
+ ;; Note: this version is not available from GNU mirrors
+ ;; because it was made with an Automake affected by
+ ;; CVE-2012-3386.
+ (string-append "ftp://ftp.gmplib.org/pub/gmp-"
+ version "/gmp-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "15n7xxgasbxdch8ii8z9ic6fxc2ysk3q8iavf55abjp5iylspnfz"))))
+ (build-system gnu-build-system)
+ (native-inputs `(("m4" ,m4)))
+ (arguments `(#:configure-flags
+ '(;; Build a "fat binary", with routines for several
+ ;; sub-architectures.
+ "--enable-fat"
+ "--enable-cxx")))
+ (synopsis "GMP, the GNU multiple precision arithmetic library")
+ (description
+ "GMP is a free library for arbitrary precision arithmetic, operating on
+signed integers, rational numbers, and floating point numbers. There is no
+practical limit to the precision except the ones implied by the available
+memory in the machine GMP runs on. GMP has a rich set of functions, and the
+functions have a regular interface.
+
+The main target applications for GMP are cryptography applications and
+research, Internet security applications, algebra systems, computational
+algebra research, etc.
+
+GMP is carefully designed to be as fast as possible, both for small operands
+and for huge operands. The speed is achieved by using fullwords as the basic
+arithmetic type, by using fast algorithms, with highly optimised assembly
+code for the most common inner loops for a lot of CPUs, and by a general
+emphasis on speed.
+
+GMP is faster than any other bignum library. The advantage for GMP increases
+with the operand sizes for many operations, since GMP uses asymptotically
+faster algorithms.")
+ (license lgpl3+)
+ (home-page "http://gmplib.org/")))
+
+(define-public mpfr
+ (package
+ (name "mpfr")
+ (version "3.1.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/mpfr/mpfr-" version
+ ".tar.xz"))
+ (sha256 (base32
+ "0ym1ylcq803n52qrggxqmkz66gbn8ncc3ybawal31v5y5p1srma9"))))
+ (build-system gnu-build-system)
+ (inputs `(("gmp" ,gmp)))
+ (synopsis "GNU MPFR, a library for multiple-precision floating-point
+arithmetic")
+ (description
+ "The GNU MPFR library is a C library for multiple-precision
+floating-point computations with correct rounding. MPFR is based on the GMP
+multiple-precision library.
+
+The main goal of MPFR is to provide a library for multiple-precision
+floating-point computation which is both efficient and has a well-defined
+semantics. It copies the good ideas from the ANSI/IEEE-754 standard for
+double-precision floating-point arithmetic (53-bit mantissa).")
+ (license lgpl3+)
+ (home-page "http://www.mpfr.org/")))
+
+(define-public mpc
+ (package
+ (name "mpc")
+ (version "1.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://gnu/mpc/mpc-" version ".tar.gz"))
+ (sha256 (base32
+ "1zq0fidp1jii2j5k5n9hmx55a6wwid33gjzhimvxq9d5zrf82npd"))))
+ (build-system gnu-build-system)
+ (inputs `(("gmp" ,gmp)
+ ("mpfr" ,mpfr)))
+ (synopsis "GNU MPC, a library for multiprecision complex arithmetic
+with exact rounding")
+ (description
+ "GNU MPC is a C library for the arithmetic of complex numbers with
+arbitrarily high precision and correct rounding of the result. It extends
+the principles of the IEEE-754 standard for fixed precision real floating
+point numbers to complex numbers, providing well-defined semantics for
+every operation. At the same time, speed of operation at high precision
+is a major design goal. The library is built upon and follows the same
+principles as GNU MPFR.")
+ (license lgpl3+)
+ (home-page "http://mpc.multiprecision.org/")))
diff --git a/gnu/packages/mysql.scm b/gnu/packages/mysql.scm
new file mode 100644
index 0000000000..517f65610e
--- /dev/null
+++ b/gnu/packages/mysql.scm
@@ -0,0 +1,87 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages mysql)
+ #:use-module (distro)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages openssl)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages ncurses)
+ #:use-module ((guix licenses) #:select (gpl2))
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public mysql
+ (package
+ (name "mysql")
+ (version "5.1.54")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://downloads.mysql.com/archives/mysql-5.1/mysql-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "07xbnwk7h1xya8s6dw34nrv7ampzag8l0l1szd2pc9zyqkzhydw4"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("procps" ,procps)
+ ("openssl" ,openssl)
+ ("perl" ,perl)
+ ("zlib" ,zlib)
+ ("ncurses" ,ncurses)))
+ (arguments
+ '(#:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (ice-9 ftw)) ; for "rm -rf"
+ #:phases (alist-cons-after
+ 'install 'clean-up
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Remove the 112 MiB of tests that get installed.
+ (let ((out (assoc-ref outputs "out")))
+ (define (rm-rf dir)
+ (file-system-fold (const #t) ; enter?
+ (lambda (file stat result) ; leaf
+ (delete-file file))
+ (const #t) ; down
+ (lambda (dir stat result) ; up
+ (rmdir dir))
+ (const #t)
+ (lambda (file stat errno result)
+ (format (current-error-port)
+ "error: ~a: ~a~%"
+ file (strerror errno)))
+ #t
+ (string-append out "/" dir)))
+ (rm-rf "mysql-test")
+ (rm-rf "sql-bench")
+
+ ;; Compress the 14 MiB Info file.
+ (zero?
+ (system* "gzip" "--best"
+ (string-append out "/share/info/mysql.info")))))
+ %standard-phases)))
+ (home-page "http://www.mysql.com/")
+ (synopsis "A fast, easy to use, and popular database")
+ (description
+ "MySQL is a fast, reliable, and easy to use relational database
+management system that supports the standardized Structured Query
+Language.")
+ (license gpl2)))
diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm
new file mode 100644
index 0000000000..09fbe7f168
--- /dev/null
+++ b/gnu/packages/nano.scm
@@ -0,0 +1,52 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages nano)
+ #:use-module (guix licenses)
+ #:use-module ((gnu packages gettext)
+ #:renamer (symbol-prefix-proc 'guix:))
+ #:use-module (gnu packages ncurses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public nano
+ (package
+ (name "nano")
+ (version "2.2.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/nano/nano-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0yp6pid67k8h7394spzw0067fl2r7rxm2b6kfccg87g8nlry2s5y"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("gettext" ,guix:gettext)
+ ("ncurses" ,ncurses)))
+ (home-page "http://www.nano-editor.org/")
+ (synopsis
+ "A small, user-friendly console text editor")
+ (description
+ "GNU nano is designed to be a free replacement for the Pico text
+editor, part of the Pine email suite from The University of
+Washington. It aims to emulate Pico as closely as possible and perhaps
+include extra functionality.")
+ (license gpl3+))) ; some files are under GPLv2+ \ No newline at end of file
diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm
new file mode 100644
index 0000000000..1be2551a63
--- /dev/null
+++ b/gnu/packages/ncurses.scm
@@ -0,0 +1,128 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages ncurses)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu))
+
+(define-public ncurses
+ (let ((patch-makefile-phase
+ '(lambda _
+ (for-each patch-makefile-SHELL
+ (find-files "." "Makefile.in"))))
+ (configure-phase
+ '(lambda* (#:key inputs outputs configure-flags
+ #:allow-other-keys)
+ ;; The `ncursesw5-config' has a #!/bin/sh. We want to patch
+ ;; it to point to libc's embedded Bash, to avoid retaining a
+ ;; reference to the bootstrap Bash.
+ (let* ((libc (assoc-ref inputs "libc"))
+ (bash (string-append libc "/bin/bash"))
+ (out (assoc-ref outputs "out")))
+ (format #t "configure flags: ~s~%" configure-flags)
+ (zero? (apply system* bash "./configure"
+ (string-append "SHELL=" bash)
+ (string-append "CONFIG_SHELL=" bash)
+ (string-append "--prefix=" out)
+ configure-flags)))))
+ (post-install-phase
+ '(lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ ;; When building a wide-character (Unicode) build, create backward
+ ;; compatibility links from the the "normal" libraries to the
+ ;; wide-character libraries (e.g. libncurses.so to libncursesw.so).
+ (with-directory-excursion (string-append out "/lib")
+ (for-each (lambda (lib)
+ (define libw.a
+ (string-append "lib" lib "w.a"))
+ (define lib.a
+ (string-append "lib" lib ".a"))
+ (define libw.so.x
+ (string-append "lib" lib "w.so.5"))
+ (define lib.so.x
+ (string-append "lib" lib ".so.5"))
+ (define lib.so
+ (string-append "lib" lib ".so"))
+
+ (when (file-exists? libw.a)
+ (format #t "creating symlinks for `lib~a'~%" lib)
+ (symlink libw.a lib.a)
+ (symlink libw.so.x lib.so.x)
+ (false-if-exception (delete-file lib.so))
+ (call-with-output-file lib.so
+ (lambda (p)
+ (format p "INPUT (-l~aw)~%" lib)))))
+ '("curses" "ncurses" "form" "panel" "menu")))))))
+ (package
+ (name "ncurses")
+ (version "5.9")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/ncurses/ncurses-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0fsn7xis81za62afan0vvm38bvgzg5wfmv1m86flqcj0nj7jjilh"))))
+ (build-system gnu-build-system)
+ (arguments
+ (case-lambda
+ ((system)
+ `(#:configure-flags
+ `("--with-shared" "--without-debug" "--enable-widec"
+
+ ;; By default headers land in an `ncursesw' subdir, which is not
+ ;; what users expect.
+ ,(string-append "--includedir=" (assoc-ref %outputs "out")
+ "/include")
+
+ ;; C++ bindings fail to build on
+ ;; `i386-pc-solaris2.11' with GCC 3.4.3:
+ ;; <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6395191>.
+ ,,@(if (string=? system "i686-solaris")
+ '("--without-cxx-binding")
+ '()))
+ #:tests? #f ; no "check" target
+ #:phases (alist-cons-after
+ 'install 'post-install ,post-install-phase
+ (alist-cons-before
+ 'configure 'patch-makefile-SHELL
+ ,patch-makefile-phase
+ (alist-replace
+ 'configure
+ ,configure-phase
+ %standard-phases)))))
+ ((system cross-system)
+ (arguments cross-system))))
+ (self-native-input? #t)
+ (synopsis
+ "GNU Ncurses, a free software emulation of curses in SVR4 and more")
+ (description
+ "The Ncurses (new curses) library is a free software emulation of curses
+in System V Release 4.0, and more. It uses Terminfo format, supports pads
+and color and multiple highlights and forms characters and function-key
+mapping, and has all the other SYSV-curses enhancements over BSD Curses.
+
+The ncurses code was developed under GNU/Linux. It has been in use for some
+time with OpenBSD as the system curses library, and on FreeBSD and NetBSD as
+an external package. It should port easily to any ANSI/POSIX-conforming
+UNIX. It has even been ported to OS/2 Warp!")
+ (license x11)
+ (home-page "http://www.gnu.org/software/ncurses/"))))
diff --git a/gnu/packages/nettle.scm b/gnu/packages/nettle.scm
new file mode 100644
index 0000000000..6a0b6ef40a
--- /dev/null
+++ b/gnu/packages/nettle.scm
@@ -0,0 +1,60 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages nettle)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages m4))
+
+(define-public nettle
+ (package
+ (name "nettle")
+ (version "2.6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/nettle/nettle-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0mminj3fg0vba8qx4q6dbf0xz6fskamli7z2r8rci5xrcd7n5pv0"))))
+ (build-system gnu-build-system)
+ (inputs `(("m4" ,m4)))
+ (propagated-inputs `(("gmp" ,gmp)))
+ (home-page "http://www.lysator.liu.se/~nisse/nettle/")
+ (synopsis "GNU Nettle, a cryptographic library")
+ (description
+ "Nettle is a cryptographic library that is designed to fit easily
+in more or less any context: In crypto toolkits for object-oriented
+languages (C++, Python, Pike, ...), in applications like LSH or GNUPG,
+or even in kernel space. In most contexts, you need more than the basic
+cryptographic algorithms, you also need some way to keep track of
+available algorithms, their properties and variants. You often have
+some algorithm selection process, often dictated by a protocol you want
+to implement.
+
+And as the requirements of applications differ in subtle and not so
+subtle ways, an API that fits one application well can be a pain to use
+in a different context. And that is why there are so many different
+cryptographic libraries around. \nNettle tries to avoid this problem by
+doing one thing, the low-level crypto stuff, and providing a simple but
+general interface to it. In particular, Nettle doesn't do algorithm
+selection. It doesn't do memory allocation. It doesn't do any I/O.")
+ (license gpl2+)))
diff --git a/gnu/packages/openssl.scm b/gnu/packages/openssl.scm
new file mode 100644
index 0000000000..8c8ba4c668
--- /dev/null
+++ b/gnu/packages/openssl.scm
@@ -0,0 +1,68 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages openssl)
+ #:use-module (distro)
+ #:use-module (gnu packages perl)
+ #:use-module ((guix licenses) #:renamer (symbol-prefix-proc 'license:))
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public openssl
+ (package
+ (name "openssl")
+ (version "1.0.1c")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "ftp://ftp.openssl.org/source/openssl-" version
+ ".tar.gz"))
+ (sha256 (base32
+ "1gjy6a7d8nszi9wq8jdzx3cffn0nss23h3cw2ywlw4cb9v6v77ia"))))
+ (build-system gnu-build-system)
+ (inputs `(("perl" ,perl)))
+ (arguments
+ (lambda (system)
+ `(#:parallel-build? #f
+ #:parallel-tests? #f
+ #:test-target "test"
+ #:phases
+ (alist-replace
+ 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (zero?
+ (system* "./config"
+ "shared" ; build shared libraries
+ "--libdir=lib"
+ (string-append "--prefix=" out)))))
+ (alist-cons-before
+ 'patch-source-shebangs 'patch-tests
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((bash (assoc-ref inputs "bash")))
+ (substitute* (find-files "test" ".*")
+ (("/bin/sh")
+ (string-append bash "/bin/bash"))
+ (("/bin/rm")
+ "rm"))))
+ %standard-phases)))))
+ (synopsis "OpenSSL, an SSL/TLS implementation")
+ (description
+ "OpenSSL is an implementation of SSL/TLS")
+ (license license:openssl)
+ (home-page "http://www.openssl.org/")))
diff --git a/gnu/packages/patches/bigloo-gc-shebangs.patch b/gnu/packages/patches/bigloo-gc-shebangs.patch
new file mode 100644
index 0000000000..07af261887
--- /dev/null
+++ b/gnu/packages/patches/bigloo-gc-shebangs.patch
@@ -0,0 +1,17 @@
+Patch shebangs in source that gets unpacked by `configure'.
+
+--- bigloo3.9a/gc/install-gc-7.2d 2013-01-14 15:24:01.000000000 +0100
++++ bigloo3.9a/gc/install-gc-7.2d 2013-01-14 15:23:51.000000000 +0100
+@@ -29,9 +29,11 @@ fi
+ # untar the two versions of the GC
+ $tar xfz $src -C ../gc || (echo "$tar xfz $src failed"; exit 1)
+ /bin/rm -rf "../gc/$gc"_fth
++find ../gc/gc-7.2 -perm /111 -type f | xargs sed -i -e"s|/bin/sh|`type -P bash`|g"
+ mv ../gc/gc-7.2 "../gc/$gc"_fth || (echo "mv gc-7.2 failed"; exit 1)
+
+ $tar xfz $src -C ../gc || (echo "$tar xfz $src failed"; exit 1)
++find ../gc/gc-7.2 -perm /111 -type f | xargs sed -i -e"s|/bin/sh|`type -P bash`|g"
+ mv ../gc/gc-7.2 "../gc/$gc"
+
+ # general Bigloo patch
+
diff --git a/gnu/packages/patches/binutils-ld-new-dtags.patch b/gnu/packages/patches/binutils-ld-new-dtags.patch
new file mode 100644
index 0000000000..5f7a03fc38
--- /dev/null
+++ b/gnu/packages/patches/binutils-ld-new-dtags.patch
@@ -0,0 +1,16 @@
+Turn on --enable-new-dtags by default to make the linker set RUNPATH
+instead of RPATH on binaries. This is important because RUNPATH can
+be overriden using LD_LIBRARY_PATH at runtime.
+
+Patch from Nixpkgs by Eelco Dolstra <eelco.dolstra@logicblox.com>.
+
+--- binutils/ld/ldmain.c
++++ binutils/ld/ldmain.c
+@@ -296,6 +296,7 @@ main (int argc, char **argv)
+
+ link_info.allow_undefined_version = TRUE;
+ link_info.keep_memory = TRUE;
++ link_info.new_dtags = TRUE;
+ link_info.combreloc = TRUE;
+ link_info.strip_discarded = TRUE;
+ link_info.callbacks = &link_callbacks;
diff --git a/gnu/packages/patches/cpio-gets-undeclared.patch b/gnu/packages/patches/cpio-gets-undeclared.patch
new file mode 100644
index 0000000000..bc34de6455
--- /dev/null
+++ b/gnu/packages/patches/cpio-gets-undeclared.patch
@@ -0,0 +1,45 @@
+This patch is needed to allow builds with newer versions of
+the GNU libc (2.16+).
+
+The upstream fix was:
+
+ commit 66712c23388e93e5c518ebc8515140fa0c807348
+ Author: Eric Blake <eblake@redhat.com>
+ Date: Thu Mar 29 13:30:41 2012 -0600
+
+ stdio: don't assume gets any more
+
+ Gnulib intentionally does not have a gets module, and now that C11
+ and glibc have dropped it, we should be more proactive about warning
+ any user on a platform that still has a declaration of this dangerous
+ interface.
+
+ * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets
+ support.
+ * modules/stdio (Makefile.am): Likewise.
+ * lib/stdio-read.c (gets): Likewise.
+ * tests/test-stdio-c++.cc: Likewise.
+ * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment.
+ * lib/stdio.in.h (gets): Make warning occur in more places.
+ * doc/posix-functions/gets.texi (gets): Update documentation.
+ Reported by Christer Solskogen.
+
+ Signed-off-by: Eric Blake <eblake@redhat.com>
+
+This patch just gets rid of the offending part.
+
+--- cpio-2.11/gnu/stdio.in.h-orig 2012-11-25 22:17:06.000000000 +0400
++++ cpio-2.11/gnu/stdio.in.h 2012-11-25 22:18:36.000000000 +0400
+@@ -135,12 +135,6 @@
+ "use gnulib module fflush for portable POSIX compliance");
+ #endif
+
+-/* It is very rare that the developer ever has full control of stdin,
+- so any use of gets warrants an unconditional warning. Assume it is
+- always declared, since it is required by C89. */
+-#undef gets
+-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+-
+ #if @GNULIB_FOPEN@
+ # if @REPLACE_FOPEN@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
diff --git a/gnu/packages/patches/diffutils-gets-undeclared.patch b/gnu/packages/patches/diffutils-gets-undeclared.patch
new file mode 100644
index 0000000000..b6cdc77caa
--- /dev/null
+++ b/gnu/packages/patches/diffutils-gets-undeclared.patch
@@ -0,0 +1,71 @@
+This patch is needed to allow builds with newer versions of
+the GNU libc (2.16+).
+
+
+commit 66712c23388e93e5c518ebc8515140fa0c807348
+Author: Eric Blake <eblake@redhat.com>
+Date: Thu Mar 29 13:30:41 2012 -0600
+
+ stdio: don't assume gets any more
+
+ Gnulib intentionally does not have a gets module, and now that C11
+ and glibc have dropped it, we should be more proactive about warning
+ any user on a platform that still has a declaration of this dangerous
+ interface.
+
+ * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets
+ support.
+ * modules/stdio (Makefile.am): Likewise.
+ * lib/stdio-read.c (gets): Likewise.
+ * tests/test-stdio-c++.cc: Likewise.
+ * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment.
+ * lib/stdio.in.h (gets): Make warning occur in more places.
+ * doc/posix-functions/gets.texi (gets): Update documentation.
+ Reported by Christer Solskogen.
+
+ Signed-off-by: Eric Blake <eblake@redhat.com>
+
+diff --git a/lib/stdio.in.h b/lib/stdio.in.h
+index aa7b599..c377b6e 100644
+--- a/lib/stdio.in.h
++++ b/lib/stdio.in.h
+@@ -698,22 +698,11 @@ _GL_WARN_ON_USE (getline, "getline is unportable - "
+ # endif
+ #endif
+
+-#if @GNULIB_GETS@
+-# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+-# undef gets
+-# define gets rpl_gets
+-# endif
+-_GL_FUNCDECL_RPL (gets, char *, (char *s) _GL_ARG_NONNULL ((1)));
+-_GL_CXXALIAS_RPL (gets, char *, (char *s));
+-# else
+-_GL_CXXALIAS_SYS (gets, char *, (char *s));
+-# undef gets
+-# endif
+-_GL_CXXALIASWARN (gets);
+ /* It is very rare that the developer ever has full control of stdin,
+- so any use of gets warrants an unconditional warning. Assume it is
+- always declared, since it is required by C89. */
++ so any use of gets warrants an unconditional warning; besides, C11
++ removed it. */
++#undef gets
++#if HAVE_RAW_DECL_GETS
+ _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+ #endif
+
+@@ -1053,9 +1042,9 @@ _GL_WARN_ON_USE (snprintf, "snprintf is unportable - "
+ # endif
+ #endif
+
+-/* Some people would argue that sprintf should be handled like gets
+- (for example, OpenBSD issues a link warning for both functions),
+- since both can cause security holes due to buffer overruns.
++/* Some people would argue that all sprintf uses should be warned about
++ (for example, OpenBSD issues a link warning for it),
++ since it can cause security holes due to buffer overruns.
+ However, we believe that sprintf can be used safely, and is more
+ efficient than snprintf in those safe cases; and as proof of our
+ belief, we use sprintf in several gnulib modules. So this header
diff --git a/gnu/packages/patches/emacs-configure-sh.patch b/gnu/packages/patches/emacs-configure-sh.patch
new file mode 100644
index 0000000000..fd34d06ced
--- /dev/null
+++ b/gnu/packages/patches/emacs-configure-sh.patch
@@ -0,0 +1,14 @@
+Make sure the right shell is used when creating src/epaths.h.
+
+--- emacs-24.2/configure 2013-01-13 17:01:53.000000000 +0100
++++ emacs-24.2/configure 2013-01-13 17:01:57.000000000 +0100
+@@ -24135,7 +24135,7 @@ done
+ ;;
+ "epaths":C)
+ echo creating src/epaths.h
+-${MAKE-make} epaths-force
++${MAKE-make} epaths-force SHELL="$CONFIG_SHELL"
+ ;;
+ "gdbinit":C)
+ if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then
+
diff --git a/gnu/packages/patches/findutils-absolute-paths.patch b/gnu/packages/patches/findutils-absolute-paths.patch
new file mode 100644
index 0000000000..96341e281f
--- /dev/null
+++ b/gnu/packages/patches/findutils-absolute-paths.patch
@@ -0,0 +1,29 @@
+Fix use of LFS-style absolute paths.
+
+Patches from Nixpkgs by Armijn Hemel <armijn@gpl-violations.org>
+and Wouter den Breejen <uu@denbreejen.net>.
+
+diff -ruN findutils-4.2.20/locate/updatedb.sh findutils-4.2.20.new/locate/updatedb.sh
+--- findutils-4.2.20/locate/updatedb.sh 2005-01-24 17:12:35.000000000 +0100
++++ findutils-4.2.20.new/locate/updatedb.sh 2005-08-23 14:37:10.000000000 +0200
+@@ -141,7 +141,7 @@
+ : ${code:=${LIBEXECDIR}/@code@}
+
+
+-PATH=/bin:/usr/bin:${BINDIR}; export PATH
++PATH=/bin:/usr/bin:${BINDIR}:${PATH}; export PATH
+
+ : ${PRUNEFS="nfs NFS proc afs proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs sysfs shfs"}
+
+diff -Naur findutils-4.2.30/xargs/xargs.c findutils-4.2.30_new/xargs/xargs.c
+--- findutils-4.2.30/xargs/xargs.c 2007-02-27 11:21:08.000000000 +0100
++++ findutils-4.2.30_new/xargs/xargs.c 2007-07-17 19:02:05.000000000 +0200
+@@ -402,7 +402,7 @@
+ int show_limits = 0; /* --show-limits */
+ int always_run_command = 1;
+ char *input_file = "-"; /* "-" is stdin */
+- char *default_cmd = "/bin/echo";
++ char *default_cmd = "echo";
+ int (*read_args) PARAMS ((void)) = read_line;
+ void (*act_on_init_result)(void) = noop;
+ int env_too_big = 0;
diff --git a/gnu/packages/patches/flex-bison-tests.patch b/gnu/packages/patches/flex-bison-tests.patch
new file mode 100644
index 0000000000..0f372f83bf
--- /dev/null
+++ b/gnu/packages/patches/flex-bison-tests.patch
@@ -0,0 +1,24 @@
+The `test-bison-yyl{loc,val}' tests fail with "conflicting types for
+'testparse'" because `YYPARSE_PARAM' is undefined; work around that.
+
+--- flex-2.5.37/tests/test-bison-yylloc/main.c 2012-11-22 18:17:01.000000000 +0100
++++ flex-2.5.37/tests/test-bison-yylloc/main.c 2012-11-22 18:17:07.000000000 +0100
+@@ -21,6 +21,7 @@
+ * PURPOSE.
+ */
+
++#define YYPARSE_PARAM scanner
+ #include "parser.h"
+ #include "scanner.h"
+
+
+--- flex-2.5.37/tests/test-bison-yylval/main.c 2012-11-22 18:17:42.000000000 +0100
++++ flex-2.5.37/tests/test-bison-yylval/main.c 2012-11-22 18:17:49.000000000 +0100
+@@ -21,6 +21,7 @@
+ * PURPOSE.
+ */
+
++#define YYPARSE_PARAM scanner
+ #include "parser.h"
+ #include "scanner.h"
+
diff --git a/gnu/packages/patches/gawk-shell.patch b/gnu/packages/patches/gawk-shell.patch
new file mode 100644
index 0000000000..89b8540a8d
--- /dev/null
+++ b/gnu/packages/patches/gawk-shell.patch
@@ -0,0 +1,34 @@
+As for libc's `system', change Awk to look for `sh' in $PATH. This patch is
+only meant to be used during bootstrapping, where we don't know in advance the
+absolute file name of `sh'.
+
+--- gawk-4.0.0/io.c 2011-05-18 20:47:29.000000000 +0200
++++ gawk-4.0.0/io.c 2012-12-18 15:56:06.000000000 +0100
+@@ -1759,7 +1759,7 @@ two_way_open(const char *str, struct red
+
+ signal(SIGPIPE, SIG_DFL);
+
+- execl("/bin/sh", "sh", "-c", str, NULL);
++ execlp("sh", "sh", "-c", str, NULL);
+ _exit(errno == ENOENT ? 127 : 126);
+
+ case -1:
+@@ -1924,7 +1924,7 @@ use_pipes:
+ || close(ctop[0]) == -1 || close(ctop[1]) == -1)
+ fatal(_("close of pipe failed (%s)"), strerror(errno));
+ /* stderr does NOT get dup'ed onto child's stdout */
+- execl("/bin/sh", "sh", "-c", str, NULL);
++ execlp("sh", "sh", "-c", str, NULL);
+ _exit(errno == ENOENT ? 127 : 126);
+ }
+ #endif /* NOT __EMX__ */
+@@ -2074,7 +2074,7 @@ gawk_popen(const char *cmd, struct redir
+ fatal(_("moving pipe to stdout in child failed (dup: %s)"), strerror(errno));
+ if (close(p[0]) == -1 || close(p[1]) == -1)
+ fatal(_("close of pipe failed (%s)"), strerror(errno));
+- execl("/bin/sh", "sh", "-c", cmd, NULL);
++ execlp("sh", "sh", "-c", cmd, NULL);
+ _exit(errno == ENOENT ? 127 : 126);
+ }
+ #endif /* NOT __EMX__ */
+
diff --git a/gnu/packages/patches/gettext-gets-undeclared.patch b/gnu/packages/patches/gettext-gets-undeclared.patch
new file mode 100644
index 0000000000..072a8d94ab
--- /dev/null
+++ b/gnu/packages/patches/gettext-gets-undeclared.patch
@@ -0,0 +1,77 @@
+This patch is needed to allow builds with newer versions of
+the GNU libc (2.16+).
+
+The upstream fix was:
+
+ commit 66712c23388e93e5c518ebc8515140fa0c807348
+ Author: Eric Blake <eblake@redhat.com>
+ Date: Thu Mar 29 13:30:41 2012 -0600
+
+ stdio: don't assume gets any more
+
+ Gnulib intentionally does not have a gets module, and now that C11
+ and glibc have dropped it, we should be more proactive about warning
+ any user on a platform that still has a declaration of this dangerous
+ interface.
+
+ * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets
+ support.
+ * modules/stdio (Makefile.am): Likewise.
+ * lib/stdio-read.c (gets): Likewise.
+ * tests/test-stdio-c++.cc: Likewise.
+ * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment.
+ * lib/stdio.in.h (gets): Make warning occur in more places.
+ * doc/posix-functions/gets.texi (gets): Update documentation.
+ Reported by Christer Solskogen.
+
+ Signed-off-by: Eric Blake <eblake@redhat.com>
+
+This patch just gets rid of the offending part.
+
+--- gettext-0.18.1.1/gettext-tools/libgettextpo/stdio.in.h-orig 2012-11-24 01:13:14.000000000 +0400
++++ gettext-0.18.1.1/gettext-tools/libgettextpo/stdio.in.h 2012-11-24 01:13:46.000000000 +0400
+@@ -137,12 +137,6 @@
+ "use gnulib module fflush for portable POSIX compliance");
+ #endif
+
+-/* It is very rare that the developer ever has full control of stdin,
+- so any use of gets warrants an unconditional warning. Assume it is
+- always declared, since it is required by C89. */
+-#undef gets
+-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+-
+ #if @GNULIB_FOPEN@
+ # if @REPLACE_FOPEN@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+
+--- gettext-0.18.1.1/gettext-runtime/gnulib-lib/stdio.in.h-orig 2012-11-24 00:26:49.000000000 +0400
++++ gettext-0.18.1.1/gettext-runtime/gnulib-lib/stdio.in.h 2012-11-24 00:45:54.000000000 +0400
+@@ -137,12 +137,6 @@
+ "use gnulib module fflush for portable POSIX compliance");
+ #endif
+
+-/* It is very rare that the developer ever has full control of stdin,
+- so any use of gets warrants an unconditional warning. Assume it is
+- always declared, since it is required by C89. */
+-#undef gets
+-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+-
+ #if @GNULIB_FOPEN@
+ # if @REPLACE_FOPEN@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+
+--- gettext-0.18.1.1/gettext-tools/gnulib-lib/stdio.in.h-orig 2012-11-24 01:00:26.000000000 +0400
++++ gettext-0.18.1.1/gettext-tools/gnulib-lib/stdio.in.h 2012-11-24 01:00:53.000000000 +0400
+@@ -137,12 +137,6 @@
+ "use gnulib module fflush for portable POSIX compliance");
+ #endif
+
+-/* It is very rare that the developer ever has full control of stdin,
+- so any use of gets warrants an unconditional warning. Assume it is
+- always declared, since it is required by C89. */
+-#undef gets
+-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+-
+ #if @GNULIB_FOPEN@
+ # if @REPLACE_FOPEN@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
diff --git a/gnu/packages/patches/glibc-bootstrap-system.patch b/gnu/packages/patches/glibc-bootstrap-system.patch
new file mode 100644
index 0000000000..7208cce3f4
--- /dev/null
+++ b/gnu/packages/patches/glibc-bootstrap-system.patch
@@ -0,0 +1,28 @@
+We want to allow builds in chroots that lack /bin/sh. Thus, system(3)
+and popen(3) need to be tweaked to use the right shell. For the bootstrap
+glibc, we just use whatever `sh' can be found in $PATH. The final glibc
+instead uses the hard-coded absolute file name of `bash'.
+
+--- a/sysdeps/posix/system.c
++++ b/sysdeps/posix/system.c
+@@ -134,7 +134,7 @@ do_system (const char *line)
+ INIT_LOCK ();
+
+ /* Exec the shell. */
+- (void) __execve (SHELL_PATH, (char *const *) new_argv, __environ);
++ (void) __execvpe (SHELL_NAME, (char *const *) new_argv, __environ);
+ _exit (127);
+ }
+ else if (pid < (pid_t) 0)
+
+--- b/libio/iopopen.c 2012-06-30 21:12:34.000000000 +0200
++++ b/libio/iopopen.c 2012-12-19 12:52:29.000000000 +0100
+@@ -226,7 +226,7 @@ _IO_new_proc_open (fp, command, mode)
+ _IO_close (fd);
+ }
+
+- _IO_execl ("/bin/sh", "sh", "-c", command, (char *) 0);
++ execlp ("sh", "sh", "-c", command, (char *) 0);
+ _IO__exit (127);
+ }
+ _IO_close (child_end);
diff --git a/gnu/packages/patches/glibc-no-ld-so-cache.patch b/gnu/packages/patches/glibc-no-ld-so-cache.patch
new file mode 100644
index 0000000000..75fff50b47
--- /dev/null
+++ b/gnu/packages/patches/glibc-no-ld-so-cache.patch
@@ -0,0 +1,53 @@
+Disable attempts to use the system-wide /etc/ld.so.cache. This is
+required on LFS distros to avoid loading the distro's libc.so instead
+of ours.
+
+Patch from Nixpkgs. Idea by Eelco Dolstra, initial patch by Jack
+Cummings, minor fixups by Shea Levy.
+
+diff -Naur glibc-2.13-orig/elf/ldconfig.c glibc-2.13/elf/ldconfig.c
+--- glibc-2.13-orig/elf/ldconfig.c 2011-01-17 23:34:07.000000000 -0500
++++ glibc-2.13/elf/ldconfig.c 2012-04-10 23:28:45.957492340 -0400
+@@ -51,7 +51,7 @@
+ #endif
+
+ #ifndef LD_SO_CONF
+-# define LD_SO_CONF SYSCONFDIR "/ld.so.conf"
++# define LD_SO_CONF PREFIX "/etc/ld.so.conf"
+ #endif
+
+ /* Get libc version number. */
+
+--- glibc-2.16.0/elf/Makefile 2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/elf/Makefile 2012-11-12 23:52:21.000000000 +0100
+@@ -415,12 +415,12 @@ $(objpfx)ldconfig: $(ldconfig-modules:%=
+
+ $(objpfx)pldd: $(pldd-modules:%=$(objpfx)%.o)
+
+-SYSCONF-FLAGS := -D'SYSCONFDIR="$(sysconfdir)"'
+-CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' \
++PREFIX-FLAGS := -D'PREFIX="$(sysconfdir)"'
++CFLAGS-ldconfig.c = $(PREFIX-FLAGS) -D'LIBDIR="$(libdir)"' \
+ -D'SLIBDIR="$(slibdir)"' -DIS_IN_ldconfig=1
+-CFLAGS-dl-cache.c = $(SYSCONF-FLAGS)
+-CFLAGS-cache.c = $(SYSCONF-FLAGS)
+-CFLAGS-rtld.c = $(SYSCONF-FLAGS)
++CFLAGS-dl-cache.c = $(PREFIX-FLAGS)
++CFLAGS-cache.c = $(PREFIX-FLAGS)
++CFLAGS-rtld.c = $(PREFIX-FLAGS)
+
+ CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
+ -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld)
+
+diff -Naur glibc-2.13-orig/sysdeps/generic/dl-cache.h glibc-2.13/sysdeps/generic/dl-cache.h
+--- glibc-2.13-orig/sysdeps/generic/dl-cache.h 2011-01-17 23:34:07.000000000 -0500
++++ glibc-2.13/sysdeps/generic/dl-cache.h 2012-04-10 23:28:20.077488815 -0400
+@@ -29,7 +29,7 @@
+ #endif
+
+ #ifndef LD_SO_CACHE
+-# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache"
++# define LD_SO_CACHE PREFIX "/etc/ld.so.cache"
+ #endif
+
+ #ifndef add_system_dir
diff --git a/gnu/packages/patches/guile-1.8-cpp-4.5.patch b/gnu/packages/patches/guile-1.8-cpp-4.5.patch
new file mode 100644
index 0000000000..638d071baf
--- /dev/null
+++ b/gnu/packages/patches/guile-1.8-cpp-4.5.patch
@@ -0,0 +1,24 @@
+Fix doc snarfing with GCC 4.5+.
+From <http://git.savannah.gnu.org/cgit/guile.git/commit/?h=branch_release-1-8&id=aac41d28358cea594bb30f6e547afb82bb6004a6>.
+
+diff --git a/scripts/snarf-check-and-output-texi b/scripts/snarf-check-and-output-texi
+index ea33e17..8cd42e8 100755
+--- a/scripts/snarf-check-and-output-texi
++++ b/scripts/snarf-check-and-output-texi
+@@ -267,6 +267,17 @@ exec ${GUILE-guile} -l $0 -c "(apply $main (cdr (command-line)))" "$@"
+ (set! *file* file)
+ (set! *line* line))
+
++ ;; newer gccs like to throw around more location markers into the
++ ;; preprocessed source; these (hash . hash) bits are what they translate to
++ ;; in snarfy terms.
++ (('location ('string . file) ('int . line) ('hash . 'hash))
++ (set! *file* file)
++ (set! *line* line))
++
++ (('location ('hash . 'hash) ('string . file) ('int . line) ('hash . 'hash))
++ (set! *file* file)
++ (set! *line* line))
++
+ (('arglist rest ...)
+ (set! *args* (do-arglist rest)))
diff --git a/gnu/packages/patches/guile-default-utf8.patch b/gnu/packages/patches/guile-default-utf8.patch
new file mode 100644
index 0000000000..409f435161
--- /dev/null
+++ b/gnu/packages/patches/guile-default-utf8.patch
@@ -0,0 +1,111 @@
+This hack makes Guile default to UTF-8. This avoids calls to
+`iconv_open'; `iconv_open' tries to open shared objects that aren't
+available during bootstrap, so using UTF-8 avoids that (and UTF-8 has
+built-in conversions in glibc, too.)
+
+diff --git a/libguile/bytevectors.c b/libguile/bytevectors.c
+index cf41f2f..facfb91 100644
+--- a/libguile/bytevectors.c
++++ b/libguile/bytevectors.c
+@@ -1887,7 +1887,7 @@ utf_encoding_name (char *name, size_t utf_width, SCM endianness)
+ if (scm_i_is_narrow_string (str)) \
+ { \
+ err = mem_iconveh (scm_i_string_chars (str), c_strlen, \
+- "ISO-8859-1", c_utf_name, \
++ "UTF-8", c_utf_name, \
+ iconveh_question_mark, NULL, \
+ &c_utf, &c_utf_len); \
+ if (SCM_UNLIKELY (err)) \
+diff --git a/libguile/ports.c b/libguile/ports.c
+index 301bc44..b0ea2e6 100644
+--- a/libguile/ports.c
++++ b/libguile/ports.c
+@@ -1750,7 +1750,7 @@ scm_ungetc (scm_t_wchar c, SCM port)
+ if (pt->encoding != NULL)
+ encoding = pt->encoding;
+ else
+- encoding = "ISO-8859-1";
++ encoding = "UTF-8";
+
+ len = sizeof (result_buf);
+ result = u32_conv_to_encoding (encoding,
+@@ -2212,7 +2212,7 @@ scm_i_set_port_encoding_x (SCM port, const char *encoding)
+ pt = SCM_PTAB_ENTRY (port);
+
+ if (encoding == NULL)
+- encoding = "ISO-8859-1";
++ encoding = "UTF-8";
+
+ if (pt->encoding != encoding)
+ pt->encoding = scm_gc_strdup (encoding, "port");
+diff --git a/libguile/posix.c b/libguile/posix.c
+index 4f8b8ac..fea7f74 100644
+--- a/libguile/posix.c
++++ b/libguile/posix.c
+@@ -1740,7 +1740,7 @@ SCM_DEFINE (scm_setlocale, "setlocale", 1, 1, 0,
+ SCM_SYSERROR;
+ }
+
+- enc = locale_charset ();
++ enc = "UTF-8";
+
+ /* Set the default encoding for new ports. */
+ scm_i_set_default_port_encoding (enc);
+diff --git a/libguile/script.c b/libguile/script.c
+index 83daf8a..083891e 100644
+--- a/libguile/script.c
++++ b/libguile/script.c
+@@ -387,7 +387,7 @@ locale_arguments_to_string_list (int argc, char **const argv)
+ SCM lst;
+ const char *encoding;
+
+- encoding = environ_locale_charset ();
++ encoding = "UTF-8";
+ for (i = argc - 1, lst = SCM_EOL;
+ i >= 0;
+ i--)
+diff --git a/libguile/strings.c b/libguile/strings.c
+index 5d0db23..8266247 100644
+--- a/libguile/strings.c
++++ b/libguile/strings.c
+@@ -1576,7 +1576,7 @@ scm_from_locale_string (const char *str)
+ SCM
+ scm_from_locale_stringn (const char *str, size_t len)
+ {
+- return scm_from_stringn (str, len, locale_charset (),
++ return scm_from_stringn (str, len, "UTF-8",
+ scm_i_default_port_conversion_handler ());
+ }
+
+@@ -1803,7 +1803,7 @@ char *
+ scm_to_locale_stringn (SCM str, size_t *lenp)
+ {
+ return scm_to_stringn (str, lenp,
+- locale_charset (),
++ "UTF-8",
+ scm_i_default_port_conversion_handler ());
+ }
+
+@@ -2054,7 +2054,7 @@ scm_to_stringn (SCM str, size_t *lenp, const char *encoding,
+ "string contains #\\nul character: ~S",
+ scm_list_1 (str));
+
+- if (scm_i_is_narrow_string (str) && (encoding == NULL))
++ if (scm_i_is_narrow_string (str))
+ {
+ /* If using native Latin-1 encoding, just copy the string
+ contents. */
+@@ -2079,11 +2079,11 @@ scm_to_stringn (SCM str, size_t *lenp, const char *encoding,
+ len = 0;
+ enc = encoding;
+ if (enc == NULL)
+- enc = "ISO-8859-1";
++ enc = "UTF-8";
+ if (scm_i_is_narrow_string (str))
+ {
+ ret = mem_iconveh (scm_i_string_chars (str), ilen,
+- "ISO-8859-1", enc,
++ "UTF-8", enc,
+ (enum iconv_ilseq_handler) handler, NULL,
+ &buf, &len);
+
diff --git a/gnu/packages/patches/guile-relocatable.patch b/gnu/packages/patches/guile-relocatable.patch
new file mode 100644
index 0000000000..077394cdde
--- /dev/null
+++ b/gnu/packages/patches/guile-relocatable.patch
@@ -0,0 +1,70 @@
+This patch changes Guile to use a default search path relative to the
+location of the `guile' binary, allowing it to be relocated.
+
+diff --git a/libguile/load.c b/libguile/load.c
+index af2ca45..19dd338 100644
+--- a/libguile/load.c
++++ b/libguile/load.c
+@@ -26,6 +26,7 @@
+
+ #include <string.h>
+ #include <stdio.h>
++#include <libgen.h>
+
+ #include "libguile/_scm.h"
+ #include "libguile/private-gc.h" /* scm_getenv_int */
+@@ -255,6 +256,32 @@ scm_init_load_path ()
+ SCM cpath = SCM_EOL;
+
+ #ifdef SCM_LIBRARY_DIR
++ char *program, *bin_dir, *prefix, *module_dir, *ccache_dir;
++
++ /* Determine the source and compiled module directories at run-time,
++ relative to the executable's location.
++
++ Note: Use /proc/self/exe instead of argv[0] because the latter is
++ not necessarily an absolute, nor a valid file name. */
++
++ program = scm_gc_malloc_pointerless (256, "string");
++ readlink ("/proc/self/exe", program, 256);
++
++ bin_dir = dirname (strdupa (program));
++
++ prefix = scm_gc_malloc_pointerless (strlen (bin_dir) + 4, "string");
++ strcpy (prefix, bin_dir);
++ strcat (prefix, "/..");
++ prefix = canonicalize_file_name (prefix);
++
++ module_dir = scm_gc_malloc_pointerless (strlen (prefix) + 50, "string");
++ strcpy (module_dir, prefix);
++ strcat (module_dir, "/share/guile/2.0");
++
++ ccache_dir = scm_gc_malloc_pointerless (strlen (prefix) + 50, "string");
++ strcpy (ccache_dir, prefix);
++ strcat (ccache_dir, "/lib/guile/2.0/ccache");
++
+ env = getenv ("GUILE_SYSTEM_PATH");
+ if (env && strcmp (env, "") == 0)
+ /* special-case interpret system-path=="" as meaning no system path instead
+@@ -263,10 +290,7 @@ scm_init_load_path ()
+ else if (env)
+ path = scm_parse_path (scm_from_locale_string (env), path);
+ else
+- path = scm_list_4 (scm_from_locale_string (SCM_LIBRARY_DIR),
+- scm_from_locale_string (SCM_SITE_DIR),
+- scm_from_locale_string (SCM_GLOBAL_SITE_DIR),
+- scm_from_locale_string (SCM_PKGDATA_DIR));
++ path = scm_list_1 (scm_from_locale_string (module_dir));
+
+ env = getenv ("GUILE_SYSTEM_COMPILED_PATH");
+ if (env && strcmp (env, "") == 0)
+@@ -276,8 +300,7 @@ scm_init_load_path ()
+ cpath = scm_parse_path (scm_from_locale_string (env), cpath);
+ else
+ {
+- cpath = scm_list_2 (scm_from_locale_string (SCM_CCACHE_DIR),
+- scm_from_locale_string (SCM_SITE_CCACHE_DIR));
++ cpath = scm_list_1 (scm_from_locale_string (ccache_dir));
+ }
+
+ #endif /* SCM_LIBRARY_DIR */
diff --git a/gnu/packages/patches/libtool-skip-tests.patch b/gnu/packages/patches/libtool-skip-tests.patch
new file mode 100644
index 0000000000..6e12615d51
--- /dev/null
+++ b/gnu/packages/patches/libtool-skip-tests.patch
@@ -0,0 +1,37 @@
+Because our GCC `lib' spec automatically adds `-rpath' for each `-L'
+and a couple more `-rpath, there are two test failures:
+demo-hardcode.test, and destdir.at. Disable these.
+
+--- libtool-2.4.2/Makefile.in 2011-10-17 12:18:55.000000000 +0200
++++ libtool-2.4.2/Makefile.in 2012-09-13 23:50:37.000000000 +0200
+@@ -909,7 +908,7 @@ COMMON_TESTS = \
+ # but they depend on the other tests being run beforehand.
+ INTERACTIVE_TESTS = tests/demo-shared.test tests/demo-shared-make.test \
+ tests/demo-shared-exec.test tests/demo-shared-inst.test \
+- tests/demo-hardcode.test tests/demo-relink.test \
++ tests/demo-relink.test \
+ tests/demo-noinst-link.test tests/demo-shared-unst.test \
+ tests/depdemo-shared.test tests/depdemo-shared-make.test \
+ tests/depdemo-shared-exec.test tests/depdemo-shared-inst.test \
+@@ -2580,8 +2579,7 @@ tests/cdemo-static-make.log: tests/cdemo
+
+ tests/demo-shared-unst.log: tests/demo-noinst-link.log
+ tests/demo-noinst-link.log: tests/demo-relink.log
+-tests/demo-relink.log: tests/demo-hardcode.log
+-tests/demo-hardcode.log: tests/demo-shared-inst.log
++tests/demo-relink.log: tests/demo-shared-inst.log
+ tests/demo-shared-inst.log: tests/demo-shared-exec.log
+ tests/demo-shared-exec.log: tests/demo-shared-make.log
+ tests/demo-shared-make.log: tests/demo-shared.log
+
+--- libtool-2.4.2/tests/testsuite 2011-10-17 12:19:52.000000000 +0200
++++ libtool-2.4.2/tests/testsuite 2012-09-14 00:28:45.000000000 +0200
+@@ -14443,6 +14443,6 @@ read at_status <"$at_status_file"
+ #AT_START_69
+ at_fn_group_banner 69 'destdir.at:75' \
+ "DESTDIR with in-package deplibs" " " 4
+-at_xfail=no
++at_xfail=yes
+ eval `$LIBTOOL --config | grep '^fast_install='`
+ case $fast_install in no) :;; *) false;; esac && at_xfail=yes
+
diff --git a/gnu/packages/patches/lsh-guile-compat.patch b/gnu/packages/patches/lsh-guile-compat.patch
new file mode 100644
index 0000000000..0fe0484580
--- /dev/null
+++ b/gnu/packages/patches/lsh-guile-compat.patch
@@ -0,0 +1,9 @@
+Use (ice-9 rdelim) for `read-line'.
+
+--- lsh-2.0.4/src/scm/guile-compat.scm 2012-12-03 23:28:01.000000000 +0100
++++ lsh-2.0.4/src/scm/guile-compat.scm 2012-12-03 23:28:04.000000000 +0100
+@@ -21,3 +21,4 @@
+ ;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ (use-syntax (ice-9 syncase))
++(use-modules (ice-9 rdelim))
diff --git a/gnu/packages/patches/lsh-no-root-login.patch b/gnu/packages/patches/lsh-no-root-login.patch
new file mode 100644
index 0000000000..9dd81de3fb
--- /dev/null
+++ b/gnu/packages/patches/lsh-no-root-login.patch
@@ -0,0 +1,16 @@
+Correctly handle the `--no-root-login' option.
+
+--- lsh-2.0.4/src/lshd.c 2006-05-01 13:47:44.000000000 +0200
++++ lsh-2.0.4/src/lshd.c 2009-09-08 12:20:36.000000000 +0200
+@@ -758,6 +758,10 @@ main_argp_parser(int key, char *arg, str
+ self->allow_root = 1;
+ break;
+
++ case OPT_NO_ROOT_LOGIN:
++ self->allow_root = 0;
++ break;
++
+ case OPT_KERBEROS_PASSWD:
+ self->pw_helper = PATH_KERBEROS_HELPER;
+ break;
+
diff --git a/gnu/packages/patches/lsh-pam-service-name.patch b/gnu/packages/patches/lsh-pam-service-name.patch
new file mode 100644
index 0000000000..6a6156855c
--- /dev/null
+++ b/gnu/packages/patches/lsh-pam-service-name.patch
@@ -0,0 +1,14 @@
+Tell `lsh-pam-checkpw', the PAM password helper program, to use a more
+descriptive service name.
+
+--- lsh-2.0.4/src/lsh-pam-checkpw.c 2003-02-16 22:30:10.000000000 +0100
++++ lsh-2.0.4/src/lsh-pam-checkpw.c 2008-11-28 16:16:58.000000000 +0100
+@@ -38,7 +38,7 @@
+ #include <security/pam_appl.h>
+
+ #define PWD_MAXLEN 1024
+-#define SERVICE_NAME "other"
++#define SERVICE_NAME "lshd"
+ #define TIMEOUT 600
+
+ static int
diff --git a/gnu/packages/patches/m4-gets-undeclared.patch b/gnu/packages/patches/m4-gets-undeclared.patch
new file mode 100644
index 0000000000..d28f0cdcc4
--- /dev/null
+++ b/gnu/packages/patches/m4-gets-undeclared.patch
@@ -0,0 +1,45 @@
+This patch is needed to allow builds with newer versions of
+the GNU libc (2.16+).
+
+The upstream fix was:
+
+ commit 66712c23388e93e5c518ebc8515140fa0c807348
+ Author: Eric Blake <eblake@redhat.com>
+ Date: Thu Mar 29 13:30:41 2012 -0600
+
+ stdio: don't assume gets any more
+
+ Gnulib intentionally does not have a gets module, and now that C11
+ and glibc have dropped it, we should be more proactive about warning
+ any user on a platform that still has a declaration of this dangerous
+ interface.
+
+ * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets
+ support.
+ * modules/stdio (Makefile.am): Likewise.
+ * lib/stdio-read.c (gets): Likewise.
+ * tests/test-stdio-c++.cc: Likewise.
+ * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment.
+ * lib/stdio.in.h (gets): Make warning occur in more places.
+ * doc/posix-functions/gets.texi (gets): Update documentation.
+ Reported by Christer Solskogen.
+
+ Signed-off-by: Eric Blake <eblake@redhat.com>
+
+This patch just gets rid of the offending part.
+
+--- m4-1.4.16/lib/stdio.in.h.orig 2012-09-01 01:05:36.000000000 +0200
++++ m4-1.4.16/lib/stdio.in.h 2012-09-01 01:05:42.000000000 +0200
+@@ -158,12 +158,6 @@ _GL_WARN_ON_USE (fflush, "fflush is not
+ "use gnulib module fflush for portable POSIX compliance");
+ #endif
+
+-/* It is very rare that the developer ever has full control of stdin,
+- so any use of gets warrants an unconditional warning. Assume it is
+- always declared, since it is required by C89. */
+-#undef gets
+-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+-
+ #if @GNULIB_FOPEN@
+ # if @REPLACE_FOPEN@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
diff --git a/gnu/packages/patches/m4-readlink-EINVAL.patch b/gnu/packages/patches/m4-readlink-EINVAL.patch
new file mode 100644
index 0000000000..dd371584a7
--- /dev/null
+++ b/gnu/packages/patches/m4-readlink-EINVAL.patch
@@ -0,0 +1,18 @@
+Newer Linux kernels would return EINVAL instead of ENOENT.
+The patch below, taken from Gnulib, allows the test to pass when
+these Linux versions are in use:
+https://lists.gnu.org/archive/html/bug-gnulib/2011-03/msg00308.html .
+
+diff --git a/tests/test-readlink.h b/tests/test-readlink.h
+index 08d5662..7247fc4 100644
+--- a/tests/test-readlink.h
++++ b/tests/test-readlink.h
+@@ -38,7 +38,7 @@ test_readlink (ssize_t (*func) (char const *, char *, size_t), bool print)
+ ASSERT (errno == ENOENT);
+ errno = 0;
+ ASSERT (func ("", buf, sizeof buf) == -1);
+- ASSERT (errno == ENOENT);
++ ASSERT (errno == ENOENT || errno == EINVAL);
+ errno = 0;
+ ASSERT (func (".", buf, sizeof buf) == -1);
+ ASSERT (errno == EINVAL);
diff --git a/gnu/packages/patches/m4-s_isdir.patch b/gnu/packages/patches/m4-s_isdir.patch
new file mode 100644
index 0000000000..a009a4ba44
--- /dev/null
+++ b/gnu/packages/patches/m4-s_isdir.patch
@@ -0,0 +1,14 @@
+Fails to build with glibc 2.12.1 without this patch.
+
+http://lists.gnu.org/archive/html/bug-m4/2010-05/msg00002.html
+
+--- a/src/path.c
++++ b/src/path.c
+@@ -22,6 +22,7 @@
+ /* Handling of path search of included files via the builtins "include"
+ and "sinclude". */
+
+ #include "m4.h"
++#include "sys/stat.h"
+
+ struct includes
diff --git a/gnu/packages/patches/make-impure-dirs.patch b/gnu/packages/patches/make-impure-dirs.patch
new file mode 100644
index 0000000000..83a5fbe3a5
--- /dev/null
+++ b/gnu/packages/patches/make-impure-dirs.patch
@@ -0,0 +1,40 @@
+Purity: don't look for library dependencies (of the form `-lfoo') in
+/lib and /usr/lib. Likewise, when searching for included Makefiles,
+don't look in /usr/include and friends.
+
+Patch from Nixpkgs, by Eelco Dolstra.
+
+diff -rc make-3.81-orig/read.c make-3.81/read.c
+*** make-3.81-orig/read.c 2006-03-17 15:24:20.000000000 +0100
+--- make-3.81/read.c 2007-05-24 17:16:31.000000000 +0200
+***************
+*** 99,107 ****
+--- 99,109 ----
+ #endif
+ INCLUDEDIR,
+ #ifndef _AMIGA
++ #if 0
+ "/usr/gnu/include",
+ "/usr/local/include",
+ "/usr/include",
++ #endif
+ #endif
+ 0
+ };
+diff -rc make-3.81-orig/remake.c make-3.81/remake.c
+*** make-3.81-orig/remake.c 2006-03-20 03:36:37.000000000 +0100
+--- make-3.81/remake.c 2007-05-24 17:06:54.000000000 +0200
+***************
+*** 1452,1460 ****
+--- 1452,1462 ----
+ static char *dirs[] =
+ {
+ #ifndef _AMIGA
++ #if 0
+ "/lib",
+ "/usr/lib",
+ #endif
++ #endif
+ #if defined(WINDOWS32) && !defined(LIBDIR)
+ /*
+ * This is completely up to the user at product install time. Just define
diff --git a/gnu/packages/patches/perl-no-sys-dirs.patch b/gnu/packages/patches/perl-no-sys-dirs.patch
new file mode 100644
index 0000000000..3aba4d7529
--- /dev/null
+++ b/gnu/packages/patches/perl-no-sys-dirs.patch
@@ -0,0 +1,156 @@
+Don't long for headers and libraries in "traditional" locations.
+
+Patch from Nixpkgs by Eelco Dolstra <eelco.dolstra@logicblox.com>.
+
+diff -ru -x '*~' perl-5.14.2-orig/Configure perl-5.14.2/Configure
+--- perl-5.14.2-orig/Configure 2011-09-26 11:44:34.000000000 +0200
++++ perl-5.14.2/Configure 2012-01-20 17:05:23.089223129 +0100
+@@ -106,15 +106,7 @@
+ fi
+
+ : Proper PATH setting
+-paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
+-paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
+-paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
+-paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
+-paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
+-paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
+-paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
+-paths="$paths /sbin /usr/sbin /usr/libexec"
+-paths="$paths /system/gnu_library/bin"
++paths=''
+
+ for p in $paths
+ do
+@@ -1311,8 +1303,7 @@
+ archname=''
+ : Possible local include directories to search.
+ : Set locincpth to "" in a hint file to defeat local include searches.
+-locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
+-locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
++locincpth=""
+ :
+ : no include file wanted by default
+ inclwanted=''
+@@ -1328,17 +1319,12 @@
+ archobjs=''
+ libnames=''
+ : change the next line if compiling for Xenix/286 on Xenix/386
+-xlibpth='/usr/lib/386 /lib/386'
++xlibpth=''
+ : Possible local library directories to search.
+-loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
+-loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
++loclibpth=""
+
+ : general looking path for locating libraries
+-glibpth="/lib /usr/lib $xlibpth"
+-glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
+-test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
+-test -f /shlib/libc.so && glibpth="/shlib $glibpth"
+-test -d /usr/lib64 && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
++glibpth=""
+
+ : Private path used by Configure to find libraries. Its value
+ : is prepended to libpth. This variable takes care of special
+@@ -1371,8 +1357,6 @@
+ libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
+ : We probably want to search /usr/shlib before most other libraries.
+ : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
+-glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
+-glibpth="/usr/shlib $glibpth"
+ : Do not use vfork unless overridden by a hint file.
+ usevfork=false
+
+@@ -2380,7 +2364,6 @@
+ zip
+ "
+ pth=`echo $PATH | sed -e "s/$p_/ /g"`
+-pth="$pth /lib /usr/lib"
+ for file in $loclist; do
+ eval xxx=\$$file
+ case "$xxx" in
+@@ -4785,7 +4768,7 @@
+ : Set private lib path
+ case "$plibpth" in
+ '') if ./mips; then
+- plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
++ plibpth="$incpath/usr/lib"
+ fi;;
+ esac
+ case "$libpth" in
+@@ -8390,13 +8373,8 @@
+ echo " "
+ case "$sysman" in
+ '')
+- syspath='/usr/share/man/man1 /usr/man/man1'
+- syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
+- syspath="$syspath /usr/man/u_man/man1"
+- syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
+- syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
+- syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
+- sysman=`./loc . /usr/man/man1 $syspath`
++ syspath=''
++ sysman=''
+ ;;
+ esac
+ if $test -d "$sysman"; then
+@@ -19721,9 +19699,10 @@
+ case "$full_ar" in
+ '') full_ar=$ar ;;
+ esac
++full_ar=ar
+
+ : Store the full pathname to the sed program for use in the C program
+-full_sed=$sed
++full_sed=sed
+
+ : see what type gids are declared as in the kernel
+ echo " "
+diff -ru -x '*~' perl-5.14.2-orig/ext/Errno/Errno_pm.PL perl-5.14.2/ext/Errno/Errno_pm.PL
+--- perl-5.14.2-orig/ext/Errno/Errno_pm.PL 2011-09-26 11:44:34.000000000 +0200
++++ perl-5.14.2/ext/Errno/Errno_pm.PL 2012-01-20 17:02:07.938138311 +0100
+@@ -137,11 +137,7 @@
+ if ($dep =~ /(\S+errno\.h)/) {
+ $file{$1} = 1;
+ }
+- } elsif ($^O eq 'linux' &&
+- $Config{gccversion} ne '' &&
+- $Config{gccversion} !~ /intel/i
+- # might be using, say, Intel's icc
+- ) {
++ } elsif (0) {
+ # Some Linuxes have weird errno.hs which generate
+ # no #file or #line directives
+ my $linux_errno_h = -e '/usr/include/errno.h' ?
+diff -ru -x '*~' perl-5.14.2-orig/hints/freebsd.sh perl-5.14.2/hints/freebsd.sh
+--- perl-5.14.2-orig/hints/freebsd.sh 2011-09-19 15:18:22.000000000 +0200
++++ perl-5.14.2/hints/freebsd.sh 2012-01-20 17:10:37.267924044 +0100
+@@ -118,21 +118,21 @@
+ objformat=`/usr/bin/objformat`
+ if [ x$objformat = xaout ]; then
+ if [ -e /usr/lib/aout ]; then
+- libpth="/usr/lib/aout /usr/local/lib /usr/lib"
+- glibpth="/usr/lib/aout /usr/local/lib /usr/lib"
++ libpth=""
++ glibpth=""
+ fi
+ lddlflags='-Bshareable'
+ else
+- libpth="/usr/lib /usr/local/lib"
+- glibpth="/usr/lib /usr/local/lib"
++ libpth=""
++ glibpth=""
+ ldflags="-Wl,-E "
+ lddlflags="-shared "
+ fi
+ cccdlflags='-DPIC -fPIC'
+ ;;
+ *)
+- libpth="/usr/lib /usr/local/lib"
+- glibpth="/usr/lib /usr/local/lib"
++ libpth=""
++ glibpth=""
+ ldflags="-Wl,-E "
+ lddlflags="-shared "
+ cccdlflags='-DPIC -fPIC'
diff --git a/gnu/packages/patches/procps-make-3.82.patch b/gnu/packages/patches/procps-make-3.82.patch
new file mode 100644
index 0000000000..7bf53e2ccc
--- /dev/null
+++ b/gnu/packages/patches/procps-make-3.82.patch
@@ -0,0 +1,14 @@
+Fix compilation with GNU Make 3.82 (patch from Nixpkgs).
+
+diff --git a/Makefile b/Makefile
+index 09fb3ed..59eba16 100644
+--- a/Makefile
++++ b/Makefile
+@@ -174,7 +174,7 @@ INSTALL := $(BINFILES) $(MANFILES)
+ # want this rule first, use := on ALL, and ALL not filled in yet
+ all: do_all
+
+--include */module.mk
++-include proc/module.mk ps/module.mk
+
+ do_all: $(ALL)
diff --git a/gnu/packages/patches/readline-link-ncurses.patch b/gnu/packages/patches/readline-link-ncurses.patch
new file mode 100644
index 0000000000..0fd0598f46
--- /dev/null
+++ b/gnu/packages/patches/readline-link-ncurses.patch
@@ -0,0 +1,18 @@
+This patch is to make sure that `libncurses' is among the `NEEDED'
+dependencies of `libreadline.so' and `libhistory.so'.
+
+Failing to do that, applications linking against Readline are
+forced to explicitly link against libncurses as well; in addition,
+this trick doesn't work when using GNU ld's `--as-needed'.
+
+--- shlib/Makefile.in 2009-01-06 18:03:22.000000000 +0100
++++ shlib/Makefile.in 2009-07-27 14:43:25.000000000 +0200
+@@ -84,7 +84,7 @@ SHOBJ_LDFLAGS = @SHOBJ_LDFLAGS@
+ SHOBJ_XLDFLAGS = @SHOBJ_XLDFLAGS@
+ SHOBJ_LIBS = @SHOBJ_LIBS@
+
+-SHLIB_XLDFLAGS = @LDFLAGS@ @SHLIB_XLDFLAGS@
++SHLIB_XLDFLAGS = @LDFLAGS@ @SHLIB_XLDFLAGS@ -lncurses
+ SHLIB_LIBS = @SHLIB_LIBS@
+
+ SHLIB_DOT = @SHLIB_DOT@
diff --git a/gnu/packages/patches/shishi-gets-undeclared.patch b/gnu/packages/patches/shishi-gets-undeclared.patch
new file mode 100644
index 0000000000..a3d6d0cca2
--- /dev/null
+++ b/gnu/packages/patches/shishi-gets-undeclared.patch
@@ -0,0 +1,71 @@
+This patch is needed to allow builds with newer versions of
+the GNU libc (2.16+).
+
+
+commit 66712c23388e93e5c518ebc8515140fa0c807348
+Author: Eric Blake <eblake@redhat.com>
+Date: Thu Mar 29 13:30:41 2012 -0600
+
+ stdio: don't assume gets any more
+
+ Gnulib intentionally does not have a gets module, and now that C11
+ and glibc have dropped it, we should be more proactive about warning
+ any user on a platform that still has a declaration of this dangerous
+ interface.
+
+ * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets
+ support.
+ * modules/stdio (Makefile.am): Likewise.
+ * lib/stdio-read.c (gets): Likewise.
+ * tests/test-stdio-c++.cc: Likewise.
+ * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment.
+ * lib/stdio.in.h (gets): Make warning occur in more places.
+ * doc/posix-functions/gets.texi (gets): Update documentation.
+ Reported by Christer Solskogen.
+
+ Signed-off-by: Eric Blake <eblake@redhat.com>
+
+diff --git a/gl/stdio.in.h b/gl/stdio.in.h
+index aa7b599..c377b6e 100644
+--- a/gl/stdio.in.h
++++ b/gl/stdio.in.h
+@@ -698,22 +698,11 @@ _GL_WARN_ON_USE (getline, "getline is unportable - "
+ # endif
+ #endif
+
+-#if @GNULIB_GETS@
+-# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+-# undef gets
+-# define gets rpl_gets
+-# endif
+-_GL_FUNCDECL_RPL (gets, char *, (char *s) _GL_ARG_NONNULL ((1)));
+-_GL_CXXALIAS_RPL (gets, char *, (char *s));
+-# else
+-_GL_CXXALIAS_SYS (gets, char *, (char *s));
+-# undef gets
+-# endif
+-_GL_CXXALIASWARN (gets);
+ /* It is very rare that the developer ever has full control of stdin,
+- so any use of gets warrants an unconditional warning. Assume it is
+- always declared, since it is required by C89. */
++ so any use of gets warrants an unconditional warning; besides, C11
++ removed it. */
++#undef gets
++#if HAVE_RAW_DECL_GETS
+ _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+ #endif
+
+@@ -1053,9 +1042,9 @@ _GL_WARN_ON_USE (snprintf, "snprintf is unportable - "
+ # endif
+ #endif
+
+-/* Some people would argue that sprintf should be handled like gets
+- (for example, OpenBSD issues a link warning for both functions),
+- since both can cause security holes due to buffer overruns.
++/* Some people would argue that all sprintf uses should be warned about
++ (for example, OpenBSD issues a link warning for it),
++ since it can cause security holes due to buffer overruns.
+ However, we believe that sprintf can be used safely, and is more
+ efficient than snprintf in those safe cases; and as proof of our
+ belief, we use sprintf in several gnulib modules. So this header
diff --git a/gnu/packages/patches/tar-gets-undeclared.patch b/gnu/packages/patches/tar-gets-undeclared.patch
new file mode 100644
index 0000000000..301a09dde1
--- /dev/null
+++ b/gnu/packages/patches/tar-gets-undeclared.patch
@@ -0,0 +1,26 @@
+This patch is needed to allow builds with newer versions of
+the GNU libc (2.16+).
+
+This is a backport of this patch:
+
+commit 66712c23388e93e5c518ebc8515140fa0c807348
+Author: Eric Blake <eblake@redhat.com>
+Date: Thu Mar 29 13:30:41 2012 -0600
+
+ stdio: don't assume gets any more
+
+--- tar-1.26/gnu/stdio.in.h 2012-07-02 14:28:45.000000000 +0200
++++ tar-1.26/gnu/stdio.in.h 2012-07-02 14:28:50.000000000 +0200
+@@ -160,12 +160,6 @@ _GL_WARN_ON_USE (fflush, "fflush is not
+ "use gnulib module fflush for portable POSIX compliance");
+ #endif
+
+-/* It is very rare that the developer ever has full control of stdin,
+- so any use of gets warrants an unconditional warning. Assume it is
+- always declared, since it is required by C89. */
+-#undef gets
+-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+-
+ #if @GNULIB_FOPEN@
+ # if @REPLACE_FOPEN@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
new file mode 100644
index 0000000000..719aa4db5c
--- /dev/null
+++ b/gnu/packages/perl.scm
@@ -0,0 +1,73 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages perl)
+ #:use-module (guix licenses)
+ #:use-module (distro)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu))
+
+(define-public perl
+ ;; Yeah, Perl... It is required early in the bootstrap process by Linux.
+ (package
+ (name "perl")
+ (version "5.16.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://www.cpan.org/src/5.0/perl-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "15qxzba3a50c9nik5ydgyfp62x7h9vxxn12yd1jgl93hb1wj96km"))))
+ (build-system gnu-build-system)
+ (arguments
+ (lambda (system)
+ `(#:tests? #f
+ #:patches (list (assoc-ref %build-inputs "patch/no-sys-dirs"))
+ #:phases
+ (alist-replace
+ 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (libc (assoc-ref inputs "libc")))
+ ;; Use the right path for `pwd'.
+ (substitute* "dist/Cwd/Cwd.pm"
+ (("/bin/pwd")
+ (which "pwd")))
+
+ (zero?
+ (system* "./Configure"
+ (string-append "-Dprefix=" out)
+ (string-append "-Dman1dir=" out "/share/man/man1")
+ (string-append "-Dman3dir=" out "/share/man/man3")
+ "-de" "-Dcc=gcc"
+ "-Uinstallusrbinperl"
+ "-Dinstallstyle=lib/perl5"
+ "-Duseshrplib"
+ (string-append "-Dlocincpth=" libc "/include")
+ (string-append "-Dloclibpth=" libc "/lib")))))
+ %standard-phases))))
+ (inputs `(("patch/no-sys-dirs" ,(search-patch "perl-no-sys-dirs.patch"))))
+ (synopsis "Implementation of the Perl programming language")
+ (description
+ "Perl 5 is a highly capable, feature-rich programming language with over
+24 years of development.")
+ (home-page "http://www.perl.org/")
+ (license gpl1+))) ; or "Artistic"
diff --git a/gnu/packages/pkg-config.scm b/gnu/packages/pkg-config.scm
new file mode 100644
index 0000000000..f9bcf18728
--- /dev/null
+++ b/gnu/packages/pkg-config.scm
@@ -0,0 +1,51 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages pkg-config)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu))
+
+(define-public pkg-config
+ (package
+ (name "pkg-config")
+ (version "0.27.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://pkgconfig.freedesktop.org/releases/pkg-config-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "05wc5nwkqz7saj2v33ydmz1y6jdg659dll4jjh91n41m63gx0qsg"))))
+ (build-system gnu-build-system)
+ (arguments `(#:configure-flags '("--with-internal-glib")))
+ (home-page "http://www.freedesktop.org/wiki/Software/pkg-config")
+ (license gpl2+)
+ (synopsis "a helper tool used when compiling applications and
+libraries")
+ (description
+ "pkg-config is a helper tool used when compiling applications and
+libraries. It helps you insert the correct compiler options on the
+command line so an application can use gcc -o test test.c `pkg-config
+--libs --cflags glib-2.0` for instance, rather than hard-coding values
+on where to find glib (or other libraries). It is language-agnostic, so
+it can be used for defining the location of documentation tools, for
+instance.")))
diff --git a/gnu/packages/pth.scm b/gnu/packages/pth.scm
new file mode 100644
index 0000000000..b0d5092cb0
--- /dev/null
+++ b/gnu/packages/pth.scm
@@ -0,0 +1,61 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages pth)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public pth
+ (package
+ (name "pth")
+ (version "2.0.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/pth/pth-" version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "0ckjqw5kz5m30srqi87idj7xhpw6bpki43mj07bazjm2qmh3cdbj"))))
+ (build-system gnu-build-system)
+ (arguments '(#:parallel-build? #f))
+ (home-page "http://www.gnu.org/software/pth")
+ (synopsis "The GNU Portable Threads library")
+ (description
+ "Pth is a very portable POSIX/ANSI-C based library for Unix
+platforms which provides non-preemptive priority-based scheduling for
+multiple threads of execution (aka ``multithreading'') inside
+event-driven applications. All threads run in the same address space of
+the server application, but each thread has it's own individual
+program-counter, run-time stack, signal mask and errno variable.
+
+The thread scheduling itself is done in a cooperative way, i.e., the
+threads are managed by a priority- and event-based non-preemptive
+scheduler. The intention is that this way one can achieve better
+portability and run-time performance than with preemptive
+scheduling. The event facility allows threads to wait until various
+types of events occur, including pending I/O on file descriptors,
+asynchronous signals, elapsed timers, pending I/O on message ports,
+thread and process termination, and even customized callback functions.
+
+Additionally Pth provides an optional emulation API for POSIX.1c
+threads (\"Pthreads\") which can be used for backward compatibility to
+existing multithreaded applications.")
+ (license lgpl2.1+)))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
new file mode 100644
index 0000000000..39d4880ecc
--- /dev/null
+++ b/gnu/packages/python.scm
@@ -0,0 +1,58 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
+;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages python)
+ #:use-module ((guix licenses) #:select (psfl))
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages openssl)
+ #:use-module (gnu packages base)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public python
+ (package
+ (name "python")
+ (version "2.7.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://www.python.org/ftp/python/"
+ version "/Python-" version ".tar.xz"))
+ (sha256
+ (base32
+ "11f9aw855lrmknr6c82gm1ijr3n0smc6idyp94y7774yivjnplv1"))))
+ (build-system gnu-build-system)
+ (arguments `(#:tests? #f)) ; XXX: some tests fail
+ (inputs
+ `(("zlib" ,zlib)
+ ("openssl" ,openssl)
+ ("bzip2" ,bzip2)))
+ (home-page "http://python.org")
+ (synopsis
+ "Python, a high-level dynamically-typed programming language")
+ (description
+ "Python is a remarkably powerful dynamic programming language that
+is used in a wide variety of application domains. Some of its key
+distinguishing features include: clear, readable syntax; strong
+introspection capabilities; intuitive object orientation; natural
+expression of procedural code; full modularity, supporting hierarchical
+packages; exception-based error handling; and very high level dynamic
+data types.")
+ (license psfl)))
diff --git a/gnu/packages/readline.scm b/gnu/packages/readline.scm
new file mode 100644
index 0000000000..8623e63758
--- /dev/null
+++ b/gnu/packages/readline.scm
@@ -0,0 +1,79 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages readline)
+ #:use-module (guix licenses)
+ #:use-module (distro)
+ #:use-module (gnu packages ncurses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu))
+
+(define-public readline
+ (let ((post-install-phase
+ '(lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib")))
+ ;; Make libraries writable so that `strip' can work.
+ ;; Failing to do that, it bails out with "Permission
+ ;; denied".
+ (for-each (lambda (f) (chmod f #o755))
+ (find-files lib "\\.so"))
+ (for-each (lambda (f) (chmod f #o644))
+ (find-files lib "\\.a"))))))
+ (package
+ (name "readline")
+ (version "6.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/readline/readline-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "10ckm2bd2rkxhvdmj7nmbsylmihw0abwcsnxf8y27305183rd9kr"))))
+ (build-system gnu-build-system)
+ (propagated-inputs `(("ncurses" ,ncurses)))
+ (inputs `(("patch/link-ncurses"
+ ,(search-patch "readline-link-ncurses.patch"))))
+ (arguments `(#:patches (list (assoc-ref %build-inputs
+ "patch/link-ncurses"))
+ #:patch-flags '("-p0")
+ #:configure-flags
+ (list (string-append "LDFLAGS=-Wl,-rpath -Wl,"
+ (assoc-ref %build-inputs "ncurses")
+ "/lib"))
+
+ #:phases (alist-cons-after
+ 'install 'post-install
+ ,post-install-phase
+ %standard-phases)))
+ (synopsis "GNU Readline, a library for interactive line editing")
+ (description
+ "The GNU Readline library provides a set of functions for use by
+applications that allow users to edit command lines as they are typed in.
+Both Emacs and vi editing modes are available. The Readline library includes
+additional functions to maintain a list of previously-entered command lines,
+to recall and perhaps reedit those lines, and perform csh-like history
+expansion on previous commands.
+
+The history facilites are also placed into a separate library, the History
+library, as part of the build process. The History library may be used
+without Readline in applications which desire its capabilities.")
+ (license gpl3+)
+ (home-page "http://savannah.gnu.org/projects/readline/"))))
diff --git a/gnu/packages/recutils.scm b/gnu/packages/recutils.scm
new file mode 100644
index 0000000000..39452b54b9
--- /dev/null
+++ b/gnu/packages/recutils.scm
@@ -0,0 +1,57 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages recutils)
+ #:use-module (guix licenses)
+ #:use-module (distro)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix utils)
+ #:use-module (guix build-system gnu)
+ #:use-module (gnu packages emacs)
+ #:use-module (gnu packages check)
+ #:use-module (gnu packages algebra))
+
+(define-public recutils
+ (package
+ (name "recutils")
+ (version "1.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/recutils/recutils-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1v2xzwwwhc5j5kmvg4sv6baxjpsfqh8ln7ilv4mgb1408rs7xmky"))))
+ (build-system gnu-build-system)
+ (inputs `(;; TODO: Enable optional deps when they're packaged.
+ ;; ("curl" ,(nixpkgs-derivation "curl"))
+ ("emacs" ,emacs)
+ ("check" ,check)
+ ("bc" ,bc)
+ ("patch/gets"
+ ,(search-patch "diffutils-gets-undeclared.patch"))))
+ (arguments `(#:patches (list (assoc-ref %build-inputs "patch/gets"))))
+ (synopsis "GNU recutils, tools and libraries to access human-editable,
+text-based databases")
+ (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 gpl3+)
+ (home-page "http://www.gnu.org/software/recutils/")))
diff --git a/gnu/packages/rsync.scm b/gnu/packages/rsync.scm
new file mode 100644
index 0000000000..3fb7874434
--- /dev/null
+++ b/gnu/packages/rsync.scm
@@ -0,0 +1,51 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Andreas Enge <andreas@enge.fr>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages rsync)
+ #:use-module (distro)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages acl)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+
+(define-public rsync
+ (package
+ (name "rsync")
+ (version "3.0.9")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://rsync.samba.org/ftp/rsync/rsync-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "01bw4klqsrlhh3i9lazd485sd9qx5djvnwa21lj2h3a9sn6hzw9h"))))
+ (build-system gnu-build-system)
+ (inputs `(("perl" ,perl)
+ ("acl" ,acl)))
+ (synopsis "rsync, a remote (and local) file copying tool")
+ (description
+ "rsync is a fast and versatile file copying tool. It can copy locally,
+to/from another host over any remote shell, or to/from a remote rsync daemon.
+Its delta-transfer algorithm reduces the amount of data sent over the network
+by sending only the differences between the source files and the existing
+files in the destination.")
+ (license gpl3+)
+ (home-page "http://rsync.samba.org/")))
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
new file mode 100644
index 0000000000..a1b8f68c9d
--- /dev/null
+++ b/gnu/packages/scheme.scm
@@ -0,0 +1,168 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages scheme)
+ #:use-module (distro)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (gnu packages m4)
+ #:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages emacs)
+ #:use-module (gnu packages texinfo)
+ #:use-module (ice-9 match))
+
+(define-public mit-scheme
+ (package
+ (name "mit-scheme")
+ (version "9.1.1")
+ (source #f) ; see below
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; no "check" target
+ #:phases
+ (alist-replace
+ 'unpack
+ (lambda* (#:key inputs #:allow-other-keys)
+ (and (zero? (system* "tar" "xzvf"
+ (assoc-ref inputs "source")))
+ (chdir ,(string-append name "-" version))
+ (begin
+ ;; Delete these dangling symlinks since they break
+ ;; `patch-shebangs'.
+ (for-each delete-file
+ (append (find-files "src/lib/lib" "\\.so$")
+ (find-files "src/lib" "^ffi-test")))
+ (chdir "src")
+ #t)))
+ (alist-replace
+ 'build
+ (lambda* (#:key system outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (if (or (string-prefix? "x86_64" system)
+ (string-prefix? "i686" system))
+ (zero? (system* "make" "compile-microcode"))
+ (zero? (system* "./etc/make-liarc.sh"
+ (string-append "--prefix=" out))))))
+ %standard-phases))))
+ (inputs
+ `(;; TODO: Build doc when TeX Live is available.
+ ;; ("automake" ,automake)
+ ;; ("texlive-core" ,texlive-core)
+ ("texinfo" ,texinfo)
+ ("m4" ,m4)
+
+ ("source"
+ ,(lambda (system)
+ ;; MIT/GNU Scheme is not bootstrappable, so it's recommended to
+ ;; compile from the architecture-specific tarballs, which contain
+ ;; pre-built binaries. It leads to more efficient code than when
+ ;; building the tarball that contains generated C code instead of
+ ;; those binaries.
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/mit-scheme/stable.pkg/"
+ version "/mit-scheme-"
+ version "-"
+ (match system
+ ("x86_64-linux" "x86-64")
+ ("i686-linux" "i386")
+ (_ "c"))
+ ".tar.gz"))
+ (sha256
+ (match system
+ ("x86_64-linux"
+ (base32
+ "1wcxm9hyfc53myvlcn93fyqrnnn4scwkknl9hkbp1cphc6mp291x"))
+ ("i686-linux"
+ (base32
+ "0vi760fy550d9db538m0vzbq1mpdncvw9g8bk4lswk0kcdira55z"))
+ (_
+ (base32
+ "0pclakzwxbqgy6wqwvs6ml62wgby8ba8xzmwzdwhx1v8wv05yw1j")))))))))
+ (home-page "http://www.gnu.org/software/mit-scheme/")
+ (synopsis "MIT/GNU Scheme, a native code Scheme compiler")
+ (description
+ "MIT/GNU Scheme is an implementation of the Scheme programming
+language, providing an interpreter, compiler, source-code debugger,
+integrated Emacs-like editor, and a large runtime library. MIT/GNU
+Scheme is best suited to programming large applications with a rapid
+development cycle.")
+ (license gpl2+)))
+
+(define-public bigloo
+ (package
+ (name "bigloo")
+ (version "3.9a")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "ftp://ftp-sop.inria.fr/indes/fp/Bigloo/bigloo"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0v1q0gcbn38ackdzsnvpkdgaj6ydkfdya31l2hag21aig087px1y"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:patches (list (assoc-ref %build-inputs "patch/shebangs"))
+ #:test-target "test"
+ #:phases (alist-replace
+ 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+
+ (substitute* "configure"
+ (("^shell=.*$")
+ (string-append "shell=" (which "bash") "\n")))
+
+ ;; Those variables are used by libgc's `configure'.
+ (setenv "SHELL" (which "bash"))
+ (setenv "CONFIG_SHELL" (which "bash"))
+
+ ;; The `configure' script doesn't understand options
+ ;; of those of Autoconf.
+ (let ((out (assoc-ref outputs "out")))
+ (zero?
+ (system* "./configure"
+ (string-append "--prefix=" out)
+ (string-append"--mv=" (which "mv"))
+ (string-append "--rm=" (which "rm"))))))
+ (alist-cons-after
+ 'patch 'patch-absolute-file-names
+ (lambda _
+ (substitute* (cons "configure"
+ (find-files "gc" "^install-gc"))
+ (("/bin/rm") (which "rm"))
+ (("/bin/mv") (which "mv"))))
+ %standard-phases))))
+ (inputs
+ `(("gmp" ,gmp)
+ ("emacs" ,emacs)
+ ("patch/shebangs" ,(search-patch "bigloo-gc-shebangs.patch"))))
+ (home-page "http://www-sop.inria.fr/indes/fp/Bigloo/")
+ (synopsis "Bigloo, an efficient Scheme compiler")
+ (description
+ "Bigloo is a Scheme implementation devoted to one goal: enabling
+Scheme based programming style where C(++) is usually
+required. Bigloo attempts to make Scheme practical by offering
+features usually presented by traditional programming languages
+but not offered by Scheme and functional programming. Bigloo
+compiles Scheme modules. It delivers small and fast stand alone
+binary executables. Bigloo enables full connections between
+Scheme and C programs, between Scheme and Java programs, and
+between Scheme and C# programs.")
+ (license gpl2+)))
diff --git a/gnu/packages/shishi.scm b/gnu/packages/shishi.scm
new file mode 100644
index 0000000000..d6d152f368
--- /dev/null
+++ b/gnu/packages/shishi.scm
@@ -0,0 +1,71 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages shishi)
+ #:use-module (guix licenses)
+ #:use-module (distro)
+ #:use-module (gnu packages gnutls)
+ #:use-module (gnu packages gnupg)
+ #:use-module ((gnu packages compression)
+ #:renamer (symbol-prefix-proc 'guix:))
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public shishi
+ (package
+ (name "shishi")
+ (version "1.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://gnu/shishi/shishi-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "13c6w9rpaqb3am65nrn86byvmll5r78pld2vb0i68491vww4fzlx"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags
+ '("CPPFLAGS=-DMAX_ERROR_DESCRIPTION_SIZE=ASN1_MAX_ERROR_DESCRIPTION_SIZE")
+ #:patches (list (assoc-ref %build-inputs
+ "patch/gets"))))
+ (inputs
+ `(("gnutls" ,gnutls)
+ ("zlib" ,guix:zlib)
+ ("libgcrypt" ,libgcrypt)
+ ("libtasn1" ,libtasn1)
+ ("patch/gets" ,(search-patch "shishi-gets-undeclared.patch"))))
+ (home-page "http://www.gnu.org/software/shishi/")
+ (synopsis
+ "GNU Shishi, free implementation of the Kerberos 5 network security system")
+ (description
+ " GNU Shishi is an implementation of the Kerberos 5 network
+ authentication system, as specified in RFC 4120. Shishi can be
+ used to authenticate users in distributed systems.
+
+ Shishi contains a library (`libshishi') that can be used by
+ application developers to add support for Kerberos 5. Shishi
+ contains a command line utility (1shishi') that is used by
+ users to acquire and manage tickets (and more). The server
+ side, a Key Distribution Center, is implemented by `shishid'.
+")
+ (license gpl3+))) ; some files are under GPLv2+
diff --git a/gnu/packages/system.scm b/gnu/packages/system.scm
new file mode 100644
index 0000000000..5fb3dc463b
--- /dev/null
+++ b/gnu/packages/system.scm
@@ -0,0 +1,91 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages system)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (distro)
+ #:use-module (gnu packages ncurses))
+
+(define-public pies
+ (package
+ (name "pies")
+ (version "1.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/pies/pies-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "18w0dbg77i56cx1bwa789w0qi3l4xkkbascxcv2b6gbm0zmjg1g6"))))
+ (build-system gnu-build-system)
+ (home-page "http://www.gnu.org/software/pies/")
+ (synopsis
+ "GNU Pies, a program invocation and execution supervisor")
+ (description
+ "The name Pies (pronounced \"p-yes\") stands for Program Invocation
+and Execution Supervisor. This utility starts and controls execution of
+external programs, called components. Each component is a stand-alone
+program, which is executed in the foreground. Upon startup, pies reads
+the list of components from its configuration file, starts them, and
+remains in the background, controlling their execution. If any of the
+components terminates, the default action of Pies is to restart it.
+However, it can also be programmed to perform a variety of another
+actions such as, e.g., sending mail notifications to the system
+administrator, invoking another external program, etc.
+
+Pies can be used for a wide variety of tasks. Its most obious use is to
+put in backgound a program which normally cannot detach itself from the
+controlling terminal, such as, e.g., minicom. It can launch and control
+components of some complex system, such as Jabberd or MeTA1 (and it
+offers much more control over them than the native utilities). Finally,
+it can replace the inetd utility!")
+ (license gpl3+)))
+
+(define-public inetutils
+ (package
+ (name "inetutils")
+ (version "1.9.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/inetutils/inetutils-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0azzg6njgq79byl6960kb0wihfhhzf49snslhxgvi30ribgfpa82"))))
+ (build-system gnu-build-system)
+ (arguments `(#:patches (list (assoc-ref %build-inputs "patch/gets"))
+
+ ;; FIXME: `tftp.sh' relies on `netstat' from utils-linux,
+ ;; which is currently missing.
+ #:tests? #f))
+ (inputs `(("patch/gets" ,(search-patch "diffutils-gets-undeclared.patch"))
+ ("ncurses" ,ncurses)))
+ (home-page "http://www.gnu.org/software/inetutils/")
+ (synopsis
+ "GNU Inetutils, a collection of common network programs")
+ (description
+ "The GNU network utilities suite provides the following tools:
+ftp(d), hostname, ifconfig, inetd, logger, ping, rcp, rexec(d),
+rlogin(d), rsh(d), syslogd, talk(d), telnet(d), tftp(d), traceroute,
+uucpd, and whois.")
+ (license gpl3+)))
diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm
new file mode 100644
index 0000000000..a8c4c957c4
--- /dev/null
+++ b/gnu/packages/tcl.scm
@@ -0,0 +1,109 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages tcl)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix licenses))
+
+(define-public tcl
+ (package
+ (name "tcl")
+ (version "8.6.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/tcl/Tcl/"
+ version "/tcl" version "-src.tar.gz"))
+ (sha256
+ (base32
+ "1pnabp3xsja4rc8c01l9q1avb65a3zhdzci3j54qa5krqjwj4i1m"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:phases (alist-cons-before
+ 'configure 'pre-configure
+ (lambda _
+ (chdir "unix"))
+ (alist-cons-after
+ 'install 'install-private-headers
+ (lambda _
+ ;; Private headers are needed by Expect.
+ (zero? (system* "make" "install-private-headers")))
+ %standard-phases))
+
+ ;; XXX: There are a few test failures (related to HTTP, most
+ ;; likely related to name resolution), but that doesn't cause
+ ;; `make' to fail.
+ #:test-target "test"))
+ (home-page "http://www.tcl.tk/")
+ (synopsis "The Tcl scripting language")
+ (description "The Tcl (Tool Command Language) scripting language.")
+ (license (bsd-style "http://www.tcl.tk/software/tcltk/license.html"
+ "Tcl/Tk license"))))
+
+
+(define-public expect
+ (package
+ (name "expect")
+ (version "5.45")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/expect/Expect/"
+ version "/expect" version ".tar.gz"))
+ (sha256
+ (base32
+ "0h60bifxj876afz4im35rmnbnxjx4lbdqp2ja3k30fwa8a8cm3dj"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(;; TODO: Add these optional dependencies.
+ ;; ("libX11" ,libX11)
+ ;; ("xproto" ,xproto)
+ ;; ("tk" ,tk)
+ ("tcl" ,tcl)))
+ (arguments
+ '(#:configure-flags
+ (list (string-append "--with-tcl="
+ (assoc-ref %build-inputs "tcl")
+ "/lib")
+ (string-append "--with-tclinclude="
+ (assoc-ref %build-inputs "tcl")
+ "/include")
+ (string-append "--exec-prefix="
+ (assoc-ref %outputs "out")))
+
+ #:phases (alist-cons-before
+ 'configure 'set-path-to-stty
+ (lambda _
+ (substitute* "configure"
+ (("STTY_BIN=/bin/stty")
+ (string-append "STTY_BIN=" (which "stty")))))
+ %standard-phases)
+
+ #:test-target "test"))
+ (home-page "http://expect.nist.gov/")
+ (synopsis
+ "A tool for automating interactive applications")
+ (description
+ "Expect is a tool for automating interactive applications such as
+telnet, ftp, passwd, fsck, rlogin, tip, etc. Expect really makes this
+stuff trivial. Expect is also useful for testing these same
+applications. And by adding Tk, you can wrap interactive applications in
+X11 GUIs.")
+ (license public-domain))) ; as written in `license.terms'
diff --git a/gnu/packages/texinfo.scm b/gnu/packages/texinfo.scm
new file mode 100644
index 0000000000..9a264c627c
--- /dev/null
+++ b/gnu/packages/texinfo.scm
@@ -0,0 +1,61 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages texinfo)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages ncurses))
+
+(define-public texinfo
+ (package
+ (name "texinfo")
+ (version "4.13a")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://gnu/texinfo/texinfo-"
+ version
+ ".tar.lzma"))
+ (sha256
+ (base32
+ "1rf9ckpqwixj65bw469i634897xwlgkm5i9g2hv3avl6mv7b0a3d"))))
+ (build-system gnu-build-system)
+ (inputs `(("ncurses" ,ncurses) ("xz" ,xz)))
+ (home-page
+ "http://www.gnu.org/software/texinfo/")
+ (synopsis
+ "GNU Texinfo, the GNU documentation system")
+ (description
+ "Texinfo is the official documentation format of the GNU project.
+It was invented by Richard Stallman and Bob Chassell many years
+ago, loosely based on Brian Reid's Scribe and other formatting
+languages of the time. It is used by many non-GNU projects as
+well.
+
+Texinfo uses a single source file to produce output in a number
+of formats, both online and printed (dvi, html, info, pdf, xml,
+etc.). This means that instead of writing different documents
+for online information and another for a printed manual, you
+need write only one document. And when the work is revised, you
+need revise only that one document. The Texinfo system is
+well-integrated with GNU Emacs.")
+ (license gpl3+)))
diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm
new file mode 100644
index 0000000000..cfb3261f94
--- /dev/null
+++ b/gnu/packages/time.scm
@@ -0,0 +1,66 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
+;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages time)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public time
+ (package
+ (name "time")
+ (version "1.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/time/time-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0va9063fcn7xykv658v2s9gilj2fq4rcdxx2mn2mmy1v4ndafzp3"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:phases
+ (alist-replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; This old `configure' script doesn't support
+ ;; variables passed as arguments.
+ (let ((out (assoc-ref outputs "out")))
+ (setenv "CONFIG_SHELL" (which "bash"))
+ (zero?
+ (system* "./configure"
+ (string-append "--prefix=" out)))))
+ %standard-phases)))
+ (home-page "http://www.gnu.org/software/time/")
+ (synopsis
+ "GNU Time, a tool that runs programs and summarizes the system
+resources they use")
+ (description
+ "The 'time' command runs another program, then displays information
+about the resources used by that program, collected by the system while
+the program was running. You can select which information is reported
+and the format in which it is shown, or have 'time' save the information
+in a file instead of displaying it on the screen.
+
+The resources that 'time' can report on fall into the general categories
+of time, memory, and I/O and IPC calls. Some systems do not provide
+much information about program resource use; 'time' reports unavailable
+information as zero values.")
+ (license gpl2+)))
diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm
new file mode 100644
index 0000000000..ea31a1e70d
--- /dev/null
+++ b/gnu/packages/wget.scm
@@ -0,0 +1,61 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages wget)
+ #:use-module (guix licenses)
+ #:use-module ((gnu packages gettext)
+ #:renamer (symbol-prefix-proc 'guix:))
+ #:use-module (gnu packages gnutls)
+ #:use-module (gnu packages perl)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public wget
+ (package
+ (name "wget")
+ (version "1.14")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/wget/wget-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0yqllj3nv9p3vqbdm6j4nvpjcwf1y19rq8sd966nrbd2qvvxfq8p"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("gnutls" ,gnutls)
+ ("perl" ,perl)
+ ("gettext" ,guix:gettext)))
+ (arguments
+ '(#:phases
+ (alist-cons-before 'build 'patch-/usr/bin/env
+ (lambda _
+ (for-each patch-shebang
+ '("doc/texi2pod.pl" "tests/run-px")))
+ %standard-phases)))
+ (home-page "http://www.gnu.org/software/wget/")
+ (synopsis
+ "GNU Wget, a tool for retrieving files using HTTP, HTTPS, and FTP")
+ (description
+ "GNU Wget is a free software package for retrieving files using HTTP,
+HTTPS and FTP, the most widely-used Internet protocols. It is a
+non-interactive commandline tool, so it may easily be called from
+scripts, cron jobs, terminals without X-Windows support, etc.")
+ (license gpl3+))) ; some files are under GPLv2+
diff --git a/gnu/packages/which.scm b/gnu/packages/which.scm
new file mode 100644
index 0000000000..aa5330cad7
--- /dev/null
+++ b/gnu/packages/which.scm
@@ -0,0 +1,48 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages which)
+ #:use-module (guix licenses)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public which
+ (package
+ (name "which")
+ (version "2.20")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/which/which-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1y2p50zadb36izzh2zw4dm5hvdiydqf3qa88l8kav20dcmfbc5yl"))))
+ (build-system gnu-build-system)
+ (home-page "https://gnu.org/software/which/")
+ (synopsis
+ "GNU Which shows the full path of (shell) commands")
+ (description
+ "GNU Which takes one or more arguments. For each of its arguments
+it prints to stdout the full path of the executables that would have
+been executed when this argument had been entered at the shell
+prompt. It does this by searching for an executable or script in the
+directories listed in the environment variable PATH using the same
+algorithm as bash(1).")
+ (license gpl3+))) ; some files are under GPLv2+
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
new file mode 100644
index 0000000000..d67057dab2
--- /dev/null
+++ b/gnu/packages/xml.scm
@@ -0,0 +1,44 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages xml)
+ #:use-module ((guix licenses)
+ #:renamer (symbol-prefix-proc 'license:))
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu))
+
+(define-public expat
+ (package
+ (name "expat")
+ (version "2.1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/expat/expat/"
+ version "/expat-" version ".tar.gz"))
+ (sha256
+ (base32
+ "11pblz61zyxh68s5pdcbhc30ha1b2vfjd83aiwfg4vc15x3hadw2"))))
+ (build-system gnu-build-system)
+ (home-page "http://www.libexpat.org/")
+ (synopsis "A stream-oriented XML parser library written in C")
+ (description
+ "Expat is an XML parser library written in C. It is a
+stream-oriented parser in which an application registers handlers for
+things the parser might find in the XML document (like start tags).")
+ (license license:expat)))
diff --git a/gnu/packages/zile.scm b/gnu/packages/zile.scm
new file mode 100644
index 0000000000..b5366c046f
--- /dev/null
+++ b/gnu/packages/zile.scm
@@ -0,0 +1,66 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages zile)
+ #:use-module (guix licenses)
+ #:use-module (guix download)
+ #:use-module (guix packages)
+ #:use-module (guix build-system gnu)
+ #:use-module (gnu packages bdw-gc)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages help2man)
+ #:use-module (gnu packages ncurses))
+
+(define-public zile
+ (package
+ (name "zile")
+ (version "2.4.9")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/zile/zile-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0j801c28ypm924rw3lqyb6khxyslg6ycrv16wmmwcam0mk3mj6f7"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("boehm-gc" ,libgc)
+ ("ncurses" ,ncurses)
+ ("perl" ,perl)
+ ("help2man" ,help2man)))
+ (home-page "http://www.gnu.org/software/zile/")
+ (synopsis "GNU Zile, a lightweight Emacs clone")
+ (description
+ "GNU Zile, which is a lightweight Emacs clone. Zile is short
+for Zile Is Lossy Emacs. Zile has been written to be as
+similar as possible to Emacs; every Emacs user should feel at
+home.
+
+Zile has all of Emacs's basic editing features: it is 8-bit
+clean (though it currently lacks Unicode support), and the
+number of editing buffers and windows is only limited by
+available memory and screen space respectively. Registers,
+minibuffer completion and auto fill are available. Function
+and variable names are identical with Emacs's (except those
+containing the word \"emacs\", which instead contain the word
+\"zile\"!).
+
+However, all of this is packed into a program which typically
+compiles to about 130Kb.")
+ (license gpl3+)))