summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-06-20 23:51:00 +0200
committerLudovic Courtès <ludo@gnu.org>2013-06-20 23:51:00 +0200
commitd501fad11cfbd69245a4d5e2d632a0ab37985b55 (patch)
tree4d5a347efb3a5476937b21cb5bdb26204aaeea0c /gnu
parent4db00e42109b6f8229259859deac35499eec9004 (diff)
parentf3211ef3868326e3cec5318bc799a2ff6572741b (diff)
downloadguix-d501fad11cfbd69245a4d5e2d632a0ab37985b55.tar.gz
Merge branch 'master' into core-updates
Conflicts:
	gnu/packages/make-bootstrap.scm
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/bdb.scm6
-rw-r--r--gnu/packages/gd.scm68
-rw-r--r--gnu/packages/ghostscript.scm20
-rw-r--r--gnu/packages/graphviz.scm124
-rw-r--r--gnu/packages/gtk.scm109
-rw-r--r--gnu/packages/imagemagick.scm92
-rw-r--r--gnu/packages/libpng.scm5
-rw-r--r--gnu/packages/linux.scm97
-rw-r--r--gnu/packages/make-bootstrap.scm192
-rw-r--r--gnu/packages/pkg-config.scm5
-rw-r--r--gnu/packages/scheme.scm73
-rw-r--r--gnu/packages/subversion.scm58
-rw-r--r--gnu/packages/version-control.scm36
13 files changed, 726 insertions, 159 deletions
diff --git a/gnu/packages/bdb.scm b/gnu/packages/bdb.scm
index 9a626b17d7..75a2b72b44 100644
--- a/gnu/packages/bdb.scm
+++ b/gnu/packages/bdb.scm
@@ -45,7 +45,11 @@
             (system* "./dist/configure"
                      (string-append "--prefix=" out)
                      (string-append "CONFIG_SHELL=" (which "bash"))
-                     (string-append "SHELL=" (which "bash"))))))
+                     (string-append "SHELL=" (which "bash"))
+
+                     ;; The compatibility mode is needed by some packages,
+                     ;; notably iproute2.
+                     "--enable-compat185"))))
        %standard-phases)))
    (synopsis "db, the Berkeley database")
    (description
diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm
new file mode 100644
index 0000000000..13bcd45f77
--- /dev/null
+++ b/gnu/packages/gd.scm
@@ -0,0 +1,68 @@
+;;; 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 gd)
+  #:use-module (guix packages)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix download)
+  #:use-module (gnu packages libpng)
+  #:use-module (gnu packages libjpeg)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages compression)
+  #:use-module ((guix licenses) #:select (bsd-style)))
+
+(define-public gd
+  (package
+    (name "gd")
+
+    ;; Note: With libgd.org now pointing to bitbucket.org, genuine old
+    ;; tarballs are no longer available.  Notably, versions 2.0.34 and .35 are
+    ;; missing.
+    (version "2.0.33")
+
+    (source (origin
+             (method url-fetch)
+             (uri "https://bitbucket.org/libgd/gd-libgd/get/GD_2_0_33.tar.gz")
+             (sha256
+              (base32
+               "0yrbx8mj9pykyzm0zl1q86xlkdvkajcsf5jmg688vhw9yc5wmbbw"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (alist-cons-after
+                 'unpack 'chdir
+                 (lambda _
+                   (chdir "src"))
+                 %standard-phases)))
+    (inputs
+     `(("freetype" ,freetype)
+       ("libpng" ,libpng)
+       ("zlib" ,zlib)))
+    (propagated-inputs
+     `(("fontconfig" ,fontconfig)
+       ("libjpeg" ,libjpeg)))
+    (home-page "http://www.libgd.org/")
+    (synopsis "Library for the dynamic creation of images by programmers")
+    (description
+     "GD is a library for the dynamic creation of images by programmers.  GD
+is written in C, and \"wrappers\" are available for Perl, PHP and other
+languages.  GD creates PNG, JPEG, GIF, WebP, XPM, BMP images, among other
+formats.  GD is commonly used to generate charts, graphics, thumbnails, and
+most anything else, on the fly.  While not restricted to use on the web, the
+most common applications of GD involve website development.")
+    (license (bsd-style "file://COPYING"
+                        "See COPYING file in the distribution."))))
diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm
index 04aac9d94e..dd6c576cdf 100644
--- a/gnu/packages/ghostscript.scm
+++ b/gnu/packages/ghostscript.scm
@@ -214,3 +214,23 @@ Ghostscript. It currently includes the 35 standard PostScript fonts.")
    (license license:gpl2)
    (home-page "http://sourceforge.net/projects/gs-fonts/")))
 
+(define-public libspectre
+  (package
+   (name "libspectre")
+   (version "0.2.7")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append "http://libspectre.freedesktop.org/releases/libspectre-"
+                                version ".tar.gz"))
+            (sha256 (base32
+                     "1v63lqc6bhhxwkpa43qmz8phqs8ci4dhzizyy16d3vkb20m846z8"))))
+   (build-system gnu-build-system)
+   (inputs `(("ghostscript" ,ghostscript)
+             ("pkg-config" ,pkg-config)))
+   (synopsis "postscript rendering library")
+   (description
+    "libspectre is a small library for rendering Postscript documents.
+It provides a convenient easy to use API for handling and rendering
+Postscript documents.")
+   (license license:gpl2+)
+   (home-page "http://www.freedesktop.org/wiki/Software/libspectre")))
diff --git a/gnu/packages/graphviz.scm b/gnu/packages/graphviz.scm
new file mode 100644
index 0000000000..d49b3d07dc
--- /dev/null
+++ b/gnu/packages/graphviz.scm
@@ -0,0 +1,124 @@
+;;; 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 graphviz)
+  #:use-module (guix packages)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix download)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages bison)
+  #:use-module (gnu packages libpng)
+  #:use-module (gnu packages libjpeg)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages gd)
+  #:use-module ((guix licenses) #:select (lgpl2.0+ epl1.0)))
+
+(define-public graphviz
+  (package
+    (name "graphviz")
+    (version "2.28.0")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append
+                   "http://www.graphviz.org/pub/graphviz/ARCHIVE/graphviz-"
+                   version
+                   ".tar.gz"))
+             (sha256
+              (base32
+               "0xpwg99cd8sp0c6r8klsmc66h1pday64kmnr4v6f9jkqqmrpkank"))))
+    (build-system gnu-build-system)
+    (arguments
+     ;; FIXME: rtest/rtest.sh is a ksh script (!).  Add ksh as an input.
+     '(#:tests? #f
+
+       #:phases (alist-cons-before
+                 'build 'pre-build
+                 (lambda _
+                   ;; Work around bogus makefile when using an external
+                   ;; libltdl.  Failing to do so, one hits this error:
+                   ;; "No rule to make target `-lltdl', needed by `libgvc.la'."
+                   (substitute* "lib/gvc/Makefile"
+                     (("am__append_5 *=.*")
+                      "am_append_5 =\n")))
+                 %standard-phases)))
+    (inputs
+     `(("libXrender" ,libxrender)
+       ("libX11" ,libx11)
+       ("gts" ,gts)
+       ("gd" ,gd)                                 ; FIXME: Our GD is too old
+       ("pango" ,pango)
+       ("fontconfig" ,fontconfig)
+       ("freetype" ,freetype)
+       ("libltdl" ,libtool)
+       ("bison" ,bison)
+       ("libXaw" ,libxaw)
+       ("expat" ,expat)
+       ("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("pkg-config" ,pkg-config)))
+    (home-page "http://www.graphviz.org/")
+    (synopsis "Graph visualization software")
+    (description
+     "Graphviz is a graph visualization tool suite.  Graph visualization is a
+way of representing structural information as diagrams of abstract graphs and
+networks.  It has important applications in networking, bioinformatics,
+software engineering, database and web design, machine learning, and in visual
+interfaces for other technical domains.")
+    (license epl1.0)))
+
+(define-public gts
+  (package
+    (name "gts")
+    (version "0.7.6")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "mirror://sourceforge/gts/gts-"
+                                 version ".tar.gz"))
+             (sha256
+              (base32
+               "07mqx09jxh8cv9753y2d2jsv7wp8vjmrd7zcfpbrddz3wc9kx705"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (alist-cons-before
+                 'check 'pre-check
+                 (lambda _
+                   (chmod "test/boolean/test.sh" #o777))
+                 %standard-phases)
+
+       ;; Some data files used by the test suite are missing.
+       ;; See <http://sourceforge.net/p/gts/bugs/41/>.
+       #:tests? #f))
+    (inputs
+     `(("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     ;; The gts.pc file has glib-2.0 as required.
+     `(("glib" ,glib)))
+    (home-page "http://gts.sourceforge.net/")
+
+    ;; Note: Despite the name, this is not official GNU software.
+    (synopsis "Triangulated Surface Library")
+    (description
+     "Library intended to provide a set of useful functions to deal with
+3D surfaces meshed with interconnected triangles.")
+    (license lgpl2.0+)))
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 5dfe20f523..38ad05e074 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -22,8 +22,16 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages glib)
-  #:use-module (gnu packages pkg-config))
+  #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages libpng)
+  #:use-module (gnu packages pdf)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages xorg))
 
 (define-public atk
   (package
@@ -46,3 +54,102 @@ by other toolkits and applications. Using the ATK interfaces, accessibility
 tools have full access to view and control running applications.")
    (license license:lgpl2.0+)
    (home-page "https://developer.gnome.org/atk/")))
+
+(define-public cairo
+  (package
+   (name "cairo")
+   (version "1.12.14")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append "http://cairographics.org/releases/cairo-"
+                                version ".tar.xz"))
+            (sha256
+             (base32
+              "04xcykglff58ygs0dkrmmnqljmpjwp2qgwcz8sijqkdpz7ix3l4n"))))
+   (build-system gnu-build-system)
+   (propagated-inputs
+    `(("fontconfig" ,fontconfig)
+      ("freetype" ,freetype)
+      ("glib" ,glib)
+      ("libpng" ,libpng)
+      ("libx11" ,libx11)
+      ("libxext" ,libxext)
+      ("libxrender" ,libxrender)
+      ("pixman" ,pixman)))
+   (inputs
+    `(("ghostscript" ,ghostscript)
+      ("libspectre" ,libspectre)
+      ("pkg-config" ,pkg-config)
+      ("poppler" ,poppler)
+      ("python" ,python)
+      ("xextproto" ,xextproto)
+      ("zlib" ,zlib)))
+    (arguments
+      `(#:tests? #f)) ; see http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00085.html
+   (synopsis "2D graphics library")
+   (description
+    "Cairo is a 2D graphics library with support for multiple output devices.
+Currently supported output targets include the X Window System (via both
+Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file
+output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.
+
+Cairo is designed to produce consistent output on all output media while
+taking advantage of display hardware acceleration when available
+eg. through the X Render Extension).
+
+The cairo API provides operations similar to the drawing operators of
+PostScript and PDF. Operations in cairo including stroking and filling cubic
+Bézier splines, transforming and compositing translucent images, and
+antialiased text rendering. All drawing operations can be transformed by any
+affine transformation (scale, rotation, shear, etc.)")
+   (license license:lgpl2.1) ; or Mozilla Public License 1.1
+   (home-page "http://cairographics.org/")))
+
+(define-public harfbuzz
+  (package
+   (name "harfbuzz")
+   (version "0.9.18")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append "http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-"
+                                version ".tar.bz2"))
+            (sha256
+             (base32
+              "026rlwspf1zn5akds9fwibpqpn47kmlnmqm5fi0cp4k4dnygpw7y"))))
+   (build-system gnu-build-system)
+   (inputs
+    `(("cairo" ,cairo)
+      ("icu4c" ,icu4c)
+      ("pkg-config" ,pkg-config)
+      ("python" ,python)))
+   (synopsis "opentype text shaping engine")
+   (description
+    "HarfBuzz is an OpenType text shaping engine.")
+   (license (license:x11-style "file://COPYING"
+                       "See 'COPYING' in the distribution."))
+   (home-page "http://www.freedesktop.org/wiki/Software/HarfBuzz/")))
+
+(define-public pango
+  (package
+   (name "pango")
+   (version "1.34.1")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append "mirror://gnome/sources/pango/1.34/pango-"
+                                version ".tar.xz"))
+            (sha256
+             (base32
+              "0k7662qix7zzh7mf6ikdj594n8jpbfm25z8swz64zbm86kgk1shs"))))
+   (build-system gnu-build-system)
+   (inputs
+    `(("cairo" ,cairo)
+      ("harfbuzz" ,harfbuzz)
+      ("pkg-config" ,pkg-config)
+      ("zlib" ,zlib)))
+   (synopsis "GNOME text and font handling library")
+   (description
+    "Pango is the core text and font handling library used in GNOME
+applications. It has extensive support for the different writing systems
+used throughout the world.")
+   (license license:lgpl2.0+)
+   (home-page "https://developer.gnome.org/pango/")))
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
new file mode 100644
index 0000000000..e408b13fa3
--- /dev/null
+++ b/gnu/packages/imagemagick.scm
@@ -0,0 +1,92 @@
+;;; 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 imagemagick)
+  #:use-module (guix packages)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix download)
+  #:use-module ((guix licenses) #:select (fsf-free))
+  #:use-module (gnu packages libjpeg)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages graphviz)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages libpng)
+  #:use-module (gnu packages libtiff)
+  #:use-module (gnu packages libjpeg)
+  #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages pkg-config))
+
+(define-public imagemagick
+  (package
+    (name "imagemagick")
+    (version "6.8.6-0")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "mirror://imagemagick/ImageMagick-"
+                                 version ".tar.xz"))
+             (sha256
+              (base32
+               "1qmwpnq2mcxjnp0rjyb2g7v87lhmll19imx3iys6kplh8amrmqnv"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases (alist-cons-before
+                 'build 'pre-build
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (substitute* "Makefile"
+                     ;; Clear the `LIBRARY_PATH' setting, which otherwise
+                     ;; interferes with our own use.
+                     (("^LIBRARY_PATH[[:blank:]]*=.*$")
+                      "")
+
+                     ;; Since the Makefile overrides $docdir, modify it to
+                     ;; refer to what we want.
+                     (("^DOCUMENTATION_PATH[[:blank:]]*=.*$")
+                      (let ((doc (assoc-ref outputs "doc")))
+                        (string-append "DOCUMENTATION_PATH = "
+                                       doc "/share/doc/"
+                                       ,name "-" ,version "\n")))))
+                 %standard-phases)))
+    ;; TODO: Add Jasper, LCMS, etc.
+    (inputs `(("graphviz" ,graphviz)
+              ("ghostscript" ,ghostscript)
+              ("libx11" ,libx11)
+              ("zlib" ,zlib)
+              ("libxml2" ,libxml2)
+              ("libtiff" ,libtiff)
+              ("libpng" ,libpng)
+              ("libjpeg" ,libjpeg-8)
+              ("pango" ,pango)
+              ("freetype" ,freetype)
+              ("bzip2" ,bzip2)
+              ("xz" ,xz)
+              ("pkg-config" ,pkg-config)))
+    (outputs '("out"
+               "doc"))                          ; 26 MiB of HTML documentation
+    (home-page "http://www.imagemagick.org/")
+    (synopsis "Create, edit, compose, or convert bitmap images")
+    (description
+     "ImageMagick® is a software suite to create, edit, compose, or convert
+bitmap images. It can read and write images in a variety of formats (over 100)
+including DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG,
+and TIFF. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and
+transform images, adjust image colors, apply various special effects, or draw
+text, lines, polygons, ellipses and Bézier curves.")
+    (license (fsf-free "http://www.imagemagick.org/script/license.php"))))
diff --git a/gnu/packages/libpng.scm b/gnu/packages/libpng.scm
index 06facc9a9a..32f38194e4 100644
--- a/gnu/packages/libpng.scm
+++ b/gnu/packages/libpng.scm
@@ -37,7 +37,10 @@
             (sha256 (base32
                      "0m3vz3gig7s63zanq5b1dgb5ph12qm0cylw4g4fbxlsq3f74hn8l"))))
    (build-system gnu-build-system)
-   (inputs `(("zlib" ,zlib)))
+
+   ;; libpng.la says "-lz", so propagate it.
+   (propagated-inputs `(("zlib" ,zlib)))
+
    (synopsis "Libpng, a library for handling PNG files")
    (description
     "Libpng is the official PNG (Portable Network Graphics) reference
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 0708b5cb81..0bc9fbcb5e 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -23,8 +23,10 @@
   #:use-module ((gnu packages compression)
                 #:renamer (symbol-prefix-proc 'guix:))
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages bison)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages bdb)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (guix packages)
@@ -78,12 +80,18 @@
     (arguments
      `(#:modules ((guix build gnu-build-system)
                   (guix build utils)
-                  (srfi srfi-1))
+                  (srfi srfi-1)
+                  ,@(if (%current-target-system)
+                        '((guix build gnu-cross-build))
+                        '()))
        #:phases (alist-replace
                  'build ,(build-phase (%current-system))
                  (alist-replace
                   'install ,install-phase
-                  (alist-delete 'configure %standard-phases)))
+                  (alist-delete 'configure
+                                ,(if (%current-target-system)
+                                     '%standard-cross-phases
+                                     '%standard-phases))))
        #:tests? #f))
     (synopsis "GNU Linux-Libre kernel headers")
     (description "Headers of the Linux-Libre kernel.")
@@ -449,3 +457,88 @@ trace of all the system calls made by a another process/program.")
      "The Advanced Linux Sound Architecture (ALSA) provides audio and
 MIDI functionality to the Linux-based operating system.")
     (license lgpl2.1+)))
+
+(define-public iptables
+  (package
+    (name "iptables")
+    (version "1.4.16.2")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append
+                   "http://www.netfilter.org/projects/iptables/files/iptables-"
+                   version ".tar.bz2"))
+             (sha256
+              (base32
+               "0vkg5lzkn4l3i1sm6v3x96zzvnv9g7mi0qgj6279ld383mzcws24"))))
+    (build-system gnu-build-system)
+    (arguments '(#:tests? #f))                    ; no test suite
+    (home-page "http://www.netfilter.org/projects/iptables/index.html")
+    (synopsis "Program to configure the Linux IP packet filtering rules")
+    (description
+     "iptables is the userspace command line program used to configure the
+Linux 2.4.x and later IPv4 packet filtering ruleset.  It is targeted towards
+system administrators.  Since Network Address Translation is also configured
+from the packet filter ruleset, iptables is used for this, too.  The iptables
+package also includes ip6tables.  ip6tables is used for configuring the IPv6
+packet filter.")
+    (license gpl2+)))
+
+(define-public iproute
+  (package
+    (name "iproute2")
+    (version "3.8.0")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append
+                   "mirror://kernel.org/linux/utils/net/iproute2/iproute2-"
+                   version ".tar.xz"))
+             (sha256
+              (base32
+               "0kqy30wz2krbg4y7750hjq5218hgy2vj9pm5qzkn1bqskxs4b4ap"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                                ; no test suite
+       #:make-flags (let ((out (assoc-ref %outputs "out")))
+                      (list "DESTDIR="
+                            (string-append "LIBDIR=" out "/lib")
+                            (string-append "SBINDIR=" out "/sbin")
+                            (string-append "CONFDIR=" out "/etc")
+                            (string-append "DOCDIR=" out "/share/doc/"
+                                           ,name "-" ,version)
+                            (string-append "MANDIR=" out "/share/man")))
+       #:phases (alist-cons-before
+                 'install 'pre-install
+                 (lambda _
+                   ;; Don't attempt to create /var/lib/arpd.
+                   (substitute* "Makefile"
+                     (("^.*ARPDDIR.*$") "")))
+                 %standard-phases)))
+    (inputs
+     `(("iptables" ,iptables)
+       ("db4" ,bdb)
+       ("pkg-config" ,pkg-config)
+       ("flex" ,flex)
+       ("bison" ,bison)))
+    (home-page
+     "http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2")
+    (synopsis
+     "A collection of utilities for controlling TCP/IP networking and traffic control in Linux")
+    (description
+     "Iproute2 is a collection of utilities for controlling TCP/IP
+networking and traffic with the Linux kernel.
+
+Most network configuration manuals still refer to ifconfig and route as the
+primary network configuration tools, but ifconfig is known to behave
+inadequately in modern network environments.  They should be deprecated, but
+most distros still include them.  Most network configuration systems make use
+of ifconfig and thus provide a limited feature set.  The /etc/net project aims
+to support most modern network technologies, as it doesn't use ifconfig and
+allows a system administrator to make use of all iproute2 features, including
+traffic control.
+
+iproute2 is usually shipped in a package called iproute or iproute2 and
+consists of several tools, of which the most important are ip and tc.  ip
+controls IPv4 and IPv6 configuration and tc stands for traffic control.  Both
+tools print detailed usage messages and are accompanied by a set of
+manpages.")
+    (license gpl2+)))
diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index b927d5db25..c8de969b1a 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -49,33 +49,39 @@
 ;;;
 ;;; 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)
+(define* (glibc-for-bootstrap #:optional (base glibc-final))
+  "Return a libc deriving from BASE whose `system' and `popen' functions looks
+for `sh' in $PATH, and without nscd, and with static NSS modules."
+  (package (inherit base)
     (arguments
-     (substitute-keyword-arguments (package-arguments glibc-final)
+     (substitute-keyword-arguments (package-arguments base)
        ((#:patches patches)
-        `(cons (assoc-ref %build-inputs "patch/system") ,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))))
+	;; 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"))))
+       ,@(package-inputs base)))))
+
+(define (package-with-relocatable-glibc p)
+  "Return a variant of P that uses the libc as defined by
+`glibc-for-bootstrap'."
+
+  (define inputs
+    `(("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"))))
+
+  (package-with-explicit-inputs p inputs
+				(current-source-location)))
 
 (define %bash-static
   (static-package bash-light))
@@ -83,18 +89,22 @@
 (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))))))
+                      (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.  Keep Perl
+                      ;; except if it's missing (which is the case when
+                      ;; cross-compiling).
+                      (inputs (match (assoc "perl" (package-inputs coreutils))
+                                (#f '())
+                                (x  (list x))))))
         (bzip2 (package (inherit bzip2)
                  (arguments
                   (substitute-keyword-arguments (package-arguments bzip2)
@@ -131,11 +141,8 @@
                               (("-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)))))
+	(finalize (compose static-package
+			   package-with-relocatable-glibc)))
     `(,@(map (match-lambda
               ((name package)
                (list name (finalize package))))
@@ -280,7 +287,7 @@
   ;; 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))
+  (let ((glibc (glibc-for-bootstrap)))
     (package (inherit glibc)
       (name "glibc-stripped")
       (build-system trivial-build-system)
@@ -331,7 +338,7 @@
 
 (define %gcc-static
   ;; A statically-linked GCC, with stripped-down functionality.
-  (package-with-explicit-inputs
+  (package-with-relocatable-glibc
    (package (inherit gcc-final)
      (name "gcc-static")
      (arguments
@@ -358,11 +365,10 @@
             ((#: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))
+	       ("mpfr-source" ,(package-source mpfr))
+	       ("mpc-source" ,(package-source mpc))
+	       ("binutils" ,binutils-final)
+	       ,@(package-inputs gcc-4.7))))))
 
 (define %gcc-stripped
   ;; The subset of GCC files needed for bootstrap.
@@ -405,54 +411,52 @@
   ;; .scm and .go files relative to its installation directory, rather
   ;; than in hard-coded configure-time paths.
   (let* ((guile (package (inherit guile-2.0)
-                  (name (string-append (package-name guile-2.0) "-static"))
-                  (inputs
-                   `(("patch/relocatable"
-                      ,(search-patch "guile-relocatable.patch"))
-                     ("patch/utf8"
-                      ,(search-patch "guile-default-utf8.patch"))
-                     ("patch/syscalls"
-                      ,(search-patch "guile-linux-syscalls.patch"))
-                     ,@(package-inputs guile-2.0)))
-                  (propagated-inputs
-                   `(("bdw-gc" ,libgc)
-                     ,@(alist-delete "bdw-gc"
-                                     (package-propagated-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")
-                           (assoc-ref %build-inputs "patch/syscalls"))
-
-                     ;; 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))))
+		  (name (string-append (package-name guile-2.0) "-static"))
+		  (inputs
+		   `(("patch/relocatable"
+		      ,(search-patch "guile-relocatable.patch"))
+		     ("patch/utf8"
+		      ,(search-patch "guile-default-utf8.patch"))
+		     ("patch/syscalls"
+		      ,(search-patch "guile-linux-syscalls.patch"))
+		     ,@(package-inputs guile-2.0)))
+		  (propagated-inputs
+		   `(("bdw-gc" ,libgc)
+		     ,@(alist-delete "bdw-gc"
+				     (package-propagated-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")
+			   (assoc-ref %build-inputs "patch/syscalls"))
+
+		     ;; There are uses of `dynamic-link' in
+		     ;; {foreign,coverage}.test that don't fly here.
+		     #:tests? #f)))))
+    (package-with-relocatable-glibc (static-package guile))))
 
 (define %guile-static-stripped
   ;; A stripped static Guile binary, for use during bootstrap.
diff --git a/gnu/packages/pkg-config.scm b/gnu/packages/pkg-config.scm
index 9f10440fec..eb5f748bda 100644
--- a/gnu/packages/pkg-config.scm
+++ b/gnu/packages/pkg-config.scm
@@ -24,7 +24,10 @@
   #:use-module (guix build-system trivial)
   #:export (pkg-config))
 
-(define %pkg-config
+;; This is the "primitive" pkg-config package.  People should use `pkg-config'
+;; (see below) rather than `%pkg-config', but we export `%pkg-config' so that
+;; `fold-packages' finds it.
+(define-public %pkg-config
   (package
    (name "pkg-config")
    (version "0.27.1")
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index c79a709ecd..1e66750b01 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -31,6 +31,10 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages libphidget)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages libffi)
+  #:use-module (gnu packages libjpeg)
+  #:use-module ((gnu packages gtk) #:select (cairo pango))
   #:use-module (ice-9 match))
 
 (define-public mit-scheme
@@ -319,3 +323,72 @@ implementation techniques and as an expository tool.")
 
     ;; Most files are BSD-3; see COPYING for the few exceptions.
     (license bsd-3)))
+
+(define-public racket
+  (package
+    (name "racket")
+    (version "5.3.4")
+    (source (origin
+             (method url-fetch)
+             (uri (list (string-append "http://download.racket-lang.org/installers/"
+                                       version "/racket/racket-" version
+                                       "-src-unix.tgz")
+                        (string-append
+                         "http://mirror.informatik.uni-tuebingen.de/mirror/racket/"
+                         version "/racket/racket-" version "-src-unix.tgz")))
+             (sha256
+              ;; XXX: Used to be 1xhnx3yd74zrvn6sfcqmk57kxj51cwvm660dwiaxr1qxnm5lq0v7.
+              (base32 "0yrdmpdvzf092869y6zjjjxl6j2kypgiv7qrfkv7lj8w01pbh7sd"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases
+       (let* ((gui-libs
+               (lambda (inputs)
+                 ;; FIXME: Add GTK+ and GDK for DrRacket.
+                 (let ((glib     (string-append (assoc-ref inputs "glib") "/lib"))
+                       (cairo    (string-append (assoc-ref inputs "cairo") "/lib"))
+                       (pango    (string-append (assoc-ref inputs "pango") "/lib"))
+                       (libjpeg  (string-append (assoc-ref inputs "libjpeg") "/lib")))
+                   (list glib cairo pango libjpeg)))))
+         (alist-cons-before
+          'configure 'pre-configure
+          (lambda* (#:key inputs #:allow-other-keys)
+            (chdir "src")
+
+            ;; The GUI libs are dynamically opened through the FFI, so they
+            ;; must be in the loader's search path.
+            (setenv "LD_LIBRARY_PATH" (string-join (gui-libs inputs) ":")))
+          (alist-cons-after
+           'unpack 'patch-/bin/sh
+           (lambda _
+             (substitute* "collects/racket/system.rkt"
+               (("/bin/sh") (which "sh"))))
+           (alist-cons-after
+            'install 'wrap-programs
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (let ((out (assoc-ref outputs "out")))
+                (define (wrap prog)
+                  (wrap-program prog
+                                `("LD_LIBRARY_PATH" ":" prefix
+                                  ,(gui-libs inputs))))
+
+                (with-directory-excursion (string-append out "/bin")
+                  (for-each wrap
+                            (list "gracket" "drracket" "slideshow" "mred"))
+                  #t)))
+            %standard-phases))))
+       #:tests? #f                                ; XXX: how to run them?
+       ))
+    (inputs `(("libffi" ,libffi)
+              ("glib" ,glib)                      ; for DrRacket
+              ("cairo" ,cairo)
+              ("pango" ,pango)
+              ("libjpeg" ,libjpeg-8)))
+    (home-page "http://racket-lang.org")
+    (synopsis "Implementation of Scheme and related languages")
+    (description
+     "Racket is an implementation of the Scheme programming language (R5RS and
+R6RS) and related languages, such as Typed Racket.  It features a compiler and
+a virtual machine with just-in-time native compilation, as well as a large set
+of libraries.")
+    (license lgpl2.0+)))
diff --git a/gnu/packages/subversion.scm b/gnu/packages/subversion.scm
deleted file mode 100644
index 28ddc42e00..0000000000
--- a/gnu/packages/subversion.scm
+++ /dev/null
@@ -1,58 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
-;;;
-;;; 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 subversion)
-  #:use-module ((guix licenses) #:select (asl2.0))
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system gnu)
-  #:use-module (gnu packages)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages libapr)
-  #:use-module (gnu packages perl)
-  #:use-module (gnu packages python)
-  #:use-module (gnu packages sqlite))
-
-(define-public subversion
-  (package
-    (name "subversion")
-    (version "1.7.8")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "https://archive.apache.org/dist/subversion/subversion-"
-                                 version ".tar.bz2"))
-             (sha256
-              (base32
-               "11inl9n1riahfnbk1fax0dysm2swakzhzhpmm2zvga6fikcx90zw"))))
-    (build-system gnu-build-system)
-    (inputs
-      `(("libapr" ,libapr)
-        ("libaprutil" ,libaprutil)
-        ("perl" ,perl)
-        ("python" ,python)
-        ("sqlite" ,sqlite)
-        ("zlib" ,zlib)))
-    (home-page "http://subversion.apache.org/")
-    (synopsis "Subversion, a revision control system")
-    (description
-     "Subversion exists to be universally recognized and adopted as an
-open-source, centralized version control system characterized by its
-reliability as a safe haven for valuable data; the simplicity of its model and
-usage; and its ability to support the needs of a wide variety of users and
-projects, from individuals to large-scale enterprise operations.")
-    (license asl2.0)))
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 6654be93b2..018cf1b9f8 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
+;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -17,7 +18,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages version-control)
-  #:use-module ((guix licenses) #:select (gpl1+ gpl2+ gpl3+))
+  #:use-module ((guix licenses) #:select (asl2.0 gpl1+ gpl2+ gpl3+))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
@@ -25,7 +26,11 @@
   #:use-module (guix build utils)
   #:use-module ((gnu packages gettext)
                 #:renamer (symbol-prefix-proc 'guix:))
+  #:use-module (gnu packages libapr)
   #:use-module (gnu packages nano)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages compression))
 
 (define-public bazaar
@@ -56,6 +61,35 @@ organize their workspace in whichever way they want.  It is possible to work
 from a command line or use a GUI application.")
     (license gpl2+)))
 
+(define-public subversion
+  (package
+    (name "subversion")
+    (version "1.7.8")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "https://archive.apache.org/dist/subversion/subversion-"
+                                 version ".tar.bz2"))
+             (sha256
+              (base32
+               "11inl9n1riahfnbk1fax0dysm2swakzhzhpmm2zvga6fikcx90zw"))))
+    (build-system gnu-build-system)
+    (inputs
+      `(("libapr" ,libapr)
+        ("libaprutil" ,libaprutil)
+        ("perl" ,perl)
+        ("python" ,python)
+        ("sqlite" ,sqlite)
+        ("zlib" ,zlib)))
+    (home-page "http://subversion.apache.org/")
+    (synopsis "Subversion, a revision control system")
+    (description
+     "Subversion exists to be universally recognized and adopted as an
+open-source, centralized version control system characterized by its
+reliability as a safe haven for valuable data; the simplicity of its model and
+usage; and its ability to support the needs of a wide variety of users and
+projects, from individuals to large-scale enterprise operations.")
+    (license asl2.0)))
+
 (define-public rcs
   (package
     (name "rcs")