summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS1
-rw-r--r--THANKS1
-rw-r--r--doc/guix.texi10
-rw-r--r--gnu-system.am3
-rw-r--r--gnu/build/install.scm1
-rw-r--r--gnu/packages/audio.scm67
-rw-r--r--gnu/packages/bioinformatics.scm15
-rw-r--r--gnu/packages/game-development.scm44
-rw-r--r--gnu/packages/games.scm57
-rw-r--r--gnu/packages/gstreamer.scm46
-rw-r--r--gnu/packages/guile.scm78
-rw-r--r--gnu/packages/image.scm17
-rw-r--r--gnu/packages/java.scm386
-rw-r--r--gnu/packages/libreoffice.scm81
-rw-r--r--gnu/packages/patches/gstreamer-0.10-bison3.patch32
-rw-r--r--gnu/packages/patches/gstreamer-0.10-silly-test.patch14
-rw-r--r--gnu/packages/python.scm62
-rw-r--r--gnu/packages/tbb.scm2
-rw-r--r--gnu/packages/video.scm53
-rw-r--r--guix/build/download.scm65
-rw-r--r--guix/derivations.scm12
-rw-r--r--guix/download.scm3
-rw-r--r--guix/gexp.scm2
-rwxr-xr-xguix/scripts/substitute.scm1
-rw-r--r--guix/serialization.scm7
25 files changed, 774 insertions, 286 deletions
diff --git a/AUTHORS b/AUTHORS
index fa1835b707..e2dafe0b34 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -35,5 +35,6 @@ alphabetical order):
           David Thompson <dthompson2@worcester.edu>
            Paul van der Walt <paul@denknerd.org>
         Mark H. Weaver <mhw@netris.org>
+ Christopher A. Webber <cwebber@dustycloud.org>
            Andy Wingo <wingo@pobox.com>
         Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
diff --git a/THANKS b/THANKS
index ff9714ebec..36c2a3ae1b 100644
--- a/THANKS
+++ b/THANKS
@@ -31,6 +31,7 @@ infrastructure help:
              Adam Pribyl <pribyl@lowlevel.cz>
             Pjotr Prins <pjotr.public12@thebird.nl>
                   rekado <rekado@elephly.net>
+           Joshua Randall <jcrandall@alum.mit.edu>
       Bruno Félix Rezende Ribeiro <oitofelix@gnu.org>
 	   Cyrill Schenkel <cyrill.schenkel@gmail.com>
 	    Benno Schulenberg <coordinator@translationproject.org>
diff --git a/doc/guix.texi b/doc/guix.texi
index 4269d4fa5f..dd6af80965 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -2187,7 +2187,7 @@ a derivation is the @code{derivation} procedure:
   @var{args} [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] @
   [#:recursive? #f] [#:inputs '()] [#:env-vars '()] @
   [#:system (%current-system)] [#:references-graphs #f] @
-  [#:allowed-references #f] [#:local-build? #f]
+  [#:allowed-references #f] [#:leaked-env-vars #f] [#:local-build? #f]
 Build a derivation with the given arguments, and return the resulting
 @code{<derivation>} object.
 
@@ -2206,6 +2206,13 @@ a simple text format.
 When @var{allowed-references} is true, it must be a list of store items
 or outputs that the derivation's output may refer to.
 
+When @var{leaked-env-vars} is true, it must be a list of strings
+denoting environment variables that are allowed to ``leak'' from the
+daemon's environment to the build environment.  This is only applicable
+to fixed-output derivations---i.e., when @var{hash} is true.  The main
+use is to allow variables such as @code{http_proxy} to be passed to
+derivations that download files.
+
 When @var{local-build?} is true, declare that the derivation is not a
 good candidate for offloading and should rather be built locally
 (@pxref{Daemon Offload Setup}).  This is the case for small derivations
@@ -2728,6 +2735,7 @@ information about monads.)
        [#:recursive? #f] [#:env-vars '()] [#:modules '()] @
        [#:module-path @var{%load-path}] @
        [#:references-graphs #f] [#:allowed-references #f] @
+       [#:leaked-env-vars #f] @
        [#:local-build? #f] [#:guile-for-build #f]
 Return a derivation @var{name} that runs @var{exp} (a gexp) with
 @var{guile-for-build} (a derivation) on @var{system}.  When @var{target}
diff --git a/gnu-system.am b/gnu-system.am
index 2692394519..26228fccfa 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -175,6 +175,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/libftdi.scm			\
   gnu/packages/libidn.scm			\
   gnu/packages/libphidget.scm			\
+  gnu/packages/libreoffice.scm			\
   gnu/packages/libsigsegv.scm			\
   gnu/packages/libunistring.scm			\
   gnu/packages/libusb.scm			\
@@ -440,8 +441,6 @@ dist_patch_DATA =						\
   gnu/packages/patches/grep-CVE-2015-1345.patch			\
   gnu/packages/patches/grub-gets-undeclared.patch		\
   gnu/packages/patches/grub-freetype.patch			\
-  gnu/packages/patches/gstreamer-0.10-bison3.patch		\
-  gnu/packages/patches/gstreamer-0.10-silly-test.patch		\
   gnu/packages/patches/guile-1.8-cpp-4.5.patch			\
   gnu/packages/patches/guile-arm-fixes.patch			\
   gnu/packages/patches/guile-default-utf8.patch			\
diff --git a/gnu/build/install.scm b/gnu/build/install.scm
index f019fcb417..76536daf49 100644
--- a/gnu/build/install.scm
+++ b/gnu/build/install.scm
@@ -121,6 +121,7 @@ STORE."
     (directory "/bin")
     (directory "/tmp" 0 0 #o1777)                 ; sticky bit
     (directory "/var/tmp" 0 0 #o1777)
+    (directory "/var/lock" 0 0 #o1777)
 
     (directory "/root" 0 0)                       ; an exception
     (directory "/home" 0 0)))
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index c5c1a77b2f..6cba704b6d 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -1156,6 +1156,73 @@ compression modes.  This package contains command-line programs and library to
 encode and decode wavpack files.")
     (license license:bsd-3)))
 
+(define-public libmodplug
+  (package
+    (name "libmodplug")
+    (version "0.8.8.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://sourceforge/project/modplug-xmms/"
+                    name "/" version "/" name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1bfsladg7h6vnii47dd66f5vh1ir7qv12mfb8n36qiwrxq92sikp"))))
+    (build-system gnu-build-system)
+    (home-page "http://modplug-xmms.sourceforge.net/")
+    (synopsis "Mod file playing library")
+    (description
+     "Libmodplug renders mod music files as raw audio data, for playing or
+conversion.  mod, .s3m, .it, .xm, and a number of lesser-known formats are
+supported.  Optional features include high-quality resampling, bass expansion,
+surround and reverb.")
+    (license license:public-domain)))
+
+(define-public libxmp
+  (package
+    (name "libxmp")
+    (version "4.3.8")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/xmp/libxmp/"
+                                  name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0h06091hlpgc6ds4pjmfq8sx4snw7av3nhny180q4pwfyasjb6ny"))))
+    (build-system gnu-build-system)
+    (home-page "http://xmp.sourceforge.net/")
+    (synopsis "Module player library")
+    (description
+     "Libxmp is a library that renders module files to PCM data.  It supports
+over 90 mainstream and obscure module formats including Protracker (MOD),
+Scream Tracker 3 (S3M), Fast Tracker II (XM), and Impulse Tracker (IT).")
+    (license license:lgpl2.1+)))
+
+(define-public xmp
+  (package
+    (name "xmp")
+    (version "4.0.10")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/xmp/xmp/"
+                                  name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0gjylvvmq7ha0nhcjg56qfp0xxpsrcsj7y5r914svd5x1ppmzm5n"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libxmp" ,libxmp)
+       ("pulseaudio" ,pulseaudio)))
+    (home-page "http://xmp.sourceforge.net/")
+    (synopsis "Extended module player")
+    (description
+     "Xmp is a portable module player that plays over 90 mainstream and
+obscure module formats, including Protracker MOD, Fasttracker II XM, Scream
+Tracker 3 S3M and Impulse Tracker IT files.")
+    (license license:gpl2+)))
+
 (define-public soundtouch
   (package
     (name "soundtouch")
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index ccfda627f3..bcb7eba48f 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -623,15 +623,20 @@ results.  The FASTX-Toolkit tools perform some of these preprocessing tasks.")
                 "13jaykc3y1x8y5nn9j8ljnb79s5y51kyxz46hdmvvjj6qhyympmf"))))
     (build-system cmake-build-system)
     (arguments
-     `(;; There is no test target, although there is a directory containing
-       ;; test data and scripts (launched by flexbar_validate.sh).
-       #:tests? #f
-       #:configure-flags (list
+     `(#:configure-flags (list
                           (string-append "-DFLEXBAR_BINARY_DIR="
                                          (assoc-ref %outputs "out")
                                          "/bin/"))
        #:phases
-       (alist-delete 'install %standard-phases)))
+       (alist-replace
+        'check
+        (lambda* (#:key outputs #:allow-other-keys)
+          (setenv "PATH" (string-append
+                          (assoc-ref outputs "out") "/bin:"
+                          (getenv "PATH")))
+          (chdir "../flexbar_v2.5_src/test")
+          (zero? (system* "bash" "flexbar_validate.sh")))
+        (alist-delete 'install %standard-phases))))
     (inputs
      `(("tbb" ,tbb)
        ("zlib" ,zlib)))
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 0e6a1d5b89..219176722a 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -25,7 +25,15 @@
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
   #:use-module (gnu packages qt)
-  #:use-module (gnu packages compression))
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages zip)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages audio)
+  #:use-module (gnu packages pulseaudio))
 
 (define-public bullet
   (package
@@ -85,3 +93,37 @@ clone.")
     ;; As noted in 'COPYING', part of it is under GPLv2+, while the rest is
     ;; under BSD-2.
     (license license:gpl2+)))
+
+(define-public sfml
+  (package
+    (name "sfml")
+    (version "2.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://mirror0.sfml-dev.org/files/SFML-"
+                                  version "-sources.zip"))
+              (sha256
+               (base32
+                "1xhkvgyfbhqsjdmfbxvk729kdrzh7kdyagxa3bvpzi6z43mh1frd"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:tests? #f)) ; no tests
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (inputs
+     `(("mesa" ,mesa)
+       ("glew" ,glew)
+       ("libx11" ,libx11)
+       ("libxrandr" ,libxrandr)
+       ("eudev" ,eudev)
+       ("freetype" ,freetype)
+       ("libjpeg" ,libjpeg)
+       ("libsndfile" ,libsndfile)
+       ("openal" ,openal)))
+    (home-page "http://www.sfml-dev.org")
+    (synopsis "Simple and Fast Multimedia Library")
+    (description
+     "SFML provides a simple interface to the various computer components,
+to ease the development of games and multimedia applications.  It is composed
+of five modules: system, window, graphics, audio and network.")
+    (license license:zlib)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 192d0db397..d86e151a85 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
+;;; Copyright © 2015 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -42,6 +43,7 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages libcanberra)
+  #:use-module (gnu packages libunwind)
   #:use-module (gnu packages image)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages python)
@@ -65,6 +67,7 @@
   #:use-module (gnu packages lua)
   #:use-module (gnu packages video)
   #:use-module (gnu packages xml)
+  #:use-module (gnu packages tcl)
   #:use-module (guix build-system trivial)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
@@ -822,3 +825,57 @@ interfaces or even in Emacs.  It supports the standard game storage format
 Modem Protocol).")
     (home-page "http://www.gnu.org/software/gnugo/")
     (license license:gpl3+)))
+
+(define-public extremetuxracer
+  (package
+    (name "extremetuxracer")
+    (version "0.6.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://downloads.sourceforge.net/project/extremetuxracer/releases/"
+                    version "/etr-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0fl9pwkywqnsmgr6plfj9zb05xrdnl5xb2hcmbjk7ap9l4cjfca4"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("freetype" ,freetype)
+       ("mesa" ,mesa)
+       ("glu" ,glu)
+       ("libice" ,libice)
+       ("libpng" ,libpng)
+       ("sdl" ,sdl)
+       ("sdl-mixer" ,sdl-mixer)
+       ("sdl-image" ,sdl-image)
+       ("libsm" ,libsm)
+       ("libunwind" ,libunwind)
+       ("libx11" ,libx11)
+       ("libxext" ,libxext)
+       ("libxi" ,libxi)
+       ("libxmu" ,libxmu)
+       ("libxt" ,libxt)
+       ("tcl" ,tcl)
+       ("zlib" ,zlib)))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'configure 'patch-makefile
+           (lambda _
+             (substitute* "Makefile"
+               (("CXXFLAGS =") "CXXFLAGS = ${CFLAGS}")))))))
+    (synopsis "High speed arctic racing game based on Tux Racer")
+    ;; Snarfed straight from Debian
+    (description "Extreme Tux Racer, or etracer as it is called for short, is
+a simple OpenGL racing game featuring Tux, the Linux mascot.  The goal of the
+game is to slide down a snow- and ice-covered mountain as quickly as possible,
+avoiding the trees and rocks that will slow you down.
+
+Collect herrings and other goodies while sliding down the hill, but avoid fish
+bones.
+
+This game is based on the GPL version of the famous game TuxRacer.")
+    (home-page "http://sourceforge.net/projects/extremetuxracer/")
+    (license license:gpl2+)))
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index b882208d76..03aecdfa53 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -124,32 +124,6 @@ simple plugin with a clean, generic interface.
 This package provides the core library and elements.")
     (license lgpl2.0+)))
 
-(define-public gstreamer-0.10
-  (package (inherit gstreamer)
-    (version "0.10.36")
-    (source
-     (origin
-      (method url-fetch)
-      (uri (string-append "http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-"
-                          version ".tar.xz"))
-      (sha256
-       (base32
-        "1nkid1n2l3rrlmq5qrf5yy06grrkwjh3yxl5g0w58w0pih8allci"))
-      (patches
-        (list (search-patch "gstreamer-0.10-bison3.patch")
-              (search-patch "gstreamer-0.10-silly-test.patch")))))
-    (propagated-inputs
-     `(("libxml2" ,libxml2)))
-    (inputs `(("glib" ,glib)))
-    (native-inputs
-     `(("bison" ,bison)
-       ("flex" ,flex)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("glib" ,glib "bin")
-       ("python" ,python-2)))))
-
-
 (define-public gst-plugins-base
   (package
     (name "gst-plugins-base")
@@ -288,23 +262,3 @@ developers consider to have good quality code and correct functionality.")
      "This GStreamer plugin supports a large number of audio and video
 compression formats through the use of the libav library.")
     (license gpl2+)))
-
-(define-public gst-plugins-base-0.10
-  (package (inherit gst-plugins-base)
-    (version "0.10.36")
-    (source
-     (origin
-      (method url-fetch)
-      (uri (string-append 
-            "http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-"
-            version ".tar.xz"))
-      (sha256
-       (base32
-        "0jp6hjlra98cnkal4n6bdmr577q8mcyp3c08s3a02c4hjhw5rr0z"))))
-    (inputs
-     `(("glib" ,glib)
-       ("gstreamer" ,gstreamer-0.10)))
-    (native-inputs
-      `(("pkg-config" ,pkg-config)
-        ("glib" ,glib "bin")
-        ("python" ,python-2)))))
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index c605533fd2..751002f54c 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,7 +37,9 @@
   #:use-module (gnu packages base)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
   #:use-module (guix utils)
   #:use-module (ice-9 match))
 
@@ -358,4 +361,79 @@ http:://json.org specification.  These are the main features:
 - Allows JSON pretty printing.")
     (license lgpl3+)))
 
+(define-public guile-minikanren
+  (package
+    (name "guile-minikanren")
+    (version "20150424.e844d85")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ijp/minikanren.git")
+                    (commit "e844d85512f8c055d3f96143ee506007389a25e3")))
+              (sha256
+               (base32
+                "0r50jlpzi940jlmxyy3ddqqwmj5r12gb4bcv0ssini9v8km13xz6"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules
+       ((guix build utils)
+        (ice-9 match))
+       #:builder
+       (begin
+         (use-modules (guix build utils)
+                      (ice-9 match))
+         (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"))
+                (scm-files '("minikanren.scm"
+                             "minikanren/mkextraforms.scm"
+                             "minikanren/mkprelude.scm"
+                             "minikanren/mk.scm"))
+                (guild (string-append (assoc-ref %build-inputs "guile")
+                                      "/bin/guild")))
+           ;; Make installation directories.
+           (mkdir-p (string-append module-dir "/minikanren"))
+           (mkdir-p doc)
+
+           ;; Compile .scm files and install.
+           (chdir source)
+           (setenv "GUILE_AUTO_COMPILE" "0")
+           (for-each (lambda (file)
+                       (let* ((dest-file (string-append module-dir "/"
+                                                        file ".scm"))
+                              (go-file (match (string-split file #\.)
+                                         ((base _)
+                                          (string-append module-dir "/"
+                                                         base ".go")))))
+                         ;; Install source module.
+                         (copy-file file dest-file)
+                         ;; Install compiled module.
+                         (unless (zero? (system* guild "compile"
+                                                 "-L" source
+                                                 "-o" go-file
+                                                 file))
+                           (error (format #f "Failed to compile ~s to ~s!"
+                                          file go-file)))))
+                     scm-files)
+
+           ;; Also copy over the README.
+           (copy-file "README.org" (string-append doc "/README.org"))
+           #t))))
+    (inputs
+     `(("guile" ,guile-2.0)))
+    (home-page "https://github.com/ijp/minikanren")
+    (synopsis "miniKanren declarative logic system, packaged for Guile")
+    (description
+     "MiniKanren is a relational programming extension to the Scheme
+programming Language, written as a smaller version of Kanren suitable for
+pedagogical purposes.  It is featured in the book, The Reasoned Schemer,
+written by Dan Friedman, William Byrd, and Oleg Kiselyov.
+
+This is Ian Price's r6rs packaged version of miniKranen, which deviates
+slightly from miniKanren mainline.
+
+See http://minikanren.org/ for more on miniKanren generally.")
+    (license expat)))
+
 ;;; guile.scm ends here
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index ece0e8c54a..c24ec99375 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
+;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2014 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
@@ -384,25 +384,16 @@ compose, and analyze GIF images.")
 (define-public imlib2
   (package
     (name "imlib2")
-    (version "1.4.6")
+    (version "1.4.7")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "mirror://sourceforge/enlightenment/imlib2-"
-                    version ".tar.gz"))
+                    version ".tar.bz2"))
               (sha256
                (base32
-                "0kjggg4gfn6chi8v1xddd5qwk1fbnl7rvd93qiclv5v11s615k0p"))))
+                "00a7jbwj10x3jcvxa5rplnkvhv35gv9rb400zy636zdd4g737mrm"))))
     (build-system gnu-build-system)
-    (arguments
-     '(;; Will be fixed in the next release:
-       ;; <http://git.enlightenment.org/legacy/imlib2.git/commit/?id=5dde234b2d3caf067ea827858c53adc5d4c56c13>.
-       #:phases (alist-cons-before
-                 'configure 'patch-config
-                 (lambda _
-                   (substitute* "imlib2-config.in"
-                     (("@my_libs@") "")))
-                 %standard-phases)))
     (native-inputs
      `(("pkgconfig" ,pkg-config)))
     (inputs
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index a77d1716bc..26fc3eccf5 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -20,6 +20,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #: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 attr)
@@ -46,7 +47,8 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages zip)
-  #:use-module (gnu packages texinfo))
+  #:use-module (gnu packages texinfo)
+  #:use-module ((srfi srfi-1) #:select (fold alist-delete)))
 
 (define-public swt
   (package
@@ -397,7 +399,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
                (setenv "PATH" (string-append antpath "/bin:"
                                              (getenv "PATH")))))
            (alist-cons-before
-            'check 'fix-tests
+            'check 'fix-test-framework
             (lambda _
               ;; Fix PATH in test environment
               (substitute* "src/jtreg/com/sun/javatest/regtest/Main.java"
@@ -405,109 +407,114 @@ build process and its dependencies, whereas Make uses Makefile format.")
                  (string-append "PATH=" (getenv "PATH"))))
               (substitute* "src/jtreg/com/sun/javatest/util/SysEnv.java"
                 (("/usr/bin/env") (which "env")))
-
-              ;; Hotspot tests
-              (with-directory-excursion "openjdk/hotspot/test/"
-                (substitute* "jprt.config"
-                  (("PATH=\"\\$\\{path4sdk\\}\"")
-                   (string-append "PATH=" (getenv "PATH")))
-                  (("make=/usr/bin/make")
-                   (string-append "make=" (which "make"))))
-                (substitute* '("runtime/6626217/Test6626217.sh"
-                               "runtime/7110720/Test7110720.sh")
-                  (("/bin/rm") (which "rm"))
-                  (("/bin/cp") (which "cp"))
-                  (("/bin/mv") (which "mv"))))
-
-              ;; JDK tests
-              (with-directory-excursion "openjdk/jdk/test/"
-                (substitute* "com/sun/jdi/JdbReadTwiceTest.sh"
-                  (("/bin/pwd") (which "pwd")))
-                (substitute* "com/sun/jdi/ShellScaffold.sh"
-                  (("/bin/kill") (which "kill")))
-                (substitute* "start-Xvfb.sh"
-                  ;(("/usr/bin/X11/Xvfb") (which "Xvfb"))
-                  (("/usr/bin/nohup")    (which "nohup")))
-                (substitute* "javax/security/auth/Subject/doAs/Test.sh"
-                  (("/bin/rm") (which "rm")))
-                (substitute* "tools/launcher/MultipleJRE.sh"
-                  (("echo \"#!/bin/sh\"")
-                   (string-append "echo \"#!" (which "rm") "\""))
-                  (("/usr/bin/zip") (which "zip")))
-                (substitute* "com/sun/jdi/OnThrowTest.java"
-                  (("#!/bin/sh") (string-append "#!" (which "sh"))))
-                (substitute* "java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java"
-                  (("/usr/bin/uptime") (which "uptime")))
-                (substitute* "java/lang/ProcessBuilder/Basic.java"
-                  (("/usr/bin/env") (which "env"))
-                  (("/bin/false") (which "false"))
-                  (("/bin/true") (which "true"))
-                  (("/bin/cp") (which "cp"))
-                  (("/bin/sh") (which "sh")))
-                (substitute* "java/lang/ProcessBuilder/FeelingLucky.java"
-                  (("/bin/sh") (which "sh")))
-                (substitute* "java/lang/ProcessBuilder/Zombies.java"
-                  (("/usr/bin/perl") (which "perl"))
-                  (("/bin/ps") (which "ps"))
-                  (("/bin/true") (which "true")))
-                (substitute* "java/lang/Runtime/exec/ConcurrentRead.java"
-                  (("/usr/bin/tee") (which "tee")))
-                (substitute* "java/lang/Runtime/exec/ExecWithDir.java"
-                  (("/bin/true") (which "true")))
-                (substitute* "java/lang/Runtime/exec/ExecWithInput.java"
-                  (("/bin/cat") (which "cat")))
-                (substitute* "java/lang/Runtime/exec/ExitValue.java"
-                  (("/bin/sh") (which "sh"))
-                  (("/bin/true") (which "true"))
-                  (("/bin/kill") (which "kill")))
-                (substitute* "java/lang/Runtime/exec/LotsOfDestroys.java"
-                  (("/usr/bin/echo") (which "echo")))
-                (substitute* "java/lang/Runtime/exec/LotsOfOutput.java"
-                  (("/usr/bin/cat") (which "cat")))
-                (substitute* "java/lang/Runtime/exec/SleepyCat.java"
-                  (("/bin/cat") (which "cat"))
-                  (("/bin/sleep") (which "sleep"))
-                  (("/bin/sh") (which "sh")))
-                (substitute* "java/lang/Runtime/exec/StreamsSurviveDestroy.java"
-                  (("/bin/cat") (which "cat")))
-                (substitute* "java/rmi/activation/CommandEnvironment/SetChildEnv.java"
-                  (("/bin/chmod") (which "chmod")))
-                (substitute* "java/util/zip/ZipFile/Assortment.java"
-                  (("/bin/sh") (which "sh")))))
-            (alist-replace
-             'check
+              #t)
+            (alist-cons-before
+             'check 'fix-hotspot-tests
              (lambda _
-               ;; The "make check-*" targets always return zero, so we need to
-               ;; check for errors in the associated log files to determine
-               ;; whether any tests have failed.
-               (use-modules (ice-9 rdelim))
-               (let* ((error-pattern (make-regexp "^(Error|FAILED):.*"))
-                      (checker (lambda (port)
-                                 (let loop ()
-                                   (let ((line (read-line port)))
-                                     (cond
-                                      ((eof-object? line) #t)
-                                      ((regexp-exec error-pattern line) #f)
-                                      (else (loop)))))))
-                      (run-test (lambda (test)
-                                  (system* "make" test)
-                                  (call-with-input-file
-                                      (string-append "test/" test ".log")
-                                    checker))))
-                 (or #t ; skip tests
-                     (and (run-test "check-hotspot")
-                          (run-test "check-langtools")
-                          (run-test "check-jdk")))))
-             (alist-replace
-              'install
-              (lambda* (#:key outputs #:allow-other-keys)
-                (let ((doc (string-append (assoc-ref outputs "doc") "/share/doc/" ,name))
-                      (jre (assoc-ref outputs "out"))
-                      (jdk (assoc-ref outputs "jdk")))
-                  (copy-recursively "openjdk.build/docs" doc)
-                  (copy-recursively "openjdk.build/j2re-image" jre)
-                  (copy-recursively "openjdk.build/j2sdk-image" jdk)))
-              %standard-phases)))))))))
+               (with-directory-excursion "openjdk/hotspot/test/"
+                 (substitute* "jprt.config"
+                   (("PATH=\"\\$\\{path4sdk\\}\"")
+                    (string-append "PATH=" (getenv "PATH")))
+                   (("make=/usr/bin/make")
+                    (string-append "make=" (which "make"))))
+                 (substitute* '("runtime/6626217/Test6626217.sh"
+                                "runtime/7110720/Test7110720.sh")
+                   (("/bin/rm") (which "rm"))
+                   (("/bin/cp") (which "cp"))
+                   (("/bin/mv") (which "mv"))))
+               #t)
+             (alist-cons-before
+              'check 'fix-jdk-tests
+              (lambda _
+                (with-directory-excursion "openjdk/jdk/test/"
+                  (substitute* "com/sun/jdi/JdbReadTwiceTest.sh"
+                    (("/bin/pwd") (which "pwd")))
+                  (substitute* "com/sun/jdi/ShellScaffold.sh"
+                    (("/bin/kill") (which "kill")))
+                  (substitute* "start-Xvfb.sh"
+                    ;;(("/usr/bin/X11/Xvfb") (which "Xvfb"))
+                    (("/usr/bin/nohup")    (which "nohup")))
+                  (substitute* "javax/security/auth/Subject/doAs/Test.sh"
+                    (("/bin/rm") (which "rm")))
+                  (substitute* "tools/launcher/MultipleJRE.sh"
+                    (("echo \"#!/bin/sh\"")
+                     (string-append "echo \"#!" (which "rm") "\""))
+                    (("/usr/bin/zip") (which "zip")))
+                  (substitute* "com/sun/jdi/OnThrowTest.java"
+                    (("#!/bin/sh") (string-append "#!" (which "sh"))))
+                  (substitute* "java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java"
+                    (("/usr/bin/uptime") (which "uptime")))
+                  (substitute* "java/lang/ProcessBuilder/Basic.java"
+                    (("/usr/bin/env") (which "env"))
+                    (("/bin/false") (which "false"))
+                    (("/bin/true") (which "true"))
+                    (("/bin/cp") (which "cp"))
+                    (("/bin/sh") (which "sh")))
+                  (substitute* "java/lang/ProcessBuilder/FeelingLucky.java"
+                    (("/bin/sh") (which "sh")))
+                  (substitute* "java/lang/ProcessBuilder/Zombies.java"
+                    (("/usr/bin/perl") (which "perl"))
+                    (("/bin/ps") (which "ps"))
+                    (("/bin/true") (which "true")))
+                  (substitute* "java/lang/Runtime/exec/ConcurrentRead.java"
+                    (("/usr/bin/tee") (which "tee")))
+                  (substitute* "java/lang/Runtime/exec/ExecWithDir.java"
+                    (("/bin/true") (which "true")))
+                  (substitute* "java/lang/Runtime/exec/ExecWithInput.java"
+                    (("/bin/cat") (which "cat")))
+                  (substitute* "java/lang/Runtime/exec/ExitValue.java"
+                    (("/bin/sh") (which "sh"))
+                    (("/bin/true") (which "true"))
+                    (("/bin/kill") (which "kill")))
+                  (substitute* "java/lang/Runtime/exec/LotsOfDestroys.java"
+                    (("/usr/bin/echo") (which "echo")))
+                  (substitute* "java/lang/Runtime/exec/LotsOfOutput.java"
+                    (("/usr/bin/cat") (which "cat")))
+                  (substitute* "java/lang/Runtime/exec/SleepyCat.java"
+                    (("/bin/cat") (which "cat"))
+                    (("/bin/sleep") (which "sleep"))
+                    (("/bin/sh") (which "sh")))
+                  (substitute* "java/lang/Runtime/exec/StreamsSurviveDestroy.java"
+                    (("/bin/cat") (which "cat")))
+                  (substitute* "java/rmi/activation/CommandEnvironment/SetChildEnv.java"
+                    (("/bin/chmod") (which "chmod")))
+                  (substitute* "java/util/zip/ZipFile/Assortment.java"
+                    (("/bin/sh") (which "sh"))))
+                #t)
+              (alist-replace
+               'check
+               (lambda _
+                 ;; The "make check-*" targets always return zero, so we need to
+                 ;; check for errors in the associated log files to determine
+                 ;; whether any tests have failed.
+                 (use-modules (ice-9 rdelim))
+                 (let* ((error-pattern (make-regexp "^(Error|FAILED):.*"))
+                        (checker (lambda (port)
+                                   (let loop ()
+                                     (let ((line (read-line port)))
+                                       (cond
+                                        ((eof-object? line) #t)
+                                        ((regexp-exec error-pattern line) #f)
+                                        (else (loop)))))))
+                        (run-test (lambda (test)
+                                    (system* "make" test)
+                                    (call-with-input-file
+                                        (string-append "test/" test ".log")
+                                      checker))))
+                   (or #t ; skip tests
+                       (and (run-test "check-hotspot")
+                            (run-test "check-langtools")
+                            (run-test "check-jdk")))))
+               (alist-replace
+                'install
+                (lambda* (#:key outputs #:allow-other-keys)
+                  (let ((doc (string-append (assoc-ref outputs "doc") "/share/doc/" ,name))
+                        (jre (assoc-ref outputs "out"))
+                        (jdk (assoc-ref outputs "jdk")))
+                    (copy-recursively "openjdk.build/docs" doc)
+                    (copy-recursively "openjdk.build/j2re-image" jre)
+                    (copy-recursively "openjdk.build/j2sdk-image" jdk)))
+                %standard-phases)))))))))))
     (native-inputs
      `(("ant-bootstrap"
         ,(origin
@@ -567,3 +574,174 @@ build process and its dependencies, whereas Make uses Makefile format.")
     ;; IcedTea is released under the GPL2 + Classpath exception, which is the
     ;; same license as both GNU Classpath and OpenJDK.
     (license license:gpl2+)))
+
+(define-public icedtea7
+  (let* ((version "2.5.5")
+         (drop (lambda (name hash)
+                 (origin
+                   (method url-fetch)
+                   (uri (string-append
+                         "http://icedtea.classpath.org/download/drops/"
+                         "/icedtea7/" version "/" name ".tar.bz2"))
+                   (sha256 (base32 hash))))))
+    (package (inherit icedtea6)
+      (name "icedtea7")
+      (version version)
+      (source (origin
+                (method url-fetch)
+                (uri (string-append
+                      "http://icedtea.wildebeest.org/download/source/icedtea-"
+                      version ".tar.xz"))
+                (sha256
+                 (base32
+                  "1irxk2ndwsfk4c1zbzb5h3rpwv2bc9bhfjvz6p4dws5476vsxrq9"))
+                (modules '((guix build utils)))
+                (snippet
+                 '(substitute* "Makefile.in"
+                    ;; do not leak information about the build host
+                    (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"")
+                     "DISTRIBUTION_ID=\"\\\"guix\\\"\"")))))
+      (arguments
+       `(;; There are many test failures.  Some are known to
+         ;; fail upstream, others relate to not having an X
+         ;; server running at test time, yet others are a
+         ;; complete mystery to me.
+
+         ;; hotspot:   passed: 241; failed: 45; error: 2
+         ;; langtools: passed: 1,934; failed: 26
+         ;; jdk:       unknown
+         #:tests? #f
+         ;; Apparently, the C locale is needed for some of the tests.
+         #:locale "C"
+         ,@(substitute-keyword-arguments (package-arguments icedtea6)
+             ((#:configure-flags flags)
+              `(let ((jdk (assoc-ref %build-inputs "icedtea6"))
+                     (ant (assoc-ref %build-inputs "ant")))
+                 `("--disable-bootstrap"
+                   "--without-rhino"
+                   "--enable-nss"
+                   "--enable-system-lcms"
+                   "--disable-downloading"
+                   ,(string-append "--with-ant-home=" ant)
+                   ,(string-append "--with-jdk-home=" jdk))))
+             ((#:phases phases)
+              `(modify-phases ,phases
+                 (replace
+                  'unpack
+                  (lambda* (#:key source inputs #:allow-other-keys)
+                    (let ((target (string-append "icedtea-" ,version))
+                          (unpack (lambda (drop dir)
+                                    (mkdir dir)
+                                    (zero? (system* "tar" "xvjf"
+                                                    (assoc-ref inputs drop)
+                                                    "-C" dir
+                                                    "--strip-components=1")))))
+                      (and (zero? (system* "tar" "xvf" source))
+                           (chdir target)
+                           (unpack "openjdk-drop" "openjdk")
+                           (unpack "corba-drop"   "openjdk/corba")
+                           (unpack "jdk-drop"     "openjdk/jdk")
+                           (unpack "hotspot-drop" "openjdk/hotspot")
+
+                           ;; The build framework checks the tarballs, so we
+                           ;; need to keep them around even though we have
+                           ;; already unpacked some of them for patching.
+                           (begin
+                             (copy-file (assoc-ref inputs "openjdk-drop")
+                                        "openjdk.tar.bz2")
+                             (copy-file (assoc-ref inputs "corba-drop")
+                                        "corba.tar.bz2")
+                             (copy-file (assoc-ref inputs "hotspot-drop")
+                                        "hotspot.tar.bz2")
+                             (copy-file (assoc-ref inputs "jaxp-drop")
+                                        "jaxp.tar.bz2")
+                             (copy-file (assoc-ref inputs "jaxws-drop")
+                                        "jaxws.tar.bz2")
+                             (copy-file (assoc-ref inputs "jdk-drop")
+                                        "jdk.tar.bz2")
+                             (copy-file (assoc-ref inputs "langtools-drop")
+                                        "langtools.tar.bz2")
+                             #t)))))
+                 (replace
+                  'set-additional-paths
+                  (lambda* (#:key inputs #:allow-other-keys)
+                    (substitute* "openjdk/jdk/make/common/shared/Sanity.gmk"
+                      (("ALSA_INCLUDE=/usr/include/alsa/version.h")
+                       (string-append "ALSA_INCLUDE="
+                                      (assoc-ref inputs "alsa-lib")
+                                      "/include/alsa/version.h")))
+                    (setenv "CC" "gcc")
+                    (setenv "CPATH"
+                            (string-append (assoc-ref inputs "libxrender")
+                                           "/include/X11/extensions" ":"
+                                           (assoc-ref inputs "libxtst")
+                                           "/include/X11/extensions" ":"
+                                           (assoc-ref inputs "libxinerama")
+                                           "/include/X11/extensions" ":"
+                                           (or (getenv "CPATH") "")))
+                    (setenv "ALT_OBJCOPY" (which "objcopy"))
+                    (setenv "ALT_CUPS_HEADERS_PATH"
+                            (string-append (assoc-ref inputs "cups")
+                                           "/include"))
+                    (setenv "ALT_FREETYPE_HEADERS_PATH"
+                            (string-append (assoc-ref inputs "freetype")
+                                           "/include"))
+                    (setenv "ALT_FREETYPE_LIB_PATH"
+                            (string-append (assoc-ref inputs "freetype")
+                                           "/lib"))))
+                 (add-after
+                  'unpack 'fix-x11-extension-include-path
+                  (lambda* (#:key inputs #:allow-other-keys)
+                    (substitute* "openjdk/jdk/make/sun/awt/mawt.gmk"
+                      (((string-append "\\$\\(firstword \\$\\(wildcard "
+                                       "\\$\\(OPENWIN_HOME\\)"
+                                       "/include/X11/extensions\\).*$"))
+                       (string-append (assoc-ref inputs "libxrender")
+                                      "/include/X11/extensions"
+                                      " -I" (assoc-ref inputs "libxtst")
+                                      "/include/X11/extensions"
+                                      " -I" (assoc-ref inputs "libxinerama")
+                                      "/include/X11/extensions"))
+                      (("\\$\\(wildcard /usr/include/X11/extensions\\)\\)") ""))
+                    #t))
+                 (replace
+                  'fix-test-framework
+                  (lambda _
+                    ;; Fix PATH in test environment
+                    (substitute* "test/jtreg/com/sun/javatest/regtest/Main.java"
+                      (("PATH=/bin:/usr/bin")
+                       (string-append "PATH=" (getenv "PATH"))))
+                    (substitute* "test/jtreg/com/sun/javatest/util/SysEnv.java"
+                      (("/usr/bin/env") (which "env")))
+                    (substitute* "openjdk/hotspot/test/test_env.sh"
+                      (("/bin/rm") (which "rm"))
+                      (("/bin/cp") (which "cp"))
+                      (("/bin/mv") (which "mv")))
+                    #t))
+                 (delete 'patch-patches))))))
+      (native-inputs
+       `(("ant" ,ant)
+         ("icedtea6" ,icedtea6 "jdk")
+         ("openjdk-drop"
+          ,(drop "openjdk"
+                 "03gxqn17cxwl1nspnwigacaqd28p02d45f396j5f4kkbzfnbl0ak"))
+         ("corba-drop"
+          ,(drop "corba"
+                 "0ldcckknn2f92jv1144cnn0z3wmvxln28wc00rc6xxblnjcnamzh"))
+         ("jaxp-drop"
+          ,(drop "jaxp"
+                 "0mnjdziffcnyqlyvf8dw1hrl4kiiwmh8ia0ym417wgvnjpaihci9"))
+         ("jaxws-drop"
+          ,(drop "jaxws"
+                 "1gkmypnhygx2mxhca3ngy620k993wi2cc1wysc0np06y1rkx1mkn"))
+         ("jdk-drop"
+          ,(drop "jdk"
+                 "10x43mqjfn43jlckic0nyf7apyyjyr910cdmmvy41kvw8ljhvg61"))
+         ("langtools-drop"
+          ,(drop "langtools"
+                 "0q5nqc14r6vmhxgikw3wgdcc0r9symp830v13isnv8qdjgm6kcki"))
+         ("hotspot-drop"
+          ,(drop "hotspot"
+                 "1yqxfd2jwbm5y41wscyfx8h0fr3h8ny2g2mda5iwd8sikxsaj96p"))
+         ,@(fold alist-delete (package-native-inputs icedtea6)
+                 '("openjdk6-src" "ant-bootstrap" "gcj")))))))
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
new file mode 100644
index 0000000000..cbe1c75eeb
--- /dev/null
+++ b/gnu/packages/libreoffice.scm
@@ -0,0 +1,81 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2014 John Darrington <jmd@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 libreoffice)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module ((guix licenses) #:select (mpl2.0))
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python))
+
+(define-public ixion
+  (package
+    (name "ixion")
+    (version "0.9.1")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://kohei.us/files/ixion/src/libixion-"
+                          version ".tar.xz"))
+      (sha256 (base32
+               "18g3nk29ljiqbyi0ml49j2x3f3xrqckdm9i66sw5fxnj7hb5rqvp"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+     (inputs
+      `(("mdds" ,mdds)
+        ("python" ,python-2))) ; looks for python.pc, not python3.pc
+    (home-page "https://gitlab.com/ixion/ixion")
+    (synopsis "General purpose formula parser and interpreter")
+    (description "Ixion is a library for calculating the results of formula
+expressions stored in multiple named targets, or \"cells\".  The cells can
+be referenced from each other, and the library takes care of resolving
+their dependencies automatically upon calculation.")
+    (license mpl2.0)))
+
+(define-public orcus
+  (package
+    (name "orcus")
+    (version "0.7.1")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://kohei.us/files/" name "/src/lib"
+                          name "-" version ".tar.xz"))
+      (sha256 (base32
+               "0hva4qalg3dk6n1118ncr5fy8cqnj2f7fwldw7aa04124rj6p104"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+     (inputs
+      `(("ixion" ,ixion)
+        ("mdds" ,mdds)
+        ("zlib" ,zlib)))
+    (home-page "https://gitlab.com/orcus/orcus")
+    (synopsis "File import filter library for spreadsheet documents")
+    (description "Orcus is a library that provides a collection of standalone
+file processing filters.  It is currently focused on providing filters for
+spreadsheet documents.  The library includes import filters for
+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)))
diff --git a/gnu/packages/patches/gstreamer-0.10-bison3.patch b/gnu/packages/patches/gstreamer-0.10-bison3.patch
deleted file mode 100644
index f6eb90cb02..0000000000
--- a/gnu/packages/patches/gstreamer-0.10-bison3.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-See https://bugzilla.gnome.org/show_bug.cgi?id=706462
-
-Subject: [PATCH] Make grammar.y work with Bison 3
-
-YYLEX_PARAM is no longer supported in Bison 3.
----
- gst/parse/grammar.y | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gst/parse/grammar.y b/gst/parse/grammar.y
-index 8a9019c..f533389 100644
---- a/gst/parse/grammar.y
-+++ b/gst/parse/grammar.y
-@@ -26,7 +26,6 @@
-  */
- 
- #define YYERROR_VERBOSE 1
--#define YYLEX_PARAM scanner
- 
- #define YYENABLE_NLS 0
- 
-@@ -659,6 +658,7 @@ static int yyerror (void *scanner, graph_t *graph, const char *s);
- %right '.'
- %left '!' '='
- 
-+%lex-param { void *scanner }
- %parse-param { void *scanner }
- %parse-param { graph_t *graph }
- %pure-parser
--- 
-1.8.3.4
-
diff --git a/gnu/packages/patches/gstreamer-0.10-silly-test.patch b/gnu/packages/patches/gstreamer-0.10-silly-test.patch
deleted file mode 100644
index 678dd7b122..0000000000
--- a/gnu/packages/patches/gstreamer-0.10-silly-test.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-See http://lists.freedesktop.org/archives/gstreamer-bugs/2013-January/098461.html
-
-diff -ru gstreamer-0.10.36.orig/tests/check/Makefile.in gstreamer-0.10.36/tests/check/Makefile.in
---- gstreamer-0.10.36.orig/tests/check/Makefile.in	2012-02-20 23:48:29.000000000 +0100
-+++ gstreamer-0.10.36/tests/check/Makefile.in	2013-10-30 21:55:48.000000000 +0100
-@@ -42,7 +42,7 @@
- 	gst/gstbus$(EXEEXT) gst/gstcaps$(EXEEXT) $(am__EXEEXT_2) \
- 	gst/gstdatetime$(EXEEXT) gst/gstinfo$(EXEEXT) \
- 	gst/gstiterator$(EXEEXT) gst/gstmessage$(EXEEXT) \
--	gst/gstminiobject$(EXEEXT) gst/gstobject$(EXEEXT) \
-+	gst/gstminiobject$(EXEEXT) \
- 	gst/gstpad$(EXEEXT) gst/gstparamspecs$(EXEEXT) \
- 	gst/gstpoll$(EXEEXT) gst/gstsegment$(EXEEXT) \
- 	gst/gstsystemclock$(EXEEXT) gst/gstclock$(EXEEXT) \
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 050c0de402..29b47f357c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -301,6 +301,33 @@ etc. ")
 (define-public python2-babel
   (package-with-python2 python-babel))
 
+(define-public python2-backport-ssl-match-hostname
+  (package
+    (name "python2-backport-ssl-match-hostname")
+    (version "3.4.0.2")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append
+            "https://pypi.python.org/packages/source/b/"
+            "backports.ssl_match_hostname/backports.ssl_match_hostname-"
+            version ".tar.gz"))
+      (sha256
+       (base32
+        "1bnn47ipvhy49n0m50v27lp4xj6sqdkdw676ypd7pawsn1zhwh87"))))
+    (build-system python-build-system)
+    (arguments `(#:python ,python-2))
+    (inputs
+     `(("python2-setuptools" ,python2-setuptools)))
+    (home-page "https://pypi.python.org/pypi/backports.ssl_match_hostname")
+    (synopsis "Backport of ssl.match_hostname() function from Python 3.4")
+    (description
+     "This backport brings the ssl.match_hostname() function to users of
+earlier versions of Python.  The function checks the hostname in the
+certificate returned by the server to which a connection has been established,
+and verifies that it matches the intended target hostname.")
+    (license psfl)))
+
 (define-public python-h5py
   (package
     (name "python-h5py")
@@ -3509,6 +3536,41 @@ It is written entirely in Python.")
 (define-public python2-singledispatch
   (package-with-python2 python-singledispatch))
 
+(define-public python-tornado
+  (package
+    (name "python-tornado")
+    (version "4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://pypi.python.org/packages/source/t/tornado/"
+             "tornado-" version ".tar.gz"))
+       (sha256
+        (base32 "0a12f00h277zbifibnj46wf14801f573irvf6hwkgja5vspd7awr"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-certifi" ,python-certifi)))
+    (native-inputs
+     `(("python-setuptools" ,python-setuptools)))
+    (home-page "https://pypi.python.org/pypi/tornado/4.1")
+    (synopsis "Python web framework and asynchronous networking library")
+    (description
+     "Tornado is a Python web framework and asynchronous networking library,
+originally developed at FriendFeed.  By using non-blocking network I/O,
+Tornado can scale to tens of thousands of open connections, making it ideal
+for long polling, WebSockets, and other applications that require a long-lived
+connection to each user.")
+    (license asl2.0)))
+
+(define-public python2-tornado
+  (let ((tornado (package-with-python2 python-tornado)))
+    (package (inherit tornado)
+      (inputs
+       `(("python2-backport-ssl-match-hostname"
+          ,python2-backport-ssl-match-hostname)
+         ,@(package-inputs tornado))))))
+
 (define-public python-waf
   (package
     (name "python-waf")
diff --git a/gnu/packages/tbb.scm b/gnu/packages/tbb.scm
index 3c41141dc6..0e9db720aa 100644
--- a/gnu/packages/tbb.scm
+++ b/gnu/packages/tbb.scm
@@ -46,6 +46,8 @@
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
+       #:make-flags (list (string-append "LDFLAGS=-Wl,-rpath="
+                                         (assoc-ref %outputs "out") "/lib"))
        #:phases (alist-replace
                  'configure
                  (lambda* (#:key outputs #:allow-other-keys)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 8868713ba1..c890d45d19 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -264,6 +264,27 @@ SMPTE 314M.")
        ("libxext" ,libxext)
        ("libxfixes" ,libxfixes)
        ("mesa" ,mesa)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before
+          'build 'fix-dlopen-paths
+          (lambda* (#:key outputs #:allow-other-keys)
+            (let ((out (assoc-ref outputs "out")))
+              (substitute* "va/drm/va_drm_auth_x11.c"
+                (("\"libva-x11\\.so\\.%d\"")
+                 (string-append "\"" out "/lib/libva-x11.so.%d\"")))))))
+       ;; Most drivers are in mesa's $prefix/lib/dri, so use that.  (Can be
+       ;; overridden at run-time via LIBVA_DRIVERS_PATH.)
+       #:configure-flags
+       (list (string-append "--with-drivers-path="
+                            (assoc-ref %build-inputs "mesa") "/lib/dri"))
+       ;; However, we can't write to mesa's store directory, so override the
+       ;; following make variable to install the dummy driver to libva's
+       ;; $prefix/lib/dri directory.
+       #:make-flags
+       (list (string-append "dummy_drv_video_ladir="
+                            (assoc-ref %outputs "out") "/lib/dri"))))
     (home-page "http://www.freedesktop.org/wiki/Software/vaapi/")
     (synopsis "Video acceleration library")
     (description "The main motivation for VA-API (Video Acceleration API) is
@@ -275,14 +296,14 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
 (define-public ffmpeg
   (package
     (name "ffmpeg")
-    (version "2.6")
+    (version "2.6.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "http://www.ffmpeg.org/releases/ffmpeg-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "14a7zp8pa1rvw6nr9l2rf57xr004n5kwkhn5lglybjnn1p68xhr3"))))
+               "1fi93zy98wmls7x3jpr2yvckk2ia6a1yyygwrfaxq95pd6h3m7l8"))))
     (build-system gnu-build-system)
     (inputs
      `(("fontconfig" ,fontconfig)
@@ -299,7 +320,6 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
        ("libvorbis" ,libvorbis)
        ("libvpx" ,libvpx)
        ("openal" ,openal)
-       ("patchelf" ,patchelf)
        ("pulseaudio" ,pulseaudio)
        ("soxr" ,soxr)
        ("speex" ,speex)
@@ -316,12 +336,6 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
        ("yasm" ,yasm)))
     (arguments
      `(#:test-target "fate"
-       #:modules ((guix build gnu-build-system)
-                  (guix build utils)
-                  (guix build rpath)
-                  (srfi srfi-26))
-       #:imported-modules (,@%gnu-build-system-modules
-                           (guix build rpath))
        #:phases
        (modify-phases %standard-phases
          (replace
@@ -376,6 +390,9 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
               (zero? (system*
                       "./configure"
                       (string-append "--prefix=" out)
+                      ;; Add $libdir to the RUNPATH of all the binaries.
+                      (string-append "--extra-ldflags=-Wl,-rpath="
+                                     %output "/lib")
                       "--enable-avresample"
                       "--enable-gpl" ; enable optional gpl licensed parts
                       "--enable-shared"
@@ -417,17 +434,7 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
                    (path (string-join (map dirname dso) ":")))
               (format #t "setting LD_LIBRARY_PATH to ~s~%" path)
               (setenv "LD_LIBRARY_PATH" path)
-              #t)))
-         (add-after
-          'strip 'add-lib-to-runpath
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let* ((out (assoc-ref outputs "out"))
-                   (lib (string-append out "/lib")))
-              ;; Add LIB to the RUNPATH of all the executables and libraries.
-              (with-directory-excursion out
-                (for-each (cut augment-rpath <> lib)
-                          (append (find-files "bin" ".*")
-                                  (find-files "lib" "\\.so\\..*\\."))))))))))
+              #t))))))
     (home-page "http://www.ffmpeg.org/")
     (synopsis "Audio and video framework")
     (description "FFmpeg is a complete, cross-platform solution to record,
@@ -710,7 +717,7 @@ several areas.")
 (define-public mpv
   (package
     (name "mpv")
-    (version "0.8.3")
+    (version "0.9.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -718,14 +725,14 @@ several areas.")
                     ".tar.gz"))
               (sha256
                (base32
-                "1kw9hr957cxqgm2i94bgqc6sskm6bwhm0akzckilhs460b43h409"))
+                "08nx0g6ji2d90f5w62g327szhkb7id7jzwgf3x069rc5id1x3bx7"))
               (file-name (string-append name "-" version ".tar.gz"))))
     (build-system waf-build-system)
     (native-inputs
      `(("perl" ,perl)
        ("pkg-config" ,pkg-config)
        ("python-docutils" ,python-docutils)))
-    ;; Missing features: libguess, LIRC, Wayland, VDPAU, V4L2
+    ;; Missing features: libguess, Wayland, VDPAU, V4L2
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("enca" ,enca)
diff --git a/guix/build/download.scm b/guix/build/download.scm
index a3105ad41d..2e0b019d38 100644
--- a/guix/build/download.scm
+++ b/guix/build/download.scm
@@ -196,46 +196,31 @@ host name without trailing dot."
       record)))
 
 (define (open-connection-for-uri uri)
-  "Return an open input/output port for a connection to URI.
-
-This is the same as Guile's `open-socket-for-uri', except that we always
-use a numeric port argument, to avoid the need to go through libc's NSS,
-which is not available during bootstrap."
-  (define addresses
-    (let ((port (or (uri-port uri)
-                    (case (uri-scheme uri)
-                      ((http) 80)           ; /etc/services, not for me!
-                      ((https) 443)
-                      (else
-                       (error "unsupported URI scheme" uri))))))
-      (delete-duplicates (getaddrinfo (uri-host uri)
-                                      (number->string port)
-                                      AI_NUMERICSERV)
-                         (lambda (ai1 ai2)
-                           (equal? (addrinfo:addr ai1)
-                                   (addrinfo:addr ai2))))))
-
-  (let loop ((addresses addresses))
-    (let* ((ai (car addresses))
-           (s  (with-fluids ((%default-port-encoding #f))
-                 ;; Restrict ourselves to TCP.
-                 (socket (addrinfo:fam ai) SOCK_STREAM IPPROTO_IP))))
-      (catch 'system-error
-        (lambda ()
-          (connect s (addrinfo:addr ai))
-
-          ;; Buffer input and output on this port.
-          (setvbuf s _IOFBF %http-receive-buffer-size)
-
-          (if (eq? 'https (uri-scheme uri))
-              (tls-wrap s (uri-host uri))
-              s))
-        (lambda args
-          ;; Connection failed, so try one of the other addresses.
-          (close s)
-          (if (null? (cdr addresses))
-              (apply throw args)
-              (loop (cdr addresses))))))))
+  "Like 'open-socket-for-uri', but also handle HTTPS connections."
+  (define https?
+    (eq? 'https (uri-scheme uri)))
+
+  (let-syntax ((with-https-proxy
+                (syntax-rules ()
+                  ((_ exp)
+                   ;; For HTTPS URIs, honor 'https_proxy', not 'http_proxy'.
+                   ;; FIXME: Proxying is not supported for https.
+                   (let ((thunk (lambda () exp)))
+                     (if (and https?
+                              (module-variable
+                               (resolve-interface '(web client))
+                               'current-http-proxy))
+                         (parameterize ((current-http-proxy #f))
+                           (when (getenv "https_proxy")
+                             (format (current-error-port)
+                                     "warning: 'https_proxy' is ignored~%"))
+                           (thunk))
+                         (thunk)))))))
+    (with-https-proxy
+     (let ((s (open-socket-for-uri uri)))
+       (if https?
+           (tls-wrap s (uri-host uri))
+           s)))))
 
 ;; XXX: This is an awful hack to make sure the (set-port-encoding! p
 ;; "ISO-8859-1") call in `read-response' passes, even during bootstrap
diff --git a/guix/derivations.scm b/guix/derivations.scm
index 7737e39b2d..1056caa70a 100644
--- a/guix/derivations.scm
+++ b/guix/derivations.scm
@@ -692,7 +692,7 @@ HASH-ALGO, of the derivation NAME.  RECURSIVE? has the same meaning as for
                      (inputs '()) (outputs '("out"))
                      hash hash-algo recursive?
                      references-graphs allowed-references
-                     local-build?)
+                     leaked-env-vars local-build?)
   "Build a derivation with the given arguments, and return the resulting
 <derivation> object.  When HASH and HASH-ALGO are given, a
 fixed-output derivation is created---i.e., one whose result is known in
@@ -707,6 +707,12 @@ the build environment in the corresponding file, in a simple text format.
 When ALLOWED-REFERENCES is true, it must be a list of store items or outputs
 that the derivation's output may refer to.
 
+When LEAKED-ENV-VARS is true, it must be a list of strings denoting
+environment variables that are allowed to \"leak\" from the daemon's
+environment to the build environment.  This is only applicable to fixed-output
+derivations--i.e., when HASH is true.  The main use is to allow variables such
+as \"http_proxy\" to be passed to derivations that download files.
+
 When LOCAL-BUILD? is true, declare that the derivation is not a good candidate
 for offloading and should rather be built locally.  This is the case for small
 derivations where the costs of data transfers would outweigh the benefits."
@@ -751,6 +757,10 @@ derivations where the costs of data transfers would outweigh the benefits."
                             `(("allowedReferences"
                                . ,(string-join allowed-references)))
                             '())
+                      ,@(if leaked-env-vars
+                            `(("impureEnvVars"
+                               . ,(string-join leaked-env-vars)))
+                            '())
                       ,@env-vars)))
       (match references-graphs
         (((file . path) ...)
diff --git a/guix/download.scm b/guix/download.scm
index 3e4024fe1f..6b0349402a 100644
--- a/guix/download.scm
+++ b/guix/download.scm
@@ -271,6 +271,9 @@ in the store."
                                         (guix build utils)
                                         (guix ftp-client))
 
+                            ;; Honor the user's proxy settings.
+                            #:leaked-env-vars '("http_proxy" "https_proxy")
+
                             ;; In general, offloading downloads is not a good idea.
                             ;;#:local-build? #t
                             ;; FIXME: The above would also disable use of
diff --git a/guix/gexp.scm b/guix/gexp.scm
index a2da72e76c..b08a361232 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -282,6 +282,7 @@ names and file names suitable for the #:allowed-references argument to
                            (graft? (%graft?))
                            references-graphs
                            allowed-references
+                           leaked-env-vars
                            local-build?)
   "Return a derivation NAME that runs EXP (a gexp) with GUILE-FOR-BUILD (a
 derivation) on SYSTEM.  When TARGET is true, it is used as the
@@ -400,6 +401,7 @@ The other arguments are as for 'derivation'."
                       #:hash hash #:hash-algo hash-algo #:recursive? recursive?
                       #:references-graphs (and=> graphs graphs-file-names)
                       #:allowed-references allowed
+                      #:leaked-env-vars leaked-env-vars
                       #:local-build? local-build?))))
 
 (define* (gexp-inputs exp #:key native?)
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index adf94a7ac3..b9983c5b9c 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -467,6 +467,7 @@ to read the response body.  Return the list of results."
              ;; case we have to try again.  Check whether that is the case.
              (match (assq 'connection (response-headers resp))
                (('connection 'close)
+                (close-port p)
                 (connect requests result))        ;try again
                (_
                 (loop tail                        ;keep going
diff --git a/guix/serialization.scm b/guix/serialization.scm
index a99f53ee0b..51d7ef76c6 100644
--- a/guix/serialization.scm
+++ b/guix/serialization.scm
@@ -140,10 +140,9 @@ substitute invalid byte sequences with question marks.  This is a
   ;; not very efficient.  Eventually Guile may provide a lightweight
   ;; permissive UTF-8 decoder.
   (let* ((bv   (read-byte-string p))
-         (port (with-fluids ((%default-port-encoding "UTF-8")
-                             (%default-port-conversion-strategy
-                              'substitute))
-                 (open-bytevector-input-port bv))))
+         (port (open-bytevector-input-port bv)))
+    (set-port-encoding! port "UTF-8")
+    (set-port-conversion-strategy! port 'substitute)
     (get-string-all port)))
 
 (define (write-string-list l p)