summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2015-06-10 17:50:27 -0400
committerMark H Weaver <mhw@netris.org>2015-06-10 17:50:27 -0400
commit14928016556300a6763334d4279c3d117902caaf (patch)
treed0dc262b14164b82f97dd6e896ca9e93a1fabeea /gnu
parent1511e0235525358abb52cf62abeb9457605b5093 (diff)
parent57cd353d87d6e9e6e882327be70b4d7b5ce863ba (diff)
downloadguix-14928016556300a6763334d4279c3d117902caaf.tar.gz
Merge branch 'master' into core-updates
Diffstat (limited to 'gnu')
-rw-r--r--gnu/artwork.scm4
-rw-r--r--gnu/build/activation.scm39
-rw-r--r--gnu/build/install.scm16
-rw-r--r--gnu/build/linux-boot.scm1
-rw-r--r--gnu/packages/admin.scm26
-rw-r--r--gnu/packages/apr.scm25
-rw-r--r--gnu/packages/audio.scm145
-rw-r--r--gnu/packages/autogen.scm8
-rw-r--r--gnu/packages/bioinformatics.scm313
-rw-r--r--gnu/packages/busybox.scm5
-rw-r--r--gnu/packages/calendar.scm52
-rw-r--r--gnu/packages/cdrom.scm8
-rw-r--r--gnu/packages/check.scm9
-rw-r--r--gnu/packages/commencement.scm24
-rw-r--r--gnu/packages/compression.scm4
-rw-r--r--gnu/packages/cups.scm4
-rw-r--r--gnu/packages/curl.scm7
-rw-r--r--gnu/packages/databases.scm83
-rw-r--r--gnu/packages/dejagnu.scm4
-rw-r--r--gnu/packages/disk.scm28
-rw-r--r--gnu/packages/ebook.scm7
-rw-r--r--gnu/packages/emacs.scm192
-rw-r--r--gnu/packages/feh.scm4
-rw-r--r--gnu/packages/fltk.scm35
-rw-r--r--gnu/packages/freedesktop.scm128
-rw-r--r--gnu/packages/ftp.scm8
-rw-r--r--gnu/packages/game-development.scm43
-rw-r--r--gnu/packages/games.scm75
-rw-r--r--gnu/packages/gcc.scm87
-rw-r--r--gnu/packages/gdb.scm4
-rw-r--r--gnu/packages/gimp.scm7
-rw-r--r--gnu/packages/gl.scm55
-rw-r--r--gnu/packages/glib.scm5
-rw-r--r--gnu/packages/gnome.scm405
-rw-r--r--gnu/packages/gnu-pw-mgr.scm13
-rw-r--r--gnu/packages/gnucash.scm72
-rw-r--r--gnu/packages/gnupg.scm10
-rw-r--r--gnu/packages/gnutls.scm10
-rw-r--r--gnu/packages/gnuzilla.scm16
-rw-r--r--gnu/packages/gstreamer.scm4
-rw-r--r--gnu/packages/gtk.scm42
-rw-r--r--gnu/packages/guile.scm117
-rw-r--r--gnu/packages/haskell.scm7
-rw-r--r--gnu/packages/ibus.scm2
-rw-r--r--gnu/packages/icu4c.scm4
-rw-r--r--gnu/packages/image.scm8
-rw-r--r--gnu/packages/imagemagick.scm4
-rw-r--r--gnu/packages/java.scm16
-rw-r--r--gnu/packages/kde.scm2
-rw-r--r--gnu/packages/libedit.scm2
-rw-r--r--gnu/packages/libreoffice.scm753
-rw-r--r--gnu/packages/libusb.scm11
-rw-r--r--gnu/packages/linux.scm84
-rw-r--r--gnu/packages/m4.scm11
-rw-r--r--gnu/packages/mail.scm48
-rw-r--r--gnu/packages/man.scm4
-rw-r--r--gnu/packages/maths.scm163
-rw-r--r--gnu/packages/messaging.scm7
-rw-r--r--gnu/packages/moe.scm6
-rw-r--r--gnu/packages/networking.scm (renamed from gnu/packages/socat.scm)56
-rw-r--r--gnu/packages/ocaml.scm328
-rw-r--r--gnu/packages/openldap.scm20
-rw-r--r--gnu/packages/package-management.scm22
-rw-r--r--gnu/packages/parallel.scm4
-rw-r--r--gnu/packages/patches/bitlbee-configure-doc-fix.patch15
-rw-r--r--gnu/packages/patches/curl-support-capath-on-gnutls-conf.patch16
-rw-r--r--gnu/packages/patches/curl-support-capath-on-gnutls.patch102
-rw-r--r--gnu/packages/patches/fltk-shared-lib-defines.patch51
-rw-r--r--gnu/packages/patches/fuse-CVE-2015-3202.patch65
-rw-r--r--gnu/packages/patches/gcc-5.0-libvtv-runpath.patch15
-rw-r--r--gnu/packages/patches/gnutls-fix-duplicate-manpages.patch30
-rw-r--r--gnu/packages/patches/guix-test-networking.patch15
-rw-r--r--gnu/packages/patches/hop-linker-flags.patch60
-rw-r--r--gnu/packages/patches/inetutils-syslogd.patch20
-rw-r--r--gnu/packages/patches/libtool-skip-tests.patch55
-rw-r--r--gnu/packages/patches/linux-libre-libreboot-fix.patch37
-rw-r--r--gnu/packages/patches/maxima-defsystem-mkdir.patch13
-rw-r--r--gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch15
-rw-r--r--gnu/packages/patches/qemu-CVE-2015-3209.patch49
-rw-r--r--gnu/packages/patches/qemu-CVE-2015-3456.patch85
-rw-r--r--gnu/packages/patches/r-fix-15899.patch17
-rw-r--r--gnu/packages/patches/rsem-makefile.patch682
-rw-r--r--gnu/packages/patches/serf-comment-style-fix.patch23
-rw-r--r--gnu/packages/patches/serf-deflate-buckets-test-fix.patch69
-rw-r--r--gnu/packages/patches/subversion-sqlite-3.8.9-fix.patch59
-rw-r--r--gnu/packages/patches/tvtime-gcc41.patch58
-rw-r--r--gnu/packages/patches/tvtime-pngoutput.patch15
-rw-r--r--gnu/packages/patches/tvtime-videodev2.patch15
-rw-r--r--gnu/packages/patches/tvtime-xmltv.patch28
-rw-r--r--gnu/packages/patches/udev-gir-libtool.patch17
-rw-r--r--gnu/packages/patches/wicd-template-instantiation.patch29
-rw-r--r--gnu/packages/patches/wpa-supplicant-2015-2-fix.patch51
-rw-r--r--gnu/packages/patches/wpa-supplicant-2015-3-fix.patch43
-rw-r--r--gnu/packages/patches/wpa-supplicant-2015-4-fix-pt1.patch75
-rw-r--r--gnu/packages/patches/wpa-supplicant-2015-4-fix-pt2.patch68
-rw-r--r--gnu/packages/patches/wpa-supplicant-2015-4-fix-pt3.patch54
-rw-r--r--gnu/packages/patches/wpa-supplicant-2015-4-fix-pt4.patch52
-rw-r--r--gnu/packages/patches/wpa-supplicant-2015-4-fix-pt5.patch34
-rw-r--r--gnu/packages/pcre.scm6
-rw-r--r--gnu/packages/pdf.scm4
-rw-r--r--gnu/packages/perl.scm45
-rw-r--r--gnu/packages/python.scm337
-rw-r--r--gnu/packages/qemu.scm11
-rw-r--r--gnu/packages/rdf.scm6
-rw-r--r--gnu/packages/ruby.scm197
-rw-r--r--gnu/packages/scheme.scm66
-rw-r--r--gnu/packages/search.scm25
-rw-r--r--gnu/packages/statistics.scm3
-rw-r--r--gnu/packages/task-management.scm61
-rw-r--r--gnu/packages/tcsh.scm18
-rw-r--r--gnu/packages/textutils.scm50
-rw-r--r--gnu/packages/tor.scm7
-rw-r--r--gnu/packages/tv.scm64
-rw-r--r--gnu/packages/version-control.scm26
-rw-r--r--gnu/packages/video.scm6
-rw-r--r--gnu/packages/vpn.scm31
-rw-r--r--gnu/packages/web.scm70
-rw-r--r--gnu/packages/webkit.scm53
-rw-r--r--gnu/packages/wicd.scm8
-rw-r--r--gnu/packages/wxwidgets.scm3
-rw-r--r--gnu/packages/xfce.scm32
-rw-r--r--gnu/packages/xml.scm33
-rw-r--r--gnu/services/avahi.scm2
-rw-r--r--gnu/services/base.scm19
-rw-r--r--gnu/services/colord.scm72
-rw-r--r--gnu/services/databases.scm121
-rw-r--r--gnu/services/dbus.scm127
-rw-r--r--gnu/services/desktop.scm300
-rw-r--r--gnu/services/networking.scm34
-rw-r--r--gnu/services/upower.scm122
-rw-r--r--gnu/services/xorg.scm73
-rw-r--r--gnu/system.scm101
-rw-r--r--gnu/system/examples/bare-bones.tmpl (renamed from gnu/system/os-config.tmpl)28
-rw-r--r--gnu/system/examples/desktop.tmpl44
-rw-r--r--gnu/system/grub.scm3
-rw-r--r--gnu/system/install.scm43
-rw-r--r--gnu/system/nss.scm23
-rw-r--r--gnu/system/shadow.scm46
138 files changed, 6744 insertions, 1314 deletions
diff --git a/gnu/artwork.scm b/gnu/artwork.scm
index c3b1695ba7..94c89143a6 100644
--- a/gnu/artwork.scm
+++ b/gnu/artwork.scm
@@ -32,9 +32,9 @@
     (method git-fetch)
     (uri (git-reference
           (url "git://git.savannah.gnu.org/guix/guix-artwork.git")
-          (commit "61ae7c8")))
+          (commit "6998d30")))
     (sha256
      (base32
-      "102fxk2l6b0ibry3n430q8ljhwrnbml9qgalzkz6v09r7sx6a532"))))
+      "0k7j3pj9s3zqiqmfkapypssvzx3f12yr0cc2rbzxqfii0b4clp1j"))))
 
 ;;; artwork.scm ends here
diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm
index 0c60355a1c..352e736050 100644
--- a/gnu/build/activation.scm
+++ b/gnu/build/activation.scm
@@ -78,6 +78,11 @@
 (define (dot-or-dot-dot? file)
   (member file '("." "..")))
 
+(define (make-file-writable file)
+  "Make FILE writable for its owner.."
+  (let ((stat (lstat file)))                      ;XXX: symlinks
+    (chmod file (logior #o600 (stat:perms stat)))))
+
 (define* (copy-account-skeletons home
                                  #:optional (directory %skeleton-directory))
   "Copy the account skeletons from DIRECTORY to HOME."
@@ -85,8 +90,21 @@
                         string<?)))
     (mkdir-p home)
     (for-each (lambda (file)
-                (copy-file (string-append directory "/" file)
-                           (string-append home "/" file)))
+                (let ((target (string-append home "/" file)))
+                  (copy-file (string-append directory "/" file) target)
+                  (make-file-writable target)))
+              files)))
+
+(define* (make-skeletons-writable home
+                                  #:optional (directory %skeleton-directory))
+  "Make sure that the files that have been copied from DIRECTORY to HOME are
+owner-writable in HOME."
+  (let ((files (scandir directory (negate dot-or-dot-dot?)
+                        string<?)))
+    (for-each (lambda (file)
+                (let ((target (string-append home "/" file)))
+                  (when (file-exists? target)
+                    (make-file-writable target))))
               files)))
 
 (define* (add-user name group
@@ -128,7 +146,14 @@ properties.  Return #t on success."
                     ,@(if password `("-p" ,password) '())
                     ,@(if system? '("--system") '())
                     ,name)))
-        (zero? (apply system* "useradd" args)))))
+        (and (zero? (apply system* "useradd" args))
+             (begin
+               ;; Since /etc/skel is a link to a directory in the store where
+               ;; all files have the writable bit cleared, and since 'useradd'
+               ;; preserves permissions when it copies them, explicitly make
+               ;; them writable.
+               (make-skeletons-writable home)
+               #t)))))
 
 (define* (modify-user name group
                       #:key uid comment home shell password system?
@@ -344,9 +369,11 @@ found in Linux 3.4 onward that prevents users from attaching to their own
 processes--see Yama.txt in the Linux source tree for the rationale.  This
 sounds like an unacceptable restriction for little or no security
 improvement."
-  (call-with-output-file "/proc/sys/kernel/yama/ptrace_scope"
-    (lambda (port)
-      (display 0 port))))
+  (let ((file "/proc/sys/kernel/yama/ptrace_scope"))
+    (when (file-exists? file)
+      (call-with-output-file file
+        (lambda (port)
+          (display 0 port))))))
 
 
 (define %current-system
diff --git a/gnu/build/install.scm b/gnu/build/install.scm
index 76536daf49..32fbe8efbc 100644
--- a/gnu/build/install.scm
+++ b/gnu/build/install.scm
@@ -133,9 +133,19 @@ includes /etc, /var, /run, /bin/sh, etc., and all the symlinks to SYSTEM."
             (directives (%store-directory)))
 
   ;; Add system generation 1.
-  (false-if-exception (delete-file "/var/guix/profiles/system-1-link"))
-  (symlink system
-           (string-append target "/var/guix/profiles/system-1-link")))
+  (let ((generation-1 (string-append target
+                                     "/var/guix/profiles/system-1-link")))
+    (let try ()
+      (catch 'system-error
+        (lambda ()
+          (symlink system generation-1))
+        (lambda args
+          ;; If GENERATION-1 already exists, overwrite it.
+          (if (= EEXIST (system-error-errno args))
+              (begin
+                (delete-file generation-1)
+                (try))
+              (apply throw args)))))))
 
 (define (reset-timestamps directory)
   "Reset the timestamps of all the files under DIRECTORY, so that they appear
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
index f54e3d3a35..3081a93a97 100644
--- a/gnu/build/linux-boot.scm
+++ b/gnu/build/linux-boot.scm
@@ -418,7 +418,6 @@ to it are lost."
              (switch-root "/root")
              (format #t "loading '~a'...\n" to-load)
 
-             ;; TODO: Remove /lib, /share, and /loader.go.
              (primitive-load to-load)
 
              (format (current-error-port)
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index ffaf6b4fc7..a96ce9cdfb 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -152,25 +152,20 @@ re-executing them as necessary.")
 (define-public inetutils
   (package
     (name "inetutils")
-    (version "1.9.2")
+    (version "1.9.3")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/inetutils/inetutils-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "04wrm0v7l4890mmbaawd6wjwdv08bkglgqhpz0q4dkb0l50fl8q4"))
-             (patches (list (search-patch "inetutils-syslogd.patch")))))
+               "06dshajjpyi9sxi7qfki9gnp5r3nxvyvf81r81gx0x2qkqzqcxlj"))))
     (build-system gnu-build-system)
     (arguments `(;; FIXME: `tftp.sh' relies on `netstat' from utils-linux,
                  ;; which is currently missing.
                  #:tests? #f))
     (inputs `(("ncurses" ,ncurses)
               ("readline" ,readline)))            ; for 'ftp'
-
-    ;; Help2man is needed because of the patch that modifies syslogd.c.
-    (native-inputs `(("help2man" ,help2man)))
-
     (home-page "http://www.gnu.org/software/inetutils/")
     (synopsis "Basic networking utilities")
     (description
@@ -693,7 +688,7 @@ commands and their arguments.")
 (define-public wpa-supplicant-light
   (package
     (name "wpa-supplicant-light")
-    (version "2.3")
+    (version "2.4")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -702,9 +697,16 @@ commands and their arguments.")
                     ".tar.gz"))
               (sha256
                (base32
-                "0skvkl6c10ls4s48b2wmf47h9j1y40nlzxnzn8hyaw2j0prmpapa"))
+                "08li21q1wjn5chrv289w666il9ah1w419y3dkq2rl4wnq0rci385"))
               (patches
-               (list (search-patch "wpa-supplicant-CVE-2015-1863.patch")))))
+               (map search-patch '("wpa-supplicant-CVE-2015-1863.patch"
+                                   "wpa-supplicant-2015-2-fix.patch"
+                                   "wpa-supplicant-2015-3-fix.patch"
+                                   "wpa-supplicant-2015-4-fix-pt1.patch"
+                                   "wpa-supplicant-2015-4-fix-pt2.patch"
+                                   "wpa-supplicant-2015-4-fix-pt3.patch"
+                                   "wpa-supplicant-2015-4-fix-pt4.patch"
+                                   "wpa-supplicant-2015-4-fix-pt5.patch")))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (alist-replace
@@ -872,7 +874,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
 (define-public acpica
   (package
     (name "acpica")
-    (version "20140724")
+    (version "20150410")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -880,7 +882,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
                     version ".tar.gz"))
               (sha256
                (base32
-                "01vdgrh7dsxrrvg5yd8sxm63cw8210pnsi5qg9g15ac53gn243ac"))))
+                "0q1fjwkyw9x6gsva6fd0zbn7ly4fx0ha4853f416np9kf2irillw"))))
     (build-system gnu-build-system)
     (native-inputs `(("flex" ,flex)
                      ("bison" ,bison)))
diff --git a/gnu/packages/apr.scm b/gnu/packages/apr.scm
index ed9c62819d..8c57ee3ab2 100644
--- a/gnu/packages/apr.scm
+++ b/gnu/packages/apr.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
-;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -18,25 +18,26 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages apr)
-  #:use-module (guix licenses)
+  #:use-module ((guix licenses) #:prefix l:)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages xml)
   #:use-module (gnu packages autotools))
 
 (define-public apr
   (package
     (name "apr")
-    (version "1.5.1")
+    (version "1.5.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://apache/apr/apr-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "1b4qw686bwjn19iyb0lg918q23xxd6s2gnyczhjq992d3m1vwjp9"))
+               "0ypn51xblix5ys9xy7da3ngdydip0qqh9rdq8nz54w9aq8lys0vx"))
              (patches
               (list (search-patch "apr-skip-getservbyname-test.patch")))
              (patch-flags '("-p0"))))
@@ -59,7 +60,7 @@ an API to which software developers may code and be assured of predictable if
 not identical behaviour regardless of the platform on which their software is
 built, relieving them of the need to code special-case conditions to work
 around or take advantage of platform-specific deficiencies or features.")
-    (license asl2.0)))
+    (license l:asl2.0)))
 
 (define-public apr-util
   (package
@@ -74,19 +75,23 @@ around or take advantage of platform-specific deficiencies or features.")
                "0bn81pfscy9yjvbmyx442svf43s6dhrdfcsnkpxz43fai5qk5kx6"))))
     (build-system gnu-build-system)
     (inputs
-      `(("apr" ,apr)))
+     `(("apr" ,apr)))
+    (propagated-inputs
+     `(("expat" ,expat)))
     (arguments
      '(#:phases
        (alist-replace
         'configure
         (lambda* (#:key inputs outputs #:allow-other-keys)
-          (let ((out (assoc-ref outputs "out"))
-                (apr (assoc-ref inputs "apr")))
+          (let ((out   (assoc-ref outputs "out"))
+                (apr   (assoc-ref inputs  "apr"))
+                (expat (assoc-ref inputs  "expat")))
             (setenv "CONFIG_SHELL" (which "bash"))
             (zero?
              (system* "./configure"
                       (string-append "--prefix=" out)
-                      (string-append "--with-apr=" apr)))))
+                      (string-append "--with-apr=" apr)
+                      (string-append "--with-expat=" expat)))))
         %standard-phases)
 
        ;; There are race conditions during 'make check'.  Typically, the
@@ -98,4 +103,4 @@ around or take advantage of platform-specific deficiencies or features.")
     (synopsis "One of the Apache Portable Runtime Library companions")
     (description
      "APR-util provides a number of helpful abstractions on top of APR.")
-    (license asl2.0)))
+    (license l:asl2.0)))
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 6cba704b6d..fdc783a455 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,6 +22,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix utils)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system waf)
@@ -128,7 +130,23 @@ attacks, performing pitch detection, tapping the beat and producing MIDI
 streams from live audio.")
     (license license:gpl3+)))
 
-(define-public ardour
+(define (ardour-rpath-phase major-version)
+  `(lambda* (#:key outputs #:allow-other-keys)
+     (let ((libdir (string-append (assoc-ref outputs "out")
+                                  "/lib/ardour" ,major-version)))
+       (substitute* "wscript"
+         (("linker_flags = \\[\\]")
+          (string-append "linker_flags = [\""
+                         "-Wl,-rpath="
+                         libdir ":"
+                         libdir "/backends" ":"
+                         libdir "/engines" ":"
+                         libdir "/panners" ":"
+                         libdir "/surfaces" ":"
+                         libdir "/vamp" "\"]"))))
+     #t))
+
+(define-public ardour-3
   (package
     (name "ardour")
     (version "3.5.403")
@@ -140,6 +158,9 @@ streams from live audio.")
                     (url "git://git.ardour.org/ardour/ardour.git")
                     (commit version)))
               (snippet
+               ;; Ardour expects this file to exist at build time.  It can be
+               ;; created from a git checkout with:
+               ;;   ./waf create_stored_revision
                '(call-with-output-file
                     "libs/ardour/revision.cc"
                   (lambda (port)
@@ -151,7 +172,12 @@ namespace ARDOUR { const char* revision = \"3.5-403-gec2cb31\" ; }"))))
               (file-name (string-append name "-" version))))
     (build-system waf-build-system)
     (arguments
-     `(#:tests? #f ; no check target
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after
+          'unpack 'set-rpath-in-LDFLAGS
+          ,(ardour-rpath-phase (version-prefix version 1))))
+       #:tests? #f ; no check target
        #:python ,python-2))
     (inputs
      `(("alsa-lib" ,alsa-lib)
@@ -183,8 +209,6 @@ namespace ARDOUR { const char* revision = \"3.5-403-gec2cb31\" ; }"))))
        ("sratom" ,sratom)
        ("suil" ,suil)
        ("lilv" ,lilv)
-       ("rasqal" ,rasqal)
-       ("raptor2" ,raptor2)
        ("redland" ,redland)
        ("rubberband" ,rubberband)
        ("taglib" ,taglib)
@@ -200,6 +224,35 @@ record, edit, mix and master audio and MIDI projects.  It is targeted at audio
 engineers, musicians, soundtrack editors and composers.")
     (license license:gpl2+)))
 
+(define-public ardour
+  (package (inherit ardour-3)
+    (name "ardour")
+    (version "4.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "git://git.ardour.org/ardour/ardour.git")
+                    (commit version)))
+              (snippet
+               ;; Ardour expects this file to exist at build time.  It can be
+               ;; created from a git checkout with:
+               ;;   ./waf create_stored_revision
+               '(call-with-output-file
+                    "libs/ardour/revision.cc"
+                  (lambda (port)
+                    (format port "#include \"ardour/revision.h\"
+namespace ARDOUR { const char* revision = \"4.0\" ; }"))))
+              (sha256
+               (base32
+                "0a8bydc24xv0cahdqfaxdmi1f43cyr9psiyshxpbrkdqw2c7a4xi"))
+              (file-name (string-append name "-" version))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments ardour-3)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (replace 'set-rpath-in-LDFLAGS
+                    ,(ardour-rpath-phase (version-prefix version 1)))))))))
+
 (define-public azr3
   (package
     (name "azr3")
@@ -466,6 +519,46 @@ patches that can be used with softsynths such as Timidity and WildMidi.")
     ;; GPLv2+ with exception for compositions using these patches.
     (license license:gpl2+)))
 
+(define-public ir
+  (package
+    (name "ir")
+    (version "1.3.2")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append
+                   "http://factorial.hu/system/files/ir.lv2-"
+                   version ".tar.gz"))
+             (sha256
+              (base32
+               "1jh2z01l9m4ar7yz0n911df07dygc7n4cl59p7qdjbh0nvkm747g"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ;no "check" target
+       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:phases
+       ;; no configure script
+       (alist-delete 'configure %standard-phases)))
+    (inputs
+     `(("libsndfile" ,libsndfile)
+       ("libsamplerate" ,libsamplerate)
+       ("lv2" ,lv2)
+       ("glib" ,glib)
+       ("gtk+" ,gtk+-2)
+       ("zita-convolver" ,zita-convolver)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "LV2_PATH")
+            (files '("lib/lv2")))))
+    (home-page "http://factorial.hu/plugins/lv2/ir")
+    (synopsis "LV2 convolution reverb")
+    (description
+     "IR is a low-latency, real-time, high performance signal convolver
+especially for creating reverb effects.  It supports impulse responses with 1,
+2 or 4 channels, in any soundfile format supported by libsndfile.")
+    (license license:gpl2+)))
+
 (define-public jack-1
   (package
     (name "jack")
@@ -898,10 +991,8 @@ buffers, and audio capture.")
        ("boost" ,boost)
        ("jack" ,jack-1)
        ("ganv" ,ganv)
-       ("glib" ,glib)
        ("glibmm" ,glibmm)
        ("gtkmm" ,gtkmm-2)
-       ("dbus" ,dbus)
        ("dbus-glib" ,dbus-glib)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1386,6 +1477,48 @@ directly to a different computer on your LAN network.  It is an audio daemon
 with a much different focus than most other audio daemons.")
     (license license:gpl3+)))
 
+(define-public zita-convolver
+  (package
+    (name "zita-convolver")
+    (version "3.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://kokkinizita.linuxaudio.org"
+                    "/linuxaudio/downloads/zita-convolver-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "14qrnczhp5mbwhky64il7kxc4hl1mmh495v60va7i2qnhasr6zmz"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no "check" target
+       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:phases
+       (alist-cons-after
+        'unpack 'patch-makefile-and-enter-directory
+        (lambda _
+          (substitute* "libs/Makefile"
+            (("ldconfig") "true")
+            (("^LIBDIR =.*") "LIBDIR = lib\n"))
+          (chdir "libs") #t)
+        (alist-cons-after
+         'install
+         'install-symlink
+         (lambda _
+           (symlink "libzita-convolver.so"
+                    (string-append (assoc-ref %outputs "out")
+                                   "/lib/libzita-convolver.so.3")))
+         ;; no configure script
+         (alist-delete 'configure %standard-phases)))))
+    (inputs `(("fftwf" ,fftwf)))
+    (home-page "http://kokkinizita.linuxaudio.org")
+    (synopsis "Fast, partitioned convolution engine library")
+    (description
+     "Zita convolver is a C++ library providing a real-time convolution
+engine.")
+    (license license:gpl3+)))
+
 (define-public zita-alsa-pcmi
   (package
     (name "zita-alsa-pcmi")
diff --git a/gnu/packages/autogen.scm b/gnu/packages/autogen.scm
index c27ea15e70..45b7cb81cc 100644
--- a/gnu/packages/autogen.scm
+++ b/gnu/packages/autogen.scm
@@ -23,13 +23,14 @@
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages base)
   #:use-module (gnu packages guile))
 
 (define-public autogen
   (package
     (name "autogen")
-    (version "5.18.4")
+    (version "5.18.5")
     (source
      (origin
       (method url-fetch)
@@ -38,9 +39,10 @@
                           version ".tar.gz"))
       (sha256
        (base32
-        "0pbjzwgvmjvi6nl1bcyhfc9kl93s6321dgmvp5dqdip7i8dgin9w"))))
+        "1flnbnmkbqmbfgammkl8m36wrlk6rhpgnf9pdm6gdfhqalxvggbv"))))
     (build-system gnu-build-system)
-    (native-inputs `(("perl" ,perl)))   ;for doc generator mdoc
+    (native-inputs `(("perl" ,perl)     ;for doc generator mdoc
+                     ("pkg-config" ,pkg-config)))
     (inputs `(("which" ,which)
               ("guile" ,guile-2.0)))
     (arguments
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index bcb7eba48f..c7836f173e 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -24,6 +24,7 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
@@ -45,6 +46,7 @@
   #:use-module (gnu packages tbb)
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages vim)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages zip))
 
@@ -62,7 +64,17 @@
                (base32
                 "1brry29bw2xr2l9pqn240rkqwayg85b8qq78zk2zs6nlspk4d018"))))
     (build-system cmake-build-system)
-    (arguments `(#:tests? #f)) ;no "check" target
+    (arguments
+     `(#:tests? #f ;no "check" target
+       #:phases
+       (modify-phases %standard-phases
+         (add-before
+          'configure 'set-ldflags
+          (lambda* (#:key outputs #:allow-other-keys)
+            (setenv "LDFLAGS"
+                    (string-append
+                     "-Wl,-rpath="
+                     (assoc-ref outputs "out") "/lib/bamtools")))))))
     (inputs `(("zlib" ,zlib)))
     (home-page "https://github.com/pezmaster31/bamtools")
     (synopsis "C++ API and command-line toolkit for working with BAM data")
@@ -532,6 +544,74 @@ file formats including SAM/BAM, Wiggle/BigWig, BED, GFF/GTF, VCF.")
 other types of unwanted sequence from high-throughput sequencing reads.")
     (license license:expat)))
 
+(define-public edirect
+  (package
+    (name "edirect")
+    (version "2.50")
+    (source (origin
+              (method url-fetch)
+              ;; Note: older versions are not retained.
+              (uri "ftp://ftp.ncbi.nlm.nih.gov/entrez/entrezdirect/edirect.zip")
+              (sha256
+               (base32
+                "08afhz2ph66h8h381hl1mqyxkdi5nbvzsyj9gfw3jfbdijnpi4qj"))))
+    (build-system perl-build-system)
+    (arguments
+     `(#:tests? #f ;no "check" target
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+                  (lambda* (#:key outputs #:allow-other-keys)
+                    (let ((target (string-append (assoc-ref outputs "out")
+                                                 "/bin")))
+                      (mkdir-p target)
+                      (copy-file "edirect.pl"
+                                 (string-append target "/edirect.pl"))
+                      #t)))
+         (add-after
+          'install 'wrap-program
+          (lambda* (#:key inputs outputs #:allow-other-keys)
+            ;; Make sure 'edirect.pl' finds all perl inputs at runtime.
+            (let* ((out (assoc-ref outputs "out"))
+                   (path (getenv "PERL5LIB")))
+              (wrap-program (string-append out "/bin/edirect.pl")
+                `("PERL5LIB" ":" prefix (,path)))))))))
+    (inputs
+     `(("perl-html-parser" ,perl-html-parser)
+       ("perl-encode-locale" ,perl-encode-locale)
+       ("perl-file-listing" ,perl-file-listing)
+       ("perl-html-tagset" ,perl-html-tagset)
+       ("perl-html-tree" ,perl-html-tree)
+       ("perl-http-cookies" ,perl-http-cookies)
+       ("perl-http-date" ,perl-http-date)
+       ("perl-http-message" ,perl-http-message)
+       ("perl-http-negotiate" ,perl-http-negotiate)
+       ("perl-lwp-mediatypes" ,perl-lwp-mediatypes)
+       ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
+       ("perl-net-http" ,perl-net-http)
+       ("perl-uri" ,perl-uri)
+       ("perl-www-robotrules" ,perl-www-robotrules)
+       ("perl" ,perl)))
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (home-page "http://www.ncbi.nlm.nih.gov/books/NBK179288")
+    (synopsis "Tools for accessing the NCBI's set of databases")
+    (description
+     "Entrez Direct (EDirect) is a method for accessing the National Center
+for Biotechnology Information's (NCBI) set of interconnected
+databases (publication, sequence, structure, gene, variation, expression,
+etc.) from a terminal.  Functions take search terms from command-line
+arguments.  Individual operations are combined to build multi-step queries.
+Record retrieval and formatting normally complete the process.
+
+EDirect also provides an argument-driven function that simplifies the
+extraction of data from document summaries or other results that are returned
+in structured XML format.  This can eliminate the need for writing custom
+software to answer ad hoc questions.")
+    (license license:public-domain)))
+
 (define-public express
   (package
     (name "express")
@@ -839,6 +919,41 @@ sequencing (HTS) data.  There are also an number of useful utilities for
 manipulating HTS data.")
     (license license:expat)))
 
+(define-public htslib
+  (package
+    (name "htslib")
+    (version "1.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/samtools/htslib/releases/download/"
+                    version "/htslib-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "1c32ssscbnjwfw3dra140fq7riarp2x990qxybh34nr1p5r17nxx"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after
+          'unpack 'patch-tests
+          (lambda _
+            (substitute* "test/test.pl"
+              (("/bin/bash") (which "bash")))
+            #t)))))
+    (inputs
+     `(("zlib" ,zlib)))
+    (native-inputs
+     `(("perl" ,perl)))
+    (home-page "http://www.htslib.org")
+    (synopsis "C library for reading/writing high-throughput sequencing data")
+    (description
+     "HTSlib is a C library for reading/writing high-throughput sequencing
+data.  It also provides the bgzip, htsfile, and tabix utilities.")
+    ;; Files under cram/ are released under the modified BSD license;
+    ;; the rest is released under the Expat license
+    (license (list license:expat license:bsd-3))))
+
 (define-public macs
   (package
     (name "macs")
@@ -1003,6 +1118,84 @@ files and writing bioinformatics applications.")
 generated using the PacBio Iso-Seq protocol.")
       (license license:bsd-3))))
 
+(define-public rsem
+  (package
+    (name "rsem")
+    (version "1.2.20")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "http://deweylab.biostat.wisc.edu/rsem/src/rsem-"
+                       version ".tar.gz"))
+       (sha256
+        (base32 "0nzdc0j0hjllhsd5f2xli95dafm3nawskigs140xzvjk67xh0r9q"))
+       (patches (list (search-patch "rsem-makefile.patch")))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; remove bundled copy of boost
+           (delete-file-recursively "boost")
+           #t))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ;no "check" target
+       #:phases
+       (modify-phases %standard-phases
+         ;; No "configure" script.
+         ;; Do not build bundled samtools library.
+         (replace 'configure
+                  (lambda _
+                    (substitute* "Makefile"
+                      (("^all : sam/libbam.a") "all : "))
+                    #t))
+         (replace 'install
+                  (lambda* (#:key outputs #:allow-other-keys)
+                    (let* ((out (string-append (assoc-ref outputs "out")))
+                           (bin (string-append out "/bin/"))
+                           (perl (string-append out "/lib/perl5/site_perl")))
+                      (mkdir-p bin)
+                      (mkdir-p perl)
+                      (for-each (lambda (file)
+                                  (copy-file file
+                                             (string-append bin (basename file))))
+                                (find-files "." "rsem-.*"))
+                      (copy-file "rsem_perl_utils.pm"
+                                 (string-append perl "/rsem_perl_utils.pm")))
+                    #t))
+         (add-after
+          'install 'wrap-program
+          (lambda* (#:key outputs #:allow-other-keys)
+            (let ((out (assoc-ref outputs "out")))
+              (for-each (lambda (prog)
+                          (wrap-program (string-append out "/bin/" prog)
+                            `("PERL5LIB" ":" prefix
+                              (,(string-append out "/lib/perl5/site_perl")))))
+                        '("rsem-plot-transcript-wiggles"
+                          "rsem-calculate-expression"
+                          "rsem-generate-ngvector"
+                          "rsem-run-ebseq"
+                          "rsem-prepare-reference")))
+            #t)))))
+    (inputs
+     `(("boost" ,boost)
+       ("ncurses" ,ncurses)
+       ("r" ,r)
+       ("perl" ,perl)
+       ("samtools" ,samtools-0.1)
+       ("zlib" ,zlib)))
+    (home-page "http://deweylab.biostat.wisc.edu/rsem/")
+    (synopsis "Estimate gene expression levels from RNA-Seq data")
+    (description
+     "RSEM is a software package for estimating gene and isoform expression
+levels from RNA-Seq data.  The RSEM package provides a user-friendly
+interface, supports threads for parallel computation of the EM algorithm,
+single-end and paired-end read data, quality scores, variable-length reads and
+RSPD estimation.  In addition, it provides posterior mean and 95% credibility
+interval estimates for expression levels.  For visualization, it can generate
+BAM and Wiggle files in both transcript-coordinate and genomic-coordinate.")
+    (license license:gpl3+)))
+
 (define-public rseqc
   (package
     (name "rseqc")
@@ -1068,32 +1261,31 @@ distribution, coverage uniformity, strand specificity, etc.")
        ;; systems.
        #:tests? ,(string=? (or (%current-system) (%current-target-system))
                            "x86_64-linux")
-       #:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
+       #:make-flags (list "LIBCURSES=-lncurses"
+                          (string-append "prefix=" (assoc-ref %outputs "out")))
        #:phases
        (alist-cons-after
         'unpack
-        'patch-makefile-curses
-        (lambda _
-          (substitute* "Makefile"
-            (("-lcurses") "-lncurses")))
+        'patch-tests
+        (lambda* (#:key inputs #:allow-other-keys)
+          (let ((bash (assoc-ref inputs "bash")))
+            (substitute* "test/test.pl"
+              ;; The test script calls out to /bin/bash
+              (("/bin/bash")
+               (string-append bash "/bin/bash"))
+              ;; There are two failing tests upstream relating to the "stats"
+              ;; subcommand in test_usage_subcommand ("did not have Usage"
+              ;; and "usage did not mention samtools stats"), so we disable
+              ;; them.
+              (("(test_usage_subcommand\\(.*\\);)" cmd)
+               (string-append "unless ($subcommand eq 'stats') {" cmd "};")))))
         (alist-cons-after
-         'unpack
-         'patch-tests
-         (lambda* (#:key inputs #:allow-other-keys)
-           (let ((bash (assoc-ref inputs "bash")))
-             (substitute* "test/test.pl"
-               ;; The test script calls out to /bin/bash
-               (("/bin/bash")
-                (string-append bash "/bin/bash"))
-               ;; There are two failing tests upstream relating to the "stats"
-               ;; subcommand in test_usage_subcommand ("did not have Usage"
-               ;; and "usage did not mention samtools stats"), so we disable
-               ;; them.
-               (("(test_usage_subcommand\\(.*\\);)" cmd)
-                (string-append "unless ($subcommand eq 'stats') {" cmd "};")))))
-         (alist-delete
-          'configure
-          %standard-phases)))))
+         'install 'install-library
+         (lambda* (#:key outputs #:allow-other-keys)
+           (let ((lib (string-append (assoc-ref outputs "out") "/lib")))
+             (mkdir-p lib)
+             (copy-file "libbam.a" (string-append lib "/libbam.a"))))
+         (alist-delete 'configure %standard-phases)))))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("ncurses" ,ncurses)
               ("perl" ,perl)
@@ -1108,6 +1300,34 @@ variant calling (in conjunction with bcftools), and a simple alignment
 viewer.")
     (license license:expat)))
 
+(define-public samtools-0.1
+  ;; This is the most recent version of the 0.1 line of samtools.  The input
+  ;; and output formats differ greatly from that used and produced by samtools
+  ;; 1.x and is still used in many bioinformatics pipelines.
+  (package (inherit samtools)
+    (version "0.1.19")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "mirror://sourceforge/samtools/"
+                       version "/samtools-" version ".tar.bz2"))
+       (sha256
+        (base32 "1m33xsfwz0s8qi45lylagfllqg7fphf4dr0780rsvw75av9wk06h"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments samtools)
+       ((#:tests? tests) #f) ;no "check" target
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (replace 'install
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let ((bin (string-append
+                                  (assoc-ref outputs "out") "/bin")))
+                        (mkdir-p bin)
+                        (copy-file "samtools"
+                                   (string-append bin "/samtools")))))
+           (delete 'patch-tests)))))))
+
 (define-public ngs-sdk
   (package
     (name "ngs-sdk")
@@ -1266,11 +1486,16 @@ simultaneously.")
                                    (assoc-ref inputs "hdf5"))))))
         (alist-cons-after
          'install 'install-interfaces
-         (lambda* (#:key system outputs #:allow-other-keys)
-           ;; Install interface libraries
+         (lambda* (#:key outputs #:allow-other-keys)
+           ;; Install interface libraries.  On i686 the interface libraries
+           ;; are installed to "linux/gcc/i386", so we need to use the Linux
+           ;; architecture name ("i386") instead of the target system prefix
+           ;; ("i686").
            (mkdir (string-append (assoc-ref outputs "out") "/ilib"))
            (copy-recursively (string-append "build/ncbi-vdb/linux/gcc/"
-                                            (car (string-split system #\-))
+                                            ,(system->linux-architecture
+                                              (or (%current-target-system)
+                                                  (%current-system)))
                                             "/rel/ilib")
                              (string-append (assoc-ref outputs "out")
                                             "/ilib"))
@@ -1513,7 +1738,40 @@ against local background noises.")
              "/sources/shogun-" version ".tar.bz2"))
        (sha256
         (base32
-         "159nlijnb7mnrv9za80wnm1shwvy45hgrqzn51hxy7gw4z6d6fdb"))))
+         "159nlijnb7mnrv9za80wnm1shwvy45hgrqzn51hxy7gw4z6d6fdb"))
+       (modules '((guix build utils)
+                  (ice-9 rdelim)))
+       (snippet
+        '(begin
+           ;; Remove non-free sources and files referencing them
+           (for-each delete-file
+                     (find-files "src/shogun/classifier/svm/"
+                                 "SVMLight\\.(cpp|h)"))
+           (for-each delete-file
+                     (find-files "examples/undocumented/libshogun/"
+                                 (string-append
+                                  "(classifier_.*svmlight.*|"
+                                  "evaluation_cross_validation_locked_comparison).cpp")))
+           ;; Remove non-free functions.
+           (define (delete-ifdefs file)
+             (with-atomic-file-replacement file
+               (lambda (in out)
+                 (let loop ((line (read-line in 'concat))
+                            (skipping? #f))
+                   (if (eof-object? line)
+                       #t
+                       (let ((skip-next?
+                              (or (and skipping?
+                                       (not (string-prefix?
+                                             "#endif //USE_SVMLIGHT" line)))
+                                  (string-prefix?
+                                   "#ifdef USE_SVMLIGHT" line))))
+                         (when (or (not skipping?)
+                                   (and skipping? (not skip-next?)))
+                           (display line out))
+                         (loop (read-line in 'concat) skip-next?)))))))
+           (for-each delete-ifdefs (find-files "src/shogun/kernel/"
+                                               "^Kernel\\.(cpp|h)"))))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f ;no check target
@@ -1621,6 +1879,7 @@ in terms of new algorithms.")
     (arguments
      `(#:tests? #f ; no "check" target
        #:make-flags (list
+                     "CFLAGS=-O2" ; override "-m64" flag
                      (string-append "PREFIX=" (assoc-ref %outputs "out"))
                      (string-append "MANDIR=" (assoc-ref %outputs "out")
                                     "/share/man/man1"))
diff --git a/gnu/packages/busybox.scm b/gnu/packages/busybox.scm
index d200cd7ad5..13630b39dc 100644
--- a/gnu/packages/busybox.scm
+++ b/gnu/packages/busybox.scm
@@ -53,8 +53,9 @@
 
            ;; There is no /usr/bin or /bin - replace it with /gnu/store
            (substitute* "testsuite/cpio.tests"
-              (("/usr/bin") "/gnu/store")
-              (("usr") "gnu"))
+              (("/usr/bin") (%store-directory))
+              (("usr") (car (filter (negate string-null?)
+                                    (string-split (%store-directory) #\/)))))
 
            (substitute* "testsuite/date/date-works-1"
              (("/bin/date") (which "date")))
diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm
new file mode 100644
index 0000000000..7e87fbbfe4
--- /dev/null
+++ b/gnu/packages/calendar.scm
@@ -0,0 +1,52 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 David Thompson <davet@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 calendar)
+  #:use-module (gnu packages)
+  #:use-module (guix licenses)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system cmake)
+  #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages perl))
+
+(define-public libical
+  (package
+    (name "libical")
+    (version "1.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/libical/libical/releases/download/v"
+                    version "/libical-" version ".tar.gz"))
+              (sha256
+               (base32
+                "14lmjj63zyx88rf1z71l0v9ms4c2vpdhmixksjjxgywp5p2f7708"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:tests? #f)) ; test suite appears broken
+    (native-inputs
+     `(("perl" ,perl)))
+    (inputs
+     `(("icu4c" ,icu4c)))
+    (home-page "https://libical.github.io/libical/")
+    (synopsis "iCalendar protocols and data formats implementation")
+    (description
+     "Libical is an implementation of the iCalendar protocols and protocol
+data units.")
+    (license lgpl2.1)))
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 3383fb653d..8ecc909c79 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -95,7 +95,9 @@ caching facility provided by the library.")
 for CD-ROM and CD image file access.  It allows the developer to add CD
 access to an application without having to worry about the OS- and
 device-dependent properties of CD-ROM or the specific details of CD image
-formats.")
+formats.  It includes pycdio, a Python interface to libcdio, and
+libcdio-paranoia, a library providing jitter-free and error-free audio
+extraction from CDs.")
     (license gpl3+)))
 
 (define-public libcdio-paranoia
@@ -122,14 +124,14 @@ libcdio.")
 (define-public xorriso
   (package
     (name "xorriso")
-    (version "1.3.8")
+    (version "1.4.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/xorriso/xorriso-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "0zhhj9lr9z7hnb2alac54mc28w1l0mbanphhpmy3ylsi8rih84lh"))))
+               "0mhfxn2idkrw1i65a5y4gnb1fig85zpnszb9ax7w4a2v062y1l8b"))))
     (build-system gnu-build-system)
     (inputs
      `(("acl" ,acl)
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 3e686cc743..5349ede0fa 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -89,12 +90,18 @@ with a flexible variety of user interfaces.")
     (version "1.12.1")
     (source (origin
              (method url-fetch)
-              (uri (string-append "mirror://sourceforge/cppunit/" name "/" 
+              (uri (string-append "mirror://sourceforge/cppunit/" name "/"
                                   name "-"
                                   version ".tar.gz"))
              (sha256
               (base32
                "0jm49v5rmc5qw34vqs56gy8xja1dhci73bmh23cig4kcir6a0a5c"))))
+    ;; Explicitly link with libdl. This is expected to be done by packages
+    ;; relying on cppunit for their tests. However, not all of them do.
+    ;; If we added the linker flag to such packages, we would pollute all
+    ;; binaries, not only those used for testing.
+    (arguments
+     `(#:make-flags '("LDFLAGS=-ldl")))
     (build-system gnu-build-system)
     (home-page "http://sourceforge.net/projects/cppunit/")
     (synopsis "Unit testing framework for C++")
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 6a48fb640b..14af09395a 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -783,16 +783,26 @@ COREUTILS-FINAL vs. COREUTILS, etc."
      '(#:modules ((guix build union))
        #:builder (begin
                    (use-modules (ice-9 match)
+                                (srfi srfi-26)
                                 (guix build union))
 
-                   (match %build-inputs
-                     (((names . directories) ...)
-                      (union-build (assoc-ref %outputs "out")
-                                   directories)))
+                   (let ((out (assoc-ref %outputs "out")))
 
-                   (union-build (assoc-ref %outputs "debug")
-                                (list (assoc-ref %build-inputs
-                                                 "libc-debug"))))))
+                     (match %build-inputs
+                       (((names . directories) ...)
+                        (union-build out directories)))
+
+                     ;; Remove the 'sh' and 'bash' binaries that come with
+                     ;; libc to avoid polluting the user's profile (these are
+                     ;; statically-linked binaries with no locale support and
+                     ;; so on.)
+                     (for-each (lambda (file)
+                                 (delete-file (string-append out "/bin/" file)))
+                               '("sh" "bash"))
+
+                     (union-build (assoc-ref %outputs "debug")
+                                  (list (assoc-ref %build-inputs
+                                                   "libc-debug")))))))
 
     (native-search-paths (package-native-search-paths gcc))
     (search-paths (package-search-paths gcc))
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 4684fce130..78f967c3cb 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -297,7 +297,7 @@ archiving.  Lzip is a clean implementation of the LZMA algorithm.")
 (define-public sharutils
   (package
     (name "sharutils")
-    (version "4.15")
+    (version "4.15.2")
     (source
      (origin
       (method url-fetch)
@@ -305,7 +305,7 @@ archiving.  Lzip is a clean implementation of the LZMA algorithm.")
                           version ".tar.xz"))
       (sha256
        (base32
-        "19gqb6qbqmpgh6xlpgpj0ayw2nshllxg9d01qb5z8bnkhfcla8ka"))))
+        "16isapn8f39lnffc3dp4dan05b7x6mnc76v6q5nn8ysxvvvwy19b"))))
     (build-system gnu-build-system)
     (inputs
      `(("which" ,which)))
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index 3acf9dfd46..05b129d6a9 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -106,14 +106,14 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.")
 (define-public cups-minimal
   (package
     (name "cups-minimal")
-    (version "2.0.1")
+    (version "2.0.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://www.cups.org/software/"
                                   version "/cups-" version "-source.tar.gz"))
               (sha256
                (base32
-                "1kbc85kwhm1vyzahblrg3qih9yypggs91d13gdrbnaac8q7jd9jr"))))
+                "1kq1kpny0hghqgbjvashlv6qw1xn0c1p3d4r3cx8qxdzd2ifk4lf"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm
index 526514b815..ab22645971 100644
--- a/gnu/packages/curl.scm
+++ b/gnu/packages/curl.scm
@@ -38,17 +38,14 @@
 (define-public curl
   (package
    (name "curl")
-   (version "7.41.0")
+   (version "7.42.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "http://curl.haxx.se/download/curl-"
                                 version ".tar.lzma"))
             (sha256
              (base32
-              "08n7vrhdfzziy3a7n93r7qjhzk8p26q464hxg8w9irdk3v60pi62"))
-            (patches
-             (list (search-patch "curl-support-capath-on-gnutls.patch")
-                   (search-patch "curl-support-capath-on-gnutls-conf.patch")))))
+              "0ircrhi4i9iviq0d9044rq288sdrww19d0ci6vmb4fh8nmm1jv1x"))))
    (build-system gnu-build-system)
    (inputs `(("gnutls" ,gnutls)
              ("gss" ,gss)
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 5daf7ecba1..3e3fd1a560 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -49,6 +49,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system cmake)
+  #:use-module (guix utils)
   #:use-module (srfi srfi-26)
   #:use-module (ice-9 match))
 
@@ -100,53 +101,47 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
 (define-public mysql
   (package
     (name "mysql")
-    (version "5.1.73")
+    (version "5.6.25")
     (source (origin
              (method url-fetch)
              (uri (string-append
-                   "http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-"
-                   version ".tar.gz"))
+                   "http://dev.mysql.com/get/Downloads/MySQL-"
+                   (version-major+minor version) "/"
+                   name "-" version ".tar.gz"))
              (sha256
               (base32
-               "1dfwi4ck0vq6sdci6gz0031s7zz5lc3pddqlgm0292s00l9y5sq5"))))
-    (build-system gnu-build-system)
+               "1gbz5i1z3nswpq3q8f477vrx7g15j8n41pyb94k0jfnkhc5rq1qm"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags
+       '("-DBUILD_CONFIG=mysql_release"
+         "-DWITH_SSL=system"
+         "-DWITH_ZLIB=system"
+         "-DDEFAULT_CHARSET=utf8"
+         "-DDEFAULT_COLLATION=utf8_general_ci"
+         "-DMYSQL_DATADIR=/var/lib/mysql"
+         "-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock"
+         "-DINSTALL_INFODIR=share/mysql/docs"
+         "-DINSTALL_MANDIR=share/man"
+         "-DINSTALL_PLUGINDIR=lib/mysql/plugin"
+         "-DINSTALL_SCRIPTDIR=bin"
+         "-DINSTALL_INCLUDEDIR=include/mysql"
+         "-DINSTALL_DOCREADMEDIR=share/mysql/docs"
+         "-DINSTALL_SUPPORTFILESDIR=share/mysql"
+         "-DINSTALL_MYSQLSHAREDIR=share/mysql"
+         "-DINSTALL_DOCDIR=share/mysql/docs"
+         "-DINSTALL_SHAREDIR=share/mysql"
+         ;; Get rid of test data.
+         "-DINSTALL_MYSQLTESTDIR="
+         "-DINSTALL_SQLBENCHDIR=")))
+    (native-inputs
+     `(("bison" ,bison)
+       ("perl" ,perl)))
     (inputs
-     `(("procps" ,procps)
+     `(("libaio" ,libaio)
        ("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 "Fast, easy to use, and popular database")
     (description
@@ -158,7 +153,7 @@ Language.")
 (define-public mariadb
   (package
     (name "mariadb")
-    (version "10.0.17")
+    (version "10.0.18")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://downloads.mariadb.org/f/"
@@ -166,7 +161,7 @@ Language.")
                                   name "-" version ".tar.gz"))
               (sha256
                (base32
-                "04ckq67qgkghh7yzrbzwidk7wn7yjml15gzj2c5p1hs2k7lr9lww"))))
+                "1xcs391cm0vnl9bvx1470v8z4d77zqv16n6iaqi12jm0ma8fwvv8"))))
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags
@@ -226,14 +221,14 @@ as a drop-in replacement of MySQL.")
 (define-public postgresql
   (package
     (name "postgresql")
-    (version "9.3.6")
+    (version "9.3.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://ftp.postgresql.org/pub/source/v"
                                   version "/postgresql-" version ".tar.bz2"))
               (sha256
                (base32
-                "056ass7nnfyv7blv02anv795kgpz77gipdpxggd835cdwrhwns13"))))
+                "0ggz0i91znv053zx9qas7pjf93s5by3dk84z1jxbjkg8yyrnlx4b"))))
     (build-system gnu-build-system)
     (inputs
      `(("readline" ,readline)
@@ -289,7 +284,7 @@ types are supported, as is encryption.")
 (define-public sqlite
   (package
    (name "sqlite")
-   (version "3.8.8.3")
+   (version "3.8.9")
    (source (origin
             (method url-fetch)
             ;; TODO: Download from sqlite.org once this bug :
@@ -309,7 +304,7 @@ types are supported, as is encryption.")
                     "/sqlite-autoconf-" numeric-version ".tar.gz")))
             (sha256
              (base32
-              "04dl53iv5q0srv4jcgjfzsrdzkq6dg1sgmlmpw9lrd4xrmj6jmvl"))))
+              "18k90bbfvvgc5204nm1hzw0vsj9ygzv7zbq3z6zrya6j5hwvdsvn"))))
    (build-system gnu-build-system)
    (inputs `(("readline" ,readline)))
    (arguments
diff --git a/gnu/packages/dejagnu.scm b/gnu/packages/dejagnu.scm
index 203bd6ea2c..60fd2124f0 100644
--- a/gnu/packages/dejagnu.scm
+++ b/gnu/packages/dejagnu.scm
@@ -26,7 +26,7 @@
 (define-public dejagnu
   (package
     (name "dejagnu")
-    (version "1.5.2")
+    (version "1.5.3")
     (source
      (origin
       (method url-fetch)
@@ -34,7 +34,7 @@
                           version ".tar.gz"))
       (sha256
        (base32
-        "18ikblg4x4y5fkw8sg0c2zmqgxdqqycswmws17sxx8m4sz6g7dch"))))
+        "069z3qrdv35cm2sbnfr5yjzplrqj9f61cchxis7j9mm19hv8x6q9"))))
     (build-system gnu-build-system)
     (inputs `(("expect" ,expect)))
     (arguments
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 6a7fdcfb19..22fdd290a0 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org>
+;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -119,3 +120,30 @@ from one file to another, working to rescue data in case of read errors.  The
 program also includes a tool for manipulating its log files, which are used
 to recover data more efficiently by only reading the necessary blocks.")
     (license gpl3+)))
+
+(define-public dosfstools
+  (package
+    (name "dosfstools")
+    (version "3.0.27")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/" name "/" name
+                           "/releases/download/v" version "/"
+                           name "-" version ".tar.xz"))
+       (sha256
+        (base32
+         "1a2qs5g2zqbk1gzaaf4v3fw3yny6jgbzddpgcamkp3fjifn8wxl5"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags (list (string-append "PREFIX=" %output)
+                          "CC=gcc")
+       #:tests? #f  ;no tests
+       #:phases (modify-phases %standard-phases
+                  (delete 'configure))))
+    (home-page "https://github.com/dosfstools/dosfstools")
+    (synopsis "Utilities for making and checking MS-DOS FAT filesystems")
+    (description
+     "The dosfstools package includes the mkfs.fat and fsck.fat utilities,
+which respectively make and check MS-DOS FAT filesystems.")
+    (license gpl3+)))
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index 101c5bad37..2be5ea351a 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -25,7 +25,6 @@
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages databases)
-  #:use-module (gnu packages ebook)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages glib)
@@ -33,6 +32,7 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages libusb)
+  #:use-module (gnu packages openssl)
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
@@ -60,7 +60,7 @@
 (define-public calibre
   (package
     (name "calibre")
-    (version "2.25.0")
+    (version "2.29.0")
     (source
       (origin
         (method url-fetch)
@@ -69,7 +69,7 @@
                             version ".tar.xz"))
         (sha256
           (base32
-           "0h7cnwdd9phk4n5hl6xggkn7szvqsds5847mnk2wg2j2j1lzp2r0"))
+           "1n3cfnjnghhhsgzcbcvbr0gh191lhl6az09q1s68jhlcc2lski6l"))
         ;; Remove non-free or doubtful code, see
         ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html
         (modules '((guix build utils)))
@@ -106,6 +106,7 @@
        ("libpng" ,libpng)
        ("libusb" ,libusb)
        ("libxrender" ,libxrender)
+       ("openssl" ,openssl)
        ("podofo" ,podofo)
        ("python" ,python-2)
        ("python2-apsw" ,python2-apsw)
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 8d3df368b1..fbddff1cf6 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -23,10 +23,12 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
+  #:use-module (gnu packages guile)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages ncurses)
@@ -146,6 +148,35 @@ editor (without an X toolkit)" )
     (arguments (append '(#:configure-flags '("--with-x-toolkit=no"))
                        (package-arguments emacs)))))
 
+(define-public guile-emacs
+  (package (inherit emacs)
+    (name "guile-emacs")
+    (version "20150512.41120e0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "git://git.hcoop.net/git/bpt/emacs.git")
+                    (commit "41120e0f595b16387eebfbf731fff70481de1b4b")))
+              (sha256
+               (base32
+                "0lvcvsz0f4mawj04db35p1dvkffdqkz8pkhc0jzh9j9x2i63kcz6"))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("guile" ,guile-for-guile-emacs)
+       ,@(package-native-inputs emacs)))
+    (arguments
+     (substitute-keyword-arguments `(;; Build fails if we allow parallel build.
+                                     #:parallel-build? #f
+                                     ;; Tests aren't passing for now.
+                                     #:tests? #f
+                                     ,@(package-arguments emacs))
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (add-after 'unpack 'autogen
+                      (lambda _
+                        (zero? (system* "sh" "autogen.sh"))))))))))
+
 
 ;;;
 ;;; Emacs hacking.
@@ -230,52 +261,115 @@ for those who may want transient periods of unbalanced parentheses, such as
 when typing parentheses directly or commenting out code line by line.")
     (license license:gpl3+)))
 
+(define-public git-modes
+  (package
+    (name "git-modes")
+    (version "1.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/magit/git-modes/archive/"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1biiss75bswx4alk85k3g9p0a3q3sc9i74h4mnrxc2rsk2iwhws0"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:modules ((guix build gnu-build-system)
+                  (guix build emacs-utils)
+                  (guix build utils))
+       #:imported-modules (,@%gnu-build-system-modules
+                           (guix build emacs-utils))
+
+       #:make-flags (list (string-append "PREFIX="
+                                         (assoc-ref %outputs "out"))
+                          ;; Don't put .el files in a 'git-modes'
+                          ;; sub-directory.
+                          (string-append "LISPDIR="
+                                         (assoc-ref %outputs "out")
+                                         "/share/emacs/site-lisp"))
+       #:test-target "test"
+       #:phases (modify-phases %standard-phases
+                  (delete 'configure)
+                  (add-after 'install 'emacs-autoloads
+                             (lambda* (#:key outputs #:allow-other-keys)
+                               (let* ((out  (assoc-ref outputs "out"))
+                                      (lisp (string-append
+                                             out "/share/emacs/site-lisp/")))
+                                 (emacs-generate-autoloads ,name lisp)))))))
+    (native-inputs `(("emacs" ,emacs-no-x)))
+    (home-page "https://github.com/magit/git-modes")
+    (synopsis "Emacs major modes for Git configuration files")
+    (description
+     "This package provides Emacs major modes for editing various Git
+configuration files, such as .gitattributes, .gitignore, and .git/config.")
+    (license license:gpl3+)))
+
 (define-public magit
   (package
     (name "magit")
-    (version "1.2.1")
+    (version "1.4.1")
     (source (origin
              (method url-fetch)
              (uri (string-append
                    "https://github.com/magit/magit/releases/download/"
                    version "/" name "-" version ".tar.gz"))
              (sha256
-              (base32 "1in48g5l5xdc9cf2apnpgx73mqlz2njrpi1w52dgql4qxv3kg6gr"))))
+              (base32
+               "0bbvz6cma5vj6qxx9v2m60zqkjwgwjrdf9kp04iacybvrcm8vcg7"))))
     (build-system gnu-build-system)
-    (native-inputs `(("texinfo" ,texinfo)))
-    (inputs `(("emacs" ,emacs-no-x)
-              ("git" ,git)
+    (native-inputs `(("texinfo" ,texinfo)
+                     ("emacs" ,emacs-no-x)))
+    (inputs `(("git" ,git)
               ("git:gui" ,git "gui")))
+    (propagated-inputs `(("git-modes" ,git-modes)))
     (arguments
      `(#:modules ((guix build gnu-build-system)
                   (guix build utils)
                   (guix build emacs-utils))
        #:imported-modules (,@%gnu-build-system-modules
                            (guix build emacs-utils))
-       #:tests? #f  ; no check target
+
+       #:test-target "test"
+       #:tests? #f                          ;'tests/magit-tests.el' is missing
+
+       #:make-flags (list
+                     ;; Don't put .el files in a sub-directory.
+                     (string-append "lispdir=" (assoc-ref %outputs "out")
+                                    "/share/emacs/site-lisp"))
+
        #:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key outputs #:allow-other-keys)
-          (let ((out (assoc-ref outputs "out")))
-            (substitute* "Makefile"
-              (("/usr/local") out)
-              (("/etc") (string-append out "/etc")))))
-        (alist-cons-before
-         'build 'patch-exec-paths
-         (lambda* (#:key inputs #:allow-other-keys)
-           (let ((git (assoc-ref inputs "git"))
-                 (git:gui (assoc-ref inputs "git:gui")))
-             (emacs-substitute-variables "magit.el"
-               ("magit-git-executable" (string-append git "/bin/git"))
-               ("magit-gitk-executable" (string-append git:gui "/bin/gitk")))))
-         (alist-cons-after
+       (modify-phases %standard-phases
+         (replace
+          'configure
+          (lambda* (#:key outputs #:allow-other-keys)
+            (let ((out (assoc-ref outputs "out")))
+              (substitute* "Makefile"
+                (("/usr/local") out)
+                (("/etc") (string-append out "/etc"))))))
+         (add-before
+          'build 'patch-exec-paths
+          (lambda* (#:key inputs #:allow-other-keys)
+            (let ((git (assoc-ref inputs "git"))
+                  (git:gui (assoc-ref inputs "git:gui")))
+              (emacs-substitute-variables "magit.el"
+                ("magit-git-executable" (string-append git "/bin/git"))
+                ("magit-gitk-executable" (string-append git:gui
+                                                        "/bin/gitk"))))))
+         (add-before
+          'build 'augment-load-path
+          (lambda* (#:key inputs #:allow-other-keys)
+            ;; Allow git-commit-mode.el & co. to be found.
+            (let ((git-modes (assoc-ref inputs "git-modes")))
+              (setenv "EMACSLOADPATH"
+                      (string-append ":" git-modes "/share/emacs/site-lisp"))
+              #t)))
+         (add-after
           'install 'post-install
           (lambda* (#:key outputs #:allow-other-keys)
             (emacs-generate-autoloads
              ,name (string-append (assoc-ref outputs "out")
-                                  "/share/emacs/site-lisp/")))
-          %standard-phases)))))
+                                  "/share/emacs/site-lisp/")))))))
     (home-page "http://magit.github.io/")
     (synopsis "Emacs interface for the Git version control system")
     (description
@@ -286,6 +380,56 @@ cherry picking, reverting, merging, rebasing, and other common Git
 operations.")
     (license license:gpl3+)))
 
+(define-public magit-svn
+  (package
+    (name "magit-svn")
+    (version "b69b79")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (commit version)
+                    (url "https://github.com/magit/magit-svn.git")))
+              (sha256
+               (base32
+                "07xxszd12r38s46sz8fn2qz26b7s88i022cqp3gmkmmj3j57kqv6"))))
+    (build-system trivial-build-system)
+    (inputs `(("emacs" ,emacs-no-x)
+              ("magit" ,magit)))
+    (arguments
+     `(#:modules ((guix build utils)
+                  (guix build emacs-utils))
+
+       #:builder
+       (begin
+         (use-modules (guix build utils)
+                      (guix build emacs-utils))
+
+         (let* ((emacs    (string-append (assoc-ref %build-inputs "emacs")
+                                         "/bin/emacs"))
+                (magit    (string-append (assoc-ref %build-inputs "magit")
+                                         "/share/emacs/site-lisp"))
+                (commit   (string-append (assoc-ref %build-inputs
+                                                    "magit/git-modes")
+                                         "/share/emacs/site-lisp"))
+                (source   (assoc-ref %build-inputs "source"))
+                (lisp-dir (string-append %output "/share/emacs/site-lisp")))
+           (mkdir-p lisp-dir)
+           (copy-file (string-append source "/magit-svn.el")
+                      (string-append lisp-dir "/magit-svn.el"))
+
+           (with-directory-excursion lisp-dir
+             (parameterize ((%emacs emacs))
+               (emacs-generate-autoloads ,name lisp-dir)
+               (setenv "EMACSLOADPATH"
+                       (string-append ":" magit ":" commit))
+               (emacs-batch-eval '(byte-compile-file "magit-svn.el"))))))))
+    (home-page "https://github.com/magit/magit-svn")
+    (synopsis "Git-SVN extension to Magit")
+    (description
+     "This package is an extension to Magit, the Git Emacs mode, providing
+support for Git-SVN.")
+    (license license:gpl3+)))
+
 
 ;;;
 ;;; Web browsing.
diff --git a/gnu/packages/feh.scm b/gnu/packages/feh.scm
index 84edad419e..ae7c820011 100644
--- a/gnu/packages/feh.scm
+++ b/gnu/packages/feh.scm
@@ -29,7 +29,7 @@
 (define-public feh
   (package
     (name "feh")
-    (version "2.12")
+    (version "2.13")
     (home-page "https://feh.finalrewind.org/")
     (source (origin
               (method url-fetch)
@@ -37,7 +37,7 @@
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0ckhidmsms2l5jycp0qf71jzmb3bpbhjq3bcgfpvfvszah7pmq30"))))
+                "06fa9zh1zpi63l90kw3l9a0sfavf424j7ksi396ifg9669gx35gn"))))
     (build-system gnu-build-system)
     (arguments
       '(#:phases (alist-delete 'configure %standard-phases)
diff --git a/gnu/packages/fltk.scm b/gnu/packages/fltk.scm
index 1ac1f2507e..7a41460325 100644
--- a/gnu/packages/fltk.scm
+++ b/gnu/packages/fltk.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
+;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -17,7 +18,10 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages fltk)
-  #:use-module (guix licenses)
+  #:use-module ((guix licenses) #:select (lgpl2.0))
+  #:use-module (gnu packages)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages gl)
   #:use-module (guix packages)
@@ -35,11 +39,15 @@
                           "/fltk-" version "-source.tar.gz"))
       (sha256
        (base32
-        "15qd7lkz5d5ynz70xhxhigpz3wns39v9xcf7ggkl0792syc8sfgq"))))
+        "15qd7lkz5d5ynz70xhxhigpz3wns39v9xcf7ggkl0792syc8sfgq"))
+      (patches (list (search-patch "fltk-shared-lib-defines.patch")))))
    (build-system gnu-build-system)
-    (inputs
-      `(("libx11" ,libx11)
-        ("mesa" ,mesa)))
+   (inputs
+    `(("libjpeg" ,libjpeg-8)     ;jpeg_read_header argument error in libjpeg-9
+      ("libpng" ,libpng)
+      ("libx11" ,libx11)
+      ("mesa" ,mesa)
+      ("zlib" ,zlib)))
     (arguments
      `(#:tests? #f                      ;TODO: compile programs in "test" dir
        #:configure-flags
@@ -51,7 +59,22 @@
         (lambda _
           (substitute* "makeinclude.in"
             (("/bin/sh") (which "sh"))))
-        %standard-phases)))
+        (alist-cons-after
+         'install 'patch-config
+         ;; Provide -L flags for image libraries when querying fltk-config to
+         ;; avoid propagating inputs.
+         (lambda* (#:key inputs outputs #:allow-other-keys)
+           (use-modules (srfi srfi-26))
+           (let* ((conf (string-append (assoc-ref outputs "out")
+                                      "/bin/fltk-config"))
+                  (jpeg (assoc-ref inputs "libjpeg"))
+                  (png  (assoc-ref inputs "libpng"))
+                  (zlib (assoc-ref inputs "zlib")))
+             (substitute* conf
+               (("-ljpeg") (string-append "-L" jpeg "/lib -ljpeg"))
+               (("-lpng") (string-append "-L" png "/lib -lpng"))
+               (("-lz") (string-append "-L" zlib "/lib -lz")))))
+         %standard-phases))))
     (home-page "http://www.fltk.org")
     (synopsis "3D C++ GUI library")
     (description "FLTK is a C++ GUI toolkit providing modern GUI functionality
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 386f4c5972..c5b55f30a2 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -1,6 +1,9 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
+;;; Copyright © 2015 Andy Wingo <wingo@pobox.com>
+;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -18,12 +21,22 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages freedesktop)
-  #:use-module ((guix licenses) #:select (expat x11))
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages gperf)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages docbook)
+  #:use-module (gnu packages glib)                ;intltool
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xorg))
 
@@ -48,7 +61,7 @@
     (description "The xdg-utils package is a set of simple scripts that
 provide basic desktop integration functions in the framework of the
 freedesktop.org project.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public libinput
   (package
@@ -74,4 +87,113 @@ freedesktop.org project.")
     (description
      "Libinput is a library to handle input devices for display servers and
 other applications that need to directly deal with input devices.")
-    (license x11)))
+    (license license:x11)))
+
+(define-public elogind
+  (let ((commit "14405a9"))
+    (package
+      (name "elogind")
+      (version (string-append "219." commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "http://git.elephly.net/software/elogind.git")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "1wz5lxj95qg64x2q5hf4zcb35hpxlw3wfswx6sb2srvsg50y3y72"))
+                (file-name (string-append name "-checkout-" commit))
+                (modules '((guix build utils)))
+                (snippet
+                 '(begin
+                    (use-modules (guix build utils))
+                    (substitute* "Makefile.am"
+                      ;; Avoid validation against DTD because the DTDs for
+                      ;; both doctype 4.2 and 4.5 are needed.
+                      (("XSLTPROC_FLAGS = ") "XSLTPROC_FLAGS = --novalid"))))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:configure-flags
+         (list
+          ;; pam_elogind fails because of bus-error.c hackery
+          "--disable-pam"
+          (string-append "--with-rootprefix=" (assoc-ref %outputs "out")))
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'autogen
+                      (lambda _
+                        (and (zero? (system* "intltoolize" "--force" "--automake"))
+                             (zero? (system* "autoreconf" "-vif"))))))))
+      (native-inputs
+       `(("intltool" ,intltool)
+         ("gettext" ,gnu-gettext)
+         ("docbook-xsl" ,docbook-xsl)
+         ("docbook-xml" ,docbook-xml)
+         ("xsltproc" ,libxslt)
+         ("libxml2" ,libxml2)                     ;for XML_CATALOG_FILES
+         ("pkg-config", pkg-config)
+         ("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("libtool" ,libtool)
+         ("gperf" ,gperf)))
+      (inputs
+       `(("linux-pam" ,linux-pam)
+         ("linux-libre-headers" ,linux-libre-headers)
+         ("libcap" ,libcap)
+         ("dbus" ,dbus)
+         ("eudev" ,eudev)))
+      (home-page "https://github.com/andywingo/elogind")
+      (synopsis "User, seat, and session management service")
+      (description "Elogind is the systemd project's \"logind\" service,
+extracted out as a separate project.  Elogind integrates with PAM to provide
+the org.freedesktop.login1 interface over the system bus, allowing other parts
+of a the system to know what users are logged in, and where.")
+      (license license:lgpl2.1+))))
+
+(define-public python-pyxdg
+  (package
+    (name "python-pyxdg")
+    (version "0.25")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://pypi.python.org/packages/source/p/pyxdg/pyxdg-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "179767h8m634ydlm4v8lnz01ba42gckfp684id764zaip7h87s41"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (alist-replace
+        'check
+        (lambda* (#:key inputs #:allow-other-keys)
+          (setenv "XDG_DATA_DIRS"
+                  (string-append (assoc-ref inputs "shared-mime-info")
+                                 "/share/"))
+          (substitute* "test/test-icon.py"
+            (("/usr/share/icons/hicolor/index.theme")
+             (string-append (assoc-ref inputs "hicolor-icon-theme")
+                            "/share/icons/hicolor/index.theme")))
+
+          ;; One test fails with:
+          ;; AssertionError: 'x-apple-ios-png' != 'png'
+          (substitute* "test/test-mime.py"
+            (("self.check_mimetype\\(imgpng, 'image', 'png'\\)") "#"))
+          (zero? (system* "nosetests" "-v")))
+        %standard-phases)))
+    (native-inputs
+     `(("shared-mime-info" ,shared-mime-info) ;for tests
+       ("hicolor-icon-theme" ,hicolor-icon-theme) ;for tests
+       ("python-nose" ,python-nose)
+       ("python-setuptools" ,python-setuptools)))
+    (home-page "http://freedesktop.org/wiki/Software/pyxdg")
+    (synopsis "Implementations of freedesktop.org standards in Python")
+    (description
+     "PyXDG is a collection of implementations of freedesktop.org standards in
+Python")
+    (license license:lgpl2.0)))
+
+(define-public python2-pyxdg
+  (package-with-python2 python-pyxdg))
diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm
index 22ea1af965..790ffc66c2 100644
--- a/gnu/packages/ftp.scm
+++ b/gnu/packages/ftp.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;;
@@ -36,8 +36,10 @@
     (version "4.6.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://lftp.yar.ru/ftp/lftp-"
-                                  version ".tar.xz"))
+              (uri (list (string-append "http://lftp.yar.ru/ftp/lftp-"
+                                        version ".tar.xz")
+                         (string-append "http://lftp.yar.ru/ftp/old/lftp-"
+                                        version ".tar.xz")))
               (sha256
                (base32
                 "1grmp8zg7cjgjinz66mrh53whigkqzl90nlxj05hapnhk3ns3vni"))
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 219176722a..14209f4b7e 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -33,7 +33,11 @@
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages image)
   #:use-module (gnu packages audio)
-  #:use-module (gnu packages pulseaudio))
+  #:use-module (gnu packages pulseaudio)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages sdl)
+  #:use-module (gnu packages pkg-config))
 
 (define-public bullet
   (package
@@ -127,3 +131,40 @@ clone.")
 to ease the development of games and multimedia applications.  It is composed
 of five modules: system, window, graphics, audio and network.")
     (license license:zlib)))
+
+(define-public sfxr
+  (package
+    (name "sfxr")
+    (version "1.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://www.drpetter.se/files/sfxr-sdl-1.2.1.tar.gz"))
+              (sha256
+               (base32
+                "0dfqgid6wzzyyhc0ha94prxax59wx79hqr25r6if6by9cj4vx4ya"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (delete 'configure) ; no configure script
+                  (add-before 'build 'patch-makefile
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let ((out (assoc-ref outputs "out")))
+                        (substitute* "Makefile"
+                          (("\\$\\(DESTDIR\\)/usr") out))
+                        (substitute* "main.cpp"
+                          (("/usr/share")
+                           (string-append out "/share")))
+                        #t))))
+       #:tests? #f)) ; no tests
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("desktop-file-utils" ,desktop-file-utils)))
+    (inputs
+     `(("sdl" ,sdl)
+       ("gtk+" ,gtk+)))
+    (synopsis "Simple sound effect generator")
+    (description "Sfxr is a tool for quickly generating simple sound effects.
+Originally created for use in video game prototypes, it can generate random
+sounds from presets such as \"explosion\" or \"powerup\".")
+    (home-page "http://www.drpetter.se/project_sfxr.html")
+    (license license:expat)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index d86e151a85..8f495f7b32 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -108,7 +108,7 @@ representation of the playing board.")
 (define-public gnubik
   (package
     (name "gnubik")
-    (version "2.4.1")
+    (version "2.4.2")
     (source
      (origin
       (method url-fetch)
@@ -116,7 +116,7 @@ representation of the playing board.")
                           version ".tar.gz"))
       (sha256
        (base32
-        "0mfpwz341i1qpzi2qgslpc5i7d4fv7i01kv392m11pczqdc7i7m5"))))
+        "0mhpfnxzbns0wfrsjv5vafqr34770rbvkmdzxk0x0aq67hb3zyl5"))))
     (build-system gnu-build-system)
     (inputs `(("gtk+" ,gtk+-2)
               ("mesa" ,mesa)
@@ -748,6 +748,43 @@ some of the restrictions in the venerable Z-machine format.  This is the
 reference interpreter, using Glk API.")
    (license (license:fsf-free "file://README"))))
 
+(define-public fizmo
+  (package
+    (name "fizmo")
+    (version "0.7.9")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://christoph-ender.de/fizmo/source/"
+                                  name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1w7cgyjrhgkadjrazijzhq7zh0pl5bfc6wl7mdpgh020y4kp46d7"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags
+       (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
+             (ncurses (assoc-ref %build-inputs "ncurses")))
+         (list (string-append "jpeg_CFLAGS=-I" libjpeg "/include")
+               (string-append "jpeg_LIBS=-ljpeg")
+               (string-append "ncursesw_CFLAGS=-I" ncurses "/include")
+               (string-append "ncursesw_LIBS=-lncursesw")))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("libsndfile" ,libsndfile)
+       ("libxml2" ,libxml2)
+       ("ncurses" ,ncurses)
+       ("sdl" ,sdl)))
+    (home-page "https://christoph-ender.de/fizmo/")
+    (synopsis "Z-machine interpreter")
+    (description
+     "Fizmo is a console-based Z-machine interpreter.  It is used to play
+interactive ficiton, also known as textadventures, which were implemented
+either by Infocom or created using the Inform compiler.")
+    (license license:bsd-3)))
+
 (define-public retroarch
   (package
     (name "retroarch")
@@ -879,3 +916,37 @@ bones.
 This game is based on the GPL version of the famous game TuxRacer.")
     (home-page "http://sourceforge.net/projects/extremetuxracer/")
     (license license:gpl2+)))
+
+(define-public gnujump
+  (package
+    (name "gnujump")
+    (version "1.0.8")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/gnujump/gnujump-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before
+          'configure 'link-libm
+          (lambda _ (setenv "LIBS" "-lm"))))))
+    (inputs
+     `(("glu" ,glu)
+       ("mesa", mesa)
+       ("sdl" ,sdl)
+       ("sdl-image" ,sdl-image)
+       ("sdl-mixer" ,sdl-mixer)))
+    (home-page "http://gnujump.es.gnu.org/")
+    (synopsis
+     "Game of jumping to the next floor, trying not to fall")
+    (description
+     "GNUjump is a simple, yet addictive game in which you must jump from
+platform to platform to avoid falling, while the platforms drop at faster rates
+the higher you go.  The game features multiplayer, unlimited FPS, smooth floor
+falling, themeable graphics and sounds, and replays.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 48ef72933d..414f31cb3c 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -335,7 +335,9 @@ Go.  It also includes runtime support libraries for these languages.")
               (sha256
                (base32
                 "1bd5vj4px3s8nlakbgrh38ynxq4s654m6nxz7lrj03mvkkwgvnmp"))
-              (patches (origin-patches (package-source gcc-4.9)))))))
+              (patches (map search-patch
+                            '("gcc-arm-link-spec-fix.patch"
+                              "gcc-5.0-libvtv-runpath.patch")))))))
 
 (define* (custom-gcc gcc name languages #:key (separate-lib-output? #t))
   "Return a custom version of GCC that supports LANGUAGES."
@@ -405,38 +407,57 @@ Go.  It also includes runtime support libraries for these languages.")
              "--enable-languages=java"
              ,@(remove (cut string-match "--enable-languages.*" <>)
                        ,flags))))
-        ((#:phases phases)
-         `(alist-cons-after
-           'install 'install-javac-and-javap-wrappers
-           (lambda _
-             (let* ((javac  (assoc-ref %build-inputs "javac.in"))
-                    (ecj    (assoc-ref %build-inputs "ecj-bootstrap"))
-                    (gcj    (assoc-ref %outputs "out"))
-                    (gcjbin (string-append gcj "/bin/"))
-                    (jvm    (string-append gcj "/lib/jvm/"))
-                    (target (string-append jvm "/bin/javac")))
-
-               (symlink (string-append gcjbin "jcf-dump")
-                        (string-append jvm "/bin/javap"))
-
-               (copy-file ecj (string-append gcj "/share/java/ecj.jar"))
-
-               ;; Create javac wrapper from the template javac.in by
-               ;; replacing the @VARIABLES@ with paths.
-               (copy-file javac target)
-               (patch-shebang target)
-               (substitute* target
-                 (("@JAVA@")
-                  (string-append jvm "/bin/java"))
-                 (("@ECJ_JAR@")
-                  (string-append gcj "/share/java/ecj.jar"))
-                 (("@RT_JAR@")
-                  (string-append jvm "/jre/lib/rt.jar"))
-                 (("@TOOLS_JAR@")
-                  (string-append jvm "/lib/tools.jar")))
-               (chmod target #o755)
-               #t))
-           ,phases))))))
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (add-after
+            'unpack 'add-lib-output-to-rpath
+            (lambda _
+              (substitute* "libjava/Makefile.in"
+                (("libgcj_bc_dummy_LINK = .* -shared" line)
+                 (string-append line " -Wl,-rpath=$(libdir)"))
+                (("libgcj(_bc)?_la_LDFLAGS =" ldflags _)
+                 (string-append ldflags " -Wl,-rpath=$(libdir)")))))
+           (add-after
+            'install 'install-javac-and-javap-wrappers
+            (lambda _
+              (let* ((javac  (assoc-ref %build-inputs "javac.in"))
+                     (ecj    (assoc-ref %build-inputs "ecj-bootstrap"))
+                     (gcj    (assoc-ref %outputs "out"))
+                     (gcjbin (string-append gcj "/bin/"))
+                     (jvm    (string-append gcj "/lib/jvm/"))
+                     (target (string-append jvm "/bin/javac")))
+
+                (symlink (string-append gcjbin "jcf-dump")
+                         (string-append jvm "/bin/javap"))
+
+                (copy-file ecj (string-append gcj "/share/java/ecj.jar"))
+
+                ;; Create javac wrapper from the template javac.in by
+                ;; replacing the @VARIABLES@ with paths.
+                (copy-file javac target)
+                (patch-shebang target)
+                (substitute* target
+                  (("@JAVA@")
+                   (string-append jvm "/bin/java"))
+                  (("@ECJ_JAR@")
+                   (string-append gcj "/share/java/ecj.jar"))
+                  (("@RT_JAR@")
+                   (string-append jvm "/jre/lib/rt.jar"))
+                  (("@TOOLS_JAR@")
+                   (string-append jvm "/lib/tools.jar")))
+                (chmod target #o755)
+                #t)))
+           (add-after
+            'install 'remove-broken-or-conflicting-files
+            (lambda _
+              (let ((out (assoc-ref %outputs "out")))
+                (for-each
+                 delete-file
+                 (append (find-files (string-append out "/lib/jvm/jre/lib")
+                                     "libjawt.so")
+                         (find-files (string-append out "/bin")
+                                     ".*(c\\+\\+|cpp|g\\+\\+|gcc.*)"))))
+              #t))))))))
 
 (define ecj-bootstrap-4.8
   (origin
diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm
index 018f564e67..9c0b3ea307 100644
--- a/gnu/packages/gdb.scm
+++ b/gnu/packages/gdb.scm
@@ -36,14 +36,14 @@
 (define-public gdb
   (package
     (name "gdb")
-    (version "7.9")
+    (version "7.9.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/gdb/gdb-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "14l3hhsy7fmpn2dk7ivc67gnbjdhkxlq90kxijpzfa35l58mcccv"))))
+               "0h5sfg4ndhb8q4fxbq0hdxfjp35n6ih96f6x8yvb418s84x5976d"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f ; FIXME "make check" fails on single-processor systems.
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index 25a41690dd..35c55dc2f9 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -32,6 +32,7 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages photo)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages imagemagick))
 
@@ -127,10 +128,6 @@ buffers.")
                (base32
                 "0bdj0l7a94jqhjnj40m9rqaf622wj905iximivb55iy98639aanq"))))
     (build-system gnu-build-system)
-    (arguments
-     `(#:configure-flags
-       ;; We don't have pygtk which seems to be needed for this feature
-       `("--disable-python")))
     (inputs
      `(("babl" ,babl)
        ("glib" ,glib)
@@ -141,6 +138,8 @@ buffers.")
        ("exif" ,libexif)                         ;optional, EXIF + XMP support
        ("lcms" ,lcms)                            ;optional, color management
        ("librsvg" ,librsvg)                      ;optional, SVG support
+       ("python" ,python-2)                      ;optional, Python support
+       ("python2-pygtk" ,python2-pygtk)          ;optional, Python support
        ("gegl" ,gegl)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index afda76d792..d1503e1730 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Joshua Grant <tadni@riseup.net>
 ;;; Copyright © 2014 David Thompson <davet@gnu.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
@@ -40,7 +40,8 @@
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages video)
-  #:use-module (gnu packages xdisorg))
+  #:use-module (gnu packages xdisorg)
+  #:use-module (gnu packages zip))
 
 (define-public glu
   (package
@@ -53,7 +54,8 @@
 	     (sha256
 	      (base32 "0r72yyhj09x3krn3kn629jqbwyq50ji8w5ri2pn6zwrk35m4g1s3"))))
     (build-system gnu-build-system)
-    (inputs `(("mesa" ,mesa)))
+    (propagated-inputs
+      `(("mesa" ,mesa))) ; according to glu.pc
     (home-page "http://www.opengl.org/archives/resources/faq/technical/glu.htm")
     (synopsis "Mesa OpenGL Utility library")
     (description
@@ -219,7 +221,7 @@ also known as DXTn or DXTC) for Mesa.")
     (arguments
      `(#:configure-flags
        '(;; drop r300 from default gallium drivers, as it requires llvm
-         "--with-gallium-drivers=r600,svga,swrast"
+         "--with-gallium-drivers=r600,svga,swrast,nouveau"
          ;; Enable various optional features.  TODO: opencl requires libclc,
          ;; omx requires libomxil-bellagio
          "--with-egl-platforms=x11,drm"
@@ -403,6 +405,7 @@ extension functionality is exposed in a single header file.")
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("guile" ,guile-2.0)
               ("mesa" ,mesa)
+              ("glu" ,glu)
               ("freeglut" ,freeglut)))
     (arguments
      '(#:phases (alist-cons-before
@@ -417,7 +420,7 @@ extension functionality is exposed in a single header file.")
                    ;; Replace dynamic-link calls for libGL, libGLU, and
                    ;; libglut with absolute paths to the store.
                    (dynamic-link-substitute "glx/runtime.scm" "GL" "mesa")
-                   (dynamic-link-substitute "glu/runtime.scm" "GLU" "mesa")
+                   (dynamic-link-substitute "glu/runtime.scm" "GLU" "glu")
                    (dynamic-link-substitute "glut/runtime.scm" "glut"
                                             "freeglut"))
                  %standard-phases)))
@@ -484,3 +487,45 @@ OpenGL graphics API.")
     (description
      "A library for handling OpenGL function pointer management.")
     (license l:x11)))
+
+(define-public soil
+  (package
+    (name "soil")
+    (version "1.0.7")
+    (source (origin
+              (method url-fetch)
+              ;; No versioned archive available.
+              (uri "http://www.lonesock.net/files/soil.zip")
+              (sha256
+               (base32
+                "00gpwp9dldzhsdhksjvmbhsd2ialraqbv6v6dpikdmpncj6mnc52"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f ; no tests
+       #:phases (modify-phases %standard-phases
+                  (delete 'configure)
+                  (add-before 'build 'init-build
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let ((out (assoc-ref outputs "out")))
+                        (setenv "CFLAGS" "-fPIC") ; needed for shared library
+                        ;; Use alternate Makefile
+                        (copy-file "projects/makefile/alternate Makefile.txt"
+                                   "src/Makefile")
+                        (chdir "src")
+                        (substitute* '("Makefile")
+                          (("INCLUDEDIR = /usr/include/SOIL")
+                           (string-append "INCLUDEDIR = " out "/include/SOIL"))
+                          (("LIBDIR = /usr/lib")
+                           (string-append "LIBDIR = " out "/lib"))
+                          ;; Remove these flags from 'install' commands.
+                          (("-o root -g root") ""))))))))
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (inputs
+     `(("mesa" ,mesa)))
+    (home-page "http://www.lonesock.net/soil.html")
+    (synopsis "OpenGL texture loading library")
+    (description
+     "SOIL is a tiny C library used primarily for uploading textures into
+OpenGL.")
+    (license l:public-domain)))
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 1d43895f5c..305c89c022 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -353,10 +353,11 @@ translated.")
               (base32
                "1xi1v1msz75qs0s4lkyf1psrksdppa3hwkg0mznc6gpw5flg3hdz"))))
     (build-system gnu-build-system)
-    (inputs
+    (propagated-inputs ; according to dbus-glib-1.pc
      `(("dbus" ,dbus)
-       ("expat" ,expat)
        ("glib" ,glib)))
+    (inputs
+     `(("expat" ,expat)))
     (native-inputs
      `(("glib" ,glib "bin")
        ("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 871cde8491..4af1d13495 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -6,6 +6,8 @@
 ;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
+;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
+;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,14 +38,15 @@
   #:use-module (gnu packages cups)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
+  #:use-module (gnu packages djvu)
   #:use-module (gnu packages flex)
-  #:use-module (gnu packages databases)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages guile)
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages polkit)
   #:use-module (gnu packages popt)
@@ -59,13 +62,20 @@
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages scanner)
+  #:use-module (gnu packages ssh)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages texlive)
   #:use-module (gnu packages web)
+  #:use-module (gnu packages webkit)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages xdisorg)
-  #:use-module (gnu packages ncurses))
+  #:use-module (gnu packages mail)
+  #:use-module (gnu packages backup)
+  #:use-module (gnu packages nettle)
+  #:use-module (gnu packages ncurses)
+  #:use-module (srfi srfi-1))
 
 (define-public brasero
   (package
@@ -176,6 +186,50 @@ Gnome project.  It includes xml2po tool which makes it easier to translate
 and keep up to date translations of documentation.")
     (license license:gpl2+))) ; xslt under lgpl
 
+(define-public gcr
+  (package
+    (name "gcr")
+    (version "3.16.0")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "mirror://gnome/sources/" name "/"
+                                 (version-major+minor version)  "/"
+                                 name "-" version ".tar.xz"))
+             (sha256
+              (base32
+               "0xfhi0w358lvca1jjx24x2gm67mif33dsnmi9cv5i0f83ks8vzpc"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f ;25 of 598 tests fail because /var/lib/dbus/machine-id does
+                   ;not exist
+       #:phases (modify-phases %standard-phases
+                  (add-before
+                   'check 'pre-check
+                   (lambda* (#:key inputs #:allow-other-keys)
+                     (substitute* "build/tap-driver"
+                       (("/usr/bin/env python") (which "python"))))))))
+    (inputs
+     `(("dbus" ,dbus)
+       ("gnupg" ,gnupg) ;called as a child process during tests
+       ("libgcrypt" ,libgcrypt)))
+    (native-inputs
+     `(("python" ,python-2) ;for tests
+       ("pkg-config" ,pkg-config)
+       ("glib" ,glib "bin")
+       ("intltool" ,intltool)))
+    ;; mentioned in gck.pc, gcr.pc and gcr-ui.pc
+    (propagated-inputs
+     `(("p11-kit" ,p11-kit)
+       ("glib" ,glib)
+       ("gtk+" ,gtk+)))
+    (home-page "http://www.gnome.org")
+    (synopsis "Libraries for displaying certificates and accessing key stores")
+    (description
+     "The GCR package contains libraries used for displaying certificates and
+accessing key stores.  It also provides the viewer for crypto files on the
+GNOME Desktop.")
+    (license license:lgpl2.1+)))
+
 (define-public libgnome-keyring
   (package
     (name "libgnome-keyring")
@@ -207,10 +261,77 @@ and keep up to date translations of documentation.")
     ;; Though a couple of files are LGPLv2.1+.
     (license license:lgpl2.0+)))
 
+(define-public gnome-keyring
+  (package
+    (name "gnome-keyring")
+    (version "3.16.0")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "mirror://gnome/sources/" name "/"
+                                 (version-major+minor version)  "/"
+                                 name "-" version ".tar.xz"))
+             (sha256
+              (base32
+               "1xg1xha3x3hzlmvdq2zm90hc61pj7pnf9yxxvgq4ynl5af6bp8qm"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ;48 of 603 tests fail because /var/lib/dbus/machine-id does
+                   ;not exist
+       #:configure-flags
+       (list
+        (string-append "--with-pkcs11-config="
+                       (assoc-ref %outputs "out") "/share/p11-kit/modules/")
+        (string-append "--with-pkcs11-modules="
+                       (assoc-ref %outputs "out") "/share/p11-kit/modules/"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before
+          'check 'pre-check
+          (lambda* (#:key inputs #:allow-other-keys)
+            (substitute* "build/tap-driver"
+              (("/usr/bin/env python") (which "python")))))
+         (add-before
+          'configure 'fix-docbook
+          (lambda* (#:key inputs #:allow-other-keys)
+            (substitute* "docs/Makefile.am"
+              (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
+               (string-append (assoc-ref inputs "docbook-xsl")
+                              "/xml/xsl/docbook-xsl-"
+                              ,(package-version docbook-xsl)
+                              "/manpages/docbook.xsl")))
+            (setenv "XML_CATALOG_FILES"
+                    (string-append (assoc-ref inputs "docbook-xml")
+                                   "/xml/dtd/docbook/catalog.xml")))))))
+    (inputs
+     `(("libgcrypt" ,libgcrypt)
+       ("dbus" ,dbus)
+       ("gcr" ,gcr)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("glib" ,glib "bin")
+       ("python" ,python-2) ;for tests
+       ("intltool" ,intltool)
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libxslt" ,libxslt) ;for documentation
+       ("docbook-xml" ,docbook-xml-4.2)
+       ("docbook-xsl" ,docbook-xsl)))
+    (home-page "http://www.gnome.org")
+    (synopsis "Daemon to store passwords and encryption keys")
+    (description
+     "gnome-keyring is a program that keeps passwords and other secrets for
+users.  It is run as a daemon in the session, similar to ssh-agent, and other
+applications locate it via an environment variable or D-Bus.
+
+The program can manage several keyrings, each with its own master password,
+and there is also a session keyring which is never stored to disk, but
+forgotten when the session ends.")
+    (license license:lgpl2.1+)))
+
 (define-public evince
   (package
     (name "evince")
-    (version "3.6.1")
+    (version "3.16.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/" name "/"
@@ -218,7 +339,7 @@ and keep up to date translations of documentation.")
                                  name "-" version ".tar.xz"))
              (sha256
               (base32
-               "1da1pij030dh8mb0pr0jnyszgsbjnh8lc17rj5ii52j3kmbv51qv"))))
+               "0c31pwfzfm5x036f018q31k33vl8xb96nbs0iiccsc1abc37bzq6"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags '("--disable-nautilus")
@@ -229,12 +350,18 @@ and keep up to date translations of documentation.")
        #:tests? #f))
     (inputs
      `(("libspectre" ,libspectre)
-       ;; ("djvulibre" ,djvulibre)
+       ("djvulibre" ,djvulibre)
        ("ghostscript" ,ghostscript)
        ("poppler" ,poppler)
+       ("libtiff" ,libtiff)
+       ;; TODO:
+       ;;   Add libgxps for XPS support.
+       ;;   Build libkpathsea as a shared library for DVI support.
+       ;; ("libkpathsea" ,texlive-bin)
+       ("gnome-desktop" ,gnome-desktop)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("libgnome-keyring" ,libgnome-keyring)
-       ("gnome-icon-theme" ,gnome-icon-theme)
+       ("adwaita-icon-theme" ,adwaita-icon-theme)
        ("itstool" ,itstool)
        ("gdk-pixbuf" ,gdk-pixbuf)
        ("atk" ,atk)
@@ -247,7 +374,8 @@ and keep up to date translations of documentation.")
        ("shared-mime-info" ,shared-mime-info)
        ("dconf" ,dconf)
        ("libcanberra" ,libcanberra)
-       
+       ("libsecret" ,libsecret)
+
        ;; For tests.
        ("dogtail" ,python2-dogtail)))
     (native-inputs
@@ -365,7 +493,7 @@ update-desktop-database: updates the database containing a cache of MIME types
 (define-public gnome-icon-theme
   (package
     (name "gnome-icon-theme")
-    (version "3.10.0")
+    (version "3.12.0")
     (source
      (origin
       (method url-fetch)
@@ -374,14 +502,13 @@ update-desktop-database: updates the database containing a cache of MIME types
                           name "-" version ".tar.xz"))
       (sha256
        (base32
-        "1xinbgkkvlhazj887ajcl13i7kdc1wcca02jwxzvjrvchjsp4m66"))))
+        "0fjh9qmmgj34zlgxb09231ld7khys562qxbpsjlaplq2j85p57im"))))
     (build-system gnu-build-system)
-    (inputs
-     `(("gtk+" ,gtk+)
-       ("icon-naming-utils" ,icon-naming-utils)))
     (native-inputs
-       `(("intltool" ,intltool)
-         ("pkg-config" ,pkg-config)))
+     `(("gtk+" ,gtk+) ; for gtk-update-icon-cache
+       ("icon-naming-utils" ,icon-naming-utils)
+       ("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
     (home-page "http://art.gnome.org/")
     (synopsis
      "GNOME icon theme")
@@ -389,6 +516,20 @@ update-desktop-database: updates the database containing a cache of MIME types
      "Icons for the GNOME desktop.")
     (license license:lgpl3))) ; or Creative Commons BY-SA 3.0
 
+;; gnome-icon-theme was renamed to adwaita-icon-theme after version 3.12.0.
+(define-public adwaita-icon-theme
+  (package (inherit gnome-icon-theme)
+    (name "adwaita-icon-theme")
+    (version "3.16.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1hmlw7kvhr7c2asc5y77adpymi9ka17gaf76zz835nwwffnn4rlw"))))))
+
 (define-public shared-mime-info
   (package
     (name "shared-mime-info")
@@ -629,7 +770,7 @@ dealing with different structured file formats.")
 (define-public librsvg
   (package
     (name "librsvg")
-    (version "2.40.6")
+    (version "2.40.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -637,7 +778,7 @@ dealing with different structured file formats.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "01jgb11779080b80k2ncrhdphgillqrrnszal6vh8yv787r4kwwa"))))
+                "0fplymmqqr28y24vcnb01szn62pfbqhk8p1ngns54x9m6mflr5hk"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -657,15 +798,15 @@ dealing with different structured file formats.")
         (alist-cons-after
          'install 'generate-full-cache
          (lambda* (#:key inputs outputs #:allow-other-keys)
-           (let ((loaders-directory 
+           (let ((loaders-directory
                   (string-append (assoc-ref outputs "out")
                                  "/lib/gdk-pixbuf-2.0/2.10.0/loaders")))
              (zero?
-              (system 
-               (string-append 
-                "gdk-pixbuf-query-loaders " 
+              (system
+               (string-append
+                "gdk-pixbuf-query-loaders "
                 loaders-directory "/libpixbufloader-svg.so "
-                (string-join (find-files (assoc-ref inputs "gdk-pixbuf") 
+                (string-join (find-files (assoc-ref inputs "gdk-pixbuf")
                                          "libpixbufloader-.*\\.so") " ")
                 "> " loaders-directory ".cache")))))
          %standard-phases))))
@@ -716,7 +857,7 @@ library.")
 Definition Language (idl) files, which is a specification for defining
 portable interfaces. libidl was initially written for orbit (the orb from the
 GNOME project, and the primary means of libidl distribution).  However, the
-functionality was designed to be as reusable and portable as possible.") 
+functionality was designed to be as reusable and portable as possible.")
     (license license:lgpl2.0+)))
 
 
@@ -726,7 +867,7 @@ functionality was designed to be as reusable and portable as possible.")
     (version "2.14.19")
     (source (origin
               (method url-fetch)
-              (uri (let ((upstream-name "ORBit2")) 
+              (uri (let ((upstream-name "ORBit2"))
 		     (string-append "mirror://gnome/sources/" upstream-name "/"
                                     (version-major+minor version) "/"
                                     upstream-name "-" version ".tar.bz2")))
@@ -751,11 +892,11 @@ functionality was designed to be as reusable and portable as possible.")
     (home-page "https://projects.gnome.org/orbit2/")
     (synopsis "CORBA 2.4-compliant Object Request Broker")
     (description  "ORBit2 is a CORBA 2.4-compliant Object Request Broker (orb)
-featuring mature C, C++ and Python bindings.") 
+featuring mature C, C++ and Python bindings.")
     ;; Licence notice is unclear.  The Web page simply say "GPL" without giving a version.
     ;; SOME of the code files have licence notices for GPLv2+
     ;; The tarball contains files of the text of GPLv2 and LGPLv2
-    (license license:gpl2+))) 
+    (license license:gpl2+)))
 
 
 (define-public libbonobo
@@ -798,7 +939,7 @@ featuring mature C, C++ and Python bindings.")
     (home-page "https://developer.gnome.org/libbonobo/")
     (synopsis "Framework for creating reusable components for use in GNOME applications")
     (description "Bonobo is a framework for creating reusable components for
-use in GNOME applications, built on top of CORBA.") 
+use in GNOME applications, built on top of CORBA.")
     ;; Licence not explicitly stated.  Source files contain no licence notices.
     ;; Tarball contains text of both GPLv2 and LGPLv2
     ;; GPLv2 covers both conditions
@@ -811,7 +952,7 @@ use in GNOME applications, built on top of CORBA.")
     (version "3.2.6")
     (source (origin
               (method url-fetch)
-	      (uri 
+	      (uri
 	       (let ((upstream-name "GConf"))
 		 (string-append "mirror://gnome/sources/" upstream-name "/"
                                 (version-major+minor version) "/"
@@ -819,11 +960,10 @@ use in GNOME applications, built on top of CORBA.")
               (sha256
                (base32 "0k3q9nh53yhc9qxf1zaicz4sk8p3kzq4ndjdsgpaa2db0ccbj4hr"))))
     (build-system gnu-build-system)
-    (inputs `(("glib" ,glib)
-              ("dbus" ,dbus)
-              ("dbus-glib" ,dbus-glib)
+    (inputs `(("dbus-glib" ,dbus-glib)
               ("libxml2" ,libxml2)))
-    (propagated-inputs `(("orbit2" ,orbit2))) ; referred to in the .pc file
+    (propagated-inputs `(("glib" ,glib) ; referred to in the .pc file
+                         ("orbit2" ,orbit2)))
     (native-inputs
      `(("intltool" ,intltool)
        ("glib" ,glib "bin")             ; for glib-genmarshal, etc.
@@ -832,7 +972,7 @@ use in GNOME applications, built on top of CORBA.")
     (synopsis "Store application preferences")
     (description "Gconf is a system for storing application preferences.  It
 is intended for user preferences; not arbitrary data storage.")
-    (license license:lgpl2.0+))) 
+    (license license:lgpl2.0+)))
 
 
 (define-public gnome-mime-data
@@ -887,10 +1027,8 @@ designed to be accessed through the MIME functions in GnomeVFS.")
            (substitute* "test/test-async-cancel.c"
              (("EXIT_FAILURE") "77")))
          %standard-phases))))
-    (inputs `(("glib" ,glib)
-              ("libxml2" ,libxml2)
+    (inputs `(("libxml2" ,libxml2)
               ("dbus-glib" ,dbus-glib)
-              ("dbus" ,dbus)
               ("gconf" ,gconf)
               ("gnome-mime-data" ,gnome-mime-data)
               ("zlib" ,zlib)))
@@ -925,7 +1063,7 @@ to access local and remote files with a single consistent API.")
      `(#:phases
        (alist-cons-before
         'configure 'enable-deprecated
-        (lambda _ 
+        (lambda _
           (substitute* "libgnome/Makefile.in"
             (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS")))
         %standard-phases)))
@@ -943,8 +1081,7 @@ to access local and remote files with a single consistent API.")
      `(("libcanberra" ,libcanberra)
        ("libbonobo" ,libbonobo)
        ("gconf" ,gconf)
-       ("gnome-vfs" ,gnome-vfs)
-       ("glib" ,glib)))
+       ("gnome-vfs" ,gnome-vfs)))
     (home-page "https://developer.gnome.org/libgnome/")
     (synopsis "Useful routines for building applications")
     (description  "The libgnome library provides a number of useful routines
@@ -971,7 +1108,7 @@ files and URIs, and displaying help.")
      `(("pkg-config" ,pkg-config)))
     (home-page "https://people.gnome.org/~mathieu/libart")
     (synopsis "2D drawing library")
-    (description  "Libart is a 2D drawing library intended as a 
+    (description  "Libart is a 2D drawing library intended as a
 high-quality vector-based 2D library with antialiasing and alpha composition.")
     (license license:lgpl2.0+)))
 
@@ -1143,7 +1280,7 @@ since ca. 2006, when GTK+ itself incorporated printing support.")
               ("glib" ,glib)
               ("gnome-icon-theme" ,gnome-icon-theme)
               ("libgnomecanvas" ,libgnomecanvas)
-              ("libxml2" ,libxml2))) 
+              ("libxml2" ,libxml2)))
     (native-inputs
      `(("intltool" ,intltool)
        ("pkg-config" ,pkg-config)))
@@ -1172,7 +1309,7 @@ since ca. 2006, when GTK+ itself incorporated printing support.")
         (lambda* (#:key inputs #:allow-other-keys)
           (let ((xorg-server (assoc-ref inputs "xorg-server"))
                 (disp ":1"))
-            
+
             (setenv "HOME" (getcwd))
             (setenv "DISPLAY" disp)
             ;; There must be a running X server and make check doesn't start one.
@@ -1269,11 +1406,38 @@ Hints specification (EWMH).")
     (home-page "https://developer.gnome.org/goffice/")
     (synopsis "Document-centric objects and utilities")
     (description "A GLib/GTK+ set of document-centric objects and utilities.")
-    (license 
+    (license
      ;; Dual licensed under GPLv2 or GPLv3 (both without "or later")
      ;; Note: NOT LGPL
      (list license:gpl2 license:gpl3))))
 
+(define-public goffice-0.8
+  (package (inherit goffice)
+    (version "0.8.17")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" (package-name goffice) "/"
+                                  (version-major+minor version)  "/"
+                                  (package-name goffice) "-" version ".tar.xz"))
+              (sha256
+               (base32 "05fvzbs5bin05bbsr4dp79aiva3lnq0a3a40zq55i13vnsz70l0n"))))
+    (arguments
+     `(#:phases
+       (alist-cons-after
+        'unpack 'fix-pcre-check
+        (lambda _
+          ;; Only glib.h can be included directly.  See
+          ;; https://bugzilla.gnome.org/show_bug.cgi?id=670316
+          (substitute* "configure"
+            (("glib/gregex\\.h") "glib.h")) #t)
+        %standard-phases)))
+    (propagated-inputs
+     ;; libgoffice-0.8.pc mentions libgsf-1
+     `(("libgsf" ,libgsf)))
+    (inputs
+     `(("gtk" ,gtk+-2)
+       ,@(alist-delete "gtk" (package-inputs goffice))))))
+
 (define-public gnumeric
   (package
     (name "gnumeric")
@@ -1290,7 +1454,7 @@ Hints specification (EWMH).")
     (arguments
      `(;; The gnumeric developers don't worry much about failing tests.
        ;; See https://bugzilla.gnome.org/show_bug.cgi?id=732387
-       #:tests? #f 
+       #:tests? #f
        #:phases
        (alist-cons-before
         'configure 'pre-conf
@@ -1299,9 +1463,9 @@ Hints specification (EWMH).")
           ;; I am informed that this only affects the possibility to embed a
           ;; spreadsheet inside an Abiword document.   So presumably when we
           ;; package Abiword we'll have to refer it to this directory.
-          (substitute* "configure" 
+          (substitute* "configure"
             (("^GOFFICE_PLUGINS_DIR=.*")
-             (string-append "GOFFICE_PLUGINS_DIR=" 
+             (string-append "GOFFICE_PLUGINS_DIR="
                             (assoc-ref outputs "out") "/goffice/plugins"))))
         %standard-phases)))
     (inputs
@@ -1336,7 +1500,7 @@ engineering.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://gnome/sources/" name "/" 
+       (uri (string-append "mirror://gnome/sources/" name "/"
                            (version-major+minor version) "/" name "-"
                            version ".tar.xz"))
        (sha256
@@ -1361,8 +1525,8 @@ engineering.")
         ;; gdk-pixbuf because the latter does not include support for SVG
         ;; files.
         (lambda* (#:key inputs #:allow-other-keys)
-          (setenv "GDK_PIXBUF_MODULE_FILE" 
-                  (car (find-files (assoc-ref inputs "librsvg") 
+          (setenv "GDK_PIXBUF_MODULE_FILE"
+                  (car (find-files (assoc-ref inputs "librsvg")
                                    "loaders\\.cache"))))
         %standard-phases)))
     (home-page "https://launchpad.net/gnome-themes-standard")
@@ -1371,6 +1535,39 @@ engineering.")
      "The default GNOME 3 themes (Adwaita and some accessibility themes).")
     (license license:lgpl2.1+)))
 
+(define-public seahorse
+  (package
+    (name "seahorse")
+    (version "3.16.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/" name "/"
+                           (version-major+minor version) "/" name "-"
+                           version ".tar.xz"))
+       (sha256
+        (base32
+         "0cg1grgpwbfkiny5148n17rzpc8kswyr5yff0kpm8l3lp01my2kp"))))
+    (build-system glib-or-gtk-build-system)
+    (inputs
+     `(("gtk+" ,gtk+)
+       ("gcr" ,gcr)
+       ("gnupg" ,gnupg-1)
+       ("gpgme" ,gpgme)
+       ("openssh" ,openssh)
+       ("libsecret" ,libsecret)))
+    (native-inputs
+     `(("intltool" ,intltool)
+       ("glib:bin" ,glib "bin")
+       ("itstool" ,itstool)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://launchpad.net/gnome-themes-standard")
+    (synopsis "Manage encryption keys and passwords in the GNOME keyring")
+    (description
+     "Seahorse is a GNOME application for managing encryption keys and
+passwords in the GNOME keyring.")
+    (license license:gpl2+)))
+
 (define-public vala
   (package
     (name "vala")
@@ -1471,7 +1668,7 @@ editors, IDEs, etc.")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "mirror://gnome/sources/" name "/" 
+                    "mirror://gnome/sources/" name "/"
                     (version-major+minor version) "/"
                     name "-" version ".tar.xz"))
               (sha256
@@ -1493,7 +1690,7 @@ editors, IDEs, etc.")
                    ; or /etc/machine-id.
        #:configure-flags
        ;; Set the correct RUNPATH in binaries.
-       (list (string-append "LDFLAGS=-Wl,-rpath=" 
+       (list (string-append "LDFLAGS=-Wl,-rpath="
                             (assoc-ref %outputs "out") "/lib")
              "--disable-gtk-doc-html") ; FIXME: requires gtk-doc
        #:phases
@@ -1502,12 +1699,12 @@ editors, IDEs, etc.")
         (lambda* (#:key inputs #:allow-other-keys)
           (substitute* "docs/Makefile.in"
             (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
-             (string-append (assoc-ref inputs "docbook-xsl") 
+             (string-append (assoc-ref inputs "docbook-xsl")
                             "/xml/xsl/docbook-xsl-"
                             ,(package-version docbook-xsl)
                             "/manpages/docbook.xsl")))
-          (setenv "XML_CATALOG_FILES" 
-                  (string-append (assoc-ref inputs "docbook-xml") 
+          (setenv "XML_CATALOG_FILES"
+                  (string-append (assoc-ref inputs "docbook-xml")
                                  "/xml/dtd/docbook/catalog.xml")))
         %standard-phases)))
     (home-page "https://developer.gnome.org/dconf")
@@ -1906,7 +2103,6 @@ keyboard shortcuts.")
        ("intltool" ,intltool)))
     (inputs
      `(("eudev" ,eudev)
-       ("dbus" ,dbus)
        ("dbus-glib" ,dbus-glib)
        ("libusb" ,libusb)
        ("lcms" ,lcms)
@@ -1923,7 +2119,7 @@ output devices.")
 (define-public geoclue
   (package
     (name "geoclue")
-    (version "2.1.10")
+    (version "2.2.0")
     (source
      (origin
        (method url-fetch)
@@ -1932,7 +2128,7 @@ output devices.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0s0ws2bx5g1cbjamxmm448r4n4crha2fwpzm8zbx6cq6qslygmzi"))
+         "0inlqx0zar498fhi9hh92p2g4kp8qy3zdl4z3vw6bjwp9w6xx454"))
        (patches (list (search-patch "geoclue-config.patch")))))
     (build-system glib-or-gtk-build-system)
     (arguments
@@ -2040,7 +2236,6 @@ faster results and to avoid unnecessary server load.")
        ("python" ,python)))
     (inputs
      `(("eudev" ,eudev)
-       ("dbus" ,dbus)
        ("dbus-glib" ,dbus-glib)
        ("libusb" ,libusb)))
     (home-page "http://upower.freedesktop.org/")
@@ -2153,3 +2348,99 @@ parameters of a GNOME session and the applications that run under it.  It
 handles settings such keyboard layout, shortcuts, and accessibility, clipboard
 settings, themes, mouse settings, and startup of other daemons.")
     (license license:gpl2+)))
+
+(define-public totem-pl-parser
+ (package
+   (name "totem-pl-parser")
+   (version "3.10.5")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append "mirror://gnome/sources/totem-pl-parser/3.10/"
+                                "totem-pl-parser-" version ".tar.xz"))
+            (sha256
+             (base32
+              "0dw1kiwmjwdjrighri0j9nagsnj44dllm0mamnfh4y5nc47mhim7"))))
+   (build-system gnu-build-system)
+   (arguments
+    ;; FIXME: Tests require gvfs.
+    `(#:tests? #f))
+   (native-inputs
+    `(("intltool" ,intltool)
+      ("glib" ,glib "bin")
+      ("pkg-config" ,pkg-config)))
+   (inputs
+    `(("glib" ,glib)
+      ("gmime" ,gmime)
+      ("libarchive" ,libarchive)
+      ("libgcrypt" ,libgcrypt)
+      ("nettle" ,nettle)
+      ("libsoup" ,libsoup)
+      ("libxml2" ,libxml2)))
+   (home-page "https://projects.gnome.org/totem")
+   (synopsis "Library to parse and save media playlists for GNOME")
+   (description "Totem-pl-parser is a GObjects-based library to parse and save
+playlists in a variety of formats.")
+   (license license:lgpl2.0+)))
+
+(define-public aisleriot
+  (package
+    (name "aisleriot")
+    (version "3.16.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "19k483x9dkq8vjbq8f333pk9qil64clpsfg20q8xk9bgmk38aj8h"))))
+    (build-system glib-or-gtk-build-system)
+    (arguments
+     '(#:configure-flags
+       '("--with-platform=gtk-only"
+         "--with-card-theme-formats=svg")))
+    (native-inputs
+     `(("desktop-file-utils" ,desktop-file-utils)
+       ("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
+       ("intltool" ,intltool)
+       ("itstool" ,itstool)
+       ("pkg-config" ,pkg-config)
+       ("xmllint" ,libxml2)))
+    (inputs
+     `(("gtk+" ,gtk+)
+       ("guile" ,guile-2.0)
+       ("libcanberra" ,libcanberra)
+       ("librsvg" ,librsvg)))
+    (home-page "https://wiki.gnome.org/Apps/Aisleriot")
+    (synopsis "Solitaire card games")
+    (description
+     "Aisleriot (also known as Solitaire or sol) is a collection of card games
+which are easy to play with the aid of a mouse.")
+    (license license:gpl3+)))
+
+(define-public devhelp
+  (package
+    (name "devhelp")
+    (version "3.16.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0i8kyh86hzwxs8dm047ivghl2b92vigdxa3x4pk4ha0whpk38g37"))))
+    (build-system glib-or-gtk-build-system)
+    (native-inputs
+     `(("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("webkitgtk" ,webkitgtk)))
+    (home-page "https://wiki.gnome.org/Apps/Devhelp")
+    (synopsis "API documentation browser for GNOME")
+    (description
+     "Devhelp is an API documentation browser for GTK+ and GNOME.  It works
+natively with GTK-Doc (the API reference system developed for GTK+ and used
+throughout GNOME for API documentation).")
+    (license license:gpl2+)))
diff --git a/gnu/packages/gnu-pw-mgr.scm b/gnu/packages/gnu-pw-mgr.scm
index e0f223d7d6..7a9b0b9810 100644
--- a/gnu/packages/gnu-pw-mgr.scm
+++ b/gnu/packages/gnu-pw-mgr.scm
@@ -23,22 +23,25 @@
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
-  #:use-module (gnu packages base))
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages autogen))
 
 (define-public gnu-pw-mgr
   (package
     (name "gnu-pw-mgr")
-    (version "1.3")
+    (version "1.4")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/gnu-pw-mgr/gnu-pw-mgr-"
-                          version ".tar.gz"))
+                          version ".tar.xz"))
       (sha256
        (base32
-        "0rbnv5wszpr35py97vwylqkdlf06qpd2x9j9aqlmgkd4mr1n4hf0"))))
+        "0a352y1m33vp6zmdbn96fdrq9gr9lchc9vcrj14mfx7g0dsvxjns"))))
     (build-system gnu-build-system)
-    (inputs `(("which" ,which)))
+    (native-inputs
+     `(("which" ,which)
+       ("autogen" ,autogen)))
     (home-page "http://www.gnu.org/software/gnu-pw-mgr/")
     (synopsis "Retrieve login credentials without recording passwords")
     (description
diff --git a/gnu/packages/gnucash.scm b/gnu/packages/gnucash.scm
new file mode 100644
index 0000000000..6ab8f09ce6
--- /dev/null
+++ b/gnu/packages/gnucash.scm
@@ -0,0 +1,72 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;;
+;;; 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 gnucash)
+  #:use-module (guix licenses)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages guile)
+  #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages webkit)
+  #:use-module (gnu packages xml))
+
+(define-public gnucash
+  (package
+    (name "gnucash")
+    (version "2.6.6")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "mirror://sourceforge/gnucash/gnucash-"
+                          version ".tar.bz2"))
+      (sha256
+       (base32
+        "103ir5qg6k8m2mmg9b99c3gn8myxh1gsqyr0mfhmrhqya68wfdr3"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ;FIXME: failing at /qof/gnc-date/qof print date dmy buff
+       #:configure-flags '("--disable-dbi")))
+    (inputs
+     `(("guile" ,guile-2.0)
+       ("icu4c" ,icu4c)
+       ("glib" ,glib)
+       ("gtk" ,gtk+-2)
+       ("goffice" ,goffice-0.8)
+       ("libgnomecanvas" ,libgnomecanvas)
+       ("libxml2" ,libxml2)
+       ("libxslt" ,libxslt)
+       ("webkitgtk" ,webkitgtk/gtk+-2)))
+    (native-inputs
+     `(("glib" ,glib "bin") ; glib-compile-schemas, etc.
+       ("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://gnu.org/software/gnucash")
+    (synopsis "Personal and small business financial accounting software")
+    (description
+     "GnuCash is personal and professional financial-accounting software.
+It can be used to track bank accounts, stocks, income and expenses, based on
+the double-entry accounting practice.  It includes support for QIF/OFX/HBCI
+import and transaction matching.  It also automates several tasks, such as
+financial calculations or scheduled transactions.")
+    (license gpl3+)))
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 3b29d1abfa..5724bc8348 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -190,14 +190,14 @@ compatible to GNU Pth.")
 (define-public gnupg
   (package
     (name "gnupg")
-    (version "2.1.2")
+    (version "2.1.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
                                   ".tar.bz2"))
               (sha256
                (base32
-                "14k7c5spai3yppz6izf1ggbnffskl54ln87v1wgy9pwism1mlks0"))))
+                "1c3c89b7ziknz6h1dnwmfjhgyy28g982rcncrhmhylb8v3npw4k4"))))
     (build-system gnu-build-system)
     (inputs
      `(("bzip2" ,bzip2)
@@ -231,14 +231,14 @@ libskba (working with X.509 certificates and CMS data).")
 
 (define-public gnupg-2.0
   (package (inherit gnupg)
-    (version "2.0.27")
+    (version "2.0.28")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
                                   ".tar.bz2"))
               (sha256
                (base32
-                "1wihx7dphacg9fy5wfj93h236lr1w5gwzh7ir3js37wi9cz6sr2p"))))
+                "0k2k399fnhfhhr4dvm8d6vs4ihq6gg06191lzfwikzaqmgj2w2ff"))))
     (inputs
      `(("bzip2" ,bzip2)
        ("curl" ,curl)
@@ -300,7 +300,7 @@ libskba (working with X.509 certificates and CMS data).")
      ;; Needs to be propagated because gpgme.h includes gpg-error.h.
      `(("libgpg-error" ,libgpg-error)))
     (inputs
-     `(("gnupg" ,gnupg)
+     `(("gnupg" ,gnupg-2.0)
        ("libassuan" ,libassuan)))
     (arguments '(#:make-flags '("GPG=gpg2")))
     (home-page "http://www.gnupg.org/related_software/gpgme/")
diff --git a/gnu/packages/gnutls.scm b/gnu/packages/gnutls.scm
index 17cd4582ff..4ed339a09b 100644
--- a/gnu/packages/gnutls.scm
+++ b/gnu/packages/gnutls.scm
@@ -39,7 +39,7 @@
 (define-public libtasn1
   (package
     (name "libtasn1")
-    (version "4.4")
+    (version "4.5")
     (source
      (origin
       (method url-fetch)
@@ -47,7 +47,7 @@
                           version ".tar.gz"))
       (sha256
        (base32
-        "0p8c5s1gm3z3nn4s9qc6gs18grbk45mx44byqw2l2qzynjqrsd7q"))))
+        "1nhvnznhg2aqfrfjxc8v008hjlzkh5831jsfahqk89qrw7fbbcw9"))))
     (build-system gnu-build-system)
     (native-inputs `(("perl" ,perl)
 
@@ -104,7 +104,7 @@ living in the same process.")
 (define-public gnutls
   (package
     (name "gnutls")
-    (version "3.4.0")
+    (version "3.4.1")
     (source (origin
              (method url-fetch)
              (uri
@@ -115,9 +115,7 @@ living in the same process.")
                              "/gnutls-" version ".tar.xz"))
              (sha256
               (base32
-               "0bj7ydvsyvml59b6040wg7694iz37rwnqnv09bic9ddz652588ml"))
-             (patches
-              (list (search-patch "gnutls-fix-duplicate-manpages.patch")))))
+               "0bmih0zyiplr4v8798w0v9g3215zmganq18n8935cizkxj5zbdg9"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 522404f280..7caa7314a9 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -124,7 +124,7 @@ in the Mozilla clients.")
 (define-public nss
   (package
     (name "nss")
-    (version "3.18")
+    (version "3.19.1")
     (source (origin
               (method url-fetch)
               (uri (let ((version-with-underscores
@@ -135,7 +135,7 @@ in the Mozilla clients.")
                       "nss-" version ".tar.gz")))
               (sha256
                (base32
-                "0h0xy9kvd2s8r438q4dfn25cgvv5dc1hkm9lb4bgrxpr5bxv13b1"))
+                "1zrgqlli01gsg2a5w4bk2p0q3aagi5dhd31yirnj04zca6ap1gmp"))
               ;; Create nss.pc and nss-config.
               (patches (list (search-patch "nss-pkgconfig.patch")))))
     (build-system gnu-build-system)
@@ -205,6 +205,12 @@ in the Mozilla clients.")
        ("zlib" ,zlib)))
     (propagated-inputs `(("nspr" ,nspr))) ; required by nss.pc.
     (native-inputs `(("perl" ,perl)))
+
+    ;; The NSS test suite takes over 28 hours on Loongson 3A (MIPS), and
+    ;; possibly longer when another build is happening concurrently on the
+    ;; same machine.
+    (properties '((timeout . 144000)))  ; 40 hours
+
     (home-page
      "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS")
     (synopsis "Network Security Services")
@@ -219,7 +225,7 @@ standards.")
 (define-public icecat
   (package
     (name "icecat")
-    (version "31.6.0-gnu1")
+    (version "31.7.0-gnu1")
     (source
      (origin
       (method url-fetch)
@@ -228,15 +234,13 @@ standards.")
                           name "-" version ".tar.bz2"))
       (sha256
        (base32
-        "1a4l23msg4cpc4yp59q2z6xv63r6advlbnjy65v4djv6yhgnqf1i"))))
+        "0a25jp5afla2dxzj7i4cyvqpa5smsn7ns3xvpzqw6pc7naixkpap"))))
     (build-system gnu-build-system)
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("bzip2" ,bzip2)
        ("cairo" ,cairo)
-       ("dbus" ,dbus)
        ("dbus-glib" ,dbus-glib)
-       ("glib" ,glib)
        ("gstreamer" ,gstreamer)
        ("gst-plugins-base" ,gst-plugins-base)
        ("gtk+" ,gtk+-2)
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index 03aecdfa53..24dc41b703 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -171,6 +171,10 @@ This package provides the core library and elements.")
           ;; for g-ir-scanner.
           (setenv "CC" "gcc"))
         %standard-phases)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "GST_PLUGIN_SYSTEM_PATH")
+            (files '("lib/gstreamer-1.0")))))
     (home-page "http://gstreamer.freedesktop.org/")
     (synopsis
      "Plugins for the GStreamer multimedia library")
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 8a5a3099bf..f518992498 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -138,24 +138,28 @@ affine transformation (scale, rotation, shear, etc.)")
 (define-public harfbuzz
   (package
    (name "harfbuzz")
-   (version "0.9.22")
+   (version "0.9.40")
    (source (origin
             (method url-fetch)
             (uri (string-append "http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-"
                                 version ".tar.bz2"))
             (sha256
              (base32
-              "1nkimwadri6v2kzrmz8y0crmy59gw0kg4i4f6cc786bngs0815lq"))))
+              "07rjp05axas96fp23lpf8l2yyfdj9yib4m0qjv592vdyhcsxaw8p"))))
    (build-system gnu-build-system)
    (inputs
     `(("cairo" ,cairo)
       ("graphite2" ,graphite2)
       ("icu4c" ,icu4c)))
+   (propagated-inputs
+    `(("glib" ,glib))) ; required by harfbuzz-gobject.pc
    (native-inputs
-    `(("pkg-config" ,pkg-config)
-      ("python" ,python-wrapper)))
+    `(("gobject-introspection" ,gobject-introspection)
+      ("pkg-config" ,pkg-config)
+      ("python" ,python-2))) ; incompatible with Python 3 (print syntax)
    (arguments
-    `(#:configure-flags `("--with-graphite2=yes")))
+    `(#:configure-flags `("--with-graphite2"
+                          "--with-gobject")))
    (synopsis "OpenType text shaping engine")
    (description
     "HarfBuzz is an OpenType text shaping engine.")
@@ -426,7 +430,7 @@ is part of the GNOME accessibility project.")
 (define-public gtk+-2
   (package
    (name "gtk+")
-   (version "2.24.27")
+   (version "2.24.28")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -434,7 +438,7 @@ is part of the GNOME accessibility project.")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "1x14rnjvqslpa1q19fp1qalz5sxds72amsgjk8m7769rwk511jr0"))))
+              "0mj6xn40py9r9lvzg633fal81xfwfm89d9mvz7jk4lmwk0g49imj"))))
    (build-system gnu-build-system)
    (outputs '("out" "doc"))
    (propagated-inputs
@@ -482,7 +486,7 @@ application suites.")
 (define-public gtk+
   (package (inherit gtk+-2)
    (name "gtk+")
-   (version "3.16.2")
+   (version "3.16.3")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -490,7 +494,7 @@ application suites.")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "1yhwg2l72l3khfkprydcjlpxjrg11ccqfc80sjl56llz3jk66fd0"))))
+              "195ykv53sl2gsc847wcnd79zilm1yzcc2cfjxnrakhh2dd5gshr9"))))
    (propagated-inputs
     `(("at-spi2-atk" ,at-spi2-atk)
       ("atk" ,atk)
@@ -501,7 +505,8 @@ application suites.")
       ("libxdamage" ,libxdamage)
       ("pango" ,pango)))
    (inputs
-    `(("libxml2" ,libxml2)
+    `(("librsvg" ,librsvg)                        ;for gtk-encode-symbolic-svg
+      ("libxml2" ,libxml2)
       ("cups" ,cups)))                            ;for printing support
    (native-inputs
     `(("perl" ,perl)
@@ -533,7 +538,18 @@ application suites.")
                         "demos/gtk-demo/Makefile.in")
            (("gtk-update-icon-cache") "$(bindir)/gtk-update-icon-cache"))
          #t)
-       %standard-phases)))))
+       (alist-cons-after
+        'install 'wrap-gtk-encode-symbolic-svg
+        ;; By using GdkPixbuf, gtk-encode-symbolic-svg needs to know
+        ;; librsvg's loaders.cache to handle SVG files.
+        (lambda* (#:key inputs outputs #:allow-other-keys)
+          (let* ((out (assoc-ref outputs "out"))
+                 (prog (string-append out "/bin/gtk-encode-symbolic-svg"))
+                 (librsvg (assoc-ref inputs "librsvg"))
+                 (loaders.cache (find-files librsvg "^loaders\\.cache$")))
+            (wrap-program prog
+              `("GDK_PIXBUF_MODULE_FILE" = ,loaders.cache))))
+        %standard-phases))))))
 
 ;;;
 ;;; Guile bindings.
@@ -844,7 +860,7 @@ write GNOME applications.")
 (define-public girara
   (package
     (name "girara")
-    (version "0.2.3")
+    (version "0.2.4")
     (source (origin
               (method url-fetch)
               (uri
@@ -852,7 +868,7 @@ write GNOME applications.")
                               version ".tar.gz"))
               (sha256
                (base32
-                "1phfmqp8y17zcy9yi6pm2f80x8ldbk60iswpm4bmjz5217jwqzxh"))))
+                "0pnfdsg435b5vc4x8l9pgm77aj7ram1q0bzrp9g4a3bh1r64xq1f"))))
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("gettext" ,gnu-gettext)))
     (inputs `(("gtk+" ,gtk+)
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 751002f54c..d8c1a8ca35 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -27,6 +27,7 @@
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages flex)
   #:use-module (gnu packages libunistring)
   #:use-module (gnu packages m4)
   #:use-module (gnu packages multiprecision)
@@ -35,6 +36,9 @@
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages ed)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages gdbm)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -181,6 +185,42 @@ without requiring the source code to be rewritten.")
   ;; in the `base' module, and thus changing it entails a full rebuild.
   guile-2.0)
 
+(define-public guile-for-guile-emacs
+  (package (inherit guile-2.0)
+    (name "guile-for-guile-emacs")
+    (version "20150510.d8d9a8d")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "git://git.hcoop.net/git/bpt/guile.git")
+                    (commit "d8d9a8da05ec876acba81a559798eb5eeceb5a17")))
+              (sha256
+               (base32
+                "00sprsshy16y8pxjy126hr2adqcvvzzz96hjyjwgg8swva1qh6b0"))))
+    (arguments
+     (substitute-keyword-arguments `(;; Tests aren't passing for now.
+                                     ;; Obviously we should re-enable this!
+                                     #:tests? #f
+                                     ,@(package-arguments guile-2.0))
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (add-after 'unpack 'autogen
+                      (lambda _
+                        (zero? (system* "sh" "autogen.sh"))))
+           (add-before 'autogen 'patch-/bin/sh
+                       (lambda _
+                         (substitute* "build-aux/git-version-gen"
+                           (("#!/bin/sh") (string-append "#!" (which "sh"))))
+                         #t))))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("flex" ,flex)
+       ("texinfo" ,texinfo)
+       ("gettext" ,gnu-gettext)
+       ,@(package-native-inputs guile-2.0)))))
+
 
 ;;;
 ;;; Extensions.
@@ -189,25 +229,19 @@ without requiring the source code to be rewritten.")
 (define-public guile-reader
   (package
     (name "guile-reader")
-    (version "0.6")
+    (version "0.6.1")
     (source  (origin
                (method url-fetch)
                (uri (string-append "mirror://savannah/guile-reader/guile-reader-"
                                    version ".tar.gz"))
                (sha256
                 (base32
-                 "1svlyk5pm4fsdp2g7n6qffdl6fdggxnlicj0jn9s4lxd63gzxy1n"))))
+                 "020wz5w8z6g79nbqifg2n496wxwkcjzh8xizpv6mz0hczpl155ma"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkgconfig" ,pkg-config)
                      ("gperf" ,gperf)))
     (inputs `(("guile" ,guile-2.0)))
-    (arguments `(;; The extract-*.sh scripts really expect to run in the C
-                 ;; locale.  Failing to do that, we end up with a build
-                 ;; failure while extracting doc.  (Fixed in Guile-Reader's
-                 ;; repo.)
-                 #:locale "C"
-
-                 #:configure-flags
+    (arguments `(#:configure-flags
                  (let ((out (assoc-ref %outputs "out")))
                    (list (string-append "--with-guilemoduledir="
                                         out "/share/guile/site/2.0")))))
@@ -436,4 +470,69 @@ slightly from miniKanren mainline.
 See http://minikanren.org/ for more on miniKanren generally.")
     (license expat)))
 
+
+;; There are two guile-gdbm packages, one using the FFI and one with
+;; direct C bindings, hence the verbose name.
+
+(define-public guile-gdbm-ffi
+  (package
+    (name "guile-gdbm-ffi")
+    (version "20120209.fa1d5b6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ijp/guile-gdbm.git")
+                    (commit "fa1d5b6231d0e4d096687b378c025f2148c5f246")))
+              (sha256
+               (base32
+                "1j8wrsw7v9w6qkl47xz0rdikg50v16nn6kbs3lgzcymjzpa7babj"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules
+       ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils)
+                      (system base compile))
+
+         (let* ((out (assoc-ref %outputs "out"))
+                (module-dir (string-append out "/share/guile/site/2.0"))
+                (source (assoc-ref %build-inputs "source"))
+                (doc (string-append out "/share/doc"))
+                (guild (string-append (assoc-ref %build-inputs "guile")
+                                      "/bin/guild"))
+                (gdbm.scm-dest
+                 (string-append module-dir "/gdbm.scm"))
+                (gdbm.go-dest
+                 (string-append module-dir "/gdbm.go")))
+           ;; Make installation directories.
+           (mkdir-p module-dir)
+           (mkdir-p doc)
+
+           ;; Switch directory for compiling and installing
+           (chdir source)
+
+           ;; copy the source
+           (copy-file "gdbm.scm" gdbm.scm-dest)
+
+           ;; Patch the FFI
+           (substitute* gdbm.scm-dest
+             (("\\(dynamic-link \"libgdbm\"\\)")
+              (format #f "(dynamic-link \"~a/lib/libgdbm.so\")"
+                      (assoc-ref %build-inputs "gdbm"))))
+
+           ;; compile to the destination
+           (compile-file gdbm.scm-dest
+                         #:output-file gdbm.go-dest)))))
+    (inputs
+     `(("guile" ,guile-2.0)))
+    (propagated-inputs
+     `(("gdbm" ,gdbm)))
+    (home-page "https://github.com/ijp/guile-gdbm")
+    (synopsis "Guile bindings to the GDBM library via Guile's FFI")
+    (description
+     "Guile bindings to the GDBM key-value storage system, using
+Guile's foreign function interface.")
+    (license gpl3+)))
+
 ;;; guile.scm ends here
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 3bb5e3074a..ac87de540e 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -373,14 +373,13 @@ access to the full zlib feature set.")
     (arguments
      `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
     (home-page "https://github.com/bos/text")
-    (synopsis
-     "Efficient packed Unicode text type library.")
+    (synopsis "Efficient packed Unicode text type library")
     (description
      "An efficient packed, immutable Unicode text type (both strict and
 lazy), with a powerful loop fusion optimization framework.
 
 The 'Text' type represents Unicode character strings, in a time and
-space-efficient manner. This package provides text processing
+space-efficient manner.  This package provides text processing
 capabilities that are optimized for performance critical use, both
 in terms of large data quantities and high speed.")
     (license bsd-3)))
@@ -870,7 +869,7 @@ package into this package.")
     (home-page "https://github.com/haskell/HTTP")
     (synopsis "Library for client-side HTTP")
     (description
-     "The HTTP package supports client-side web programming in Haskell. It
+     "The HTTP package supports client-side web programming in Haskell.  It
 lets you set up HTTP connections, transmitting requests and processing the
 responses coming back.")
     (license bsd-3)))
diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm
index 813d0040ee..1abe70a1ab 100644
--- a/gnu/packages/ibus.scm
+++ b/gnu/packages/ibus.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -72,7 +73,6 @@
     `(("dbus" ,dbus)
       ("dconf" ,dconf)
       ("gconf" ,gconf)
-      ("glib" ,glib)
       ("gtk2" ,gtk+-2)
       ("intltool" ,intltool)
       ("libnotify" ,libnotify)
diff --git a/gnu/packages/icu4c.scm b/gnu/packages/icu4c.scm
index a575e91c8c..a753a22b20 100644
--- a/gnu/packages/icu4c.scm
+++ b/gnu/packages/icu4c.scm
@@ -28,7 +28,7 @@
 (define-public icu4c
   (package
    (name "icu4c")
-   (version "54.1")
+   (version "55.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "http://download.icu-project.org/files/icu4c/"
@@ -37,7 +37,7 @@
                    (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
                    "-src.tgz"))
             (sha256
-             (base32 "1cwapgjmvrcv1n2wjspj3vahidg596gjfp4jn1gcb4baralcjayl"))))
+             (base32 "0ys5f5spizg45qlaa31j2lhgry0jka2gfha527n4ndfxxz5j4sz1"))))
    (build-system gnu-build-system)
    (inputs
     `(("perl" ,perl)))
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index c24ec99375..89590cc5ad 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -555,10 +555,10 @@ multi-dimensional image processing.")
     (synopsis "Lossless and lossy image compression")
     (description
      "WebP is a new image format that provides lossless and lossy compression
-for images. WebP lossless images are 26% smaller in size compared to
-PNGs. WebP lossy images are 25-34% smaller in size compared to JPEG images at
-equivalent SSIM index. WebP supports lossless transparency (also known as
-alpha channel) with just 22% additional bytes. Transparency is also supported
+for images.  WebP lossless images are 26% smaller in size compared to
+PNGs.  WebP lossy images are 25-34% smaller in size compared to JPEG images at
+equivalent SSIM index.  WebP supports lossless transparency (also known as
+alpha channel) with just 22% additional bytes.  Transparency is also supported
 with lossy compression and typically provides 3x smaller file sizes compared
 to PNG when lossy compression is acceptable for the red/green/blue color
 channels.")
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
index ab663b5a41..b52237f992 100644
--- a/gnu/packages/imagemagick.scm
+++ b/gnu/packages/imagemagick.scm
@@ -37,14 +37,14 @@
 (define-public imagemagick
   (package
     (name "imagemagick")
-    (version "6.9.0-4")
+    (version "6.9.1-3")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://imagemagick/ImageMagick-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0ms9lxrm3hvgghv8k7rj6kvk40xkc6lgr41xyaxz7lyf3l4ahslr"))))
+               "18wbsjfccxlgsdsd6h9wvhcjrsglyi086jk4bk029ik07rh81laz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases (alist-cons-before
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 26fc3eccf5..ea8de9e2cf 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -250,6 +250,11 @@ build process and its dependencies, whereas Make uses Makefile format.")
        ;; gremlin) doesn't support it yet, so skip this phase.
        #:validate-runpath? #f
 
+       #:modules ((guix build utils)
+                  (guix build gnu-build-system)
+                  (ice-9 popen)
+                  (ice-9 rdelim))
+
        #:configure-flags
        (let* ((gcjdir (assoc-ref %build-inputs "gcj"))
               (ecj    (string-append gcjdir "/share/java/ecj.jar"))
@@ -378,9 +383,16 @@ build process and its dependencies, whereas Make uses Makefile format.")
            (lambda* (#:key inputs #:allow-other-keys)
              (let* ((gcjdir  (assoc-ref %build-inputs "gcj"))
                     (gcjlib  (string-append gcjdir "/lib"))
-                    (antpath (string-append (getcwd) "/../apache-ant-1.9.4")))
+                    (antpath (string-append (getcwd) "/../apache-ant-1.9.4"))
+                    ;; Get target-specific include directory so that
+                    ;; libgcj-config.h is found when compiling hotspot.
+                    (gcjinclude (let* ((port (open-input-pipe "gcj -print-file-name=include"))
+                                       (str  (read-line port)))
+                                  (close-pipe port)
+                                  str)))
                (setenv "CPATH"
-                       (string-append (assoc-ref %build-inputs "libxrender")
+                       (string-append gcjinclude ":"
+                                      (assoc-ref %build-inputs "libxrender")
                                       "/include/X11/extensions" ":"
                                       (assoc-ref %build-inputs "libxtst")
                                       "/include/X11/extensions" ":"
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index c6556865c2..1409e7c0b1 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -224,6 +224,6 @@ calculation of sha1 for every file crawled
     (arguments
      `(#:tests? #f)) ; no test target
     (home-page "http://www.kde.org/")
-    (synopsis "oxygen icon theme for the KDE desktop")
+    (synopsis "Oxygen icon theme for the KDE desktop")
     (description "KDE desktop environment")
     (license lgpl3+)))
diff --git a/gnu/packages/libedit.scm b/gnu/packages/libedit.scm
index fcf5ab4c74..1d7b5b6a5f 100644
--- a/gnu/packages/libedit.scm
+++ b/gnu/packages/libedit.scm
@@ -42,7 +42,7 @@
     (synopsis "NetBSD Editline library")
     (description
      "This is an autotool- and libtoolized port of the NetBSD Editline
-library (libedit). This Berkeley-style licensed command line editor library
+library (libedit).  This Berkeley-style licensed command line editor library
 provides generic line editing, history, and tokenization functions, similar to
 those found in GNU Readline.")
     (license bsd-3)))
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index cbe1c75eeb..4cd78f68cc 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -18,14 +18,51 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages libreoffice)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module ((guix licenses) #:select (mpl2.0))
   #:use-module (guix build-system gnu)
+  #:use-module (guix download)
+  #:use-module ((guix licenses)
+                #:select (gpl2+ lgpl2.1+ mpl1.1 mpl2.0
+                          non-copyleft x11-style))
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cups)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages doxygen)
+  #:use-module (gnu packages flex)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gperf)
+  #:use-module (gnu packages gnuzilla)
+  #:use-module (gnu packages gstreamer)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages java)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages maths)
+  #:use-module (gnu packages openldap)
+  #:use-module (gnu packages openssl)
+  #:use-module (gnu packages pdf)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages python))
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages rdf)
+  #:use-module (gnu packages scanner)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages zip))
 
 (define-public ixion
   (package
@@ -79,3 +116,711 @@ Microsoft Excel 2007 XML, Microsoft Excel 2003 XML, Open Document Spreadsheet,
 Plain Text, Gnumeric XML, Generic XML.  It also includes low-level parsers for
 CSV, CSS and XML.")
     (license mpl2.0)))
+
+(define-public librevenge
+  (package
+    (name "librevenge")
+    (version "0.0.2")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "mirror://sourceforge/libwpd/" name "/" name "-"
+                          version ".tar.xz"))
+      (sha256 (base32
+               "03ygxyb0vfjv8raif5q62sl33b54wkr5rzgadb8slijm6k281wpn"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("boost" ,boost)
+       ("cppunit" ,cppunit)
+       ("doxygen" ,doxygen)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("zlib" ,zlib)))
+    (arguments
+     ;; avoid triggering configure errors by simple inclusion of boost headers
+     `(#:configure-flags '("--disable-werror")))
+    (home-page "http://sourceforge.net/p/libwpd/wiki/librevenge/")
+    (synopsis "Document importer for office suites")
+    (description "Librevenge is a base library for writing document import
+filters.  It has interfaces for text documents, vector graphics,
+spreadsheets and presentations.")
+    (license (list mpl2.0 lgpl2.1+))))            ;dual licensed
+
+(define-public libwpd
+  (package
+    (name "libwpd")
+    (version "0.10.0")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "mirror://sourceforge/libwpd/" name "/" name "-"
+                          version ".tar.xz"))
+      (sha256 (base32
+               "0b6krzr6kxzm89g6bapn805kdayq70hn16n5b5wfs2lwrf0ag2wx"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("doxygen" ,doxygen)
+       ("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     `(("librevenge" ,librevenge))) ; in Requires field of .pkg
+    (inputs
+     `(("zlib" ,zlib)))
+    (home-page "http://libwpd.sourceforge.net/")
+    (synopsis "Library for importing WordPerfect documents")
+    (description "Libwpd is a C++ library designed to help process
+WordPerfect documents.  It is most commonly used to import such documents
+into other word processors.")
+    (license (list mpl2.0 lgpl2.1+))))            ;dual licensed
+
+(define-public libe-book
+  (package
+    (name "libe-book")
+    (version "0.1.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "mirror://sourceforge/libebook/libe-book-"
+                            version "/libe-book-" version ".tar.xz"))
+        (sha256
+          (base32
+            "1v48pd32r2pfysr3a3igc4ivcf6vvb26jq4pdkcnq75p70alp2bz"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("cppunit" ,cppunit)
+       ("gperf" ,gperf)
+       ("pkg-config" ,pkg-config)))
+    (propagated-inputs ; in Requires or Requires.private field of .pkg
+     `(("icu4c" ,icu4c)
+       ("librevenge" ,librevenge)
+       ("libxml2" ,libxml2)))
+    (inputs
+      `(("boost" ,boost)))
+    (arguments
+     ;; avoid triggering configure errors by simple inclusion of boost headers
+     `(#:configure-flags '("--disable-werror")))
+    (home-page "http://libebook.sourceforge.net")
+    (synopsis "Library for import of reflowable e-book formats")
+    (description "Libe-book is a library and a set of tools for reading and
+converting various reflowable e-book formats.  Currently supported are:
+Broad Band eBook, eReader .pdb, FictionBook v. 2 (including zipped files),
+PalmDoc Ebook, Plucker .pdb, QiOO (mobile format, for java-enabled
+cellphones), TCR (simple compressed text format), TealDoc, zTXT,
+ZVR (simple compressed text format).")
+    (license mpl2.0)))
+
+(define-public libwpg
+  (package
+    (name "libwpg")
+    (version "0.3.0")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "mirror://sourceforge/libwpg/" name "/" name "-"
+                          version ".tar.xz"))
+      (sha256 (base32
+               "097jx8a638fwwfrzf6v29r1yhc34rq9526py7wf0ck2z4fcr2w3g"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("doxygen" ,doxygen)
+       ("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     `(("libwpd" ,libwpd))) ; in Requires field of .pkg
+    (inputs
+     `(("perl" ,perl)
+       ("zlib" ,zlib)))
+    (home-page "http://libwpg.sourceforge.net/")
+    (synopsis "Library and tools for the WordPerfect Graphics format")
+    (description "The libwpg project provides a library and tools for
+working with graphics in the WPG (WordPerfect Graphics) format.")
+    (license (list mpl2.0 lgpl2.1+))))            ;dual licensed
+
+(define-public libcmis
+  (package
+    (name "libcmis")
+    (version "0.5.0")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "mirror://sourceforge/" name "/" name "-"
+                          version ".tar.gz"))
+      (sha256 (base32
+               "1dprvk4fibylv24l7gr49gfqbkfgmxynvgssvdcycgpf7n8h4zm8"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("cppunit" ,cppunit)
+       ("pkg-config" ,pkg-config)))
+    (propagated-inputs ; in Requires field of .pkg
+     `(("curl" ,curl)
+       ("libxml2" ,libxml2)))
+    (inputs
+     `(("boost" ,boost)
+       ("cyrus-sasl" ,cyrus-sasl)
+       ("openssl" ,openssl)))
+    (arguments
+     `(#:configure-flags
+        (list
+          ;; FIXME: Man pages generation requires docbook-to-man; reenable
+          ;; it once this is available.
+          "--without-man"
+          ;; avoid triggering configure errors by simple inclusion of
+          ;; boost headers
+          "--disable-werror"
+          ;; During configure, the boost headers are found, but linking
+          ;; fails without the following flag.
+          (string-append "--with-boost="
+                         (assoc-ref %build-inputs "boost")))))
+    (home-page "http://sourceforge.net/projects/libcmis/")
+    (synopsis "CMIS client library")
+    (description "LibCMIS is a C++ client library for the CMIS interface.  It
+allows C++ applications to connect to any ECM behaving as a CMIS server such
+as Alfresco or Nuxeo.")
+    (license (list mpl1.1 gpl2+ lgpl2.1+)))) ; triple license
+
+(define-public libabw
+  (package
+    (name "libabw")
+    (version "0.1.1")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://dev-www.libreoffice.org/src/" name "/"
+                          name "-" version ".tar.xz"))
+      (sha256 (base32
+               "0zi1zj4fpxgpglbbb5n1kg3dmhqq5rpf46lli89r5daavp19iing"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("doxygen" ,doxygen)
+       ("gperf" ,gperf)
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)))
+    (propagated-inputs ; in Requires or Requires.private field of .pkg
+     `(("librevenge" ,librevenge)
+       ("libxml2" ,libxml2)))
+    (inputs
+     `(("boost" ,boost)))
+    (arguments
+     ;; avoid triggering configure errors by simple inclusion of boost headers
+     `(#:configure-flags '("--disable-werror")))
+    (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libabw")
+    (synopsis "Library for parsing the AbiWord format")
+    (description "Libabw is a library that parses the file format of
+AbiWord documents.")
+    (license mpl2.0)))
+
+(define-public libcdr
+  (package
+    (name "libcdr")
+    (version "0.1.1")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://dev-www.libreoffice.org/src/" name "/"
+                          name "-" version ".tar.xz"))
+      (sha256 (base32
+               "07yzb1yr5kzv0binzj5swz3zzay2gw3xb0fbkc2zwdssgrkf19nh"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("doxygen" ,doxygen)
+       ("pkg-config" ,pkg-config)))
+    (propagated-inputs ; in Requires or Requires.private field of .pkg
+     `(("icu4c" ,icu4c)
+       ("lcms" ,lcms)
+       ("librevenge" ,librevenge)
+       ("zlib" ,zlib)))
+    (inputs
+     `(("boost" ,boost)))
+    (arguments
+     ;; avoid triggering a build failure due to warnings
+     `(#:configure-flags '("--disable-werror")))
+    (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libcdr")
+    (synopsis "Library for parsing the CorelDRAW format")
+    (description "Libcdr is a library that parses the file format of
+CorelDRAW documents of all versions.")
+    (license mpl2.0)))
+
+(define-public libetonyek
+  (package
+    (name "libetonyek")
+    (version "0.1.1")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://dev-www.libreoffice.org/src/" name "/"
+                          name "-" version ".tar.xz"))
+      (sha256 (base32
+               "0gn8v24jb9r9kxppbws6xlc7knpd9mk2n9xjvziccv5f2l7mlslw"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("cppunit" ,cppunit)
+       ("doxygen" ,doxygen)
+       ("gperf" ,gperf)
+       ("pkg-config" ,pkg-config)))
+    (propagated-inputs ; in Requires or Requires.private field of .pkg
+     `(("librevenge" ,librevenge)
+       ("libxml2" ,libxml2)))
+    (inputs
+     `(("boost" ,boost)))
+    (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libetonyek")
+    (synopsis "Library for parsing the Apple Keynote format")
+    (description "Libetonyek is a library that parses the file format of
+Apple Keynote documents.  It currently supports Keynote versions 2 to 5.")
+    (license mpl2.0)))
+
+(define-public libexttextcat
+  (package
+    (name "libexttextcat")
+    (version "3.4.4")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://dev-www.libreoffice.org/src/" name "/"
+                          name "-" version ".tar.xz"))
+      (sha256 (base32
+               "14v2hkygnmf1zgahfm1fha47cr67iikrz2ymiqi28d2jydn0hk7j"))))
+    (build-system gnu-build-system)
+    (home-page "http://www.freedesktop.org/wiki/Software/libexttextcat/")
+    (synopsis "Text Categorization library")
+    (description "Libexttextcat is an N-Gram-Based Text Categorization
+library primarily intended for language guessing.")
+    (license (non-copyleft "file://LICENSE"
+                           "See LICENSE in the distribution."))))
+
+(define-public libfreehand
+  (package
+    (name "libfreehand")
+    (version "0.1.0")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://dev-www.libreoffice.org/src/" name "/"
+                          name "-" version ".tar.xz"))
+      (sha256 (base32
+               "01j7mxi4lmf72w1mv2r098p8l0csdd94w2gq0ncp93djn34al6ai"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("doxygen" ,doxygen)
+       ("gperf" ,gperf)
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)))
+    (propagated-inputs ; in Requires or Requires.private field of .pkg
+     `(("librevenge" ,librevenge)
+       ("zlib" ,zlib)))
+    (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libfreehand")
+    (synopsis "Library for parsing the FreeHand format")
+    (description "Libfreehand is a library that parses the file format of
+Aldus/Macromedia/Adobe FreeHand documents.")
+    (license mpl2.0)))
+
+(define-public libmspub
+  (package
+    (name "libmspub")
+    (version "0.1.2")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://dev-www.libreoffice.org/src/" name "/"
+                          name "-" version ".tar.xz"))
+      (sha256 (base32
+               "03sn6lxpr49sdq6j8q7fw7yjybyfahhs03z80388mh105pwapfmh"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("doxygen" ,doxygen)
+       ("pkg-config" ,pkg-config)))
+    (propagated-inputs ; in Requires or Requires.private field of .pkg
+     `(("icu4c" ,icu4c)
+       ("librevenge" ,librevenge)
+       ("zlib" ,zlib)))
+    (inputs
+     `(("boost" ,boost)))
+    (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libmspub")
+    (synopsis "Library for parsing the Microsoft Publisher format")
+    (description "Libmspub is a library that parses the file format of
+Microsoft Publisher documents of all versions.")
+    (license mpl2.0)))
+
+(define-public libpagemaker
+  (package
+    (name "libpagemaker")
+    (version "0.0.2")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://dev-www.libreoffice.org/src/" name "/"
+                          name "-" version ".tar.xz"))
+      (sha256 (base32
+               "05zgj5ngg9z4b7dnrfs59nm0macm99lzyxv4mg53jcvp0mkgigfd"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("doxygen" ,doxygen)
+       ("pkg-config" ,pkg-config)))
+    (propagated-inputs ; in Requires field of .pkg
+     `(("librevenge" ,librevenge)))
+    (inputs
+     `(("boost" ,boost)
+       ("zlib" ,zlib)))
+    (arguments
+     ;; avoid triggering a build failure due to warnings
+     `(#:configure-flags '("--disable-werror")))
+    (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libpagemaker")
+    (synopsis "Library for parsing the PageMaker format")
+    (description "Libpagemaker is a library that parses the file format of
+Aldus/Adobe PageMaker documents.  Currently it only understands documents
+created by PageMaker version 6.x and 7.")
+    (license mpl2.0)))
+
+(define-public libvisio
+  (package
+    (name "libvisio")
+    ;; FIXME: The newer version 0.1.1 fails its tests.
+    (version "0.1.0")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://dev-www.libreoffice.org/src/" name "/"
+                          name "-" version ".tar.xz"))
+      (sha256 (base32
+               "0vvd2wyp4rw6s9xnj1dc9vgdpfvm45gnb5b9hhzif0fdnx4iskqf"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("cppunit" ,cppunit)
+       ("doxygen" ,doxygen)
+       ("gperf" ,gperf)
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)))
+    (propagated-inputs ; in Requires or Requires.private field of .pkg
+     `(("icu4c" ,icu4c)
+       ("librevenge" ,librevenge)
+       ("libxml2" ,libxml2)))
+    (inputs
+     `(("boost" ,boost)))
+    ;; FIXME: Not needed any more for newer version 0.1.1.
+    (arguments
+     ;; avoid triggering a build failure due to warnings
+     `(#:configure-flags '("--disable-werror")))
+    (home-page "https://wiki.documentfoundation.org/DLP/Libraries/libvisio")
+    (synopsis "Library for parsing the Microsoft Visio format")
+    (description "Libvisio is a library that parses the file format of
+Microsoft Visio documents of all versions.")
+    (license mpl2.0)))
+
+(define-public libodfgen
+  (package
+    (name "libodfgen")
+    (version "0.1.3")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://dev-www.libreoffice.org/src/"
+                          name "-" version ".tar.bz2"))
+      (sha256 (base32
+               "074qsav86ixwi9zm1f77g9vxdf1ihm6n930vxjg8q3lwzd8g7lb6"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("doxygen" ,doxygen)
+       ("pkg-config" ,pkg-config)))
+    (propagated-inputs ; in Requires field of .pkg
+     `(("librevenge" ,librevenge)))
+    (inputs
+     `(("boost" ,boost)
+       ("zlib" ,zlib)))
+    (arguments
+     ;; avoid triggering configure errors by simple inclusion of boost headers
+     `(#:configure-flags '("--disable-werror")))
+    (home-page "http://sourceforge.net/p/libwpd/wiki/libodfgen/")
+    (synopsis "ODF (Open Document Format) library")
+    (description "Libodfgen is a library for generating documents in the
+Open Document Format (ODF).  It provides generator implementations for all
+document interfaces supported by librevenge:
+text documents, vector drawings, presentations and spreadsheets.")
+    (license (list mpl2.0 lgpl2.1+)))) ; dual license
+
+(define-public libmwaw
+  (package
+    (name "libmwaw")
+    (version "0.3.4")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "mirror://sourceforge/" name "/" name "/"
+                          name "-" version ".tar.xz"))
+      (sha256 (base32
+               "1sn95flxrh85qjsg1kk700c1ggxaaccr9j1nnw7x4daw8lky25ac"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("doxygen" ,doxygen)
+       ("pkg-config" ,pkg-config)))
+    (propagated-inputs ; in Requires field of .pkg
+     `(("librevenge" ,librevenge)))
+    (inputs
+     `(("boost" ,boost)
+       ("zlib" ,zlib)))
+    (arguments
+     ;; avoid triggering configure errors by simple inclusion of boost headers
+     `(#:configure-flags '("--disable-werror")))
+    (home-page "http://sourceforge.net/p/libmwaw/wiki/Home/")
+    (synopsis "Import library for some old Macintosh text documents")
+    (description "Libmwaw contains some import filters for old Macintosh
+text documents (MacWrite, ClarisWorks, ... ) and for some graphics and
+spreadsheet documents.")
+    (license (list mpl2.0 lgpl2.1+)))) ; dual license
+
+(define-public libwps
+  (package
+    (name "libwps")
+    (version "0.3.1")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "mirror://sourceforge/" name "/" name "/"
+                          name "-" version ".tar.xz"))
+      (sha256 (base32
+               "14wfhw1ahavhx4hrdzc4hdwxjlffrm939kswf2x1250jnmyjlb5v"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("doxygen" ,doxygen)
+       ("pkg-config" ,pkg-config)))
+    (propagated-inputs ; in Requires field of .pkg
+     `(("librevenge" ,librevenge)))
+    (inputs
+     `(("boost" ,boost)
+       ("zlib" ,zlib)))
+    (arguments
+     ;; avoid triggering configure errors by simple inclusion of boost headers
+     `(#:configure-flags '("--disable-werror")))
+    (home-page "http://libwps.sourceforge.net/")
+    (synopsis "Import library for Microsoft Works text documents")
+    (description "Libwps is a library for importing files in the Microsoft
+Works word processor file format.")
+    (license (list mpl2.0 lgpl2.1+)))) ; dual license
+
+(define-public hunspell
+  (package
+    (name "hunspell")
+    (version "1.3.3")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "mirror://sourceforge/" name "/"
+                          name "-" version ".tar.gz"))
+      (sha256 (base32
+               "0v14ff9s37vkh45diaddndcrj0hmn67arh8xh8k79q9c1vgc1cm7"))))
+    (build-system gnu-build-system)
+    (home-page "http://hunspell.sourceforge.net/")
+    (synopsis "Spell checker")
+    (description "Hunspell is a spell checker and morphological analyzer
+library and program designed for languages with rich morphology and complex
+word compounding or character encoding.")
+    ;; triple license, including "mpl1.1 or later"
+    (license (list mpl1.1 gpl2+ lgpl2.1+))))
+
+(define-public hyphen
+  (package
+    (name "hyphen")
+    (version "2.8.8")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "mirror://sourceforge/hunspell/"
+                          name "-" version ".tar.gz"))
+      (sha256 (base32
+               "01ap9pr6zzzbp4ky0vy7i1983fwyqy27pl0ld55s30fdxka3ciih"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("perl" ,perl)))
+    (home-page "http://hunspell.sourceforge.net/")
+    (synopsis "Hyphenation library")
+    (description "Hyphen is a hyphenation library using TeX hyphenation
+patterns, which are pre-processed by a perl script.")
+    ;; triple license, including "mpl1.1 or later"
+    (license (list mpl1.1 mpl2.0 gpl2+ lgpl2.1+))))
+
+(define-public mythes
+  (package
+    (name "mythes")
+    (version "1.2.4")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "mirror://sourceforge/hunspell/"
+                          name "-" version ".tar.gz"))
+      (sha256 (base32
+               "0prh19wy1c74kmzkkavm9qslk99gz8h8wmjvwzjc6lf8v2az708y"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("hunspell" ,hunspell)
+       ("perl" ,perl)))
+    (home-page "http://hunspell.sourceforge.net/")
+    (synopsis "Thesaurus")
+    (description "MyThes is a simple thesaurus that uses a structured text
+data file and an index file with binary search to look up words and phrases
+and to return information on pronunciations, meaningss and synonyms.")
+    (license (non-copyleft "file://COPYING"
+                           "See COPYING in the distribution."))))
+
+;; LibreOffice requires an xmlsec source tarball; it does not even check
+;; for the presence of an externally compiled library.
+(define xmlsec-src-libreoffice
+  (origin
+    (method url-fetch)
+    (uri
+      (string-append
+        "http://dev-www.libreoffice.org/src/"
+        "1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz"))
+    (sha256 (base32
+              "0jnxxygg6z5zi6za94dvxmg1bfar1wh8p5xa2bzbha0qcn2m02ir"))))
+
+(define-public libreoffice
+  (package
+    (name "libreoffice")
+    (version "4.4.3.2")
+    (source
+     (origin
+      (method url-fetch)
+      (uri
+        (string-append
+          "http://download.documentfoundation.org/libreoffice/src/"
+          (version-prefix version 3) "/libreoffice-" version ".tar.xz"))
+      (sha256 (base32
+               "0rl9x01ngxwnqwzxkrqy4vks4rb024m75z0w4zidwyp0az0m8qdd"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(;; autoreconf is run by the LibreOffice build system, since after
+       ;; unpacking the external xmlsec tarball, it applies a series of
+       ;; patches to Makefile.am, configure.in, config.guess and config.sub.
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("bison" ,bison)
+       ("cppunit" ,cppunit)
+       ("flex" ,flex)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python)
+       ("which" ,which)))
+    (inputs
+     `(("bluez" ,bluez)
+       ("boost" ,boost)
+       ("clucene" ,clucene)
+       ("cups" ,cups)
+       ("dbus-glib" ,dbus-glib)
+       ("fontconfig" ,fontconfig)
+       ("gconf" ,gconf)
+       ("glew" ,glew)
+       ("glm" ,glm)
+       ("gperf" ,gperf)
+       ("graphite2" ,graphite2)
+       ("gst-plugins-base" ,gst-plugins-base)
+       ("gtk+" ,gtk+-2)
+       ("harfbuzz" ,harfbuzz)
+       ("hunspell" ,hunspell)
+       ("hyphen" ,hyphen)
+       ("libabw" ,libabw)
+       ("libcdr" ,libcdr)
+       ("libcmis" ,libcmis)
+       ("libjpeg" ,libjpeg)
+       ("libe-book" ,libe-book)
+       ("libetonyek" ,libetonyek)
+       ("libexttextcat" ,libexttextcat)
+       ("libfreehand" ,libfreehand)
+       ("libmspub" ,libmspub)
+       ("libmwaw" ,libmwaw)
+       ("libodfgen" ,libodfgen)
+       ("libpagemaker" ,libpagemaker)
+       ("libvisio" ,libvisio)
+       ("libwpg" ,libwpg)
+       ("libwps" ,libwps)
+       ("libxrandr" ,libxrandr)
+       ("libxrender" ,libxrender)
+       ("libxslt" ,libxslt)
+       ("libxt" ,libxt)
+       ("lpsolve" ,lpsolve)
+       ("mdds" ,mdds)
+       ("mythes" ,mythes)
+       ("neon" ,neon)
+       ("nspr" ,nspr)
+       ("nss" ,nss)
+       ("openldap" ,openldap)
+       ("openssl" ,openssl)
+       ("orcus" ,orcus)
+       ("perl" ,perl)
+       ("perl-zip" ,perl-zip)
+       ("poppler" ,poppler)
+       ("postgresql" ,postgresql)
+       ("python" ,python)
+       ("redland" ,redland)
+       ("sane-backends" ,sane-backends)
+       ("unixodbc" ,unixodbc)
+       ("unzip" ,unzip)
+       ("vigra" ,vigra)
+       ("xmlsec-src" ,xmlsec-src-libreoffice)
+       ("zip" ,zip)))
+    (arguments
+     `(#:parallel-build? #f ; Otherwise the build fails.
+       #:tests? #f ; Building the tests already fails.
+       #:make-flags '("build-nocheck") ; Do not build unit tests, which fails.
+       #:phases
+         (modify-phases %standard-phases
+           (add-before 'configure 'prepare-src
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((xmlsec (assoc-ref inputs "xmlsec-src")))
+                 (substitute*
+                   (list "sysui/CustomTarget_share.mk"
+                         "solenv/gbuild/gbuild.mk"
+                         "solenv/gbuild/platform/unxgcc.mk"
+                         "external/libxmlsec/xmlsec1-oldlibtool.patch")
+                   (("/bin/sh") (which "bash")))
+                 (mkdir "external/tarballs")
+                 (symlink
+                   xmlsec
+                   (string-append "external/tarballs/"
+                     "1f24ab1d39f4a51faf22244c94a6203f-"
+                     "xmlsec1-1.2.14.tar.gz"))
+                 ;; The following is required for building xmlsec from the
+                 ;; unpatched external tarball; since "configure" starts with
+                 ;; "/bin/sh", it needs to be executed by a command invoking
+                 ;; the shell.
+                 (setenv "SHELL" (which "bash"))
+                 (setenv "CONFIG_SHELL" (which "bash"))
+                 (substitute* "external/libxmlsec/ExternalProject_xmlsec.mk"
+                   (("./configure") "$(CONFIG_SHELL) ./configure" ))
+                 #t)))
+           (add-after 'install 'bin-install
+             ;; Create a symlink bin/soffice to the executable script.
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin")))
+                 (mkdir bin)
+                 (symlink
+                   (string-append out "/lib/libreoffice/program/soffice")
+                   (string-append bin "/soffice")))
+               #t)))
+       #:configure-flags
+        (list
+          "--enable-release-build"
+          "--enable-verbose"
+          "--without-parallelism" ; otherwise the build fails
+          "--disable-fetch-external" ; disable downloads
+          "--with-system-libs" ; enable all --with-system-* flags
+          (string-append "--with-boost-libdir="
+                         (assoc-ref %build-inputs "boost") "/lib")
+          ;; Avoid a dependency on ucpp.
+          "--with-idlc-cpp=cpp"
+          ;; The fonts require an external tarball (crosextrafonts).
+          ;; They should not be needed when system fonts are available.
+          "--without-fonts"
+          ;; With java, the build fails since sac.jar is missing.
+          "--without-java"
+          ;; FIXME: Enable once the corresponding inputs are packaged.
+          "--without-system-npapi-headers"
+          "--disable-coinmp"
+          "--disable-firebird-sdbc" ; embedded firebird
+          "--disable-gltf"
+          "--disable-liblangtag")))
+    (home-page "https://www.libreoffice.org/")
+    (synopsis "Office suite")
+    (description "LibreOffice is a comprehensive office suite.  It contains
+a number of components: Writer, a word processor; Calc, a spreadsheet
+application; Impress, a presentation engine; Draw, a drawing and
+flowcharting application; Base, a database and database frontend;
+Math for editing mathematics.")
+    (license mpl2.0)))
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index 62eb753d24..dd8a2ff23b 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -24,12 +24,13 @@
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages pkg-config))
 
 (define-public libusb
   (package
     (name "libusb")
-    (version "1.0.9")
+    (version "1.0.19")
     (source
      (origin
       (method url-fetch)
@@ -37,8 +38,14 @@
                           "libusb-" version "/libusb-" version ".tar.bz2"))
       (sha256
        (base32
-        "16sz34ix6hw2wwl3kqx6rf26fg210iryr68wc439dc065pffw879"))))
+        "0h38p9rxfpg9vkrbyb120i1diq57qcln82h5fr7hvy82c20jql3c"))))
     (build-system gnu-build-system)
+
+    ;; XXX: Enabling udev is now recommended, but eudev indirectly depends on
+    ;; libusb.
+    (arguments `(#:configure-flags '("--disable-udev")))
+    ;; (inputs `(("eudev" ,eudev)))
+
     (home-page "http://www.libusb.org")
     (synopsis "User-space USB library")
     (description
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 262c5bdb34..1b220c4e32 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
@@ -55,6 +55,8 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages asciidoc)
+  #:use-module (gnu packages readline)
+  #:use-module (gnu packages calendar)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
@@ -208,7 +210,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
      #f)))
 
 (define-public linux-libre
-  (let* ((version "4.0")
+  (let* ((version "4.0.5")
          (build-phase
           '(lambda* (#:key system inputs #:allow-other-keys #:rest args)
              ;; Apply the neat patch.
@@ -281,9 +283,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
              (uri (linux-libre-urls version))
              (sha256
               (base32
-               "12nkzn1n4si2zcp10b645qri83m2y7iwp29vs2rjmy612azdab8f"))
-             (patches
-              (list (search-patch "linux-libre-libreboot-fix.patch")))))
+               "0g8a4h8gjw51pp02hjfrp6bk2nkrclm3krp9mpjh3iwbf4vfh2al"))))
     (build-system gnu-build-system)
     (native-inputs `(("perl" ,perl)
                      ("bc" ,bc)
@@ -318,7 +318,7 @@ It has been modified to remove all non-free binary blobs.")
     (license gpl2)
     (home-page "http://www.gnu.org/software/linux-libre/"))))
 
-
+
 ;;;
 ;;; Pluggable authentication modules (PAM).
 ;;;
@@ -364,7 +364,7 @@ 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)))
 
-
+
 ;;;
 ;;; Miscellaneous.
 ;;;
@@ -587,8 +587,21 @@ slabtop, and skill.")
                       (string-append "#!" (which "sh")))))
                  (alist-cons-after
                   'install 'install-libs
-                  (lambda _
-                    (zero? (system* "make" "install-libs")))
+                  (lambda* (#:key outputs #:allow-other-keys)
+                    (let* ((out (assoc-ref outputs "out"))
+                           (lib (string-append out "/lib")))
+                      (and (zero? (system* "make" "install-libs"))
+
+                           ;; Make the .a writable so that 'strip' works.
+                           ;; Failing to do that, due to debug symbols, we
+                           ;; retain a reference to the final
+                           ;; linux-libre-headers, which refer to the
+                           ;; bootstrap binaries.
+                           (let ((archives (find-files lib "\\.a$")))
+                             (for-each (lambda (file)
+                                         (chmod file #o666))
+                                       archives)
+                             #t))))
                   %standard-phases))
 
        ;; FIXME: Tests work by comparing the stdout/stderr of programs, that
@@ -1041,6 +1054,17 @@ Linux-based operating systems.")
      '(#:phases (alist-cons-after
                  'unpack 'bootstrap
                  (lambda _
+                   ;; Fix "field ‘ip6’ has incomplete type" errors.
+                   (substitute* "libbridge/libbridge.h"
+                     (("#include <linux/if_bridge.h>")
+                      "#include <linux/in6.h>\n#include <linux/if_bridge.h>"))
+
+                   ;; Ensure that the entire build fails if one of the
+                   ;; sub-Makefiles fails.
+                   (substitute* "Makefile.in"
+                     (("\\$\\(MAKE\\) \\$\\(MFLAGS\\) -C \\$\\$x ;")
+                      "$(MAKE) $(MFLAGS) -C $$x || exit 1;"))
+
                    (zero? (system* "autoreconf" "-vf")))
                  %standard-phases)
        #:tests? #f))                              ; no 'check' target
@@ -1198,7 +1222,8 @@ processes currently causing I/O.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "071r6xjgssy8vwdn6m28qq1bqxsd2bphcd2mzhq0grf5ybm87sqb"))))
+                "071r6xjgssy8vwdn6m28qq1bqxsd2bphcd2mzhq0grf5ybm87sqb"))
+              (patches (list (search-patch "fuse-CVE-2015-3202.patch")))))
     (build-system gnu-build-system)
     (inputs `(("util-linux" ,util-linux)))
     (arguments
@@ -1567,7 +1592,7 @@ from the module-init-tools project.")
                                ;; Work around undefined reference to
                                ;; 'mq_getattr' in sc-daemon.c.
                                "LDFLAGS=-lrt")
-       #:phases 
+       #:phases
        (alist-cons-before
         'build 'pre-build
         ;; The program 'g-ir-scanner' (part of the package
@@ -2171,3 +2196,40 @@ arrays when needed.")
 system calls, important for the performance of databases and other advanced
 applications.")
     (license lgpl2.1+)))
+
+(define-public bluez
+  (package
+    (name "bluez")
+    (version "5.30")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://www.kernel.org/pub/linux/bluetooth/bluez-"
+                    version ".tar.xz"))
+              (sha256
+               (base32
+                "0b1qbnq1xzcdw5rajg9yyg31bf21jnff0n6gnf1snz89bbdllfhy"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags
+       (let ((out (assoc-ref %outputs "out")))
+         (list "--enable-library"
+               "--disable-systemd"
+               ;; Install dbus/udev files to the correct location.
+               (string-append "--with-dbusconfdir=" out "/etc")
+               (string-append "--with-udevdir=" out "/lib/udev")))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("gettext" ,gnu-gettext)))
+    (inputs
+     `(("glib" ,glib)
+       ("dbus" ,dbus)
+       ("eudev" ,eudev)
+       ("libical" ,libical)
+       ("readline" ,readline)))
+    (home-page "http://www.bluez.org/")
+    (synopsis "Linux Bluetooth protocol stack")
+    (description
+     "BlueZ provides support for the core Bluetooth layers and protocols.  It
+is flexible, efficient and uses a modular implementation.")
+    (license gpl2+)))
diff --git a/gnu/packages/m4.scm b/gnu/packages/m4.scm
index b3b3a00fde..d1ba928768 100644
--- a/gnu/packages/m4.scm
+++ b/gnu/packages/m4.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,11 +36,10 @@
               "0w0da1chh12mczxa5lnwzjk9czi3dq6gnnndbpa6w4rj76b1yklf"))))
    (build-system gnu-build-system)
    (arguments
-    ;; XXX: Disable tests on those platforms with know issues.
-    `(#:tests? ,(not (member (%current-system)
-                             '("x86_64-darwin"
-                               "i686-cygwin"
-                               "i686-sunos")))
+    `(;; Explicitly disable tests when cross-compiling, otherwise 'make check'
+      ;; proceeds and fails, unsurprisingly.
+      #:tests? ,(not (%current-target-system))
+
       #:phases (alist-cons-before
                 'check 'pre-check
                 (lambda* (#:key inputs #:allow-other-keys)
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 170fbe4921..70b0b0298d 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -66,7 +67,8 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module ((guix licenses)
-                #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ lgpl3+ non-copyleft))
+                #:select (gpl2 gpl2+ gpl3+ lgpl2.1 lgpl2.1+ lgpl3+ non-copyleft
+                          (expat . license:expat)))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
@@ -492,7 +494,6 @@ MailCore 2.")
     (inputs `(("bogofilter" ,bogofilter)
               ("curl" ,curl)
               ("dbus-glib" ,dbus-glib)
-              ("dbus" ,dbus)
               ("enchant" ,enchant)
               ("expat" ,expat)
               ("ghostscript" ,ghostscript)
@@ -639,6 +640,49 @@ deal of flexibility in the way mail can be routed, and there are extensive
 facilities for checking incoming mail.")
     (license gpl2+)))
 
+(define-public dovecot
+  (package
+    (name "dovecot")
+    (version "2.2.16")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://www.dovecot.org/releases/"
+                           (version-major+minor version) "/"
+                           name "-" version ".tar.gz"))
+       (sha256 (base32
+                "1w6gg4h9mxg3i8faqpmgj19imzyy001b0v8ihch8ma3zl63i5kjn"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("openssl" ,openssl)
+       ("zlib" ,zlib)
+       ("bzip2" ,bzip2)
+       ("sqlite" ,sqlite)))
+    (arguments
+     `(#:configure-flags '("--sysconfdir=/etc"
+                           "--localstatedir=/var")
+       #:phases (modify-phases %standard-phases
+                  (add-before
+                   'configure 'pre-configure
+                   (lambda _
+                     ;; Simple hack to avoid installing in /etc
+                     (substitute* '("doc/Makefile.in"
+                                    "doc/example-config/Makefile.in")
+                       (("pkgsysconfdir = .*")
+                        "pkgsysconfdir = /tmp/etc"))
+                     #t)))))
+    (home-page "http://www.dovecot.org")
+    (synopsis "Secure POP3/IMAP server")
+    (description
+     "Dovecot is a mail server whose major goals are security and reliability.
+It supports mbox/Maildir and its own dbox/mdbox formats.")
+    ;; Most source files are covered by either lgpl2.1 or expat.  The SHA code
+    ;; is covered by a variant of BSD-3, and UnicodeData.txt is covered by the
+    ;; Unicode, Inc. License Agreement for Data Files and Software.
+    (license (list lgpl2.1 license:expat (non-copyleft "file://COPYING")))))
+
 (define-public isync
   (package
     (name "isync")
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index a92c6dd132..fb43db9de9 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -153,7 +153,7 @@ Linux kernel and C library interfaces employed by user-space programs.")
 (define-public help2man
   (package
     (name "help2man")
-    (version "1.46.5")
+    (version "1.46.6")
     (source
      (origin
       (method url-fetch)
@@ -161,7 +161,7 @@ Linux kernel and C library interfaces employed by user-space programs.")
                           version ".tar.xz"))
       (sha256
        (base32
-        "1gqfqgxq3qgwnldjz3i5mxvzyx2w3j042r3fw1wygic3f6327nha"))))
+        "1brccgnjf09f2zg70s6gv6gn68mi59kp3zf50wvxp79n72ngapv1"))))
     (build-system gnu-build-system)
     (arguments `(;; There's no `check' target.
                  #:tests? #f))
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 417af4a91b..4d837c85e2 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2014 Mathieu Lirzin <mathieu.lirzin@openmailbox.org>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
+;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -68,6 +69,7 @@
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages texlive)
+  #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages zip))
 
@@ -382,6 +384,9 @@ extremely large and complex data collections.")
      `(("lapack" ,lapack)
        ("readline" ,readline)
        ("glpk" ,glpk)
+       ("fftw" ,fftw)
+       ("fftwf" ,fftwf)
+       ("arpack" ,arpack-ng)
        ("curl" ,curl)
        ("pcre" ,pcre)
        ("fltk" ,fltk)
@@ -390,16 +395,18 @@ extremely large and complex data collections.")
        ("hdf5" ,hdf5)
        ("libxft" ,libxft)
        ("mesa" ,mesa)
+       ("glu" ,glu)
        ("zlib" ,zlib)))
     (native-inputs
      `(("gfortran" ,gfortran-4.8)
        ("pkg-config" ,pkg-config)
        ("perl" ,perl)
-       ;; The following inputs are not actually used in the build process.  However, the
-       ;; ./configure gratuitously tests for their existence and assumes that programs not
-       ;; present at build time are also not, and can never be, available at run time!
-       ;; If these inputs are therefore not present, support for them will be built out.
-       ;; However, Octave will still run without them, albeit without the features they
+       ;; The following inputs are not actually used in the build process.
+       ;; However, the ./configure gratuitously tests for their existence and
+       ;; assumes that programs not present at build time are also not, and
+       ;; can never be, available at run time!  If these inputs are therefore
+       ;; not present, support for them will be built out.  However, Octave
+       ;; will still run without them, albeit without the features they
        ;; provide.
        ("less" ,less)
        ("texinfo" ,texinfo)
@@ -411,11 +418,11 @@ extremely large and complex data collections.")
 			    "/bin/sh"))))
     (home-page "http://www.gnu.org/software/octave/")
     (synopsis "High-level language for numerical computation")
-    (description "GNU Octave is a high-level interpreted language that is specialized
-for numerical computations.  It can be used for both linear and non-linear
-applications and it provides great support for visualizing results.  Work may
-be performed both at the interactive command-line as well as via script
-files.")
+    (description "GNU Octave is a high-level interpreted language that is
+specialized for numerical computations.  It can be used for both linear and
+non-linear applications and it provides great support for visualizing results.
+Work may be performed both at the interactive command-line as well as via
+script files.")
     (license license:gpl3+)))
 
 (define-public gmsh
@@ -917,7 +924,7 @@ to BMP, JPEG or PNG image formats.")
 (define-public maxima
   (package
     (name "maxima")
-    (version "5.34.1")
+    (version "5.36.1")
     (source
      (origin
        (method url-fetch)
@@ -925,7 +932,8 @@ to BMP, JPEG or PNG image formats.")
                            version "-source/" name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1dw9vfzldpj7lv303xbw0wpyn6ra6i2yzwlrjbcx7j0jm5n43ji0"))))
+         "0x1rk659sn3cq0n5c90848ilzr1gb1wf0072fl6jhkdq00qgh2s0"))
+       (patches (list (search-patch "maxima-defsystem-mkdir.patch")))))
     (build-system gnu-build-system)
     (inputs
      `(("gcl" ,gcl)
@@ -946,8 +954,8 @@ to BMP, JPEG or PNG image formats.")
                             (let ((v ,(package-version tk)))
                               (string-take v (string-index-right v #\.)))))
        ;; By default Maxima attempts to write temporary files to
-       ;; '/tmp/nix-build-maxima-5.34.1', which doesn't exist.  Work around
-       ;; that.
+       ;; '/tmp/nix-build-maxima-*', which won't exist at run time.
+       ;; Work around that.
        #:make-flags (list "TMPDIR=/tmp")
        #:phases (alist-cons-before
                  'check 'pre-check
@@ -992,6 +1000,49 @@ point numbers")
     ;; GPLv2 only is therefore the smallest subset.
     (license license:gpl2)))
 
+(define-public wxmaxima
+  (package
+    (name "wxmaxima")
+    (version "15.04.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/wxmaxima/wxMaxima/"
+                           version "/" name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1fm47ah4aw5qdjqhkz67w5fwhy8yfffa5z896crp0d3hk2bh4180"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("wxwidgets" ,wxwidgets)
+       ("maxima" ,maxima)))
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-after
+                   'install 'wrap-program
+                   (lambda* (#:key inputs outputs #:allow-other-keys)
+                     (wrap-program (string-append (assoc-ref outputs "out")
+                                                  "/bin/wxmaxima")
+                       `("PATH" ":" prefix
+                         (,(string-append (assoc-ref inputs "maxima")
+                                          "/bin"))))
+                     #t)))))
+    (home-page "https://andrejv.github.io/wxmaxima/")
+    (synopsis "Graphical user interface for the Maxima computer algebra system")
+    (description
+     "wxMaxima is a graphical user interface for the Maxima computer algebra
+system.  It eases the use of Maxima by making most of its commands available
+through a menu system and by providing input dialogs for commands that require
+more than one argument.  It also implements its own display engine that
+outputs mathematical symbols directly instead of depicting them with ASCII
+characters.
+
+wxMaxima also features 2D and 3D inline plots, simple animations, mixing of
+text and mathematical calculations to create documents, exporting of input and
+output to TeX, and a browser for Maxima's manual including command index and
+full text searching.")
+    (license license:gpl2+)))
+
 (define-public muparser
   (package
     (name "muparser")
@@ -1020,7 +1071,7 @@ constant parts of it.")
 (define-public openblas
   (package
     (name "openblas")
-    (version "0.2.13")
+    (version "0.2.14")
     (source
      (origin
        (method url-fetch)
@@ -1029,10 +1080,14 @@ constant parts of it.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1asg5mix13ipxgj5h2yj2p0r8km1di5jbcjkn5gmhb37nx7qfv6k"))))
+         "0av3pd96j8rx5i65f652xv9wqfkaqn0w4ma1gvbyz73i6j2hi9db"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f  ;no "check" target
+     `(#:tests? #f  ;no "check" target
+       ;; DYNAMIC_ARCH is not supported on MIPS.  When it is disabled,
+       ;; OpenBLAS will tune itself to the build host, so we need to disable
+       ;; substitutions.
+       #:substitutable? ,(not (string-prefix? "mips" (%current-system)))
        #:make-flags
        (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
              "SHELL=bash"
@@ -1040,7 +1095,10 @@ constant parts of it.")
              ;; Build the library for all supported CPUs.  This allows
              ;; switching CPU targets at runtime with the environment variable
              ;; OPENBLAS_CORETYPE=<type>, where "type" is a supported CPU type.
-             "DYNAMIC_ARCH=1")
+             ;; Unfortunately, this is not supported on MIPS.
+             ,@(if (string-prefix? "mips" (%current-system))
+                   '()
+                   '("DYNAMIC_ARCH=1")))
        ;; no configure script
        #:phases (alist-delete 'configure %standard-phases)))
     (inputs
@@ -1333,3 +1391,72 @@ library with poor performance.")
 library for graphics software based on the OpenGL Shading Language (GLSL)
 specifications.")
     (license license:expat)))
+
+(define-public lpsolve
+  (package
+    (name "lpsolve")
+    (version "5.5.2.0")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "mirror://sourceforge/lpsolve/lpsolve/" version
+                          "/lp_solve_" version "_source.tar.gz"))
+      (sha256
+       (base32
+        "176c7f023mb6b8bfmv4rfqnrlw88lsg422ca74zjh19i2h5s69sq"))
+      (modules '((guix build utils)))
+      (snippet
+       '(substitute* (list "lp_solve/ccc" "lpsolve55/ccc")
+          (("^c=cc") "c=gcc")
+          ;; Pretend to be on a 64 bit platform to obtain a common directory
+          ;; name for the build results on all architectures; nothing else
+          ;; seems to depend on it.
+          (("^PLATFORM=.*$") "PLATFORM=ux64\n")))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no check target
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'build
+           (lambda _
+             (with-directory-excursion "lpsolve55"
+               (system* "bash" "ccc"))
+             (with-directory-excursion "lp_solve"
+               (system* "bash" "ccc"))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (lib (string-append out "/lib"))
+                    ;; This is where LibreOffice expects to find the header
+                    ;; files, and where they are installed by Debian.
+                    (include (string-append out "/include/lpsolve")))
+               (mkdir-p lib)
+               (copy-file "lpsolve55/bin/ux64/liblpsolve55.a"
+                          (string-append lib "/liblpsolve55.a"))
+               (copy-file "lpsolve55/bin/ux64/liblpsolve55.so"
+                          (string-append lib "/liblpsolve55.so"))
+               (mkdir-p bin)
+               (copy-file "lp_solve/bin/ux64/lp_solve"
+                          (string-append bin "/lp_solve"))
+               (mkdir-p include)
+               ;; Install a subset of the header files as on Debian
+               ;; (plus lp_bit.h, which matches the regular expression).
+               (for-each
+                 (lambda (name)
+                   (copy-file name (string-append include "/" name)))
+                 (find-files "." "lp_[HMSa-z].*\\.h$"))
+               (with-directory-excursion "shared"
+                 (for-each
+                   (lambda (name)
+                     (copy-file name (string-append include "/" name)))
+                   (find-files "." "\\.h$")))
+               #t))))))
+    (home-page "http://lpsolve.sourceforge.net/")
+    (synopsis "Mixed integer linear programming (MILP) solver")
+    (description
+     "lp_solve is a mixed integer linear programming solver based on the
+revised simplex and the branch-and-bound methods.")
+    (license license:lgpl2.1+)))
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index fd857b1ec3..50d59cfcc5 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -86,20 +87,20 @@ providing:
 (define-public bitlbee
   (package
     (name "bitlbee")
-    (version "3.2.2")
+    (version "3.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://get.bitlbee.org/src/bitlbee-"
                                   version ".tar.gz"))
               (sha256
-               (base32 "13jmcxxgli82wb2n4hs091159xk8rgh7nb02f478lgpjh6996f5s"))))
+               (base32 "0plx4dryf8i6hz7vghg84z5f6w6rkw1l8ckl4c4wh5zxpd3ddfnf"))
+              (patches (list (search-patch "bitlbee-configure-doc-fix.patch")))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("check" ,check)))
     (inputs `(("glib" ,glib)
               ("libotr" ,libotr)
               ("gnutls" ,gnutls)
-              ("zlib" ,zlib)  ; Needed to satisfy "pkg-config --exists gnutls"
               ("python" ,python-2)
               ("perl" ,perl)))
     (arguments
diff --git a/gnu/packages/moe.scm b/gnu/packages/moe.scm
index 6708d72913..675ecb6ce2 100644
--- a/gnu/packages/moe.scm
+++ b/gnu/packages/moe.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,7 +27,7 @@
 (define-public moe
   (package
     (name "moe")
-    (version "1.6")
+    (version "1.7")
     (source
      (origin
       (method url-fetch)
@@ -35,7 +35,7 @@
                           version ".tar.lz"))
       (sha256
        (base32
-        "1cfwi67sdl2qchqbdib4p6wxjpwz2kmn6vxn9hmh1zs0gg4xkbwc"))))
+        "1fzimk1qpmsm7wzfnjzzrp4dvdn7ipdb5j7969910g1m93wndfik"))))
     (build-system gnu-build-system)
     (native-inputs `(("lzip" ,lzip)))
     (inputs `(("ncurses" ,ncurses)))
diff --git a/gnu/packages/socat.scm b/gnu/packages/networking.scm
index 7c0bc3d964..dd13e1720b 100644
--- a/gnu/packages/socat.scm
+++ b/gnu/packages/networking.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -16,14 +17,42 @@
 ;;; 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 socat)
+(define-module (gnu packages networking)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages openssl))
 
-;; XXX: Group with other networking tools like tcpdump in a module?
+(define-public miredo
+  (package
+    (name "miredo")
+    (version "1.2.6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://www.remlab.net/files/miredo/miredo-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "0j9ilig570snbmj48230hf7ms8kvcwi2wblycqrmhh85lksd49ps"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         ;; The checkconf test in src/ requires network access.
+         (add-before
+          'check 'disable-checkconf-test
+          (lambda _
+            (substitute* "src/Makefile"
+              (("^TESTS = .*") "TESTS = \n")))))))
+    (home-page "http://www.remlab.net/miredo/")
+    (synopsis "Teredo IPv6 tunneling software")
+    (description
+     "Miredo is an implementation (client, relay, server) of the Teredo
+specification, which provides IPv6 Internet connectivity to IPv6 enabled hosts
+residing in IPv4-only networks, even when they are behind a NAT device.")
+    (license license:gpl2+)))
+
 (define-public socat
   (package
     (name "socat")
@@ -53,3 +82,26 @@ line, to logically connect serial lines on different computers, or to
 establish a relatively secure environment (su and chroot) for running client
 or server shell scripts with network connections. ")
     (license license:gpl2)))
+
+(define-public zeromq
+  (package
+    (name "zeromq")
+    (version "4.0.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://download.zeromq.org/zeromq-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0arl8fy8d03xd5h0mgda1s5bajwg8iyh1kk4hd1420rpcxgkrj9v"))))
+    (build-system gnu-build-system)
+    (home-page "http://zeromq.org")
+    (synopsis "Library for message-based applications")
+    (description
+     "The 0MQ lightweight messaging kernel is a library which extends the
+standard socket interfaces with features traditionally provided by specialized
+messaging middle-ware products.  0MQ sockets provide an abstraction of
+asynchronous message queues, multiple messaging patterns, message
+filtering (subscriptions), seamless access to multiple transport protocols and
+more.")
+    (license license:lgpl3+)))
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 2b4821ed42..5baf24cac0 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
-;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -18,11 +18,20 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages ocaml)
-  #:use-module (guix licenses)
+  #:use-module ((guix licenses) #:hide (zlib))
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages emacs)
+  #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages commencement)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages texlive)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages python)
   #:use-module (gnu packages ncurses)
@@ -32,56 +41,94 @@
 (define-public ocaml
   (package
     (name "ocaml")
-    (version "4.00.1")
+    (version "4.02.1")
     (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "http://caml.inria.fr/pub/distrib/ocaml-4.00/ocaml-"
-                   version ".tar.gz"))
-             (sha256
-              (base32
-               "0yp86napnvbi2jgxr6bk1235bmjdclgzrzgq4mhwv87l7dymr3dl"))))
+              (method url-fetch)
+              (uri (string-append
+                    "http://caml.inria.fr/pub/distrib/ocaml-"
+                    (version-major+minor version)
+                    "/ocaml-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1p7lqvh64xpykh99014mz21q8fs3qyjym2qazhhbq8scwldv1i38"))))
     (build-system gnu-build-system)
+    (native-inputs
+     `(("perl" ,perl)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libx11" ,libx11)
+       ("gcc:lib" ,gcc-final "lib") ; for libiberty, needed for objdump support
+       ("zlib" ,zlib)))             ; also needed for objdump support
     (arguments
-       `(#:modules ((guix build gnu-build-system)
-                    (guix build utils)
-                    (srfi srfi-1))
-         #:phases (alist-replace
-                   'configure
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     ;; OCaml uses "-prefix <prefix>" rather than the usual
-                     ;; "--prefix=<prefix>".
-                     (let ((out (assoc-ref outputs "out")))
-                      (zero? (system* "./configure" "-prefix" out
-                                      "-mandir"
-                                      (string-append out "/share/man")))))
-                   (alist-replace
-                    'build
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      ;; "make" does not do anything, we must use
-                      ;; "make world.opt".
-                      (zero? (system* "make" "world.opt")))
-                    (alist-replace
-                     'check-after-install
-                     (lambda* (#:key outputs #:allow-other-keys)
-                       ;; There does not seem to be a "check" or "test" target.
-                       (zero? (system "cd testsuite && make all")))
-                     (let ((check (assq-ref %standard-phases 'check)))
-                      ;; OCaml assumes that "make install" is run before
-                      ;; launching the tests.
-                      (alist-cons-after
-                       'install 'check-after-install
-                       check
-                       (alist-delete 'check %standard-phases))))))))
-    (inputs `(("perl" ,perl)))
-    (home-page "http://caml.inria.fr/")
+     `(#:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (web server))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-/bin/sh-references
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (let* ((sh (string-append (assoc-ref inputs "bash")
+                                                "/bin/sh"))
+                             (quoted-sh (string-append "\"" sh "\"")))
+                        (with-fluids ((%default-port-encoding #f))
+                          (for-each (lambda (file)
+                                      (substitute* file
+                                        (("\"/bin/sh\"")
+                                         (begin
+                                           (format (current-error-port) "\
+patch-/bin/sh-references: ~a: changing `\"/bin/sh\"' to `~a'~%"
+                                                   file quoted-sh)
+                                           quoted-sh))))
+                                    (find-files "." "\\.ml$"))
+                          #t))))
+         (replace 'configure
+                  (lambda* (#:key outputs #:allow-other-keys)
+                    (let* ((out (assoc-ref outputs "out"))
+                           (mandir (string-append out "/share/man")))
+                      ;; Custom configure script doesn't recognize
+                      ;; --prefix=<PREFIX> syntax (with equals sign).
+                      (zero? (system* "./configure"
+                                      "--prefix" out
+                                      "--mandir" mandir)))))
+         (replace 'build
+                  (lambda _
+                    (zero? (system* "make" "-j" (number->string
+                                                 (parallel-job-count))
+                                    "world.opt"))))
+         (delete 'check)
+         (add-after 'install 'check
+                    (lambda _
+                      (with-directory-excursion "testsuite"
+                        (zero? (system* "make" "all")))))
+         (add-before 'check 'prepare-socket-test
+                     (lambda _
+                       (format (current-error-port)
+                               "Spawning local test web server on port 8080~%")
+                       (when (zero? (primitive-fork))
+                         (run-server (lambda (request request-body)
+                                       (values '((content-type . (text/plain)))
+                                               "Hello!"))
+                                     'http '(#:port 8080)))
+                       (let ((file "testsuite/tests/lib-threads/testsocket.ml"))
+                         (format (current-error-port)
+                                 "Patching ~a to use localhost port 8080~%"
+                                 file)
+                         (substitute* file
+                           (("caml.inria.fr") "localhost")
+                           (("80") "8080")
+                           (("HTTP1.0") "HTTP/1.0"))
+                         #t))))))
+    (home-page "https://ocaml.org/")
     (synopsis "The OCaml programming language")
     (description
      "OCaml is a general purpose industrial-strength programming language with
 an emphasis on expressiveness and safety.  Developed for more than 20 years at
 Inria it benefits from one of the most advanced type systems and supports
 functional, imperative and object-oriented styles of programming.")
-    (license (list qpl gpl2))))
+    ;; The compiler is distributed under qpl1.0 with a change to choice of
+    ;; law: the license is governed by the laws of France.  The library is
+    ;; distributed under lgpl2.0.
+    (license (list qpl lgpl2.0))))
 
 (define-public opam
   (package
@@ -143,3 +190,198 @@ Git-friendly development workflow.")
 
     ;; The 'LICENSE' file waives some requirements compared to LGPLv3.
     (license lgpl3)))
+
+(define-public camlp5
+  (package
+    (name "camlp5")
+    (version "6.12")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://camlp5.gforge.inria.fr/distrib/src/"
+                                  name "-" version ".tgz"))
+              (sha256
+               (base32
+                "00jwgp6w4g64lfqjx77xziy532091fy00c42fsy0b4i892rch5mp"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("ocaml" ,ocaml)))
+    (arguments
+     `(#:tests? #f  ; XXX TODO figure out how to run the tests
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+                  (lambda* (#:key outputs #:allow-other-keys)
+                    (let* ((out (assoc-ref outputs "out"))
+                           (mandir (string-append out "/share/man")))
+                      ;; Custom configure script doesn't recognize
+                      ;; --prefix=<PREFIX> syntax (with equals sign).
+                      (zero? (system* "./configure"
+                                      "--prefix" out
+                                      "--mandir" mandir)))))
+         (replace 'build
+                  (lambda _
+                    (zero? (system* "make" "-j" (number->string
+                                                 (parallel-job-count))
+                                    "world.opt")))))))
+    (home-page "http://camlp5.gforge.inria.fr/")
+    (synopsis "Pre-processor Pretty Printer for OCaml")
+    (description
+     "Camlp5 is a Pre-Processor-Pretty-Printer for Objective Caml.  It offers
+tools for syntax (Stream Parsers and Grammars) and the ability to modify the
+concrete syntax of the language (Quotations, Syntax Extensions).")
+    ;; Most files are distributed under bsd-3, but ocaml_stuff/* is under qpl.
+    (license (list bsd-3 qpl))))
+
+(define-public hevea
+  (package
+    (name "hevea")
+    (version "2.23")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://hevea.inria.fr/distri/"
+                                  name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1f9pj48518ixhjxbviv2zx27v4anp92zgg3x704g1s5cki2w33nv"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("ocaml" ,ocaml)))
+    (arguments
+     `(#:tests? #f  ; no test suite
+       #:make-flags (list (string-append "PREFIX=" %output))
+       #:phases (modify-phases %standard-phases
+                  (delete 'configure))))
+    (home-page "http://hevea.inria.fr/")
+    (synopsis "LaTeX to HTML translator")
+    (description
+     "HeVeA is a LaTeX to HTML translator that generates modern HTML 5.  It is
+written in Objective Caml.")
+    (license qpl)))
+
+(define-public coq
+  (package
+    (name "coq")
+    (version "8.4pl6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://coq.inria.fr/distrib/V" version
+                                  "/files/" name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1mpbj4yf36kpjg2v2sln12i8dzqn8rag6fd07hslj2lpm4qs4h55"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("texlive" ,texlive)
+       ("hevea" ,hevea)))
+    (inputs
+     `(("ocaml" ,ocaml)
+       ("camlp5" ,camlp5)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+                  (lambda* (#:key outputs #:allow-other-keys)
+                    (let* ((out (assoc-ref outputs "out"))
+                           (mandir (string-append out "/share/man"))
+                           (browser "icecat -remote \"OpenURL(%s,new-tab)\""))
+                      (zero? (system* "./configure"
+                                      "--prefix" out
+                                      "--mandir" mandir
+                                      "--browser" browser)))))
+         (replace 'build
+                  (lambda _
+                    (zero? (system* "make" "-j" (number->string
+                                                 (parallel-job-count))
+                                    "world"))))
+         (delete 'check)
+         (add-after 'install 'check
+                    (lambda _
+                      (with-directory-excursion "test-suite"
+                        (zero? (system* "make"))))))))
+    (home-page "https://coq.inria.fr")
+    (synopsis "Proof assistant for higher-order logic")
+    (description
+     "Coq is a proof assistant for higher-order logic, which allows the
+development of computer programs consistent with their formal specification.
+It is developed using Objective Caml and Camlp5.")
+    ;; The code is distributed under lgpl2.1.
+    ;; Some of the documentation is distributed under opl1.0+.
+    (license (list lgpl2.1 opl1.0+))))
+
+(define-public proof-general
+  (package
+    (name "proof-general")
+    (version "4.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://proofgeneral.inf.ed.ac.uk/releases/"
+                    "ProofGeneral-" version ".tgz"))
+              (sha256
+               (base32
+                "09qb0myq66fw17v4ziz401ilsb5xlxz1nl2wsp69d0vrfy0bcrrm"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("which" ,which)
+       ("emacs" ,emacs-no-x)
+       ("texinfo" ,texinfo)))
+    (inputs
+     `(("host-emacs" ,emacs)
+       ("perl" ,perl)
+       ("coq" ,coq)))
+    (arguments
+     `(#:tests? #f  ; no check target
+       #:make-flags (list (string-append "PREFIX=" %output)
+                          (string-append "DEST_PREFIX=" %output))
+       #:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (guix build emacs-utils))
+       #:imported-modules (,@%gnu-build-system-modules
+                           (guix build emacs-utils))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-after 'unpack 'disable-byte-compile-error-on-warn
+                    (lambda _
+                      (substitute* "Makefile"
+                        (("\\(setq byte-compile-error-on-warn t\\)")
+                         "(setq byte-compile-error-on-warn nil)"))
+                      #t))
+         (add-after 'unpack 'patch-hardcoded-paths
+                    (lambda* (#:key inputs outputs #:allow-other-keys)
+                      (let ((out   (assoc-ref outputs "out"))
+                            (coq   (assoc-ref inputs "coq"))
+                            (emacs (assoc-ref inputs "host-emacs")))
+                        (define (coq-prog name)
+                          (string-append coq "/bin/" name))
+                        (emacs-substitute-variables "coq/coq.el"
+                          ("coq-prog-name"           (coq-prog "coqtop"))
+                          ("coq-compiler"            (coq-prog "coqc"))
+                          ("coq-dependency-analyzer" (coq-prog "coqdep")))
+                        (substitute* "Makefile"
+                          (("/sbin/install-info") "install-info"))
+                        (substitute* "bin/proofgeneral"
+                          (("^PGHOMEDEFAULT=.*" all)
+                           (string-append all
+                                          "PGHOME=$PGHOMEDEFAULT\n"
+                                          "EMACS=" emacs "/bin/emacs")))
+                        #t)))
+         (add-after 'unpack 'clean
+                    (lambda _
+                      ;; Delete the pre-compiled elc files for Emacs 23.
+                      (zero? (system* "make" "clean"))))
+         (add-after 'install 'install-doc
+                    (lambda* (#:key make-flags #:allow-other-keys)
+                      ;; XXX FIXME avoid building/installing pdf files,
+                      ;; due to unresolved errors building them.
+                      (substitute* "Makefile"
+                        ((" [^ ]*\\.pdf") ""))
+                      (zero? (apply system* "make" "install-doc"
+                                    make-flags)))))))
+    (home-page "http://proofgeneral.inf.ed.ac.uk/")
+    (description "Generic front-end for proof assistants based on Emacs")
+    (synopsis
+     "Proof General is a major mode to turn Emacs into an interactive proof
+assistant to write formal mathematical proofs using a variety of theorem
+provers.")
+    (license gpl2+)))
diff --git a/gnu/packages/openldap.scm b/gnu/packages/openldap.scm
index fe7961affb..52bd0eea47 100644
--- a/gnu/packages/openldap.scm
+++ b/gnu/packages/openldap.scm
@@ -37,11 +37,21 @@
    (version "2.4.40")
    (source (origin
             (method url-fetch)
-            (uri (string-append
-                   "ftp://sunsite.cnlab-switch.ch/mirror/OpenLDAP/openldap-release/openldap-"
-                   version ".tgz"))
-            (sha256 (base32
-                     "1nyslrgwxwilgv5sixc37svls5rbvhsv9drb7hlrjr2vqaji29ni"))))
+
+            ;; See <http://www.openldap.org/software/download/> for a list of
+            ;; mirrors.
+            (uri (list (string-append
+                        "ftp://mirror.switch.ch/mirror/OpenLDAP/"
+                        "openldap-release/openldap-" version ".tgz")
+                       (string-append
+                        "ftp://ftp.OpenLDAP.org/pub/OpenLDAP/"
+                        "openldap-release/openldap-" version ".tgz")
+                       (string-append
+                        "ftp://ftp.dti.ad.jp/pub/net/OpenLDAP/"
+                        "openldap-release/openldap-" version ".tgz")))
+            (sha256
+             (base32
+              "1nyslrgwxwilgv5sixc37svls5rbvhsv9drb7hlrjr2vqaji29ni"))))
    (build-system gnu-build-system)
    (inputs `(("bdb" ,bdb)
              ("openssl" ,openssl)
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 75efd0c448..db05969139 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -29,6 +29,7 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages databases)
+  #:use-module (gnu packages gnutls)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages autotools)
@@ -51,17 +52,17 @@
                      arch "-linux"
                      "/20131110/guile-2.0.9.tar.xz")))
 
-(define-public guix-0.8.1
+(define-public guix-0.8.2
   (package
     (name "guix")
-    (version "0.8.1")
+    (version "0.8.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "ftp://alpha.gnu.org/gnu/guix/guix-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "12h5ldj1yf0za6ladlr8h7nx2gqrv2dxcsiwyqayvrza93lijkf5"))))
+               "1a5gnkh17w7fgi5zy63ph64iqdvarkdqypkwgw2iifpqa6jq04zz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list
@@ -130,7 +131,8 @@
                        (base32
                         "1mi3brl7l58aww34rawhvja84xc7l1b4hmwdmc36fp9q9mfx0lg5"))))))
     (propagated-inputs
-     `(("guile-json" ,guile-json)
+     `(("gnutls" ,gnutls)                         ;for 'guix download' & co.
+       ("guile-json" ,guile-json)
        ("geiser" ,geiser)))                       ;for guix.el
 
     (home-page "http://www.gnu.org/software/guix")
@@ -148,9 +150,9 @@ the Nix package manager.")
   ;;
   ;; Note: use a short commit id; when using the long one, the limit on socket
   ;; file names is exceeded while running the tests.
-  (let ((commit "fc34dee"))
-    (package (inherit guix-0.8.1)
-      (version (string-append "0.8.1." commit))
+  (let ((commit "c2ee19e"))
+    (package (inherit guix-0.8.2)
+      (version (string-append "0.8.2." commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -158,9 +160,9 @@ the Nix package manager.")
                       (commit commit)))
                 (sha256
                  (base32
-                  "0nx60wwiar0s4bgwrm3nrskc54jig3vw7yzwxkwilc43cnlgpkja"))))
+                  "1gwc1gypgscxg2m3n2vd0mw4dmxr7vsisqgh3y0lr05q9z5742sj"))))
       (arguments
-       (substitute-keyword-arguments (package-arguments guix-0.8.1)
+       (substitute-keyword-arguments (package-arguments guix-0.8.2)
          ((#:phases phases)
           `(alist-cons-after
             'unpack 'bootstrap
@@ -178,7 +180,7 @@ the Nix package manager.")
          ("gettext" ,gnu-gettext)
          ("texinfo" ,texinfo)
          ("graphviz" ,graphviz)
-         ,@(package-native-inputs guix-0.8.1))))))
+         ,@(package-native-inputs guix-0.8.2))))))
 
 (define-public guix guix-devel)
 
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 70595b1bac..05d641fc36 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -28,7 +28,7 @@
 (define-public parallel
   (package
     (name "parallel")
-    (version "20150322")
+    (version "20150422")
     (source
      (origin
       (method url-fetch)
@@ -36,7 +36,7 @@
                           version ".tar.bz2"))
       (sha256
        (base32
-        "1zsj1bd4zbwb4n9i0jgzs7vd5wkyg3xvj6s1q6s5fyn0pff7j01c"))))
+        "1x6lvbw6msjkibadihzr2s0mbbcx2h2wxd723q5bgz6mcnsml346"))))
     (build-system gnu-build-system)
     (inputs `(("perl" ,perl)))
     (home-page "http://www.gnu.org/software/parallel/")
diff --git a/gnu/packages/patches/bitlbee-configure-doc-fix.patch b/gnu/packages/patches/bitlbee-configure-doc-fix.patch
new file mode 100644
index 0000000000..ade0b7f25c
--- /dev/null
+++ b/gnu/packages/patches/bitlbee-configure-doc-fix.patch
@@ -0,0 +1,15 @@
+Fix the check for the prebuilt helpfile when xsltproc is not available.
+
+--- bitlbee-3.4/configure.orig	2015-03-25 18:09:10.000000000 -0400
++++ bitlbee-3.4/configure	2015-05-20 14:51:33.627975970 -0400
+@@ -650,8 +650,8 @@
+ 
+ if [ "$doc" = "1" ]; then
+ 	if [ ! -e doc/user-guide/help.txt ] && \
+-	     ! type xmlto > /dev/null 2> /dev/null || \
+-	     ! type xsltproc > /dev/null 2> /dev/null
++	     (! type xmlto > /dev/null 2> /dev/null || \
++	      ! type xsltproc > /dev/null 2> /dev/null)
+ 	then
+ 		echo
+ 		echo 'WARNING: Building from an unreleased source tree without prebuilt helpfile.'
diff --git a/gnu/packages/patches/curl-support-capath-on-gnutls-conf.patch b/gnu/packages/patches/curl-support-capath-on-gnutls-conf.patch
deleted file mode 100644
index d2391d461d..0000000000
--- a/gnu/packages/patches/curl-support-capath-on-gnutls-conf.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-This patch updates 'configure' as autoreconf would have done after
-applying curl-support-capath-on-gnutls.patch.
-
---- a/configure       2015-03-22 01:11:23.178743705 +0100
-+++ b/configure       2015-02-25 00:05:37.000000000 +0100
-@@ -23952,8 +24432,8 @@
-         ca="$want_ca"
-     capath="no"
-   elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
--        if test "x$OPENSSL_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then
--      as_fn_error $? "--with-ca-path only works with openSSL or PolarSSL" "$LINENO" 5
-+        if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then
-+      as_fn_error $? "--with-ca-path only works with OpenSSL, GnuTLS or PolarSSL" "$LINENO" 5
-     fi
-     capath="$want_capath"
-     ca="no"
diff --git a/gnu/packages/patches/curl-support-capath-on-gnutls.patch b/gnu/packages/patches/curl-support-capath-on-gnutls.patch
deleted file mode 100644
index d05dd021e8..0000000000
--- a/gnu/packages/patches/curl-support-capath-on-gnutls.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-This patch adds support for CURLOPT_CAPATH to the GnuTLS backend.
-
-From 5a1614cecdd57cab8b4ae3e9bc19dfff5ba77e80 Mon Sep 17 00:00:00 2001
-From: Alessandro Ghedini <alessandro@ghedini.me>
-Date: Sun, 8 Mar 2015 20:11:06 +0100
-Subject: [PATCH] gtls: add support for CURLOPT_CAPATH
-
----
- acinclude.m4                       |  4 ++--
- docs/libcurl/opts/CURLOPT_CAPATH.3 |  5 ++---
- lib/vtls/gtls.c                    | 22 ++++++++++++++++++++++
- lib/vtls/gtls.h                    |  3 +++
- 4 files changed, 29 insertions(+), 5 deletions(-)
-
-diff --git a/acinclude.m4 b/acinclude.m4
-index 6ed7ffb..ca01869 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -2615,8 +2615,8 @@ AC_HELP_STRING([--without-ca-path], [Don't use a default CA path]),
-     capath="no"
-   elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
-     dnl --with-ca-path given
--    if test "x$OPENSSL_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then
--      AC_MSG_ERROR([--with-ca-path only works with openSSL or PolarSSL])
-+    if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then
-+      AC_MSG_ERROR([--with-ca-path only works with OpenSSL, GnuTLS or PolarSSL])
-     fi
-     capath="$want_capath"
-     ca="no"
-diff --git a/docs/libcurl/opts/CURLOPT_CAPATH.3 b/docs/libcurl/opts/CURLOPT_CAPATH.3
-index 642953d..6695f9f 100644
---- a/docs/libcurl/opts/CURLOPT_CAPATH.3
-+++ b/docs/libcurl/opts/CURLOPT_CAPATH.3
-@@ -43,9 +43,8 @@ All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
- .SH EXAMPLE
- TODO
- .SH AVAILABILITY
--This option is OpenSSL-specific and does nothing if libcurl is built to use
--GnuTLS. NSS-powered libcurl provides the option only for backward
--compatibility.
-+This option is supported by the OpenSSL, GnuTLS and PolarSSL backends. The NSS
-+backend provides the option only for backward compatibility.
- .SH RETURN VALUE
- Returns CURLE_OK if TLS enabled, and CURLE_UNKNOWN_OPTION if not, or
- CURLE_OUT_OF_MEMORY if there was insufficient heap space.
-diff --git a/lib/vtls/gtls.c b/lib/vtls/gtls.c
-index 05aef19..c792540 100644
---- a/lib/vtls/gtls.c
-+++ b/lib/vtls/gtls.c
-@@ -97,6 +97,10 @@ static bool gtls_inited = FALSE;
- #  if (GNUTLS_VERSION_NUMBER >= 0x03020d)
- #    define HAS_OCSP
- #  endif
-+
-+#  if (GNUTLS_VERSION_NUMBER >= 0x030306)
-+#    define HAS_CAPATH
-+#  endif
- #endif
- 
- #ifdef HAS_OCSP
-@@ -462,6 +466,24 @@ gtls_connect_step1(struct connectdata *conn,
-             rc, data->set.ssl.CAfile);
-   }
- 
-+#ifdef HAS_CAPATH
-+  if(data->set.ssl.CApath) {
-+    /* set the trusted CA cert directory */
-+    rc = gnutls_certificate_set_x509_trust_dir(conn->ssl[sockindex].cred,
-+                                                data->set.ssl.CApath,
-+                                                GNUTLS_X509_FMT_PEM);
-+    if(rc < 0) {
-+      infof(data, "error reading ca cert file %s (%s)\n",
-+            data->set.ssl.CAfile, gnutls_strerror(rc));
-+      if(data->set.ssl.verifypeer)
-+        return CURLE_SSL_CACERT_BADFILE;
-+    }
-+    else
-+      infof(data, "found %d certificates in %s\n",
-+            rc, data->set.ssl.CApath);
-+  }
-+#endif
-+
-   if(data->set.ssl.CRLfile) {
-     /* set the CRL list file */
-     rc = gnutls_certificate_set_x509_crl_file(conn->ssl[sockindex].cred,
-diff --git a/lib/vtls/gtls.h b/lib/vtls/gtls.h
-index c3867e5..af1cb5b 100644
---- a/lib/vtls/gtls.h
-+++ b/lib/vtls/gtls.h
-@@ -54,6 +54,9 @@ bool Curl_gtls_cert_status_request(void);
- /* Set the API backend definition to GnuTLS */
- #define CURL_SSL_BACKEND CURLSSLBACKEND_GNUTLS
- 
-+/* this backend supports the CAPATH option */
-+#define have_curlssl_ca_path 1
-+
- /* API setup for GnuTLS */
- #define curlssl_init Curl_gtls_init
- #define curlssl_cleanup Curl_gtls_cleanup
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/fltk-shared-lib-defines.patch b/gnu/packages/patches/fltk-shared-lib-defines.patch
new file mode 100644
index 0000000000..d36a50ff5e
--- /dev/null
+++ b/gnu/packages/patches/fltk-shared-lib-defines.patch
@@ -0,0 +1,51 @@
+This patch from upstream revision 10588.
+
+--- fltk-1.3.3/src/Xutf8.h
++++ fltk-1.3.3/src/Xutf8.h
+@@ -25,6 +25,7 @@
+ #include <X11/Xlib.h>
+ #include <X11/Xlocale.h>
+ #include <X11/Xutil.h>
++#include <FL/Fl_Export.H>
+ 
+ typedef struct {
+ 	int nb_font;
+@@ -98,8 +99,8 @@
+ 	XUtf8FontStruct  *font_set,
+ 	unsigned int            ucs);
+ 
+-int
+-XGetUtf8FontAndGlyph(
++FL_EXPORT int
++fl_XGetUtf8FontAndGlyph(
+         XUtf8FontStruct  *font_set,
+         unsigned int            ucs,
+         XFontStruct     **fnt,
+--- fltk-1.3.3/src/gl_draw.cxx
++++ fltk-1.3.3/src/gl_draw.cxx
+@@ -114,7 +114,7 @@
+   for (int i = 0; i < 0x400; i++) {
+     XFontStruct *font = NULL;
+     unsigned short id;
+-    XGetUtf8FontAndGlyph(gl_fontsize->font, ii, &font, &id);
++    fl_XGetUtf8FontAndGlyph(gl_fontsize->font, ii, &font, &id);
+     if (font) glXUseXFont(font->fid, id, 1, gl_fontsize->listbase+ii);
+     ii++;
+    }
+--- fltk-1.3.3/src/xutf8/utf8Wrap.c
++++ fltk-1.3.3/src/xutf8/utf8Wrap.c
+@@ -816,10 +816,10 @@
+ /**  get the X font and glyph ID of a UCS char                              **/
+ /*****************************************************************************/
+ int
+-XGetUtf8FontAndGlyph(XUtf8FontStruct  *font_set,
+-		     unsigned int     ucs,
+-		     XFontStruct      **fnt,
+-		     unsigned short   *id) {
++fl_XGetUtf8FontAndGlyph(XUtf8FontStruct  *font_set,
++			unsigned int     ucs,
++			XFontStruct      **fnt,
++			unsigned short   *id) {
+ 
+   /* int             x; */
+   int             *encodings; /* encodings array */
diff --git a/gnu/packages/patches/fuse-CVE-2015-3202.patch b/gnu/packages/patches/fuse-CVE-2015-3202.patch
new file mode 100644
index 0000000000..7c64de7683
--- /dev/null
+++ b/gnu/packages/patches/fuse-CVE-2015-3202.patch
@@ -0,0 +1,65 @@
+The following patch was copied from Debian.
+
+Description: Fix CVE-2015-3202
+ Missing scrubbing of the environment before executing a mount or umount
+ of a filesystem.
+Origin: upstream
+Author: Miklos Szeredi <miklos@szeredi.hu>
+Last-Update: 2015-05-19
+
+---
+ lib/mount_util.c |   23 +++++++++++++++++------
+ 1 file changed, 17 insertions(+), 6 deletions(-)
+
+--- a/lib/mount_util.c
++++ b/lib/mount_util.c
+@@ -95,10 +95,12 @@ static int add_mount(const char *prognam
+ 		goto out_restore;
+ 	}
+ 	if (res == 0) {
++		char *env = NULL;
++
+ 		sigprocmask(SIG_SETMASK, &oldmask, NULL);
+ 		setuid(geteuid());
+-		execl("/bin/mount", "/bin/mount", "--no-canonicalize", "-i",
+-		      "-f", "-t", type, "-o", opts, fsname, mnt, NULL);
++		execle("/bin/mount", "/bin/mount", "--no-canonicalize", "-i",
++		       "-f", "-t", type, "-o", opts, fsname, mnt, NULL, &env);
+ 		fprintf(stderr, "%s: failed to execute /bin/mount: %s\n",
+ 			progname, strerror(errno));
+ 		exit(1);
+@@ -146,10 +148,17 @@ static int exec_umount(const char *progn
+ 		goto out_restore;
+ 	}
+ 	if (res == 0) {
++		char *env = NULL;
++
+ 		sigprocmask(SIG_SETMASK, &oldmask, NULL);
+ 		setuid(geteuid());
+-		execl("/bin/umount", "/bin/umount", "-i", rel_mnt,
+-		      lazy ? "-l" : NULL, NULL);
++		if (lazy) {
++			execle("/bin/umount", "/bin/umount", "-i", rel_mnt,
++			       "-l", NULL, &env);
++		} else {
++			execle("/bin/umount", "/bin/umount", "-i", rel_mnt,
++			       NULL, &env);
++		}
+ 		fprintf(stderr, "%s: failed to execute /bin/umount: %s\n",
+ 			progname, strerror(errno));
+ 		exit(1);
+@@ -205,10 +214,12 @@ static int remove_mount(const char *prog
+ 		goto out_restore;
+ 	}
+ 	if (res == 0) {
++		char *env = NULL;
++
+ 		sigprocmask(SIG_SETMASK, &oldmask, NULL);
+ 		setuid(geteuid());
+-		execl("/bin/umount", "/bin/umount", "--no-canonicalize", "-i",
+-		      "--fake", mnt, NULL);
++		execle("/bin/umount", "/bin/umount", "--no-canonicalize", "-i",
++		       "--fake", mnt, NULL, &env);
+ 		fprintf(stderr, "%s: failed to execute /bin/umount: %s\n",
+ 			progname, strerror(errno));
+ 		exit(1);
diff --git a/gnu/packages/patches/gcc-5.0-libvtv-runpath.patch b/gnu/packages/patches/gcc-5.0-libvtv-runpath.patch
new file mode 100644
index 0000000000..9a9bc5ca53
--- /dev/null
+++ b/gnu/packages/patches/gcc-5.0-libvtv-runpath.patch
@@ -0,0 +1,15 @@
+GCC 4.9 and later have libvtv and, just like libstdc++ (see
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32354), it doesn't
+have $libdir in its RUNPATH, but it NEEDs libgcc_s.  This patch
+fixes that.
+
+--- gcc-5.1.0/libvtv/Makefile.in	2014-10-30 09:28:58.000000000 +0100
++++ gcc-5.1.0/libvtv/Makefile.in	2015-04-30 09:51:04.161129705 +0200
+@@ -15,6 +15,7 @@
+ 
+ @SET_MAKE@
+ 
++libvtv_la_LDFLAGS = -Wl,-rpath=$(libdir)
+ 
+ VPATH = @srcdir@
+ pkgdatadir = $(datadir)/@PACKAGE@
diff --git a/gnu/packages/patches/gnutls-fix-duplicate-manpages.patch b/gnu/packages/patches/gnutls-fix-duplicate-manpages.patch
deleted file mode 100644
index 95a25560e5..0000000000
--- a/gnu/packages/patches/gnutls-fix-duplicate-manpages.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-Remove duplicate manpage entries from Makefile.
-
---- gnutls-3.4.0/doc/manpages/Makefile.am.orig	2015-04-06 04:48:30.000000000 -0400
-+++ gnutls-3.4.0/doc/manpages/Makefile.am	2015-04-12 16:52:58.029694525 -0400
-@@ -134,11 +134,8 @@
- APIMANS += gnutls_certificate_get_peers_subkey_id.3
- APIMANS += gnutls_certificate_get_trust_list.3
- APIMANS += gnutls_certificate_get_verify_flags.3
--APIMANS += gnutls_certificate_get_verify_flags.3
--APIMANS += gnutls_certificate_get_x509_crt.3
- APIMANS += gnutls_certificate_get_x509_crt.3
- APIMANS += gnutls_certificate_get_x509_key.3
--APIMANS += gnutls_certificate_get_x509_key.3
- APIMANS += gnutls_certificate_send_x509_rdn_sequence.3
- APIMANS += gnutls_certificate_server_set_request.3
- APIMANS += gnutls_certificate_set_dh_params.3
---- gnutls-3.4.0/doc/manpages/Makefile.in.orig	2015-04-08 02:08:30.000000000 -0400
-+++ gnutls-3.4.0/doc/manpages/Makefile.in	2015-04-12 16:53:13.319694530 -0400
-@@ -1275,11 +1275,8 @@
- 	gnutls_certificate_get_peers_subkey_id.3 \
- 	gnutls_certificate_get_trust_list.3 \
- 	gnutls_certificate_get_verify_flags.3 \
--	gnutls_certificate_get_verify_flags.3 \
--	gnutls_certificate_get_x509_crt.3 \
- 	gnutls_certificate_get_x509_crt.3 \
- 	gnutls_certificate_get_x509_key.3 \
--	gnutls_certificate_get_x509_key.3 \
- 	gnutls_certificate_send_x509_rdn_sequence.3 \
- 	gnutls_certificate_server_set_request.3 \
- 	gnutls_certificate_set_dh_params.3 \
diff --git a/gnu/packages/patches/guix-test-networking.patch b/gnu/packages/patches/guix-test-networking.patch
deleted file mode 100644
index a8d1f4fd2f..0000000000
--- a/gnu/packages/patches/guix-test-networking.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Skip that test when the network is unreachable.
-
-diff --git a/tests/packages.scm b/tests/packages.scm
-index 04e3b0b..6ac215b 100644
---- a/tests/packages.scm
-+++ b/tests/packages.scm
-@@ -139,6 +139,8 @@
-     (and (direct-store-path? source)
-          (string-suffix? "utils.scm" source))))
- 
-+(unless (false-if-exception (getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV))
-+  (test-skip 1))
- (test-equal "package-source-derivation, snippet"
-   "OK"
-   (let* ((file   (search-bootstrap-binary "guile-2.0.9.tar.xz"
diff --git a/gnu/packages/patches/hop-linker-flags.patch b/gnu/packages/patches/hop-linker-flags.patch
new file mode 100644
index 0000000000..f1f5dbfbd9
--- /dev/null
+++ b/gnu/packages/patches/hop-linker-flags.patch
@@ -0,0 +1,60 @@
+Make hop's link rules honor flags set by the --blflags configure argument.
+
+--- hop-2.4.0/src/Makefile	2015-05-05 19:41:04.800151036 -0500
++++ hop-2.4.0/src/Makefile	2015-05-05 19:40:40.916150417 -0500
+@@ -69,10 +69,10 @@
+ 	$(MAKE) link.$(LINK) DEST=$@
+ 
+ link.dynamic:
+-	@ $(call link,$(BIGLOO),$(BCFLAGS),$(BCFLAGSDEV),$(OBJECTS),-o,$(DEST))
++	@ $(call link,$(BIGLOO),$(BCFLAGS) $(BLFLAGS),$(BCFLAGSDEV),$(OBJECTS),-o,$(DEST))
+ 
+ link.static:
+-	@ $(call link,$(BIGLOO),$(BCFLAGS),$(BCFLAGSDEV),-static-all-bigloo $(OBJECTS),-o,$(DEST))
++	@ $(call link,$(BIGLOO),$(BCFLAGS) $(BLFLAGS),$(BCFLAGSDEV),-static-all-bigloo $(OBJECTS),-o,$(DEST))
+ 
+ link.library:
+ 	echo "***ERROR: link.library not currently supported!"
+--- hop-2.4.0/hopc/Makefile	2013-01-30 07:17:59.000000000 -0600
++++ hop-2.4.0/hopc/Makefile	2015-05-05 19:45:21.876157699 -0500
+@@ -62,7 +62,7 @@
+ 	mkdir -p $@
+ 
+ $(BUILDBINDIR)/$(EXEC): .afile .etags $(OBJECTS)
+-	@ $(call link,$(BIGLOO),$(BCFLAGS),,$(OBJECTS),-o,$@)
++	@ $(call link,$(BIGLOO),$(BCFLAGS) $(BLFLAGS),$(BCFLAGSDEV),$(OBJECTS),-o,$@)
+ 
+ $(BUILDBINDIR)/$(EXEC).jar: .afile .etags .jfile $(BGL_CLASSES) META-INF/MANIFEST.MF jvm-stdlibs jvm-share jvm-lib
+ 	$(JAR) $@ META-INF/MANIFEST.MF -C o/class_s .
+--- hop-2.4.0/hophz/Makefile	2013-01-30 07:17:59.000000000 -0600
++++ hop-2.4.0/hophz/Makefile	2015-05-05 19:59:42.996180030 -0500
+@@ -16,9 +16,6 @@
+ -include ../etc/Makefile.hopconfig
+ -include ../etc/Makefile.version
+ 
+-BLFLAGS		= 
+-BLINKFLAGS 	= -suffix hop
+-
+ #*---------------------------------------------------------------------*/
+ #*    Target and Project                                               */
+ #*---------------------------------------------------------------------*/
+@@ -72,7 +69,7 @@
+ 	mkdir -p $@
+ 
+ $(BUILDBINDIR)/$(EXEC): .afile .etags $(OBJECTS)
+-	@ $(call link,$(BIGLOO),$(BCFLAGS),$(BLINKFLAGS),$(OBJECTS),-o,$@)
++	@ $(call link,$(BIGLOO),$(BCFLAGS) $(BLFLAGS),$(BCFLAGSDEV),$(OBJECTS),-o,$@)
+ 
+ $(BUILDBINDIR)/$(EXEC).jar: .afile .etags .jfile $(BGL_CLASSES) META-INF/MANIFEST.MF jvm-stdlibs jvm-share jvm-lib
+ 	@ $(JAR) $@ META-INF/MANIFEST.MF -C o/class_s .
+--- hop-2.4.0/hopsh/Makefile	2013-01-30 07:17:59.000000000 -0600
++++ hop-2.4.0/hopsh/Makefile	2015-05-05 19:46:36.060159626 -0500
+@@ -60,7 +60,7 @@
+ 	mkdir -p $@
+ 
+ $(BUILDBINDIR)/$(EXEC): .afile .etags $(OBJECTS)
+-	@ $(call link,$(BIGLOO),$(BCFLAGS),$(BCFLAGSDEV),$(OBJECTS),-o,$@)
++	@ $(call link,$(BIGLOO),$(BCFLAGS) $(BLFLAGS),$(BCFLAGSDEV),$(OBJECTS),-o,$@)
+ 
+ $(BUILDBINDIR)/$(EXEC).jar: .afile .etags .jfile $(BGL_CLASSES) META-INF/MANIFEST.MF jvm-stdlibs jvm-share jvm-lib
+ 	@ $(JAR) $@ META-INF/MANIFEST.MF -C o/class_s .
diff --git a/gnu/packages/patches/inetutils-syslogd.patch b/gnu/packages/patches/inetutils-syslogd.patch
deleted file mode 100644
index 0bf9eb7fc6..0000000000
--- a/gnu/packages/patches/inetutils-syslogd.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-From <http://lists.gnu.org/archive/html/bug-inetutils/2015-04/msg00001.html>.
-
-2015-04-01  Ludovic Courtès  <ludo@gnu.org>
-
-	* src/syslogd.c (load_conffile): Use 'bcopy' instead of 'strcpy'
-	since the two regions may overlap.
-	Reported by Alex Kost <alezost@gmail.com>
-	at <http://lists.gnu.org/archive/html/guix-devel/2015-03/msg00780.html>.
-
---- a/src/syslogd.c
-+++ b/src/syslogd.c
-@@ -1989,7 +1989,7 @@ load_conffile (const char *filename, struct filed **nextp)
-       if (*p == '\0' || *p == '#')
- 	continue;
- 
--      strcpy (cline, p);
-+      bcopy (p, cline, strlen (p) + 1);
- 
-       /* Cut the trailing spaces.  */
-       for (p = strchr (cline, '\0'); isspace (*--p);)
diff --git a/gnu/packages/patches/libtool-skip-tests.patch b/gnu/packages/patches/libtool-skip-tests.patch
deleted file mode 100644
index 9191d40487..0000000000
--- a/gnu/packages/patches/libtool-skip-tests.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-Because our GCC 'lib' spec automatically adds '-rpath' for each '-L'
-and a couple more '-rpath, there are two test failures:
-one in demo.test, and one in destdir.at.  Disable these.
-
-Also skip the nopic test on ARM and MIPS systems.
-
---- libtool-2.4.6/tests/demo.at.orig	2015-01-16 13:52:04.000000000 -0500
-+++ libtool-2.4.6/tests/demo.at	2015-02-16 10:48:51.435851966 -0500
-@@ -510,7 +510,7 @@
- AT_SETUP([force non-PIC objects])
- 
- AT_CHECK([case $host in
--hppa*|x86_64*|s390*)
-+hppa*|x86_64*|s390*|arm*|mips*)
-   # These hosts cannot use non-PIC shared libs
-   exit 77 ;;
- *-solaris*|*-sunos*)
---- libtool-2.4.6/tests/testsuite.orig	2015-02-15 11:15:25.000000000 -0500
-+++ libtool-2.4.6/tests/testsuite	2015-02-16 10:50:58.736483216 -0500
-@@ -8741,7 +8741,7 @@
- 
- { set +x
- $as_echo "$at_srcdir/demo.at:535: case \$host in
--hppa*|x86_64*|s390*)
-+hppa*|x86_64*|s390*|arm*|mips*)
-   # These hosts cannot use non-PIC shared libs
-   exit 77 ;;
- *-solaris*|*-sunos*)
-@@ -8766,7 +8766,7 @@
- "
- at_fn_check_prepare_notrace 'a `...` command substitution' "demo.at:535"
- ( $at_check_trace; case $host in
--hppa*|x86_64*|s390*)
-+hppa*|x86_64*|s390*|arm*|mips*)
-   # These hosts cannot use non-PIC shared libs
-   exit 77 ;;
- *-solaris*|*-sunos*)
-@@ -9298,7 +9298,7 @@
- #AT_START_34
- at_fn_group_banner 34 'demo.at:548' \
-   "hardcoding library path" "                        " 4
--at_xfail=no
-+at_xfail=yes
-       test no = "$ACLOCAL" && at_xfail=yes
-       test no = "$AUTOHEADER" && at_xfail=yes
-       test no = "$AUTOMAKE" && at_xfail=yes
-@@ -27243,7 +27243,7 @@
- #AT_START_98
- at_fn_group_banner 98 'destdir.at:75' \
-   "DESTDIR with in-package deplibs" "                " 8
--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/linux-libre-libreboot-fix.patch b/gnu/packages/patches/linux-libre-libreboot-fix.patch
deleted file mode 100644
index d340a99fcb..0000000000
--- a/gnu/packages/patches/linux-libre-libreboot-fix.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-This patch fixes linux-libre-3.19.x on Libreboot X60 machines.
-Copied from https://bugzilla.kernel.org/show_bug.cgi?id=93171#c25
-
---- a/drivers/gpu/drm/i915/i915_irq.c	
-+++ a/drivers/gpu/drm/i915/i915_irq.c	
-@@ -3598,14 +3598,12 @@ static int i8xx_irq_postinstall(struct drm_device *dev)
- 		~(I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
- 		  I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
- 		  I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT |
--		  I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT |
--		  I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT);
-+		  I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT);
- 	I915_WRITE16(IMR, dev_priv->irq_mask);
- 
- 	I915_WRITE16(IER,
- 		     I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
- 		     I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
--		     I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT |
- 		     I915_USER_INTERRUPT);
- 	POSTING_READ16(IER);
- 
-@@ -3767,14 +3765,12 @@ static int i915_irq_postinstall(struct drm_device *dev)
- 		  I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
- 		  I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
- 		  I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT |
--		  I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT |
--		  I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT);
-+		  I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT);
- 
- 	enable_mask =
- 		I915_ASLE_INTERRUPT |
- 		I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
- 		I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
--		I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT |
- 		I915_USER_INTERRUPT;
- 
- 	if (I915_HAS_HOTPLUG(dev)) {
diff --git a/gnu/packages/patches/maxima-defsystem-mkdir.patch b/gnu/packages/patches/maxima-defsystem-mkdir.patch
new file mode 100644
index 0000000000..bc42e51a32
--- /dev/null
+++ b/gnu/packages/patches/maxima-defsystem-mkdir.patch
@@ -0,0 +1,13 @@
+Change 'ensure-directories-exist' to look for 'mkdir' in $PATH, not in /bin.
+
+--- maxima-5.36.1/lisp-utils/defsystem.lisp.orig	2014-11-22 16:21:30.000000000 -0500
++++ maxima-5.36.1/lisp-utils/defsystem.lisp	2015-05-25 21:53:31.223648483 -0400
+@@ -4627,7 +4627,7 @@
+         (cmd (if (member :win32 *features*)
+                  (format nil "mkdir \"~a\""
+                          (coerce (subst #\\ #\/ (coerce (namestring dir) 'list)) 'string))
+-                 (format nil "/bin/mkdir -p ~S" (namestring dir)))))
++                 (format nil "mkdir -p ~S" (namestring dir)))))
+    (unless (directory dir)
+      (lisp:system cmd))
+    ;; The second return value is supposed to be T if directories were
diff --git a/gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch b/gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch
deleted file mode 100644
index 2f8b159870..0000000000
--- a/gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-From resolution of upstream python issue #20901: http://bugs.python.org/issue20901
-
-diff --git a/Lib/sqlite3/test/hooks.py b/Lib/sqlite3/test/hooks.py
---- Lib/sqlite3/test/hooks.py
-+++ Lib/sqlite3/test/hooks.py
-@@ -162,7 +162,7 @@ class ProgressTests(unittest.TestCase):
-             create table bar (a, b)
-             """)
-         second_count = len(progress_calls)
--        self.assertGreater(first_count, second_count)
-+        self.assertGreaterEqual(first_count, second_count)
- 
-     def CheckCancelOperation(self):
-         """
-
diff --git a/gnu/packages/patches/qemu-CVE-2015-3209.patch b/gnu/packages/patches/qemu-CVE-2015-3209.patch
new file mode 100644
index 0000000000..0bb726698c
--- /dev/null
+++ b/gnu/packages/patches/qemu-CVE-2015-3209.patch
@@ -0,0 +1,49 @@
+From 9f7c594c006289ad41169b854d70f5da6e400a2a Mon Sep 17 00:00:00 2001
+From: Petr Matousek <pmatouse@redhat.com>
+Date: Sun, 24 May 2015 10:53:44 +0200
+Subject: [PATCH] pcnet: force the buffer access to be in bounds during tx
+
+4096 is the maximum length per TMD and it is also currently the size of
+the relay buffer pcnet driver uses for sending the packet data to QEMU
+for further processing. With packet spanning multiple TMDs it can
+happen that the overall packet size will be bigger than sizeof(buffer),
+which results in memory corruption.
+
+Fix this by only allowing to queue maximum sizeof(buffer) bytes.
+
+This is CVE-2015-3209.
+
+[Fixed 3-space indentation to QEMU's 4-space coding standard.
+--Stefan]
+
+Signed-off-by: Petr Matousek <pmatouse@redhat.com>
+Reported-by: Matt Tait <matttait@google.com>
+Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
+Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
+Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
+---
+ hw/net/pcnet.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/hw/net/pcnet.c b/hw/net/pcnet.c
+index bdfd38f..68b9981 100644
+--- a/hw/net/pcnet.c
++++ b/hw/net/pcnet.c
+@@ -1241,6 +1241,14 @@ static void pcnet_transmit(PCNetState *s)
+         }
+ 
+         bcnt = 4096 - GET_FIELD(tmd.length, TMDL, BCNT);
++
++        /* if multi-tmd packet outsizes s->buffer then skip it silently.
++           Note: this is not what real hw does */
++        if (s->xmit_pos + bcnt > sizeof(s->buffer)) {
++            s->xmit_pos = -1;
++            goto txdone;
++        }
++
+         s->phys_mem_read(s->dma_opaque, PHYSADDR(s, tmd.tbadr),
+                          s->buffer + s->xmit_pos, bcnt, CSR_BSWP(s));
+         s->xmit_pos += bcnt;
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/qemu-CVE-2015-3456.patch b/gnu/packages/patches/qemu-CVE-2015-3456.patch
new file mode 100644
index 0000000000..9514f7c3e5
--- /dev/null
+++ b/gnu/packages/patches/qemu-CVE-2015-3456.patch
@@ -0,0 +1,85 @@
+From e907746266721f305d67bc0718795fedee2e824c Mon Sep 17 00:00:00 2001
+From: Petr Matousek <pmatouse@redhat.com>
+Date: Wed, 6 May 2015 09:48:59 +0200
+Subject: [PATCH] fdc: force the fifo access to be in bounds of the allocated
+ buffer
+
+During processing of certain commands such as FD_CMD_READ_ID and
+FD_CMD_DRIVE_SPECIFICATION_COMMAND the fifo memory access could
+get out of bounds leading to memory corruption with values coming
+from the guest.
+
+Fix this by making sure that the index is always bounded by the
+allocated memory.
+
+This is CVE-2015-3456.
+
+Signed-off-by: Petr Matousek <pmatouse@redhat.com>
+Reviewed-by: John Snow <jsnow@redhat.com>
+Signed-off-by: John Snow <jsnow@redhat.com>
+---
+ hw/block/fdc.c | 17 +++++++++++------
+ 1 file changed, 11 insertions(+), 6 deletions(-)
+
+diff --git a/hw/block/fdc.c b/hw/block/fdc.c
+index f72a392..d8a8edd 100644
+--- a/hw/block/fdc.c
++++ b/hw/block/fdc.c
+@@ -1497,7 +1497,7 @@ static uint32_t fdctrl_read_data(FDCtrl *fdctrl)
+ {
+     FDrive *cur_drv;
+     uint32_t retval = 0;
+-    int pos;
++    uint32_t pos;
+ 
+     cur_drv = get_cur_drv(fdctrl);
+     fdctrl->dsr &= ~FD_DSR_PWRDOWN;
+@@ -1506,8 +1506,8 @@ static uint32_t fdctrl_read_data(FDCtrl *fdctrl)
+         return 0;
+     }
+     pos = fdctrl->data_pos;
++    pos %= FD_SECTOR_LEN;
+     if (fdctrl->msr & FD_MSR_NONDMA) {
+-        pos %= FD_SECTOR_LEN;
+         if (pos == 0) {
+             if (fdctrl->data_pos != 0)
+                 if (!fdctrl_seek_to_next_sect(fdctrl, cur_drv)) {
+@@ -1852,10 +1852,13 @@ static void fdctrl_handle_option(FDCtrl *fdctrl, int direction)
+ static void fdctrl_handle_drive_specification_command(FDCtrl *fdctrl, int direction)
+ {
+     FDrive *cur_drv = get_cur_drv(fdctrl);
++    uint32_t pos;
+ 
+-    if (fdctrl->fifo[fdctrl->data_pos - 1] & 0x80) {
++    pos = fdctrl->data_pos - 1;
++    pos %= FD_SECTOR_LEN;
++    if (fdctrl->fifo[pos] & 0x80) {
+         /* Command parameters done */
+-        if (fdctrl->fifo[fdctrl->data_pos - 1] & 0x40) {
++        if (fdctrl->fifo[pos] & 0x40) {
+             fdctrl->fifo[0] = fdctrl->fifo[1];
+             fdctrl->fifo[2] = 0;
+             fdctrl->fifo[3] = 0;
+@@ -1955,7 +1958,7 @@ static uint8_t command_to_handler[256];
+ static void fdctrl_write_data(FDCtrl *fdctrl, uint32_t value)
+ {
+     FDrive *cur_drv;
+-    int pos;
++    uint32_t pos;
+ 
+     /* Reset mode */
+     if (!(fdctrl->dor & FD_DOR_nRESET)) {
+@@ -2004,7 +2007,9 @@ static void fdctrl_write_data(FDCtrl *fdctrl, uint32_t value)
+     }
+ 
+     FLOPPY_DPRINTF("%s: %02x\n", __func__, value);
+-    fdctrl->fifo[fdctrl->data_pos++] = value;
++    pos = fdctrl->data_pos++;
++    pos %= FD_SECTOR_LEN;
++    fdctrl->fifo[pos] = value;
+     if (fdctrl->data_pos == fdctrl->data_len) {
+         /* We now have all parameters
+          * and will be able to treat the command
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/r-fix-15899.patch b/gnu/packages/patches/r-fix-15899.patch
new file mode 100644
index 0000000000..40593d34e6
--- /dev/null
+++ b/gnu/packages/patches/r-fix-15899.patch
@@ -0,0 +1,17 @@
+Without the "extern" keyword external applications linking against R (such as
+Shogun, for example) might not be linkable.
+
+See https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=15899 for details
+about this bug.
+
+--- a/src/include/Rinterface.h	(revision 66251)
++++ b/src/include/Rinterface.h	(working copy)
+@@ -84,7 +84,7 @@
+ void fpu_setup(Rboolean);
+ 
+ /* in unix/system.c */
+-int R_running_as_main_program; 
++extern int R_running_as_main_program; 
+ 
+ #ifdef CSTACK_DEFNS
+ /* duplicating Defn.h */
diff --git a/gnu/packages/patches/rsem-makefile.patch b/gnu/packages/patches/rsem-makefile.patch
new file mode 100644
index 0000000000..5481dc685f
--- /dev/null
+++ b/gnu/packages/patches/rsem-makefile.patch
@@ -0,0 +1,682 @@
+This patch simplifies the Makefile, making it much easier to build rsem
+without the bundled version of samtools.  It has already been submitted
+upstream: https://github.com/bli25wisc/RSEM/pull/11
+
+From 161894e91a16c7e15af57e4fcfe8cb613711c7fa Mon Sep 17 00:00:00 2001
+From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
+Date: Wed, 22 Apr 2015 14:51:07 +0200
+Subject: [PATCH 1/7] remove all headers from Makefile
+
+---
+ Makefile | 95 +++++++++++-----------------------------------------------------
+ 1 file changed, 16 insertions(+), 79 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 54e2603..3a55ed8 100644
+--- a/Makefile
++++ b/Makefile
+@@ -10,133 +10,70 @@ all : $(PROGRAMS)
+ sam/libbam.a :
+ 	cd sam ; ${MAKE} all
+ 
+-Transcript.h : utils.h
+-
+-Transcripts.h : utils.h my_assert.h Transcript.h
+-
+-rsem-extract-reference-transcripts : utils.h my_assert.h GTFItem.h Transcript.h Transcripts.h extractRef.cpp
++rsem-extract-reference-transcripts : extractRef.cpp
+ 	$(CC) -Wall -O3 extractRef.cpp -o rsem-extract-reference-transcripts
+ 
+-rsem-synthesis-reference-transcripts : utils.h my_assert.h Transcript.h Transcripts.h synthesisRef.cpp
++rsem-synthesis-reference-transcripts : synthesisRef.cpp
+ 	$(CC) -Wall -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts
+ 
+-BowtieRefSeqPolicy.h : RefSeqPolicy.h
+-
+-RefSeq.h : utils.h
+-
+-Refs.h : utils.h RefSeq.h RefSeqPolicy.h PolyARules.h
+-
+-
+ rsem-preref : preRef.o
+ 	$(CC) preRef.o -o rsem-preref
+ 
+-preRef.o : utils.h RefSeq.h Refs.h PolyARules.h RefSeqPolicy.h AlignerRefSeqPolicy.h preRef.cpp
++preRef.o : preRef.cpp
+ 	$(CC) $(COFLAGS) preRef.cpp
+ 
+-
+-SingleRead.h : Read.h
+-
+-SingleReadQ.h : Read.h
+-
+-PairedEndRead.h : Read.h SingleRead.h
+-
+-PairedEndReadQ.h : Read.h SingleReadQ.h
+-
+-
+-PairedEndHit.h : SingleHit.h
+-
+-HitContainer.h : GroupInfo.h
+-
+-
+-SamParser.h : sam/sam.h sam/bam.h utils.h my_assert.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h SingleHit.h PairedEndHit.h Transcripts.h
+-
+-
+ rsem-parse-alignments : parseIt.o sam/libbam.a
+ 	$(CC) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread 
+ 
+-parseIt.o : utils.h GroupInfo.h Read.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h SingleHit.h PairedEndHit.h HitContainer.h SamParser.h Transcripts.h sam/sam.h sam/bam.h parseIt.cpp
++parseIt.o : parseIt.cpp
+ 	$(CC) -Wall -O2 -c -I. parseIt.cpp
+ 
+-
+-rsem-build-read-index : utils.h buildReadIndex.cpp
++rsem-build-read-index : buildReadIndex.cpp
+ 	$(CC) -O3 buildReadIndex.cpp -o rsem-build-read-index
+ 
+-
+-simul.h : boost/random.hpp
+-
+-ReadReader.h : SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h ReadIndex.h
+-
+-SingleModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h Profile.h NoiseProfile.h ModelParams.h RefSeq.h Refs.h SingleRead.h SingleHit.h ReadReader.h simul.h
+-
+-SingleQModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h ModelParams.h RefSeq.h Refs.h SingleReadQ.h SingleHit.h ReadReader.h simul.h
+-
+-PairedEndModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h Profile.h NoiseProfile.h ModelParams.h RefSeq.h Refs.h SingleRead.h PairedEndRead.h PairedEndHit.h ReadReader.h simul.h 
+-
+-PairedEndQModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h ModelParams.h RefSeq.h Refs.h SingleReadQ.h PairedEndReadQ.h PairedEndHit.h ReadReader.h simul.h
+-
+-HitWrapper.h : HitContainer.h
+-
+-sam_rsem_aux.h : sam/bam.h
+-
+-sam_rsem_cvt.h : sam/bam.h Transcript.h Transcripts.h
+-
+-BamWriter.h : sam/sam.h sam/bam.h sam_rsem_aux.h sam_rsem_cvt.h SingleHit.h PairedEndHit.h HitWrapper.h Transcript.h Transcripts.h
+-
+-sampling.h : boost/random.hpp
+-
+-WriteResults.h : utils.h my_assert.h GroupInfo.h Transcript.h Transcripts.h RefSeq.h Refs.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h
+-
+ rsem-run-em : EM.o sam/libbam.a
+ 	$(CC) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread
+ 
+-EM.o : utils.h my_assert.h Read.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h SingleHit.h PairedEndHit.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h Refs.h GroupInfo.h HitContainer.h ReadIndex.h ReadReader.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h ModelParams.h RefSeq.h RefSeqPolicy.h PolyARules.h Profile.h NoiseProfile.h Transcript.h Transcripts.h HitWrapper.h BamWriter.h sam/bam.h sam/sam.h simul.h sam_rsem_aux.h sampling.h boost/random.hpp WriteResults.h EM.cpp
++EM.o : EM.cpp
+ 	$(CC) $(COFLAGS) EM.cpp
+ 
+-bc_aux.h : sam/bam.h
+-
+-BamConverter.h : utils.h my_assert.h sam/sam.h sam/bam.h sam_rsem_aux.h sam_rsem_cvt.h bc_aux.h Transcript.h Transcripts.h
+-
+-rsem-tbam2gbam : utils.h Transcripts.h Transcript.h bc_aux.h BamConverter.h sam/sam.h sam/bam.h sam/libbam.a sam_rsem_aux.h sam_rsem_cvt.h tbam2gbam.cpp sam/libbam.a
++rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a
+ 	$(CC) -O3 -Wall tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@
+ 
+-rsem-bam2wig : utils.h my_assert.h wiggle.h wiggle.o sam/libbam.a bam2wig.cpp
++rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp
+ 	$(CC) -O3 -Wall bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@
+ 
+-rsem-bam2readdepth : utils.h my_assert.h wiggle.h wiggle.o sam/libbam.a bam2readdepth.cpp
++rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp
+ 	$(CC) -O3 -Wall bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@
+ 
+-wiggle.o: sam/bam.h sam/sam.h wiggle.cpp wiggle.h
++wiggle.o: wiggle.cpp
+ 	$(CC) $(COFLAGS) wiggle.cpp
+ 
+ rsem-simulate-reads : simulation.o
+ 	$(CC) -o rsem-simulate-reads simulation.o
+ 
+-simulation.o : utils.h Read.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h Refs.h RefSeq.h GroupInfo.h Transcript.h Transcripts.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h Profile.h NoiseProfile.h simul.h boost/random.hpp WriteResults.h simulation.cpp
++simulation.o : simulation.cpp
+ 	$(CC) $(COFLAGS) simulation.cpp
+ 
+ rsem-run-gibbs : Gibbs.o
+ 	$(CC) -o rsem-run-gibbs Gibbs.o -lpthread
+ 
+-#some header files are omitted
+-Gibbs.o : utils.h my_assert.h boost/random.hpp sampling.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h RefSeq.h RefSeqPolicy.h PolyARules.h Refs.h GroupInfo.h WriteResults.h Gibbs.cpp 
++Gibbs.o : Gibbs.cpp
+ 	$(CC) $(COFLAGS) Gibbs.cpp
+ 
+-Buffer.h : my_assert.h
+-
+ rsem-calculate-credibility-intervals : calcCI.o
+ 	$(CC) -o rsem-calculate-credibility-intervals calcCI.o -lpthread
+ 
+-#some header files are omitted
+-calcCI.o : utils.h my_assert.h boost/random.hpp sampling.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h RefSeq.h RefSeqPolicy.h PolyARules.h Refs.h GroupInfo.h WriteResults.h Buffer.h calcCI.cpp
++calcCI.o : calcCI.cpp
+ 	$(CC) $(COFLAGS) calcCI.cpp
+ 
+-rsem-get-unique : sam/bam.h sam/sam.h getUnique.cpp sam/libbam.a
++rsem-get-unique : getUnique.cpp sam/libbam.a
+ 	$(CC) -O3 -Wall getUnique.cpp sam/libbam.a -lz -lpthread -o $@
+ 
+-rsem-sam-validator : sam/bam.h sam/sam.h my_assert.h samValidator.cpp sam/libbam.a
++rsem-sam-validator : samValidator.cpp sam/libbam.a
+ 	$(CC) -O3 -Wall samValidator.cpp sam/libbam.a -lz -lpthread -o $@
+ 
+-rsem-scan-for-paired-end-reads : sam/bam.h sam/sam.h my_assert.h scanForPairedEndReads.cpp sam/libbam.a
++rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a
+ 	$(CC) -O3 -Wall scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@
+ 
+ ebseq :
+
+From ec136638a727632e20abfaeb65c22c46d15ca8c4 Mon Sep 17 00:00:00 2001
+From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
+Date: Wed, 22 Apr 2015 15:06:41 +0200
+Subject: [PATCH 2/7] include current dir, ./sam and ./boost by default
+
+---
+ Makefile | 48 ++++++++++++++++++++++++------------------------
+ 1 file changed, 24 insertions(+), 24 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 3a55ed8..1dd97ca 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,6 +1,6 @@
+ CC = g++
+-CFLAGS = -Wall -c -I.
+-COFLAGS = -Wall -O3 -ffast-math -c -I.
++CFLAGS = -Wall -I. -I./sam -I./boost
++COFLAGS = -O3 -ffast-math -c
+ PROGRAMS = rsem-extract-reference-transcripts rsem-synthesis-reference-transcripts rsem-preref rsem-parse-alignments rsem-build-read-index rsem-run-em rsem-tbam2gbam rsem-run-gibbs rsem-calculate-credibility-intervals rsem-simulate-reads rsem-bam2wig rsem-get-unique rsem-bam2readdepth rsem-sam-validator rsem-scan-for-paired-end-reads
+ 
+ .PHONY : all ebseq clean
+@@ -11,70 +11,70 @@ sam/libbam.a :
+ 	cd sam ; ${MAKE} all
+ 
+ rsem-extract-reference-transcripts : extractRef.cpp
+-	$(CC) -Wall -O3 extractRef.cpp -o rsem-extract-reference-transcripts
++	$(CC) $(CFLAGS) -O3 extractRef.cpp -o rsem-extract-reference-transcripts
+ 
+ rsem-synthesis-reference-transcripts : synthesisRef.cpp
+-	$(CC) -Wall -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts
++	$(CC) $(CFLAGS) -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts
+ 
+ rsem-preref : preRef.o
+-	$(CC) preRef.o -o rsem-preref
++	$(CC) $(CFLAGS) preRef.o -o rsem-preref
+ 
+ preRef.o : preRef.cpp
+-	$(CC) $(COFLAGS) preRef.cpp
++	$(CC) $(CFLAGS) $(COFLAGS) preRef.cpp
+ 
+ rsem-parse-alignments : parseIt.o sam/libbam.a
+-	$(CC) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread 
++	$(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread
+ 
+ parseIt.o : parseIt.cpp
+-	$(CC) -Wall -O2 -c -I. parseIt.cpp
++	$(CC) $(CFLAGS) -O2 -c parseIt.cpp
+ 
+ rsem-build-read-index : buildReadIndex.cpp
+-	$(CC) -O3 buildReadIndex.cpp -o rsem-build-read-index
++	$(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index
+ 
+ rsem-run-em : EM.o sam/libbam.a
+-	$(CC) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread
++	$(CC) $(CFLAGS) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread
+ 
+ EM.o : EM.cpp
+-	$(CC) $(COFLAGS) EM.cpp
++	$(CC) $(CFLAGS) $(COFLAGS) EM.cpp
+ 
+ rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a
+-	$(CC) -O3 -Wall tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@
++	$(CC) $(CFLAGS) -O3 tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@
+ 
+ rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp
+-	$(CC) -O3 -Wall bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@
++	$(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@
+ 
+ rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp
+-	$(CC) -O3 -Wall bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@
++	$(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@
+ 
+ wiggle.o: wiggle.cpp
+-	$(CC) $(COFLAGS) wiggle.cpp
++	$(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp
+ 
+ rsem-simulate-reads : simulation.o
+-	$(CC) -o rsem-simulate-reads simulation.o
++	$(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o
+ 
+ simulation.o : simulation.cpp
+-	$(CC) $(COFLAGS) simulation.cpp
++	$(CC) $(CFLAGS) $(COFLAGS) simulation.cpp
+ 
+ rsem-run-gibbs : Gibbs.o
+-	$(CC) -o rsem-run-gibbs Gibbs.o -lpthread
++	$(CC) $(CFLAGS) -o rsem-run-gibbs Gibbs.o -lpthread
+ 
+ Gibbs.o : Gibbs.cpp
+-	$(CC) $(COFLAGS) Gibbs.cpp
++	$(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp
+ 
+ rsem-calculate-credibility-intervals : calcCI.o
+-	$(CC) -o rsem-calculate-credibility-intervals calcCI.o -lpthread
++	$(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread
+ 
+ calcCI.o : calcCI.cpp
+-	$(CC) $(COFLAGS) calcCI.cpp
++	$(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp
+ 
+ rsem-get-unique : getUnique.cpp sam/libbam.a
+-	$(CC) -O3 -Wall getUnique.cpp sam/libbam.a -lz -lpthread -o $@
++	$(CC) $(CFLAGS) -O3 getUnique.cpp sam/libbam.a -lz -lpthread -o $@
+ 
+ rsem-sam-validator : samValidator.cpp sam/libbam.a
+-	$(CC) -O3 -Wall samValidator.cpp sam/libbam.a -lz -lpthread -o $@
++	$(CC) $(CFLAGS) -O3 samValidator.cpp sam/libbam.a -lz -lpthread -o $@
+ 
+ rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a
+-	$(CC) -O3 -Wall scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@
++	$(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@
+ 
+ ebseq :
+ 	cd EBSeq ; ${MAKE} all
+
+From d366614ea50f79fdd93e3c76383ccb6fcdeaa8e0 Mon Sep 17 00:00:00 2001
+From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
+Date: Wed, 22 Apr 2015 15:10:49 +0200
+Subject: [PATCH 3/7] separate object rules from rules for executables
+
+---
+ Makefile | 50 ++++++++++++++++++++++++++------------------------
+ 1 file changed, 26 insertions(+), 24 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 1dd97ca..ae4de3b 100644
+--- a/Makefile
++++ b/Makefile
+@@ -10,6 +10,32 @@ all : $(PROGRAMS)
+ sam/libbam.a :
+ 	cd sam ; ${MAKE} all
+ 
++ebseq :
++	cd EBSeq ; ${MAKE} all
++
++
++calcCI.o : calcCI.cpp
++	$(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp
++
++EM.o : EM.cpp
++	$(CC) $(CFLAGS) $(COFLAGS) EM.cpp
++
++Gibbs.o : Gibbs.cpp
++	$(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp
++
++preRef.o : preRef.cpp
++	$(CC) $(CFLAGS) $(COFLAGS) preRef.cpp
++
++parseIt.o : parseIt.cpp
++	$(CC) $(CFLAGS) -O2 -c parseIt.cpp
++
++simulation.o : simulation.cpp
++	$(CC) $(CFLAGS) $(COFLAGS) simulation.cpp
++
++wiggle.o: wiggle.cpp
++	$(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp
++
++
+ rsem-extract-reference-transcripts : extractRef.cpp
+ 	$(CC) $(CFLAGS) -O3 extractRef.cpp -o rsem-extract-reference-transcripts
+ 
+@@ -19,24 +45,15 @@ rsem-synthesis-reference-transcripts : synthesisRef.cpp
+ rsem-preref : preRef.o
+ 	$(CC) $(CFLAGS) preRef.o -o rsem-preref
+ 
+-preRef.o : preRef.cpp
+-	$(CC) $(CFLAGS) $(COFLAGS) preRef.cpp
+-
+ rsem-parse-alignments : parseIt.o sam/libbam.a
+ 	$(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread
+ 
+-parseIt.o : parseIt.cpp
+-	$(CC) $(CFLAGS) -O2 -c parseIt.cpp
+-
+ rsem-build-read-index : buildReadIndex.cpp
+ 	$(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index
+ 
+ rsem-run-em : EM.o sam/libbam.a
+ 	$(CC) $(CFLAGS) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread
+ 
+-EM.o : EM.cpp
+-	$(CC) $(CFLAGS) $(COFLAGS) EM.cpp
+-
+ rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a
+ 	$(CC) $(CFLAGS) -O3 tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@
+ 
+@@ -46,27 +63,15 @@ rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp
+ rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp
+ 	$(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@
+ 
+-wiggle.o: wiggle.cpp
+-	$(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp
+-
+ rsem-simulate-reads : simulation.o
+ 	$(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o
+ 
+-simulation.o : simulation.cpp
+-	$(CC) $(CFLAGS) $(COFLAGS) simulation.cpp
+-
+ rsem-run-gibbs : Gibbs.o
+ 	$(CC) $(CFLAGS) -o rsem-run-gibbs Gibbs.o -lpthread
+ 
+-Gibbs.o : Gibbs.cpp
+-	$(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp
+-
+ rsem-calculate-credibility-intervals : calcCI.o
+ 	$(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread
+ 
+-calcCI.o : calcCI.cpp
+-	$(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp
+-
+ rsem-get-unique : getUnique.cpp sam/libbam.a
+ 	$(CC) $(CFLAGS) -O3 getUnique.cpp sam/libbam.a -lz -lpthread -o $@
+ 
+@@ -76,9 +81,6 @@ rsem-sam-validator : samValidator.cpp sam/libbam.a
+ rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a
+ 	$(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@
+ 
+-ebseq :
+-	cd EBSeq ; ${MAKE} all
+-
+ clean :
+ 	rm -f *.o *~ $(PROGRAMS)
+ 	cd sam ; ${MAKE} clean
+
+From 6ba1c33cccdf7c8e7df7a3189e7db204be3b1e8d Mon Sep 17 00:00:00 2001
+From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
+Date: Wed, 22 Apr 2015 15:28:30 +0200
+Subject: [PATCH 4/7] add ./sam to library directories, link with -lbam
+
+---
+ Makefile | 36 ++++++++++++++++++------------------
+ 1 file changed, 18 insertions(+), 18 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index ae4de3b..a87cc4d 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,11 +1,11 @@
+ CC = g++
+-CFLAGS = -Wall -I. -I./sam -I./boost
++CFLAGS = -Wall -I. -I./sam -I./boost -L./sam
+ COFLAGS = -O3 -ffast-math -c
+ PROGRAMS = rsem-extract-reference-transcripts rsem-synthesis-reference-transcripts rsem-preref rsem-parse-alignments rsem-build-read-index rsem-run-em rsem-tbam2gbam rsem-run-gibbs rsem-calculate-credibility-intervals rsem-simulate-reads rsem-bam2wig rsem-get-unique rsem-bam2readdepth rsem-sam-validator rsem-scan-for-paired-end-reads
+ 
+ .PHONY : all ebseq clean
+ 
+-all : $(PROGRAMS)
++all : sam/libbam.a $(PROGRAMS)
+ 
+ sam/libbam.a :
+ 	cd sam ; ${MAKE} all
+@@ -45,23 +45,23 @@ rsem-synthesis-reference-transcripts : synthesisRef.cpp
+ rsem-preref : preRef.o
+ 	$(CC) $(CFLAGS) preRef.o -o rsem-preref
+ 
+-rsem-parse-alignments : parseIt.o sam/libbam.a
+-	$(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread
++rsem-parse-alignments : parseIt.o
++	$(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o -lbam -lz -lpthread
+ 
+ rsem-build-read-index : buildReadIndex.cpp
+ 	$(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index
+ 
+-rsem-run-em : EM.o sam/libbam.a
+-	$(CC) $(CFLAGS) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread
++rsem-run-em : EM.o
++	$(CC) $(CFLAGS) -o rsem-run-em EM.o -lbam -lz -lpthread
+ 
+-rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a
+-	$(CC) $(CFLAGS) -O3 tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@
++rsem-tbam2gbam : tbam2gbam.cpp
++	$(CC) $(CFLAGS) -O3 tbam2gbam.cpp -lbam -lz -lpthread -o $@
+ 
+-rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp
+-	$(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@
++rsem-bam2wig : wiggle.o bam2wig.cpp
++	$(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o -lbam -lz -lpthread -o $@
+ 
+-rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp
+-	$(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@
++rsem-bam2readdepth : wiggle.o bam2readdepth.cpp
++	$(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o -lbam -lz -lpthread -o $@
+ 
+ rsem-simulate-reads : simulation.o
+ 	$(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o
+@@ -72,14 +72,14 @@ rsem-run-gibbs : Gibbs.o
+ rsem-calculate-credibility-intervals : calcCI.o
+ 	$(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread
+ 
+-rsem-get-unique : getUnique.cpp sam/libbam.a
+-	$(CC) $(CFLAGS) -O3 getUnique.cpp sam/libbam.a -lz -lpthread -o $@
++rsem-get-unique : getUnique.cpp
++	$(CC) $(CFLAGS) -O3 getUnique.cpp -lbam -lz -lpthread -o $@
+ 
+-rsem-sam-validator : samValidator.cpp sam/libbam.a
+-	$(CC) $(CFLAGS) -O3 samValidator.cpp sam/libbam.a -lz -lpthread -o $@
++rsem-sam-validator : samValidator.cpp
++	$(CC) $(CFLAGS) -O3 samValidator.cpp -lbam -lz -lpthread -o $@
+ 
+-rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a
+-	$(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@
++rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp
++	$(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp -lbam -lz -lpthread -o $@
+ 
+ clean :
+ 	rm -f *.o *~ $(PROGRAMS)
+
+From 5402b88c269df79ee245c1c59e15f3c8282a0220 Mon Sep 17 00:00:00 2001
+From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
+Date: Wed, 22 Apr 2015 15:33:02 +0200
+Subject: [PATCH 5/7] do not repeat target name, use $@ instead
+
+---
+ Makefile | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index a87cc4d..7ec90a3 100644
+--- a/Makefile
++++ b/Makefile
+@@ -37,22 +37,22 @@ wiggle.o: wiggle.cpp
+ 
+ 
+ rsem-extract-reference-transcripts : extractRef.cpp
+-	$(CC) $(CFLAGS) -O3 extractRef.cpp -o rsem-extract-reference-transcripts
++	$(CC) $(CFLAGS) -O3 extractRef.cpp -o $@
+ 
+ rsem-synthesis-reference-transcripts : synthesisRef.cpp
+-	$(CC) $(CFLAGS) -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts
++	$(CC) $(CFLAGS) -O3 synthesisRef.cpp -o $@
+ 
+ rsem-preref : preRef.o
+-	$(CC) $(CFLAGS) preRef.o -o rsem-preref
++	$(CC) $(CFLAGS) preRef.o -o $@
+ 
+ rsem-parse-alignments : parseIt.o
+-	$(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o -lbam -lz -lpthread
++	$(CC) $(CFLAGS) -o $@ parseIt.o -lbam -lz -lpthread
+ 
+ rsem-build-read-index : buildReadIndex.cpp
+-	$(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index
++	$(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o $@
+ 
+ rsem-run-em : EM.o
+-	$(CC) $(CFLAGS) -o rsem-run-em EM.o -lbam -lz -lpthread
++	$(CC) $(CFLAGS) -o $@ EM.o -lbam -lz -lpthread
+ 
+ rsem-tbam2gbam : tbam2gbam.cpp
+ 	$(CC) $(CFLAGS) -O3 tbam2gbam.cpp -lbam -lz -lpthread -o $@
+@@ -64,13 +64,13 @@ rsem-bam2readdepth : wiggle.o bam2readdepth.cpp
+ 	$(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o -lbam -lz -lpthread -o $@
+ 
+ rsem-simulate-reads : simulation.o
+-	$(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o
++	$(CC) $(CFLAGS) -o $@ simulation.o
+ 
+ rsem-run-gibbs : Gibbs.o
+-	$(CC) $(CFLAGS) -o rsem-run-gibbs Gibbs.o -lpthread
++	$(CC) $(CFLAGS) -o $@ Gibbs.o -lpthread
+ 
+ rsem-calculate-credibility-intervals : calcCI.o
+-	$(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread
++	$(CC) $(CFLAGS) -o $@ calcCI.o -lpthread
+ 
+ rsem-get-unique : getUnique.cpp
+ 	$(CC) $(CFLAGS) -O3 getUnique.cpp -lbam -lz -lpthread -o $@
+
+From f60784bc7aa303cc825bd87dd3f5d7d26c51bded Mon Sep 17 00:00:00 2001
+From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
+Date: Wed, 22 Apr 2015 15:44:53 +0200
+Subject: [PATCH 6/7] use automatic variables to refer to prerequisites
+
+---
+ Makefile | 44 ++++++++++++++++++++++----------------------
+ 1 file changed, 22 insertions(+), 22 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 7ec90a3..6540d81 100644
+--- a/Makefile
++++ b/Makefile
+@@ -15,71 +15,71 @@ ebseq :
+ 
+ 
+ calcCI.o : calcCI.cpp
+-	$(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp
++	$(CC) $(CFLAGS) $(COFLAGS) $<
+ 
+ EM.o : EM.cpp
+-	$(CC) $(CFLAGS) $(COFLAGS) EM.cpp
++	$(CC) $(CFLAGS) $(COFLAGS) $<
+ 
+ Gibbs.o : Gibbs.cpp
+-	$(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp
++	$(CC) $(CFLAGS) $(COFLAGS) $<
+ 
+ preRef.o : preRef.cpp
+-	$(CC) $(CFLAGS) $(COFLAGS) preRef.cpp
++	$(CC) $(CFLAGS) $(COFLAGS) $<
+ 
+ parseIt.o : parseIt.cpp
+-	$(CC) $(CFLAGS) -O2 -c parseIt.cpp
++	$(CC) $(CFLAGS) -O2 -c $<
+ 
+ simulation.o : simulation.cpp
+-	$(CC) $(CFLAGS) $(COFLAGS) simulation.cpp
++	$(CC) $(CFLAGS) $(COFLAGS) $<
+ 
+ wiggle.o: wiggle.cpp
+-	$(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp
++	$(CC) $(CFLAGS) $(COFLAGS) $<
+ 
+ 
+ rsem-extract-reference-transcripts : extractRef.cpp
+-	$(CC) $(CFLAGS) -O3 extractRef.cpp -o $@
++	$(CC) $(CFLAGS) -O3 $< -o $@
+ 
+ rsem-synthesis-reference-transcripts : synthesisRef.cpp
+-	$(CC) $(CFLAGS) -O3 synthesisRef.cpp -o $@
++	$(CC) $(CFLAGS) -O3 $< -o $@
+ 
+ rsem-preref : preRef.o
+-	$(CC) $(CFLAGS) preRef.o -o $@
++	$(CC) $(CFLAGS) $< -o $@
+ 
+ rsem-parse-alignments : parseIt.o
+-	$(CC) $(CFLAGS) -o $@ parseIt.o -lbam -lz -lpthread
++	$(CC) $(CFLAGS) -o $@ $< -lbam -lz -lpthread
+ 
+ rsem-build-read-index : buildReadIndex.cpp
+-	$(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o $@
++	$(CC) $(CFLAGS) -O3 $< -o $@
+ 
+ rsem-run-em : EM.o
+-	$(CC) $(CFLAGS) -o $@ EM.o -lbam -lz -lpthread
++	$(CC) $(CFLAGS) -o $@ $< -lbam -lz -lpthread
+ 
+ rsem-tbam2gbam : tbam2gbam.cpp
+-	$(CC) $(CFLAGS) -O3 tbam2gbam.cpp -lbam -lz -lpthread -o $@
++	$(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@
+ 
+ rsem-bam2wig : wiggle.o bam2wig.cpp
+-	$(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o -lbam -lz -lpthread -o $@
++	$(CC) $(CFLAGS) -O3 $^ -lbam -lz -lpthread -o $@
+ 
+ rsem-bam2readdepth : wiggle.o bam2readdepth.cpp
+-	$(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o -lbam -lz -lpthread -o $@
++	$(CC) $(CFLAGS) -O3 $^ -lbam -lz -lpthread -o $@
+ 
+ rsem-simulate-reads : simulation.o
+-	$(CC) $(CFLAGS) -o $@ simulation.o
++	$(CC) $(CFLAGS) -o $@ $<
+ 
+ rsem-run-gibbs : Gibbs.o
+-	$(CC) $(CFLAGS) -o $@ Gibbs.o -lpthread
++	$(CC) $(CFLAGS) -o $@ $< -lpthread
+ 
+ rsem-calculate-credibility-intervals : calcCI.o
+-	$(CC) $(CFLAGS) -o $@ calcCI.o -lpthread
++	$(CC) $(CFLAGS) -o $@ $< -lpthread
+ 
+ rsem-get-unique : getUnique.cpp
+-	$(CC) $(CFLAGS) -O3 getUnique.cpp -lbam -lz -lpthread -o $@
++	$(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@
+ 
+ rsem-sam-validator : samValidator.cpp
+-	$(CC) $(CFLAGS) -O3 samValidator.cpp -lbam -lz -lpthread -o $@
++	$(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@
+ 
+ rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp
+-	$(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp -lbam -lz -lpthread -o $@
++	$(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@
+ 
+ clean :
+ 	rm -f *.o *~ $(PROGRAMS)
+
+From 0cf9721077f67fb4ca15fdc59cbfbf24a944debd Mon Sep 17 00:00:00 2001
+From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
+Date: Wed, 22 Apr 2015 15:49:19 +0200
+Subject: [PATCH 7/7] split long line
+
+---
+ Makefile | 17 ++++++++++++++++-
+ 1 file changed, 16 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 6540d81..0ab04a5 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,7 +1,22 @@
+ CC = g++
+ CFLAGS = -Wall -I. -I./sam -I./boost -L./sam
+ COFLAGS = -O3 -ffast-math -c
+-PROGRAMS = rsem-extract-reference-transcripts rsem-synthesis-reference-transcripts rsem-preref rsem-parse-alignments rsem-build-read-index rsem-run-em rsem-tbam2gbam rsem-run-gibbs rsem-calculate-credibility-intervals rsem-simulate-reads rsem-bam2wig rsem-get-unique rsem-bam2readdepth rsem-sam-validator rsem-scan-for-paired-end-reads
++PROGRAMS = \
++  rsem-extract-reference-transcripts \
++  rsem-synthesis-reference-transcripts \
++  rsem-preref \
++  rsem-parse-alignments \
++  rsem-build-read-index \
++  rsem-run-em \
++  rsem-tbam2gbam \
++  rsem-run-gibbs \
++  rsem-calculate-credibility-intervals \
++  rsem-simulate-reads \
++  rsem-bam2wig \
++  rsem-get-unique \
++  rsem-bam2readdepth \
++  rsem-sam-validator \
++  rsem-scan-for-paired-end-reads
+ 
+ .PHONY : all ebseq clean
+ 
diff --git a/gnu/packages/patches/serf-comment-style-fix.patch b/gnu/packages/patches/serf-comment-style-fix.patch
new file mode 100644
index 0000000000..5d336fb3c8
--- /dev/null
+++ b/gnu/packages/patches/serf-comment-style-fix.patch
@@ -0,0 +1,23 @@
+r2443 | andreas.stieger@gmx.de | 2014-10-21 17:42:56 -0400 (Tue, 21 Oct 2014) | 7 lines
+
+Follow-up to r2419: Correct comment style
+
+* test/test_buckets.c
+  (deflate_compress): Correct comment style not supported by strict
+  compilers, fails on /branches/1.3.x
+
+Index: test/test_buckets.c
+===================================================================
+--- test/test_buckets.c	(revision 2442)
++++ test/test_buckets.c	(revision 2443)
+@@ -1323,9 +1323,9 @@
+ 
+     /* The largest buffer we should need is 0.1% larger than the
+        uncompressed data, + 12 bytes. This info comes from zlib.h.
++       buf_size = orig_len + (orig_len / 1000) + 12;
+        Note: This isn't sufficient when using Z_NO_FLUSH and extremely compressed
+        data. Use a buffer bigger than what we need. */
+-//    buf_size = orig_len + (orig_len / 1000) + 12;
+     buf_size = 100000;
+ 
+     write_buf = apr_palloc(pool, buf_size);
diff --git a/gnu/packages/patches/serf-deflate-buckets-test-fix.patch b/gnu/packages/patches/serf-deflate-buckets-test-fix.patch
new file mode 100644
index 0000000000..be8be1b1e8
--- /dev/null
+++ b/gnu/packages/patches/serf-deflate-buckets-test-fix.patch
@@ -0,0 +1,69 @@
+r2445 | chemodax | 2014-10-23 12:15:22 -0400 (Thu, 23 Oct 2014) | 6 lines
+
+Reduce memory usage by deflate buckets test.
+
+* test/test_buckets.c
+  (deflate_buckets): Add POOL argument and use it instead of tb->pool.
+  (test_deflate_buckets): Use iterpool for deflate_buckets() call.
+
+Index: test/test_buckets.c
+===================================================================
+--- test/test_buckets.c	(revision 2444)
++++ test/test_buckets.c	(revision 2445)
+@@ -1400,12 +1400,12 @@
+                           expected_len);
+ }
+ 
+-static void deflate_buckets(CuTest *tc, int nr_of_loops)
++static void deflate_buckets(CuTest *tc, int nr_of_loops, apr_pool_t *pool)
+ {
+     const char *msg = "12345678901234567890123456789012345678901234567890";
+ 
+     test_baton_t *tb = tc->testBaton;
+-    serf_bucket_alloc_t *alloc = serf_bucket_allocator_create(tb->pool, NULL,
++    serf_bucket_alloc_t *alloc = serf_bucket_allocator_create(pool, NULL,
+                                                               NULL);
+     z_stream zdestr;
+     int i;
+@@ -1424,8 +1424,8 @@
+     {
+         serf_config_t *config;
+ 
+-        serf_context_t *ctx = serf_context_create(tb->pool);
+-        /* status = */ serf__config_store_get_config(ctx, NULL, &config, tb->pool);
++        serf_context_t *ctx = serf_context_create(pool);
++        /* status = */ serf__config_store_get_config(ctx, NULL, &config, pool);
+ 
+         serf_bucket_set_config(defbkt, config);
+     }
+@@ -1447,11 +1447,11 @@
+         if (i == nr_of_loops - 1) {
+             CuAssertIntEquals(tc, APR_SUCCESS,
+                               deflate_compress(&data, &len, &zdestr, msg,
+-                                               strlen(msg), 1, tb->pool));
++                                               strlen(msg), 1, pool));
+         } else {
+             CuAssertIntEquals(tc, APR_SUCCESS,
+                               deflate_compress(&data, &len, &zdestr, msg,
+-                                               strlen(msg), 0, tb->pool));
++                                               strlen(msg), 0, pool));
+         }
+ 
+         if (len == 0)
+@@ -1469,10 +1469,15 @@
+ static void test_deflate_buckets(CuTest *tc)
+ {
+     int i;
++    apr_pool_t *iterpool;
++    test_baton_t *tb = tc->testBaton;
+ 
++    apr_pool_create(&iterpool, tb->pool);
+     for (i = 1; i < 1000; i++) {
+-        deflate_buckets(tc, i);
++        apr_pool_clear(iterpool);
++        deflate_buckets(tc, i, iterpool);
+     }
++    apr_pool_destroy(iterpool);
+ }
+ 
+ static apr_status_t discard_data(serf_bucket_t *bkt,
diff --git a/gnu/packages/patches/subversion-sqlite-3.8.9-fix.patch b/gnu/packages/patches/subversion-sqlite-3.8.9-fix.patch
new file mode 100644
index 0000000000..92d8a85c8f
--- /dev/null
+++ b/gnu/packages/patches/subversion-sqlite-3.8.9-fix.patch
@@ -0,0 +1,59 @@
+This upstream patch (r1672295) is needed to fix a test failure when built
+against sqlite 3.8.9.  See:
+
+  https://mail-archives.apache.org/mod_mbox/subversion-dev/201504.mbox/%3C5526D197.6020808@gmx.de%3E
+
+
+r1672295 | rhuijben | 2015-04-09 07:31:12 -0400 (Thu, 09 Apr 2015) | 15 lines
+
+Optimize STMT_SELECT_EXTERNALS_DEFINED when using Sqlite 3.8.9, by
+adding two more rows to the sqlite_stat1 table.
+
+This fixes a test failure in wc-queries-test.c, but actual users most
+likely don't notice a difference as a tablescan on an EXTERNALS tables
+index is not that expensive, given that most working copies don't have
+many externals.
+
+* subversion/libsvn_wc/wc-metadata.sql
+  (STMT_INSTALL_SCHEMA_STATISTICS): Add two rows.
+
+* subversion/tests/libsvn_wc/wc-queries-test.c
+  (test_schema_statistics): Add a dummy externals row to allow
+    verifying schema.
+
+Index: subversion/tests/libsvn_wc/wc-queries-test.c
+===================================================================
+--- subversion/tests/libsvn_wc/wc-queries-test.c	(revision 1672294)
++++ subversion/tests/libsvn_wc/wc-queries-test.c	(revision 1672295)
+@@ -927,6 +927,15 @@
+                    "VALUES (1, '', '')",
+                    NULL, NULL, NULL));
+ 
++  SQLITE_ERR(
++      sqlite3_exec(sdb,
++                   "INSERT INTO EXTERNALS (wc_id, local_relpath,"
++                   "                       parent_relpath, repos_id,"
++                   "                       presence, kind, def_local_relpath,"
++                   "                       def_repos_relpath) "
++                   "VALUES (1, 'subdir', '', 1, 'normal', 'dir', '', '')",
++                   NULL, NULL, NULL));
++
+   /* These are currently not necessary for query optimization, but it's better
+      to tell Sqlite how we intend to use this table anyway */
+   SQLITE_ERR(
+Index: subversion/libsvn_wc/wc-metadata.sql
+===================================================================
+--- subversion/libsvn_wc/wc-metadata.sql	(revision 1672294)
++++ subversion/libsvn_wc/wc-metadata.sql	(revision 1672295)
+@@ -619,6 +619,11 @@
+ INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
+     ('WC_LOCK', 'sqlite_autoindex_WC_LOCK_1',           '100 100 1');
+ 
++INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
++    ('EXTERNALS','sqlite_autoindex_EXTERNALS_1',        '100 100 1');
++INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
++    ('EXTERNALS','I_EXTERNALS_DEFINED',                 '100 100 3 1');
++
+ /* sqlite_autoindex_WORK_QUEUE_1 doesn't exist because WORK_QUEUE is
+    a INTEGER PRIMARY KEY AUTOINCREMENT table */
+ 
diff --git a/gnu/packages/patches/tvtime-gcc41.patch b/gnu/packages/patches/tvtime-gcc41.patch
new file mode 100644
index 0000000000..d6e42721b8
--- /dev/null
+++ b/gnu/packages/patches/tvtime-gcc41.patch
@@ -0,0 +1,58 @@
+Source: https://projects.archlinux.org/svntogit/community.git/tree/trunk/tvtime-1.0.2-gcc41.patch?h=packages/tvtime
+
+--- tvtime-1.0.1/plugins/greedyh.asm	2005-08-14 18:16:43.000000000 +0200
++++ tvtime-1.0.1-gcc41/plugins/greedyh.asm	2005-11-28 17:53:09.210774544 +0100
+@@ -18,7 +18,7 @@
+ 
+ #include "x86-64_macros.inc"
+ 
+-void DScalerFilterGreedyH::FUNCT_NAME(TDeinterlaceInfo* pInfo)
++void FUNCT_NAME(TDeinterlaceInfo* pInfo)
+ {
+     int64_t i;
+     bool InfoIsOdd = (pInfo->PictureHistory[0]->Flags & PICTURE_INTERLACED_ODD) ? 1 : 0;
+diff -Naur tvtime-1.0.1/plugins/tomsmocomp/TomsMoCompAll2.inc tvtime-1.0.1-gcc41/plugins/tomsmocomp/TomsMoCompAll2.inc
+--- tvtime-1.0.1/plugins/tomsmocomp/TomsMoCompAll2.inc	2004-10-20 17:31:05.000000000 +0200
++++ tvtime-1.0.1-gcc41/plugins/tomsmocomp/TomsMoCompAll2.inc	2005-11-28 17:53:33.251119856 +0100
+@@ -5,9 +5,9 @@
+ #endif
+ 
+ #ifdef USE_STRANGE_BOB
+-#define SEARCH_EFFORT_FUNC(n) DScalerFilterTomsMoComp::SEFUNC(n##_SB)
++#define SEARCH_EFFORT_FUNC(n) SEFUNC(n##_SB)
+ #else
+-#define SEARCH_EFFORT_FUNC(n) DScalerFilterTomsMoComp::SEFUNC(n)
++#define SEARCH_EFFORT_FUNC(n) SEFUNC(n)
+ #endif
+ 
+ int SEARCH_EFFORT_FUNC(0)		// we don't try at all ;-)
+diff -Naur tvtime-1.0.1/plugins/tomsmocomp.cpp tvtime-1.0.1-gcc41/plugins/tomsmocomp.cpp
+--- tvtime-1.0.1/plugins/tomsmocomp.cpp	2004-10-20 19:38:04.000000000 +0200
++++ tvtime-1.0.1-gcc41/plugins/tomsmocomp.cpp	2005-11-28 17:52:53.862107896 +0100
+@@ -31,7 +31,7 @@
+ 
+ #define IS_MMX
+ #define SSE_TYPE MMX
+-#define FUNCT_NAME DScalerFilterTomsMoComp::filterDScaler_MMX
++#define FUNCT_NAME filterDScaler_MMX
+ #include "tomsmocomp/TomsMoCompAll.inc"
+ #undef  IS_MMX
+ #undef  SSE_TYPE
+@@ -39,7 +39,7 @@
+ 
+ #define IS_3DNOW
+ #define SSE_TYPE 3DNOW
+-#define FUNCT_NAME DScalerFilterTomsMoComp::filterDScaler_3DNOW
++#define FUNCT_NAME filterDScaler_3DNOW
+ #include "tomsmocomp/TomsMoCompAll.inc"
+ #undef  IS_3DNOW
+ #undef  SSE_TYPE
+@@ -47,7 +47,7 @@
+ 
+ #define IS_SSE
+ #define SSE_TYPE SSE
+-#define FUNCT_NAME DScalerFilterTomsMoComp::filterDScaler_SSE
++#define FUNCT_NAME filterDScaler_SSE
+ #include "tomsmocomp/TomsMoCompAll.inc"
+ #undef  IS_SSE
+ #undef  SSE_TYPE
diff --git a/gnu/packages/patches/tvtime-pngoutput.patch b/gnu/packages/patches/tvtime-pngoutput.patch
new file mode 100644
index 0000000000..0d14f77ca1
--- /dev/null
+++ b/gnu/packages/patches/tvtime-pngoutput.patch
@@ -0,0 +1,15 @@
+Source: https://sources.debian.net/src/tvtime/1.0.2-14/debian/patches/libpng.diff
+
+From: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Date: Mon, 14 May 2012 19:01:31 +0900
+Prepares the package for libpng 1.5.  Closes: #650582.
+
+--- tvtime-1.0.2.orig/src/pngoutput.c
++++ tvtime-1.0.2/src/pngoutput.c
+@@ -18,5 +18,6 @@
+ 
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <zlib.h>
+ #include <png.h>
+ #include "pngoutput.h" 
diff --git a/gnu/packages/patches/tvtime-videodev2.patch b/gnu/packages/patches/tvtime-videodev2.patch
new file mode 100644
index 0000000000..74131f25d0
--- /dev/null
+++ b/gnu/packages/patches/tvtime-videodev2.patch
@@ -0,0 +1,15 @@
+Fix compilation error: non-existing header file.
+
+This is an excerpt from the debian patch:
+http://http.debian.net/debian/pool/main/t/tvtime/tvtime_1.0.2-14.diff.gz
+
+--- tvtime-1.0.2.orig/src/videodev2.h
++++ tvtime-1.0.2/src/videodev2.h
+@@ -16,7 +16,6 @@
+ #ifdef __KERNEL__
+ #include <linux/time.h> /* need struct timeval */
+ #endif
+-#include <linux/compiler.h> /* need __user */
+ 
+ /* for kernel versions 2.4.26 and below: */
+ #ifndef __user
diff --git a/gnu/packages/patches/tvtime-xmltv.patch b/gnu/packages/patches/tvtime-xmltv.patch
new file mode 100644
index 0000000000..2f4afc6e5a
--- /dev/null
+++ b/gnu/packages/patches/tvtime-xmltv.patch
@@ -0,0 +1,28 @@
+Fix compilation error: conflicting types for 'locale_t'.
+
+This is an excerpt from the debian patch ... 
+http://http.debian.net/debian/pool/main/t/tvtime/tvtime_1.0.2-14.diff.gz
+
+--- tvtime-1.0.2.orig/src/xmltv.c
++++ tvtime-1.0.2/src/xmltv.c
+@@ -118,9 +118,9 @@
+ typedef struct {
+     const char *code;
+     const char *name;
+-} locale_t;
++} tvtime_locale_t;
+ 
+-static locale_t locale_table[] = {
++static tvtime_locale_t locale_table[] = {
+     {"AA", "Afar"},           {"AB", "Abkhazian"},      {"AF", "Afrikaans"},
+     {"AM", "Amharic"},        {"AR", "Arabic"},         {"AS", "Assamese"},
+     {"AY", "Aymara"},         {"AZ", "Azerbaijani"},    {"BA", "Bashkir"},
+@@ -168,7 +168,7 @@
+     {"XH", "Xhosa"},          {"YO", "Yoruba"},         {"ZH", "Chinese"},
+     {"ZU", "Zulu"} };
+ 
+-const int num_locales = sizeof( locale_table ) / sizeof( locale_t );
++const int num_locales = sizeof( locale_table ) / sizeof( tvtime_locale_t );
+ 
+ /**
+  * Timezone parsing code based loosely on the algorithm in
diff --git a/gnu/packages/patches/udev-gir-libtool.patch b/gnu/packages/patches/udev-gir-libtool.patch
deleted file mode 100644
index 7504f87eb8..0000000000
--- a/gnu/packages/patches/udev-gir-libtool.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Without this patch, 'ld' as invoked by 'g-ir-scanner' fails to find -lgudev-1.0
-This is because libtool puts it in $(top_builddir)/.libs.
-
-This patch forces 'g-ir-scanner' to use libtool, which enables it to find
-libgudev-1.0.la.
-
---- udev-182/Makefile.in	2014-06-22 14:55:07.000000000 +0200
-+++ udev-182/Makefile.in	2014-06-22 14:55:15.000000000 +0200
-@@ -3622,7 +3622,7 @@ test-sys-distclean:
- @ENABLE_GUDEV_TRUE@@ENABLE_INTROSPECTION_TRUE@		--namespace GUdev \
- @ENABLE_GUDEV_TRUE@@ENABLE_INTROSPECTION_TRUE@		--nsversion=1.0 \
- @ENABLE_GUDEV_TRUE@@ENABLE_INTROSPECTION_TRUE@		--include=GObject-2.0 \
--@ENABLE_GUDEV_TRUE@@ENABLE_INTROSPECTION_TRUE@		--library=gudev-1.0 \
-+@ENABLE_GUDEV_TRUE@@ENABLE_INTROSPECTION_TRUE@		--library=gudev-1.0 --libtool=$(top_builddir)/libtool \
- @ENABLE_GUDEV_TRUE@@ENABLE_INTROSPECTION_TRUE@		--library-path=$(top_builddir)/src \
- @ENABLE_GUDEV_TRUE@@ENABLE_INTROSPECTION_TRUE@		--library-path=$(top_builddir)/src/gudev \
- @ENABLE_GUDEV_TRUE@@ENABLE_INTROSPECTION_TRUE@		--output $@ \
diff --git a/gnu/packages/patches/wicd-template-instantiation.patch b/gnu/packages/patches/wicd-template-instantiation.patch
new file mode 100644
index 0000000000..16d8fa6e1d
--- /dev/null
+++ b/gnu/packages/patches/wicd-template-instantiation.patch
@@ -0,0 +1,29 @@
+Wicd 1.7.3 fails to instantiate template lines that have several
+variable references.  For instance, the line:
+
+  wep_key$_KEY_INDEX=$_KEY
+
+which is found in in the 'wep-hex' template, expands to these two
+lines:
+
+  wep_key0=$_KEY
+  wep_key0=123456789ab
+
+This patch fixes that by only emitting the fully substituted line.
+
+Patch by Ludovic Courtès <ludo@gnu.org>.
+
+--- a/wicd/misc.py	2012-11-17 00:07:08 +0000
++++ b/wicd/misc.py	2015-05-09 11:22:37 +0000
+@@ -321,11 +321,11 @@ def ParseEncryption(network):
+                                 rep_val = '0'
+                         if rep_val:
+                             line = line.replace("$_%s" % cur_val, str(rep_val))
+-                            config_file = ''.join([config_file, line])
+                         else:
+                             print "Ignoring template line: '%s'" % line
+                     else:
+                         print "Weird parsing error occurred"
++                config_file = ''.join([config_file, line])
+             else:  # Just a regular entry.
+                 config_file = ''.join([config_file, line])
diff --git a/gnu/packages/patches/wpa-supplicant-2015-2-fix.patch b/gnu/packages/patches/wpa-supplicant-2015-2-fix.patch
new file mode 100644
index 0000000000..cd097006d2
--- /dev/null
+++ b/gnu/packages/patches/wpa-supplicant-2015-2-fix.patch
@@ -0,0 +1,51 @@
+Patch copied from http://w1.fi/security/2015-2/
+
+From 5acd23f4581da58683f3cf5e36cb71bbe4070bd7 Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Tue, 28 Apr 2015 17:08:33 +0300
+Subject: [PATCH] WPS: Fix HTTP chunked transfer encoding parser
+
+strtoul() return value may end up overflowing the int h->chunk_size and
+resulting in a negative value to be stored as the chunk_size. This could
+result in the following memcpy operation using a very large length
+argument which would result in a buffer overflow and segmentation fault.
+
+This could have been used to cause a denial service by any device that
+has been authorized for network access (either wireless or wired). This
+would affect both the WPS UPnP functionality in a WPS AP (hostapd with
+upnp_iface parameter set in the configuration) and WPS ER
+(wpa_supplicant with WPS_ER_START control interface command used).
+
+Validate the parsed chunk length value to avoid this. In addition to
+rejecting negative values, we can also reject chunk size that would be
+larger than the maximum configured body length.
+
+Thanks to Kostya Kortchinsky of Google security team for discovering and
+reporting this issue.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ src/wps/httpread.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/src/wps/httpread.c b/src/wps/httpread.c
+index 2f08f37..d2855e3 100644
+--- a/src/wps/httpread.c
++++ b/src/wps/httpread.c
+@@ -533,6 +533,13 @@ static void httpread_read_handler(int sd, void *eloop_ctx, void *sock_ctx)
+ 					if (!isxdigit(*cbp))
+ 						goto bad;
+ 					h->chunk_size = strtoul(cbp, NULL, 16);
++					if (h->chunk_size < 0 ||
++					    h->chunk_size > h->max_bytes) {
++						wpa_printf(MSG_DEBUG,
++							   "httpread: Invalid chunk size %d",
++							   h->chunk_size);
++						goto bad;
++					}
+ 					/* throw away chunk header
+ 					 * so we have only real data
+ 					 */
+-- 
+1.9.1
+
diff --git a/gnu/packages/patches/wpa-supplicant-2015-3-fix.patch b/gnu/packages/patches/wpa-supplicant-2015-3-fix.patch
new file mode 100644
index 0000000000..de042f0c49
--- /dev/null
+++ b/gnu/packages/patches/wpa-supplicant-2015-3-fix.patch
@@ -0,0 +1,43 @@
+Patch copied from http://w1.fi/security/2015-3/
+
+From ef566a4d4f74022e1fdb0a2addfe81e6de9f4aae Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Wed, 29 Apr 2015 02:21:53 +0300
+Subject: [PATCH] AP WMM: Fix integer underflow in WMM Action frame parser
+
+The length of the WMM Action frame was not properly validated and the
+length of the information elements (int left) could end up being
+negative. This would result in reading significantly past the stack
+buffer while parsing the IEs in ieee802_11_parse_elems() and while doing
+so, resulting in segmentation fault.
+
+This can result in an invalid frame being used for a denial of service
+attack (hostapd process killed) against an AP with a driver that uses
+hostapd for management frame processing (e.g., all mac80211-based
+drivers).
+
+Thanks to Kostya Kortchinsky of Google security team for discovering and
+reporting this issue.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ src/ap/wmm.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/ap/wmm.c b/src/ap/wmm.c
+index 6d4177c..314e244 100644
+--- a/src/ap/wmm.c
++++ b/src/ap/wmm.c
+@@ -274,6 +274,9 @@ void hostapd_wmm_action(struct hostapd_data *hapd,
+ 		return;
+ 	}
+ 
++	if (left < 0)
++		return; /* not a valid WMM Action frame */
++
+ 	/* extract the tspec info element */
+ 	if (ieee802_11_parse_elems(pos, left, &elems, 1) == ParseFailed) {
+ 		hostapd_logger(hapd, mgmt->sa, HOSTAPD_MODULE_IEEE80211,
+-- 
+1.9.1
+
diff --git a/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt1.patch b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt1.patch
new file mode 100644
index 0000000000..7ebf5f4cc1
--- /dev/null
+++ b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt1.patch
@@ -0,0 +1,75 @@
+Patch copied from http://w1.fi/security/2015-4/
+
+From dd2f043c9c43d156494e33d7ce22db96e6ef42c7 Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Fri, 1 May 2015 16:37:45 +0300
+Subject: [PATCH 1/5] EAP-pwd peer: Fix payload length validation for Commit
+ and Confirm
+
+The length of the received Commit and Confirm message payloads was not
+checked before reading them. This could result in a buffer read
+overflow when processing an invalid message.
+
+Fix this by verifying that the payload is of expected length before
+processing it. In addition, enforce correct state transition sequence to
+make sure there is no unexpected behavior if receiving a Commit/Confirm
+message before the previous exchanges have been completed.
+
+Thanks to Kostya Kortchinsky of Google security team for discovering and
+reporting this issue.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ src/eap_peer/eap_pwd.c | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+
+diff --git a/src/eap_peer/eap_pwd.c b/src/eap_peer/eap_pwd.c
+index f2b0926..a629437 100644
+--- a/src/eap_peer/eap_pwd.c
++++ b/src/eap_peer/eap_pwd.c
+@@ -355,6 +355,23 @@ eap_pwd_perform_commit_exchange(struct eap_sm *sm, struct eap_pwd_data *data,
+ 	BIGNUM *mask = NULL, *x = NULL, *y = NULL, *cofactor = NULL;
+ 	u16 offset;
+ 	u8 *ptr, *scalar = NULL, *element = NULL;
++	size_t prime_len, order_len;
++
++	if (data->state != PWD_Commit_Req) {
++		ret->ignore = TRUE;
++		goto fin;
++	}
++
++	prime_len = BN_num_bytes(data->grp->prime);
++	order_len = BN_num_bytes(data->grp->order);
++
++	if (payload_len != 2 * prime_len + order_len) {
++		wpa_printf(MSG_INFO,
++			   "EAP-pwd: Unexpected Commit payload length %u (expected %u)",
++			   (unsigned int) payload_len,
++			   (unsigned int) (2 * prime_len + order_len));
++		goto fin;
++	}
+ 
+ 	if (((data->private_value = BN_new()) == NULL) ||
+ 	    ((data->my_element = EC_POINT_new(data->grp->group)) == NULL) ||
+@@ -554,6 +571,18 @@ eap_pwd_perform_confirm_exchange(struct eap_sm *sm, struct eap_pwd_data *data,
+ 	u8 conf[SHA256_MAC_LEN], *cruft = NULL, *ptr;
+ 	int offset;
+ 
++	if (data->state != PWD_Confirm_Req) {
++		ret->ignore = TRUE;
++		goto fin;
++	}
++
++	if (payload_len != SHA256_MAC_LEN) {
++		wpa_printf(MSG_INFO,
++			   "EAP-pwd: Unexpected Confirm payload length %u (expected %u)",
++			   (unsigned int) payload_len, SHA256_MAC_LEN);
++		goto fin;
++	}
++
+ 	/*
+ 	 * first build up the ciphersuite which is group | random_function |
+ 	 *	prf
+-- 
+1.9.1
+
diff --git a/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt2.patch b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt2.patch
new file mode 100644
index 0000000000..c11e4175d9
--- /dev/null
+++ b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt2.patch
@@ -0,0 +1,68 @@
+Patch copied from http://w1.fi/security/2015-4/
+
+From e28a58be26184c2a23f80b410e0997ef1bd5d578 Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Fri, 1 May 2015 16:40:44 +0300
+Subject: [PATCH 2/5] EAP-pwd server: Fix payload length validation for Commit
+ and Confirm
+
+The length of the received Commit and Confirm message payloads was not
+checked before reading them. This could result in a buffer read
+overflow when processing an invalid message.
+
+Fix this by verifying that the payload is of expected length before
+processing it. In addition, enforce correct state transition sequence to
+make sure there is no unexpected behavior if receiving a Commit/Confirm
+message before the previous exchanges have been completed.
+
+Thanks to Kostya Kortchinsky of Google security team for discovering and
+reporting this issue.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ src/eap_server/eap_server_pwd.c | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+diff --git a/src/eap_server/eap_server_pwd.c b/src/eap_server/eap_server_pwd.c
+index 66bd5d2..3189105 100644
+--- a/src/eap_server/eap_server_pwd.c
++++ b/src/eap_server/eap_server_pwd.c
+@@ -656,9 +656,21 @@ eap_pwd_process_commit_resp(struct eap_sm *sm, struct eap_pwd_data *data,
+ 	BIGNUM *x = NULL, *y = NULL, *cofactor = NULL;
+ 	EC_POINT *K = NULL, *point = NULL;
+ 	int res = 0;
++	size_t prime_len, order_len;
+ 
+ 	wpa_printf(MSG_DEBUG, "EAP-pwd: Received commit response");
+ 
++	prime_len = BN_num_bytes(data->grp->prime);
++	order_len = BN_num_bytes(data->grp->order);
++
++	if (payload_len != 2 * prime_len + order_len) {
++		wpa_printf(MSG_INFO,
++			   "EAP-pwd: Unexpected Commit payload length %u (expected %u)",
++			   (unsigned int) payload_len,
++			   (unsigned int) (2 * prime_len + order_len));
++		goto fin;
++	}
++
+ 	if (((data->peer_scalar = BN_new()) == NULL) ||
+ 	    ((data->k = BN_new()) == NULL) ||
+ 	    ((cofactor = BN_new()) == NULL) ||
+@@ -774,6 +786,13 @@ eap_pwd_process_confirm_resp(struct eap_sm *sm, struct eap_pwd_data *data,
+ 	u8 conf[SHA256_MAC_LEN], *cruft = NULL, *ptr;
+ 	int offset;
+ 
++	if (payload_len != SHA256_MAC_LEN) {
++		wpa_printf(MSG_INFO,
++			   "EAP-pwd: Unexpected Confirm payload length %u (expected %u)",
++			   (unsigned int) payload_len, SHA256_MAC_LEN);
++		goto fin;
++	}
++
+ 	/* build up the ciphersuite: group | random_function | prf */
+ 	grp = htons(data->group_num);
+ 	ptr = (u8 *) &cs;
+-- 
+1.9.1
+
diff --git a/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt3.patch b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt3.patch
new file mode 100644
index 0000000000..963dac9270
--- /dev/null
+++ b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt3.patch
@@ -0,0 +1,54 @@
+Patch copied from http://w1.fi/security/2015-4/
+
+From 477c74395acd0123340457ba6f15ab345d42016e Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Sat, 2 May 2015 19:23:04 +0300
+Subject: [PATCH 3/5] EAP-pwd peer: Fix Total-Length parsing for fragment
+ reassembly
+
+The remaining number of bytes in the message could be smaller than the
+Total-Length field size, so the length needs to be explicitly checked
+prior to reading the field and decrementing the len variable. This could
+have resulted in the remaining length becoming negative and interpreted
+as a huge positive integer.
+
+In addition, check that there is no already started fragment in progress
+before allocating a new buffer for reassembling fragments. This avoid a
+potential memory leak when processing invalid message.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ src/eap_peer/eap_pwd.c | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/src/eap_peer/eap_pwd.c b/src/eap_peer/eap_pwd.c
+index a629437..1d2079b 100644
+--- a/src/eap_peer/eap_pwd.c
++++ b/src/eap_peer/eap_pwd.c
+@@ -866,11 +866,23 @@ eap_pwd_process(struct eap_sm *sm, void *priv, struct eap_method_ret *ret,
+ 	 * if it's the first fragment there'll be a length field
+ 	 */
+ 	if (EAP_PWD_GET_LENGTH_BIT(lm_exch)) {
++		if (len < 2) {
++			wpa_printf(MSG_DEBUG,
++				   "EAP-pwd: Frame too short to contain Total-Length field");
++			ret->ignore = TRUE;
++			return NULL;
++		}
+ 		tot_len = WPA_GET_BE16(pos);
+ 		wpa_printf(MSG_DEBUG, "EAP-pwd: Incoming fragments whose "
+ 			   "total length = %d", tot_len);
+ 		if (tot_len > 15000)
+ 			return NULL;
++		if (data->inbuf) {
++			wpa_printf(MSG_DEBUG,
++				   "EAP-pwd: Unexpected new fragment start when previous fragment is still in use");
++			ret->ignore = TRUE;
++			return NULL;
++		}
+ 		data->inbuf = wpabuf_alloc(tot_len);
+ 		if (data->inbuf == NULL) {
+ 			wpa_printf(MSG_INFO, "Out of memory to buffer "
+-- 
+1.9.1
+
diff --git a/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt4.patch b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt4.patch
new file mode 100644
index 0000000000..3d945382bc
--- /dev/null
+++ b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt4.patch
@@ -0,0 +1,52 @@
+Patch copied from http://w1.fi/security/2015-4/
+
+From 3035cc2894e08319b905bd6561e8bddc8c2db9fa Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Sat, 2 May 2015 19:26:06 +0300
+Subject: [PATCH 4/5] EAP-pwd server: Fix Total-Length parsing for fragment
+ reassembly
+
+The remaining number of bytes in the message could be smaller than the
+Total-Length field size, so the length needs to be explicitly checked
+prior to reading the field and decrementing the len variable. This could
+have resulted in the remaining length becoming negative and interpreted
+as a huge positive integer.
+
+In addition, check that there is no already started fragment in progress
+before allocating a new buffer for reassembling fragments. This avoid a
+potential memory leak when processing invalid message.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ src/eap_server/eap_server_pwd.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/src/eap_server/eap_server_pwd.c b/src/eap_server/eap_server_pwd.c
+index 3189105..2bfc3c2 100644
+--- a/src/eap_server/eap_server_pwd.c
++++ b/src/eap_server/eap_server_pwd.c
+@@ -942,11 +942,21 @@ static void eap_pwd_process(struct eap_sm *sm, void *priv,
+ 	 * the first fragment has a total length
+ 	 */
+ 	if (EAP_PWD_GET_LENGTH_BIT(lm_exch)) {
++		if (len < 2) {
++			wpa_printf(MSG_DEBUG,
++				   "EAP-pwd: Frame too short to contain Total-Length field");
++			return;
++		}
+ 		tot_len = WPA_GET_BE16(pos);
+ 		wpa_printf(MSG_DEBUG, "EAP-pwd: Incoming fragments, total "
+ 			   "length = %d", tot_len);
+ 		if (tot_len > 15000)
+ 			return;
++		if (data->inbuf) {
++			wpa_printf(MSG_DEBUG,
++				   "EAP-pwd: Unexpected new fragment start when previous fragment is still in use");
++			return;
++		}
+ 		data->inbuf = wpabuf_alloc(tot_len);
+ 		if (data->inbuf == NULL) {
+ 			wpa_printf(MSG_INFO, "EAP-pwd: Out of memory to "
+-- 
+1.9.1
+
diff --git a/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt5.patch b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt5.patch
new file mode 100644
index 0000000000..30f71974ad
--- /dev/null
+++ b/gnu/packages/patches/wpa-supplicant-2015-4-fix-pt5.patch
@@ -0,0 +1,34 @@
+Patch copied from http://w1.fi/security/2015-4/
+
+From 28a069a545b06b99eb55ad53f63f2c99e65a98f6 Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Sat, 2 May 2015 19:26:28 +0300
+Subject: [PATCH 5/5] EAP-pwd peer: Fix asymmetric fragmentation behavior
+
+The L (Length) and M (More) flags needs to be cleared before deciding
+whether the locally generated response requires fragmentation. This
+fixes an issue where these flags from the server could have been invalid
+for the following message. In some cases, this could have resulted in
+triggering the wpabuf security check that would terminate the process
+due to invalid buffer allocation.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ src/eap_peer/eap_pwd.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/eap_peer/eap_pwd.c b/src/eap_peer/eap_pwd.c
+index 1d2079b..e58b13a 100644
+--- a/src/eap_peer/eap_pwd.c
++++ b/src/eap_peer/eap_pwd.c
+@@ -968,6 +968,7 @@ eap_pwd_process(struct eap_sm *sm, void *priv, struct eap_method_ret *ret,
+ 	/*
+ 	 * we have output! Do we need to fragment it?
+ 	 */
++	lm_exch = EAP_PWD_GET_EXCHANGE(lm_exch);
+ 	len = wpabuf_len(data->outbuf);
+ 	if ((len + EAP_PWD_HDR_SIZE) > data->mtu) {
+ 		resp = eap_msg_alloc(EAP_VENDOR_IETF, EAP_TYPE_PWD, data->mtu,
+-- 
+1.9.1
+
diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm
index 3181ba7592..86d3ca3874 100644
--- a/gnu/packages/pcre.scm
+++ b/gnu/packages/pcre.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,14 +28,14 @@
 (define-public pcre
   (package
    (name "pcre")
-   (version "8.36")
+   (version "8.37")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://sourceforge/pcre/pcre/"
                                 version "/pcre-" version ".tar.bz2"))
             (sha256
              (base32
-              "1fs5p1z67m9f4xnyil3s4lhgyld78f7m4d1yawpyhh0cvrbk90zg"))))
+              "17bqykp604p7376wj3q2nmjdhrb6v1ny8q08zdwi7qvc02l9wrsi"))))
    (build-system gnu-build-system)
    (inputs `(("bzip2" ,bzip2)
              ("readline" ,readline)
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index bca577eb35..7023b9aa65 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -282,7 +282,7 @@ by using the poppler rendering engine.")
 (define-public zathura
   (package
     (name "zathura")
-    (version "0.3.2")
+    (version "0.3.3")
     (source (origin
               (method url-fetch)
               (uri
@@ -290,7 +290,7 @@ by using the poppler rendering engine.")
                               version ".tar.gz"))
               (sha256
                (base32
-                "1qk5s7cyqp4l673yhma5igk9g24p5jyqyy81fdk7q7xjqlym19px"))
+                "1rywx09qn6ap5hb1z31wxby4lzdrqdbldm51pjk1ifflr37xwirk"))
               (patches
                (list
                 (search-patch "zathura-plugindir-environment-variable.patch")))))
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 09e57578d8..45ca94b279 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -1129,6 +1129,30 @@ on one page.  This results in wanting to page through various pages of data.
 The maths behind this is unfortunately fiddly, hence this module.")
     (license (package-license perl))))
 
+(define-public perl-data-stag
+  (package
+    (name "perl-data-stag")
+    (version "0.14")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/C/CM/CMUNGALL/"
+                           "Data-Stag-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0ncf4l39ka23nb01jlm6rzxdb5pqbip01x0m38bnvf1gim825caa"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-io-string" ,perl-io-string)))
+    (home-page "http://search.cpan.org/dist/Data-Stag")
+    (synopsis "Structured tags datastructures")
+    (description
+     "This module is for manipulating data as hierarchical tag/value
+pairs (Structured TAGs or Simple Tree AGgreggates).  These datastructures can
+be represented as nested arrays, which have the advantage of being native to
+Perl.")
+    (license (package-license perl))))
+
 (define-public perl-data-stream-bulk
   (package
     (name "perl-data-stream-bulk")
@@ -2442,6 +2466,25 @@ easier to develop interactive applications: is_interactive(), interactive(),
 and busy()")
     (license (package-license perl))))
 
+(define-public perl-io-string
+  (package
+    (name "perl-io-string")
+    (version "1.08")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/G/GA/GAAS/"
+                           "IO-String-" version ".tar.gz"))
+       (sha256
+        (base32
+         "18755m410yl70s17rgq3m0hyxl8r5mr47vsq1rw7141d8kc4lgra"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/~gaas/IO-String-1.08/")
+    (synopsis "Emulate file interface for in-core strings")
+    (description "IO::String is an IO::File (and IO::Handle) compatible class
+that reads or writes data from in-core strings.")
+    (license (package-license perl))))
+
 (define-public perl-io-stringy
   (package
     (name "perl-io-stringy")
@@ -2583,7 +2626,7 @@ versa using either JSON::XS or JSON::PP.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirros://cpan/authors/id/E/ET/ETHER/"
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                            "JSON-Any-" version ".tar.gz"))
        (sha256
         (base32
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 29b47f357c..914c2dc23c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -26,7 +26,7 @@
 
 (define-module (gnu packages python)
   #:use-module ((guix licenses)
-                #:select (asl2.0 bsd-3 bsd-2 non-copyleft cc0 x11 x11-style
+                #:select (asl2.0 bsd-4 bsd-3 bsd-2 non-copyleft cc0 x11 x11-style
                           gpl2 gpl2+ gpl3+ lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3+
                           psfl public-domain x11-style))
   #:use-module ((guix licenses) #:select (expat zlib) #:prefix license:)
@@ -45,6 +45,7 @@
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages networking)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages openssl)
   #:use-module (gnu packages perl)
@@ -628,6 +629,44 @@ datetime module, available in Python 2.3+.")
      "Parse human-readable date/time text")
     (license asl2.0)))
 
+(define-public python-pandas
+  (package
+    (name "python-pandas")
+    (version "0.16.0")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "https://pypi.python.org/packages/source/p/"
+                          "pandas/pandas-" version ".tar.gz"))
+      (sha256
+       (base32 "1wfrp8dx1zcsry6f09ndza6qm1yr7f163211f4l9vjlnhxpxw4s0"))))
+    (build-system python-build-system)
+    (arguments
+     `(;; Three tests fail:
+       ;; - test_read_google
+       ;; - test_read_yahoo
+       ;; - test_month_range_union_tz_dateutil
+       #:tests? #f))
+    (propagated-inputs
+     `(("python-numpy" ,python-numpy)
+       ("python-pytz" ,python-pytz)
+       ("python-dateutil" ,python-dateutil-2)))
+    (native-inputs
+     `(("python-nose" ,python-nose)
+       ("python-setuptools" ,python-setuptools)))
+    (home-page "http://pandas.pydata.org")
+    (synopsis "Data structures for data analysis, time series, and statistics")
+    (description
+     "Pandas is a Python package providing fast, flexible, and expressive data
+structures designed to make working with structured (tabular,
+multidimensional, potentially heterogeneous) and time series data both easy
+and intuitive.  It aims to be the fundamental high-level building block for
+doing practical, real world data analysis in Python.")
+    (license bsd-3)))
+
+(define-public python2-pandas
+  (package-with-python2 python-pandas))
+
 (define-public python-tzlocal
   (package
     (name "python-tzlocal")
@@ -1023,14 +1062,14 @@ syntax.")
 (define-public scons
   (package
     (name "scons")
-    (version "2.1.0")
+    (version "2.3.4")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://sourceforge/scons/scons-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "07cjn4afb2cljjrd3cr7xf062qq58z8q96f58z6yplhdyqafsfa1"))))
+               "0hdlci43wjz8maryj83mz04ir6rwcdrrzpd7cpzvdlzycqhdfmsb"))))
     (build-system python-build-system)
     (arguments
      ;; With Python 3.x, fails to build with a syntax error.
@@ -1598,6 +1637,33 @@ is used by the Requests library to verify HTTPS requests.")
 (define-public python2-certifi
   (package-with-python2 python-certifi))
 
+(define-public python-click
+  (package
+    (name "python-click")
+    (version "4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://pypi.python.org/packages/source/c/click/click-"
+             version ".tar.gz"))
+       (sha256
+        (base32 "0294x9g28w6zgswl0rsygkwi0wf6n480gf7fiiw5f9az3xhh77pl"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-setuptools" ,python-setuptools)))
+    (home-page "http://click.pocoo.org")
+    (synopsis "Command line library for Python")
+    (description
+     "Click is a Python package for creating command line interfaces in a
+composable way with as little code as necessary.  Its name stands for
+\"Command Line Interface Creation Kit\".  It's highly configurable but comes
+with sensible defaults out of the box.")
+    (license bsd-3)))
+
+(define-public python2-click
+  (package-with-python2 python-click))
+
 (define-public python-requests
   (package
     (name "python-requests")
@@ -2065,6 +2131,101 @@ mining and data analysis.")
             (alist-delete
              "python-scipy" (package-propagated-inputs scikit))))))))
 
+(define-public python-scikit-image
+  (package
+    (name "python-scikit-image")
+    (version "0.11.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://pypi.python.org/packages/source/s/scikit-image/scikit-image-"
+             version ".tar.gz"))
+       (sha256
+        (base32 "0jz416fqvpahqyffw8plmszzfj669w8wvf3y9clnr5lr6a7md3kn"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-matplotlib" ,python-matplotlib)
+       ("python-networkx" ,python-networkx)
+       ("python-numpy" ,python-numpy)
+       ("python-scipy" ,python-scipy)
+       ("python-six" ,python-six)
+       ("python-pillow" ,python-pillow)))
+    (native-inputs
+     `(("python-cython" ,python-cython)
+       ("python-setuptools" ,python-setuptools)))
+    (home-page "http://scikit-image.org/")
+    (synopsis "Image processing in Python")
+    (description
+     "scikit-image is a collection of algorithms for image processing.")
+    (license bsd-3)))
+
+(define-public python2-scikit-image
+  (let ((scikit-image (package-with-python2 python-scikit-image)))
+    (package (inherit scikit-image)
+      (native-inputs
+       `(("python2-mock" ,python2-mock)
+         ,@(package-native-inputs scikit-image)))
+      (propagated-inputs
+       `(("python2-pytz" ,python2-pytz)
+         ,@(package-propagated-inputs scikit-image))))))
+
+(define-public python-redis
+  (package
+    (name "python-redis")
+    (version "2.10.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://pypi.python.org/packages/source/r/redis/redis-"
+             version ".tar.gz"))
+       (sha256
+        (base32 "1701qjwn4n05q90fdg4bsg96s27xf5s4hsb4gxhv3xk052q3gyx4"))))
+    (build-system python-build-system)
+    ;; Tests require a running Redis server
+    (arguments '(#:tests? #f))
+    (native-inputs
+     `(("python-setuptools" ,python-setuptools)
+       ("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/andymccurdy/redis-py")
+    (synopsis "Redis Python client")
+    (description
+     "This package provides a Python interface to the Redis key-value store.")
+    (license license:expat)))
+
+(define-public python2-redis
+  (package-with-python2 python-redis))
+
+(define-public python-rq
+  (package
+    (name "python-rq")
+    (version "0.5.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://pypi.python.org/packages/source/r/rq/rq-"
+             version ".tar.gz"))
+       (sha256
+        (base32 "0b0z5hn8wkfg300hx7816csgv3bcfamlr29fi3yzgqmpqxwj3fix"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-click" ,python-click)
+       ("python-redis" ,python-redis)))
+    (native-inputs
+     `(("python-setuptools" ,python-setuptools)))
+    (home-page "http://python-rq.org/")
+    (synopsis "Simple job queues for Python")
+    (description
+     "RQ (Redis Queue) is a simple Python library for queueing jobs and
+processing them in the background with workers.  It is backed by Redis and it
+is designed to have a low barrier to entry.")
+    (license bsd-2)))
+
+(define-public python2-rq
+  (package-with-python2 python-rq))
+
 (define-public python-cython
   (package
     (name "python-cython")
@@ -2122,7 +2283,7 @@ writing C extensions for Python as easy as Python itself.")
     (build-system python-build-system)
     (inputs
      `(("python-nose" ,python-nose)
-       ("atlas" ,atlas)))
+       ("openblas" ,openblas)))
     (native-inputs
      `(("gfortran" ,gfortran-4.8)))
     (arguments
@@ -2130,16 +2291,18 @@ writing C extensions for Python as easy as Python itself.")
        (alist-cons-before
         'build 'set-environment-variables
         (lambda* (#:key inputs #:allow-other-keys)
-          (let* ((atlas-threaded
-                  (string-append (assoc-ref inputs "atlas")
-                                 "/lib/libtatlas.so"))
-                 ;; On single core CPUs only the serial library is created.
-                 (atlas-lib
-                  (if (file-exists? atlas-threaded)
-                      atlas-threaded
-                      (string-append (assoc-ref inputs "atlas")
-                                     "/lib/libsatlas.so"))))
-            (setenv "ATLAS" atlas-lib)))
+          (call-with-output-file "site.cfg"
+            (lambda (port)
+              (format port "[openblas]
+libraries = openblas
+library_dirs = ~a/lib
+include_dirs = ~a/include
+" (assoc-ref inputs "openblas") (assoc-ref inputs "openblas"))))
+          ;; Use "gcc" executable, not "cc".
+          (substitute* "numpy/distutils/system_info.py"
+            (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
+             "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')"))
+          #t)
         ;; Tests can only be run after the library has been installed and not
         ;; within the source directory.
         (alist-cons-after
@@ -2627,7 +2790,7 @@ services for your Python modules and applications.")
 (define-public python-pillow
   (package
     (name "python-pillow")
-    (version "2.6.1")
+    (version "2.8.1")
     (source
      (origin
        (method url-fetch)
@@ -2635,17 +2798,19 @@ services for your Python modules and applications.")
                            "Pillow/Pillow-" version ".tar.gz"))
        (sha256
         (base32
-         "0iw36c73wkhz88wa78v6l43llsb080ihw8yq7adhfqxdib7l4hzr"))))
+         "15n92axxph2s3kvg68bki9gv3nzwgq7130kp7wbblpi1l0cc2q47"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-setuptools" ,python-setuptools)
        ("python-nose"       ,python-nose)))
     (inputs
-     `(("lcms"     ,lcms)
+     `(("freetype" ,freetype)
+       ("lcms"     ,lcms)
        ("zlib"     ,zlib)
        ("libjpeg"  ,libjpeg)
        ("openjpeg" ,openjpeg)
-       ("libtiff"  ,libtiff)))
+       ("libtiff"  ,libtiff)
+       ("libwebp"  ,libwebp)))
     (propagated-inputs
      `(;; Used at runtime for pkg_resources
        ("python-setuptools" ,python-setuptools)))
@@ -3113,9 +3278,7 @@ features useful for text console applications.")
      `(("pkg-config" ,pkg-config)))
     (inputs
      `(("python" ,python)
-       ("dbus" ,dbus)
-       ("dbus-glib" ,dbus-glib)
-       ("glib" ,glib)))
+       ("dbus-glib" ,dbus-glib)))
     (synopsis "Python bindings for D-bus")
     (description "python-dbus provides bindings for libdbus, the reference
 implementation of D-Bus.")
@@ -3201,43 +3364,6 @@ libxml2 and libxslt.")
 (define-public python2-lxml
   (package-with-python2 python-lxml))
 
-(define-public python-pillow
-  (package
-    (name "python-pillow")
-    (version "2.7.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append
-              "https://pypi.python.org/packages/source/P/Pillow/Pillow-"
-              version
-              ".tar.gz"))
-        (sha256
-          (base32
-            "1y0rysgd7vqpl5lh0lsra7j2k30azwxqlh5jnqk1i0pmfc735s96"))))
-    (build-system python-build-system)
-    (inputs
-      `(("freetype" ,freetype)
-        ("lcms" ,lcms)
-        ("libjpeg" ,libjpeg)
-        ("libtiff" ,libtiff)
-        ("openjpeg" ,openjpeg)
-        ("python-setuptools" ,python-setuptools)
-        ("zlib" ,zlib)))
-    (arguments
-     `(#:tests? #f)) ; no check target
-    (home-page "http://python-pillow.github.io/")
-    (synopsis "Pillow fork of Python Imaging Library")
-    (description "Pillow is a fork of the Python Imaging Library (PIL).")
-    ;; PIL license, see
-    ;; http://www.pythonware.com/products/pil/license.htm
-    (license (x11-style
-               "file://PKG-INFO"
-               "See http://www.pythonware.com/products/pil/license.htm"))))
-
-(define-public python2-pillow
-  (package-with-python2 python-pillow))
-
 (define-public python2-pil
   (package
     (name "python2-pil")
@@ -3446,6 +3572,67 @@ providing a clean and modern domain specific specification language (DSL) in
 Python style, together with a fast and comfortable execution environment.")
     (license license:expat)))
 
+(define-public python-seaborn
+  (package
+    (name "python-seaborn")
+    (version "0.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://pypi.python.org/packages/source/s/seaborn/seaborn-"
+             version ".tar.gz"))
+       (sha256
+        (base32 "1236abw18ijjglmv60q85ckqrvgf5qyy4zlq7nz5aqfg6q87z3wc"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-pandas" ,python-pandas)
+       ("python-matplotlib" ,python-matplotlib)
+       ("python-scipy" ,python-scipy)))
+    (native-inputs
+     `(("python-setuptools" ,python-setuptools)))
+    (home-page "http://stanford.edu/~mwaskom/software/seaborn/")
+    (synopsis "Statistical data visualization")
+    (description
+     "Seaborn is a library for making attractive and informative statistical
+graphics in Python.  It is built on top of matplotlib and tightly integrated
+with the PyData stack, including support for numpy and pandas data structures
+and statistical routines from scipy and statsmodels.")
+    (license bsd-3)))
+
+(define-public python2-seaborn
+  (let ((seaborn (package-with-python2 python-seaborn)))
+    (package (inherit seaborn)
+      (propagated-inputs
+       `(("python2-pytz" ,python2-pytz)
+         ,@(package-propagated-inputs seaborn))))))
+
+(define-public python-sympy
+  (package
+    (name "python-sympy")
+    (version "0.7.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/sympy/sympy/releases/download/sympy-"
+             version "/sympy-" version ".tar.gz"))
+       (sha256
+        (base32 "19yp0gy4i7p4g6l3b8vaqkj9qj7yqb5kqy0qgbdagpzgkdz958yz"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-setuptools" ,python-setuptools)))
+    (home-page "http://www.sympy.org/")
+    (synopsis "Python library for symbolic mathematics")
+    (description
+     "SymPy is a Python library for symbolic mathematics.  It aims to become a
+full-featured computer algebra system (CAS) while keeping the code as simple
+as possible in order to be comprehensible and easily extensible.")
+    (license bsd-3)))
+
+(define-public python2-sympy
+  (package-with-python2 python-sympy))
+
 (define-public python-testlib
   (package
     (name "python-testlib")
@@ -3606,3 +3793,37 @@ applications.")
 
 (define-public python2-waf
   (package-with-python2 python-waf))
+
+(define-public python-pyzmq
+  (package
+    (name "python-pyzmq")
+    (version "14.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://pypi.python.org/packages/source/p/pyzmq/pyzmq-"
+             version ".tar.gz"))
+       (sha256
+        (base32 "1frmbjykvhmdg64g7sn20c9fpamrsfxwci1nhhg8q7jgz5pq0ikp"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq")))
+       ;; FIXME: You must build pyzmq with 'python setup.py build_ext
+       ;; --inplace' for 'python setup.py test' to work.
+       #:tests? #f))
+    (inputs
+     `(("zeromq" ,zeromq)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("python-nose" ,python-nose)
+       ("python-setuptools" ,python-setuptools)))
+    (home-page "http://github.com/zeromq/pyzmq")
+    (synopsis "Python bindings for 0MQ")
+    (description
+     "PyZMQ is the official Python binding for the ZeroMQ messaging library.")
+    (license bsd-4)))
+
+(define-public python2-pyzmq
+  (package-with-python2 python-pyzmq))
diff --git a/gnu/packages/qemu.scm b/gnu/packages/qemu.scm
index 77aeecf40c..27a2d2e8ba 100644
--- a/gnu/packages/qemu.scm
+++ b/gnu/packages/qemu.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,6 +34,7 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages attr)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages libusb)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages sdl)
@@ -42,14 +44,16 @@
   ;; This is QEMU without GUI support.
   (package
     (name "qemu-headless")
-    (version "2.2.0")
+    (version "2.3.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "http://wiki.qemu-project.org/download/qemu-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "1703c3scl5n07gmpilg7g2xzyxnr7jczxgx6nn4m8kv9gin9p35n"))))
+               "120m53c3p28qxmfzllicjzr8syjv6v4d9rsyrgkp7gnmcgvvgfmn"))
+             (patches (map search-patch '("qemu-CVE-2015-3209.patch"
+                                          "qemu-CVE-2015-3456.patch")))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (alist-replace
@@ -137,4 +141,5 @@ server and embedded PowerPC, and S390 guests.")
     (synopsis "Machine emulator and virtualizer")
     (inputs `(("sdl" ,sdl)
               ("mesa" ,mesa)
+              ("libusb" ,libusb)                  ;USB pass-through support
               ,@(package-inputs qemu-headless)))))
diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm
index f26b021e50..cee7f42398 100644
--- a/gnu/packages/rdf.scm
+++ b/gnu/packages/rdf.scm
@@ -221,9 +221,10 @@ Turtle/N3 and read them in SPARQL XML, RDF/XML and Turtle/N3.")
     (native-inputs
      `(("perl" ,perl) ; needed for installation
        ("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     `(("rasqal" ,rasqal))) ; in Requires.private field of .pc
     (inputs
-     `(("bdb" ,bdb)
-       ("rasqal" ,rasqal)))
+     `(("bdb" ,bdb)))
     (home-page "http://librdf.org/")
     (synopsis "RDF library")
     (description "The Redland RDF Library (librdf) provides the RDF API
@@ -317,7 +318,6 @@ ideal (e.g. in LV2 implementations or embedded applications).")
     (inputs
      `(("clucene" ,clucene)
        ("qt" ,qt-4)
-       ("rasqal" ,rasqal)
        ("redland" ,redland)))
     (home-page "http://soprano.sourceforge.net/")
     (synopsis "RDF data library for Qt")
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 42fcc93017..9943de7e0b 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -167,3 +167,200 @@ translation data, custom key/scope separator, custom exception handlers, and
 an extensible architecture with a swappable backend.")
     (home-page "http://github.com/svenfuchs/i18n")
     (license license:expat)))
+
+;; RSpec is the dominant testing library for Ruby projects.  Even RSpec's
+;; dependencies use RSpec for their test suites!  To avoid these circular
+;; dependencies, we disable tests for all of the RSpec-related packages.
+(define ruby-rspec-support
+  (package
+    (name "ruby-rspec-support")
+    (version "3.2.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/rspec/rspec-support/archive/v"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1pvzfrqgy0z0gwmdgjp9f2vz1d9c0cajyzfqj9z8i2ssxnzmj4bv"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:tests? #f)) ; avoid dependency cycles
+    (synopsis "RSpec support library")
+    (description "Support utilities for RSpec gems.")
+    (home-page "https://github.com/rspec/rspec-support")
+    (license license:expat)))
+
+(define-public ruby-rspec-core
+  (package
+    (name "ruby-rspec-core")
+    (version "3.2.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/rspec/rspec-core/archive/v"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1clsa4lkh5c9c7xc3xa336ym00ycr67pchpg1bv4y3fz5hvzw8ki"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:tests? #f)) ; avoid dependency cycles
+    (propagated-inputs
+     `(("ruby-rspec-support" ,ruby-rspec-support)))
+    (synopsis "RSpec core library")
+    (description "Rspec-core provides the RSpec test runner and example
+groups.")
+    (home-page "https://github.com/rspec/rspec-core")
+    (license license:expat)))
+
+(define ruby-diff-lcs-for-rspec
+  (package
+    (name "ruby-diff-lcs")
+    (version "1.2.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/halostatue/diff-lcs/archive/v"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0kmfz2qdwbfjf97rx27hh9fm39mv3z9avjmvsajqnb5wxj2l5l4s"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:tests? #f)) ; avoid dependency cycles
+    (synopsis "Compute the difference between two Enumerable sequences")
+    (description "Diff::LCS computes the difference between two Enumerable
+sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
+It includes utilities to create a simple HTML diff output format and a
+standard diff-like tool.")
+    (home-page "https://github.com/halostatue/diff-lcs")
+    (license license:expat)))
+
+(define-public ruby-rspec-expectations
+  (package
+    (name "ruby-rspec-expectations")
+    (version "3.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/rspec/rspec-expectations/archive/v"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0h0rpprbh6h59gmksiyi1b8w6cvcai4wdbkikajwx3w1asxi6f7x"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:tests? #f)) ; avoid dependency cycles
+    (propagated-inputs
+     `(("ruby-rspec-support" ,ruby-rspec-support)
+       ("ruby-diff-lcs" ,ruby-diff-lcs-for-rspec)))
+    (synopsis "RSpec expecations library")
+    (description "Rspec-expectations provides a simple API to express expected
+outcomes of a code example.")
+    (home-page "https://github.com/rspec/rspec-expectations")
+    (license license:expat)))
+
+(define-public ruby-rspec-mocks
+  (package
+    (name "ruby-rspec-mocks")
+    (version "3.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/rspec/rspec-mocks/archive/v"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1xzxsg0idxkg7czmjgqq10lcd821ibw1hjzn404sk9j6rw0fbx2g"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:tests? #f)) ; avoid dependency cycles
+    (propagated-inputs
+     `(("ruby-rspec-support" ,ruby-rspec-support)
+       ("ruby-diff-lcs" ,ruby-diff-lcs-for-rspec)))
+    (synopsis "RSpec stubbing and mocking library")
+    (description "Rspec-mocks provides RSpec's \"test double\" framework, with
+support for stubbing and mocking.")
+    (home-page "https://github.com/rspec/rspec-mocks")
+    (license license:expat)))
+
+(define-public ruby-rspec
+  (package
+    (name "ruby-rspec")
+    (version "3.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/rspec/rspec/archive/v"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1jg38dbaknsdhiav5vnrwfccg524fwcg6sq1715441vx1xl6p54q"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:tests? #f)) ; avoid dependency cycles
+    (propagated-inputs
+     `(("ruby-rspec-core" ,ruby-rspec-core)
+       ("ruby-rspec-mocks" ,ruby-rspec-mocks)
+       ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
+    (synopsis "Behavior-driven development framework for Ruby")
+    (description "RSpec is a behavior-driven development (BDD) framework for
+Ruby.  This meta-package includes the RSpec test runner, along with the
+expectations and mocks frameworks.")
+    (home-page "http://rspec.info/")
+    (license license:expat)))
+
+;; Bundler is yet another source of circular dependencies, so we must disable
+;; its test suite as well.
+(define-public bundler
+  (package
+    (name "bundler")
+    (version "1.9.9")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/bundler/bundler/archive/v"
+                                  version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "08flx3n9hb3yz8mm5k16cdz0sb7g774f6vxn6gc3wfh5la83vfyx"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:tests? #f)) ; avoid dependency cycles
+    (synopsis "Ruby gem bundler")
+    (description "Bundler automatically downloads and installs a list of gems
+specified in a \"Gemfile\", as well as their dependencies.")
+    (home-page "http://bundler.io/")
+    (license license:expat)))
+
+(define-public ruby-useragent
+  (package
+    (name "ruby-useragent")
+    (version "0.13.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/gshutler/useragent/archive/v"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1hj00fw06i0y3rwxxhxmnrqxhpnffv4zfqx2sqqpc5qc4fdvd2x9"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:test-target "spec"))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)
+       ("bundler" ,bundler)))
+    (synopsis "HTTP user agent parser for Ruby")
+    (description "UserAgent is a Ruby library that parses and compares HTTP
+User Agents.")
+    (home-page "https://github.com/gshutler/useragent")
+    (license license:expat)))
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 77d0d846c8..803b8d5a20 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -29,7 +29,6 @@
   #:use-module (gnu packages databases)
   #:use-module (gnu packages emacs)
   #:use-module (gnu packages texinfo)
-  #:use-module (gnu packages elf)
   #:use-module (gnu packages base)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages avahi)
@@ -39,6 +38,7 @@
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages xorg)
   #:use-module (ice-9 match))
 
 (define (mit-scheme-source-directory system version)
@@ -91,6 +91,7 @@
        ;; ("texlive-core" ,texlive-core)
        ("texinfo" ,texinfo)
        ("m4" ,m4)
+       ("libx11" ,libx11)
 
        ("source"
 
@@ -235,55 +236,27 @@ Scheme and C programs and between Scheme and Java programs.")
              (sha256
               (base32
                "1v2r4ga58kk1sx0frn8qa8ccmjpic9csqzpk499wc95y9c4b1wy3"))
-             (patches (list (search-patch "hop-bigloo-4.0b.patch")))))
+             (patches (list (search-patch "hop-bigloo-4.0b.patch")
+                            (search-patch "hop-linker-flags.patch")))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases
+     `(#:phases
        (alist-replace
         'configure
-        (lambda* (#:key inputs outputs #:allow-other-keys)
+        (lambda* (#:key outputs #:allow-other-keys)
           (let ((out (assoc-ref outputs "out")))
             (zero?
              (system* "./configure"
-                      (string-append "--prefix=" out)))))
-        (alist-cons-after
-         'strip 'patch-rpath
-         (lambda* (#:key outputs #:allow-other-keys)
-           ;; Patch the RPATH of every installed library to point to $out/lib
-           ;; instead of $TMPDIR.  Note that "patchelf --set-rpath" produces
-           ;; invalid binaries when used before stripping.
-           (let ((out    (assoc-ref outputs "out"))
-                 (tmpdir (getcwd)))
-             (every (lambda (lib)
-                      (let* ((in    (open-pipe* OPEN_READ "patchelf"
-                                                "--print-rpath" lib))
-                             (rpath (read-line in)))
-                        (and (zero? (close-pipe in))
-                             (let ((rpath* (regexp-substitute/global
-                                            #f (regexp-quote tmpdir) rpath
-                                            'pre out 'post)))
-                               (or (equal? rpath rpath*)
-                                   (begin
-                                     (format #t "~a: changing RPATH from `~a' to `~a'~%"
-                                             lib rpath rpath*)
-                                     (zero?
-                                      (system* "patchelf" "--set-rpath"
-                                               rpath* lib))))))))
-                    (append (find-files (string-append out "/bin")
-                                        ".*")
-                            (find-files (string-append out "/lib")
-                                        "\\.so$")))))
-         %standard-phases))
-       #:tests? #f                                ; no test suite
-       #:modules ((guix build gnu-build-system)
-                  (guix build utils)
-                  (ice-9 popen)
-                  (ice-9 regex)
-                  (ice-9 rdelim)
-                  (srfi srfi-1))))
+                      (string-append "--prefix=" out)
+                      (string-append "--blflags="
+                                     ;; user flags completely override useful
+                                     ;; default flags, so repeat them here.
+                                     "-copt \\$(CPICFLAGS) -L\\$(BUILDLIBDIR) "
+                                     "-ldopt -Wl,-rpath," out "/lib")))))
+        %standard-phases)
+       #:tests? #f))                                ; no test suite
     (inputs `(("bigloo" ,bigloo)
-              ("which" ,which)
-              ("patchelf" ,patchelf)))
+              ("which" ,which)))
     (home-page "http://hop.inria.fr/")
     (synopsis "Multi-tier programming language for the Web 2.0")
     (description
@@ -481,14 +454,15 @@ mixed.")
 (define-public chibi-scheme
   (package
     (name "chibi-scheme")
-    (version "0.7.2")
+    (version "0.7.3")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "http://abrek.synthcode.com/chibi-scheme-" version ".tgz"))
+       (uri (string-append "https://github.com/ashinn/chibi-scheme/archive/"
+                           version ".tar.gz"))
        (sha256
-        (base32 "0h6k2gdb4xk2pzhdipffcg2w3kfr4zh1va556k1hvng2did6prds"))))
+        (base32 "16wppf4qzr0748iyp0m89gidsfgq9s6x3gw4xggym91waw4fh742"))
+       (file-name (string-append "chibi-scheme-" version ".tar.gz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm
index 5886c6a9ea..e7f8aae881 100644
--- a/gnu/packages/search.scm
+++ b/gnu/packages/search.scm
@@ -124,4 +124,29 @@ files and directories.")
 command line tool for interacting with libtocc.")
     (license gpl3+)))
 
+(define-public bool
+  (package
+    (name "bool")
+    (version "0.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnu/bool/bool-"
+                           version ".tar.xz"))
+       (sha256
+        (base32
+         "1frdmgrmb509fxbdpsxxw3lvvwv7xm1pavqrqgm4jg698iix6xfw"))))
+    (build-system gnu-build-system)
+    (home-page "https://www.gnu.org/software/bool")
+    (synopsis "Finding text and HTML files that match boolean expressions")
+    (description
+     "GNU Bool is a utility to perform text searches on files using Boolean
+expressions.  For example, a search for \"hello AND world\" would return a
+file containing the phrase \"Hello, world!\".  It supports both AND and OR
+statements, as well as the NEAR statement to search for the occurrence of
+words in close proximity to each other.  It handles context gracefully,
+accounting for new lines and paragraph changes.  It also has robust support
+for parsing HTML files.")
+    (license gpl3+)))
+
 ;;; search.scm ends here
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 722e0dfa49..9408705d5e 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -50,7 +50,8 @@
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0dagyqgvi8i3nw158qi2zpwm04s4ffzvnmk5niaksvxs30zrbbpm"))))
+                "0dagyqgvi8i3nw158qi2zpwm04s4ffzvnmk5niaksvxs30zrbbpm"))
+              (patches (list (search-patch "r-fix-15899.patch")))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
diff --git a/gnu/packages/task-management.scm b/gnu/packages/task-management.scm
new file mode 100644
index 0000000000..e77aecb957
--- /dev/null
+++ b/gnu/packages/task-management.scm
@@ -0,0 +1,61 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Tomáš Čech <sleep_walker@suse.cz>
+;;;
+;;; 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 task-management)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (gnu packages gnutls)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages lua)
+  #:use-module (guix download)
+  #:use-module (guix build-system cmake))
+
+(define-public taskwarrior
+  (package
+    (name "taskwarrior")
+    (version "2.4.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://taskwarrior.org/download/task-" version ".tar.gz"))
+       (sha256 (base32
+                "1lkbw2fhshynbl7hppar1viapyrs712s14xhd8p3l8gyhvxbh0mv"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("gnutls" ,gnutls)
+       ("lua" ,lua)
+       ("util-linux" ,util-linux)))
+    (arguments
+     `(#:tests? #f ; No tests implemented.
+       #:phases
+       (modify-phases %standard-phases
+         (add-before
+          'patch-source-shebangs 'remove-broken-symlinks
+          (lambda _
+            ;; These files are broken symlinks - delete them.
+            (delete-file "src/cal")
+            (delete-file "src/calendar")
+            (delete-file "src/tw"))))))
+     (home-page "http://taskwarrior.org")
+    (synopsis "Command line task manager")
+    (description
+     "Taskwarrior is a command-line task manager following the Getting Things
+Done time management method.  It supports network synchronization, filtering
+and querying data, exposing task data in multiple formats to other tools.")
+    (license license:expat)))
diff --git a/gnu/packages/tcsh.scm b/gnu/packages/tcsh.scm
index 814f2a6321..0bd1b92b8f 100644
--- a/gnu/packages/tcsh.scm
+++ b/gnu/packages/tcsh.scm
@@ -31,13 +31,17 @@
     (name "tcsh")
     (version "6.18.01")
     (source (origin
-             (method url-fetch)
-             (uri (string-append "ftp://ftp.astron.com/pub/tcsh/tcsh-"
-                                 version ".tar.gz"))
-             (sha256
-              (base32 "1a4z9kwgx1iqqzvv64si34m60gj34p7lp6rrcrb59s7ka5wa476q"))
-             (patches (list (search-patch "tcsh-fix-autotest.patch")))
-             (patch-flags '("-p0"))))
+              (method url-fetch)
+              ;; Old tarballs are moved to old/.
+              (uri (list (string-append "ftp://ftp.astron.com/pub/tcsh/"
+                                        "tcsh-" version ".tar.gz")
+                         (string-append "ftp://ftp.astron.com/pub/tcsh/"
+                                        "old/tcsh-" version ".tar.gz")))
+              (sha256
+               (base32
+                "1a4z9kwgx1iqqzvv64si34m60gj34p7lp6rrcrb59s7ka5wa476q"))
+              (patches (list (search-patch "tcsh-fix-autotest.patch")))
+              (patch-flags '("-p0"))))
     (build-system gnu-build-system)
     (inputs
      `(("autoconf" ,autoconf)
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 08b1b64c57..325386d234 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
+;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -23,8 +24,11 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
   #:use-module (gnu packages autotools)
-  #:use-module (gnu packages python))
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages zip))
 
 (define-public recode
   (package
@@ -155,3 +159,47 @@ encoding, supporting Unicode version 7.0.")
      "libgtextutils is a text utilities library used by the fastx toolkit from
 the Hannon Lab.")
     (license license:agpl3+)))
+
+(define-public markdown
+  (package
+    (name "markdown")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://daringfireball.net/projects/downloads/"
+             (string-capitalize name) "_" version ".zip"))
+       (sha256
+        (base32 "0dq1pj91pvlwkv0jwcgdfpv6gvnxzrk3s8mnh7imamcclnvfj835"))))
+    (build-system trivial-build-system)
+    (arguments
+     '(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let ((source (assoc-ref %build-inputs "source"))
+               (out    (assoc-ref %outputs "out"))
+               (perlbd (string-append (assoc-ref %build-inputs "perl") "/bin"))
+               (unzip  (string-append (assoc-ref %build-inputs "unzip")
+                                      "/bin/unzip")))
+           (mkdir-p out)
+           (with-directory-excursion out
+             (system* unzip source)
+             (mkdir "bin")
+             (mkdir-p "share/doc")
+             (rename-file "Markdown_1.0.1/Markdown.pl" "bin/markdown")
+             (rename-file "Markdown_1.0.1/Markdown Readme.text"
+                          "share/doc/README")
+             (patch-shebang "bin/markdown" (list perlbd))
+             (delete-file-recursively "Markdown_1.0.1"))))))
+    (native-inputs `(("unzip" ,unzip)))
+    (inputs `(("perl" ,perl)))
+    (home-page "http://daringfireball.net/projects/markdown")
+    (synopsis "Text-to-HTML conversion tool")
+    (description
+     "Markdown is a text-to-HTML conversion tool for web writers.  It allows
+you to write using an easy-to-read, easy-to-write plain text format, then
+convert it to structurally valid XHTML (or HTML).")
+    (license (license:non-copyleft "file://License.text"
+                                   "See License.text in the distribution."))))
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 0f19d9f2a4..d5e30e97f5 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -26,21 +26,24 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages openssl)
   #:use-module (gnu packages pcre)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages w3m))
 
 (define-public tor
   (package
     (name "tor")
-    (version "0.2.5.12")
+    (version "0.2.6.8")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://www.torproject.org/dist/tor-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "0j9byw3i2b7ji88vsqwmsxxg2nlxwkk45k5qbc1y7hdlzvzxl3sm"))))
+               "0xlsc2pa7i8hm8dyilln6p4rb0pig62b9c31yp1m0hj5jqw3d2xq"))))
     (build-system gnu-build-system)
+    (native-inputs
+     `(("python" ,python-2)))  ; for tests
     (inputs
      `(("zlib" ,zlib)
        ("openssl" ,openssl)
diff --git a/gnu/packages/tv.scm b/gnu/packages/tv.scm
new file mode 100644
index 0000000000..0a229e149a
--- /dev/null
+++ b/gnu/packages/tv.scm
@@ -0,0 +1,64 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Alex Kost <alezost@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 tv)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages fontutils))
+
+(define-public tvtime
+  (package
+    (name "tvtime")
+    (version "1.0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/tvtime/tvtime-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "08q5gzbyz0lxb730rz6d6amkzimlc7nanv6n50j2bpw4n2xa9wmf"))
+              (patches (list (search-patch "tvtime-videodev2.patch")
+                             (search-patch "tvtime-pngoutput.patch")
+                             (search-patch "tvtime-xmltv.patch")
+                             (search-patch "tvtime-gcc41.patch")))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libx11" ,libx11)
+       ("libxext" ,libxext)
+       ("libxt" ,libxt)
+       ("libxtst" ,libxtst)
+       ("libxinerama" ,libxinerama)
+       ("libxv" ,libxv)
+       ("libxxf86vm" ,libxxf86vm)
+       ("libpng" ,libpng)
+       ("libxml2" ,libxml2)
+       ("freetype" ,freetype)
+       ("zlib" ,zlib)))
+    (home-page "http://tvtime.sourceforge.net")
+    (synopsis "Television viewer")
+    (description
+     "Tvtime processes the input from your video capture card and
+displays it on a monitor.  It focuses on a high visual quality.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 3cbd12f635..0d153fa92d 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -49,6 +49,7 @@
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages openssl)
   #:use-module (gnu packages ssh)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
@@ -536,29 +537,20 @@ WebDAV metadata support, wrappers for PROPFIND and PROPPATCH to simplify
 property manipulation.")
     (license gpl2+))) ; for documentation and tests; source under lgpl2.0+
 
-(define-public neon-0.29.6
-  (package (inherit neon)
-    (name "neon")
-    (version "0.29.6")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "http://www.webdav.org/neon/neon-"
-                                 version ".tar.gz"))
-             (sha256
-              (base32
-               "0hzbjqdx1z8zw0vmbknf159wjsxbcq8ii0wgwkqhxj3dimr0nr4w"))))))
-
 (define-public subversion
   (package
     (name "subversion")
-    (version "1.7.18")
+    (version "1.8.13")
     (source (origin
              (method url-fetch)
              (uri (string-append "http://archive.apache.org/dist/subversion/"
                                  "subversion-" version ".tar.bz2"))
              (sha256
               (base32
-               "06nrqnn3qq1hhskkcdbm0ilk2xv6ay2gyf2c7qvxp6xncb782wzn"))))
+               "0ybmc0yq83jhblp42wdqvn2cryra3sypx8mkxn5b8lq7hilcr68h"))
+             (patches
+              (list (search-patch "subversion-sqlite-3.8.9-fix.patch")))
+             (patch-flags '("-p0"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (alist-cons-after
@@ -574,7 +566,7 @@ property manipulation.")
                      (substitute* "libtool"
                        (("\\\\`ls") (string-append "\\`" coreutils "/bin/ls")))))
                  (alist-cons-after
-                  'install 'instal-perl-bindings
+                  'install 'install-perl-bindings
                   (lambda* (#:key outputs #:allow-other-keys)
                     ;; Follow the instructions from
                     ;; 'subversion/bindings/swig/INSTALL'.
@@ -603,7 +595,7 @@ property manipulation.")
     (inputs
       `(("apr" ,apr)
         ("apr-util" ,apr-util)
-        ("neon" ,neon-0.29.6)
+        ("serf" ,serf)
         ("perl" ,perl)
         ("python" ,python-2) ; incompatible with Python 3 (print syntax)
         ("sqlite" ,sqlite)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index c890d45d19..3955c383d7 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -857,7 +857,7 @@ projects while introducing many more.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2015.01.23.4")
+    (version "2015.06.04.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://youtube-dl.org/downloads/"
@@ -865,7 +865,7 @@ projects while introducing many more.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0pvvab9dk1righ3fa79000iz8fzdlcxakscx5sd31730c37j3kj2"))))
+                "0rk5c2m19x119bly38yjbizkr99ayn265lm15rm2x5ipjvdixyyg"))))
     (build-system python-build-system)
     (inputs `(("setuptools" ,python-setuptools)))
     (home-page "http://youtube-dl.org")
@@ -1102,6 +1102,8 @@ for use with HTML5 video.")
                                  "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE"
                                  (string-append "-DCMAKE_INSTALL_PREFIX=" out)
                                  (string-append "-DCMAKE_INSTALL_RPATH=" lib)
+                                 (string-append "-DCMAKE_SHARED_LINKER_FLAGS="
+                                                "\"-Wl,-rpath=" lib "\"")
                                  (string-append "-DAVIDEMUX_SOURCE_DIR=" top)
                                  (string-append "-DSDL_INCLUDE_DIR="
                                                 sdl "/include/SDL")
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 5883f99505..62036d9ef7 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -28,6 +28,7 @@
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gnutls)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages openssl)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -125,3 +126,33 @@ supported by the ASA5500 Series, by IOS 12.4(9)T or later on Cisco SR500,
 and probably others.")
    (license license:lgpl2.1)
    (home-page "http://www.infradead.org/openconnect/")))
+
+(define-public openvpn
+  (package
+    (name "openvpn")
+    (version "2.3.6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://swupdate.openvpn.org/community/releases/openvpn-"
+                    version ".tar.xz"))
+              (sha256
+               (base32
+                "1v8h2nshxnvn2zyr08vzkfby1kc7ma6bi0s6hix389cj9krjxbmd"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--enable-iproute2=yes")))
+    (native-inputs
+     `(("iproute2" ,iproute)))
+    (inputs
+     `(("lzo" ,lzo)
+       ("openssl" ,openssl)
+       ("linux-pam" ,linux-pam)))
+    (home-page "https://openvpn.net/")
+    (synopsis "Virtual private network daemon")
+    (description "OpenVPN implements virtual private network (VPN) techniques
+for creating secure point-to-point or site-to-site connections in routed or
+bridged configurations and remote access facilities.  It uses a custom
+security protocol that utilizes SSL/TLS for key exchange.  It is capable of
+traversing network address translators (NATs) and firewalls. ")
+    (license license:gpl2)))
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index fb3ff2d149..e77bad76d6 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -46,6 +46,7 @@
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages xml)
@@ -548,6 +549,75 @@ URLs and extracting their actual media files.")
 from streaming URLs.  It is a command-line wrapper for the libquvi library.")
     (license l:lgpl2.1+)))
 
+(define-public serf
+  (package
+    (name "serf")
+    (version "1.3.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://serf.googlecode.com/svn/src_releases/serf-"
+                           version ".tar.bz2"))
+       (sha256
+        (base32 "14155g48gamcv5s0828bzij6vr14nqmbndwq8j8f9g6vcph0nl70"))
+       (patches (map search-patch '("serf-comment-style-fix.patch"
+                                    "serf-deflate-buckets-test-fix.patch")))
+       (patch-flags '("-p0"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("scons" ,scons)
+       ("python" ,python-2)))
+    (propagated-inputs
+     `(("apr" ,apr)
+       ("apr-util" ,apr-util)
+       ("openssl" ,openssl)))
+    (inputs
+     `(;; TODO: Fix build with gss.
+       ;;("gss" ,gss)
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:phases
+       ;; TODO: Add scons-build-system and use it here.
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-after 'unpack 'scons-propagate-environment
+                    (lambda _
+                      ;; By design, SCons does not, by default, propagate
+                      ;; environment variables to subprocesses.  See:
+                      ;; <http://comments.gmane.org/gmane.linux.distributions.nixos/4969>
+                      ;; Here, we modify the SConstruct file to arrange for
+                      ;; environment variables to be propagated.
+                      (substitute* "SConstruct"
+                        (("^env = Environment\\(")
+                         "env = Environment(ENV=os.environ, "))))
+         (replace 'build
+                  (lambda* (#:key inputs outputs #:allow-other-keys)
+                    (let ((out      (assoc-ref outputs "out"))
+                          (apr      (assoc-ref inputs "apr"))
+                          (apr-util (assoc-ref inputs "apr-util"))
+                          (openssl  (assoc-ref inputs "openssl"))
+                          ;;(gss      (assoc-ref inputs "gss"))
+                          (zlib     (assoc-ref inputs "zlib")))
+                      (zero? (system* "scons"
+                                      (string-append "APR=" apr)
+                                      (string-append "APU=" apr-util)
+                                      (string-append "OPENSSL=" openssl)
+                                      ;;(string-append "GSSAPI=" gss)
+                                      (string-append "ZLIB=" zlib)
+                                      (string-append "PREFIX=" out))))))
+         (replace 'check   (lambda _ (zero? (system* "scons" "check"))))
+         (replace 'install (lambda _ (zero? (system* "scons" "install")))))))
+    (home-page "https://code.google.com/p/serf/")
+    (synopsis "High-performance asynchronous HTTP client library")
+    (description
+     "serf is a C-based HTTP client library built upon the Apache Portable
+Runtime (APR) library.  It multiplexes connections, running the read/write
+communication asynchronously.  Memory copies and transformations are kept to a
+minimum to provide high performance operation.")
+    ;; Most of the code is covered by the Apache License, Version 2.0, but the
+    ;; bundled CuTest framework uses a different non-copyleft license.
+    (license (list l:asl2.0 (l:non-copyleft "file://test/CuTest-README.txt")))))
+
 
 (define-public perl-apache-logformat-compiler
   (package
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index e6de8ab0df..0f3a44b063 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -1,5 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
+;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
+;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,9 +23,13 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages enchant)
+  #:use-module (gnu packages flex)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
@@ -45,19 +51,23 @@
 (define-public webkitgtk
   (package
     (name "webkitgtk")
-    (version "2.8.1")
+    (version "2.8.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://www.webkitgtk.org/releases/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1zv030ryfwwp57yzlpr9bgpxcmc64izsxk2vsyd4kjhns9cl88bx"))))
+                "05igg61lflgwy83cmxgyzmvf2bkhplmp8710ssrlpmbfcz461pmk"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f ; no tests
        #:build-type "Release" ; turn off debugging symbols to save space
-       #:configure-flags '("-DPORT=GTK")))
+       #:configure-flags (list
+                          "-DPORT=GTK"
+                          (string-append ; uses lib64 by default
+                           "-DLIB_INSTALL_DIR="
+                           (assoc-ref %outputs "out") "/lib"))))
     (native-inputs
      `(("bison" ,bison)
        ("gettext" ,gnu-gettext)
@@ -103,3 +113,40 @@ HTML/CSS applications to full-fledged web browsers.")
                    license:lgpl2.1+
                    license:bsd-2
                    license:bsd-3))))
+
+;; Latest release of the stable 2.4 series, with WebKit1 support.
+(define-public webkitgtk-2.4
+  (package (inherit webkitgtk)
+    (name "webkitgtk")
+    (version "2.4.9")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://www.webkitgtk.org/releases/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0r651ar3p0f8zwl7764kyimxk5hy88cwy116pv8cl5l8hbkjkpxg"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f ; no tests
+       #:phases (modify-phases %standard-phases
+                  (add-after
+                   'unpack 'set-gcc
+                   (lambda _ (setenv "CC" "gcc") #t)))))
+    (native-inputs
+     `(("flex" ,flex)
+       ("which" ,which)
+       ,@(package-native-inputs webkitgtk)))))
+
+;; Last GTK+2 port, required by GnuCash.
+(define-public webkitgtk/gtk+-2
+  (package (inherit webkitgtk-2.4)
+    (name "webkitgtk")
+    (arguments
+     `(#:configure-flags
+       '("--enable-webkit2=no"
+         "--with-gtk=2.0")
+       ,@(package-arguments webkitgtk-2.4)))
+    (propagated-inputs
+     `(("gtk+-2" ,gtk+-2)
+       ("libsoup" ,libsoup)))))
diff --git a/gnu/packages/wicd.scm b/gnu/packages/wicd.scm
index 1953a56b6c..908b15e30b 100644
--- a/gnu/packages/wicd.scm
+++ b/gnu/packages/wicd.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu>
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,11 +45,12 @@
                            "/+download/wicd-" version ".tar.gz"))
        (sha256
         (base32 "00c4rq753bhg64rv1v9yl834ssq7igyy7cz3swp287b5n5bqiqwi"))
-       (patches (list (search-patch "wicd-urwid-1.3.patch")))))
+       (patches (map search-patch
+                     '("wicd-urwid-1.3.patch"
+                       "wicd-template-instantiation.patch")))))
     (build-system python-build-system)
     (native-inputs `(("gettext" ,gnu-gettext)))
-    (inputs `(("dbus" ,dbus)
-              ("dbus-glib" ,dbus-glib)
+    (inputs `(("dbus-glib" ,dbus-glib)
               ("python2-dbus" ,python2-dbus)
               ("python2-pygtk" ,python2-pygtk)
               ("python2-urwid" ,python2-urwid)
diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm
index ee270ff105..b49fb2fe84 100644
--- a/gnu/packages/wxwidgets.scm
+++ b/gnu/packages/wxwidgets.scm
@@ -96,5 +96,8 @@ and many other languages.")
     (arguments
      `(#:configure-flags
        '("--enable-unicode" "--with-regex=sys" "--with-sdl")
+       #:make-flags
+       (list (string-append "LDFLAGS=-Wl,-rpath="
+                            (assoc-ref %outputs "out") "/lib"))
        ;; No 'check' target.
        #:tests? #f))))
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 37f09579fe..818941892f 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -318,6 +318,37 @@ applications menu, workspace switcher and more.")
     ;; to read the battery state via ACPI or APM are covered by lgpl2.0+.
     (license (list gpl2+ lgpl2.0+))))
 
+(define-public xfce4-clipman-plugin
+  (package
+    (name "xfce4-clipman-plugin")
+    (version "1.2.6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://archive.xfce.org/src/panel-plugins/"
+                                  name "/" (version-major+minor version) "/"
+                                  name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "19a8gwcqc0r5qqi8w28dc8arqip34m8yxdb87lgps9g5qfcky113"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("exo" ,exo)
+       ("libxfce4ui" ,libxfce4ui)
+       ("libxtst" ,libxtst)
+       ("xfce4-panel" ,xfce4-panel)))
+    (home-page
+     "http://goodies.xfce.org/projects/panel-plugins/xfce4-clipman-plugin")
+    (synopsis "Clipboard manager for Xfce")
+    (description
+     "Clipman is a clipboard manager for Xfce.  It keeps the clipboard contents
+around while it is usually lost when you close an application.  It is able to
+handle text and images, and has a feature to execute actions on specific text by
+matching them against regular expressions.")
+    (license (list gpl2+))))
+
 (define-public xfce4-appfinder
   (package
     (name "xfce4-appfinder")
@@ -601,6 +632,7 @@ on your desktop.")
        ("tumlber"              ,tumbler)
        ("xfce4-appfinder"      ,xfce4-appfinder)
        ("xfce4-battery-plugin" ,xfce4-battery-plugin)
+       ("xfce4-clipman-plugin" ,xfce4-clipman-plugin)
        ("xfce4-panel"          ,xfce4-panel)
        ("xfce4-session"        ,xfce4-session)
        ("xfce4-settings"       ,xfce4-settings)
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 97781adef2..59b73d2aa5 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;;
@@ -21,8 +21,10 @@
 
 (define-module (gnu packages xml)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages gnutls)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages python)
   #:use-module (gnu packages web)
@@ -397,3 +399,32 @@ that conforms to the API of the Document Object Model.")
 stylesheet for the conversion you want and applies it using an external
 XSL-T processor.  It also performs any necessary post-processing.")
     (license license:gpl2+)))
+
+(define-public xmlsec
+  (package
+    (name "xmlsec")
+    (version "1.2.20")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "https://www.aleksey.com/xmlsec/download/"
+                                 name "1-" version ".tar.gz"))
+             (sha256
+              (base32
+               "01bkbv2y3x8d1sf4dcln1x3y2jyj391s3208d9a2ndhglly5j89j"))))
+    (build-system gnu-build-system)
+    (propagated-inputs ; according to xmlsec1.pc
+     `(("libxml2" ,libxml2)
+       ("libxslt" ,libxslt)))
+    (inputs
+     `(("gnutls" ,gnutls)
+       ("libgcrypt" ,libgcrypt)
+       ("libltdl" ,libltdl)))
+    (home-page "http://www.libexpat.org/")
+    (synopsis "XML Security Library")
+    (description
+     "The XML Security Library is a C library based on Libxml2.  It
+supports XML security standards such as XML Signature, XML Encryption,
+Canonical XML (part of Libxml2) and Exclusive Canonical XML (part of
+Libxml2).")
+    (license (license:x11-style "file://COPYING"
+                                "See 'COPYING' in the distribution."))))
diff --git a/gnu/services/avahi.scm b/gnu/services/avahi.scm
index 0a56f3d7f6..a3ca5ab6fb 100644
--- a/gnu/services/avahi.scm
+++ b/gnu/services/avahi.scm
@@ -63,7 +63,7 @@
                         (domains-to-browse '()))
   "Return a service that runs @command{avahi-daemon}, a system-wide
 mDNS/DNS-SD responder that allows for service discovery and
-\"zero-configuration\" host name lookups.
+\"zero-configuration\" host name lookups (see @uref{http://avahi.org/}).
 
 If @var{host-name} is different from @code{#f}, use that as the host name to
 publish for this machine; otherwise, use the machine's actual host name.
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index d0a2e8c848..d5744204d9 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -46,6 +47,7 @@
             swap-service
             user-processes-service
             host-name-service
+            console-keymap-service
             console-font-service
             udev-service
             mingetty-service
@@ -313,6 +315,19 @@ stopped before 'kill' is called."
           (else
            (zero? (cdr (waitpid pid))))))))
 
+(define (console-keymap-service file)
+  "Return a service to load console keymap from @var{file}."
+  (with-monad %store-monad
+    (return
+     (service
+      (documentation
+       (string-append "Load console keymap (loadkeys)."))
+      (provision '(console-keymap))
+      (start #~(lambda _
+                 (zero? (system* (string-append #$kbd "/bin/loadkeys")
+                                 #$file))))
+      (respawn? #f)))))
+
 (define* (console-font-service tty #:optional (font "LatGrkCyr-8x16"))
   "Return a service that sets up Unicode support in @var{tty} and loads
 @var{font} for that tty (fonts are per virtual console in Linux.)"
@@ -836,10 +851,10 @@ gexp, to open it, and evaluate @var{close} to close it."
              (requirement `(udev ,@requirement))
              (documentation "Enable the given swap device.")
              (start #~(lambda ()
-                        (swapon #$device)
+                        (restart-on-EINTR (swapon #$device))
                         #t))
              (stop #~(lambda _
-                       (swapoff #$device)
+                       (restart-on-EINTR (swapoff #$device))
                        #f))
              (respawn? #f)))))
 
diff --git a/gnu/services/colord.scm b/gnu/services/colord.scm
deleted file mode 100644
index 588436002c..0000000000
--- a/gnu/services/colord.scm
+++ /dev/null
@@ -1,72 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2015 Andy Wingo <wingo@igalia.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 services colord)
-  #:use-module (gnu services)
-  #:use-module (gnu system shadow)
-  #:use-module (gnu packages gnome)
-  #:use-module (ice-9 match)
-  #:use-module (guix monads)
-  #:use-module (guix store)
-  #:use-module (guix gexp)
-  #:export (colord-service))
-
-;;; Commentary:
-;;;
-;;; This module provides service definitions for the colord color management
-;;; service.
-;;;
-;;; Code:
-
-(define* (colord-service #:key (colord colord))
-  "Return a service that runs @command{colord}, a system service with a D-Bus
-interface to manage the color profiles of input and output devices such as
-screens and scanners.  It is notably used by the GNOME Color Manager graphical
-tool.  See @uref{http://www.freedesktop.org/software/colord/, the colord web
-site} for more information."
-  (with-monad %store-monad
-    (return
-     (service
-      (documentation "Run the colord color management service.")
-      (provision '(colord-daemon))
-      (requirement '(dbus-system udev))
-
-      (start #~(make-forkexec-constructor
-                (list (string-append #$colord "/libexec/colord"))))
-      (stop #~(make-kill-destructor))
-      (activate #~(begin
-                    (use-modules (guix build utils))
-                    (mkdir-p "/var/lib/colord")
-                    (let ((user (getpwnam "colord")))
-                      (chown "/var/lib/colord"
-                             (passwd:uid user) (passwd:gid user)))))
-
-      (user-groups (list (user-group
-                          (name "colord")
-                          (system? #t))))
-      (user-accounts (list (user-account
-                            (name "colord")
-                            (group "colord")
-                            (system? #t)
-                            (comment "colord daemon user")
-                            (home-directory "/var/empty")
-                            (shell
-                             "/run/current-system/profile/sbin/nologin"))))))))
-
-;;; colord.scm ends here
diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm
new file mode 100644
index 0000000000..18f41e74da
--- /dev/null
+++ b/gnu/services/databases.scm
@@ -0,0 +1,121 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 David Thompson <davet@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 services databases)
+  #:use-module (gnu services)
+  #:use-module (gnu system shadow)
+  #:use-module (gnu packages admin)
+  #:use-module (gnu packages databases)
+  #:use-module (guix records)
+  #:use-module (guix monads)
+  #:use-module (guix store)
+  #:use-module (guix gexp)
+  #:export (postgresql-service))
+
+;;; Commentary:
+;;;
+;;; Database services.
+;;;
+;;; Code:
+
+(define %default-postgres-hba
+  (text-file "pg_hba.conf"
+             "
+local	all	all			trust
+host	all	all	127.0.0.1/32 	trust
+host	all	all	::1/128 	trust"))
+
+(define %default-postgres-ident
+  (text-file "pg_ident.conf"
+             "# MAPNAME       SYSTEM-USERNAME         PG-USERNAME"))
+
+(define %default-postgres-config
+  (mlet %store-monad ((hba %default-postgres-hba)
+                      (ident %default-postgres-ident))
+    (text-file* "postgresql.conf"
+                ;; The daemon will not start without these.
+                "hba_file = '" hba "'\n"
+                "ident_file = '" ident "'\n")))
+
+(define* (postgresql-service #:key (postgresql postgresql)
+                             (config-file %default-postgres-config)
+                             (data-directory "/var/lib/postgresql/data"))
+  "Return a service that runs @var{postgresql}, the PostgreSQL database server.
+
+The PostgreSQL daemon loads its runtime configuration from @var{config-file}
+and stores the database cluster in @var{data-directory}."
+  ;; Wrapper script that switches to the 'postgres' user before launching
+  ;; daemon.
+  (define start-script
+    (mlet %store-monad ((config-file config-file))
+      (gexp->script "start-postgres"
+                    #~(let ((user (getpwnam "postgres"))
+                            (postgres (string-append #$postgresql
+                                                     "/bin/postgres")))
+                        (setgid (passwd:gid user))
+                        (setuid (passwd:uid user))
+                        (system* postgres
+                                 (string-append "--config-file=" #$config-file)
+                                 "-D" #$data-directory)))))
+
+  (define activate
+    #~(begin
+        (use-modules (guix build utils)
+                     (ice-9 match))
+
+        (let ((user (getpwnam "postgres"))
+              (initdb (string-append #$postgresql "/bin/initdb")))
+          ;; Create db state directory.
+          (mkdir-p #$data-directory)
+          (chown #$data-directory (passwd:uid user) (passwd:gid user))
+
+          ;; Drop privileges and init state directory in a new
+          ;; process.  Wait for it to finish before proceeding.
+          (match (primitive-fork)
+            (0
+             ;; Exit with a non-zero status code if an exception is thrown.
+             (dynamic-wind
+               (const #t)
+               (lambda ()
+                 (setgid (passwd:gid user))
+                 (setuid (passwd:uid user))
+                 (primitive-exit (system* initdb "-D" #$data-directory)))
+               (lambda ()
+                 (primitive-exit 1))))
+            (pid (waitpid pid))))))
+
+  (mlet %store-monad ((start-script start-script))
+    (return
+     (service
+      (provision '(postgres))
+      (documentation "Run the PostgreSQL daemon.")
+      (requirement '(user-processes loopback))
+      (start #~(make-forkexec-constructor #$start-script))
+      (stop #~(make-kill-destructor))
+      (activate activate)
+      (user-groups (list (user-group
+                          (name "postgres")
+                          (system? #t))))
+      (user-accounts (list (user-account
+                            (name "postgres")
+                            (group "postgres")
+                            (system? #t)
+                            (comment "PostgreSQL server user")
+                            (home-directory "/var/empty")
+                            (shell
+                             #~(string-append #$shadow "/sbin/nologin")))))))))
diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm
deleted file mode 100644
index 8f3b350951..0000000000
--- a/gnu/services/dbus.scm
+++ /dev/null
@@ -1,127 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015 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 services dbus)
-  #:use-module (gnu services)
-  #:use-module (gnu system shadow)
-  #:use-module (gnu packages glib)
-  #:use-module (gnu packages admin)
-  #:use-module (guix monads)
-  #:use-module (guix store)
-  #:use-module (guix gexp)
-  #:export (dbus-service))
-
-;;; Commentary:
-;;;
-;;; This module supports the configuration of the D-Bus message bus
-;;; (http://dbus.freedesktop.org/).  D-Bus is an inter-process communication
-;;; facility.  Its "system bus" is used to allow system services to
-;;; communicate and be notified of system-wide events.
-;;;
-;;; Code:
-
-(define (dbus-configuration-directory dbus services)
-  "Return a configuration directory for @var{dbus} that includes the
-@code{etc/dbus-1/system.d} directories of each package listed in
-@var{services}."
-  (define build
-    #~(begin
-        (use-modules (sxml simple)
-                     (srfi srfi-1))
-
-        (define (services->sxml services)
-          ;; Return the SXML 'includedir' clauses for DIRS.
-          `(busconfig
-            ,@(append-map (lambda (dir)
-                            `((includedir
-                               ,(string-append dir "/etc/dbus-1/system.d"))
-                              (servicedir         ;for '.service' files
-                               ,(string-append dir "/share/dbus-1/services"))))
-                          services)))
-
-        (mkdir #$output)
-        (copy-file (string-append #$dbus "/etc/dbus-1/system.conf")
-                   (string-append #$output "/system.conf"))
-
-        ;; The default 'system.conf' has an <includedir> clause for
-        ;; 'system.d', so create it.
-        (mkdir (string-append #$output "/system.d"))
-
-        ;; 'system-local.conf' is automatically included by the default
-        ;; 'system.conf', so this is where we stuff our own things.
-        (call-with-output-file (string-append #$output "/system-local.conf")
-          (lambda (port)
-            (sxml->xml (services->sxml (list #$@services))
-                       port)))))
-
-  (gexp->derivation "dbus-configuration" build))
-
-(define* (dbus-service services #:key (dbus dbus))
-  "Return a service that runs the system bus, using @var{dbus}, with support
-for @var{services}.
-
-@var{services} must be a list of packages that provide an
-@file{etc/dbus-1/system.d} directory containing additional D-Bus configuration
-and policy files.  For example, to allow avahi-daemon to use the system bus,
-@var{services} must be equal to @code{(list avahi)}."
-  (mlet %store-monad ((conf (dbus-configuration-directory dbus services)))
-    (return
-     (service
-      (documentation "Run the D-Bus system daemon.")
-      (provision '(dbus-system))
-      (requirement '(user-processes))
-      (start #~(make-forkexec-constructor
-                (list (string-append #$dbus "/bin/dbus-daemon")
-                      "--nofork"
-                      (string-append "--config-file=" #$conf "/system.conf"))))
-      (stop #~(make-kill-destructor))
-      (user-groups (list (user-group
-                          (name "messagebus")
-                          (system? #t))))
-      (user-accounts (list (user-account
-                            (name "messagebus")
-                            (group "messagebus")
-                            (system? #t)
-                            (comment "D-Bus system bus user")
-                            (home-directory "/var/run/dbus")
-                            (shell
-                             #~(string-append #$shadow "/sbin/nologin")))))
-      (activate #~(begin
-                    (use-modules (guix build utils))
-
-                    (mkdir-p "/var/run/dbus")
-
-                    (let ((user (getpwnam "messagebus")))
-                      (chown "/var/run/dbus"
-                             (passwd:uid user) (passwd:gid user)))
-
-                    (unless (file-exists? "/etc/machine-id")
-                      (format #t "creating /etc/machine-id...~%")
-                      (let ((prog (string-append #$dbus "/bin/dbus-uuidgen")))
-                        ;; XXX: We can't use 'system' because the initrd's
-                        ;; guile system(3) only works when 'sh' is in $PATH.
-                        (let ((pid (primitive-fork)))
-                          (if (zero? pid)
-                              (call-with-output-file "/etc/machine-id"
-                                (lambda (port)
-                                  (close-fdes 1)
-                                  (dup2 (port->fdes port) 1)
-                                  (execl prog)))
-                              (waitpid pid)))))))))))
-
-;;; dbus.scm ends here
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
new file mode 100644
index 0000000000..910dc1f9e0
--- /dev/null
+++ b/gnu/services/desktop.scm
@@ -0,0 +1,300 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Andy Wingo <wingo@igalia.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 services desktop)
+  #:use-module (gnu services)
+  #:use-module (gnu services base)
+  #:use-module (gnu services avahi)
+  #:use-module (gnu services xorg)
+  #:use-module (gnu services networking)
+  #:use-module (gnu services ssh)
+  #:use-module (gnu system shadow)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages admin)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages avahi)
+  #:use-module (gnu packages wicd)
+  #:use-module (guix monads)
+  #:use-module (guix store)
+  #:use-module (guix gexp)
+  #:use-module (ice-9 match)
+  #:export (dbus-service
+            upower-service
+            colord-service
+            %desktop-services))
+
+;;; Commentary:
+;;;
+;;; This module contains service definitions for a "desktop" environment.
+;;;
+;;; Code:
+
+
+;;;
+;;; D-Bus.
+;;;
+
+(define (dbus-configuration-directory dbus services)
+  "Return a configuration directory for @var{dbus} that includes the
+@code{etc/dbus-1/system.d} directories of each package listed in
+@var{services}."
+  (define build
+    #~(begin
+        (use-modules (sxml simple)
+                     (srfi srfi-1))
+
+        (define (services->sxml services)
+          ;; Return the SXML 'includedir' clauses for DIRS.
+          `(busconfig
+            ,@(append-map (lambda (dir)
+                            `((includedir
+                               ,(string-append dir "/etc/dbus-1/system.d"))
+                              (servicedir         ;for '.service' files
+                               ,(string-append dir "/share/dbus-1/services"))))
+                          services)))
+
+        (mkdir #$output)
+        (copy-file (string-append #$dbus "/etc/dbus-1/system.conf")
+                   (string-append #$output "/system.conf"))
+
+        ;; The default 'system.conf' has an <includedir> clause for
+        ;; 'system.d', so create it.
+        (mkdir (string-append #$output "/system.d"))
+
+        ;; 'system-local.conf' is automatically included by the default
+        ;; 'system.conf', so this is where we stuff our own things.
+        (call-with-output-file (string-append #$output "/system-local.conf")
+          (lambda (port)
+            (sxml->xml (services->sxml (list #$@services))
+                       port)))))
+
+  (gexp->derivation "dbus-configuration" build))
+
+(define* (dbus-service services #:key (dbus dbus))
+  "Return a service that runs the \"system bus\", using @var{dbus}, with
+support for @var{services}.
+
+@uref{http://dbus.freedesktop.org/, D-Bus} is an inter-process communication
+facility.  Its system bus is used to allow system services to communicate and
+be notified of system-wide events.
+
+@var{services} must be a list of packages that provide an
+@file{etc/dbus-1/system.d} directory containing additional D-Bus configuration
+and policy files.  For example, to allow avahi-daemon to use the system bus,
+@var{services} must be equal to @code{(list avahi)}."
+  (mlet %store-monad ((conf (dbus-configuration-directory dbus services)))
+    (return
+     (service
+      (documentation "Run the D-Bus system daemon.")
+      (provision '(dbus-system))
+      (requirement '(user-processes))
+      (start #~(make-forkexec-constructor
+                (list (string-append #$dbus "/bin/dbus-daemon")
+                      "--nofork"
+                      (string-append "--config-file=" #$conf "/system.conf"))))
+      (stop #~(make-kill-destructor))
+      (user-groups (list (user-group
+                          (name "messagebus")
+                          (system? #t))))
+      (user-accounts (list (user-account
+                            (name "messagebus")
+                            (group "messagebus")
+                            (system? #t)
+                            (comment "D-Bus system bus user")
+                            (home-directory "/var/run/dbus")
+                            (shell
+                             #~(string-append #$shadow "/sbin/nologin")))))
+      (activate #~(begin
+                    (use-modules (guix build utils))
+
+                    (mkdir-p "/var/run/dbus")
+
+                    (let ((user (getpwnam "messagebus")))
+                      (chown "/var/run/dbus"
+                             (passwd:uid user) (passwd:gid user)))
+
+                    (unless (file-exists? "/etc/machine-id")
+                      (format #t "creating /etc/machine-id...~%")
+                      (let ((prog (string-append #$dbus "/bin/dbus-uuidgen")))
+                        ;; XXX: We can't use 'system' because the initrd's
+                        ;; guile system(3) only works when 'sh' is in $PATH.
+                        (let ((pid (primitive-fork)))
+                          (if (zero? pid)
+                              (call-with-output-file "/etc/machine-id"
+                                (lambda (port)
+                                  (close-fdes 1)
+                                  (dup2 (port->fdes port) 1)
+                                  (execl prog)))
+                              (waitpid pid)))))))))))
+
+
+;;;
+;;; Upower D-Bus service.
+;;;
+
+(define* (upower-configuration-file #:key watts-up-pro? poll-batteries?
+                                    ignore-lid? use-percentage-for-policy?
+                                    percentage-low percentage-critical
+                                    percentage-action time-low
+                                    time-critical time-action
+                                    critical-power-action)
+  "Return an upower-daemon configuration file."
+  (define (bool value)
+    (if value "true\n" "false\n"))
+
+  (text-file "UPower.conf"
+             (string-append
+              "[UPower]\n"
+              "EnableWattsUpPro=" (bool watts-up-pro?)
+              "NoPollBatteries=" (bool (not poll-batteries?))
+              "IgnoreLid=" (bool ignore-lid?)
+              "UsePercentageForPolicy=" (bool use-percentage-for-policy?)
+              "PercentageLow=" (number->string percentage-low) "\n"
+              "PercentageCritical=" (number->string percentage-critical) "\n"
+              "PercentageAction=" (number->string percentage-action) "\n"
+              "TimeLow=" (number->string time-low) "\n"
+              "TimeCritical=" (number->string time-critical) "\n"
+              "TimeAction=" (number->string time-action) "\n"
+              "CriticalPowerAction=" (match critical-power-action
+                                       ('hybrid-sleep "HybridSleep")
+                                       ('hibernate "Hibernate")
+                                       ('power-off "PowerOff"))
+              "\n")))
+
+(define* (upower-service #:key (upower upower)
+                         (watts-up-pro? #f)
+                         (poll-batteries? #t)
+                         (ignore-lid? #f)
+                         (use-percentage-for-policy? #f)
+                         (percentage-low 10)
+                         (percentage-critical 3)
+                         (percentage-action 2)
+                         (time-low 1200)
+                         (time-critical 300)
+                         (time-action 120)
+                         (critical-power-action 'hybrid-sleep))
+  "Return a service that runs @uref{http://upower.freedesktop.org/,
+@command{upowerd}}, a system-wide monitor for power consumption and battery
+levels, with the given configuration settings.  It implements the
+@code{org.freedesktop.UPower} D-Bus interface, and is notably used by GNOME."
+  (mlet %store-monad ((config (upower-configuration-file
+                               #:watts-up-pro? watts-up-pro?
+                               #:poll-batteries? poll-batteries?
+                               #:ignore-lid? ignore-lid?
+                               #:use-percentage-for-policy? use-percentage-for-policy?
+                               #:percentage-low percentage-low
+                               #:percentage-critical percentage-critical
+                               #:percentage-action percentage-action
+                               #:time-low time-low
+                               #:time-critical time-critical
+                               #:time-action time-action
+                               #:critical-power-action critical-power-action)))
+    (return
+     (service
+      (documentation "Run the UPower power and battery monitor.")
+      (provision '(upower-daemon))
+      (requirement '(dbus-system udev))
+
+      (start #~(make-forkexec-constructor
+                (list (string-append #$upower "/libexec/upowerd"))
+                #:environment-variables
+                (list (string-append "UPOWER_CONF_FILE_NAME=" #$config))))
+      (stop #~(make-kill-destructor))
+      (activate #~(begin
+                    (use-modules (guix build utils))
+                    (mkdir-p "/var/lib/upower")
+                    (let ((user (getpwnam "upower")))
+                      (chown "/var/lib/upower"
+                             (passwd:uid user) (passwd:gid user)))))
+
+      (user-groups (list (user-group
+                          (name "upower")
+                          (system? #t))))
+      (user-accounts (list (user-account
+                            (name "upower")
+                            (group "upower")
+                            (system? #t)
+                            (comment "UPower daemon user")
+                            (home-directory "/var/empty")
+                            (shell
+                             #~(string-append #$shadow "/sbin/nologin")))))))))
+
+
+;;;
+;;; Colord D-Bus service.
+;;;
+
+(define* (colord-service #:key (colord colord))
+  "Return a service that runs @command{colord}, a system service with a D-Bus
+interface to manage the color profiles of input and output devices such as
+screens and scanners.  It is notably used by the GNOME Color Manager graphical
+tool.  See @uref{http://www.freedesktop.org/software/colord/, the colord web
+site} for more information."
+  (with-monad %store-monad
+    (return
+     (service
+      (documentation "Run the colord color management service.")
+      (provision '(colord-daemon))
+      (requirement '(dbus-system udev))
+
+      (start #~(make-forkexec-constructor
+                (list (string-append #$colord "/libexec/colord"))))
+      (stop #~(make-kill-destructor))
+      (activate #~(begin
+                    (use-modules (guix build utils))
+                    (mkdir-p "/var/lib/colord")
+                    (let ((user (getpwnam "colord")))
+                      (chown "/var/lib/colord"
+                             (passwd:uid user) (passwd:gid user)))))
+
+      (user-groups (list (user-group
+                          (name "colord")
+                          (system? #t))))
+      (user-accounts (list (user-account
+                            (name "colord")
+                            (group "colord")
+                            (system? #t)
+                            (comment "colord daemon user")
+                            (home-directory "/var/empty")
+                            (shell
+                             #~(string-append #$shadow "/sbin/nologin")))))))))
+
+(define %desktop-services
+  ;; List of services typically useful for a "desktop" use case.
+  (cons* (slim-service)
+
+         (avahi-service)
+         (wicd-service)
+         (upower-service)
+         (colord-service)
+         (dbus-service (list avahi wicd upower colord))
+
+         (ntp-service)
+         (lsh-service)
+
+         (map (lambda (mservice)
+                ;; Provide an nscd ready to use nss-mdns.
+                (mlet %store-monad ((service mservice))
+                  (if (memq 'nscd (service-provision service))
+                      (nscd-service (nscd-configuration)
+                                    #:name-services (list nss-mdns))
+                      mservice)))
+              %base-services)))
+
+;;; desktop.scm ends here
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index f9d262d977..102202c853 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -170,15 +170,33 @@ Protocol (DHCP) client, on all the non-loopback network interfaces."
                         ;; up*.  However, the relevant interfaces are
                         ;; typically down at this point.  Thus we perform our
                         ;; own interface discovery here.
-                        (let* ((valid? (negate loopback-network-interface?))
-                               (ifaces (filter valid?
-                                               (all-network-interfaces)))
-                               (pid    (fork+exec-command
-                                        (cons* #$dhclient "-nw"
-                                               "-pf" #$pid-file
-                                               ifaces))))
+                        (define valid?
+                          (negate loopback-network-interface?))
+                        (define ifaces
+                          (filter valid? (all-network-interfaces)))
+
+                        ;; XXX: Make sure the interfaces are up so that
+                        ;; 'dhclient' can actually send/receive over them.
+                        (for-each set-network-interface-up ifaces)
+
+                        (false-if-exception (delete-file #$pid-file))
+                        (let ((pid (fork+exec-command
+                                    (cons* #$dhclient "-nw"
+                                           "-pf" #$pid-file ifaces))))
                           (and (zero? (cdr (waitpid pid)))
-                               (call-with-input-file #$pid-file read)))))
+                               (let loop ()
+                                 (catch 'system-error
+                                   (lambda ()
+                                     (call-with-input-file #$pid-file read))
+                                   (lambda args
+                                     ;; 'dhclient' returned before PID-FILE
+                                     ;; was created, so try again.
+                                     (let ((errno (system-error-errno args)))
+                                       (if (= ENOENT errno)
+                                           (begin
+                                             (sleep 1)
+                                             (loop))
+                                           (apply throw args))))))))))
              (stop #~(make-kill-destructor))))))
 
 (define %ntp-servers
diff --git a/gnu/services/upower.scm b/gnu/services/upower.scm
deleted file mode 100644
index 3654c812f1..0000000000
--- a/gnu/services/upower.scm
+++ /dev/null
@@ -1,122 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015 Andy Wingo <wingo@igalia.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 services upower)
-  #:use-module (gnu services)
-  #:use-module (gnu system shadow)
-  #:use-module (gnu packages gnome)
-  #:use-module (ice-9 match)
-  #:use-module (guix monads)
-  #:use-module (guix store)
-  #:use-module (guix gexp)
-  #:export (upower-service))
-
-;;; Commentary:
-;;;
-;;; This module provides service definitions for the UPower power and battery
-;;; monitoring service.
-;;;
-;;; Code:
-
-(define* (configuration-file #:key watts-up-pro? poll-batteries? ignore-lid?
-                             use-percentage-for-policy? percentage-low
-                             percentage-critical percentage-action
-                             time-low time-critical time-action
-                             critical-power-action)
-  "Return an upower-daemon configuration file."
-  (define (bool value)
-    (if value "true\n" "false\n"))
-
-  (text-file "UPower.conf"
-             (string-append
-              "[UPower]\n"
-              "EnableWattsUpPro=" (bool watts-up-pro?)
-              "NoPollBatteries=" (bool (not poll-batteries?))
-              "IgnoreLid=" (bool ignore-lid?)
-              "UsePercentageForPolicy=" (bool use-percentage-for-policy?)
-              "PercentageLow=" (number->string percentage-low) "\n"
-              "PercentageCritical=" (number->string percentage-critical) "\n"
-              "PercentageAction=" (number->string percentage-action) "\n"
-              "TimeLow=" (number->string time-low) "\n"
-              "TimeCritical=" (number->string time-critical) "\n"
-              "TimeAction=" (number->string time-action) "\n"
-              "CriticalPowerAction=" (match critical-power-action
-                                       ('hybrid-sleep "HybridSleep")
-                                       ('hibernate "Hibernate")
-                                       ('power-off "PowerOff"))
-              "\n")))
-
-(define* (upower-service #:key (upower upower)
-                         (watts-up-pro? #f)
-                         (poll-batteries? #t)
-                         (ignore-lid? #f)
-                         (use-percentage-for-policy? #f)
-                         (percentage-low 10)
-                         (percentage-critical 3)
-                         (percentage-action 2)
-                         (time-low 1200)
-                         (time-critical 300)
-                         (time-action 120)
-                         (critical-power-action 'hybrid-sleep))
-  "Return a service that runs @uref{http://upower.freedesktop.org/,
-@command{upowerd}}, a system-wide monitor for power consumption and battery
-levels, with the given configuration settings.  It implements the
-@code{org.freedesktop.UPower} D-Bus interface, and is notably used by GNOME."
-  (mlet %store-monad ((config (configuration-file
-                               #:watts-up-pro? watts-up-pro?
-                               #:poll-batteries? poll-batteries?
-                               #:ignore-lid? ignore-lid?
-                               #:use-percentage-for-policy? use-percentage-for-policy?
-                               #:percentage-low percentage-low
-                               #:percentage-critical percentage-critical
-                               #:percentage-action percentage-action
-                               #:time-low time-low
-                               #:time-critical time-critical
-                               #:time-action time-action
-                               #:critical-power-action critical-power-action)))
-    (return
-     (service
-      (documentation "Run the UPower power and battery monitor.")
-      (provision '(upower-daemon))
-      (requirement '(dbus-system udev))
-
-      (start #~(make-forkexec-constructor
-                (list (string-append #$upower "/libexec/upowerd"))
-                #:environment-variables
-                (list (string-append "UPOWER_CONF_FILE_NAME=" #$config))))
-      (stop #~(make-kill-destructor))
-      (activate #~(begin
-                    (use-modules (guix build utils))
-                    (mkdir-p "/var/lib/upower")
-                    (let ((user (getpwnam "upower")))
-                      (chown "/var/lib/upower"
-                             (passwd:uid user) (passwd:gid user)))))
-
-      (user-groups (list (user-group
-                          (name "upower")
-                          (system? #t))))
-      (user-accounts (list (user-account
-                            (name "upower")
-                            (group "upower")
-                            (system? #t)
-                            (comment "UPower daemon user")
-                            (home-directory "/var/empty")
-                            (shell
-                             "/run/current-system/profile/sbin/nologin"))))))))
-
-;;; upower.scm ends here
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index c687b46bc2..9ee88170e4 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -37,7 +37,8 @@
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
   #:use-module (ice-9 match)
-  #:export (xorg-start-command
+  #:export (xorg-configuration-file
+            xorg-start-command
             %default-slim-theme
             %default-slim-theme-name
             slim-service))
@@ -48,12 +49,10 @@
 ;;;
 ;;; Code:
 
-(define* (xorg-start-command #:key
-                             (guile (canonical-package guile-2.0))
-                             (xorg-server xorg-server)
-                             (drivers '()) (resolutions '()))
-  "Return a derivation that builds a @var{guile} script to start the X server
-from @var{xorg-server}.  Usually the X server is started by a login manager.
+(define* (xorg-configuration-file #:key (drivers '()) (resolutions '())
+                                  (extra-config '()))
+  "Return a configuration file for the Xorg server containing search paths for
+all the common drivers.
 
 @var{drivers} must be either the empty list, in which case Xorg chooses a
 graphics driver automatically, or a list of driver names that will be tried in
@@ -61,8 +60,11 @@ this order---e.g., @code{(\"modesetting\" \"vesa\")}.
 
 Likewise, when @var{resolutions} is the empty list, Xorg chooses an
 appropriate screen resolution; otherwise, it must be a list of
-resolutions---e.g., @code{((1024 768) (640 480))}."
+resolutions---e.g., @code{((1024 768) (640 480))}.
 
+Last, @var{extra-config} is a list of strings or objects appended to the
+@code{text-file*} argument list.  It is used to pass extra text to be added
+verbatim to the configuration file."
   (define (device-section driver)
     (string-append "
 Section \"Device\"
@@ -78,15 +80,14 @@ Section \"Screen\"
   SubSection \"Display\"
     Modes "
   (string-join (map (match-lambda
-                     ((x y)
-                      (string-append "\"" (number->string x)
-                                     "x" (number->string y) "\"")))
+                      ((x y)
+                       (string-append "\"" (number->string x)
+                                      "x" (number->string y) "\"")))
                     resolutions)) "
   EndSubSection
 EndSection"))
 
-  (define (xserver.conf)
-    (text-file* "xserver.conf" "
+  (apply text-file* "xserver.conf" "
 Section \"Files\"
   FontPath \"" font-adobe75dpi "/share/fonts/X11/75dpi\"
   ModulePath \"" xf86-video-vesa "/lib/xorg/modules/drivers\"
@@ -98,6 +99,12 @@ Section \"Files\"
   ModulePath \"" xf86-video-nouveau "/lib/xorg/modules/drivers\"
   ModulePath \"" xf86-video-nv "/lib/xorg/modules/drivers\"
   ModulePath \"" xf86-video-sis "/lib/xorg/modules/drivers\"
+
+  # Libinput is the new thing and is recommended over evdev/synaptics
+  # by those who know:
+  # <http://who-t.blogspot.fr/2015/01/xf86-input-libinput-compatibility-with.html>.
+  ModulePath \"" xf86-input-libinput "/lib/xorg/modules/input\"
+
   ModulePath \"" xf86-input-evdev "/lib/xorg/modules/input\"
   ModulePath \"" xf86-input-keyboard "/lib/xorg/modules/input\"
   ModulePath \"" xf86-input-mouse "/lib/xorg/modules/input\"
@@ -111,12 +118,27 @@ Section \"ServerFlags\"
   Option \"AllowMouseOpenFail\" \"on\"
 EndSection
 "
-  (string-join (map device-section drivers) "\n")
+  (string-join (map device-section drivers) "\n") "\n"
   (string-join (map (cut screen-section <> resolutions)
                     drivers)
-               "\n")))
+               "\n")
+
+  "\n"
+  extra-config))
 
-  (mlet %store-monad ((config (xserver.conf)))
+(define* (xorg-start-command #:key
+                             (guile (canonical-package guile-2.0))
+                             configuration-file
+                             (xorg-server xorg-server))
+  "Return a derivation that builds a @var{guile} script to start the X server
+from @var{xorg-server}.  @var{configuration-file} is the server configuration
+file or a derivation that builds it; when omitted, the result of
+@code{xorg-configuration-file} is used.
+
+Usually the X server is started by a login manager."
+  (mlet %store-monad ((config (if configuration-file
+                                  (return configuration-file)
+                                  (xorg-configuration-file))))
     (define script
       ;; Write a small wrapper around the X server.
       #~(begin
@@ -192,7 +214,7 @@ which should be passed to this script as the first argument.  If not, the
 (define %default-slim-theme-name
   ;; This must be the name of the sub-directory in %DEFAULT-SLIM-THEME that
   ;; contains the actual theme files.
-  "0.8")
+  "0.x")
 
 (define* (slim-service #:key (slim slim)
                        (allow-empty-passwords? #t) auto-login?
@@ -207,6 +229,19 @@ which should be passed to this script as the first argument.  If not, the
 turn starts the X display server with @var{startx}, a command as returned by
 @code{xorg-start-command}.
 
+@cindex X session
+
+SLiM automatically looks for session types described by the @file{.desktop}
+files in @file{/run/current-system/profile/share/xsessions} and allows users
+to choose a session from the log-in screen using @kbd{F1}.  Packages such as
+@var{xfce}, @var{sawfish}, and @var{ratpoison} provide @file{.desktop} files;
+adding them to the system-wide set of packages automatically makes them
+available at the log-in screen.
+
+In addition, @file{~/.xsession} files are honored.  When available,
+@file{~/.xsession} must be an executable that starts a window manager
+and/or other X clients.
+
 When @var{allow-empty-passwords?} is true, allow logins with an empty
 password.  When @var{auto-login?} is true, log in automatically as
 @var{default-user} with @var{auto-login-session}.
@@ -217,7 +252,9 @@ theme to use.  In that case, @var{theme-name} specifies the name of the
 theme."
 
   (define (slim.cfg)
-    (mlet %store-monad ((startx  (or startx (xorg-start-command)))
+    (mlet %store-monad ((startx  (if startx
+                                     (return startx)
+                                     (xorg-start-command)))
                         (xinitrc (xinitrc #:fallback-session
                                           auto-login-session)))
       (text-file* "slim.cfg"  "
diff --git a/gnu/system.scm b/gnu/system.scm
index 609604a9b5..92ed454b2c 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -25,6 +25,7 @@
   #:use-module (guix packages)
   #:use-module (guix derivations)
   #:use-module (guix profiles)
+  #:use-module (guix ui)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages guile)
@@ -109,7 +110,7 @@
             (default %base-firmware))
 
   (host-name operating-system-host-name)          ; string
-  (hosts-file operating-system-hosts-file         ; M item | #f
+  (hosts-file operating-system-hosts-file         ; file-like | #f
               (default #f))
 
   (mapped-devices operating-system-mapped-devices ; list of <mapped-device>
@@ -119,7 +120,7 @@
                 (default '()))
 
   (users operating-system-users                   ; list of user accounts
-         (default '()))
+         (default %base-user-accounts))
   (groups operating-system-groups                 ; list of user groups
           (default %base-groups))
 
@@ -147,7 +148,7 @@
   (setuid-programs operating-system-setuid-programs
                    (default %setuid-programs))    ; list of string-valued gexps
 
-  (sudoers operating-system-sudoers               ; /etc/sudoers contents
+  (sudoers operating-system-sudoers               ; file-like
            (default %sudoers-specification)))
 
 
@@ -373,7 +374,7 @@ This is the GNU system.  Welcome.\n")
 
 (define (default-/etc/hosts host-name)
   "Return the default /etc/hosts file."
-  (text-file "hosts" (local-host-aliases host-name)))
+  (plain-file "hosts" (local-host-aliases host-name)))
 
 (define (emacs-site-file)
   "Return the Emacs 'site-start.el' file.  That file contains the necessary
@@ -439,11 +440,10 @@ on SHELLS.  /etc/shells is used by xterm, polkit, and other programs."
                         (pam-services '())
                         (profile "/run/current-system/profile")
                         hosts-file nss (shells '())
-                        (sudoers ""))
+                        (sudoers (plain-file "sudoers" "")))
   "Return a derivation that builds the static part of the /etc directory."
   (mlet* %store-monad
       ((pam.d      (pam-services->directory pam-services))
-       (sudoers    (text-file "sudoers" sudoers))
        (login.defs (text-file "login.defs" "# Empty for now.\n"))
        (shells     (shells-file shells))
        (emacs      (emacs-site-directory))
@@ -461,14 +461,40 @@ export TZDIR=\"" tzdata "/share/zoneinfo\"
 # Tell 'modprobe' & co. where to look for modules.
 export LINUX_MODULE_DIRECTORY=/run/booted-system/kernel/lib/modules
 
-export PATH=$HOME/.guix-profile/bin:/run/current-system/profile/bin
-export PATH=/run/setuid-programs:/run/current-system/profile/sbin:$PATH
+# These variables are honored by OpenSSL (libssl) and Git.
+export SSL_CERT_DIR=/etc/ssl/certs
+export SSL_CERT_FILE=\"$SSL_CERT_DIR/ca-certificates.crt\"
+export GIT_SSL_CAINFO=\"$SSL_CERT_FILE\"
+
+# Crucial variables that could be missing the the profiles' 'etc/profile'
+# because they would require combining both profiles.
+# FIXME: See <http://bugs.gnu.org/20255>.
 export MANPATH=$HOME/.guix-profile/share/man:/run/current-system/profile/share/man
 export INFOPATH=$HOME/.guix-profile/share/info:/run/current-system/profile/share/info
-
 export XDG_DATA_DIRS=$HOME/.guix-profile/share:/run/current-system/profile/share
 export XDG_CONFIG_DIRS=$HOME/.guix-profile/etc/xdg:/run/current-system/profile/etc/xdg
 
+# Ignore the default value of 'PATH'.
+unset PATH
+
+# Load the system profile's settings.
+GUIX_PROFILE=/run/current-system/profile \\
+. /run/current-system/profile/etc/profile
+
+# Prepend setuid programs.
+export PATH=/run/setuid-programs:$PATH
+
+if [ -f \"$HOME/.guix-profile/etc/profile\" ]
+then
+  # Load the user profile's settings.
+  GUIX_PROFILE=\"$HOME/.guix-profile\" \\
+  . \"$HOME/.guix-profile/etc/profile\"
+else
+  # At least define this one so that basic things just work
+  # when the user installs their first package.
+  export PATH=\"$HOME/.guix-profile/bin:$PATH\"
+fi
+
 # Append the directory of 'site-start.el' to the search path.
 export EMACSLOADPATH=:/etc/emacs
 
@@ -476,18 +502,13 @@ export EMACSLOADPATH=:/etc/emacs
 # when /etc/machine-id is missing.  Make sure these warnings are non-fatal.
 export DBUS_FATAL_WARNINGS=0
 
-# These variables are honored by OpenSSL (libssl) and Git.
-export SSL_CERT_DIR=/etc/ssl/certs
-export SSL_CERT_FILE=\"$SSL_CERT_DIR/ca-certificates.crt\"
-export GIT_SSL_CAINFO=\"$SSL_CERT_FILE\"
-
 # Allow Aspell to find dictionaries installed in the user profile.
 export ASPELL_CONF=\"dict-dir $HOME/.guix-profile/lib/aspell\"
 
 if [ -n \"$BASH_VERSION\" -a -f /etc/bashrc ]
 then
   # Load Bash-specific initialization code.
-  source /etc/bashrc
+  . /etc/bashrc
 fi
 "))
 
@@ -519,7 +540,7 @@ fi\n"))
                   ("hosts" ,#~#$hosts-file)
                   ("localtime" ,#~(string-append #$tzdata "/share/zoneinfo/"
                                                  #$timezone))
-                  ("sudoers" ,#~#$sudoers)))))
+                  ("sudoers" ,sudoers)))))
 
 (define (operating-system-profile os)
   "Return a derivation that builds the system profile of OS."
@@ -549,6 +570,37 @@ fi\n"))
     (return (append users
                     (append-map service-user-accounts services)))))
 
+(define (maybe-string->file file-name thing)
+  "If THING is a string, return a <plain-file> with THING as its content.
+Otherwise just return THING.
+
+This is for backward-compatibility of fields that used to be strings and are
+now file-like objects.."
+  (match thing
+    ((? string?)
+     (warning (_ "using a string for file '~a' is deprecated; \
+use 'plain-file' instead~%")
+              file-name)
+     (plain-file file-name thing))
+    (x
+     x)))
+
+(define (maybe-file->monadic file-name thing)
+  "If THING is a value in %STORE-MONAD, return it as is; otherwise return
+THING in the %STORE-MONAD.
+
+This is for backward-compatibility of fields that used to be monadic values
+and are now file-like objects."
+  (with-monad %store-monad
+    (match thing
+      ((? procedure?)
+       (warning (_ "using a monadic value for '~a' is deprecated; \
+use 'plain-file' instead~%")
+                file-name)
+       thing)
+      (x
+       (return x)))))
+
 (define (operating-system-etc-directory os)
   "Return that static part of the /etc directory of OS."
   (mlet* %store-monad
@@ -559,8 +611,10 @@ fi\n"))
                              (append-map service-pam-services services)))
        (profile-drv (operating-system-profile os))
        (skeletons   (operating-system-skeletons os))
-       (/etc/hosts  (or (operating-system-hosts-file os)
-                        (default-/etc/hosts (operating-system-host-name os))))
+       (/etc/hosts  (maybe-file->monadic
+                     "hosts"
+                     (or (operating-system-hosts-file os)
+                         (default-/etc/hosts (operating-system-host-name os)))))
        (shells      (user-shells os)))
    (etc-directory #:pam-services pam-services
                   #:skeletons skeletons
@@ -570,7 +624,9 @@ fi\n"))
                   #:timezone (operating-system-timezone os)
                   #:hosts-file /etc/hosts
                   #:shells shells
-                  #:sudoers (operating-system-sudoers os)
+                  #:sudoers (maybe-string->file
+                             "sudoers"
+                             (operating-system-sudoers os))
                   #:profile profile-drv)))
 
 (define %setuid-programs
@@ -587,8 +643,9 @@ fi\n"))
   ;; group can do anything.  See
   ;; <http://www.sudo.ws/sudo/man/1.8.10/sudoers.man.html>.
   ;; TODO: Add a declarative API.
-  "root ALL=(ALL) ALL
-%wheel ALL=(ALL) ALL\n")
+  (plain-file "sudoers" "\
+root ALL=(ALL) ALL
+%wheel ALL=(ALL) ALL\n"))
 
 (define (user-group->gexp group)
   "Turn GROUP, a <user-group> object, into a list-valued gexp suitable for
@@ -665,6 +722,8 @@ etc."
     (define group-specs
       (map user-group->gexp groups))
 
+    (assert-valid-users/groups accounts groups)
+
     (gexp->file "activate"
                 #~(begin
                     (eval-when (expand load eval)
diff --git a/gnu/system/os-config.tmpl b/gnu/system/examples/bare-bones.tmpl
index e14c95733a..dc5cfc81a4 100644
--- a/gnu/system/os-config.tmpl
+++ b/gnu/system/examples/bare-bones.tmpl
@@ -1,12 +1,13 @@
-;; This is an operating system configuration template.
+;; This is an operating system configuration template
+;; for a "bare bones" setup, with no X11 display server.
 
 (use-modules (gnu))
-(use-service-modules xorg networking dbus avahi)
-(use-package-modules xorg avahi)
+(use-service-modules networking ssh)
+(use-package-modules admin)
 
 (operating-system
-  (host-name "antelope")
-  (timezone "Europe/Paris")
+  (host-name "komputilo")
+  (timezone "Europe/Berlin")
   (locale "en_US.UTF-8")
 
   ;; Assuming /dev/sdX is the target hard disk, and "root" is
@@ -22,7 +23,7 @@
   ;; This is where user accounts are specified.  The "root"
   ;; account is implicit, and is initially created with the
   ;; empty password.
-  (users (list (user-account
+  (users (cons (user-account
                 (name "alice")
                 (comment "Bob's sister")
                 (group "users")
@@ -33,15 +34,14 @@
                 ;; and access the webcam.
                 (supplementary-groups '("wheel"
                                         "audio" "video"))
-                (home-directory "/home/alice"))))
+                (home-directory "/home/alice"))
+               %base-user-accounts))
 
   ;; Globally-installed packages.
-  (packages (cons xterm %base-packages))
+  (packages (cons tcpdump %base-packages))
 
-  ;; Add services to the baseline: the SLiM log-in manager
-  ;; for Xorg sessions, a DHCP client, Avahi, and D-Bus.
-  (services (cons* (slim-service)
-                   (dhcp-client-service)
-                   (avahi-service)
-                   (dbus-service (list avahi))
+  ;; Add services to the baseline: a DHCP client and
+  ;; an SSH server.
+  (services (cons* (dhcp-client-service)
+                   (lsh-service #:port-number 2222)
                    %base-services)))
diff --git a/gnu/system/examples/desktop.tmpl b/gnu/system/examples/desktop.tmpl
new file mode 100644
index 0000000000..988b8f937f
--- /dev/null
+++ b/gnu/system/examples/desktop.tmpl
@@ -0,0 +1,44 @@
+;; This is an operating system configuration template
+;; for a "desktop" setup with X11.
+
+(use-modules (gnu) (gnu system nss))
+(use-service-modules desktop)
+(use-package-modules xfce ratpoison wicd avahi xorg certs)
+
+(operating-system
+  (host-name "antelope")
+  (timezone "Europe/Paris")
+  (locale "en_US.UTF-8")
+
+  ;; Assuming /dev/sdX is the target hard disk, and "root" is
+  ;; the label of the target root file system.
+  (bootloader (grub-configuration (device "/dev/sdX")))
+  (file-systems (cons (file-system
+                        (device "root")
+                        (title 'label)
+                        (mount-point "/")
+                        (type "ext4"))
+                      %base-file-systems))
+
+  (users (cons (user-account
+                (name "bob")
+                (comment "Alice's brother")
+                (group "users")
+                (supplementary-groups '("wheel" "netdev"
+                                        "audio" "video"))
+                (home-directory "/home/bob"))
+               %base-user-accounts))
+
+  ;; Add Xfce and Ratpoison; that allows us to choose
+  ;; sessions using either of these at the log-in screen.
+  (packages (cons* xfce ratpoison    ;desktop environments
+                   xterm wicd avahi  ;useful tools
+                   nss-certs         ;for HTTPS access
+                   %base-packages))
+
+  ;; Use the "desktop" services, which include the X11
+  ;; log-in service, networking with Wicd, and more.
+  (services %desktop-services)
+
+  ;; Allow resolution of '.local' host names with mDNS.
+  (name-service-switch %mdns-host-lookup-nss))
diff --git a/gnu/system/grub.scm b/gnu/system/grub.scm
index 17b08aa9b7..e49b6dbe54 100644
--- a/gnu/system/grub.scm
+++ b/gnu/system/grub.scm
@@ -80,7 +80,8 @@
 (define %background-image
   (grub-image
    (aspect-ratio 4/3)
-   (file #~(string-append #$%artwork-repository "/grub/GuixSD-4-3.svg"))))
+   (file #~(string-append #$%artwork-repository
+                          "/grub/GuixSD-fully-black-4-3.svg"))))
 
 (define %default-theme
   ;; Default theme contributed by Felipe López.
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 2fd35e8c48..27d8ecdefc 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,6 +25,7 @@
   #:use-module ((guix store) #:select (%store-prefix))
   #:use-module (guix profiles)
   #:use-module (gnu packages admin)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages cryptsetup)
   #:use-module (gnu packages package-management)
@@ -31,6 +33,8 @@
   #:use-module (gnu packages grub)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages compression)
+  #:use-module (ice-9 match)
+  #:use-module (srfi srfi-26)
   #:export (self-contained-tarball
             installation-os))
 
@@ -67,7 +71,16 @@ under /root/.guix-profile where GUIX is installed."
           ;; length limitation.
           (with-directory-excursion %root
             (zero? (system* "tar" "--xz" "--format=gnu"
-                            "-cvf" #$output ".")))))
+                            "--owner=root:0" "--group=root:0"
+                            "-cvf" #$output
+                            ;; Avoid adding / and /var to the tarball,
+                            ;; so that the ownership and permissions of those
+                            ;; directories will not be overwritten when
+                            ;; extracting the archive.  Do not include /root
+                            ;; because the root account might have a different
+                            ;; home directory.
+                            "./var/guix"
+                            (string-append "." (%store-directory)))))))
 
     (gexp->derivation "guix-tarball.tar.xz" build
                       #:references-graphs `(("profile" ,profile))
@@ -171,12 +184,17 @@ the given target.")
   "Return a dummy service whose purpose is to install an operating system
 configuration template file in the installation system."
 
-  (define local-template
-    "/etc/configuration-template.scm")
-  (define template
-    (search-path %load-path "gnu/system/os-config.tmpl"))
+  (define search
+    (cut search-path %load-path <>))
+  (define templates
+    (map (match-lambda
+           ((file '-> target)
+            (list (local-file (search file))
+                  (string-append "/etc/configuration/" target))))
+         '(("gnu/system/examples/bare-bones.tmpl" -> "bare-bones.scm")
+           ("gnu/system/examples/desktop.tmpl" -> "desktop.scm"))))
 
-  (mlet %store-monad ((template (interned-file template)))
+  (with-monad %store-monad
     (return (service
              (requirement '(root-file-system))
              (provision '(os-config-template))
@@ -185,8 +203,16 @@ configuration template file in the installation system."
              (start #~(const #t))
              (stop  #~(const #f))
              (activate
-              #~(unless (file-exists? #$local-template)
-                  (copy-file #$template #$local-template)))))))
+              #~(begin
+                  (use-modules (ice-9 match)
+                               (guix build utils))
+
+                  (mkdir-p "/etc/configuration")
+                  (for-each (match-lambda
+                              ((file target)
+                               (unless (file-exists? target)
+                                 (copy-file file target))))
+                            '#$templates)))))))
 
 (define %nscd-minimal-caches
   ;; Minimal in-memory caching policy for nscd.
@@ -316,6 +342,7 @@ Use Alt-F2 for documentation.
                      ;; 2.0.0a, that pulls Guile 1.8, which takes unreasonable
                      ;; space; furthermore util-linux's fdisk is already
                      ;; available here, so we keep that.
+                     bash-completion
                      %base-packages))))
 
 ;; Return it here so 'guix system' can consume it directly.
diff --git a/gnu/system/nss.scm b/gnu/system/nss.scm
index ec2d2517e7..f4d2855289 100644
--- a/gnu/system/nss.scm
+++ b/gnu/system/nss.scm
@@ -29,6 +29,8 @@
             lookup-specification
 
             %default-nss
+            %mdns-host-lookup-nss
+
             %files
             %compat
             %dns
@@ -148,6 +150,27 @@
   ;; Default NSS configuration.
   (name-service-switch))
 
+(define %mdns-host-lookup-nss
+  (name-service-switch
+    (hosts (list %files                           ;first, check /etc/hosts
+
+                 ;; If the above did not succeed, try with 'mdns_minimal'.
+                 (name-service
+                   (name "mdns_minimal")
+
+                   ;; 'mdns_minimal' is authoritative for '.local'.  When it
+                   ;; returns "not found", no need to try the next methods.
+                   (reaction (lookup-specification
+                              (not-found => return))))
+
+                 ;; Then fall back to DNS.
+                 (name-service
+                   (name "dns"))
+
+                 ;; Finally, try with the "full" 'mdns'.
+                 (name-service
+                   (name "mdns"))))))
+
 
 ;;;
 ;;; Serialization.
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index 16b9e4b555..aa97652678 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -21,12 +21,17 @@
   #:use-module (guix gexp)
   #:use-module (guix store)
   #:use-module (guix monads)
+  #:use-module (guix sets)
+  #:use-module (guix ui)
   #:use-module ((gnu system file-systems)
                 #:select (%tty-gid))
   #:use-module ((gnu packages admin)
                 #:select (shadow))
   #:use-module (gnu packages bash)
   #:use-module (gnu packages guile-wm)
+  #:use-module (srfi srfi-26)
+  #:use-module (srfi srfi-34)
+  #:use-module (srfi srfi-35)
   #:export (user-account
             user-account?
             user-account-name
@@ -48,7 +53,9 @@
 
             default-skeletons
             skeleton-directory
-            %base-groups))
+            %base-groups
+            %base-user-accounts
+            assert-valid-users/groups))
 
 ;;; Commentary:
 ;;;
@@ -107,6 +114,16 @@
           (system-group (name "tape"))
           (system-group (name "kvm")))))             ; for /dev/kvm
 
+(define %base-user-accounts
+  ;; List of standard user accounts.  Note that "root" is a special case, so
+  ;; it's not listed here.
+  (list (user-account
+         (name "nobody")
+         (uid 65534)
+         (group "nogroup")
+         (home-directory "/var/empty")
+         (system? #t))))
+
 (define (default-skeletons)
   "Return the default skeleton files for /etc/skel.  These files are copied by
 'useradd' in the home directory of newly created user accounts."
@@ -176,4 +193,31 @@ set debug-file-directory ~/.guix-profile/lib/debug\n")))
                                   '#$skeletons)
                         #t)))
 
+(define (assert-valid-users/groups users groups)
+  "Raise an error if USERS refer to groups not listed in GROUPS."
+  (let ((groups (list->set (map user-group-name groups))))
+    (define (validate-supplementary-group user group)
+      (unless (set-contains? groups group)
+        (raise (condition
+                (&message
+                 (message
+                  (format #f (_ "supplementary group '~a' \
+of user '~a' is undeclared")
+                          group
+                          (user-account-name user))))))))
+
+    (for-each (lambda (user)
+                (unless (set-contains? groups (user-account-group user))
+                  (raise (condition
+                          (&message
+                           (message
+                            (format #f (_ "primary group '~a' \
+of user '~a' is undeclared")
+                                    (user-account-group user)
+                                    (user-account-name user)))))))
+
+                (for-each (cut validate-supplementary-group user <>)
+                          (user-account-supplementary-groups user)))
+              users)))
+
 ;;; shadow.scm ends here