aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
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))))