summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2014-09-11 18:26:28 -0400
committerMark H Weaver <mhw@netris.org>2014-09-11 18:26:28 -0400
commit66ea98e321e93b0806f6870d77dd4c00e7e720c0 (patch)
tree21778401485e3b8683bbc6a31769233c059683b1 /gnu
parentda5538ef44bfa74d3e435f9f557374eabba5dc1e (diff)
parent5dae0186dea1e72e73bf223161620cfeddef5a63 (diff)
downloadguix-66ea98e321e93b0806f6870d77dd4c00e7e720c0.tar.gz
Merge branch 'master' into core-updates
Conflicts:
	gnu/packages/image.scm
Diffstat (limited to 'gnu')
-rw-r--r--gnu/build/activation.scm82
-rw-r--r--gnu/build/install.scm46
-rw-r--r--gnu/build/linux-boot.scm14
-rw-r--r--gnu/build/linux-initrd.scm72
-rw-r--r--gnu/packages/abiword.scm107
-rw-r--r--gnu/packages/admin.scm72
-rw-r--r--gnu/packages/apl.scm2
-rw-r--r--gnu/packages/bdb.scm68
-rw-r--r--gnu/packages/compression.scm6
-rw-r--r--gnu/packages/databases.scm283
-rw-r--r--gnu/packages/dc.scm2
-rw-r--r--gnu/packages/enchant.scm61
-rw-r--r--gnu/packages/freeipmi.scm4
-rw-r--r--gnu/packages/fribidi.scm45
-rw-r--r--gnu/packages/games.scm2
-rw-r--r--gnu/packages/global.scm4
-rw-r--r--gnu/packages/gnunet.scm2
-rw-r--r--gnu/packages/image.scm36
-rw-r--r--gnu/packages/linux.scm13
-rw-r--r--gnu/packages/lua.scm3
-rw-r--r--gnu/packages/mail.scm3
-rw-r--r--gnu/packages/maths.scm4
-rw-r--r--gnu/packages/mpd.scm2
-rw-r--r--gnu/packages/mysql.scm87
-rw-r--r--gnu/packages/nvi.scm2
-rw-r--r--gnu/packages/openldap.scm4
-rw-r--r--gnu/packages/ots.scm68
-rw-r--r--gnu/packages/package-management.scm2
-rw-r--r--gnu/packages/patches/abiword-explictly-cast-bools.patch93
-rw-r--r--gnu/packages/patches/abiword-link-plugins-against-backend.patch639
-rw-r--r--gnu/packages/patches/abiword-no-include-glib-internal-headers.patch13
-rw-r--r--gnu/packages/patches/abiword-pass-no-undefined-to-linker.patch608
-rw-r--r--gnu/packages/patches/abiword-use-proper-png-api.patch175
-rw-r--r--gnu/packages/patches/abiword-wmf-version-lookup-fix.patch28
-rw-r--r--gnu/packages/patches/lua51-liblua-so.patch65
-rw-r--r--gnu/packages/patches/ots-no-include-missing-file.patch14
-rw-r--r--gnu/packages/postgresql.scm52
-rw-r--r--gnu/packages/python.scm2
-rw-r--r--gnu/packages/qt.scm2
-rw-r--r--gnu/packages/rdf.scm2
-rw-r--r--gnu/packages/recutils.scm66
-rw-r--r--gnu/packages/sqlite.scm63
-rw-r--r--gnu/packages/version-control.scm2
-rw-r--r--gnu/packages/video.scm4
-rw-r--r--gnu/packages/weechat.scm101
-rw-r--r--gnu/packages/wv.scm65
-rw-r--r--gnu/packages/zsh.scm73
-rw-r--r--gnu/services/base.scm71
-rw-r--r--gnu/system.scm91
-rw-r--r--gnu/system/file-systems.scm21
-rw-r--r--gnu/system/linux-initrd.scm152
-rw-r--r--gnu/system/linux.scm3
-rw-r--r--gnu/system/vm.scm4
53 files changed, 2951 insertions, 554 deletions
diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm
index 362669cbf9..04dd19f3e1 100644
--- a/gnu/build/activation.scm
+++ b/gnu/build/activation.scm
@@ -26,6 +26,7 @@
   #:export (activate-users+groups
             activate-etc
             activate-setuid-programs
+            activate-/bin/sh
             activate-current-system))
 
 ;;; Commentary:
@@ -146,48 +147,64 @@ numeric gid or #f."
   ;; /etc is a mixture of static and dynamic settings.  Here is where we
   ;; initialize it from the static part.
 
+  (define (rm-f file)
+    (false-if-exception (delete-file file)))
+
   (format #t "populating /etc from ~a...~%" etc)
-  (let ((rm-f (lambda (f)
-                (false-if-exception (delete-file f)))))
-    (rm-f "/etc/static")
-    (symlink etc "/etc/static")
-    (for-each (lambda (file)
-                ;; TODO: Handle 'shadow' specially so that changed
-                ;; password aren't lost.
-                (let ((target (string-append "/etc/" file))
-                      (source (string-append "/etc/static/" file)))
-                  (rm-f target)
-                  (symlink source target)))
-              (scandir etc
-                       (lambda (file)
-                         (not (member file '("." ".."))))
-
-                       ;; The default is 'string-locale<?', but we don't have
-                       ;; it when run from the initrd's statically-linked
-                       ;; Guile.
-                       string<?))
-
-    ;; Prevent ETC from being GC'd.
-    (rm-f "/var/guix/gcroots/etc-directory")
-    (symlink etc "/var/guix/gcroots/etc-directory")))
+
+  (rm-f "/etc/static")
+  (symlink etc "/etc/static")
+  (for-each (lambda (file)
+              (let ((target (string-append "/etc/" file))
+                    (source (string-append "/etc/static/" file)))
+                (rm-f target)
+
+                ;; Things such as /etc/sudoers must be regular files, not
+                ;; symlinks; furthermore, they could be modified behind our
+                ;; back---e.g., with 'visudo'.  Thus, make a copy instead of
+                ;; symlinking them.
+                (if (file-is-directory? source)
+                    (symlink source target)
+                    (copy-file source target))
+
+                ;; XXX: Dirty hack to meet sudo's expectations.
+                (when (string=? (basename target) "sudoers")
+                  (chmod target #o440))))
+            (scandir etc
+                     (lambda (file)
+                       (not (member file '("." ".."))))
+
+                     ;; The default is 'string-locale<?', but we don't have
+                     ;; it when run from the initrd's statically-linked
+                     ;; Guile.
+                     string<?))
+
+  ;; Prevent ETC from being GC'd.
+  (rm-f "/var/guix/gcroots/etc-directory")
+  (symlink etc "/var/guix/gcroots/etc-directory"))
 
 (define %setuid-directory
   ;; Place where setuid programs are stored.
   "/run/setuid-programs")
 
+(define (link-or-copy source target)
+  "Attempt to make TARGET a hard link to SOURCE; if it fails, fall back to
+copy SOURCE to TARGET."
+  (catch 'system-error
+    (lambda ()
+      (link source target))
+    (lambda args
+      ;; Perhaps SOURCE and TARGET live in a different file system, so copy
+      ;; SOURCE.
+      (copy-file source target))))
+
 (define (activate-setuid-programs programs)
   "Turn PROGRAMS, a list of file names, into setuid programs stored under
 %SETUID-DIRECTORY."
   (define (make-setuid-program prog)
     (let ((target (string-append %setuid-directory
                                  "/" (basename prog))))
-      (catch 'system-error
-        (lambda ()
-          (link prog target))
-        (lambda args
-          ;; Perhaps PROG and TARGET live in a different file system, so copy
-          ;; PROG.
-          (copy-file prog target)))
+      (link-or-copy prog target)
       (chown target 0 0)
       (chmod target #o6555)))
 
@@ -204,6 +221,11 @@ numeric gid or #f."
 
   (for-each make-setuid-program programs))
 
+(define (activate-/bin/sh shell)
+  "Change /bin/sh to point to SHELL."
+  (symlink shell "/bin/sh.new")
+  (rename-file "/bin/sh.new" "/bin/sh"))
+
 (define %current-system
   ;; The system that is current (a symlink.)  This is not necessarily the same
   ;; as the system we booted (aka. /run/booted-system) because we can re-build
diff --git a/gnu/build/install.scm b/gnu/build/install.scm
index e16896f8b8..a472259a4a 100644
--- a/gnu/build/install.scm
+++ b/gnu/build/install.scm
@@ -56,18 +56,38 @@ MOUNT-POINT."
   "Evaluate DIRECTIVE, an sexp describing a file or directory to create under
 directory TARGET."
   (let loop ((directive directive))
-    (match directive
-      (('directory name)
-       (mkdir-p (string-append target name)))
-      (('directory name uid gid)
-       (let ((dir (string-append target name)))
-         (mkdir-p dir)
-         (chown dir uid gid)))
-      (('directory name uid gid mode)
-       (loop `(directory ,name ,uid ,gid))
-       (chmod (string-append target name) mode))
-      ((new '-> old)
-       (symlink old (string-append target new))))))
+    (catch 'system-error
+      (lambda ()
+        (match directive
+          (('directory name)
+           (mkdir-p (string-append target name)))
+          (('directory name uid gid)
+           (let ((dir (string-append target name)))
+             (mkdir-p dir)
+             (chown dir uid gid)))
+          (('directory name uid gid mode)
+           (loop `(directory ,name ,uid ,gid))
+           (chmod (string-append target name) mode))
+          ((new '-> old)
+           (let try ()
+             (catch 'system-error
+               (lambda ()
+                 (symlink old (string-append target new)))
+               (lambda args
+                 ;; When doing 'guix system init' on the current '/', some
+                 ;; symlinks may already exists.  Override them.
+                 (if (= EEXIST (system-error-errno args))
+                     (begin
+                       (delete-file (string-append target new))
+                       (try))
+                     (apply throw args))))))))
+      (lambda args
+        ;; Usually we can only get here when installing to an existing root,
+        ;; as with 'guix system init foo.scm /'.
+        (format (current-error-port)
+                "error: failed to evaluate directive: ~s~%"
+                directive)
+        (apply throw args)))))
 
 (define (directives store)
   "Return a list of directives to populate the root file system that will host
@@ -93,7 +113,6 @@ STORE."
     ("/var/guix/gcroots/current-system" -> "/run/current-system")
 
     (directory "/bin")
-    ("/bin/sh" -> "/run/current-system/profile/bin/bash")
     (directory "/tmp" 0 0 #o1777)                 ; sticky bit
 
     (directory "/root" 0 0)                       ; an exception
@@ -106,6 +125,7 @@ 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")))
 
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
index 21ee58ad50..fbc683c798 100644
--- a/gnu/build/linux-boot.scm
+++ b/gnu/build/linux-boot.scm
@@ -221,6 +221,7 @@ networking values.)  Return #t if INTERFACE is up, #f otherwise."
 (define (load-linux-module* file)
   "Load Linux module from FILE, the name of a `.ko' file."
   (define (slurp module)
+    ;; TODO: Use 'mmap' to reduce memory usage.
     (call-with-input-file file get-bytevector-all))
 
   (load-linux-module (slurp file)))
@@ -342,10 +343,11 @@ bailing out.~%root contents: ~s~%" (scandir "/"))
                       volatile-root?
                       (mounts '()))
   "This procedure is meant to be called from an initrd.  Boot a system by
-first loading LINUX-MODULES, then setting up QEMU guest networking if
-QEMU-GUEST-NETWORKING? is true, mounting the file systems specified in MOUNTS,
-and finally booting into the new root if any.  The initrd supports kernel
-command-line options '--load', '--root', and '--repl'.
+first loading LINUX-MODULES (a list of absolute file names of '.ko' files),
+then setting up QEMU guest networking if QEMU-GUEST-NETWORKING? is true,
+mounting the file systems specified in MOUNTS, and finally booting into the
+new root if any.  The initrd supports kernel command-line options '--load',
+'--root', and '--repl'.
 
 Mount the root file system, specified by the '--root' command-line argument,
 if any.
@@ -383,9 +385,7 @@ to it are lost."
          (start-repl))
 
        (display "loading kernel modules...\n")
-       (for-each (compose load-linux-module*
-                          (cut string-append "/modules/" <>))
-                 linux-modules)
+       (for-each load-linux-module* linux-modules)
 
        (when qemu-guest-networking?
          (unless (configure-qemu-networking)
diff --git a/gnu/build/linux-initrd.scm b/gnu/build/linux-initrd.scm
index bf60137e8f..54639bd319 100644
--- a/gnu/build/linux-initrd.scm
+++ b/gnu/build/linux-initrd.scm
@@ -17,9 +17,15 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu build linux-initrd)
+  #:use-module (guix build utils)
+  #:use-module (guix build store-copy)
+  #:use-module (system base compile)
+  #:use-module (rnrs bytevectors)
+  #:use-module ((system foreign) #:select (sizeof))
   #:use-module (ice-9 popen)
   #:use-module (ice-9 ftw)
-  #:export (write-cpio-archive))
+  #:export (write-cpio-archive
+            build-initrd))
 
 ;;; Commentary:
 ;;;
@@ -69,4 +75,68 @@ COMPRESS? is true, compress it using GZIP.  On success, return OUTPUT."
                                output))
              output))))
 
+(define (cache-compiled-file-name file)
+  "Return the file name of the in-cache .go file for FILE, relative to the
+current directory.
+
+This is similar to what 'compiled-file-name' in (system base compile) does."
+  (let loop ((file file))
+    (let ((target (false-if-exception (readlink file))))
+     (if target
+         (loop target)
+         (format #f ".cache/guile/ccache/~a-~a-~a-~a/~a"
+                 (effective-version)
+                 (if (eq? (native-endianness) (endianness little))
+                     "LE"
+                     "BE")
+                 (sizeof '*)
+                 (effective-version)
+                 file)))))
+
+(define (compile-to-cache file)
+  "Compile FILE to the cache."
+  (let ((compiled-file (cache-compiled-file-name file)))
+    (mkdir-p (dirname compiled-file))
+    (compile-file file
+                  #:opts %auto-compilation-options
+                  #:output-file compiled-file)))
+
+(define* (build-initrd output
+                       #:key
+                       guile init
+                       (references-graphs '())
+                       (cpio "cpio")
+                       (gzip "gzip"))
+  "Write an initial RAM disk (initrd) to OUTPUT.  The initrd starts the script
+at INIT, running GUILE.  It contains all the items referred to by
+REFERENCES-GRAPHS."
+  (mkdir "contents")
+
+  ;; Copy the closures of all the items referenced in REFERENCES-GRAPHS.
+  (populate-store references-graphs "contents")
+
+  (with-directory-excursion "contents"
+    ;; Make '/init'.
+    (symlink init "init")
+
+    ;; Compile it.
+    (compile-to-cache "init")
+
+    ;; Allow Guile to find out where it is (XXX).  See
+    ;; 'guile-relocatable.patch'.
+    (mkdir-p "proc/self")
+    (symlink (string-append guile "/bin/guile") "proc/self/exe")
+    (readlink "proc/self/exe")
+
+    ;; Reset the timestamps of all the files that will make it in the initrd.
+    (for-each (lambda (file)
+                (unless (eq? 'symlink (stat:type (lstat file)))
+                  (utime file 0 0 0 0)))
+              (find-files "." ".*"))
+
+    (write-cpio-archive output "."
+                        #:cpio cpio #:gzip gzip))
+
+  (delete-file-recursively "contents"))
+
 ;;; linux-initrd.scm ends here
diff --git a/gnu/packages/abiword.scm b/gnu/packages/abiword.scm
new file mode 100644
index 0000000000..82a289e712
--- /dev/null
+++ b/gnu/packages/abiword.scm
@@ -0,0 +1,107 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Marek Benc <merkur32@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 abiword)
+  #:use-module ((guix licenses)
+                #:renamer (symbol-prefix-proc 'license:))
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages enchant)
+  #:use-module (gnu packages fribidi)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages ots)
+  #:use-module (gnu packages popt)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages readline)
+  #:use-module (gnu packages wv)
+  #:use-module (gnu packages xml))
+
+(define-public abiword
+  (package
+    (name "abiword")
+    (version "2.8.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri
+          (string-append "http://abisource.org/downloads/" name "/" version
+                         "/source/" name "-" version ".tar.gz"))
+        (sha256
+          (base32 "059sd2apxdmcacc4pll880i7vm18h0kyjsq299m1mz3c7ak8k46r"))
+        (patches
+          (list
+            (search-patch "abiword-wmf-version-lookup-fix.patch")
+            (search-patch "abiword-no-include-glib-internal-headers.patch")
+            (search-patch "abiword-explictly-cast-bools.patch")
+            (search-patch "abiword-use-proper-png-api.patch")
+            (search-patch "abiword-pass-no-undefined-to-linker.patch")
+            (search-patch "abiword-link-plugins-against-backend.patch")))))
+
+    (build-system gnu-build-system)
+    (arguments                   ;; NOTE: rsvg is disabled, since Abiword
+      `(#:configure-flags        ;; supports it directly, and its BS is broken.
+        (list
+          "--enable-clipart"     ;; TODO: The following plugins have unresolved
+          "--enable-templates"   ;; dependencies: aiksaurus, grammar, wpg, gda,
+          (string-append         ;; wordperfect, psion, mathview, goffice.
+            "--enable-plugins="
+              "applix " "babelfish " "bmp " "clarisworks " "collab " "command "
+              "docbook " "eml " "freetranslation " "garble " "gdict " "gimp "
+              "google " "hancom " "hrtext " "iscii " "kword " "latex "
+              "loadbindings " "mht " "mif " "mswrite " "opendocument "
+              "openwriter " "openxml " "opml " "ots " "paint " "passepartout "
+              "pdb " "pdf " "presentation " "s5 " "sdw " "t602 " "urldict "
+              "wikipedia " "wmf " "wml " "xslfo"))))
+    (inputs
+      `(("boost" ,boost)
+        ("enchant" ,enchant)
+        ("fontconfig" ,fontconfig)
+        ("fribidi" ,fribidi)
+        ("glib" ,glib)
+        ("gtk+" ,gtk+-2)
+        ("libglade" ,libglade)
+        ("libgsf" ,libgsf)
+        ("libjpeg" ,libjpeg)
+        ("libpng" ,libpng)
+        ("librsvg" ,librsvg)
+        ("libwmf" ,libwmf)
+        ("libxml2" ,libxml2)
+        ("ots" ,ots)
+        ("popt" ,popt)
+        ("readline" ,readline)
+        ("wv" ,wv)
+        ("zlib" ,zlib)))
+    (native-inputs
+      `(("intltool" ,intltool)
+        ("glib:bin" ,glib "bin")
+        ("pkg-config" ,pkg-config)))
+    (home-page "http://abisource.org/")
+    (synopsis "Word processing program")
+    (description
+      "AbiWord is a word processing program.  It is rapidly becoming a state
+of the art word processor, with lots of features useful for your daily work,
+personal needs, or for just some good old typing fun.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 4d60c17989..a255ff1b74 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -36,10 +36,8 @@
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages tcl)
-  #:use-module ((gnu packages base)
-                #:select (tar))
   #:use-module ((gnu packages compression)
-                #:select (gzip))
+                #:renamer (symbol-prefix-proc 'c:))
   #:use-module ((gnu packages openssl)
                 #:renamer (symbol-prefix-proc 'o:))
   #:use-module (gnu packages bison)
@@ -52,6 +50,7 @@
   #:use-module (gnu packages pciutils)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages libftdi)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages xorg))
 
 (define-public dmd
@@ -309,7 +308,7 @@ allow automatic login and starting any app.")
                                     '("services" "protocols" "rpc")))
                      #t))))
     (native-inputs `(("tar" ,tar)
-                     ("gzip" ,gzip)))
+                     ("gzip" ,c:gzip)))
     (synopsis "IANA protocol, port, and RPC number assignments")
     (description
      "This package provides the /etc/services, /etc/protocols, and /etc/rpc
@@ -929,3 +928,68 @@ under Unix and related operating systems.  Spaces and various other unsafe
 characters (such as \"$\") get replaced with \"_\".  ISO 8859-1 (Latin-1)
 characters can be replaced as well, as can UTF-8 characters.")
     (license bsd-3)))
+
+(define-public testdisk
+  (package
+    (name "testdisk")
+    (version "6.14")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://www.cgsecurity.org/testdisk-"
+                                  version ".tar.bz2"))
+              (sha256
+               (base32
+                "0v1jap83f5h99zv01v3qmqm160d36n4ysi0gyq7xzb3mqgmw75x5"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(;; ("ntfs" ,ntfs)
+       ("util-linux" ,util-linux)
+       ("openssl" ,o:openssl)
+       ("zlib" ,c:zlib)
+       ("e2fsprogs" ,e2fsprogs)
+       ("libjpeg" ,libjpeg)
+       ("ncurses" ,ncurses)))
+    (home-page "http://www.cgsecurity.org/wiki/TestDisk")
+    (synopsis "Data recovery tool")
+    (description
+     "TestDisk is a program for data recovery, primarily designed to help
+recover lost partitions and/or make non-booting disks bootable again.")
+    (license gpl2+)))
+
+(define-public direvent
+  (package
+    (name "direvent")
+    (version "5.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/direvent/direvent-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1i14131y6m8wvirz6piw4zxz2q1kbpl0lniv5kl55rx4k372dg8z"))
+              (modules '((guix build utils)))
+              (snippet '(substitute* "tests/testsuite"
+                          (("#![[:blank:]]?/bin/sh")
+                           "#!$SHELL")))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (alist-cons-before
+                 'build 'patch-/bin/sh
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   ;; Use the right shell when executing the watcher.
+                   (let ((bash (assoc-ref inputs "bash")))
+                     (substitute* "src/direvent.c"
+                       (("\"/bin/sh\"")
+                        (string-append "\"" bash "/bin/sh\"")))))
+                 %standard-phases)))
+    (home-page "http://www.gnu.org/software/direvent/")
+    (synopsis "Daemon to monitor directories for events such as file removal")
+    (description
+     "A daemon that monitors directories for events, such as creating,
+deleting or modifying files.  It can monitor different sets of directories for
+different events.  When an event is detected, direvent calls a specified
+external program with information about the event, such as the location
+within the file system where it occurred.  Thus, \"direvent\" provides an easy
+way to react immediately if given files undergo changes, for example, to
+track changes in important system configuration files.")
+    (license gpl3+)))
diff --git a/gnu/packages/apl.scm b/gnu/packages/apl.scm
index a08886c252..7da3b5eb4a 100644
--- a/gnu/packages/apl.scm
+++ b/gnu/packages/apl.scm
@@ -24,7 +24,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages maths)
-  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages readline))
 
 (define-public apl
diff --git a/gnu/packages/bdb.scm b/gnu/packages/bdb.scm
deleted file mode 100644
index e82a683332..0000000000
--- a/gnu/packages/bdb.scm
+++ /dev/null
@@ -1,68 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012 Andreas Enge <andreas@enge.fr>
-;;;
-;;; This file is part of GNU Guix.
-;;;
-;;; GNU Guix is free software; you can redistribute it and/or modify it
-;;; under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 3 of the License, or (at
-;;; your option) any later version.
-;;;
-;;; GNU Guix is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
-
-(define-module (gnu packages bdb)
-  #:use-module (gnu packages)
-  #:use-module (guix licenses)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system gnu))
-
-(define-public bdb
-  (package
-   (name "bdb")
-   (version "5.3.21")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "http://download.oracle.com/berkeley-db/db-" version
-                                ".tar.gz"))
-            (sha256 (base32
-                     "1f2g2612lf8djbwbwhxsvmffmf9d7693kh2l20195pqp0f9jmnfx"))))
-   (build-system gnu-build-system)
-   (outputs '("out"                             ; programs, libraries, headers
-              "doc"))                           ; 94 MiB of HTML docs
-   (arguments
-    '(#:tests? #f                            ; no check target available
-      #:phases
-      (alist-replace
-       'configure
-       (lambda* (#:key outputs #:allow-other-keys)
-         (let ((out (assoc-ref outputs "out"))
-               (doc (assoc-ref outputs "doc")))
-           ;; '--docdir' is not honored, so we need to patch.
-           (substitute* "dist/Makefile.in"
-             (("docdir[[:blank:]]*=.*")
-              (string-append "docdir = " doc "/share/doc/bdb")))
-
-           (zero?
-            (system* "./dist/configure"
-                     (string-append "--prefix=" out)
-                     (string-append "CONFIG_SHELL=" (which "bash"))
-                     (string-append "SHELL=" (which "bash"))
-
-                     ;; The compatibility mode is needed by some packages,
-                     ;; notably iproute2.
-                     "--enable-compat185"))))
-       %standard-phases)))
-   (synopsis "db, the Berkeley database")
-   (description
-    "Berkeley DB is an embeddable database allowing developers the choice of
-SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
-   (license (bsd-style "file://LICENSE"
-                       "See LICENSE in the distribution."))
-   (home-page "http://www.oracle.com/us/products/database/berkeley-db/overview/index.html")))
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 6887ba6167..11e8d2bc17 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;;
@@ -264,14 +264,14 @@ some compression ratio).")
 (define-public lzip
   (package
     (name "lzip")
-    (version "1.15")
+    (version "1.16")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://savannah/lzip/lzip-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "1dh5vmj5apizfawnsm50y7z064yx7cz3313przph16gwd3dgrlvw"))))
+               "0l9724rw1l3hg2ldr3n7ihqich4m9nc6y7l302bvdj4jmxdw530j"))))
     (build-system gnu-build-system)
     (home-page "http://www.nongnu.org/lzip/lzip.html")
     (synopsis "Lossless data compressor based on the LZMA algorithm")
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
new file mode 100644
index 0000000000..01d9cbdd62
--- /dev/null
+++ b/gnu/packages/databases.scm
@@ -0,0 +1,283 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
+;;; Copyright © 2014 David Thompson <davet@gnu.org>
+;;; Copyright © 2014 Mark H Weaver <mhw@netris.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 databases)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages openssl)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages readline)
+  #:use-module (gnu packages emacs)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages algebra)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages python)
+  #:use-module ((guix licenses)
+                #:select (gpl2 gpl3+ lgpl3+ x11-style bsd-style
+                          public-domain))
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (srfi srfi-26)
+  #:use-module (ice-9 match))
+
+(define-public bdb
+  (package
+    (name "bdb")
+    (version "5.3.21")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://download.oracle.com/berkeley-db/db-" version
+                                  ".tar.gz"))
+              (sha256 (base32
+                       "1f2g2612lf8djbwbwhxsvmffmf9d7693kh2l20195pqp0f9jmnfx"))))
+    (build-system gnu-build-system)
+    (outputs '("out"                             ; programs, libraries, headers
+               "doc"))                           ; 94 MiB of HTML docs
+    (arguments
+     '(#:tests? #f                            ; no check target available
+                #:phases
+                (alist-replace
+                 'configure
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (let ((out (assoc-ref outputs "out"))
+                         (doc (assoc-ref outputs "doc")))
+                     ;; '--docdir' is not honored, so we need to patch.
+                     (substitute* "dist/Makefile.in"
+                       (("docdir[[:blank:]]*=.*")
+                        (string-append "docdir = " doc "/share/doc/bdb")))
+
+                     (zero?
+                      (system* "./dist/configure"
+                               (string-append "--prefix=" out)
+                               (string-append "CONFIG_SHELL=" (which "bash"))
+                               (string-append "SHELL=" (which "bash"))
+
+                               ;; The compatibility mode is needed by some packages,
+                               ;; notably iproute2.
+                               "--enable-compat185"))))
+                 %standard-phases)))
+    (synopsis "db, the Berkeley database")
+    (description
+     "Berkeley DB is an embeddable database allowing developers the choice of
+SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
+    (license (bsd-style "file://LICENSE"
+                        "See LICENSE in the distribution."))
+    (home-page
+     "http://www.oracle.com/us/products/database/berkeley-db/overview/index.html")))
+
+(define-public mysql
+  (package
+    (name "mysql")
+    (version "5.1.73")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append
+                   "http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-"
+                   version ".tar.gz"))
+             (sha256
+              (base32
+               "1dfwi4ck0vq6sdci6gz0031s7zz5lc3pddqlgm0292s00l9y5sq5"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("procps" ,procps)
+       ("openssl" ,openssl)
+       ("perl" ,perl)
+       ("zlib" ,zlib)
+       ("ncurses" ,ncurses)))
+    (arguments
+     '(#:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (ice-9 ftw))                    ; for "rm -rf"
+       #:phases (alist-cons-after
+                 'install 'clean-up
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   ;; Remove the 112 MiB of tests that get installed.
+                   (let ((out (assoc-ref outputs "out")))
+                     (define (rm-rf dir)
+                       (file-system-fold (const #t) ; enter?
+                                         (lambda (file stat result) ; leaf
+                                           (delete-file file))
+                                         (const #t)               ; down
+                                         (lambda (dir stat result) ; up
+                                           (rmdir dir))
+                                         (const #t)
+                                         (lambda (file stat errno result)
+                                           (format (current-error-port)
+                                                   "error: ~a: ~a~%"
+                                                   file (strerror errno)))
+                                         #t
+                                         (string-append out "/" dir)))
+                     (rm-rf "mysql-test")
+                     (rm-rf "sql-bench")
+
+                     ;; Compress the 14 MiB Info file.
+                     (zero?
+                      (system* "gzip" "--best"
+                               (string-append out "/share/info/mysql.info")))))
+                 %standard-phases)))
+    (home-page "http://www.mysql.com/")
+    (synopsis "A fast, easy to use, and popular database")
+    (description
+     "MySQL is a fast, reliable, and easy to use relational database
+management system that supports the standardized Structured Query
+Language.")
+    (license gpl2)))
+
+(define-public postgresql
+  (package
+    (name "postgresql")
+    (version "9.3.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://ftp.postgresql.org/pub/source/v"
+                                  version "/postgresql-" version ".tar.gz"))
+              (sha256
+               (base32
+                "08kga00izykgvnx7hn995wc4zjqslspapaa8z63045p1ya14mr4g"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("readline" ,readline)
+       ("zlib" ,zlib)))
+    (home-page "http://www.postgresql.org/")
+    (synopsis "Powerful object-relational database system")
+    (description
+     "PostgreSQL is a powerful object-relational database system.  It is fully
+ACID compliant, has full support for foreign keys, joins, views, triggers, and
+stored procedures (in multiple languages).  It includes most SQL:2008 data
+types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, and
+TIMESTAMP.  It also supports storage of binary large objects, including
+pictures, sounds, or video.")
+    (license (x11-style "file://COPYRIGHT"))))
+
+(define-public recutils
+  (package
+    (name "recutils")
+    (version "1.7")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/recutils/recutils-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0cdwa4094x3yx7vn98xykvnlp9rngvd58d19vs3vh5hrvggccg93"))))
+    (build-system gnu-build-system)
+
+    ;; Running tests in parallel leads to test failures and crashes in
+    ;; torture/utils.
+    (arguments '(#:parallel-tests? #f))
+
+    (native-inputs `(("emacs" ,emacs)
+                     ("bc" ,bc)))
+
+    ;; TODO: Add more optional inputs.
+    ;; FIXME: Our Bash doesn't have development headers (need for the 'readrec'
+    ;; built-in command), but it's not clear how to get them installed.
+    ;; See <https://lists.gnu.org/archive/html/bug-bash/2014-03/msg00125.html>.
+    (inputs `(("curl" ,curl)
+              ("libgcrypt" ,libgcrypt)
+              ("check" ,check)))
+    (synopsis "Manipulate plain text files as databases")
+    (description
+     "GNU Recutils is a set of tools and libraries for creating and
+manipulating text-based, human-editable databases.  Despite being text-based,
+databases created with Recutils carry all of the expected features such as
+unique fields, primary keys, time stamps and more. Many different field types
+are supported, as is encryption.")
+    (license gpl3+)
+    (home-page "http://www.gnu.org/software/recutils/")))
+
+(define-public sqlite
+  (package
+   (name "sqlite")
+   (version "3.8.4.3")
+   (source (origin
+            (method url-fetch)
+            ;; TODO: Download from sqlite.org once this bug :
+            ;; http://lists.gnu.org/archive/html/bug-guile/2013-01/msg00027.html
+            ;; has been fixed.
+            (uri (let ((numeric-version
+                        (match (string-split version #\.)
+                          ((first-digit other-digits ...)
+                           (string-append first-digit
+                                          (string-pad-right
+                                           (string-concatenate
+                                            (map (cut string-pad <> 2 #\0)
+                                                 other-digits))
+                                           6 #\0))))))
+                   (string-append
+                    "mirror://sourceforge/sqlite.mirror/SQLite%20" version
+                    "/sqlite-autoconf-" numeric-version ".tar.gz")))
+            (sha256
+             (base32
+              "0rcdsk5sz34w8vy0g5yhfms4saiq81i872jxx5m5sjij7bi9bsg0"))
+            (patches
+             (list (search-patch "sqlite-large-page-size-fix.patch")))))
+   (build-system gnu-build-system)
+   (home-page "http://www.sqlite.org/")
+   (synopsis "The SQLite database management system")
+   (description
+    "SQLite is a software library that implements a self-contained, serverless,
+zero-configuration, transactional SQL database engine. SQLite is the most
+widely deployed SQL database engine in the world. The source code for SQLite is
+in the public domain.")
+   (license public-domain)))
+
+(define-public tdb
+  (package
+    (name "tdb")
+    (version "1.3.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://samba.org/ftp/tdb/tdb-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "085sd2kii72fr0c4pdc7c7m0xk34nc66wnjp21c83dss826y9gh4"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (alist-replace
+                 'configure
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (let ((out (assoc-ref outputs "out")))
+                     ;; The 'configure' script is a wrapper for Waf and
+                     ;; doesn't recognize things like '--enable-fast-install'.
+                     (zero? (system* "./configure"
+                                     (string-append "--prefix=" out)))))
+                 %standard-phases)))
+    (native-inputs
+     `(;; TODO: Build the documentation.
+       ;; ("docbook-xsl" ,docbook-xsl)
+       ;; ("libxml2" ,libxml2)
+       ;; ("libxslt" ,libxslt)
+       ("python" ,python-2)))                     ;for the Waf build system
+    (home-page "http://tdb.samba.org/")
+    (synopsis "TDB, the trivial database")
+    (description
+     "TDB is a Trivial Database.  In concept, it is very much like GDBM,
+and BSD's DB except that it allows multiple simultaneous writers and uses
+locking internally to keep writers from trampling on each other.  TDB is also
+extremely small.")
+    (license lgpl3+)))
diff --git a/gnu/packages/dc.scm b/gnu/packages/dc.scm
index 0cb7c5b4f0..0e65d886d0 100644
--- a/gnu/packages/dc.scm
+++ b/gnu/packages/dc.scm
@@ -23,7 +23,7 @@
   #:use-module (gnu packages gnutls)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages databases)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
diff --git a/gnu/packages/enchant.scm b/gnu/packages/enchant.scm
new file mode 100644
index 0000000000..c9e49d9551
--- /dev/null
+++ b/gnu/packages/enchant.scm
@@ -0,0 +1,61 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Marek Benc <merkur32@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 enchant)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages aspell)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix licenses))
+
+(define-public enchant
+  (package
+    (name "enchant")
+    (version "1.6.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri
+          (string-append "http://www.abisource.com/downloads/" name "/" version
+                         "/" name "-" version ".tar.gz"))
+        (sha256
+          (base32 "0zq9yw1xzk8k9s6x83n1f9srzcwdavzazn3haln4nhp9wxxrxb1g"))))
+
+    (build-system gnu-build-system)
+    (inputs
+      `(("aspell" ,aspell)    ;; Currently, the only supported backend in Guix
+        ("glib" ,glib)))      ;; is aspell. (This information might be old)
+    (native-inputs
+     `(("glib:bin" ,glib "bin")
+       ("pkg-config" ,pkg-config)))
+
+    (synopsis "Multi-backend spell-checking library wrapper")
+    (description
+      "On the surface, Enchant appears to be a generic spell checking library.
+Looking closer, you'll see the Enchant is more-or-less a fancy wrapper around
+the dlopen() system call.
+
+Enchant steps in to provide uniformity and conformity on top of these libraries,
+and implement certain features that may be lacking in any individual provider
+library.  Everything should \"just work\" for any and every definition of \"just
+working.\"")
+    (home-page "http://www.abisource.com/projects/enchant")
+    (license lgpl2.1+)))
diff --git a/gnu/packages/freeipmi.scm b/gnu/packages/freeipmi.scm
index 46240123c1..5ce87ae842 100644
--- a/gnu/packages/freeipmi.scm
+++ b/gnu/packages/freeipmi.scm
@@ -27,14 +27,14 @@
 (define-public freeipmi
   (package
     (name "freeipmi")
-    (version "1.4.1")
+    (version "1.4.5")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/freeipmi/freeipmi-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "1qpr4h46zmbk82w4fpijimzsdpgyr0fdnsinpsp5cvxy5pcikbd6"))))
+               "033zakrk3kvi4y41kslicr90b3yb2kj052cl6nbja7ybn70y9nkz"))))
     (build-system gnu-build-system)
     (inputs
      `(("readline" ,readline) ("libgcrypt" ,libgcrypt)))
diff --git a/gnu/packages/fribidi.scm b/gnu/packages/fribidi.scm
new file mode 100644
index 0000000000..eb13aa1c6d
--- /dev/null
+++ b/gnu/packages/fribidi.scm
@@ -0,0 +1,45 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Marek Benc <merkur32@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 fribidi)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix licenses))
+
+(define-public fribidi
+  (package
+    (name "fribidi")
+    (version "0.19.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri
+          (string-append "http://fribidi.org/download/" name "-" version
+                         ".tar.bz2"))
+        (sha256
+          (base32 "0zg1hpaml34ny74fif97j7ngrshlkl3wk3nja3gmlzl17i1bga6b"))))
+
+    (build-system gnu-build-system)
+    (synopsis "Implementation of the Unicode bidirectional algorithm")
+    (description
+     "GNU FriBidi is an implementation of the Unicode Bidirectional
+Algorithm.  This algorithm is used to properly display text in left-to-right
+or right-to-left ordering as necessary.")
+    (home-page "http://fribidi.org/")
+    (license lgpl2.1+)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 84e09aaee7..f3c88c92d4 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -38,7 +38,7 @@
   #:use-module (gnu packages readline)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages texinfo)
   #:use-module (guix build-system gnu))
diff --git a/gnu/packages/global.scm b/gnu/packages/global.scm
index e50a57f2e6..d43caf4f54 100644
--- a/gnu/packages/global.scm
+++ b/gnu/packages/global.scm
@@ -28,14 +28,14 @@
 (define-public global                             ; a global variable
   (package
     (name "global")
-    (version "6.3")
+    (version "6.3.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/global/global-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "1nzqqcry3mfha53n8j1grdg2dflp9gpg54qwlsrzq9sspwg78769"))))
+               "07iifpz00ch3drlscvk5v12j7bckwv6pk8040y81s1x14b0gf220"))))
     (build-system gnu-build-system)
     (inputs `(("ncurses" ,ncurses)
               ("libtool" ,libtool)))
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index e4ef3d4871..d5a1930bbe 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -38,7 +38,7 @@
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
-  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages video)
   #:use-module (gnu packages xiph)
   #:use-module ((guix licenses)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 06f62715c4..149720e5e8 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -19,6 +19,9 @@
 (define-module (gnu packages image)
   #:use-module (gnu packages)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages xml)
   #:use-module ((guix licenses) #:renamer (symbol-prefix-proc 'license:))
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -110,3 +113,36 @@ collection of tools for doing simple manipulations of TIFF images.")
    (license (license:bsd-style "file://COPYRIGHT"
                                "See COPYRIGHT in the distribution."))
    (home-page "http://www.libtiff.org/")))
+
+(define-public libwmf
+  (package
+    (name "libwmf")
+    (version "0.2.8.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "mirror://sourceforge/wvware/"
+                            name "/" version
+                            "/" name "-" version ".tar.gz"))
+        (sha256
+          (base32 "1y3wba4q8pl7kr51212jwrsz1x6nslsx1gsjml1x0i8549lmqd2v"))))
+
+    (build-system gnu-build-system)
+    (inputs
+      `(("freetype" ,freetype)
+        ("libjpeg" ,libjpeg)
+        ("libpng",libpng)
+        ("libxml2" ,libxml2)
+        ("zlib" ,zlib)))
+    (native-inputs
+      `(("pkg-config" ,pkg-config)))
+    (synopsis "Library for reading images in the Microsoft WMF format")
+    (description
+      "libwmf is a library for reading vector images in Microsoft's native
+Windows Metafile Format (WMF) and for either (a) displaying them in, e.g., an X
+window; or (b) converting them to more standard/free file formats such as, e.g.,
+the W3C's XML-based Scaleable Vector Graphic (SVG) format.")
+    (home-page "http://wvware.sourceforge.net/libwmf.html")
+
+    ;; 'COPYING' is the GPLv2, but file headers say LGPLv2.0+.
+    (license license:lgpl2.0+)))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 442f80103a..7be0d076ec 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -30,7 +30,7 @@
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages pciutils)
-  #:use-module (gnu packages bdb)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
@@ -613,6 +613,9 @@ MIDI functionality to the Linux-based operating system.")
     (arguments
      ;; XXX: Disable man page creation until we have DocBook.
      '(#:configure-flags (list "--disable-xmlto"
+
+                               ;; The udev rule is responsible for restoring
+                               ;; the volume.
                                (string-append "--with-udev-rules-dir="
                                               (assoc-ref %outputs "out")
                                               "/lib/udev/rules.d"))
@@ -1397,7 +1400,13 @@ time.")
                                               (assoc-ref %outputs "out")
                                               "/etc/lvm")
                                "--enable-udev_sync"
-                               "--enable-udev_rules")
+                               "--enable-udev_rules"
+
+                               ;; Make sure programs such as 'dmsetup' can
+                               ;; find libdevmapper.so.
+                               (string-append "LDFLAGS=-Wl,-rpath="
+                                              (assoc-ref %outputs "out")
+                                              "/lib"))
 
        ;; The tests use 'mknod', which requires root access.
        #:tests? #f))
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index a85c120469..92ffc22c14 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -75,7 +75,8 @@ for configuration, scripting, and rapid prototyping.")
              (uri (string-append "http://www.lua.org/ftp/lua-"
                                  version ".tar.gz"))
              (sha256
-              (base32 "0cskd4w0g6rdm2q8q3i4n1h3j8kylhs3rq8mxwl9vwlmlxbgqh16"))))))
+              (base32 "0cskd4w0g6rdm2q8q3i4n1h3j8kylhs3rq8mxwl9vwlmlxbgqh16"))
+             (patches (list (search-patch "lua51-liblua-so.patch")))))))
 
 (define-public luajit
   (package
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index a9e862ac88..2a742cdc56 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -31,7 +31,7 @@
   #:use-module (gnu packages guile)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages m4)
-  #:use-module (gnu packages mysql)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages openssl)
   #:use-module (gnu packages perl)
@@ -43,7 +43,6 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages flex)
-  #:use-module (gnu packages bdb)
   #:use-module (gnu packages gdb)
   #:use-module (gnu packages samba)
   #:use-module ((guix licenses)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 813480616e..774686310f 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -123,7 +123,7 @@ numbers.")
 (define-public glpk
   (package
     (name "glpk")
-    (version "4.54")
+    (version "4.55")
     (source
      (origin
       (method url-fetch)
@@ -131,7 +131,7 @@ numbers.")
                           version ".tar.gz"))
       (sha256
        (base32
-        "18gr2anv8gyps6j9f22k7li6w07glvww666sdqblvlq2hh3whwmb"))))
+        "1rqx5fzj1mhkifilip5mkxybpj2wkniq5qcn8h1w2vkr2rzhs29p"))))
     (build-system gnu-build-system)
     (inputs
      `(("gmp" ,gmp)))
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index a20103df4f..634bc7c6bd 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -35,7 +35,7 @@
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pulseaudio)
-  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages video)
   #:use-module (gnu packages xiph)
   #:export (libmpdclient
diff --git a/gnu/packages/mysql.scm b/gnu/packages/mysql.scm
deleted file mode 100644
index e89770e907..0000000000
--- a/gnu/packages/mysql.scm
+++ /dev/null
@@ -1,87 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
-;;;
-;;; This file is part of GNU Guix.
-;;;
-;;; GNU Guix is free software; you can redistribute it and/or modify it
-;;; under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 3 of the License, or (at
-;;; your option) any later version.
-;;;
-;;; GNU Guix is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
-
-(define-module (gnu packages mysql)
-  #:use-module (gnu packages)
-  #:use-module (gnu packages perl)
-  #:use-module (gnu packages linux)
-  #:use-module (gnu packages openssl)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages ncurses)
-  #:use-module ((guix licenses) #:select (gpl2))
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system gnu))
-
-(define-public mysql
-  (package
-    (name "mysql")
-    (version "5.1.73")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-"
-                   version ".tar.gz"))
-             (sha256
-              (base32
-               "1dfwi4ck0vq6sdci6gz0031s7zz5lc3pddqlgm0292s00l9y5sq5"))))
-    (build-system gnu-build-system)
-    (inputs
-     `(("procps" ,procps)
-       ("openssl" ,openssl)
-       ("perl" ,perl)
-       ("zlib" ,zlib)
-       ("ncurses" ,ncurses)))
-    (arguments
-     '(#:modules ((guix build gnu-build-system)
-                  (guix build utils)
-                  (ice-9 ftw))                    ; for "rm -rf"
-       #:phases (alist-cons-after
-                 'install 'clean-up
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; Remove the 112 MiB of tests that get installed.
-                   (let ((out (assoc-ref outputs "out")))
-                     (define (rm-rf dir)
-                       (file-system-fold (const #t) ; enter?
-                                         (lambda (file stat result) ; leaf
-                                           (delete-file file))
-                                         (const #t)               ; down
-                                         (lambda (dir stat result) ; up
-                                           (rmdir dir))
-                                         (const #t)
-                                         (lambda (file stat errno result)
-                                           (format (current-error-port)
-                                                   "error: ~a: ~a~%"
-                                                   file (strerror errno)))
-                                         #t
-                                         (string-append out "/" dir)))
-                     (rm-rf "mysql-test")
-                     (rm-rf "sql-bench")
-
-                     ;; Compress the 14 MiB Info file.
-                     (zero?
-                      (system* "gzip" "--best"
-                               (string-append out "/share/info/mysql.info")))))
-                 %standard-phases)))
-    (home-page "http://www.mysql.com/")
-    (synopsis "A fast, easy to use, and popular database")
-    (description
-     "MySQL is a fast, reliable, and easy to use relational database
-management system that supports the standardized Structured Query
-Language.")
-    (license gpl2)))
diff --git a/gnu/packages/nvi.scm b/gnu/packages/nvi.scm
index 3037e5bafc..8fd736d180 100644
--- a/gnu/packages/nvi.scm
+++ b/gnu/packages/nvi.scm
@@ -18,7 +18,7 @@
 
 (define-module (gnu packages nvi)
   #:use-module (gnu packages)
-  #:use-module (gnu packages bdb)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages ncurses)
   #:use-module (guix packages)
   #:use-module (guix download)
diff --git a/gnu/packages/openldap.scm b/gnu/packages/openldap.scm
index 574f11904a..23c32488e9 100644
--- a/gnu/packages/openldap.scm
+++ b/gnu/packages/openldap.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -19,7 +19,7 @@
 
 (define-module (gnu packages openldap)
   #:use-module (gnu packages autotools)
-  #:use-module (gnu packages bdb)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages gnupg)
diff --git a/gnu/packages/ots.scm b/gnu/packages/ots.scm
new file mode 100644
index 0000000000..cd2bf8585b
--- /dev/null
+++ b/gnu/packages/ots.scm
@@ -0,0 +1,68 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Marek Benc <merkur32@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 ots)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages popt)
+  #:use-module (gnu packages xml)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses)
+                #:renamer (symbol-prefix-proc 'license:)))
+
+(define-public ots
+  (package
+    (name "ots")
+    (version "0.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/libots/libots/"
+                           name "-" version "/" name "-" version
+                           ".tar.gz"))
+       (sha256
+        (base32 "0dz1ccd7ymzk4swz1aly4im0k3pascnshmgg1whd2rk14li8v47a"))
+       (patches
+        (list (search-patch "ots-no-include-missing-file.patch")))))
+
+    (build-system gnu-build-system)
+    (inputs
+      `(("glib" ,glib)
+        ("popt" ,popt)
+        ("libxml2" ,libxml2)
+        ("zlib" ,zlib)))
+    (native-inputs
+      `(("glib:bin" ,glib "bin")
+        ("pkg-config" ,pkg-config)))
+    (synopsis "Tool for summarizing texts")
+    (description
+      "The Open Text Summarizer is a library and command-line tool for
+summarizing texts.  The program reads a text and decides which sentences are
+important and which are not.  OTS will create a short summary or will
+highlight the main ideas in the text.
+
+The program can either print the summarized text as plain text or HTML.  If in
+HTML, the important sentences are highlighted.
+
+The program is multi lingual and works with UTF-8 encoding.")
+    (home-page "http://libots.sourceforge.net/")
+    (license license:gpl2+)))
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 66e71df284..9f35de1819 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -27,7 +27,7 @@
   #:use-module (gnu packages guile)
   #:use-module ((gnu packages compression) #:select (bzip2 gzip))
   #:use-module (gnu packages gnupg)
-  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages autotools)
diff --git a/gnu/packages/patches/abiword-explictly-cast-bools.patch b/gnu/packages/patches/abiword-explictly-cast-bools.patch
new file mode 100644
index 0000000000..7927a180ba
--- /dev/null
+++ b/gnu/packages/patches/abiword-explictly-cast-bools.patch
@@ -0,0 +1,93 @@
+As of JPEG-9, the type 'boolean' is an enumeration, but since glib defines
+TRUE and FALSE as numeric constants and this is C++, they need to be explicitly
+casted.
+
+--- a/src/af/util/xp/ut_jpeg.cpp	2009-07-08 19:33:53.000000000 +0200
++++ b/src/af/util/xp/ut_jpeg.cpp	2014-09-06 19:55:55.876997404 +0200
+@@ -102,7 +102,7 @@
+ 	src->pub.next_input_byte = src->sourceBuf->getPointer (src->pos);
+ 	src->pub.bytes_in_buffer = src->sourceBuf->getLength ();
+ 	
+-	return TRUE;
++	return (boolean)TRUE;
+ }
+ 
+ /*
+@@ -161,7 +161,7 @@
+ 	/* set the data source */
+ 	_JPEG_ByteBufSrc (&cinfo, pBB);
+ 
+-	jpeg_read_header(&cinfo, TRUE);
++	jpeg_read_header(&cinfo, (boolean)TRUE);
+ 	jpeg_start_decompress(&cinfo);
+     iImageWidth = cinfo.output_width;
+     iImageHeight = cinfo.output_height;
+@@ -189,7 +189,7 @@
+ 	/* set the data source */
+ 	_JPEG_ByteBufSrc (&cinfo, pBB);
+ 
+-	jpeg_read_header(&cinfo, TRUE);
++	jpeg_read_header(&cinfo, (boolean)TRUE);
+ 	jpeg_start_decompress(&cinfo);
+     
+ 	int row_stride = cinfo.output_width * cinfo.output_components;
+
+
+In the following file, we also need to reverse header include order: JPEG needs
+to be included before Glib, which is included by "abiword-garble.h" for this fix
+to work.
+
+The JPEG header needs the types FILE and size_t, we can get them from cstdio.
+
+--- a/plugins/garble/xp/abiword-garble-jpeg.cpp	2009-09-05 17:49:53.000000000 +0200
++++ b/plugins/garble/xp/abiword-garble-jpeg.cpp	2014-09-07 21:28:49.364008571 +0200
+@@ -20,12 +20,14 @@
+  * 02111-1307, USA.
+  */
+ 
+-#include "abiword-garble.h"
++#include <cstdio>
+ 
+ extern "C" {
+ 	#include <jpeglib.h>
+ }
+ 
++#include "abiword-garble.h"
++
+ //-----------------------------------------------------------------------------
+ typedef struct {
+ 	struct jpeg_destination_mgr pub;
+@@ -49,7 +51,7 @@
+     mem_dest_ptr dest = (mem_dest_ptr) cinfo->dest;
+     dest->pub.next_output_byte = dest->buf;
+     dest->pub.free_in_buffer = dest->bufsize;
+-    return FALSE;
++    return (boolean)FALSE;
+ }
+ 
+ //-----------------------------------------------------------------------------
+@@ -96,7 +98,7 @@
+ 	cinfo.image_width = (JDIMENSION) w;
+ 	cinfo.image_height = (JDIMENSION) h;
+ 	jpeg_set_defaults (&cinfo);
+-	jpeg_set_quality ( &cinfo, 50, TRUE );
++	jpeg_set_quality ( &cinfo, 50, (boolean)TRUE );
+ 	cinfo.dest = (struct jpeg_destination_mgr *) (*cinfo.mem->alloc_small)((j_common_ptr)&cinfo, JPOOL_PERMANENT, sizeof(mem_destination_mgr));
+     dest = (mem_dest_ptr) cinfo.dest;
+     dest->pub.init_destination    = _jpeg_init_destination;
+@@ -105,7 +107,7 @@
+     dest->buf      = (JOCTET*)data;
+     dest->bufsize  = length;
+     dest->jpegsize = 0;
+-	jpeg_start_compress (&cinfo, TRUE);
++	jpeg_start_compress (&cinfo, (boolean)TRUE);
+ 
+ 	// write data
+ 	for (int i=0; i<h; ++i)
+@@ -121,4 +123,4 @@
+ 		free( dib[i] );
+ 	free( dib );
+ 	return true;
+-}
+\ No newline at end of file
++}
diff --git a/gnu/packages/patches/abiword-link-plugins-against-backend.patch b/gnu/packages/patches/abiword-link-plugins-against-backend.patch
new file mode 100644
index 0000000000..fb8fbfc98b
--- /dev/null
+++ b/gnu/packages/patches/abiword-link-plugins-against-backend.patch
@@ -0,0 +1,639 @@
+Link plugins against libabiword. This is because --no-undefined is passed to
+the linker when linking and without libabiword, it would fail.
+
+--- a/plugins/aiksaurus/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/aiksaurus/Makefile.in	2014-09-06 14:58:36.480413350 +0200
+@@ -422,7 +422,8 @@
+ plugin_LTLIBRARIES = aiksaurus.la
+ aiksaurus_la_LIBADD = \
+ 	$(platform_lib) \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ aiksaurus_la_LDFLAGS = \
+ 	$(AIKSAURUS_LIBS) \
+
+--- a/plugins/applix/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/applix/Makefile.in	2014-09-06 14:58:54.416413938 +0200
+@@ -425,7 +425,8 @@
+ @APPLIX_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @APPLIX_BUILTIN_FALSE@plugin_LTLIBRARIES = applix.la
+ applix_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ applix_la_LDFLAGS = \
+ 	$(APPLIX_LIBS) \
+
+--- a/plugins/babelfish/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/babelfish/Makefile.in	2014-09-06 14:59:09.220414422 +0200
+@@ -425,7 +425,8 @@
+ @BABELFISH_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @BABELFISH_BUILTIN_FALSE@plugin_LTLIBRARIES = babelfish.la
+ babelfish_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ babelfish_la_LDFLAGS = \
+ 	$(BABELFISH_LIBS) \
+
+--- a/plugins/bmp/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/bmp/Makefile.in	2014-09-06 14:59:53.928415886 +0200
+@@ -425,7 +425,8 @@
+ @BMP_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @BMP_BUILTIN_FALSE@plugin_LTLIBRARIES = bmp.la
+ bmp_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ bmp_la_LDFLAGS = \
+ 	$(BMP_LIBS) \
+
+--- a/plugins/clarisworks/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/clarisworks/Makefile.in	2014-09-06 15:00:06.148416286 +0200
+@@ -427,7 +427,8 @@
+ @CLARISWORKS_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @CLARISWORKS_BUILTIN_FALSE@plugin_LTLIBRARIES = clarisworks.la
+ clarisworks_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ clarisworks_la_LDFLAGS = \
+ 	$(CLARISWORKS_LIBS) \
+
+--- a/plugins/collab/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/collab/Makefile.in	2014-09-06 15:02:04.000420145 +0200
+@@ -428,7 +428,8 @@
+ @TOOLKIT_COCOA_FALSE@plugin_LTLIBRARIES = collab.la
+ @TOOLKIT_COCOA_FALSE@collab_la_LIBADD = \
+ @TOOLKIT_COCOA_FALSE@	backends/libbackends.la \
+-@TOOLKIT_COCOA_FALSE@	core/libcore.la
++@TOOLKIT_COCOA_FALSE@	core/libcore.la \
++@TOOLKIT_COCOA_FALSE@	@top_builddir@/src/libabiword-2.8.la
+ 
+ @TOOLKIT_COCOA_FALSE@collab_la_LDFLAGS = \
+ @TOOLKIT_COCOA_FALSE@	$(COLLAB_LIBS) \
+
+--- a/plugins/command/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/command/Makefile.in	2014-09-06 15:02:41.208421363 +0200
+@@ -420,7 +420,8 @@
+ @TOOLKIT_COCOA_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @TOOLKIT_COCOA_FALSE@plugin_LTLIBRARIES = command.la
+ @TOOLKIT_COCOA_FALSE@command_la_LIBADD = \
+-@TOOLKIT_COCOA_FALSE@	xp/libxp.la
++@TOOLKIT_COCOA_FALSE@	xp/libxp.la \
++@TOOLKIT_COCOA_FALSE@	@top_builddir@/src/libabiword-2.8.la
+ 
+ @TOOLKIT_COCOA_FALSE@command_la_LDFLAGS = \
+ @TOOLKIT_COCOA_FALSE@	$(COMMAND_LIBS) \
+
+--- a/plugins/docbook/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/docbook/Makefile.in	2014-09-06 15:02:52.128421720 +0200
+@@ -425,7 +425,8 @@
+ @DOCBOOK_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @DOCBOOK_BUILTIN_FALSE@plugin_LTLIBRARIES = docbook.la
+ docbook_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ docbook_la_LDFLAGS = \
+ 	$(DOCBOOK_LIBS) \
+
+--- a/plugins/eml/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/eml/Makefile.in	2014-09-06 15:03:02.760422068 +0200
+@@ -425,7 +425,8 @@
+ @EML_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @EML_BUILTIN_FALSE@plugin_LTLIBRARIES = eml.la
+ eml_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ eml_la_LDFLAGS = \
+ 	$(EML_LIBS) \
+
+--- a/plugins/freetranslation/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/freetranslation/Makefile.in	2014-09-06 15:03:17.656422556 +0200
+@@ -427,7 +427,8 @@
+ @FREETRANSLATION_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @FREETRANSLATION_BUILTIN_FALSE@plugin_LTLIBRARIES = freetranslation.la
+ freetranslation_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ freetranslation_la_LDFLAGS = \
+ 	$(FREETRANSLATION_LIBS) \
+
+--- a/plugins/garble/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/garble/Makefile.in	2014-09-06 15:03:48.192423556 +0200
+@@ -427,7 +427,8 @@
+ @TOOLKIT_COCOA_FALSE@plugin_LTLIBRARIES = garble.la
+ @TOOLKIT_COCOA_FALSE@garble_la_LIBADD = \
+ @TOOLKIT_COCOA_FALSE@	xp/libxp.la \
+-@TOOLKIT_COCOA_FALSE@	$(GARBLE_LIBS) $(PNG_LIBS) -ljpeg
++@TOOLKIT_COCOA_FALSE@	$(GARBLE_LIBS) $(PNG_LIBS) -ljpeg \
++@TOOLKIT_COCOA_FALSE@	@top_builddir@/src/libabiword-2.8.la
+ 
+ @TOOLKIT_COCOA_FALSE@garble_la_LDFLAGS = \
+ @TOOLKIT_COCOA_FALSE@	$(GARBLE_LIBS) \
+
+--- a/plugins/gda/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/gda/Makefile.in	2014-09-06 15:04:08.012424205 +0200
+@@ -419,7 +419,8 @@
+ plugindir = $(ABIWORD_PLUGINSDIR)
+ plugin_LTLIBRARIES = gda.la
+ gda_la_LIBADD = \
+-	unix/libunix.la
++	unix/libunix.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ gda_la_LDFLAGS = \
+ 	$(GDA_LIBS) \
+
+--- a/plugins/gdict/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/gdict/Makefile.in	2014-09-06 15:04:37.888425183 +0200
+@@ -423,7 +423,8 @@
+ @GDICT_BUILTIN_FALSE@@TOOLKIT_GTK_TRUE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @GDICT_BUILTIN_FALSE@@TOOLKIT_GTK_TRUE@plugin_LTLIBRARIES = gdict.la
+ @TOOLKIT_GTK_TRUE@gdict_la_LIBADD = \
+-@TOOLKIT_GTK_TRUE@	unix/libunix.la
++@TOOLKIT_GTK_TRUE@	unix/libunix.la \
++@TOOLKIT_GTK_TRUE@	@top_builddir@/src/libabiword-2.8.la
+ 
+ @TOOLKIT_GTK_TRUE@gdict_la_LDFLAGS = \
+ @TOOLKIT_GTK_TRUE@	$(GDICT_LIBS) \
+
+--- a/plugins/gimp/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/gimp/Makefile.in	2014-09-06 15:04:47.380425494 +0200
+@@ -425,7 +425,8 @@
+ @GIMP_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @GIMP_BUILTIN_FALSE@plugin_LTLIBRARIES = gimp.la
+ gimp_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ gimp_la_LDFLAGS = \
+ 	$(GIMP_LIBS) \
+
+--- a/plugins/goffice/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/goffice/Makefile.in	2014-09-06 15:04:57.660425830 +0200
+@@ -419,7 +419,8 @@
+ plugindir = $(ABIWORD_PLUGINSDIR)
+ plugin_LTLIBRARIES = goffice.la
+ goffice_la_LIBADD = \
+-	unix/libunix.la
++	unix/libunix.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ goffice_la_LDFLAGS = \
+ 	$(GOFFICE_LIBS) \
+
+--- a/plugins/google/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/google/Makefile.in	2014-09-06 15:05:06.852426131 +0200
+@@ -425,7 +425,8 @@
+ @GOOGLE_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @GOOGLE_BUILTIN_FALSE@plugin_LTLIBRARIES = google.la
+ google_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ google_la_LDFLAGS = \
+ 	$(GOOGLE_LIBS) \
+
+--- a/plugins/grammar/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/grammar/Makefile.in	2014-09-06 15:05:19.840426556 +0200
+@@ -424,7 +424,8 @@
+ plugin_LTLIBRARIES = grammar.la
+ grammar_la_LIBADD = \
+ 	linkgrammarwrap/liblinkgrammarwrap.la \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ grammar_la_LDFLAGS = \
+ 	$(GRAMMAR_LIBS) \
+
+--- a/plugins/hancom/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/hancom/Makefile.in	2014-09-06 15:05:29.684426879 +0200
+@@ -425,7 +425,8 @@
+ @HANCOM_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @HANCOM_BUILTIN_FALSE@plugin_LTLIBRARIES = hancom.la
+ hancom_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ hancom_la_LDFLAGS = \
+ 	$(HANCOM_LIBS) \
+
+--- a/plugins/hrtext/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/hrtext/Makefile.in	2014-09-06 15:05:41.244427257 +0200
+@@ -425,7 +425,8 @@
+ @HRTEXT_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @HRTEXT_BUILTIN_FALSE@plugin_LTLIBRARIES = hrtext.la
+ hrtext_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ hrtext_la_LDFLAGS = \
+ 	$(HRTEXT_LIBS) \
+
+--- a/plugins/iscii/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/iscii/Makefile.in	2014-09-06 15:05:52.660427631 +0200
+@@ -425,7 +425,8 @@
+ @ISCII_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @ISCII_BUILTIN_FALSE@plugin_LTLIBRARIES = iscii.la
+ iscii_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ iscii_la_LDFLAGS = \
+ 	$(ISCII_LIBS) \
+
+--- a/plugins/kword/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/kword/Makefile.in	2014-09-06 15:06:01.260427912 +0200
+@@ -425,7 +425,8 @@
+ @KWORD_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @KWORD_BUILTIN_FALSE@plugin_LTLIBRARIES = kword.la
+ kword_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ kword_la_LDFLAGS = \
+ 	$(KWORD_LIBS) \
+
+--- a/plugins/latex/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/latex/Makefile.in	2014-09-06 15:06:13.212428304 +0200
+@@ -426,7 +426,8 @@
+ @LATEX_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @LATEX_BUILTIN_FALSE@plugin_LTLIBRARIES = latex.la
+ latex_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ latex_la_LDFLAGS = \
+ 	$(LATEX_LIBS) \
+
+--- a/plugins/loadbindings/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/loadbindings/Makefile.in	2014-09-06 15:06:27.340428766 +0200
+@@ -427,7 +427,8 @@
+ @LOADBINDINGS_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @LOADBINDINGS_BUILTIN_FALSE@plugin_LTLIBRARIES = loadbindings.la
+ loadbindings_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ loadbindings_la_LDFLAGS = \
+ 	$(LOADBINDINGS_LIBS) \
+
+--- a/plugins/mathview/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/mathview/Makefile.in	2014-09-06 15:06:35.428429031 +0200
+@@ -423,7 +423,8 @@
+ plugin_LTLIBRARIES = mathview.la
+ mathview_la_LIBADD = \
+ 	itex2mml/libitex2mml.la \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ mathview_la_LDFLAGS = \
+ 	$(MATHVIEW_LIBS) \
+
+--- a/plugins/mht/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/mht/Makefile.in	2014-09-06 15:06:47.516429427 +0200
+@@ -422,7 +422,8 @@
+ plugindir = $(ABIWORD_PLUGINSDIR)
+ plugin_LTLIBRARIES = mht.la
+ mht_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ mht_la_LDFLAGS = \
+ 	$(MHT_LIBS) \
+
+--- a/plugins/mif/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/mif/Makefile.in	2014-09-06 15:07:03.496429950 +0200
+@@ -425,7 +425,8 @@
+ @MIF_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @MIF_BUILTIN_FALSE@plugin_LTLIBRARIES = mif.la
+ mif_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ mif_la_LDFLAGS = \
+ 	$(MIF_LIBS) \
+
+--- a/plugins/mswrite/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/mswrite/Makefile.in	2014-09-06 15:07:15.700430349 +0200
+@@ -425,7 +425,8 @@
+ @MSWRITE_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @MSWRITE_BUILTIN_FALSE@plugin_LTLIBRARIES = mswrite.la
+ mswrite_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ mswrite_la_LDFLAGS = \
+ 	$(MSWRITE_LIBS) \
+
+--- a/plugins/opendocument/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/opendocument/Makefile.in	2014-09-06 15:07:26.668430709 +0200
+@@ -430,7 +430,8 @@
+ opendocument_la_LIBADD = \
+ 	common/libcommon.la \
+ 	exp/libexp.la \
+-	imp/libimp.la
++	imp/libimp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ opendocument_la_LDFLAGS = \
+ 	$(OPENDOCUMENT_LIBS) \
+
+--- a/plugins/openwriter/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/openwriter/Makefile.in	2014-09-06 15:07:40.272431154 +0200
+@@ -426,7 +426,8 @@
+ @OPENWRITER_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @OPENWRITER_BUILTIN_FALSE@plugin_LTLIBRARIES = openwriter.la
+ openwriter_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ openwriter_la_LDFLAGS = \
+ 	$(OPENWRITER_LIBS) \
+
+--- a/plugins/openxml/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/openxml/Makefile.in	2014-09-06 15:08:44.312433251 +0200
+@@ -428,7 +428,8 @@
+ openxml_la_LIBADD = \
+ 	common/libcommon.la \
+ 	imp/libimp.la \
+-	exp/libexp.la
++	exp/libexp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ openxml_la_LDFLAGS = \
+ 	$(OPENXML_LIBS) \
+
+--- a/plugins/opml/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/opml/Makefile.in	2014-09-06 15:08:58.424433713 +0200
+@@ -425,7 +425,8 @@
+ @OPML_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @OPML_BUILTIN_FALSE@plugin_LTLIBRARIES = opml.la
+ opml_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ opml_la_LDFLAGS = \
+ 	$(OPML_LIBS) \
+
+--- a/plugins/ots/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/ots/Makefile.in	2014-09-06 15:09:08.164434031 +0200
+@@ -419,7 +419,8 @@
+ plugindir = $(ABIWORD_PLUGINSDIR)
+ plugin_LTLIBRARIES = ots.la
+ ots_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ ots_la_LDFLAGS = \
+ 	$(OTS_LIBS) \
+
+--- a/plugins/paint/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/paint/Makefile.in	2014-09-06 15:09:38.912435038 +0200
+@@ -426,7 +426,8 @@
+ @PAINT_BUILTIN_FALSE@plugin_LTLIBRARIES = paint.la
+ paint_la_LIBADD = \
+ 	@PLATFORM@/lib@PLATFORM@.la \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ paint_la_LDFLAGS = \
+ 	$(PAINT_LIBS) \
+
+--- a/plugins/passepartout/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/passepartout/Makefile.in	2014-09-06 15:09:46.744435295 +0200
+@@ -427,7 +427,8 @@
+ @PASSEPARTOUT_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @PASSEPARTOUT_BUILTIN_FALSE@plugin_LTLIBRARIES = passepartout.la
+ passepartout_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ passepartout_la_LDFLAGS = \
+ 	$(PASSEPARTOUT_LIBS) \
+
+--- a/plugins/pdb/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/pdb/Makefile.in	2014-09-06 15:09:54.484435548 +0200
+@@ -425,7 +425,8 @@
+ @PDB_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @PDB_BUILTIN_FALSE@plugin_LTLIBRARIES = pdb.la
+ pdb_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ pdb_la_LDFLAGS = \
+ 	$(PDB_LIBS) \
+
+--- a/plugins/pdf/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/pdf/Makefile.in	2014-09-06 15:10:04.444435874 +0200
+@@ -425,7 +425,8 @@
+ @PDF_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @PDF_BUILTIN_FALSE@plugin_LTLIBRARIES = pdf.la
+ pdf_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ pdf_la_LDFLAGS = \
+ 	$(PDF_LIBS) \
+
+--- a/plugins/presentation/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/presentation/Makefile.in	2014-09-06 15:10:13.112436158 +0200
+@@ -427,7 +427,8 @@
+ @PRESENTATION_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @PRESENTATION_BUILTIN_FALSE@plugin_LTLIBRARIES = presentation.la
+ presentation_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ presentation_la_LDFLAGS = \
+ 	$(PRESENTATION_LIBS) \
+
+--- a/plugins/psion/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/psion/Makefile.in	2014-09-06 15:10:22.176436455 +0200
+@@ -421,7 +421,8 @@
+ plugindir = $(ABIWORD_PLUGINSDIR)
+ plugin_LTLIBRARIES = psion.la
+ psion_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ psion_la_LDFLAGS = \
+ 	$(PSION_LIBS) \
+
+--- a/plugins/rsvg/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/rsvg/Makefile.in	2014-09-06 15:10:37.632436961 +0200
+@@ -425,7 +425,8 @@
+ plugin_LTLIBRARIES = rsvg.la
+ rsvg_la_LIBADD = \
+ 	xp/libxp.la \
+-	$(RSVG_LIBS) $(PNG_LIBS)
++	$(RSVG_LIBS) $(PNG_LIBS) \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ rsvg_la_LDFLAGS = \
+ 	-avoid-version \
+
+--- a/plugins/s5/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/s5/Makefile.in	2014-09-06 15:10:46.652437256 +0200
+@@ -425,7 +425,8 @@
+ @S5_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @S5_BUILTIN_FALSE@plugin_LTLIBRARIES = s5.la
+ s5_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ s5_la_LDFLAGS = \
+ 	$(S5_LIBS) \
+
+--- a/plugins/sdw/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/sdw/Makefile.in	2014-09-06 15:10:58.072437630 +0200
+@@ -425,7 +425,8 @@
+ @SDW_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @SDW_BUILTIN_FALSE@plugin_LTLIBRARIES = sdw.la
+ sdw_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ sdw_la_LDFLAGS = \
+ 	$(SDW_LIBS) \
+
+--- a/plugins/t602/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/t602/Makefile.in	2014-09-06 15:11:06.224437897 +0200
+@@ -425,7 +425,8 @@
+ @T602_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @T602_BUILTIN_FALSE@plugin_LTLIBRARIES = t602.la
+ t602_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ t602_la_LDFLAGS = \
+ 	$(T602_LIBS) \
+
+--- a/plugins/urldict/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/urldict/Makefile.in	2014-09-06 15:11:14.404438165 +0200
+@@ -425,7 +425,8 @@
+ @URLDICT_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @URLDICT_BUILTIN_FALSE@plugin_LTLIBRARIES = urldict.la
+ urldict_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ urldict_la_LDFLAGS = \
+ 	$(URLDICT_LIBS) \
+
+--- a/plugins/wikipedia/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/wikipedia/Makefile.in	2014-09-06 15:11:22.064438415 +0200
+@@ -425,7 +425,8 @@
+ @WIKIPEDIA_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @WIKIPEDIA_BUILTIN_FALSE@plugin_LTLIBRARIES = wikipedia.la
+ wikipedia_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ wikipedia_la_LDFLAGS = \
+ 	$(WIKIPEDIA_LIBS) \
+
+--- a/plugins/wmf/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/wmf/Makefile.in	2014-09-06 15:11:31.348438719 +0200
+@@ -422,7 +422,8 @@
+ plugindir = $(ABIWORD_PLUGINSDIR)
+ plugin_LTLIBRARIES = wmf.la
+ wmf_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ wmf_la_LDFLAGS = \
+ 	$(WMF_LIBS) \
+
+--- a/plugins/wml/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/wml/Makefile.in	2014-09-06 15:11:40.168439008 +0200
+@@ -425,7 +425,8 @@
+ @WML_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @WML_BUILTIN_FALSE@plugin_LTLIBRARIES = wml.la
+ wml_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ wml_la_LDFLAGS = \
+ 	$(WML_LIBS) \
+
+--- a/plugins/wordperfect/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/wordperfect/Makefile.in	2014-09-06 15:11:50.336439341 +0200
+@@ -423,7 +423,8 @@
+ plugindir = $(ABIWORD_PLUGINSDIR)
+ plugin_LTLIBRARIES = wordperfect.la
+ wordperfect_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ wordperfect_la_LDFLAGS = \
+ 	$(WORDPERFECT_LIBS) \
+
+--- a/plugins/wpg/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/wpg/Makefile.in	2014-09-06 15:12:11.328440028 +0200
+@@ -422,7 +422,8 @@
+ plugindir = $(ABIWORD_PLUGINSDIR)
+ plugin_LTLIBRARIES = wpg.la
+ wpg_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ wpg_la_LDFLAGS = \
+ 	$(WPG_LIBS) \
+
+--- a/plugins/xslfo/Makefile.in	2014-09-06 11:25:35.000000000 +0200
++++ b/plugins/xslfo/Makefile.in	2014-09-06 15:12:44.984441130 +0200
+@@ -425,7 +425,8 @@
+ @XSLFO_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
+ @XSLFO_BUILTIN_FALSE@plugin_LTLIBRARIES = xslfo.la
+ xslfo_la_LIBADD = \
+-	xp/libxp.la
++	xp/libxp.la \
++	@top_builddir@/src/libabiword-2.8.la
+ 
+ xslfo_la_LDFLAGS = \
+ 	$(XSLFO_LIBS) \
diff --git a/gnu/packages/patches/abiword-no-include-glib-internal-headers.patch b/gnu/packages/patches/abiword-no-include-glib-internal-headers.patch
new file mode 100644
index 0000000000..60a74920fb
--- /dev/null
+++ b/gnu/packages/patches/abiword-no-include-glib-internal-headers.patch
@@ -0,0 +1,13 @@
+Include glib.h instead of an internal header.
+
+--- a/goffice-bits/goffice/app/goffice-app.h	2007-01-17 00:17:27.000000000 +0100
++++ b/goffice-bits/goffice/app/goffice-app.h	2014-09-05 19:02:59.402064713 +0200
+@@ -22,7 +22,7 @@
+ #ifndef GOFFICE_APP_H
+ #define GOFFICE_APP_H
+ 
+-#include <glib/gmacros.h>
++#include <glib.h>
+ 
+ G_BEGIN_DECLS
+ 
diff --git a/gnu/packages/patches/abiword-pass-no-undefined-to-linker.patch b/gnu/packages/patches/abiword-pass-no-undefined-to-linker.patch
new file mode 100644
index 0000000000..a17d465edb
--- /dev/null
+++ b/gnu/packages/patches/abiword-pass-no-undefined-to-linker.patch
@@ -0,0 +1,608 @@
+gcc/g++ chokes on --no-undefined, so instead pass it directly to the linker.
+
+--- a/plugins/loadbindings/Makefile.in	2010-06-13 23:17:48.000000000 +0200
++++ b/plugins/loadbindings/Makefile.in	2014-09-06 11:03:21.151951221 +0200
+@@ -433,7 +433,7 @@
+ 	$(LOADBINDINGS_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ loadbindings_la_SOURCES = 
+ nodist_EXTRA_loadbindings_la_SOURCES = dummy.cpp
+
+--- a/plugins/pdf/Makefile.in	2010-06-13 23:17:53.000000000 +0200
++++ b/plugins/pdf/Makefile.in	2014-09-06 11:03:21.207951223 +0200
+@@ -431,7 +431,7 @@
+ 	$(PDF_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ pdf_la_SOURCES = 
+ nodist_EXTRA_pdf_la_SOURCES = dummy.cpp
+
+--- a/plugins/xslfo/Makefile.in	2010-06-13 23:17:55.000000000 +0200
++++ b/plugins/xslfo/Makefile.in	2014-09-06 11:03:21.227951224 +0200
+@@ -431,7 +431,7 @@
+ 	$(XSLFO_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ xslfo_la_SOURCES = 
+ nodist_EXTRA_xslfo_la_SOURCES = dummy.cpp
+
+--- a/plugins/gda/Makefile.in	2010-06-13 23:17:45.000000000 +0200
++++ b/plugins/gda/Makefile.in	2014-09-06 11:03:21.251951225 +0200
+@@ -425,7 +425,7 @@
+ 	$(GDA_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ gda_la_SOURCES = 
+ EXTRA_DIST = \
+
+--- a/plugins/wikipedia/Makefile.in	2010-06-13 23:17:54.000000000 +0200
++++ b/plugins/wikipedia/Makefile.in	2014-09-06 11:03:21.271951225 +0200
+@@ -431,7 +431,7 @@
+ 	$(WIKIPEDIA_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ wikipedia_la_SOURCES = 
+ nodist_EXTRA_wikipedia_la_SOURCES = dummy.cpp
+
+--- a/plugins/collab/Makefile.in	2010-06-13 23:17:41.000000000 +0200
++++ b/plugins/collab/Makefile.in	2014-09-06 11:03:21.291951226 +0200
+@@ -435,7 +435,7 @@
+ @TOOLKIT_COCOA_FALSE@	$(SYSTEM_LIBS) \
+ @TOOLKIT_COCOA_FALSE@	-avoid-version \
+ @TOOLKIT_COCOA_FALSE@	-module \
+-@TOOLKIT_COCOA_FALSE@	-no-undefined
++@TOOLKIT_COCOA_FALSE@	-Wl,--no-undefined
+ 
+ @TOOLKIT_COCOA_FALSE@collab_la_SOURCES = 
+ @TOOLKIT_COCOA_FALSE@nodist_EXTRA_collab_la_SOURCES = dummy.cpp
+
+--- a/plugins/paint/Makefile.in	2010-06-13 23:17:52.000000000 +0200
++++ b/plugins/paint/Makefile.in	2014-09-06 11:03:21.315951227 +0200
+@@ -432,7 +432,7 @@
+ 	$(PAINT_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ paint_la_SOURCES = 
+ nodist_EXTRA_paint_la_SOURCES = dummy.cpp
+
+--- a/plugins/garble/Makefile.in	2010-06-13 23:17:45.000000000 +0200
++++ b/plugins/garble/Makefile.in	2014-09-06 11:03:21.335951227 +0200
+@@ -433,7 +433,7 @@
+ @TOOLKIT_COCOA_FALSE@	$(GARBLE_LIBS) \
+ @TOOLKIT_COCOA_FALSE@	-avoid-version \
+ @TOOLKIT_COCOA_FALSE@	-module \
+-@TOOLKIT_COCOA_FALSE@	-no-undefined
++@TOOLKIT_COCOA_FALSE@	-Wl,--no-undefined
+ 
+ @TOOLKIT_COCOA_FALSE@garble_la_SOURCES = 
+ @TOOLKIT_COCOA_FALSE@nodist_EXTRA_garble_la_SOURCES = dummy.cpp
+
+--- a/plugins/latex/Makefile.in	2010-06-13 23:17:48.000000000 +0200
++++ b/plugins/latex/Makefile.in	2014-09-06 11:03:21.359951228 +0200
+@@ -432,7 +432,7 @@
+ 	$(LATEX_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ latex_la_SOURCES = 
+ nodist_EXTRA_latex_la_SOURCES = dummy.cpp
+
+--- a/plugins/mht/Makefile.in	2010-06-13 23:17:49.000000000 +0200
++++ b/plugins/mht/Makefile.in	2014-09-06 11:03:21.379951229 +0200
+@@ -428,7 +428,7 @@
+ 	$(MHT_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ mht_la_SOURCES = 
+ nodist_EXTRA_mht_la_SOURCES = dummy.cpp
+
+--- a/plugins/google/Makefile.in	2010-06-13 23:17:46.000000000 +0200
++++ b/plugins/google/Makefile.in	2014-09-06 11:03:21.399951230 +0200
+@@ -431,7 +431,7 @@
+ 	$(GOOGLE_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ google_la_SOURCES = 
+ nodist_EXTRA_google_la_SOURCES = dummy.cpp
+
+--- a/plugins/babelfish/Makefile.in	2010-06-13 23:17:40.000000000 +0200
++++ b/plugins/babelfish/Makefile.in	2014-09-06 11:03:21.419951230 +0200
+@@ -431,7 +431,7 @@
+ 	$(BABELFISH_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ babelfish_la_SOURCES = 
+ nodist_EXTRA_babelfish_la_SOURCES = dummy.cpp
+
+--- a/plugins/opendocument/Makefile.in	2010-06-13 23:17:50.000000000 +0200
++++ b/plugins/opendocument/Makefile.in	2014-09-06 11:03:21.443951231 +0200
+@@ -436,7 +436,7 @@
+ 	$(OPENDOCUMENT_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ opendocument_la_SOURCES = 
+ 
+--- a/plugins/opml/Makefile.in	2010-06-13 23:17:51.000000000 +0200
++++ b/plugins/opml/Makefile.in	2014-09-06 11:03:21.463951232 +0200
+@@ -431,7 +431,7 @@
+ 	$(OPML_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ opml_la_SOURCES = 
+ nodist_EXTRA_opml_la_SOURCES = dummy.cpp
+
+--- a/plugins/gimp/Makefile.in	2010-06-13 23:17:46.000000000 +0200
++++ b/plugins/gimp/Makefile.in	2014-09-06 11:03:21.483951232 +0200
+@@ -431,7 +431,7 @@
+ 	$(GIMP_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ gimp_la_SOURCES = 
+ nodist_EXTRA_gimp_la_SOURCES = dummy.cpp
+
+--- a/plugins/mswrite/Makefile.in	2010-06-13 23:17:49.000000000 +0200
++++ b/plugins/mswrite/Makefile.in	2014-09-06 11:03:21.507951233 +0200
+@@ -431,7 +431,7 @@
+ 	$(MSWRITE_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ mswrite_la_SOURCES = 
+ nodist_EXTRA_mswrite_la_SOURCES = dummy.cpp
+
+--- a/plugins/wordperfect/Makefile.in	2010-06-13 23:17:55.000000000 +0200
++++ b/plugins/wordperfect/Makefile.in	2014-09-06 11:03:21.527951234 +0200
+@@ -429,7 +429,7 @@
+ 	$(WORDPERFECT_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ wordperfect_la_SOURCES = 
+ nodist_EXTRA_wordperfect_la_SOURCES = dummy.cpp
+
+--- a/plugins/pdb/Makefile.in	2010-06-13 23:17:53.000000000 +0200
++++ b/plugins/pdb/Makefile.in	2014-09-06 11:03:21.547951234 +0200
+@@ -431,7 +431,7 @@
+ 	$(PDB_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ pdb_la_SOURCES = 
+ nodist_EXTRA_pdb_la_SOURCES = dummy.cpp
+
+--- a/plugins/ots/Makefile.in	2010-06-13 23:17:52.000000000 +0200
++++ b/plugins/ots/Makefile.in	2014-09-06 11:03:21.571951235 +0200
+@@ -425,7 +425,7 @@
+ 	$(OTS_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ ots_la_SOURCES = 
+ EXTRA_DIST = \
+
+--- a/plugins/wml/Makefile.in	2010-06-13 23:17:55.000000000 +0200
++++ b/plugins/wml/Makefile.in	2014-09-06 11:03:21.591951236 +0200
+@@ -431,7 +431,7 @@
+ 	$(WML_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ wml_la_SOURCES = 
+ nodist_EXTRA_wml_la_SOURCES = dummy.cpp
+
+--- a/plugins/bmp/Makefile.in	2010-06-13 23:17:40.000000000 +0200
++++ b/plugins/bmp/Makefile.in	2014-09-06 11:03:21.615951237 +0200
+@@ -431,7 +431,7 @@
+ 	$(BMP_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ bmp_la_SOURCES = 
+ nodist_EXTRA_bmp_la_SOURCES = dummy.cpp
+
+--- a/plugins/applix/Makefile.in	2010-06-13 23:17:40.000000000 +0200
++++ b/plugins/applix/Makefile.in	2014-09-06 11:03:21.635951237 +0200
+@@ -431,7 +431,7 @@
+ 	$(APPLIX_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ applix_la_SOURCES = 
+ 
+--- a/plugins/iscii/Makefile.in	2010-06-13 23:17:47.000000000 +0200
++++ b/plugins/iscii/Makefile.in	2014-09-06 11:03:21.659951238 +0200
+@@ -431,7 +431,7 @@
+ 	$(ISCII_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ iscii_la_SOURCES = 
+ nodist_EXTRA_iscii_la_SOURCES = dummy.cpp
+
+--- a/plugins/gdict/Makefile.in	2010-06-13 23:17:46.000000000 +0200
++++ b/plugins/gdict/Makefile.in	2014-09-06 11:03:21.679951239 +0200
+@@ -429,7 +429,7 @@
+ @TOOLKIT_GTK_TRUE@	$(GDICT_LIBS) \
+ @TOOLKIT_GTK_TRUE@	-avoid-version \
+ @TOOLKIT_GTK_TRUE@	-module \
+-@TOOLKIT_GTK_TRUE@	-no-undefined
++@TOOLKIT_GTK_TRUE@	-Wl,--no-undefined
+ 
+ @TOOLKIT_GTK_TRUE@gdict_la_SOURCES = 
+ @TOOLKIT_GTK_TRUE@EXTRA_DIST = \
+
+--- a/plugins/openwriter/Makefile.in	2010-06-13 23:17:50.000000000 +0200
++++ b/plugins/openwriter/Makefile.in	2014-09-06 11:03:21.699951239 +0200
+@@ -432,7 +432,7 @@
+ 	$(OPENWRITER_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ openwriter_la_SOURCES = 
+ nodist_EXTRA_openwriter_la_SOURCES = dummy.cpp
+
+--- a/plugins/sdw/Makefile.in	2010-06-13 23:17:54.000000000 +0200
++++ b/plugins/sdw/Makefile.in	2014-09-06 11:03:21.723951240 +0200
+@@ -431,7 +431,7 @@
+ 	$(SDW_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ sdw_la_SOURCES = 
+ nodist_EXTRA_sdw_la_SOURCES = dummy.cpp
+
+--- a/plugins/grammar/Makefile.in	2010-06-13 23:17:47.000000000 +0200
++++ b/plugins/grammar/Makefile.in	2014-09-06 11:03:21.747951241 +0200
+@@ -430,7 +430,7 @@
+ 	$(GRAMMAR_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ nodist_EXTRA_grammar_la_SOURCES = dummy.cpp
+ grammar_la_SOURCES = 
+
+--- a/plugins/urldict/Makefile.in	2010-06-13 23:17:54.000000000 +0200
++++ b/plugins/urldict/Makefile.in	2014-09-06 11:03:21.779951242 +0200
+@@ -431,7 +431,7 @@
+ 	$(URLDICT_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ urldict_la_SOURCES = 
+ nodist_EXTRA_urldict_la_SOURCES = dummy.cpp
+
+--- a/plugins/wmf/Makefile.in	2010-06-13 23:17:55.000000000 +0200
++++ b/plugins/wmf/Makefile.in	2014-09-06 11:03:21.799951243 +0200
+@@ -428,7 +428,7 @@
+ 	$(WMF_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ wmf_la_SOURCES = 
+ nodist_EXTRA_wmf_la_SOURCES = dummy.cpp
+
+--- a/plugins/mif/Makefile.in	2010-06-13 23:17:49.000000000 +0200
++++ b/plugins/mif/Makefile.in	2014-09-06 11:03:21.819951243 +0200
+@@ -431,7 +431,7 @@
+ 	$(MIF_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ mif_la_SOURCES = 
+ nodist_EXTRA_mif_la_SOURCES = dummy.cpp
+
+--- a/plugins/eml/Makefile.in	2010-06-13 23:17:45.000000000 +0200
++++ b/plugins/eml/Makefile.in	2014-09-06 11:03:21.843951244 +0200
+@@ -431,7 +431,7 @@
+ 	$(EML_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ eml_la_SOURCES = 
+ nodist_EXTRA_eml_la_SOURCES = dummy.cpp
+
+--- a/plugins/openxml/Makefile.in	2010-06-13 23:17:51.000000000 +0200
++++ b/plugins/openxml/Makefile.in	2014-09-06 11:03:21.863951245 +0200
+@@ -434,7 +434,7 @@
+ 	$(OPENXML_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ openxml_la_SOURCES = 
+ nodist_EXTRA_openxml_la_SOURCES = dummy.cpp
+
+--- a/plugins/goffice/Makefile.in	2010-06-13 23:17:46.000000000 +0200
++++ b/plugins/goffice/Makefile.in	2014-09-06 11:03:21.883951245 +0200
+@@ -425,7 +425,7 @@
+ 	$(GOFFICE_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ goffice_la_SOURCES = 
+ EXTRA_DIST = \
+
+--- a/plugins/passepartout/Makefile.in	2010-06-13 23:17:52.000000000 +0200
++++ b/plugins/passepartout/Makefile.in	2014-09-06 11:03:21.907951246 +0200
+@@ -433,7 +433,7 @@
+ 	$(PASSEPARTOUT_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ passepartout_la_SOURCES = 
+ nodist_EXTRA_passepartout_la_SOURCES = dummy.cpp
+
+--- a/plugins/clarisworks/Makefile.in	2010-06-13 23:17:41.000000000 +0200
++++ b/plugins/clarisworks/Makefile.in	2014-09-06 11:03:21.927951247 +0200
+@@ -433,7 +433,7 @@
+ 	$(CLARISWORKS_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ clarisworks_la_SOURCES = 
+ nodist_EXTRA_clarisworks_la_SOURCES = dummy.cpp
+
+--- a/plugins/command/Makefile.in	2010-06-13 23:17:44.000000000 +0200
++++ b/plugins/command/Makefile.in	2014-09-06 11:03:21.947951247 +0200
+@@ -426,7 +426,7 @@
+ @TOOLKIT_COCOA_FALSE@	$(COMMAND_LIBS) \
+ @TOOLKIT_COCOA_FALSE@	-avoid-version \
+ @TOOLKIT_COCOA_FALSE@	-module \
+-@TOOLKIT_COCOA_FALSE@	-no-undefined
++@TOOLKIT_COCOA_FALSE@	-Wl,--no-undefined
+ 
+ @TOOLKIT_COCOA_FALSE@command_la_SOURCES = 
+ all: all-recursive
+
+--- a/plugins/presentation/Makefile.in	2010-06-13 23:17:53.000000000 +0200
++++ b/plugins/presentation/Makefile.in	2014-09-06 11:03:21.971951248 +0200
+@@ -433,7 +433,7 @@
+ 	$(PRESENTATION_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ presentation_la_SOURCES = 
+ nodist_EXTRA_presentation_la_SOURCES = dummy.cpp
+
+--- a/plugins/psion/Makefile.in	2010-06-13 23:17:53.000000000 +0200
++++ b/plugins/psion/Makefile.in	2014-09-06 11:03:21.991951249 +0200
+@@ -427,7 +427,7 @@
+ 	$(PSION_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ psion_la_SOURCES = 
+ EXTRA_DIST = \
+
+--- a/plugins/rsvg/Makefile.in	2010-06-13 23:17:53.000000000 +0200
++++ b/plugins/rsvg/Makefile.in	2014-09-06 11:03:22.011951250 +0200
+@@ -430,7 +430,7 @@
+ rsvg_la_LDFLAGS = \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ rsvg_la_SOURCES = 
+ nodist_EXTRA_rsvg_la_SOURCES = dummy.cpp
+
+--- a/plugins/wpg/Makefile.in	2010-06-13 23:17:55.000000000 +0200
++++ b/plugins/wpg/Makefile.in	2014-09-06 11:03:22.035951250 +0200
+@@ -428,7 +428,7 @@
+ 	$(WPG_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ wpg_la_SOURCES = 
+ nodist_EXTRA_wpg_la_SOURCES = dummy.cpp
+
+--- a/plugins/t602/Makefile.in	2010-06-13 23:17:54.000000000 +0200
++++ b/plugins/t602/Makefile.in	2014-09-06 11:03:22.055951251 +0200
+@@ -431,7 +431,7 @@
+ 	$(T602_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ t602_la_SOURCES = 
+ nodist_EXTRA_t602_la_SOURCES = dummy.cpp
+
+--- a/plugins/docbook/Makefile.in	2010-06-13 23:17:44.000000000 +0200
++++ b/plugins/docbook/Makefile.in	2014-09-06 11:03:22.075951252 +0200
+@@ -431,7 +431,7 @@
+ 	$(DOCBOOK_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ docbook_la_SOURCES = 
+ nodist_EXTRA_docbook_la_SOURCES = dummy.cpp
+
+--- a/plugins/hrtext/Makefile.in	2010-06-13 23:17:47.000000000 +0200
++++ b/plugins/hrtext/Makefile.in	2014-09-06 11:03:22.099951252 +0200
+@@ -431,7 +431,7 @@
+ 	$(HRTEXT_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ hrtext_la_SOURCES = 
+ nodist_EXTRA_hrtext_la_SOURCES = dummy.cpp 
+
+--- a/plugins/s5/Makefile.in	2010-06-13 23:17:54.000000000 +0200
++++ b/plugins/s5/Makefile.in	2014-09-06 11:03:22.119951253 +0200
+@@ -431,7 +431,7 @@
+ 	$(S5_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ s5_la_SOURCES = 
+ nodist_EXTRA_s5_la_SOURCES = dummy.cpp
+
+--- a/plugins/hancom/Makefile.in	2010-06-13 23:17:47.000000000 +0200
++++ b/plugins/hancom/Makefile.in	2014-09-06 11:03:22.143951254 +0200
+@@ -431,7 +431,7 @@
+ 	$(HANCOM_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ hancom_la_SOURCES = 
+ nodist_EXTRA_hancom_la_SOURCES = dummy.cpp
+
+--- a/plugins/aiksaurus/Makefile.in	2010-06-13 23:17:40.000000000 +0200
++++ b/plugins/aiksaurus/Makefile.in	2014-09-06 11:03:22.163951255 +0200
+@@ -428,7 +428,7 @@
+ 	$(AIKSAURUS_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ aiksaurus_la_SOURCES = 
+ all: all-recursive
+
+--- a/plugins/kword/Makefile.in	2010-06-13 23:17:48.000000000 +0200
++++ b/plugins/kword/Makefile.in	2014-09-06 11:03:22.183951255 +0200
+@@ -431,7 +431,7 @@
+ 	$(KWORD_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ kword_la_SOURCES = 
+ nodist_EXTRA_kword_la_SOURCES = dummy.cpp
+
+--- a/plugins/freetranslation/Makefile.in	2010-06-13 23:17:45.000000000 +0200
++++ b/plugins/freetranslation/Makefile.in	2014-09-06 11:03:22.207951256 +0200
+@@ -433,7 +433,7 @@
+ 	$(FREETRANSLATION_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ freetranslation_la_SOURCES = 
+ nodist_EXTRA_freetranslation_la_SOURCES = dummy.cpp
+
+--- a/plugins/mathview/Makefile.in	2010-06-13 23:17:48.000000000 +0200
++++ b/plugins/mathview/Makefile.in	2014-09-06 11:03:22.227951257 +0200
+@@ -429,7 +429,7 @@
+ 	$(MATHVIEW_LIBS) \
+ 	-avoid-version \
+ 	-module \
+-	-no-undefined
++	-Wl,--no-undefined
+ 
+ nodist_EXTRA_mathview_la_SOURCES = dummy.cpp
+ mathview_la_SOURCES = 
+
+--- a/src/Makefile.in	2014-09-06 08:42:45.000000000 +0200
++++ b/src/Makefile.in	2014-09-06 11:17:48.287979611 +0200
+@@ -538,7 +538,7 @@
+ 
+ @TOOLKIT_COCOA_TRUE@AbiWord_LDFLAGS = \
+ @TOOLKIT_COCOA_TRUE@	$(DEPS_LIBS) \
+-@TOOLKIT_COCOA_TRUE@	--no-undefined \
++@TOOLKIT_COCOA_TRUE@	-Wl,--no-undefined \
+ @TOOLKIT_COCOA_TRUE@	-avoid-version \
+ @TOOLKIT_COCOA_TRUE@	-export-dynamic \
+ @TOOLKIT_COCOA_TRUE@	-headerpad_max_install_names 
+@@ -554,7 +554,7 @@
+ 
+ @TOOLKIT_COCOA_FALSE@abiword_LDFLAGS = \
+ @TOOLKIT_COCOA_FALSE@	$(platform_ldflags) \
+-@TOOLKIT_COCOA_FALSE@	--no-undefined      \
++@TOOLKIT_COCOA_FALSE@	-Wl,--no-undefined      \
+ @TOOLKIT_COCOA_FALSE@	-avoid-version      \
+ @TOOLKIT_COCOA_FALSE@	-export-dynamic
+ 
diff --git a/gnu/packages/patches/abiword-use-proper-png-api.patch b/gnu/packages/patches/abiword-use-proper-png-api.patch
new file mode 100644
index 0000000000..e8ce02899d
--- /dev/null
+++ b/gnu/packages/patches/abiword-use-proper-png-api.patch
@@ -0,0 +1,175 @@
+Do not directly access the fields of png_struct and png_info.
+
+--- a/plugins/mswrite/xp/ie_imp_MSWrite.cpp	2010-05-30 21:20:53.000000000 +0200
++++ b/plugins/mswrite/xp/ie_imp_MSWrite.cpp	2014-09-07 06:58:04.162298089 +0200
+@@ -891,7 +891,7 @@
+ 		info_ptr = png_create_info_struct (png_ptr);
+ 		if (!info_ptr) goto err;
+ 		
+-		if (setjmp (png_ptr->jmpbuf) ) {
++		if (setjmp (png_jmpbuf(png_ptr)) ) {
+ 			png_destroy_write_struct (&png_ptr, &info_ptr);
+ 			goto err;
+ 		}
+
+--- a/src/af/gr/win/gr_Win32Image.cpp	2009-07-08 19:33:53.000000000 +0200
++++ b/src/af/gr/win/gr_Win32Image.cpp	2014-09-07 06:58:04.198298090 +0200
+@@ -148,7 +148,7 @@
+ 	info_ptr = png_create_info_struct(png_ptr);
+ 
+ 	// libpng will longjmp back to here if a fatal error occurs
+-	if (setjmp(png_ptr->jmpbuf))
++	if (setjmp(png_jmpbuf(png_ptr)))
+ 	{
+ 		/* If we get here, we had a problem reading the file */
+ 		png_destroy_write_struct(&png_ptr,  (png_infopp)NULL);
+@@ -547,7 +547,7 @@
+ 	 * the normal method of doing things with libpng).  REQUIRED unless you
+ 	 * set up your own error handlers in the png_create_read_struct() earlier.
+ 	 */
+-	if (setjmp(png_ptr->jmpbuf))
++	if (setjmp(png_jmpbuf(png_ptr)))
+ 	{
+ 		/* Free all of the memory associated with the png_ptr and info_ptr */
+ 		png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
+
+--- a/src/af/util/xp/ut_png.cpp	2008-02-24 04:33:07.000000000 +0100
++++ b/src/af/util/xp/ut_png.cpp	2014-09-07 06:58:04.230298091 +0200
+@@ -71,7 +71,7 @@
+ 	 * the normal method of doing things with libpng).  REQUIRED unless you
+ 	 * set up your own error handlers in the png_create_read_struct() earlier.
+ 	 */
+-	if (setjmp(png_ptr->jmpbuf))
++	if (setjmp(png_jmpbuf(png_ptr)))
+ 	{
+ 		/* Free all of the memory associated with the png_ptr and info_ptr */
+ 		png_destroy_read_struct(&png_ptr, &info_ptr, static_cast<png_infopp>(NULL));
+
+--- a/plugins/bmp/xp/ie_impGraphic_BMP.cpp	2009-06-25 06:02:06.000000000 +0200
++++ b/plugins/bmp/xp/ie_impGraphic_BMP.cpp	2014-09-07 06:59:08.814300205 +0200
+@@ -313,7 +313,7 @@
+ 	 * the normal method of doing things with libpng).  REQUIRED unless you
+ 	 * set up your own error handlers in the png_create_read_struct() earlier.
+ 	 */
+-	if (setjmp(m_pPNG->jmpbuf))
++	if (setjmp(png_jmpbuf(m_pPNG)))
+ 	{
+ 		/* Free all of the memory associated with the png_ptr and info_ptr */
+ 		png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
+@@ -332,7 +332,7 @@
+ 	UT_Error IE_ImpGraphic_BMP::Convert_BMP_Pallet(UT_ByteBuf* pBB)
+ 	{
+ 		/* Reset error handling for libpng */
+-		if (setjmp(m_pPNG->jmpbuf))
++		if (setjmp(png_jmpbuf(m_pPNG)))
+ 		{
+ 			png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
+ 			return UT_ERROR;
+@@ -372,7 +372,7 @@
+ UT_Error IE_ImpGraphic_BMP::Convert_BMP(UT_ByteBuf* pBB)
+ {
+ 	/* Reset error handling for libpng */
+-	if (setjmp(m_pPNG->jmpbuf))
++	if (setjmp(png_jmpbuf(m_pPNG)))
+ 	{
+ 		png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
+ 		return UT_ERROR;
+
+--- a/plugins/rsvg/xp/AbiRSVG.cpp	2009-06-25 06:02:06.000000000 +0200
++++ b/plugins/rsvg/xp/AbiRSVG.cpp	2014-09-07 06:59:08.914300209 +0200
+@@ -145,7 +145,7 @@
+ 				return error;
+ 			}
+ 		
+-		if (setjmp(m_pPNG->jmpbuf))
++		if (setjmp(png_jmpbuf(m_pPNG)))
+ 			{
+ 				g_object_unref(G_OBJECT(pixbuf));
+ 				png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
+@@ -234,7 +234,7 @@
+ 		 * the normal method of doing things with libpng).  REQUIRED unless you
+ 		 * set up your own error handlers in the png_create_read_struct() earlier.
+ 		 */
+-		if (setjmp(m_pPNG->jmpbuf))
++		if (setjmp(png_jmpbuf(m_pPNG)))
+ 			{
+ 				/* Free all of the memory associated with the png_ptr and info_ptr */
+ 				png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
+
+--- a/src/wp/impexp/win/ie_impGraphic_Win32Native.cpp	2009-07-07 18:50:18.000000000 +0200
++++ b/src/wp/impexp/win/ie_impGraphic_Win32Native.cpp	2014-09-07 06:59:09.018300212 +0200
+@@ -501,7 +501,7 @@
+      * the normal method of doing things with libpng).  REQUIRED unless you
+      * set up your own error handlers in the png_create_read_struct() earlier.
+      */
+-    if (setjmp(m_pPNG->jmpbuf))
++    if (setjmp(png_jmpbuf(m_pPNG)))
+ 	{
+ 		/* Free all of the memory associated with the png_ptr and info_ptr */
+ 		png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
+@@ -520,7 +520,7 @@
+ UT_Error IE_ImpGraphic_Win32Native::Convert_BMP_Palette(UT_ByteBuf* pBB)
+ {
+     /* Reset error handling for libpng */
+-    if (setjmp(m_pPNG->jmpbuf))
++    if (setjmp(png_jmpbuf(m_pPNG)))
+ 	{
+ 		png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
+ 		return UT_ERROR;
+@@ -560,7 +560,7 @@
+ UT_Error IE_ImpGraphic_Win32Native::Convert_BMP(UT_ByteBuf* pBB)
+ {
+     /* Reset error handling for libpng */
+-    if (setjmp(m_pPNG->jmpbuf))
++    if (setjmp(png_jmpbuf(m_pPNG)))
+ 	{
+ 		png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
+ 		return UT_ERROR;
+
+--- a/src/wp/impexp/gtk/ie_impGraphic_GdkPixbuf.cpp	2009-07-01 06:02:04.000000000 +0200
++++ b/src/wp/impexp/gtk/ie_impGraphic_GdkPixbuf.cpp	2014-09-07 06:59:09.138300216 +0200
+@@ -185,7 +185,7 @@
+ /** needed for the stejmp context */
+ UT_Error IE_ImpGraphic_GdkPixbuf::_png_write(GdkPixbuf * pixbuf)
+ {
+-	if (setjmp(m_pPNG->jmpbuf))
++	if (setjmp(png_jmpbuf(m_pPNG)))
+ 	{
+ 		DELETEP(m_pPngBB);
+ 		png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
+@@ -446,7 +446,7 @@
+ 	 * the normal method of doing things with libpng).  REQUIRED unless you
+ 	 * set up your own error handlers in the png_create_read_struct() earlier.
+ 	 */
+-	if (setjmp(m_pPNG->jmpbuf))
++	if (setjmp(png_jmpbuf(m_pPNG)))
+ 	{
+ 		/* Free all of the memory associated with the png_ptr and info_ptr */
+ 		png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
+
+--- a/plugins/bmp/xp/ie_impGraphic_BMP.cpp	2014-09-07 07:03:02.000000000 +0200
++++ b/plugins/bmp/xp/ie_impGraphic_BMP.cpp	2014-09-07 12:35:33.306961036 +0200
+@@ -191,7 +191,11 @@
+ 
+ 	/* Clean Up Memory Used */
+ 		
+-	FREEP(m_pPNGInfo->palette);
++	
++	png_colorp palette;
++	int ignored_placeholder;
++	png_get_PLTE(m_pPNG, m_pPNGInfo, &palette, &ignored_placeholder);
++	FREEP(palette);
+ 	DELETEP(pBB);
+ 	png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
+    
+--- a/plugins/garble/xp/abiword-garble-png.cpp	2009-09-05 17:34:44.000000000 +0200
++++ b/plugins/garble/xp/abiword-garble-png.cpp	2014-09-08 00:15:04.508335153 +0200
+@@ -79,7 +79,7 @@
+ 		png_set_strip_alpha( png_ptr );
+ 		png_set_interlace_handling( png_ptr );
+ 		png_set_bgr( png_ptr );
+-		rowbytes = info_ptr->rowbytes;
++		rowbytes = png_get_rowbytes( png_ptr, info_ptr );
+ 		png_destroy_read_struct( &png_ptr, &info_ptr, NULL );
+ 	}
+ 
diff --git a/gnu/packages/patches/abiword-wmf-version-lookup-fix.patch b/gnu/packages/patches/abiword-wmf-version-lookup-fix.patch
new file mode 100644
index 0000000000..f27f32f30b
--- /dev/null
+++ b/gnu/packages/patches/abiword-wmf-version-lookup-fix.patch
@@ -0,0 +1,28 @@
+The way the configure script determines the version of libwmf is by temporarily
+making dots separator characters, but since the file name of the program which
+returns the version contains dots in Guix (the version in the store entry name),
+doing it this way will always fail.
+
+This is a simple guix-specific fix for the problem.
+
+--- a/configure	2010-06-13 23:17:37.000000000 +0200
++++ b/configure	2014-09-08 17:31:52.102371800 +0200
+@@ -21140,13 +21140,11 @@
+ $as_echo "$as_me: WARNING: wmf plugin: program libwmf-config not found in path" >&2;}
+ 		fi
+ 	else
+-		IFS_old="$IFS"
+-		IFS='.'
+-		set -- `$libwmfconfig --version`
+-		libwmf_major_found="${1}"
+-		libwmf_minor_found="${2}"
+-		libwmf_micro_found="${3}"
+-		IFS="$IFS_old"
++		libwmf_fullver_found=`$libwmfconfig --version`
++		libwmf_major_found=$(echo $libwmf_fullver_found |  cut -d . -f 1)
++		libwmf_minor_found=$(echo $libwmf_fullver_found |  cut -d . -f 2)
++		libwmf_micro_found=$(echo $libwmf_fullver_found |  cut -d . -f 3)
++
+ 		if test "$libwmf_major_found" -gt "$libwmf_major_req"; then
+ 			wmf_deps="yes"
+ 		elif test "$libwmf_major_found" -eq "$libwmf_major_req" &&
diff --git a/gnu/packages/patches/lua51-liblua-so.patch b/gnu/packages/patches/lua51-liblua-so.patch
new file mode 100644
index 0000000000..6795f10ac7
--- /dev/null
+++ b/gnu/packages/patches/lua51-liblua-so.patch
@@ -0,0 +1,65 @@
+
+Patch the two Makefile to also create liblua.so
+Original patch by Allan McRae <allan@archlinux.org>
+for Archlinux
+
+
+diff -ruN lua-5.1.5/Makefile lua-5.1.5-new/Makefile
+--- lua-5.1.5/Makefile	2012-02-10 10:50:23.000000000 +0100
++++ lua-5.1.5-new/Makefile	2014-09-10 20:17:28.913951433 +0200
+@@ -43,7 +43,7 @@
+ # What to install.
+ TO_BIN= lua luac
+ TO_INC= lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp
+-TO_LIB= liblua.a
++TO_LIB= liblua.a liblua.so liblua.so.${V}
+ TO_MAN= lua.1 luac.1
+ 
+ # Lua version and release.
+@@ -53,7 +53,7 @@
+ all:	$(PLAT)
+ 
+ $(PLATS) clean:
+-	cd src && $(MAKE) $@
++	cd src && $(MAKE) $@ V=$(V) R=$(R)
+ 
+ test:	dummy
+ 	src/lua test/hello.lua
+diff -ruN lua-5.1.5/src/Makefile lua-5.1.5-new/src/Makefile
+--- lua-5.1.5/src/Makefile	2012-02-13 21:41:22.000000000 +0100
++++ lua-5.1.5-new/src/Makefile	2014-09-10 20:16:09.982952152 +0200
+@@ -8,7 +8,7 @@
+ PLAT= none
+ 
+ CC= gcc
+-CFLAGS= -O2 -Wall $(MYCFLAGS)
++CFLAGS= -O2 -Wall $(MYCFLAGS) -fPIC
+ AR= ar rcu
+ RANLIB= ranlib
+ RM= rm -f
+@@ -34,9 +34,10 @@
+ 
+ LUAC_T=	luac
+ LUAC_O=	luac.o print.o
++LUA_SO= liblua.so
+ 
+ ALL_O= $(CORE_O) $(LIB_O) $(LUA_O) $(LUAC_O)
+-ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
++ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO)
+ ALL_A= $(LUA_A)
+ 
+ default: $(PLAT)
+@@ -57,6 +58,13 @@
+ $(LUAC_T): $(LUAC_O) $(LUA_A)
+ 	$(CC) -o $@ $(MYLDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS)
+ 
++$(LUA_SO): $(CORE_O) $(LIB_O)
++	$(CC) -shared -ldl -Wl,-soname,$(LUA_SO).$(V) -o $@.$(R) $? -lm $(MYLDFLAGS)
++	ln -sf $(LUA_SO).$(R) $(LUA_SO).$(V)
++	ln -sf $(LUA_SO).$(R) $(LUA_SO)
++
++
++
+ clean:
+ 	$(RM) $(ALL_T) $(ALL_O)
+ 
diff --git a/gnu/packages/patches/ots-no-include-missing-file.patch b/gnu/packages/patches/ots-no-include-missing-file.patch
new file mode 100644
index 0000000000..c23c7c36a1
--- /dev/null
+++ b/gnu/packages/patches/ots-no-include-missing-file.patch
@@ -0,0 +1,14 @@
+The file $(top_srcdir)/gtk-doc.make doesn't exist, so don't include it.
+
+--- a/doc/Makefile.in	2007-04-08 20:17:25.000000000 +0200
++++ b/doc/Makefile.in	2014-09-06 23:19:41.413397662 +0200
+@@ -240,9 +240,6 @@
+ distclean-generic clean-generic maintainer-clean-generic clean \
+ mostlyclean distclean maintainer-clean
+ 
+-
+-include $(top_srcdir)/gtk-doc.make
+-
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+ .NOEXPORT:
diff --git a/gnu/packages/postgresql.scm b/gnu/packages/postgresql.scm
deleted file mode 100644
index d6b505f6a2..0000000000
--- a/gnu/packages/postgresql.scm
+++ /dev/null
@@ -1,52 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 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 postgresql)
-  #:use-module ((guix licenses) #:select (x11-style))
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system gnu)
-  #:use-module (gnu packages)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages readline))
-
-(define-public postgresql
-  (package
-   (name "postgresql")
-   (version "9.3.5")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "http://ftp.postgresql.org/pub/source/v"
-                                version "/postgresql-" version ".tar.gz"))
-            (sha256
-             (base32
-              "08kga00izykgvnx7hn995wc4zjqslspapaa8z63045p1ya14mr4g"))))
-   (build-system gnu-build-system)
-   (inputs
-    `(("readline" ,readline)
-      ("zlib" ,zlib)))
-   (home-page "http://www.postgresql.org/")
-   (synopsis "Powerful object-relational database system")
-   (description
-    "PostgreSQL is a powerful object-relational database system.  It is fully
-ACID compliant, has full support for foreign keys, joins, views, triggers, and
-stored procedures (in multiple languages).  It includes most SQL:2008 data
-types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, and
-TIMESTAMP.  It also supports storage of binary large objects, including
-pictures, sounds, or video.")
-   (license (x11-style "file://COPYRIGHT"))))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 81b6c956a9..3046c3b1e1 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -36,7 +36,7 @@
   #:use-module (gnu packages openssl)
   #:use-module (gnu packages elf)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages zip)
   #:use-module (gnu packages multiprecision)
   #:use-module (guix packages)
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 4d367d8ab7..ced7e90575 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -30,7 +30,7 @@
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
   #:use-module (gnu packages linux)
-  #:use-module (gnu packages mysql)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages openssl)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm
index 7634e48018..19a68be229 100644
--- a/gnu/packages/rdf.scm
+++ b/gnu/packages/rdf.scm
@@ -23,7 +23,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
-  #:use-module (gnu packages bdb)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
diff --git a/gnu/packages/recutils.scm b/gnu/packages/recutils.scm
deleted file mode 100644
index 7e78ac121d..0000000000
--- a/gnu/packages/recutils.scm
+++ /dev/null
@@ -1,66 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
-;;;
-;;; This file is part of GNU Guix.
-;;;
-;;; GNU Guix is free software; you can redistribute it and/or modify it
-;;; under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 3 of the License, or (at
-;;; your option) any later version.
-;;;
-;;; GNU Guix is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
-
-(define-module (gnu packages recutils)
-  #:use-module (guix licenses)
-  #:use-module (gnu packages)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system gnu)
-  #:use-module (gnu packages emacs)
-  #:use-module (gnu packages check)
-  #:use-module (gnu packages algebra)
-  #:use-module (gnu packages curl)
-  #:use-module (gnu packages gnupg))
-
-(define-public recutils
-  (package
-   (name "recutils")
-   (version "1.7")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "mirror://gnu/recutils/recutils-"
-                                version ".tar.gz"))
-            (sha256
-             (base32
-              "0cdwa4094x3yx7vn98xykvnlp9rngvd58d19vs3vh5hrvggccg93"))))
-   (build-system gnu-build-system)
-
-   ;; Running tests in parallel leads to test failures and crashes in
-   ;; torture/utils.
-   (arguments '(#:parallel-tests? #f))
-
-   (native-inputs `(("emacs" ,emacs)
-                    ("bc" ,bc)))
-
-   ;; TODO: Add more optional inputs.
-   ;; FIXME: Our Bash doesn't have development headers (need for the 'readrec'
-   ;; built-in command), but it's not clear how to get them installed.
-   ;; See <https://lists.gnu.org/archive/html/bug-bash/2014-03/msg00125.html>.
-   (inputs `(("curl" ,curl)
-             ("libgcrypt" ,libgcrypt)
-             ("check" ,check)))
-   (synopsis "Manipulate plain text files as databases")
-   (description
-    "GNU Recutils is a set of tools and libraries for creating and
-manipulating text-based, human-editable databases.  Despite being text-based,
-databases created with Recutils carry all of the expected features such as
-unique fields, primary keys, time stamps and more. Many different field types
-are supported, as is encryption.")
-   (license gpl3+)
-   (home-page "http://www.gnu.org/software/recutils/")))
diff --git a/gnu/packages/sqlite.scm b/gnu/packages/sqlite.scm
deleted file mode 100644
index e19160a864..0000000000
--- a/gnu/packages/sqlite.scm
+++ /dev/null
@@ -1,63 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
-;;; Copyright © 2014 Mark H Weaver <mhw@netris.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 sqlite)
-  #:use-module (guix licenses)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system gnu)
-  #:use-module (gnu packages)
-  #:use-module (srfi srfi-26)
-  #:use-module (ice-9 match))
-
-(define-public sqlite
-  (package
-   (name "sqlite")
-   (version "3.8.4.3")
-   (source (origin
-            (method url-fetch)
-            ;; TODO: Download from sqlite.org once this bug :
-            ;; http://lists.gnu.org/archive/html/bug-guile/2013-01/msg00027.html
-            ;; has been fixed.
-            (uri (let ((numeric-version
-                        (match (string-split version #\.)
-                          ((first-digit other-digits ...)
-                           (string-append first-digit
-                                          (string-pad-right
-                                           (string-concatenate
-                                            (map (cut string-pad <> 2 #\0)
-                                                 other-digits))
-                                           6 #\0))))))
-                   (string-append
-                    "mirror://sourceforge/sqlite.mirror/SQLite%20" version
-                    "/sqlite-autoconf-" numeric-version ".tar.gz")))
-            (sha256
-             (base32
-              "0rcdsk5sz34w8vy0g5yhfms4saiq81i872jxx5m5sjij7bi9bsg0"))
-            (patches
-             (list (search-patch "sqlite-large-page-size-fix.patch")))))
-   (build-system gnu-build-system)
-   (home-page "http://www.sqlite.org/")
-   (synopsis "The SQLite database management system")
-   (description
-    "SQLite is a software library that implements a self-contained, serverless,
-zero-configuration, transactional SQL database engine. SQLite is the most
-widely deployed SQL database engine in the world. The source code for SQLite is
-in the public domain.")
-   (license public-domain)))
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 83ad35fb77..89b26e69df 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -44,7 +44,7 @@
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
-  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages emacs)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 2873c49e3b..2fabf2679d 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -383,7 +383,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2014.06.26")
+    (version "2014.09.06")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://youtube-dl.org/downloads/"
@@ -391,7 +391,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0jl90plg9mz4mwich219a58y4npwi33myx0cx44v8pymkqykv5cd"))))
+                "1a50vqgzp9wjh2763shald6dlmdd5qlqy83vg4yrihdrlh8sk6dd"))))
     (build-system python-build-system)
     (inputs `(("setuptools" ,python-setuptools)))
     (home-page "http://youtube-dl.org")
diff --git a/gnu/packages/weechat.scm b/gnu/packages/weechat.scm
new file mode 100644
index 0000000000..5555601d47
--- /dev/null
+++ b/gnu/packages/weechat.scm
@@ -0,0 +1,101 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Kevin Lemonnier <lemonnierk@ulrar.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/>.
+
+;; TODO: Add ruby
+
+(define-module (gnu packages weechat)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages file)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages lua)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages tcl)
+  #:use-module (gnu packages aspell)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages gnutls)
+  #:use-module (gnu packages guile)
+  #:use-module (gnu packages openssl)
+  #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages autogen)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:select (gpl3)))
+
+(define-public weechat
+  (package
+    (name "weechat")
+    (version "1.0")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "http://weechat.org/files/src/weechat-"
+                                  version ".tar.gz"))
+             (sha256
+              (base32 "1z17wyrl5fp697qp44srpmzk79w37f5hm1r0krffbmga6sbzdj3x"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("autoconf" ,autoconf)
+                     ("pkg-config" ,pkg-config)
+                     ("file" ,file)
+                     ("autogen" ,autogen)
+                     ("automake" ,automake)))
+    (inputs `(("ncurses" ,ncurses)
+              ("diffutils" ,diffutils)
+              ("gettext" ,gnu-gettext)
+              ("libtool" ,libtool "bin")
+              ("libtool" ,libtool "out")
+              ("libgcrypt" ,libgcrypt "out")
+              ("zlib" ,zlib)
+              ("aspell" ,aspell)
+              ("curl" ,curl)
+              ("gnutls" ,gnutls)
+              ("guile" ,guile-2.0)
+              ("openssl" ,openssl)
+              ("cyrus-sasl" ,cyrus-sasl)
+              ("lua" ,lua-5.1)
+              ("python" ,python-2)
+              ("perl" ,perl)
+              ("tcl" ,tcl)))
+    (arguments `(#:configure-flags (list
+                                    (string-append
+                                     "--with-tclconfig="
+                                     (assoc-ref %build-inputs "tcl") "/lib"))
+                 #:phases (alist-cons-after
+                           'autogen 'fix-file
+                           (lambda _
+                             (substitute* "configure"
+                               (("/usr/bin/file") (which "file"))))
+                           (alist-cons-before
+                            'configure 'autogen
+                            (lambda _
+                              (zero? (system* "./autogen.sh")))
+                            %standard-phases))))
+    (synopsis "Extensible chat client")
+    (description "WeeChat (Wee Enhanced Environment for Chat) is an
+Internet Relay Chat client, which is designed to be light and fast.
+The client uses a curses frontend, and there are remote interfaces
+for Web, Qt, Android and Emacs.  In WeeChat everything can be done
+with a keyboard, though it also supports mouse.  It is customizable
+and extensible with plugins and scripts.")
+    (home-page "http://www.weechat.org/")
+    (license gpl3)))
diff --git a/gnu/packages/wv.scm b/gnu/packages/wv.scm
new file mode 100644
index 0000000000..af8412cbc4
--- /dev/null
+++ b/gnu/packages/wv.scm
@@ -0,0 +1,65 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Marek Benc <merkur32@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 wv)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:renamer (symbol-prefix-proc 'license:)))
+
+(define-public wv
+  (package
+    (name "wv")
+    (version "1.2.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/wvware/wv/" version
+                                  "/wv-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1mn2ax6qjy3pvixlnvbkn6ymy6y4l2wxrr4brjaczm121s8hjcb7"))))
+
+    (build-system gnu-build-system)
+    (arguments
+      `(#:configure-flags '("--with-libwmf")))
+    (inputs
+      `(("glib" ,glib)
+        ("libgsf" ,libgsf)
+        ("libjpeg" ,libjpeg)
+        ("libpng" ,libpng)
+        ("libwmf" ,libwmf)
+        ("zlib" ,zlib)))
+    (native-inputs
+      `(("glib" ,glib "bin")
+        ("pkg-config" ,pkg-config)))
+    (synopsis "Microsoft Word conversion library and utilities")
+    (description
+      "wv converts Word 2,6,7,8,9 files to HTML and LaTeX.  The Word 2
+conversion is still incomplete (no formatting), but it will do a passable job
+extracting the text, which is what you probably want anyway.
+
+libwv can be used as a library by third party programs, AbiWord uses it as its
+word importer, and KWord may use it in the future.")
+    (home-page "http://wvware.sourceforge.net/")
+    (license license:gpl2+)))
diff --git a/gnu/packages/zsh.scm b/gnu/packages/zsh.scm
new file mode 100644
index 0000000000..778085c3c2
--- /dev/null
+++ b/gnu/packages/zsh.scm
@@ -0,0 +1,73 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Kevin Lemonnier <lemonnierk@ulrar.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 zsh)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages pcre)
+  #:use-module (gnu packages autotools)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix licenses))
+
+(define-public zsh
+  (package
+    (name "zsh")
+    (version "5.0.6")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "http://www.zsh.org/pub/zsh-" version
+                                 ".tar.gz"))
+             (sha256
+              (base32 "0f9y2lkv6xs5nxgj7ld7sbncy454sgamz21fm4109mxqlqa32fph"))))
+    (build-system gnu-build-system)
+    (arguments `(#:configure-flags '("--with-tcsetpgrp" "--enable-pcre")
+                 #:phases (alist-cons-before
+                           'configure 'fix-sh
+                           (lambda _
+                             (substitute*
+                                 '("configure"
+                                   "configure.ac"
+                                   "Src/exec.c"
+                                   "Src/mkmakemod.sh"
+                                   "Config/installfns.sh"
+                                   "Config/defs.mk.in"
+                                   "Test/E01options.ztst"
+                                   "Test/A05execution.ztst"
+                                   "Test/A01grammar.ztst"
+                                   "Test/B02typeset.ztst"
+                                   "Completion/Unix/Command/_init_d"
+                                   "Util/preconfig")
+                               (("/bin/sh") (which "sh"))))
+                           %standard-phases)))
+    (native-inputs `(("autoconf", autoconf)))
+    (inputs `(("ncurses", ncurses)
+              ("pcre", pcre)
+              ("perl", perl)))
+    (synopsis "Powerful shell for interactive use and scripting")
+    (description "The Z shell (zsh) is a Unix shell that can be used
+as an interactive login shell and as a powerful command interpreter
+for shell scripting. Zsh can be thought of as an extended Bourne shell
+with a large number of improvements, including some features of bash,
+ksh, and tcsh.")
+    (home-page "http://www.zsh.org/")
+
+    ;; The whole thing is under an MIT/X11-style license, but there's one
+    ;; command, 'Completion/Unix/Command/_darcs', which is under GPLv2+.
+    (license gpl2+)))
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index b5b49d1a01..014eef053b 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -25,7 +25,7 @@
   #:use-module (gnu system linux)                 ; 'pam-service', etc.
   #:use-module (gnu packages admin)
   #:use-module ((gnu packages linux)
-                #:select (udev kbd e2fsprogs))
+                #:select (udev kbd e2fsprogs lvm2))
   #:use-module ((gnu packages base)
                 #:select (canonical-package glibc))
   #:use-module (gnu packages package-management)
@@ -38,6 +38,7 @@
   #:use-module (ice-9 format)
   #:export (root-file-system-service
             file-system-service
+            device-mapping-service
             user-processes-service
             host-name-service
             console-font-service
@@ -99,18 +100,20 @@ This service must be the root of the service dependency graph so that its
 
 (define* (file-system-service device target type
                               #:key (flags '()) (check? #t)
-                              create-mount-point? options (title 'any))
+                              create-mount-point? options (title 'any)
+                              (requirements '()))
   "Return a service that mounts DEVICE on TARGET as a file system TYPE with
 OPTIONS.  TITLE is a symbol specifying what kind of name DEVICE is: 'label for
 a partition label, 'device for a device file name, or 'any.  When CHECK? is
 true, check the file system before mounting it.  When CREATE-MOUNT-POINT? is
 true, create TARGET if it does not exist yet.  FLAGS is a list of symbols,
-such as 'read-only' etc."
+such as 'read-only' etc.  Optionally, REQUIREMENTS may be a list of service
+names such as device-mapping services."
   (with-monad %store-monad
     (return
      (service
       (provision (list (symbol-append 'file-system- (string->symbol target))))
-      (requirement '(root-file-system))
+      (requirement `(root-file-system ,@requirements))
       (documentation "Check, mount, and unmount the given file system.")
       (start #~(lambda args
                  (let ((device (canonicalize-device-spec #$device '#$title)))
@@ -479,9 +482,41 @@ passed to @command{guix-daemon}."
                                  (id 30000))))
              (activate activate)))))
 
-(define* (udev-service #:key (udev udev))
-  "Run @var{udev}, which populates the @file{/dev} directory dynamically."
-  (with-monad %store-monad
+(define (udev-rules-union packages)
+  "Return the union of the @code{lib/udev/rules.d} directories found in each
+item of @var{packages}."
+  (define build
+    #~(begin
+        (use-modules (guix build union)
+                     (guix build utils)
+                     (srfi srfi-1)
+                     (srfi srfi-26))
+
+        (define %standard-locations
+          '("/lib/udev/rules.d" "/libexec/udev/rules.d"))
+
+        (define (rules-sub-directory directory)
+          ;; Return the sub-directory of DIRECTORY containing udev rules, or
+          ;; #f if none was found.
+          (find directory-exists?
+                (map (cut string-append directory <>) %standard-locations)))
+
+        (mkdir-p (string-append #$output "/lib/udev"))
+        (union-build (string-append #$output "/lib/udev/rules.d")
+                     (filter-map rules-sub-directory '#$packages))))
+
+  (gexp->derivation "udev-rules" build
+                    #:modules '((guix build union)
+                                (guix build utils))
+                    #:local-build? #t))
+
+(define* (udev-service #:key (udev udev) (rules '()))
+  "Run @var{udev}, which populates the @file{/dev} directory dynamically.  Get
+extra rules from the packages listed in @var{rules}."
+  (mlet* %store-monad ((rules     (udev-rules-union (cons udev rules)))
+                       (udev.conf (text-file* "udev.conf"
+                                              "udev_rules=\"" rules
+                                              "/lib/udev/rules.d\"\n")))
     (return (service
              (provision '(udev))
 
@@ -513,6 +548,8 @@ passed to @command{guix-daemon}."
                         (setenv "LINUX_MODULE_DIRECTORY"
                                 "/run/booted-system/kernel/lib/modules")
 
+                        (setenv "UDEV_CONFIG_FILE" #$udev.conf)
+
                         (let ((pid (primitive-fork)))
                           (case pid
                             ((0)
@@ -533,6 +570,21 @@ passed to @command{guix-daemon}."
                              pid)))))
              (stop #~(make-kill-destructor))))))
 
+(define (device-mapping-service target command)
+  "Return a service that maps device @var{target}, a string such as
+@code{\"home\"} (meaning @code{/dev/mapper/home}), by executing @var{command},
+a gexp."
+  (with-monad %store-monad
+    (return (service
+             (provision (list (symbol-append 'device-mapping-
+                                             (string->symbol target))))
+             (requirement '(udev))
+             (documentation "Map a device node using Linux's device mapper.")
+             (start #~(lambda ()
+                        #$command))
+             (stop #~(const #f))
+             (respawn? #f)))))
+
 (define %base-services
   ;; Convenience variable holding the basic services.
   (let ((motd (text-file "motd" "
@@ -555,6 +607,9 @@ This is the GNU operating system, welcome!\n\n")))
           (syslog-service)
           (guix-service)
           (nscd-service)
-          (udev-service))))
+
+          ;; By default, enable the udev rules of LVM2.  They are needed as
+          ;; soon as LVM2 or the device-mapper is used.
+          (udev-service #:rules (list lvm2)))))
 
 ;;; base.scm ends here
diff --git a/gnu/system.scm b/gnu/system.scm
index ea7fdf1cb7..9bdf227eca 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -44,6 +44,7 @@
   #:use-module (gnu system linux)
   #:use-module (gnu system linux-initrd)
   #:use-module (gnu system file-systems)
+  #:autoload   (gnu packages cryptsetup) (cryptsetup)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
@@ -55,6 +56,7 @@
             operating-system-user-services
             operating-system-packages
             operating-system-host-name
+            operating-system-hosts-file
             operating-system-kernel
             operating-system-initrd
             operating-system-users
@@ -63,6 +65,7 @@
             operating-system-packages
             operating-system-timezone
             operating-system-locale
+            operating-system-mapped-devices
             operating-system-file-systems
             operating-system-activation-script
 
@@ -70,7 +73,10 @@
             operating-system-profile
             operating-system-grub.cfg
 
-            %base-packages))
+            %setuid-programs
+            %base-packages
+
+            luks-device-mapping))
 
 ;;; Commentary:
 ;;;
@@ -91,7 +97,11 @@
           (default base-initrd))
 
   (host-name operating-system-host-name)          ; string
+  (hosts-file operating-system-hosts-file         ; M item | #f
+              (default #f))
 
+  (mapped-devices operating-system-mapped-devices ; list of <mapped-device>
+                  (default '()))
   (file-systems operating-system-file-systems)    ; list of fs
 
   (users operating-system-users                   ; list of user accounts
@@ -148,6 +158,13 @@ file."
 ;;; Services.
 ;;;
 
+(define (luks-device-mapping source target)
+  "Return a gexp that maps SOURCE to TARGET as a LUKS device, using
+'cryptsetup'."
+  #~(zero? (system* (string-append #$cryptsetup "/sbin/cryptsetup")
+                    "open" "--type" "luks"
+                    #$source #$target)))
+
 (define (other-file-system-services os)
   "Return file system services for the file systems of OS that are not marked
 as 'needed-for-boot'."
@@ -157,30 +174,58 @@ as 'needed-for-boot'."
                   (string=? "/" (file-system-mount-point fs))))
             (operating-system-file-systems os)))
 
+  (define (device-mappings fs)
+    (filter (lambda (md)
+              (string=? (string-append "/dev/mapper/"
+                                       (mapped-device-target md))
+                        (file-system-device fs)))
+            (operating-system-mapped-devices os)))
+
+  (define (requirements fs)
+    (map (lambda (md)
+           (symbol-append 'device-mapping-
+                          (string->symbol (mapped-device-target md))))
+         (device-mappings fs)))
+
   (sequence %store-monad
-            (map (match-lambda
-                  (($ <file-system> device title target type flags opts
-                                    #f check? create?)
-                   (file-system-service device target type
-                                        #:title title
-                                        #:check? check?
-                                        #:create-mount-point? create?
-                                        #:options opts
-                                        #:flags flags)))
+            (map (lambda (fs)
+                   (match fs
+                     (($ <file-system> device title target type flags opts
+                                       #f check? create?)
+                      (file-system-service device target type
+                                           #:title title
+                                           #:requirements (requirements fs)
+                                           #:check? check?
+                                           #:create-mount-point? create?
+                                           #:options opts
+                                           #:flags flags))))
                  file-systems)))
 
+(define (device-mapping-services os)
+  "Return the list of device-mapping services for OS as a monadic list."
+  (sequence %store-monad
+            (map (lambda (md)
+                   (let ((source  (mapped-device-source md))
+                         (target  (mapped-device-target md))
+                         (command (mapped-device-command md)))
+                     (device-mapping-service target
+                                             (command source target))))
+                 (operating-system-mapped-devices os))))
+
 (define (essential-services os)
   "Return the list of essential services for OS.  These are special services
 that implement part of what's declared in OS are responsible for low-level
 bookkeeping."
-  (mlet* %store-monad ((root-fs   (root-file-system-service))
+  (mlet* %store-monad ((mappings  (device-mapping-services os))
+                       (root-fs   (root-file-system-service))
                        (other-fs  (other-file-system-services os))
                        (procs     (user-processes-service
                                    (map (compose first service-provision)
                                         other-fs)))
                        (host-name (host-name-service
                                    (operating-system-host-name os))))
-    (return (cons* host-name procs root-fs other-fs))))
+    (return (cons* host-name procs root-fs
+                   (append other-fs mappings)))))
 
 (define (operating-system-services os)
   "Return all the services of OS, including \"internal\" services that do not
@@ -220,12 +265,19 @@ explicitly appear in OS."
   "
 This is the GNU system.  Welcome.\n")
 
+(define (default-/etc/hosts host-name)
+  "Return the default /etc/hosts file."
+  (text-file "hosts"
+             (string-append "localhost 127.0.0.1\n"
+                            host-name " 127.0.0.1\n")))
+
 (define* (etc-directory #:key
                         (locale "C") (timezone "Europe/Paris")
                         (issue "Hello!\n")
                         (skeletons '())
                         (pam-services '())
                         (profile "/run/current-system/profile")
+                        hosts-file
                         (sudoers ""))
   "Return a derivation that builds the static part of the /etc directory."
   (mlet* %store-monad
@@ -241,7 +293,7 @@ This is the GNU system.  Welcome.\n")
 
        ;; TODO: Generate bashrc from packages' search-paths.
        (bashrc    (text-file* "bashrc"  "
-export PS1='\\u@\\h\\$ '
+export PS1='\\u@\\h \\w\\$ '
 
 export LC_ALL=\"" locale "\"
 export TZ=\"" timezone "\"
@@ -268,6 +320,7 @@ alias ll='ls -l'
                   ("skel" ,#~#$skel)
                   ("shells" ,#~#$shells)
                   ("profile" ,#~#$bashrc)
+                  ("hosts" ,#~#$hosts-file)
                   ("localtime" ,#~(string-append #$tzdata "/share/zoneinfo/"
                                                  #$timezone))
                   ("sudoers" ,#~#$sudoers)))))
@@ -310,12 +363,15 @@ alias ll='ls -l'
                       (append (operating-system-pam-services os)
                               (append-map service-pam-services services))))
        (profile-drv (operating-system-profile os))
-       (skeletons   (operating-system-skeletons os)))
+       (skeletons   (operating-system-skeletons os))
+       (/etc/hosts  (or (operating-system-hosts-file os)
+                        (default-/etc/hosts (operating-system-host-name os)))))
    (etc-directory #:pam-services pam-services
                   #:skeletons skeletons
                   #:issue (operating-system-issue os)
                   #:locale (operating-system-locale os)
                   #:timezone (operating-system-timezone os)
+                  #:hosts-file /etc/hosts
                   #:sudoers (operating-system-sudoers os)
                   #:profile profile-drv)))
 
@@ -402,6 +458,11 @@ etc."
 
                     (use-modules (gnu build activation))
 
+                    ;; Make sure /bin/sh is valid and current.
+                    (activate-/bin/sh
+                     (string-append #$(canonical-package bash)
+                                    "/bin/sh"))
+
                     ;; Populate /etc.
                     (activate-etc #$etc)
 
@@ -470,6 +531,8 @@ we're running in the final root."
               boot?))
             (operating-system-file-systems os)))
 
+  ;; TODO: Pass the mapped devices required by boot-time file systems to the
+  ;; initrd.
   (mlet %store-monad
       ((initrd ((operating-system-initrd os) boot-file-systems)))
     (return #~(string-append #$initrd "/initrd"))))
diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index 48c4fc7e77..90e2b0c796 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -37,7 +37,13 @@
             %pseudo-terminal-file-system
             %devtmpfs-file-system
 
-            %base-file-systems))
+            %base-file-systems
+
+            mapped-device
+            mapped-device?
+            mapped-device-source
+            mapped-device-target
+            mapped-device-command))
 
 ;;; Commentary:
 ;;;
@@ -128,4 +134,17 @@
         %pseudo-terminal-file-system
         %shared-memory-file-system))
 
+
+
+;;;
+;;; Mapped devices, for Linux's device-mapper.
+;;;
+
+(define-record-type* <mapped-device> mapped-device
+  make-mapped-device
+  mapped-device?
+  (source    mapped-device-source)                ;string
+  (target    mapped-device-target)                ;string
+  (command   mapped-device-command))              ;source target -> gexp
+
 ;;; file-systems.scm ends here
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index 627d17bac2..93f751b757 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -34,6 +34,7 @@
   #:use-module (ice-9 match)
   #:use-module (ice-9 regex)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
   #:export (expression->initrd
             base-initrd))
 
@@ -53,106 +54,37 @@
                              (gzip gzip)
                              (name "guile-initrd")
                              (system (%current-system))
-                             (modules '())
-                             (to-copy '())
-                             (linux #f)
-                             (linux-modules '()))
+                             (modules '()))
   "Return a derivation that builds a Linux initrd (a gzipped cpio archive)
-containing GUILE and that evaluates EXP, a G-expression, upon booting.
+containing GUILE and that evaluates EXP, a G-expression, upon booting.  All
+the derivations referenced by EXP are automatically copied to the initrd.
 
-LINUX-MODULES is a list of '.ko' file names to be copied from LINUX into the
-initrd.  TO-COPY is a list of additional derivations or packages to copy to
-the initrd.  MODULES is a list of Guile module names to be embedded in the
-initrd."
+MODULES is a list of Guile module names to be embedded in the initrd."
 
   ;; General Linux overview in `Documentation/early-userspace/README' and
   ;; `Documentation/filesystems/ramfs-rootfs-initramfs.txt'.
 
-  (define graph-files
-    (unfold-right zero?
-                  number->string
-                  1-
-                  (length to-copy)))
-
-  (mlet %store-monad ((source     (imported-modules modules))
-                      (compiled   (compiled-modules modules))
-                      (module-dir (flat-linux-module-directory linux
-                                                               linux-modules)))
+  (mlet %store-monad ((init (gexp->script "init" exp
+                                          #:modules modules
+                                          #:guile guile)))
     (define builder
-      ;; TODO: Move most of this code to (gnu build linux-initrd).
       #~(begin
-          (use-modules (gnu build linux-initrd)
-                       (guix build utils)
-                       (guix build store-copy)
-                       (ice-9 pretty-print)
-                       (ice-9 popen)
-                       (ice-9 match)
-                       (ice-9 ftw)
-                       (srfi srfi-26)
-                       (system base compile)
-                       (rnrs bytevectors)
-                       ((system foreign) #:select (sizeof)))
-
-          (let ((modules #$source)
-                (gos     #$compiled)
-                (scm-dir (string-append "share/guile/" (effective-version)))
-                (go-dir  (format #f ".cache/guile/ccache/~a-~a-~a-~a"
-                                 (effective-version)
-                                 (if (eq? (native-endianness) (endianness little))
-                                     "LE"
-                                     "BE")
-                                 (sizeof '*)
-                                 (effective-version))))
-            (mkdir #$output)
-            (mkdir "contents")
-
-            (with-directory-excursion "contents"
-              (copy-recursively #$guile ".")
-              (call-with-output-file "init"
-                (lambda (p)
-                  (format p "#!/bin/guile -ds~%!#~%" #$guile)
-                  (pretty-print '#$exp p)))
-              (chmod "init" #o555)
-              (chmod "bin/guile" #o555)
-
-              ;; Copy Guile modules.
-              (chmod scm-dir #o777)
-              (copy-recursively modules scm-dir
-                                #:follow-symlinks? #t)
-              (copy-recursively gos (string-append "lib/guile/"
-                                                   (effective-version) "/ccache")
-                                #:follow-symlinks? #t)
-
-              ;; Compile `init'.
-              (mkdir-p go-dir)
-              (set! %load-path (cons modules %load-path))
-              (set! %load-compiled-path (cons gos %load-compiled-path))
-              (compile-file "init"
-                            #:opts %auto-compilation-options
-                            #:output-file (string-append go-dir "/init.go"))
+          (use-modules (gnu build linux-initrd))
 
-              ;; Copy Linux modules.
-              (mkdir "modules")
-              (copy-recursively #$module-dir "modules")
-
-              ;; Populate the initrd's store.
-              (with-directory-excursion ".."
-                (populate-store '#$graph-files "contents"))
-
-              ;; Reset the timestamps of all the files that will make it in the
-              ;; initrd.
-              (for-each (cut utime <> 0 0 0 0)
-                        (find-files "." ".*"))
-
-              (write-cpio-archive (string-append #$output "/initrd") "."
-                                  #:cpio (string-append #$cpio "/bin/cpio")
-                                  #:gzip (string-append #$gzip "/bin/gzip"))))))
+          (mkdir #$output)
+          (build-initrd (string-append #$output "/initrd")
+                        #:guile #$guile
+                        #:init #$init
+                        ;; Copy everything INIT refers to into the initrd.
+                        #:references-graphs '("closure")
+                        #:cpio (string-append #$cpio "/bin/cpio")
+                        #:gzip (string-append #$gzip "/bin/gzip"))))
 
    (gexp->derivation name builder
                      #:modules '((guix build utils)
                                  (guix build store-copy)
                                  (gnu build linux-initrd))
-                     #:references-graphs (zip graph-files to-copy))))
+                     #:references-graphs `(("closure" ,init)))))
 
 (define (flat-linux-module-directory linux modules)
   "Return a flat directory containing the Linux kernel modules listed in
@@ -199,6 +131,7 @@ initrd code."
                       volatile-root?
                       (extra-modules '())
                       guile-modules-in-chroot?)
+  ;; TODO: Support boot-time device mappings.
   "Return a monadic derivation that builds a generic initrd.  FILE-SYSTEMS is
 a list of file-systems to be mounted by the initrd, possibly in addition to
 the root file system specified on the kernel command line via '--root'.
@@ -264,28 +197,29 @@ exception and backtrace!)."
             (list unionfs-fuse/static)
             '())))
 
-  (expression->initrd
-   #~(begin
-       (use-modules (gnu build linux-boot)
-                    (guix build utils)
-                    (srfi srfi-26))
-
-       (with-output-to-port (%make-void-port "w")
-         (lambda ()
-           (set-path-environment-variable "PATH" '("bin" "sbin")
-                                          '#$helper-packages)))
-
-       (boot-system #:mounts '#$(map file-system->spec file-systems)
-                    #:linux-modules '#$linux-modules
-                    #:qemu-guest-networking? #$qemu-networking?
-                    #:guile-modules-in-chroot? '#$guile-modules-in-chroot?
-                    #:volatile-root? '#$volatile-root?))
-   #:name "base-initrd"
-   #:modules '((guix build utils)
-               (gnu build linux-boot)
-               (gnu build file-systems))
-   #:to-copy helper-packages
-   #:linux linux-libre
-   #:linux-modules linux-modules))
+  (mlet %store-monad ((kodir (flat-linux-module-directory linux-libre
+                                                          linux-modules)))
+    (expression->initrd
+     #~(begin
+         (use-modules (gnu build linux-boot)
+                      (guix build utils)
+                      (srfi srfi-26))
+
+         (with-output-to-port (%make-void-port "w")
+           (lambda ()
+             (set-path-environment-variable "PATH" '("bin" "sbin")
+                                            '#$helper-packages)))
+
+         (boot-system #:mounts '#$(map file-system->spec file-systems)
+                      #:linux-modules (map (lambda (file)
+                                             (string-append #$kodir "/" file))
+                                           '#$linux-modules)
+                      #:qemu-guest-networking? #$qemu-networking?
+                      #:guile-modules-in-chroot? '#$guile-modules-in-chroot?
+                      #:volatile-root? '#$volatile-root?))
+     #:name "base-initrd"
+     #:modules '((guix build utils)
+                 (gnu build linux-boot)
+                 (gnu build file-systems)))))
 
 ;;; linux-initrd.scm ends here
diff --git a/gnu/system/linux.scm b/gnu/system/linux.scm
index 524ad01261..8cddedf28e 100644
--- a/gnu/system/linux.scm
+++ b/gnu/system/linux.scm
@@ -175,7 +175,8 @@ authenticate to run COMMAND."
           ;; These programs are setuid-root.
           (map (cut unix-pam-service <>
                     #:allow-empty-passwords? allow-empty-passwords?)
-               '("su" "passwd" "sudo"))
+               '("su" "passwd" "sudo"
+                 "xlock" "xscreensaver"))
 
           ;; These programs are not setuid-root, and we want root to be able
           ;; to run them without having to authenticate (notably because
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index 205bf2cb19..4ee8dc5cf2 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -428,7 +428,9 @@ exec " #$qemu "/bin/" #$(qemu-command (%current-system))
   "--system=" #$os-drv " --load=" #$os-drv "/boot --root=/dev/vda1\" \
   -serial stdio \
   -drive file=" #$image
-  ",if=virtio,cache=writeback,werror=report,readonly\n")
+  ",if=virtio,cache=writeback,werror=report,readonly \
+  -m 256
+\n")
              port)
             (chmod port #o555))))