summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2014-09-11 18:26:28 -0400
committerMark H Weaver <mhw@netris.org>2014-09-11 18:26:28 -0400
commit66ea98e321e93b0806f6870d77dd4c00e7e720c0 (patch)
tree21778401485e3b8683bbc6a31769233c059683b1
parentda5538ef44bfa74d3e435f9f557374eabba5dc1e (diff)
parent5dae0186dea1e72e73bf223161620cfeddef5a63 (diff)
Merge branch 'master' into core-updates
Conflicts: gnu/packages/image.scm
-rw-r--r--AUTHORS1
-rw-r--r--doc/emacs.texi16
-rw-r--r--doc/guix.texi12
-rw-r--r--emacs/guix-list.el98
-rw-r--r--gnu-system.am20
-rw-r--r--gnu.scm3
-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
-rw-r--r--guix/profiles.scm8
-rw-r--r--po/packages/POTFILES.in2
61 files changed, 3055 insertions, 610 deletions
diff --git a/AUTHORS b/AUTHORS
index 1ba9798e7e9..4e3d0aa001e 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -10,6 +10,7 @@ alphabetical order):
10 10
11 Eric Bavier <bavier@member.fsf.org> 11 Eric Bavier <bavier@member.fsf.org>
12 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com> 12 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
13 Marek Benc <merkur32@gmail.com>
13 Ludovic Courtès <ludo@gnu.org> 14 Ludovic Courtès <ludo@gnu.org>
14 John Darrington <jmd@gnu.org> 15 John Darrington <jmd@gnu.org>
15 Andreas Enge <andreas@enge.fr> 16 Andreas Enge <andreas@enge.fr>
diff --git a/doc/emacs.texi b/doc/emacs.texi
index 55feb1bf9fd..7616c8f92da 100644
--- a/doc/emacs.texi
+++ b/doc/emacs.texi
@@ -163,11 +163,9 @@ Mark the current entry.
163@item M 163@item M
164Mark all entries. 164Mark all entries.
165@item u 165@item u
166Unmark the current entry. 166Unmark the current entry (with prefix, unmark all entries).
167@item @key{DEL} 167@item @key{DEL}
168Unmark backward. 168Unmark backward.
169@item U
170Unmark all entries.
171@item S 169@item S
172Sort entries by a specified column. 170Sort entries by a specified column.
173@end table 171@end table
@@ -179,12 +177,16 @@ A ``package-list'' buffer additionally provides the following bindings:
179Describe marked packages (display available information in a 177Describe marked packages (display available information in a
180``package-info'' buffer). 178``package-info'' buffer).
181@item i 179@item i
182Mark a package for installation (with prefix, prompt for output(s) to 180Mark "out" of the current package for installation (with prefix, prompt
183install). 181for output(s) to install).
184@item d 182@item d
185Mark a package for deletion. 183Mark all installed outputs of the current package for deletion (with
184prefix, prompt for output(s) to delete).
185@item U
186Mark all installed outputs of the current package for upgrading (with
187prefix, prompt for output(s) to upgrade).
186@item ^ 188@item ^
187Mark a package for upgrading. 189Mark all obsolete packages for upgrading.
188@item x 190@item x
189Execute actions on marked packages. 191Execute actions on marked packages.
190@end table 192@end table
diff --git a/doc/guix.texi b/doc/guix.texi
index e0251f5ffdc..e3b0cf61f0e 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -3616,16 +3616,14 @@ program to run in that initrd.
3616 3616
3617@deffn {Monadic Procedure} expression->initrd @var{exp} @ 3617@deffn {Monadic Procedure} expression->initrd @var{exp} @
3618 [#:guile %guile-static-stripped] [#:name "guile-initrd"] @ 3618 [#:guile %guile-static-stripped] [#:name "guile-initrd"] @
3619 [#:modules '()] [#:to-copy '()] [#:linux #f] @ 3619 [#:modules '()]
3620 [#:linux-modules '()]
3621Return a derivation that builds a Linux initrd (a gzipped cpio archive) 3620Return a derivation that builds a Linux initrd (a gzipped cpio archive)
3622containing @var{guile} and that evaluates @var{exp}, a G-expression, 3621containing @var{guile} and that evaluates @var{exp}, a G-expression,
3623upon booting. 3622upon booting. All the derivations referenced by @var{exp} are
3623automatically copied to the initrd.
3624 3624
3625@var{linux-modules} is a list of @file{.ko} file names to be copied from 3625@var{modules} is a list of Guile module names to be embedded in the
3626@var{linux} into the initrd. @var{to-copy} is a list of additional 3626initrd.
3627derivations or packages to copy to the initrd. @var{modules} is a list
3628of Guile module names to be embedded in the initrd.
3629@end deffn 3627@end deffn
3630 3628
3631@node Invoking guix system 3629@node Invoking guix system
diff --git a/emacs/guix-list.el b/emacs/guix-list.el
index 08fb3cba5c5..8d9b231dd12 100644
--- a/emacs/guix-list.el
+++ b/emacs/guix-list.el
@@ -303,10 +303,13 @@ Interactively, put a general mark on all lines."
303 (interactive '(general)) 303 (interactive '(general))
304 (guix-list-for-each-line #'guix-list-mark mark-name)) 304 (guix-list-for-each-line #'guix-list-mark mark-name))
305 305
306(defun guix-list-unmark () 306(defun guix-list-unmark (&optional arg)
307 "Unmark the current line and move to the next line." 307 "Unmark the current line and move to the next line.
308 (interactive) 308With ARG, unmark all lines."
309 (guix-list-mark 'empty t)) 309 (interactive "P")
310 (if arg
311 (guix-list-unmark-all)
312 (guix-list-mark 'empty t)))
310 313
311(defun guix-list-unmark-backward () 314(defun guix-list-unmark-backward ()
312 "Move up one line and unmark it." 315 "Move up one line and unmark it."
@@ -344,7 +347,6 @@ Same as `tabulated-list-sort', but also restore marks after sorting."
344 (define-key map (kbd "*") 'guix-list-mark) 347 (define-key map (kbd "*") 'guix-list-mark)
345 (define-key map (kbd "M") 'guix-list-mark-all) 348 (define-key map (kbd "M") 'guix-list-mark-all)
346 (define-key map (kbd "u") 'guix-list-unmark) 349 (define-key map (kbd "u") 'guix-list-unmark)
347 (define-key map (kbd "U") 'guix-list-unmark-all)
348 (define-key map (kbd "DEL") 'guix-list-unmark-backward) 350 (define-key map (kbd "DEL") 'guix-list-unmark-backward)
349 (define-key map [remap tabulated-list-sort] 'guix-list-sort) 351 (define-key map [remap tabulated-list-sort] 'guix-list-sort)
350 map) 352 map)
@@ -478,8 +480,9 @@ likely)."
478 (define-key map (kbd "RET") 'guix-package-list-describe) 480 (define-key map (kbd "RET") 'guix-package-list-describe)
479 (define-key map (kbd "x") 'guix-package-list-execute) 481 (define-key map (kbd "x") 'guix-package-list-execute)
480 (define-key map (kbd "i") 'guix-package-list-mark-install) 482 (define-key map (kbd "i") 'guix-package-list-mark-install)
481 (define-key map (kbd "^") 'guix-package-list-mark-upgrade) 483 (define-key map (kbd "d") 'guix-package-list-mark-delete)
482 (define-key map (kbd "d") 'guix-package-list-mark-delete)) 484 (define-key map (kbd "U") 'guix-package-list-mark-upgrade)
485 (define-key map (kbd "^") 'guix-package-list-mark-upgrades))
483 486
484(defun guix-package-list-get-name (name entry) 487(defun guix-package-list-get-name (name entry)
485 "Return NAME of the package ENTRY. 488 "Return NAME of the package ENTRY.
@@ -505,24 +508,33 @@ Colorize it with `guix-package-list-installed' or
505 (eq guix-search-type 'generation)) 508 (eq guix-search-type 'generation))
506 (error "Action marks are disabled for lists of 'generation packages'"))) 509 (error "Action marks are disabled for lists of 'generation packages'")))
507 510
511(defun guix-package-list-mark-outputs (mark default
512 &optional prompt available)
513 "Mark the current package with MARK and move to the next line.
514If PROMPT is non-nil, use it to ask a user for outputs from
515AVAILABLE list, otherwise mark all DEFAULT outputs."
516 (let ((outputs (if prompt
517 (guix-completing-read-multiple
518 prompt available nil t)
519 default)))
520 (apply #'guix-list-mark mark t outputs)))
521
508(defun guix-package-list-mark-install (&optional arg) 522(defun guix-package-list-mark-install (&optional arg)
509 "Mark the current package for installation and move to the next line. 523 "Mark the current package for installation and move to the next line.
510With ARG, prompt for the outputs to install (several outputs may 524With ARG, prompt for the outputs to install (several outputs may
511be separated with \",\")." 525be separated with \",\")."
512 (interactive "P") 526 (interactive "P")
513 (guix-package-list-marking-check) 527 (guix-package-list-marking-check)
514 (let* ((entry (guix-list-current-entry)) 528 (let* ((entry (guix-list-current-entry))
515 (available (guix-get-key-val entry 'outputs)) 529 (all (guix-get-key-val entry 'outputs))
516 (installed (guix-get-installed-outputs entry)) 530 (installed (guix-get-installed-outputs entry))
517 (to-install (if arg 531 (available (cl-set-difference all installed :test #'string=)))
518 (guix-completing-read-multiple 532 (or available
519 "Output(s) to install: " available nil t) 533 (user-error "This package is already installed"))
520 '("out"))) 534 (guix-package-list-mark-outputs
521 (to-install (cl-set-difference to-install installed 535 'install '("out")
522 :test #'string=))) 536 (and arg "Output(s) to install: ")
523 (if to-install 537 available)))
524 (apply #'guix-list-mark 'install t to-install)
525 (user-error "This package is already installed"))))
526 538
527(defun guix-package-list-mark-delete (&optional arg) 539(defun guix-package-list-mark-delete (&optional arg)
528 "Mark the current package for deletion and move to the next line. 540 "Mark the current package for deletion and move to the next line.
@@ -534,23 +546,47 @@ be separated with \",\")."
534 (installed (guix-get-installed-outputs entry))) 546 (installed (guix-get-installed-outputs entry)))
535 (or installed 547 (or installed
536 (user-error "This package is not installed")) 548 (user-error "This package is not installed"))
537 (let ((to-delete (when arg 549 (guix-package-list-mark-outputs
538 (guix-completing-read-multiple 550 'delete installed
539 "Output(s) to delete: " installed nil t)))) 551 (and arg "Output(s) to delete: ")
540 (if to-delete 552 installed)))
541 (apply #'guix-list-mark 'delete t to-delete) 553
542 (guix-package-list-mark-delete-simple))))) 554(defun guix-package-list-mark-upgrade (&optional arg)
543 555 "Mark the current package for upgrading and move to the next line.
544(defun guix-package-list-mark-upgrade () 556With ARG, prompt for the outputs to upgrade (several outputs may
545 "Mark the current package for upgrading and move to the next line." 557be separated with \",\")."
546 (interactive) 558 (interactive "P")
547 (guix-package-list-marking-check) 559 (guix-package-list-marking-check)
548 (let ((entry (guix-list-current-entry))) 560 (let* ((entry (guix-list-current-entry))
549 (or (guix-get-installed-outputs entry) 561 (installed (guix-get-installed-outputs entry)))
562 (or installed
550 (user-error "This package is not installed")) 563 (user-error "This package is not installed"))
551 (when (or (guix-get-key-val entry 'obsolete) 564 (when (or (guix-get-key-val entry 'obsolete)
552 (y-or-n-p "This package is not obsolete. Try to upgrade it anyway? ")) 565 (y-or-n-p "This package is not obsolete. Try to upgrade it anyway? "))
553 (guix-package-list-mark-upgrade-simple)))) 566 (guix-package-list-mark-outputs
567 'upgrade installed
568 (and arg "Output(s) to upgrade: ")
569 installed))))
570
571(defun guix-package-list-mark-upgrades ()
572 "Mark all obsolete packages for upgrading."
573 (interactive)
574 (guix-package-list-marking-check)
575 (let ((obsolete (cl-remove-if-not
576 (lambda (entry)
577 (guix-get-key-val entry 'obsolete))
578 guix-entries)))
579 (guix-list-for-each-line
580 (lambda ()
581 (let* ((id (guix-list-current-id))
582 (entry (cl-find-if
583 (lambda (entry)
584 (equal id (guix-get-key-val entry 'id)))
585 obsolete)))
586 (when entry
587 (apply #'guix-list-mark
588 'upgrade nil
589 (guix-get-installed-outputs entry))))))))
554 590
555(defun guix-package-list-execute () 591(defun guix-package-list-execute ()
556 "Perform actions on the marked packages." 592 "Perform actions on the marked packages."
diff --git a/gnu-system.am b/gnu-system.am
index a079fa2030d..dbdaf53d6f6 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -24,6 +24,7 @@
24GNU_SYSTEM_MODULES = \ 24GNU_SYSTEM_MODULES = \
25 gnu.scm \ 25 gnu.scm \
26 gnu/packages.scm \ 26 gnu/packages.scm \
27 gnu/packages/abiword.scm \
27 gnu/packages/acct.scm \ 28 gnu/packages/acct.scm \
28 gnu/packages/acl.scm \ 29 gnu/packages/acl.scm \
29 gnu/packages/admin.scm \ 30 gnu/packages/admin.scm \
@@ -41,7 +42,6 @@ GNU_SYSTEM_MODULES = \
41 gnu/packages/backup.scm \ 42 gnu/packages/backup.scm \
42 gnu/packages/base.scm \ 43 gnu/packages/base.scm \
43 gnu/packages/bash.scm \ 44 gnu/packages/bash.scm \
44 gnu/packages/bdb.scm \
45 gnu/packages/bdw-gc.scm \ 45 gnu/packages/bdw-gc.scm \
46 gnu/packages/bittorrent.scm \ 46 gnu/packages/bittorrent.scm \
47 gnu/packages/bison.scm \ 47 gnu/packages/bison.scm \
@@ -67,6 +67,7 @@ GNU_SYSTEM_MODULES = \
67 gnu/packages/curl.scm \ 67 gnu/packages/curl.scm \
68 gnu/packages/cursynth.scm \ 68 gnu/packages/cursynth.scm \
69 gnu/packages/cyrus-sasl.scm \ 69 gnu/packages/cyrus-sasl.scm \
70 gnu/packages/databases.scm \
70 gnu/packages/datamash.scm \ 71 gnu/packages/datamash.scm \
71 gnu/packages/dc.scm \ 72 gnu/packages/dc.scm \
72 gnu/packages/dejagnu.scm \ 73 gnu/packages/dejagnu.scm \
@@ -78,6 +79,7 @@ GNU_SYSTEM_MODULES = \
78 gnu/packages/ed.scm \ 79 gnu/packages/ed.scm \
79 gnu/packages/elf.scm \ 80 gnu/packages/elf.scm \
80 gnu/packages/emacs.scm \ 81 gnu/packages/emacs.scm \
82 gnu/packages/enchant.scm \
81 gnu/packages/file.scm \ 83 gnu/packages/file.scm \
82 gnu/packages/fish.scm \ 84 gnu/packages/fish.scm \
83 gnu/packages/flex.scm \ 85 gnu/packages/flex.scm \
@@ -86,6 +88,7 @@ GNU_SYSTEM_MODULES = \
86 gnu/packages/fontutils.scm \ 88 gnu/packages/fontutils.scm \
87 gnu/packages/freeipmi.scm \ 89 gnu/packages/freeipmi.scm \
88 gnu/packages/ftp.scm \ 90 gnu/packages/ftp.scm \
91 gnu/packages/fribidi.scm \
89 gnu/packages/games.scm \ 92 gnu/packages/games.scm \
90 gnu/packages/gawk.scm \ 93 gnu/packages/gawk.scm \
91 gnu/packages/gcal.scm \ 94 gnu/packages/gcal.scm \
@@ -172,7 +175,6 @@ GNU_SYSTEM_MODULES = \
172 gnu/packages/mpi.scm \ 175 gnu/packages/mpi.scm \
173 gnu/packages/multiprecision.scm \ 176 gnu/packages/multiprecision.scm \
174 gnu/packages/mtools.scm \ 177 gnu/packages/mtools.scm \
175 gnu/packages/mysql.scm \
176 gnu/packages/nano.scm \ 178 gnu/packages/nano.scm \
177 gnu/packages/ncdu.scm \ 179 gnu/packages/ncdu.scm \
178 gnu/packages/ncurses.scm \ 180 gnu/packages/ncurses.scm \
@@ -187,6 +189,7 @@ GNU_SYSTEM_MODULES = \
187 gnu/packages/openldap.scm \ 189 gnu/packages/openldap.scm \
188 gnu/packages/openssl.scm \ 190 gnu/packages/openssl.scm \
189 gnu/packages/orpheus.scm \ 191 gnu/packages/orpheus.scm \
192 gnu/packages/ots.scm \
190 gnu/packages/package-management.scm \ 193 gnu/packages/package-management.scm \
191 gnu/packages/parallel.scm \ 194 gnu/packages/parallel.scm \
192 gnu/packages/patchutils.scm \ 195 gnu/packages/patchutils.scm \
@@ -199,7 +202,6 @@ GNU_SYSTEM_MODULES = \
199 gnu/packages/pkg-config.scm \ 202 gnu/packages/pkg-config.scm \
200 gnu/packages/plotutils.scm \ 203 gnu/packages/plotutils.scm \
201 gnu/packages/popt.scm \ 204 gnu/packages/popt.scm \
202 gnu/packages/postgresql.scm \
203 gnu/packages/pth.scm \ 205 gnu/packages/pth.scm \
204 gnu/packages/pulseaudio.scm \ 206 gnu/packages/pulseaudio.scm \
205 gnu/packages/pretty-print.scm \ 207 gnu/packages/pretty-print.scm \
@@ -210,7 +212,6 @@ GNU_SYSTEM_MODULES = \
210 gnu/packages/ratpoison.scm \ 212 gnu/packages/ratpoison.scm \
211 gnu/packages/rdf.scm \ 213 gnu/packages/rdf.scm \
212 gnu/packages/readline.scm \ 214 gnu/packages/readline.scm \
213 gnu/packages/recutils.scm \
214 gnu/packages/rrdtool.scm \ 215 gnu/packages/rrdtool.scm \
215 gnu/packages/rsync.scm \ 216 gnu/packages/rsync.scm \
216 gnu/packages/rush.scm \ 217 gnu/packages/rush.scm \
@@ -224,7 +225,6 @@ GNU_SYSTEM_MODULES = \
224 gnu/packages/skribilo.scm \ 225 gnu/packages/skribilo.scm \
225 gnu/packages/slim.scm \ 226 gnu/packages/slim.scm \
226 gnu/packages/smalltalk.scm \ 227 gnu/packages/smalltalk.scm \
227 gnu/packages/sqlite.scm \
228 gnu/packages/ssh.scm \ 228 gnu/packages/ssh.scm \
229 gnu/packages/stalonetray.scm \ 229 gnu/packages/stalonetray.scm \
230 gnu/packages/swig.scm \ 230 gnu/packages/swig.scm \
@@ -249,9 +249,11 @@ GNU_SYSTEM_MODULES = \
249 gnu/packages/w3m.scm \ 249 gnu/packages/w3m.scm \
250 gnu/packages/wdiff.scm \ 250 gnu/packages/wdiff.scm \
251 gnu/packages/web.scm \ 251 gnu/packages/web.scm \
252 gnu/packages/weechat.scm \
252 gnu/packages/wget.scm \ 253 gnu/packages/wget.scm \
253 gnu/packages/which.scm \ 254 gnu/packages/which.scm \
254 gnu/packages/wordnet.scm \ 255 gnu/packages/wordnet.scm \
256 gnu/packages/wv.scm \
255 gnu/packages/xiph.scm \ 257 gnu/packages/xiph.scm \
256 gnu/packages/xlockmore.scm \ 258 gnu/packages/xlockmore.scm \
257 gnu/packages/xml.scm \ 259 gnu/packages/xml.scm \
@@ -260,6 +262,7 @@ GNU_SYSTEM_MODULES = \
260 gnu/packages/yasm.scm \ 262 gnu/packages/yasm.scm \
261 gnu/packages/zile.scm \ 263 gnu/packages/zile.scm \
262 gnu/packages/zip.scm \ 264 gnu/packages/zip.scm \
265 gnu/packages/zsh.scm \
263 \ 266 \
264 gnu/services.scm \ 267 gnu/services.scm \
265 gnu/services/avahi.scm \ 268 gnu/services/avahi.scm \
@@ -289,6 +292,12 @@ GNU_SYSTEM_MODULES = \
289 292
290patchdir = $(guilemoduledir)/gnu/packages/patches 293patchdir = $(guilemoduledir)/gnu/packages/patches
291dist_patch_DATA = \ 294dist_patch_DATA = \
295 gnu/packages/patches/abiword-explictly-cast-bools.patch \
296 gnu/packages/patches/abiword-link-plugins-against-backend.patch \
297 gnu/packages/patches/abiword-no-include-glib-internal-headers.patch \
298 gnu/packages/patches/abiword-pass-no-undefined-to-linker.patch \
299 gnu/packages/patches/abiword-use-proper-png-api.patch \
300 gnu/packages/patches/abiword-wmf-version-lookup-fix.patch \
292 gnu/packages/patches/alsa-lib-mips-atomic-fix.patch \ 301 gnu/packages/patches/alsa-lib-mips-atomic-fix.patch \
293 gnu/packages/patches/apr-skip-getservbyname-test.patch \ 302 gnu/packages/patches/apr-skip-getservbyname-test.patch \
294 gnu/packages/patches/automake-skip-amhello-tests.patch \ 303 gnu/packages/patches/automake-skip-amhello-tests.patch \
@@ -362,6 +371,7 @@ dist_patch_DATA = \
362 gnu/packages/patches/module-init-tools-moduledir.patch \ 371 gnu/packages/patches/module-init-tools-moduledir.patch \
363 gnu/packages/patches/nvi-assume-preserve-path.patch \ 372 gnu/packages/patches/nvi-assume-preserve-path.patch \
364 gnu/packages/patches/orpheus-cast-errors-and-includes.patch \ 373 gnu/packages/patches/orpheus-cast-errors-and-includes.patch \
374 gnu/packages/patches/ots-no-include-missing-file.patch \
365 gnu/packages/patches/patchelf-page-size.patch \ 375 gnu/packages/patches/patchelf-page-size.patch \
366 gnu/packages/patches/patchutils-xfail-gendiff-tests.patch \ 376 gnu/packages/patches/patchutils-xfail-gendiff-tests.patch \
367 gnu/packages/patches/perl-no-sys-dirs.patch \ 377 gnu/packages/patches/perl-no-sys-dirs.patch \
diff --git a/gnu.scm b/gnu.scm
index e573de65318..eb0bf71ab1e 100644
--- a/gnu.scm
+++ b/gnu.scm
@@ -36,7 +36,8 @@
36 (gnu services) 36 (gnu services)
37 (gnu services base) 37 (gnu services base)
38 (gnu packages) 38 (gnu packages)
39 (gnu packages base))) 39 (gnu packages base)
40 (guix gexp))) ; so gexps can be used
40 41
41 (for-each (let ((i (module-public-interface (current-module)))) 42 (for-each (let ((i (module-public-interface (current-module))))
42 (lambda (m) 43 (lambda (m)
diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm
index 362669cbf91..04dd19f3e1a 100644
--- a/gnu/build/activation.scm
+++ b/gnu/build/activation.scm
@@ -26,6 +26,7 @@
26 #:export (activate-users+groups 26 #:export (activate-users+groups
27 activate-etc 27 activate-etc
28 activate-setuid-programs 28 activate-setuid-programs
29 activate-/bin/sh
29 activate-current-system)) 30 activate-current-system))
30 31
31;;; Commentary: 32;;; Commentary:
@@ -146,48 +147,64 @@ numeric gid or #f."
146 ;; /etc is a mixture of static and dynamic settings. Here is where we 147 ;; /etc is a mixture of static and dynamic settings. Here is where we
147 ;; initialize it from the static part. 148 ;; initialize it from the static part.
148 149
150 (define (rm-f file)
151 (false-if-exception (delete-file file)))
152
149 (format #t "populating /etc from ~a...~%" etc) 153 (format #t "populating /etc from ~a...~%" etc)
150 (let ((rm-f (lambda (f) 154
151 (false-if-exception (delete-file f))))) 155 (rm-f "/etc/static")
152 (rm-f "/etc/static") 156 (symlink etc "/etc/static")
153 (symlink etc "/etc/static") 157 (for-each (lambda (file)
154 (for-each (lambda (file) 158 (let ((target (string-append "/etc/" file))
155 ;; TODO: Handle 'shadow' specially so that changed 159 (source (string-append "/etc/static/" file)))
156 ;; password aren't lost. 160 (rm-f target)
157 (let ((target (string-append "/etc/" file)) 161
158 (source (string-append "/etc/static/" file))) 162 ;; Things such as /etc/sudoers must be regular files, not
159 (rm-f target) 163 ;; symlinks; furthermore, they could be modified behind our
160 (symlink source target))) 164 ;; back---e.g., with 'visudo'. Thus, make a copy instead of
161 (scandir etc 165 ;; symlinking them.
162 (lambda (file) 166 (if (file-is-directory? source)
163 (not (member file '("." "..")))) 167 (symlink source target)
164 168 (copy-file source target))
165 ;; The default is 'string-locale<?', but we don't have 169
166 ;; it when run from the initrd's statically-linked 170 ;; XXX: Dirty hack to meet sudo's expectations.
167 ;; Guile. 171 (when (string=? (basename target) "sudoers")
168 string<?)) 172 (chmod target #o440))))
169 173 (scandir etc
170 ;; Prevent ETC from being GC'd. 174 (lambda (file)
171 (rm-f "/var/guix/gcroots/etc-directory") 175 (not (member file '("." ".."))))
172 (symlink etc "/var/guix/gcroots/etc-directory"))) 176
177 ;; The default is 'string-locale<?', but we don't have
178 ;; it when run from the initrd's statically-linked
179 ;; Guile.
180 string<?))
181
182 ;; Prevent ETC from being GC'd.
183 (rm-f "/var/guix/gcroots/etc-directory")
184 (symlink etc "/var/guix/gcroots/etc-directory"))
173 185
174(define %setuid-directory 186(define %setuid-directory
175 ;; Place where setuid programs are stored. 187 ;; Place where setuid programs are stored.
176 "/run/setuid-programs") 188 "/run/setuid-programs")
177 189
190(define (link-or-copy source target)
191 "Attempt to make TARGET a hard link to SOURCE; if it fails, fall back to
192copy SOURCE to TARGET."
193 (catch 'system-error
194 (lambda ()
195 (link source target))
196 (lambda args
197 ;; Perhaps SOURCE and TARGET live in a different file system, so copy
198 ;; SOURCE.
199 (copy-file source target))))
200
178(define (activate-setuid-programs programs) 201(define (activate-setuid-programs programs)
179 "Turn PROGRAMS, a list of file names, into setuid programs stored under 202 "Turn PROGRAMS, a list of file names, into setuid programs stored under
180%SETUID-DIRECTORY." 203%SETUID-DIRECTORY."
181 (define (make-setuid-program prog) 204 (define (make-setuid-program prog)
182 (let ((target (string-append %setuid-directory 205 (let ((target (string-append %setuid-directory
183 "/" (basename prog)))) 206 "/" (basename prog))))
184 (catch 'system-error 207 (link-or-copy prog target)
185 (lambda ()
186 (link prog target))
187 (lambda args
188 ;; Perhaps PROG and TARGET live in a different file system, so copy
189 ;; PROG.
190 (copy-file prog target)))
191 (chown target 0 0) 208 (chown target 0 0)
192 (chmod target #o6555))) 209 (chmod target #o6555)))
193 210
@@ -204,6 +221,11 @@ numeric gid or #f."
204 221
205 (for-each make-setuid-program programs)) 222 (for-each make-setuid-program programs))
206 223
224(define (activate-/bin/sh shell)
225 "Change /bin/sh to point to SHELL."
226 (symlink shell "/bin/sh.new")
227 (rename-file "/bin/sh.new" "/bin/sh"))
228
207(define %current-system 229(define %current-system
208 ;; The system that is current (a symlink.) This is not necessarily the same 230 ;; The system that is current (a symlink.) This is not necessarily the same
209 ;; as the system we booted (aka. /run/booted-system) because we can re-build 231 ;; 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 e16896f8b89..a472259a4a0 100644
--- a/gnu/build/install.scm
+++ b/gnu/build/install.scm
@@ -56,18 +56,38 @@ MOUNT-POINT."
56 "Evaluate DIRECTIVE, an sexp describing a file or directory to create under 56 "Evaluate DIRECTIVE, an sexp describing a file or directory to create under
57directory TARGET." 57directory TARGET."
58 (let loop ((directive directive)) 58 (let loop ((directive directive))
59 (match directive 59 (catch 'system-error
60 (('directory name) 60 (lambda ()
61 (mkdir-p (string-append target name))) 61 (match directive
62 (('directory name uid gid) 62 (('directory name)
63 (let ((dir (string-append target name))) 63 (mkdir-p (string-append target name)))
64 (mkdir-p dir) 64 (('directory name uid gid)
65 (chown dir uid gid))) 65 (let ((dir (string-append target name)))
66 (('directory name uid gid mode) 66 (mkdir-p dir)
67 (loop `(directory ,name ,uid ,gid)) 67 (chown dir uid gid)))
68 (chmod (string-append target name) mode)) 68 (('directory name uid gid mode)
69 ((new '-> old) 69 (loop `(directory ,name ,uid ,gid))
70 (symlink old (string-append target new)))))) 70 (chmod (string-append target name) mode))
71 ((new '-> old)
72 (let try ()
73 (catch 'system-error
74 (lambda ()
75 (symlink old (string-append target new)))
76 (lambda args
77 ;; When doing 'guix system init' on the current '/', some
78 ;; symlinks may already exists. Override them.
79 (if (= EEXIST (system-error-errno args))
80 (begin
81 (delete-file (string-append target new))
82 (try))
83 (apply throw args))))))))
84 (lambda args
85 ;; Usually we can only get here when installing to an existing root,
86 ;; as with 'guix system init foo.scm /'.
87 (format (current-error-port)
88 "error: failed to evaluate directive: ~s~%"
89 directive)
90 (apply throw args)))))
71 91
72(define (directives store) 92(define (directives store)
73 "Return a list of directives to populate the root file system that will host 93 "Return a list of directives to populate the root file system that will host
@@ -93,7 +113,6 @@ STORE."
93 ("/var/guix/gcroots/current-system" -> "/run/current-system") 113 ("/var/guix/gcroots/current-system" -> "/run/current-system")
94 114
95 (directory "/bin") 115 (directory "/bin")
96 ("/bin/sh" -> "/run/current-system/profile/bin/bash")
97 (directory "/tmp" 0 0 #o1777) ; sticky bit 116 (directory "/tmp" 0 0 #o1777) ; sticky bit
98 117
99 (directory "/root" 0 0) ; an exception 118 (directory "/root" 0 0) ; an exception
@@ -106,6 +125,7 @@ includes /etc, /var, /run, /bin/sh, etc., and all the symlinks to SYSTEM."
106 (directives (%store-directory))) 125 (directives (%store-directory)))
107 126
108 ;; Add system generation 1. 127 ;; Add system generation 1.
128 (false-if-exception (delete-file "/var/guix/profiles/system-1-link"))
109 (symlink system 129 (symlink system
110 (string-append target "/var/guix/profiles/system-1-link"))) 130 (string-append target "/var/guix/profiles/system-1-link")))
111 131
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
index 21ee58ad506..fbc683c798b 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."
221(define (load-linux-module* file) 221(define (load-linux-module* file)
222 "Load Linux module from FILE, the name of a `.ko' file." 222 "Load Linux module from FILE, the name of a `.ko' file."
223 (define (slurp module) 223 (define (slurp module)
224 ;; TODO: Use 'mmap' to reduce memory usage.
224 (call-with-input-file file get-bytevector-all)) 225 (call-with-input-file file get-bytevector-all))
225 226
226 (load-linux-module (slurp file))) 227 (load-linux-module (slurp file)))
@@ -342,10 +343,11 @@ bailing out.~%root contents: ~s~%" (scandir "/"))
342 volatile-root? 343 volatile-root?
343 (mounts '())) 344 (mounts '()))
344 "This procedure is meant to be called from an initrd. Boot a system by 345 "This procedure is meant to be called from an initrd. Boot a system by
345first loading LINUX-MODULES, then setting up QEMU guest networking if 346first loading LINUX-MODULES (a list of absolute file names of '.ko' files),
346QEMU-GUEST-NETWORKING? is true, mounting the file systems specified in MOUNTS, 347then setting up QEMU guest networking if QEMU-GUEST-NETWORKING? is true,
347and finally booting into the new root if any. The initrd supports kernel 348mounting the file systems specified in MOUNTS, and finally booting into the
348command-line options '--load', '--root', and '--repl'. 349new root if any. The initrd supports kernel command-line options '--load',
350'--root', and '--repl'.
349 351
350Mount the root file system, specified by the '--root' command-line argument, 352Mount the root file system, specified by the '--root' command-line argument,
351if any. 353if any.
@@ -383,9 +385,7 @@ to it are lost."
383 (start-repl)) 385 (start-repl))
384 386
385 (display "loading kernel modules...\n") 387 (display "loading kernel modules...\n")
386 (for-each (compose load-linux-module* 388 (for-each load-linux-module* linux-modules)
387 (cut string-append "/modules/" <>))
388 linux-modules)
389 389
390 (when qemu-guest-networking? 390 (when qemu-guest-networking?
391 (unless (configure-qemu-networking) 391 (unless (configure-qemu-networking)
diff --git a/gnu/build/linux-initrd.scm b/gnu/build/linux-initrd.scm
index bf60137e8fa..54639bd319b 100644
--- a/gnu/build/linux-initrd.scm
+++ b/gnu/build/linux-initrd.scm
@@ -17,9 +17,15 @@
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. 17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18 18
19(define-module (gnu build linux-initrd) 19(define-module (gnu build linux-initrd)
20 #:use-module (guix build utils)
21 #:use-module (guix build store-copy)
22 #:use-module (system base compile)
23 #:use-module (rnrs bytevectors)
24 #:use-module ((system foreign) #:select (sizeof))
20 #:use-module (ice-9 popen) 25 #:use-module (ice-9 popen)
21 #:use-module (ice-9 ftw) 26 #:use-module (ice-9 ftw)
22 #:export (write-cpio-archive)) 27 #:export (write-cpio-archive
28 build-initrd))
23 29
24;;; Commentary: 30;;; Commentary:
25;;; 31;;;
@@ -69,4 +75,68 @@ COMPRESS? is true, compress it using GZIP. On success, return OUTPUT."
69 output)) 75 output))
70 output)))) 76 output))))
71 77
78(define (cache-compiled-file-name file)
79 "Return the file name of the in-cache .go file for FILE, relative to the
80current directory.
81
82This is similar to what 'compiled-file-name' in (system base compile) does."
83 (let loop ((file file))
84 (let ((target (false-if-exception (readlink file))))
85 (if target
86 (loop target)
87 (format #f ".cache/guile/ccache/~a-~a-~a-~a/~a"
88 (effective-version)
89 (if (eq? (native-endianness) (endianness little))
90 "LE"
91 "BE")
92 (sizeof '*)
93 (effective-version)
94 file)))))
95
96(define (compile-to-cache file)
97 "Compile FILE to the cache."
98 (let ((compiled-file (cache-compiled-file-name file)))
99 (mkdir-p (dirname compiled-file))
100 (compile-file file
101 #:opts %auto-compilation-options
102 #:output-file compiled-file)))
103
104(define* (build-initrd output
105 #:key
106 guile init
107 (references-graphs '())
108 (cpio "cpio")
109 (gzip "gzip"))
110 "Write an initial RAM disk (initrd) to OUTPUT. The initrd starts the script
111at INIT, running GUILE. It contains all the items referred to by
112REFERENCES-GRAPHS."
113 (mkdir "contents")
114
115 ;; Copy the closures of all the items referenced in REFERENCES-GRAPHS.
116 (populate-store references-graphs "contents")
117
118 (with-directory-excursion "contents"
119 ;; Make '/init'.
120 (symlink init "init")
121
122 ;; Compile it.
123 (compile-to-cache "init")
124
125 ;; Allow Guile to find out where it is (XXX). See
126 ;; 'guile-relocatable.patch'.
127 (mkdir-p "proc/self")
128 (symlink (string-append guile "/bin/guile") "proc/self/exe")
129 (readlink "proc/self/exe")
130
131 ;; Reset the timestamps of all the files that will make it in the initrd.
132 (for-each (lambda (file)
133 (unless (eq? 'symlink (stat:type (lstat file)))
134 (utime file 0 0 0 0)))
135 (find-files "." ".*"))
136
137 (write-cpio-archive output "."
138 #:cpio cpio #:gzip gzip))
139
140 (delete-file-recursively "contents"))
141
72;;; linux-initrd.scm ends here 142;;; linux-initrd.scm ends here
diff --git a/gnu/packages/abiword.scm b/gnu/packages/abiword.scm
new file mode 100644
index 00000000000..82a289e7125
--- /dev/null
+++ b/gnu/packages/abiword.scm
@@ -0,0 +1,107 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 Marek Benc <merkur32@gmail.com>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (gnu packages abiword)
20 #:use-module ((guix licenses)
21 #:renamer (symbol-prefix-proc 'license:))
22 #:use-module (guix packages)
23 #:use-module (guix download)
24 #:use-module (guix build-system gnu)
25 #:use-module (gnu packages)
26 #:use-module (gnu packages boost)
27 #:use-module (gnu packages compression)
28 #:use-module (gnu packages enchant)
29 #:use-module (gnu packages fribidi)
30 #:use-module (gnu packages fontutils)
31 #:use-module (gnu packages glib)
32 #:use-module (gnu packages gnome)
33 #:use-module (gnu packages gtk)
34 #:use-module (gnu packages image)
35 #:use-module (gnu packages ots)
36 #:use-module (gnu packages popt)
37 #:use-module (gnu packages pkg-config)
38 #:use-module (gnu packages readline)
39 #:use-module (gnu packages wv)
40 #:use-module (gnu packages xml))
41
42(define-public abiword
43 (package
44 (name "abiword")
45 (version "2.8.6")
46 (source
47 (origin
48 (method url-fetch)
49 (uri
50 (string-append "http://abisource.org/downloads/" name "/" version
51 "/source/" name "-" version ".tar.gz"))
52 (sha256
53 (base32 "059sd2apxdmcacc4pll880i7vm18h0kyjsq299m1mz3c7ak8k46r"))
54 (patches
55 (list
56 (search-patch "abiword-wmf-version-lookup-fix.patch")
57 (search-patch "abiword-no-include-glib-internal-headers.patch")
58 (search-patch "abiword-explictly-cast-bools.patch")
59 (search-patch "abiword-use-proper-png-api.patch")
60 (search-patch "abiword-pass-no-undefined-to-linker.patch")
61 (search-patch "abiword-link-plugins-against-backend.patch")))))
62
63 (build-system gnu-build-system)
64 (arguments ;; NOTE: rsvg is disabled, since Abiword
65 `(#:configure-flags ;; supports it directly, and its BS is broken.
66 (list
67 "--enable-clipart" ;; TODO: The following plugins have unresolved
68 "--enable-templates" ;; dependencies: aiksaurus, grammar, wpg, gda,
69 (string-append ;; wordperfect, psion, mathview, goffice.
70 "--enable-plugins="
71 "applix " "babelfish " "bmp " "clarisworks " "collab " "command "
72 "docbook " "eml " "freetranslation " "garble " "gdict " "gimp "
73 "google " "hancom " "hrtext " "iscii " "kword " "latex "
74 "loadbindings " "mht " "mif " "mswrite " "opendocument "
75 "openwriter " "openxml " "opml " "ots " "paint " "passepartout "
76 "pdb " "pdf " "presentation " "s5 " "sdw " "t602 " "urldict "
77 "wikipedia " "wmf " "wml " "xslfo"))))
78 (inputs
79 `(("boost" ,boost)
80 ("enchant" ,enchant)
81 ("fontconfig" ,fontconfig)
82 ("fribidi" ,fribidi)
83 ("glib" ,glib)
84 ("gtk+" ,gtk+-2)
85 ("libglade" ,libglade)
86 ("libgsf" ,libgsf)
87 ("libjpeg" ,libjpeg)
88 ("libpng" ,libpng)
89 ("librsvg" ,librsvg)
90 ("libwmf" ,libwmf)
91 ("libxml2" ,libxml2)
92 ("ots" ,ots)
93 ("popt" ,popt)
94 ("readline" ,readline)
95 ("wv" ,wv)
96 ("zlib" ,zlib)))
97 (native-inputs
98 `(("intltool" ,intltool)
99 ("glib:bin" ,glib "bin")
100 ("pkg-config" ,pkg-config)))
101 (home-page "http://abisource.org/")
102 (synopsis "Word processing program")
103 (description
104 "AbiWord is a word processing program. It is rapidly becoming a state
105of the art word processor, with lots of features useful for your daily work,
106personal needs, or for just some good old typing fun.")
107 (license license:gpl2+)))
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 4d60c17989f..a255ff1b743 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -36,10 +36,8 @@
36 #:use-module (gnu packages gettext) 36 #:use-module (gnu packages gettext)
37 #:use-module (gnu packages perl) 37 #:use-module (gnu packages perl)
38 #:use-module (gnu packages tcl) 38 #:use-module (gnu packages tcl)
39 #:use-module ((gnu packages base)
40 #:select (tar))
41 #:use-module ((gnu packages compression) 39 #:use-module ((gnu packages compression)
42 #:select (gzip)) 40 #:renamer (symbol-prefix-proc 'c:))
43 #:use-module ((gnu packages openssl) 41 #:use-module ((gnu packages openssl)
44 #:renamer (symbol-prefix-proc 'o:)) 42 #:renamer (symbol-prefix-proc 'o:))
45 #:use-module (gnu packages bison) 43 #:use-module (gnu packages bison)
@@ -52,6 +50,7 @@
52 #:use-module (gnu packages pciutils) 50 #:use-module (gnu packages pciutils)
53 #:use-module (gnu packages libusb) 51 #:use-module (gnu packages libusb)
54 #:use-module (gnu packages libftdi) 52 #:use-module (gnu packages libftdi)
53 #:use-module (gnu packages image)
55 #:use-module (gnu packages xorg)) 54 #:use-module (gnu packages xorg))
56 55
57(define-public dmd 56(define-public dmd
@@ -309,7 +308,7 @@ allow automatic login and starting any app.")
309 '("services" "protocols" "rpc"))) 308 '("services" "protocols" "rpc")))
310 #t)))) 309 #t))))
311 (native-inputs `(("tar" ,tar) 310 (native-inputs `(("tar" ,tar)
312 ("gzip" ,gzip))) 311 ("gzip" ,c:gzip)))
313 (synopsis "IANA protocol, port, and RPC number assignments") 312 (synopsis "IANA protocol, port, and RPC number assignments")
314 (description 313 (description
315 "This package provides the /etc/services, /etc/protocols, and /etc/rpc 314 "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
929characters (such as \"$\") get replaced with \"_\". ISO 8859-1 (Latin-1) 928characters (such as \"$\") get replaced with \"_\". ISO 8859-1 (Latin-1)
930characters can be replaced as well, as can UTF-8 characters.") 929characters can be replaced as well, as can UTF-8 characters.")
931 (license bsd-3))) 930 (license bsd-3)))
931
932(define-public testdisk
933 (package
934 (name "testdisk")
935 (version "6.14")
936 (source (origin
937 (method url-fetch)
938 (uri (string-append "http://www.cgsecurity.org/testdisk-"
939 version ".tar.bz2"))
940 (sha256
941 (base32
942 "0v1jap83f5h99zv01v3qmqm160d36n4ysi0gyq7xzb3mqgmw75x5"))))
943 (build-system gnu-build-system)
944 (inputs
945 `(;; ("ntfs" ,ntfs)
946 ("util-linux" ,util-linux)
947 ("openssl" ,o:openssl)
948 ("zlib" ,c:zlib)
949 ("e2fsprogs" ,e2fsprogs)
950 ("libjpeg" ,libjpeg)
951 ("ncurses" ,ncurses)))
952 (home-page "http://www.cgsecurity.org/wiki/TestDisk")
953 (synopsis "Data recovery tool")
954 (description
955 "TestDisk is a program for data recovery, primarily designed to help
956recover lost partitions and/or make non-booting disks bootable again.")
957 (license gpl2+)))
958
959(define-public direvent
960 (package
961 (name "direvent")
962 (version "5.0")
963 (source (origin
964 (method url-fetch)
965 (uri (string-append "mirror://gnu/direvent/direvent-"
966 version ".tar.gz"))
967 (sha256
968 (base32
969 "1i14131y6m8wvirz6piw4zxz2q1kbpl0lniv5kl55rx4k372dg8z"))
970 (modules '((guix build utils)))
971 (snippet '(substitute* "tests/testsuite"
972 (("#![[:blank:]]?/bin/sh")
973 "#!$SHELL")))))
974 (build-system gnu-build-system)
975 (arguments
976 '(#:phases (alist-cons-before
977 'build 'patch-/bin/sh
978 (lambda* (#:key inputs #:allow-other-keys)
979 ;; Use the right shell when executing the watcher.
980 (let ((bash (assoc-ref inputs "bash")))
981 (substitute* "src/direvent.c"
982 (("\"/bin/sh\"")
983 (string-append "\"" bash "/bin/sh\"")))))
984 %standard-phases)))
985 (home-page "http://www.gnu.org/software/direvent/")
986 (synopsis "Daemon to monitor directories for events such as file removal")
987 (description
988 "A daemon that monitors directories for events, such as creating,
989deleting or modifying files. It can monitor different sets of directories for
990different events. When an event is detected, direvent calls a specified
991external program with information about the event, such as the location
992within the file system where it occurred. Thus, \"direvent\" provides an easy
993way to react immediately if given files undergo changes, for example, to
994track changes in important system configuration files.")
995 (license gpl3+)))
diff --git a/gnu/packages/apl.scm b/gnu/packages/apl.scm
index a08886c252c..7da3b5eb4ae 100644
--- a/gnu/packages/apl.scm
+++ b/gnu/packages/apl.scm
@@ -24,7 +24,7 @@
24 #:use-module (guix build-system gnu) 24 #:use-module (guix build-system gnu)
25 #:use-module (gnu packages gettext) 25 #:use-module (gnu packages gettext)
26 #:use-module (gnu packages maths) 26 #:use-module (gnu packages maths)
27 #:use-module (gnu packages sqlite) 27 #:use-module (gnu packages databases)
28 #:use-module (gnu packages readline)) 28 #:use-module (gnu packages readline))
29 29
30(define-public apl 30(define-public apl
diff --git a/gnu/packages/bdb.scm b/gnu/packages/bdb.scm
deleted file mode 100644
index e82a6833321..00000000000
--- a/gnu/packages/bdb.scm
+++ /dev/null
@@ -1,68 +0,0 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2012 Andreas Enge <andreas@enge.fr>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (gnu packages bdb)
20 #:use-module (gnu packages)
21 #:use-module (guix licenses)
22 #:use-module (guix packages)
23 #:use-module (guix download)
24 #:use-module (guix build-system gnu))
25
26(define-public bdb
27 (package
28 (name "bdb")
29 (version "5.3.21")
30 (source (origin
31 (method url-fetch)
32 (uri (string-append "http://download.oracle.com/berkeley-db/db-" version
33 ".tar.gz"))
34 (sha256 (base32
35 "1f2g2612lf8djbwbwhxsvmffmf9d7693kh2l20195pqp0f9jmnfx"))))
36 (build-system gnu-build-system)
37 (outputs '("out" ; programs, libraries, headers
38 "doc")) ; 94 MiB of HTML docs
39 (arguments
40 '(#:tests? #f ; no check target available
41 #:phases
42 (alist-replace
43 'configure
44 (lambda* (#:key outputs #:allow-other-keys)
45 (let ((out (assoc-ref outputs "out"))
46 (doc (assoc-ref outputs "doc")))
47 ;; '--docdir' is not honored, so we need to patch.
48 (substitute* "dist/Makefile.in"
49 (("docdir[[:blank:]]*=.*")
50 (string-append "docdir = " doc "/share/doc/bdb")))
51
52 (zero?
53 (system* "./dist/configure"
54 (string-append "--prefix=" out)
55 (string-append "CONFIG_SHELL=" (which "bash"))
56 (string-append "SHELL=" (which "bash"))
57
58 ;; The compatibility mode is needed by some packages,
59 ;; notably iproute2.
60 "--enable-compat185"))))
61 %standard-phases)))
62 (synopsis "db, the Berkeley database")
63 (description
64 "Berkeley DB is an embeddable database allowing developers the choice of
65SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
66 (license (bsd-style "file://LICENSE"
67 "See LICENSE in the distribution."))
68 (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 6887ba61678..11e8d2bc17b 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -1,5 +1,5 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> 3;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
4;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> 4;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
5;;; 5;;;
@@ -264,14 +264,14 @@ some compression ratio).")
264(define-public lzip 264(define-public lzip
265 (package 265 (package
266 (name "lzip") 266 (name "lzip")
267 (version "1.15") 267 (version "1.16")
268 (source (origin 268 (source (origin
269 (method url-fetch) 269 (method url-fetch)
270 (uri (string-append "mirror://savannah/lzip/lzip-" 270 (uri (string-append "mirror://savannah/lzip/lzip-"
271 version ".tar.gz")) 271 version ".tar.gz"))
272 (sha256 272 (sha256
273 (base32 273 (base32
274 "1dh5vmj5apizfawnsm50y7z064yx7cz3313przph16gwd3dgrlvw")))) 274 "0l9724rw1l3hg2ldr3n7ihqich4m9nc6y7l302bvdj4jmxdw530j"))))
275 (build-system gnu-build-system) 275 (build-system gnu-build-system)
276 (home-page "http://www.nongnu.org/lzip/lzip.html") 276 (home-page "http://www.nongnu.org/lzip/lzip.html")
277 (synopsis "Lossless data compressor based on the LZMA algorithm") 277 (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 00000000000..01d9cbdd62c
--- /dev/null
+++ b/gnu/packages/databases.scm
@@ -0,0 +1,283 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2012 Andreas Enge <andreas@enge.fr>
4;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
5;;; Copyright © 2014 David Thompson <davet@gnu.org>
6;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
7;;;
8;;; This file is part of GNU Guix.
9;;;
10;;; GNU Guix is free software; you can redistribute it and/or modify it
11;;; under the terms of the GNU General Public License as published by
12;;; the Free Software Foundation; either version 3 of the License, or (at
13;;; your option) any later version.
14;;;
15;;; GNU Guix is distributed in the hope that it will be useful, but
16;;; WITHOUT ANY WARRANTY; without even the implied warranty of
17;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18;;; GNU General Public License for more details.
19;;;
20;;; You should have received a copy of the GNU General Public License
21;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
22
23(define-module (gnu packages databases)
24 #:use-module (gnu packages)
25 #:use-module (gnu packages perl)
26 #:use-module (gnu packages linux)
27 #:use-module (gnu packages openssl)
28 #:use-module (gnu packages compression)
29 #:use-module (gnu packages ncurses)
30 #:use-module (gnu packages readline)
31 #:use-module (gnu packages emacs)
32 #:use-module (gnu packages check)
33 #:use-module (gnu packages algebra)
34 #:use-module (gnu packages curl)
35 #:use-module (gnu packages gnupg)
36 #:use-module (gnu packages python)
37 #:use-module ((guix licenses)
38 #:select (gpl2 gpl3+ lgpl3+ x11-style bsd-style
39 public-domain))
40 #:use-module (guix packages)
41 #:use-module (guix download)
42 #:use-module (guix build-system gnu)
43 #:use-module (srfi srfi-26)
44 #:use-module (ice-9 match))
45
46(define-public bdb
47 (package
48 (name "bdb")
49 (version "5.3.21")
50 (source (origin
51 (method url-fetch)
52 (uri (string-append "http://download.oracle.com/berkeley-db/db-" version
53 ".tar.gz"))
54 (sha256 (base32
55 "1f2g2612lf8djbwbwhxsvmffmf9d7693kh2l20195pqp0f9jmnfx"))))
56 (build-system gnu-build-system)
57 (outputs '("out" ; programs, libraries, headers
58 "doc")) ; 94 MiB of HTML docs
59 (arguments
60 '(#:tests? #f ; no check target available
61 #:phases
62 (alist-replace
63 'configure
64 (lambda* (#:key outputs #:allow-other-keys)
65 (let ((out (assoc-ref outputs "out"))
66 (doc (assoc-ref outputs "doc")))
67 ;; '--docdir' is not honored, so we need to patch.
68 (substitute* "dist/Makefile.in"
69 (("docdir[[:blank:]]*=.*")
70 (string-append "docdir = " doc "/share/doc/bdb")))
71
72 (zero?
73 (system* "./dist/configure"
74 (string-append "--prefix=" out)
75 (string-append "CONFIG_SHELL=" (which "bash"))
76 (string-append "SHELL=" (which "bash"))
77
78 ;; The compatibility mode is needed by some packages,
79 ;; notably iproute2.
80 "--enable-compat185"))))
81 %standard-phases)))
82 (synopsis "db, the Berkeley database")
83 (description
84 "Berkeley DB is an embeddable database allowing developers the choice of
85SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
86 (license (bsd-style "file://LICENSE"
87 "See LICENSE in the distribution."))
88 (home-page
89 "http://www.oracle.com/us/products/database/berkeley-db/overview/index.html")))
90
91(define-public mysql
92 (package
93 (name "mysql")
94 (version "5.1.73")
95 (source (origin
96 (method url-fetch)
97 (uri (string-append
98 "http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-"
99 version ".tar.gz"))
100 (sha256
101 (base32
102 "1dfwi4ck0vq6sdci6gz0031s7zz5lc3pddqlgm0292s00l9y5sq5"))))
103 (build-system gnu-build-system)
104 (inputs
105 `(("procps" ,procps)
106 ("openssl" ,openssl)
107 ("perl" ,perl)
108 ("zlib" ,zlib)
109 ("ncurses" ,ncurses)))
110 (arguments
111 '(#:modules ((guix build gnu-build-system)
112 (guix build utils)
113 (ice-9 ftw)) ; for "rm -rf"
114 #:phases (alist-cons-after
115 'install 'clean-up
116 (lambda* (#:key outputs #:allow-other-keys)
117 ;; Remove the 112 MiB of tests that get installed.
118 (let ((out (assoc-ref outputs "out")))
119 (define (rm-rf dir)
120 (file-system-fold (const #t) ; enter?
121 (lambda (file stat result) ; leaf
122 (delete-file file))
123 (const #t) ; down
124 (lambda (dir stat result) ; up
125 (rmdir dir))
126 (const #t)
127 (lambda (file stat errno result)
128 (format (current-error-port)
129 "error: ~a: ~a~%"
130 file (strerror errno)))
131 #t
132 (string-append out "/" dir)))
133 (rm-rf "mysql-test")
134 (rm-rf "sql-bench")
135
136 ;; Compress the 14 MiB Info file.
137 (zero?
138 (system* "gzip" "--best"
139 (string-append out "/share/info/mysql.info")))))
140 %standard-phases)))
141 (home-page "http://www.mysql.com/")
142 (synopsis "A fast, easy to use, and popular database")
143 (description
144 "MySQL is a fast, reliable, and easy to use relational database
145management system that supports the standardized Structured Query
146Language.")
147 (license gpl2)))
148
149(define-public postgresql
150 (package
151 (name "postgresql")
152 (version "9.3.5")
153 (source (origin
154 (method url-fetch)
155 (uri (string-append "http://ftp.postgresql.org/pub/source/v"
156 version "/postgresql-" version ".tar.gz"))
157 (sha256
158 (base32
159 "08kga00izykgvnx7hn995wc4zjqslspapaa8z63045p1ya14mr4g"))))
160 (build-system gnu-build-system)
161 (inputs
162 `(("readline" ,readline)
163 ("zlib" ,zlib)))
164 (home-page "http://www.postgresql.org/")
165 (synopsis "Powerful object-relational database system")
166 (description
167 "PostgreSQL is a powerful object-relational database system. It is fully
168ACID compliant, has full support for foreign keys, joins, views, triggers, and
169stored procedures (in multiple languages). It includes most SQL:2008 data
170types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, and
171TIMESTAMP. It also supports storage of binary large objects, including
172pictures, sounds, or video.")
173 (license (x11-style "file://COPYRIGHT"))))
174
175(define-public recutils
176 (package
177 (name "recutils")
178 (version "1.7")
179 (source (origin
180 (method url-fetch)
181 (uri (string-append "mirror://gnu/recutils/recutils-"
182 version ".tar.gz"))
183 (sha256
184 (base32
185 "0cdwa4094x3yx7vn98xykvnlp9rngvd58d19vs3vh5hrvggccg93"))))
186 (build-system gnu-build-system)
187
188 ;; Running tests in parallel leads to test failures and crashes in
189 ;; torture/utils.
190 (arguments '(#:parallel-tests? #f))
191
192 (native-inputs `(("emacs" ,emacs)
193 ("bc" ,bc)))
194
195 ;; TODO: Add more optional inputs.
196 ;; FIXME: Our Bash doesn't have development headers (need for the 'readrec'
197 ;; built-in command), but it's not clear how to get them installed.
198 ;; See <https://lists.gnu.org/archive/html/bug-bash/2014-03/msg00125.html>.
199 (inputs `(("curl" ,curl)
200 ("libgcrypt" ,libgcrypt)
201 ("check" ,check)))
202 (synopsis "Manipulate plain text files as databases")
203 (description
204 "GNU Recutils is a set of tools and libraries for creating and
205manipulating text-based, human-editable databases. Despite being text-based,
206databases created with Recutils carry all of the expected features such as
207unique fields, primary keys, time stamps and more. Many different field types
208are supported, as is encryption.")
209 (license gpl3+)
210 (home-page "http://www.gnu.org/software/recutils/")))
211
212(define-public sqlite
213 (package
214 (name "sqlite")
215 (version "3.8.4.3")
216 (source (origin
217 (method url-fetch)
218 ;; TODO: Download from sqlite.org once this bug :
219 ;; http://lists.gnu.org/archive/html/bug-guile/2013-01/msg00027.html
220 ;; has been fixed.
221 (uri (let ((numeric-version
222 (match (string-split version #\.)
223 ((first-digit other-digits ...)
224 (string-append first-digit
225 (string-pad-right
226 (string-concatenate
227 (map (cut string-pad <> 2 #\0)
228 other-digits))
229 6 #\0))))))
230 (string-append
231 "mirror://sourceforge/sqlite.mirror/SQLite%20" version
232 "/sqlite-autoconf-" numeric-version ".tar.gz")))
233 (sha256
234 (base32
235 "0rcdsk5sz34w8vy0g5yhfms4saiq81i872jxx5m5sjij7bi9bsg0"))
236 (patches
237 (list (search-patch "sqlite-large-page-size-fix.patch")))))
238 (build-system gnu-build-system)
239 (home-page "http://www.sqlite.org/")
240 (synopsis "The SQLite database management system")
241 (description
242 "SQLite is a software library that implements a self-contained, serverless,
243zero-configuration, transactional SQL database engine. SQLite is the most
244widely deployed SQL database engine in the world. The source code for SQLite is
245in the public domain.")
246 (license public-domain)))
247
248(define-public tdb
249 (package
250 (name "tdb")
251 (version "1.3.0")
252 (source (origin
253 (method url-fetch)
254 (uri (string-append "http://samba.org/ftp/tdb/tdb-"
255 version ".tar.gz"))
256 (sha256
257 (base32
258 "085sd2kii72fr0c4pdc7c7m0xk34nc66wnjp21c83dss826y9gh4"))))
259 (build-system gnu-build-system)
260 (arguments
261 '(#:phases (alist-replace
262 'configure
263 (lambda* (#:key outputs #:allow-other-keys)
264 (let ((out (assoc-ref outputs "out")))
265 ;; The 'configure' script is a wrapper for Waf and
266 ;; doesn't recognize things like '--enable-fast-install'.
267 (zero? (system* "./configure"
268 (string-append "--prefix=" out)))))
269 %standard-phases)))
270 (native-inputs
271 `(;; TODO: Build the documentation.
272 ;; ("docbook-xsl" ,docbook-xsl)
273 ;; ("libxml2" ,libxml2)
274 ;; ("libxslt" ,libxslt)
275 ("python" ,python-2))) ;for the Waf build system
276 (home-page "http://tdb.samba.org/")
277 (synopsis "TDB, the trivial database")
278 (description
279 "TDB is a Trivial Database. In concept, it is very much like GDBM,
280and BSD's DB except that it allows multiple simultaneous writers and uses
281locking internally to keep writers from trampling on each other. TDB is also
282extremely small.")
283 (license lgpl3+)))
diff --git a/gnu/packages/dc.scm b/gnu/packages/dc.scm
index 0cb7c5b4f0e..0e65d886d0f 100644
--- a/gnu/packages/dc.scm
+++ b/gnu/packages/dc.scm
@@ -23,7 +23,7 @@
23 #:use-module (gnu packages gnutls) 23 #:use-module (gnu packages gnutls)
24 #:use-module (gnu packages ncurses) 24 #:use-module (gnu packages ncurses)
25 #:use-module (gnu packages pkg-config) 25 #:use-module (gnu packages pkg-config)
26 #:use-module (gnu packages sqlite) 26 #:use-module (gnu packages databases)
27 #:use-module (guix packages) 27 #:use-module (guix packages)
28 #:use-module (guix download) 28 #:use-module (guix download)
29 #:use-module (guix build-system gnu) 29 #:use-module (guix build-system gnu)
diff --git a/gnu/packages/enchant.scm b/gnu/packages/enchant.scm
new file mode 100644
index 00000000000..c9e49d9551c
--- /dev/null
+++ b/gnu/packages/enchant.scm
@@ -0,0 +1,61 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 Marek Benc <merkur32@gmail.com>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (gnu packages enchant)
20 #:use-module (gnu packages)
21 #:use-module (gnu packages aspell)
22 #:use-module (gnu packages glib)
23 #:use-module (gnu packages pkg-config)
24 #:use-module (guix packages)
25 #:use-module (guix download)
26 #:use-module (guix build-system gnu)
27 #:use-module (guix licenses))
28
29(define-public enchant
30 (package
31 (name "enchant")
32 (version "1.6.0")
33 (source
34 (origin
35 (method url-fetch)
36 (uri
37 (string-append "http://www.abisource.com/downloads/" name "/" version
38 "/" name "-" version ".tar.gz"))
39 (sha256
40 (base32 "0zq9yw1xzk8k9s6x83n1f9srzcwdavzazn3haln4nhp9wxxrxb1g"))))
41
42 (build-system gnu-build-system)
43 (inputs
44 `(("aspell" ,aspell) ;; Currently, the only supported backend in Guix
45 ("glib" ,glib))) ;; is aspell. (This information might be old)
46 (native-inputs
47 `(("glib:bin" ,glib "bin")
48 ("pkg-config" ,pkg-config)))
49
50 (synopsis "Multi-backend spell-checking library wrapper")
51 (description
52 "On the surface, Enchant appears to be a generic spell checking library.
53Looking closer, you'll see the Enchant is more-or-less a fancy wrapper around
54the dlopen() system call.
55
56Enchant steps in to provide uniformity and conformity on top of these libraries,
57and implement certain features that may be lacking in any individual provider
58library. Everything should \"just work\" for any and every definition of \"just
59working.\"")
60 (home-page "http://www.abisource.com/projects/enchant")
61 (license lgpl2.1+)))
diff --git a/gnu/packages/freeipmi.scm b/gnu/packages/freeipmi.scm
index 46240123c1a..5ce87ae8423 100644
--- a/gnu/packages/freeipmi.scm
+++ b/gnu/packages/freeipmi.scm
@@ -27,14 +27,14 @@
27(define-public freeipmi 27(define-public freeipmi
28 (package 28 (package
29 (name "freeipmi") 29 (name "freeipmi")
30 (version "1.4.1") 30 (version "1.4.5")
31 (source (origin 31 (source (origin
32 (method url-fetch) 32 (method url-fetch)
33 (uri (string-append "mirror://gnu/freeipmi/freeipmi-" 33 (uri (string-append "mirror://gnu/freeipmi/freeipmi-"
34 version ".tar.gz")) 34 version ".tar.gz"))
35 (sha256 35 (sha256
36 (base32 36 (base32
37 "1qpr4h46zmbk82w4fpijimzsdpgyr0fdnsinpsp5cvxy5pcikbd6")))) 37 "033zakrk3kvi4y41kslicr90b3yb2kj052cl6nbja7ybn70y9nkz"))))
38 (build-system gnu-build-system) 38 (build-system gnu-build-system)
39 (inputs 39 (inputs
40 `(("readline" ,readline) ("libgcrypt" ,libgcrypt))) 40 `(("readline" ,readline) ("libgcrypt" ,libgcrypt)))
diff --git a/gnu/packages/fribidi.scm b/gnu/packages/fribidi.scm
new file mode 100644
index 00000000000..eb13aa1c6d8
--- /dev/null
+++ b/gnu/packages/fribidi.scm
@@ -0,0 +1,45 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 Marek Benc <merkur32@gmail.com>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (gnu packages fribidi)
20 #:use-module (guix packages)
21 #:use-module (guix download)
22 #:use-module (guix build-system gnu)
23 #:use-module (guix licenses))
24
25(define-public fribidi
26 (package
27 (name "fribidi")
28 (version "0.19.6")
29 (source
30 (origin
31 (method url-fetch)
32 (uri
33 (string-append "http://fribidi.org/download/" name "-" version
34 ".tar.bz2"))
35 (sha256
36 (base32 "0zg1hpaml34ny74fif97j7ngrshlkl3wk3nja3gmlzl17i1bga6b"))))
37
38 (build-system gnu-build-system)
39 (synopsis "Implementation of the Unicode bidirectional algorithm")
40 (description
41 "GNU FriBidi is an implementation of the Unicode Bidirectional
42Algorithm. This algorithm is used to properly display text in left-to-right
43or right-to-left ordering as necessary.")
44 (home-page "http://fribidi.org/")
45 (license lgpl2.1+)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 84e09aaee74..f3c88c92d48 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -38,7 +38,7 @@
38 #:use-module (gnu packages readline) 38 #:use-module (gnu packages readline)
39 #:use-module (gnu packages xorg) 39 #:use-module (gnu packages xorg)
40 #:use-module (gnu packages pkg-config) 40 #:use-module (gnu packages pkg-config)
41 #:use-module (gnu packages sqlite) 41 #:use-module (gnu packages databases)
42 #:use-module (gnu packages sdl) 42 #:use-module (gnu packages sdl)
43 #:use-module (gnu packages texinfo) 43 #:use-module (gnu packages texinfo)
44 #:use-module (guix build-system gnu)) 44 #:use-module (guix build-system gnu))
diff --git a/gnu/packages/global.scm b/gnu/packages/global.scm
index e50a57f2e68..d43caf4f542 100644
--- a/gnu/packages/global.scm
+++ b/gnu/packages/global.scm
@@ -28,14 +28,14 @@
28(define-public global ; a global variable 28(define-public global ; a global variable
29 (package 29 (package
30 (name "global") 30 (name "global")
31 (version "6.3") 31 (version "6.3.2")
32 (source (origin 32 (source (origin
33 (method url-fetch) 33 (method url-fetch)
34 (uri (string-append "mirror://gnu/global/global-" 34 (uri (string-append "mirror://gnu/global/global-"
35 version ".tar.gz")) 35 version ".tar.gz"))
36 (sha256 36 (sha256
37 (base32 37 (base32
38 "1nzqqcry3mfha53n8j1grdg2dflp9gpg54qwlsrzq9sspwg78769")))) 38 "07iifpz00ch3drlscvk5v12j7bckwv6pk8040y81s1x14b0gf220"))))
39 (build-system gnu-build-system) 39 (build-system gnu-build-system)
40 (inputs `(("ncurses" ,ncurses) 40 (inputs `(("ncurses" ,ncurses)
41 ("libtool" ,libtool))) 41 ("libtool" ,libtool)))
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index e4ef3d48713..d5a1930bbe3 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -38,7 +38,7 @@
38 #:use-module (gnu packages perl) 38 #:use-module (gnu packages perl)
39 #:use-module (gnu packages pulseaudio) 39 #:use-module (gnu packages pulseaudio)
40 #:use-module (gnu packages python) 40 #:use-module (gnu packages python)
41 #:use-module (gnu packages sqlite) 41 #:use-module (gnu packages databases)
42 #:use-module (gnu packages video) 42 #:use-module (gnu packages video)
43 #:use-module (gnu packages xiph) 43 #:use-module (gnu packages xiph)
44 #:use-module ((guix licenses) 44 #:use-module ((guix licenses)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 06f62715c42..149720e5e80 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -19,6 +19,9 @@
19(define-module (gnu packages image) 19(define-module (gnu packages image)
20 #:use-module (gnu packages) 20 #:use-module (gnu packages)
21 #:use-module (gnu packages compression) 21 #:use-module (gnu packages compression)
22 #:use-module (gnu packages fontutils)
23 #:use-module (gnu packages pkg-config)
24 #:use-module (gnu packages xml)
22 #:use-module ((guix licenses) #:renamer (symbol-prefix-proc 'license:)) 25 #:use-module ((guix licenses) #:renamer (symbol-prefix-proc 'license:))
23 #:use-module (guix packages) 26 #:use-module (guix packages)
24 #:use-module (guix download) 27 #:use-module (guix download)
@@ -110,3 +113,36 @@ collection of tools for doing simple manipulations of TIFF images.")
110 (license (license:bsd-style "file://COPYRIGHT" 113 (license (license:bsd-style "file://COPYRIGHT"
111 "See COPYRIGHT in the distribution.")) 114 "See COPYRIGHT in the distribution."))
112 (home-page "http://www.libtiff.org/"))) 115 (home-page "http://www.libtiff.org/")))
116
117(define-public libwmf
118 (package
119 (name "libwmf")
120 (version "0.2.8.4")
121 (source
122 (origin
123 (method url-fetch)
124 (uri (string-append "mirror://sourceforge/wvware/"
125 name "/" version
126 "/" name "-" version ".tar.gz"))
127 (sha256
128 (base32 "1y3wba4q8pl7kr51212jwrsz1x6nslsx1gsjml1x0i8549lmqd2v"))))
129
130 (build-system gnu-build-system)
131 (inputs
132 `(("freetype" ,freetype)
133 ("libjpeg" ,libjpeg)
134 ("libpng",libpng)
135 ("libxml2" ,libxml2)
136 ("zlib" ,zlib)))
137 (native-inputs
138 `(("pkg-config" ,pkg-config)))
139 (synopsis "Library for reading images in the Microsoft WMF format")
140 (description
141 "libwmf is a library for reading vector images in Microsoft's native
142Windows Metafile Format (WMF) and for either (a) displaying them in, e.g., an X
143window; or (b) converting them to more standard/free file formats such as, e.g.,
144the W3C's XML-based Scaleable Vector Graphic (SVG) format.")
145 (home-page "http://wvware.sourceforge.net/libwmf.html")
146
147 ;; 'COPYING' is the GPLv2, but file headers say LGPLv2.0+.
148 (license license:lgpl2.0+)))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 442f80103a5..7be0d076ecf 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -30,7 +30,7 @@
30 #:use-module (gnu packages libusb) 30 #:use-module (gnu packages libusb)
31 #:use-module (gnu packages ncurses) 31 #:use-module (gnu packages ncurses)
32 #:use-module (gnu packages pciutils) 32 #:use-module (gnu packages pciutils)
33 #:use-module (gnu packages bdb) 33 #:use-module (gnu packages databases)
34 #:use-module (gnu packages perl) 34 #:use-module (gnu packages perl)
35 #:use-module (gnu packages pkg-config) 35 #:use-module (gnu packages pkg-config)
36 #:use-module (gnu packages python) 36 #:use-module (gnu packages python)
@@ -613,6 +613,9 @@ MIDI functionality to the Linux-based operating system.")
613 (arguments 613 (arguments
614 ;; XXX: Disable man page creation until we have DocBook. 614 ;; XXX: Disable man page creation until we have DocBook.
615 '(#:configure-flags (list "--disable-xmlto" 615 '(#:configure-flags (list "--disable-xmlto"
616
617 ;; The udev rule is responsible for restoring
618 ;; the volume.
616 (string-append "--with-udev-rules-dir=" 619 (string-append "--with-udev-rules-dir="
617 (assoc-ref %outputs "out") 620 (assoc-ref %outputs "out")
618 "/lib/udev/rules.d")) 621 "/lib/udev/rules.d"))
@@ -1397,7 +1400,13 @@ time.")
1397 (assoc-ref %outputs "out") 1400 (assoc-ref %outputs "out")
1398 "/etc/lvm") 1401 "/etc/lvm")
1399 "--enable-udev_sync" 1402 "--enable-udev_sync"
1400 "--enable-udev_rules") 1403 "--enable-udev_rules"
1404
1405 ;; Make sure programs such as 'dmsetup' can
1406 ;; find libdevmapper.so.
1407 (string-append "LDFLAGS=-Wl,-rpath="
1408 (assoc-ref %outputs "out")
1409 "/lib"))
1401 1410
1402 ;; The tests use 'mknod', which requires root access. 1411 ;; The tests use 'mknod', which requires root access.
1403 #:tests? #f)) 1412 #:tests? #f))
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index a85c120469b..92ffc22c14b 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -75,7 +75,8 @@ for configuration, scripting, and rapid prototyping.")
75 (uri (string-append "http://www.lua.org/ftp/lua-" 75 (uri (string-append "http://www.lua.org/ftp/lua-"
76 version ".tar.gz")) 76 version ".tar.gz"))
77 (sha256 77 (sha256
78 (base32 "0cskd4w0g6rdm2q8q3i4n1h3j8kylhs3rq8mxwl9vwlmlxbgqh16")))))) 78 (base32 "0cskd4w0g6rdm2q8q3i4n1h3j8kylhs3rq8mxwl9vwlmlxbgqh16"))
79 (patches (list (search-patch "lua51-liblua-so.patch")))))))
79 80
80(define-public luajit 81(define-public luajit
81 (package 82 (package
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index a9e862ac88b..2a742cdc56c 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -31,7 +31,7 @@
31 #:use-module (gnu packages guile) 31 #:use-module (gnu packages guile)
32 #:use-module (gnu packages linux) 32 #:use-module (gnu packages linux)
33 #:use-module (gnu packages m4) 33 #:use-module (gnu packages m4)
34 #:use-module (gnu packages mysql) 34 #:use-module (gnu packages databases)
35 #:use-module (gnu packages ncurses) 35 #:use-module (gnu packages ncurses)
36 #:use-module (gnu packages openssl) 36 #:use-module (gnu packages openssl)
37 #:use-module (gnu packages perl) 37 #:use-module (gnu packages perl)
@@ -43,7 +43,6 @@
43 #:use-module (gnu packages glib) 43 #:use-module (gnu packages glib)
44 #:use-module (gnu packages pkg-config) 44 #:use-module (gnu packages pkg-config)
45 #:use-module (gnu packages flex) 45 #:use-module (gnu packages flex)
46 #:use-module (gnu packages bdb)
47 #:use-module (gnu packages gdb) 46 #:use-module (gnu packages gdb)
48 #:use-module (gnu packages samba) 47 #:use-module (gnu packages samba)
49 #:use-module ((guix licenses) 48 #:use-module ((guix licenses)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 813480616e9..774686310f3 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -123,7 +123,7 @@ numbers.")
123(define-public glpk 123(define-public glpk
124 (package 124 (package
125 (name "glpk") 125 (name "glpk")
126 (version "4.54") 126 (version "4.55")
127 (source 127 (source
128 (origin 128 (origin
129 (method url-fetch) 129 (method url-fetch)
@@ -131,7 +131,7 @@ numbers.")
131 version ".tar.gz")) 131 version ".tar.gz"))
132 (sha256 132 (sha256
133 (base32 133 (base32
134 "18gr2anv8gyps6j9f22k7li6w07glvww666sdqblvlq2hh3whwmb")))) 134 "1rqx5fzj1mhkifilip5mkxybpj2wkniq5qcn8h1w2vkr2rzhs29p"))))
135 (build-system gnu-build-system) 135 (build-system gnu-build-system)
136 (inputs 136 (inputs
137 `(("gmp" ,gmp))) 137 `(("gmp" ,gmp)))
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index a20103df4f8..634bc7c6bde 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -35,7 +35,7 @@
35 #:use-module (gnu packages ncurses) 35 #:use-module (gnu packages ncurses)
36 #:use-module (gnu packages pkg-config) 36 #:use-module (gnu packages pkg-config)
37 #:use-module (gnu packages pulseaudio) 37 #:use-module (gnu packages pulseaudio)
38 #:use-module (gnu packages sqlite) 38 #:use-module (gnu packages databases)
39 #:use-module (gnu packages video) 39 #:use-module (gnu packages video)
40 #:use-module (gnu packages xiph) 40 #:use-module (gnu packages xiph)
41 #:export (libmpdclient 41 #:export (libmpdclient
diff --git a/gnu/packages/mysql.scm b/gnu/packages/mysql.scm
deleted file mode 100644
index e89770e9074..00000000000
--- a/gnu/packages/mysql.scm
+++ /dev/null
@@ -1,87 +0,0 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (gnu packages mysql)
20 #:use-module (gnu packages)
21 #:use-module (gnu packages perl)
22 #:use-module (gnu packages linux)
23 #:use-module (gnu packages openssl)
24 #:use-module (gnu packages compression)
25 #:use-module (gnu packages ncurses)
26 #:use-module ((guix licenses) #:select (gpl2))
27 #:use-module (guix packages)
28 #:use-module (guix download)
29 #:use-module (guix build-system gnu))
30
31(define-public mysql
32 (package
33 (name "mysql")
34 (version "5.1.73")
35 (source (origin
36 (method url-fetch)
37 (uri (string-append
38 "http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-"
39 version ".tar.gz"))
40 (sha256
41 (base32
42 "1dfwi4ck0vq6sdci6gz0031s7zz5lc3pddqlgm0292s00l9y5sq5"))))
43 (build-system gnu-build-system)
44 (inputs
45 `(("procps" ,procps)
46 ("openssl" ,openssl)
47 ("perl" ,perl)
48 ("zlib" ,zlib)
49 ("ncurses" ,ncurses)))
50 (arguments
51 '(#:modules ((guix build gnu-build-system)
52 (guix build utils)
53 (ice-9 ftw)) ; for "rm -rf"
54 #:phases (alist-cons-after
55 'install 'clean-up
56 (lambda* (#:key outputs #:allow-other-keys)
57 ;; Remove the 112 MiB of tests that get installed.
58 (let ((out (assoc-ref outputs "out")))
59 (define (rm-rf dir)
60 (file-system-fold (const #t) ; enter?
61 (lambda (file stat result) ; leaf
62 (delete-file file))
63 (const #t) ; down
64 (lambda (dir stat result) ; up
65 (rmdir dir))
66 (const #t)
67 (lambda (file stat errno result)
68 (format (current-error-port)
69 "error: ~a: ~a~%"
70 file (strerror errno)))
71 #t
72 (string-append out "/" dir)))
73 (rm-rf "mysql-test")
74 (rm-rf "sql-bench")
75
76 ;; Compress the 14 MiB Info file.
77 (zero?
78 (system* "gzip" "--best"
79 (string-append out "/share/info/mysql.info")))))
80 %standard-phases)))
81 (home-page "http://www.mysql.com/")
82 (synopsis "A fast, easy to use, and popular database")
83 (description
84 "MySQL is a fast, reliable, and easy to use relational database
85management system that supports the standardized Structured Query
86Language.")
87 (license gpl2)))
diff --git a/gnu/packages/nvi.scm b/gnu/packages/nvi.scm
index 3037e5bafca..8fd736d1808 100644
--- a/gnu/packages/nvi.scm
+++ b/gnu/packages/nvi.scm
@@ -18,7 +18,7 @@
18 18
19(define-module (gnu packages nvi) 19(define-module (gnu packages nvi)
20 #:use-module (gnu packages) 20 #:use-module (gnu packages)
21 #:use-module (gnu packages bdb) 21 #:use-module (gnu packages databases)
22 #:use-module (gnu packages ncurses) 22 #:use-module (gnu packages ncurses)
23 #:use-module (guix packages) 23 #:use-module (guix packages)
24 #:use-module (guix download) 24 #:use-module (guix download)
diff --git a/gnu/packages/openldap.scm b/gnu/packages/openldap.scm
index 574f11904ae..23c32488e96 100644
--- a/gnu/packages/openldap.scm
+++ b/gnu/packages/openldap.scm
@@ -1,5 +1,5 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> 3;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
4;;; 4;;;
5;;; This file is part of GNU Guix. 5;;; This file is part of GNU Guix.
@@ -19,7 +19,7 @@
19 19
20(define-module (gnu packages openldap) 20(define-module (gnu packages openldap)
21 #:use-module (gnu packages autotools) 21 #:use-module (gnu packages autotools)
22 #:use-module (gnu packages bdb) 22 #:use-module (gnu packages databases)
23 #:use-module (gnu packages compression) 23 #:use-module (gnu packages compression)
24 #:use-module (gnu packages cyrus-sasl) 24 #:use-module (gnu packages cyrus-sasl)
25 #:use-module (gnu packages gnupg) 25 #:use-module (gnu packages gnupg)
diff --git a/gnu/packages/ots.scm b/gnu/packages/ots.scm
new file mode 100644
index 00000000000..cd2bf8585ba
--- /dev/null
+++ b/gnu/packages/ots.scm
@@ -0,0 +1,68 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 Marek Benc <merkur32@gmail.com>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (gnu packages ots)
20 #:use-module (gnu packages)
21 #:use-module (gnu packages compression)
22 #:use-module (gnu packages glib)
23 #:use-module (gnu packages pkg-config)
24 #:use-module (gnu packages popt)
25 #:use-module (gnu packages xml)
26 #:use-module (guix packages)
27 #:use-module (guix download)
28 #:use-module (guix build-system gnu)
29 #:use-module ((guix licenses)
30 #:renamer (symbol-prefix-proc 'license:)))
31
32(define-public ots
33 (package
34 (name "ots")
35 (version "0.5.0")
36 (source
37 (origin
38 (method url-fetch)
39 (uri (string-append "mirror://sourceforge/libots/libots/"
40 name "-" version "/" name "-" version
41 ".tar.gz"))
42 (sha256
43 (base32 "0dz1ccd7ymzk4swz1aly4im0k3pascnshmgg1whd2rk14li8v47a"))
44 (patches
45 (list (search-patch "ots-no-include-missing-file.patch")))))
46
47 (build-system gnu-build-system)
48 (inputs
49 `(("glib" ,glib)
50 ("popt" ,popt)
51 ("libxml2" ,libxml2)
52 ("zlib" ,zlib)))
53 (native-inputs
54 `(("glib:bin" ,glib "bin")
55 ("pkg-config" ,pkg-config)))
56 (synopsis "Tool for summarizing texts")
57 (description
58 "The Open Text Summarizer is a library and command-line tool for
59summarizing texts. The program reads a text and decides which sentences are
60important and which are not. OTS will create a short summary or will
61highlight the main ideas in the text.
62
63The program can either print the summarized text as plain text or HTML. If in
64HTML, the important sentences are highlighted.
65
66The program is multi lingual and works with UTF-8 encoding.")
67 (home-page "http://libots.sourceforge.net/")
68 (license license:gpl2+)))
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 66e71df2844..9f35de18194 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -27,7 +27,7 @@
27 #:use-module (gnu packages guile) 27 #:use-module (gnu packages guile)
28 #:use-module ((gnu packages compression) #:select (bzip2 gzip)) 28 #:use-module ((gnu packages compression) #:select (bzip2 gzip))
29 #:use-module (gnu packages gnupg) 29 #:use-module (gnu packages gnupg)
30 #:use-module (gnu packages sqlite) 30 #:use-module (gnu packages databases)
31 #:use-module (gnu packages graphviz) 31 #:use-module (gnu packages graphviz)
32 #:use-module (gnu packages pkg-config) 32 #:use-module (gnu packages pkg-config)
33 #:use-module (gnu packages autotools) 33 #: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 00000000000..7927a180ba6
--- /dev/null
+++ b/gnu/packages/patches/abiword-explictly-cast-bools.patch
@@ -0,0 +1,93 @@
1As of JPEG-9, the type 'boolean' is an enumeration, but since glib defines
2TRUE and FALSE as numeric constants and this is C++, they need to be explicitly
3casted.
4
5--- a/src/af/util/xp/ut_jpeg.cpp 2009-07-08 19:33:53.000000000 +0200
6+++ b/src/af/util/xp/ut_jpeg.cpp 2014-09-06 19:55:55.876997404 +0200
7@@ -102,7 +102,7 @@
8 src->pub.next_input_byte = src->sourceBuf->getPointer (src->pos);
9 src->pub.bytes_in_buffer = src->sourceBuf->getLength ();
10
11- return TRUE;
12+ return (boolean)TRUE;
13 }
14
15 /*
16@@ -161,7 +161,7 @@
17 /* set the data source */
18 _JPEG_ByteBufSrc (&cinfo, pBB);
19
20- jpeg_read_header(&cinfo, TRUE);
21+ jpeg_read_header(&cinfo, (boolean)TRUE);
22 jpeg_start_decompress(&cinfo);
23 iImageWidth = cinfo.output_width;
24 iImageHeight = cinfo.output_height;
25@@ -189,7 +189,7 @@
26 /* set the data source */
27 _JPEG_ByteBufSrc (&cinfo, pBB);
28
29- jpeg_read_header(&cinfo, TRUE);
30+ jpeg_read_header(&cinfo, (boolean)TRUE);
31 jpeg_start_decompress(&cinfo);
32
33 int row_stride = cinfo.output_width * cinfo.output_components;
34
35
36In the following file, we also need to reverse header include order: JPEG needs
37to be included before Glib, which is included by "abiword-garble.h" for this fix
38to work.
39
40The JPEG header needs the types FILE and size_t, we can get them from cstdio.
41
42--- a/plugins/garble/xp/abiword-garble-jpeg.cpp 2009-09-05 17:49:53.000000000 +0200
43+++ b/plugins/garble/xp/abiword-garble-jpeg.cpp 2014-09-07 21:28:49.364008571 +0200
44@@ -20,12 +20,14 @@
45 * 02111-1307, USA.
46 */
47
48-#include "abiword-garble.h"
49+#include <cstdio>
50
51 extern "C" {
52 #include <jpeglib.h>
53 }
54
55+#include "abiword-garble.h"
56+
57 //-----------------------------------------------------------------------------
58 typedef struct {
59 struct jpeg_destination_mgr pub;
60@@ -49,7 +51,7 @@
61 mem_dest_ptr dest = (mem_dest_ptr) cinfo->dest;
62 dest->pub.next_output_byte = dest->buf;
63 dest->pub.free_in_buffer = dest->bufsize;
64- return FALSE;
65+ return (boolean)FALSE;
66 }
67
68 //-----------------------------------------------------------------------------
69@@ -96,7 +98,7 @@
70 cinfo.image_width = (JDIMENSION) w;
71 cinfo.image_height = (JDIMENSION) h;
72 jpeg_set_defaults (&cinfo);
73- jpeg_set_quality ( &cinfo, 50, TRUE );
74+ jpeg_set_quality ( &cinfo, 50, (boolean)TRUE );
75 cinfo.dest = (struct jpeg_destination_mgr *) (*cinfo.mem->alloc_small)((j_common_ptr)&cinfo, JPOOL_PERMANENT, sizeof(mem_destination_mgr));
76 dest = (mem_dest_ptr) cinfo.dest;
77 dest->pub.init_destination = _jpeg_init_destination;
78@@ -105,7 +107,7 @@
79 dest->buf = (JOCTET*)data;
80 dest->bufsize = length;
81 dest->jpegsize = 0;
82- jpeg_start_compress (&cinfo, TRUE);
83+ jpeg_start_compress (&cinfo, (boolean)TRUE);
84
85 // write data
86 for (int i=0; i<h; ++i)
87@@ -121,4 +123,4 @@
88 free( dib[i] );
89 free( dib );
90 return true;
91-}
92\ No newline at end of file
93+}
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 00000000000..fb8fbfc98b4
--- /dev/null
+++ b/gnu/packages/patches/abiword-link-plugins-against-backend.patch
@@ -0,0 +1,639 @@
1Link plugins against libabiword. This is because --no-undefined is passed to
2the linker when linking and without libabiword, it would fail.
3
4--- a/plugins/aiksaurus/Makefile.in 2014-09-06 11:25:35.000000000 +0200
5+++ b/plugins/aiksaurus/Makefile.in 2014-09-06 14:58:36.480413350 +0200
6@@ -422,7 +422,8 @@
7 plugin_LTLIBRARIES = aiksaurus.la
8 aiksaurus_la_LIBADD = \
9 $(platform_lib) \
10- xp/libxp.la
11+ xp/libxp.la \
12+ @top_builddir@/src/libabiword-2.8.la
13
14 aiksaurus_la_LDFLAGS = \
15 $(AIKSAURUS_LIBS) \
16
17--- a/plugins/applix/Makefile.in 2014-09-06 11:25:35.000000000 +0200
18+++ b/plugins/applix/Makefile.in 2014-09-06 14:58:54.416413938 +0200
19@@ -425,7 +425,8 @@
20 @APPLIX_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
21 @APPLIX_BUILTIN_FALSE@plugin_LTLIBRARIES = applix.la
22 applix_la_LIBADD = \
23- xp/libxp.la
24+ xp/libxp.la \
25+ @top_builddir@/src/libabiword-2.8.la
26
27 applix_la_LDFLAGS = \
28 $(APPLIX_LIBS) \
29
30--- a/plugins/babelfish/Makefile.in 2014-09-06 11:25:35.000000000 +0200
31+++ b/plugins/babelfish/Makefile.in 2014-09-06 14:59:09.220414422 +0200
32@@ -425,7 +425,8 @@
33 @BABELFISH_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
34 @BABELFISH_BUILTIN_FALSE@plugin_LTLIBRARIES = babelfish.la
35 babelfish_la_LIBADD = \
36- xp/libxp.la
37+ xp/libxp.la \
38+ @top_builddir@/src/libabiword-2.8.la
39
40 babelfish_la_LDFLAGS = \
41 $(BABELFISH_LIBS) \
42
43--- a/plugins/bmp/Makefile.in 2014-09-06 11:25:35.000000000 +0200
44+++ b/plugins/bmp/Makefile.in 2014-09-06 14:59:53.928415886 +0200
45@@ -425,7 +425,8 @@
46 @BMP_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
47 @BMP_BUILTIN_FALSE@plugin_LTLIBRARIES = bmp.la
48 bmp_la_LIBADD = \
49- xp/libxp.la
50+ xp/libxp.la \
51+ @top_builddir@/src/libabiword-2.8.la
52
53 bmp_la_LDFLAGS = \
54 $(BMP_LIBS) \
55
56--- a/plugins/clarisworks/Makefile.in 2014-09-06 11:25:35.000000000 +0200
57+++ b/plugins/clarisworks/Makefile.in 2014-09-06 15:00:06.148416286 +0200
58@@ -427,7 +427,8 @@
59 @CLARISWORKS_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
60 @CLARISWORKS_BUILTIN_FALSE@plugin_LTLIBRARIES = clarisworks.la
61 clarisworks_la_LIBADD = \
62- xp/libxp.la
63+ xp/libxp.la \
64+ @top_builddir@/src/libabiword-2.8.la
65
66 clarisworks_la_LDFLAGS = \
67 $(CLARISWORKS_LIBS) \
68
69--- a/plugins/collab/Makefile.in 2014-09-06 11:25:35.000000000 +0200
70+++ b/plugins/collab/Makefile.in 2014-09-06 15:02:04.000420145 +0200
71@@ -428,7 +428,8 @@
72 @TOOLKIT_COCOA_FALSE@plugin_LTLIBRARIES = collab.la
73 @TOOLKIT_COCOA_FALSE@collab_la_LIBADD = \
74 @TOOLKIT_COCOA_FALSE@ backends/libbackends.la \
75-@TOOLKIT_COCOA_FALSE@ core/libcore.la
76+@TOOLKIT_COCOA_FALSE@ core/libcore.la \
77+@TOOLKIT_COCOA_FALSE@ @top_builddir@/src/libabiword-2.8.la
78
79 @TOOLKIT_COCOA_FALSE@collab_la_LDFLAGS = \
80 @TOOLKIT_COCOA_FALSE@ $(COLLAB_LIBS) \
81
82--- a/plugins/command/Makefile.in 2014-09-06 11:25:35.000000000 +0200
83+++ b/plugins/command/Makefile.in 2014-09-06 15:02:41.208421363 +0200
84@@ -420,7 +420,8 @@
85 @TOOLKIT_COCOA_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
86 @TOOLKIT_COCOA_FALSE@plugin_LTLIBRARIES = command.la
87 @TOOLKIT_COCOA_FALSE@command_la_LIBADD = \
88-@TOOLKIT_COCOA_FALSE@ xp/libxp.la
89+@TOOLKIT_COCOA_FALSE@ xp/libxp.la \
90+@TOOLKIT_COCOA_FALSE@ @top_builddir@/src/libabiword-2.8.la
91
92 @TOOLKIT_COCOA_FALSE@command_la_LDFLAGS = \
93 @TOOLKIT_COCOA_FALSE@ $(COMMAND_LIBS) \
94
95--- a/plugins/docbook/Makefile.in 2014-09-06 11:25:35.000000000 +0200
96+++ b/plugins/docbook/Makefile.in 2014-09-06 15:02:52.128421720 +0200
97@@ -425,7 +425,8 @@
98 @DOCBOOK_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
99 @DOCBOOK_BUILTIN_FALSE@plugin_LTLIBRARIES = docbook.la
100 docbook_la_LIBADD = \
101- xp/libxp.la
102+ xp/libxp.la \
103+ @top_builddir@/src/libabiword-2.8.la
104
105 docbook_la_LDFLAGS = \
106 $(DOCBOOK_LIBS) \
107
108--- a/plugins/eml/Makefile.in 2014-09-06 11:25:35.000000000 +0200
109+++ b/plugins/eml/Makefile.in 2014-09-06 15:03:02.760422068 +0200
110@@ -425,7 +425,8 @@
111 @EML_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
112 @EML_BUILTIN_FALSE@plugin_LTLIBRARIES = eml.la
113 eml_la_LIBADD = \
114- xp/libxp.la
115+ xp/libxp.la \
116+ @top_builddir@/src/libabiword-2.8.la
117
118 eml_la_LDFLAGS = \
119 $(EML_LIBS) \
120
121--- a/plugins/freetranslation/Makefile.in 2014-09-06 11:25:35.000000000 +0200
122+++ b/plugins/freetranslation/Makefile.in 2014-09-06 15:03:17.656422556 +0200
123@@ -427,7 +427,8 @@
124 @FREETRANSLATION_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
125 @FREETRANSLATION_BUILTIN_FALSE@plugin_LTLIBRARIES = freetranslation.la
126 freetranslation_la_LIBADD = \
127- xp/libxp.la
128+ xp/libxp.la \
129+ @top_builddir@/src/libabiword-2.8.la
130
131 freetranslation_la_LDFLAGS = \
132 $(FREETRANSLATION_LIBS) \
133
134--- a/plugins/garble/Makefile.in 2014-09-06 11:25:35.000000000 +0200
135+++ b/plugins/garble/Makefile.in 2014-09-06 15:03:48.192423556 +0200
136@@ -427,7 +427,8 @@
137 @TOOLKIT_COCOA_FALSE@plugin_LTLIBRARIES = garble.la
138 @TOOLKIT_COCOA_FALSE@garble_la_LIBADD = \
139 @TOOLKIT_COCOA_FALSE@ xp/libxp.la \
140-@TOOLKIT_COCOA_FALSE@ $(GARBLE_LIBS) $(PNG_LIBS) -ljpeg
141+@TOOLKIT_COCOA_FALSE@ $(GARBLE_LIBS) $(PNG_LIBS) -ljpeg \
142+@TOOLKIT_COCOA_FALSE@ @top_builddir@/src/libabiword-2.8.la
143
144 @TOOLKIT_COCOA_FALSE@garble_la_LDFLAGS = \
145 @TOOLKIT_COCOA_FALSE@ $(GARBLE_LIBS) \
146
147--- a/plugins/gda/Makefile.in 2014-09-06 11:25:35.000000000 +0200
148+++ b/plugins/gda/Makefile.in 2014-09-06 15:04:08.012424205 +0200
149@@ -419,7 +419,8 @@
150 plugindir = $(ABIWORD_PLUGINSDIR)
151 plugin_LTLIBRARIES = gda.la
152 gda_la_LIBADD = \
153- unix/libunix.la
154+ unix/libunix.la \
155+ @top_builddir@/src/libabiword-2.8.la
156
157 gda_la_LDFLAGS = \
158 $(GDA_LIBS) \
159
160--- a/plugins/gdict/Makefile.in 2014-09-06 11:25:35.000000000 +0200
161+++ b/plugins/gdict/Makefile.in 2014-09-06 15:04:37.888425183 +0200
162@@ -423,7 +423,8 @@
163 @GDICT_BUILTIN_FALSE@@TOOLKIT_GTK_TRUE@plugindir = $(ABIWORD_PLUGINSDIR)
164 @GDICT_BUILTIN_FALSE@@TOOLKIT_GTK_TRUE@plugin_LTLIBRARIES = gdict.la
165 @TOOLKIT_GTK_TRUE@gdict_la_LIBADD = \
166-@TOOLKIT_GTK_TRUE@ unix/libunix.la
167+@TOOLKIT_GTK_TRUE@ unix/libunix.la \
168+@TOOLKIT_GTK_TRUE@ @top_builddir@/src/libabiword-2.8.la
169
170 @TOOLKIT_GTK_TRUE@gdict_la_LDFLAGS = \
171 @TOOLKIT_GTK_TRUE@ $(GDICT_LIBS) \
172
173--- a/plugins/gimp/Makefile.in 2014-09-06 11:25:35.000000000 +0200
174+++ b/plugins/gimp/Makefile.in 2014-09-06 15:04:47.380425494 +0200
175@@ -425,7 +425,8 @@
176 @GIMP_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
177 @GIMP_BUILTIN_FALSE@plugin_LTLIBRARIES = gimp.la
178 gimp_la_LIBADD = \
179- xp/libxp.la
180+ xp/libxp.la \
181+ @top_builddir@/src/libabiword-2.8.la
182
183 gimp_la_LDFLAGS = \
184 $(GIMP_LIBS) \
185
186--- a/plugins/goffice/Makefile.in 2014-09-06 11:25:35.000000000 +0200
187+++ b/plugins/goffice/Makefile.in 2014-09-06 15:04:57.660425830 +0200
188@@ -419,7 +419,8 @@
189 plugindir = $(ABIWORD_PLUGINSDIR)
190 plugin_LTLIBRARIES = goffice.la
191 goffice_la_LIBADD = \
192- unix/libunix.la
193+ unix/libunix.la \
194+ @top_builddir@/src/libabiword-2.8.la
195
196 goffice_la_LDFLAGS = \
197 $(GOFFICE_LIBS) \
198
199--- a/plugins/google/Makefile.in 2014-09-06 11:25:35.000000000 +0200
200+++ b/plugins/google/Makefile.in 2014-09-06 15:05:06.852426131 +0200
201@@ -425,7 +425,8 @@
202 @GOOGLE_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
203 @GOOGLE_BUILTIN_FALSE@plugin_LTLIBRARIES = google.la
204 google_la_LIBADD = \
205- xp/libxp.la
206+ xp/libxp.la \
207+ @top_builddir@/src/libabiword-2.8.la
208
209 google_la_LDFLAGS = \
210 $(GOOGLE_LIBS) \
211
212--- a/plugins/grammar/Makefile.in 2014-09-06 11:25:35.000000000 +0200
213+++ b/plugins/grammar/Makefile.in 2014-09-06 15:05:19.840426556 +0200
214@@ -424,7 +424,8 @@
215 plugin_LTLIBRARIES = grammar.la
216 grammar_la_LIBADD = \
217 linkgrammarwrap/liblinkgrammarwrap.la \
218- xp/libxp.la
219+ xp/libxp.la \
220+ @top_builddir@/src/libabiword-2.8.la
221
222 grammar_la_LDFLAGS = \
223 $(GRAMMAR_LIBS) \
224
225--- a/plugins/hancom/Makefile.in 2014-09-06 11:25:35.000000000 +0200
226+++ b/plugins/hancom/Makefile.in 2014-09-06 15:05:29.684426879 +0200
227@@ -425,7 +425,8 @@
228 @HANCOM_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
229 @HANCOM_BUILTIN_FALSE@plugin_LTLIBRARIES = hancom.la
230 hancom_la_LIBADD = \
231- xp/libxp.la
232+ xp/libxp.la \
233+ @top_builddir@/src/libabiword-2.8.la
234
235 hancom_la_LDFLAGS = \
236 $(HANCOM_LIBS) \
237
238--- a/plugins/hrtext/Makefile.in 2014-09-06 11:25:35.000000000 +0200
239+++ b/plugins/hrtext/Makefile.in 2014-09-06 15:05:41.244427257 +0200
240@@ -425,7 +425,8 @@
241 @HRTEXT_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
242 @HRTEXT_BUILTIN_FALSE@plugin_LTLIBRARIES = hrtext.la
243 hrtext_la_LIBADD = \
244- xp/libxp.la
245+ xp/libxp.la \
246+ @top_builddir@/src/libabiword-2.8.la
247
248 hrtext_la_LDFLAGS = \
249 $(HRTEXT_LIBS) \
250
251--- a/plugins/iscii/Makefile.in 2014-09-06 11:25:35.000000000 +0200
252+++ b/plugins/iscii/Makefile.in 2014-09-06 15:05:52.660427631 +0200
253@@ -425,7 +425,8 @@
254 @ISCII_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
255 @ISCII_BUILTIN_FALSE@plugin_LTLIBRARIES = iscii.la
256 iscii_la_LIBADD = \
257- xp/libxp.la
258+ xp/libxp.la \
259+ @top_builddir@/src/libabiword-2.8.la
260
261 iscii_la_LDFLAGS = \
262 $(ISCII_LIBS) \
263
264--- a/plugins/kword/Makefile.in 2014-09-06 11:25:35.000000000 +0200
265+++ b/plugins/kword/Makefile.in 2014-09-06 15:06:01.260427912 +0200
266@@ -425,7 +425,8 @@
267 @KWORD_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
268 @KWORD_BUILTIN_FALSE@plugin_LTLIBRARIES = kword.la
269 kword_la_LIBADD = \
270- xp/libxp.la
271+ xp/libxp.la \
272+ @top_builddir@/src/libabiword-2.8.la
273
274 kword_la_LDFLAGS = \
275 $(KWORD_LIBS) \
276
277--- a/plugins/latex/Makefile.in 2014-09-06 11:25:35.000000000 +0200
278+++ b/plugins/latex/Makefile.in 2014-09-06 15:06:13.212428304 +0200
279@@ -426,7 +426,8 @@
280 @LATEX_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
281 @LATEX_BUILTIN_FALSE@plugin_LTLIBRARIES = latex.la
282 latex_la_LIBADD = \
283- xp/libxp.la
284+ xp/libxp.la \
285+ @top_builddir@/src/libabiword-2.8.la
286
287 latex_la_LDFLAGS = \
288 $(LATEX_LIBS) \
289
290--- a/plugins/loadbindings/Makefile.in 2014-09-06 11:25:35.000000000 +0200
291+++ b/plugins/loadbindings/Makefile.in 2014-09-06 15:06:27.340428766 +0200
292@@ -427,7 +427,8 @@
293 @LOADBINDINGS_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
294 @LOADBINDINGS_BUILTIN_FALSE@plugin_LTLIBRARIES = loadbindings.la
295 loadbindings_la_LIBADD = \
296- xp/libxp.la
297+ xp/libxp.la \
298+ @top_builddir@/src/libabiword-2.8.la
299
300 loadbindings_la_LDFLAGS = \
301 $(LOADBINDINGS_LIBS) \
302
303--- a/plugins/mathview/Makefile.in 2014-09-06 11:25:35.000000000 +0200
304+++ b/plugins/mathview/Makefile.in 2014-09-06 15:06:35.428429031 +0200
305@@ -423,7 +423,8 @@
306 plugin_LTLIBRARIES = mathview.la
307 mathview_la_LIBADD = \
308 itex2mml/libitex2mml.la \
309- xp/libxp.la
310+ xp/libxp.la \
311+ @top_builddir@/src/libabiword-2.8.la
312
313 mathview_la_LDFLAGS = \
314 $(MATHVIEW_LIBS) \
315
316--- a/plugins/mht/Makefile.in 2014-09-06 11:25:35.000000000 +0200
317+++ b/plugins/mht/Makefile.in 2014-09-06 15:06:47.516429427 +0200
318@@ -422,7 +422,8 @@
319 plugindir = $(ABIWORD_PLUGINSDIR)
320 plugin_LTLIBRARIES = mht.la
321 mht_la_LIBADD = \
322- xp/libxp.la
323+ xp/libxp.la \
324+ @top_builddir@/src/libabiword-2.8.la
325
326 mht_la_LDFLAGS = \
327 $(MHT_LIBS) \
328
329--- a/plugins/mif/Makefile.in 2014-09-06 11:25:35.000000000 +0200
330+++ b/plugins/mif/Makefile.in 2014-09-06 15:07:03.496429950 +0200
331@@ -425,7 +425,8 @@
332 @MIF_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
333 @MIF_BUILTIN_FALSE@plugin_LTLIBRARIES = mif.la
334 mif_la_LIBADD = \
335- xp/libxp.la
336+ xp/libxp.la \
337+ @top_builddir@/src/libabiword-2.8.la
338
339 mif_la_LDFLAGS = \
340 $(MIF_LIBS) \
341
342--- a/plugins/mswrite/Makefile.in 2014-09-06 11:25:35.000000000 +0200
343+++ b/plugins/mswrite/Makefile.in 2014-09-06 15:07:15.700430349 +0200
344@@ -425,7 +425,8 @@
345 @MSWRITE_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
346 @MSWRITE_BUILTIN_FALSE@plugin_LTLIBRARIES = mswrite.la
347 mswrite_la_LIBADD = \
348- xp/libxp.la
349+ xp/libxp.la \
350+ @top_builddir@/src/libabiword-2.8.la
351
352 mswrite_la_LDFLAGS = \
353 $(MSWRITE_LIBS) \
354
355--- a/plugins/opendocument/Makefile.in 2014-09-06 11:25:35.000000000 +0200
356+++ b/plugins/opendocument/Makefile.in 2014-09-06 15:07:26.668430709 +0200
357@@ -430,7 +430,8 @@
358 opendocument_la_LIBADD = \
359 common/libcommon.la \
360 exp/libexp.la \
361- imp/libimp.la
362+ imp/libimp.la \
363+ @top_builddir@/src/libabiword-2.8.la
364
365 opendocument_la_LDFLAGS = \
366 $(OPENDOCUMENT_LIBS) \
367
368--- a/plugins/openwriter/Makefile.in 2014-09-06 11:25:35.000000000 +0200
369+++ b/plugins/openwriter/Makefile.in 2014-09-06 15:07:40.272431154 +0200
370@@ -426,7 +426,8 @@
371 @OPENWRITER_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
372 @OPENWRITER_BUILTIN_FALSE@plugin_LTLIBRARIES = openwriter.la
373 openwriter_la_LIBADD = \
374- xp/libxp.la
375+ xp/libxp.la \
376+ @top_builddir@/src/libabiword-2.8.la
377
378 openwriter_la_LDFLAGS = \
379 $(OPENWRITER_LIBS) \
380
381--- a/plugins/openxml/Makefile.in 2014-09-06 11:25:35.000000000 +0200
382+++ b/plugins/openxml/Makefile.in 2014-09-06 15:08:44.312433251 +0200
383@@ -428,7 +428,8 @@
384 openxml_la_LIBADD = \
385 common/libcommon.la \
386 imp/libimp.la \
387- exp/libexp.la
388+ exp/libexp.la \
389+ @top_builddir@/src/libabiword-2.8.la
390
391 openxml_la_LDFLAGS = \
392 $(OPENXML_LIBS) \
393
394--- a/plugins/opml/Makefile.in 2014-09-06 11:25:35.000000000 +0200
395+++ b/plugins/opml/Makefile.in 2014-09-06 15:08:58.424433713 +0200
396@@ -425,7 +425,8 @@
397 @OPML_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
398 @OPML_BUILTIN_FALSE@plugin_LTLIBRARIES = opml.la
399 opml_la_LIBADD = \
400- xp/libxp.la
401+ xp/libxp.la \
402+ @top_builddir@/src/libabiword-2.8.la
403
404 opml_la_LDFLAGS = \
405 $(OPML_LIBS) \
406
407--- a/plugins/ots/Makefile.in 2014-09-06 11:25:35.000000000 +0200
408+++ b/plugins/ots/Makefile.in 2014-09-06 15:09:08.164434031 +0200
409@@ -419,7 +419,8 @@
410 plugindir = $(ABIWORD_PLUGINSDIR)
411 plugin_LTLIBRARIES = ots.la
412 ots_la_LIBADD = \
413- xp/libxp.la
414+ xp/libxp.la \
415+ @top_builddir@/src/libabiword-2.8.la
416
417 ots_la_LDFLAGS = \
418 $(OTS_LIBS) \
419
420--- a/plugins/paint/Makefile.in 2014-09-06 11:25:35.000000000 +0200
421+++ b/plugins/paint/Makefile.in 2014-09-06 15:09:38.912435038 +0200
422@@ -426,7 +426,8 @@
423 @PAINT_BUILTIN_FALSE@plugin_LTLIBRARIES = paint.la
424 paint_la_LIBADD = \
425 @PLATFORM@/lib@PLATFORM@.la \
426- xp/libxp.la
427+ xp/libxp.la \
428+ @top_builddir@/src/libabiword-2.8.la
429
430 paint_la_LDFLAGS = \
431 $(PAINT_LIBS) \
432
433--- a/plugins/passepartout/Makefile.in 2014-09-06 11:25:35.000000000 +0200
434+++ b/plugins/passepartout/Makefile.in 2014-09-06 15:09:46.744435295 +0200
435@@ -427,7 +427,8 @@
436 @PASSEPARTOUT_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
437 @PASSEPARTOUT_BUILTIN_FALSE@plugin_LTLIBRARIES = passepartout.la
438 passepartout_la_LIBADD = \
439- xp/libxp.la
440+ xp/libxp.la \
441+ @top_builddir@/src/libabiword-2.8.la
442
443 passepartout_la_LDFLAGS = \
444 $(PASSEPARTOUT_LIBS) \
445
446--- a/plugins/pdb/Makefile.in 2014-09-06 11:25:35.000000000 +0200
447+++ b/plugins/pdb/Makefile.in 2014-09-06 15:09:54.484435548 +0200
448@@ -425,7 +425,8 @@
449 @PDB_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
450 @PDB_BUILTIN_FALSE@plugin_LTLIBRARIES = pdb.la
451 pdb_la_LIBADD = \
452- xp/libxp.la
453+ xp/libxp.la \
454+ @top_builddir@/src/libabiword-2.8.la
455
456 pdb_la_LDFLAGS = \
457 $(PDB_LIBS) \
458
459--- a/plugins/pdf/Makefile.in 2014-09-06 11:25:35.000000000 +0200
460+++ b/plugins/pdf/Makefile.in 2014-09-06 15:10:04.444435874 +0200
461@@ -425,7 +425,8 @@
462 @PDF_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
463 @PDF_BUILTIN_FALSE@plugin_LTLIBRARIES = pdf.la
464 pdf_la_LIBADD = \
465- xp/libxp.la
466+ xp/libxp.la \
467+ @top_builddir@/src/libabiword-2.8.la
468
469 pdf_la_LDFLAGS = \
470 $(PDF_LIBS) \
471
472--- a/plugins/presentation/Makefile.in 2014-09-06 11:25:35.000000000 +0200
473+++ b/plugins/presentation/Makefile.in 2014-09-06 15:10:13.112436158 +0200
474@@ -427,7 +427,8 @@
475 @PRESENTATION_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
476 @PRESENTATION_BUILTIN_FALSE@plugin_LTLIBRARIES = presentation.la
477 presentation_la_LIBADD = \
478- xp/libxp.la
479+ xp/libxp.la \
480+ @top_builddir@/src/libabiword-2.8.la
481
482 presentation_la_LDFLAGS = \
483 $(PRESENTATION_LIBS) \
484
485--- a/plugins/psion/Makefile.in 2014-09-06 11:25:35.000000000 +0200
486+++ b/plugins/psion/Makefile.in 2014-09-06 15:10:22.176436455 +0200
487@@ -421,7 +421,8 @@
488 plugindir = $(ABIWORD_PLUGINSDIR)
489 plugin_LTLIBRARIES = psion.la
490 psion_la_LIBADD = \
491- xp/libxp.la
492+ xp/libxp.la \
493+ @top_builddir@/src/libabiword-2.8.la
494
495 psion_la_LDFLAGS = \
496 $(PSION_LIBS) \
497
498--- a/plugins/rsvg/Makefile.in 2014-09-06 11:25:35.000000000 +0200
499+++ b/plugins/rsvg/Makefile.in 2014-09-06 15:10:37.632436961 +0200
500@@ -425,7 +425,8 @@
501 plugin_LTLIBRARIES = rsvg.la
502 rsvg_la_LIBADD = \
503 xp/libxp.la \
504- $(RSVG_LIBS) $(PNG_LIBS)
505+ $(RSVG_LIBS) $(PNG_LIBS) \
506+ @top_builddir@/src/libabiword-2.8.la
507
508 rsvg_la_LDFLAGS = \
509 -avoid-version \
510
511--- a/plugins/s5/Makefile.in 2014-09-06 11:25:35.000000000 +0200
512+++ b/plugins/s5/Makefile.in 2014-09-06 15:10:46.652437256 +0200
513@@ -425,7 +425,8 @@
514 @S5_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
515 @S5_BUILTIN_FALSE@plugin_LTLIBRARIES = s5.la
516 s5_la_LIBADD = \
517- xp/libxp.la
518+ xp/libxp.la \
519+ @top_builddir@/src/libabiword-2.8.la
520
521 s5_la_LDFLAGS = \
522 $(S5_LIBS) \
523
524--- a/plugins/sdw/Makefile.in 2014-09-06 11:25:35.000000000 +0200
525+++ b/plugins/sdw/Makefile.in 2014-09-06 15:10:58.072437630 +0200
526@@ -425,7 +425,8 @@
527 @SDW_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
528 @SDW_BUILTIN_FALSE@plugin_LTLIBRARIES = sdw.la
529 sdw_la_LIBADD = \
530- xp/libxp.la
531+ xp/libxp.la \
532+ @top_builddir@/src/libabiword-2.8.la
533
534 sdw_la_LDFLAGS = \
535 $(SDW_LIBS) \
536
537--- a/plugins/t602/Makefile.in 2014-09-06 11:25:35.000000000 +0200
538+++ b/plugins/t602/Makefile.in 2014-09-06 15:11:06.224437897 +0200
539@@ -425,7 +425,8 @@
540 @T602_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
541 @T602_BUILTIN_FALSE@plugin_LTLIBRARIES = t602.la
542 t602_la_LIBADD = \
543- xp/libxp.la
544+ xp/libxp.la \
545+ @top_builddir@/src/libabiword-2.8.la
546
547 t602_la_LDFLAGS = \
548 $(T602_LIBS) \
549
550--- a/plugins/urldict/Makefile.in 2014-09-06 11:25:35.000000000 +0200
551+++ b/plugins/urldict/Makefile.in 2014-09-06 15:11:14.404438165 +0200
552@@ -425,7 +425,8 @@
553 @URLDICT_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
554 @URLDICT_BUILTIN_FALSE@plugin_LTLIBRARIES = urldict.la
555 urldict_la_LIBADD = \
556- xp/libxp.la
557+ xp/libxp.la \
558+ @top_builddir@/src/libabiword-2.8.la
559
560 urldict_la_LDFLAGS = \
561 $(URLDICT_LIBS) \
562
563--- a/plugins/wikipedia/Makefile.in 2014-09-06 11:25:35.000000000 +0200
564+++ b/plugins/wikipedia/Makefile.in 2014-09-06 15:11:22.064438415 +0200
565@@ -425,7 +425,8 @@
566 @WIKIPEDIA_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
567 @WIKIPEDIA_BUILTIN_FALSE@plugin_LTLIBRARIES = wikipedia.la
568 wikipedia_la_LIBADD = \
569- xp/libxp.la
570+ xp/libxp.la \
571+ @top_builddir@/src/libabiword-2.8.la
572
573 wikipedia_la_LDFLAGS = \
574 $(WIKIPEDIA_LIBS) \
575
576--- a/plugins/wmf/Makefile.in 2014-09-06 11:25:35.000000000 +0200
577+++ b/plugins/wmf/Makefile.in 2014-09-06 15:11:31.348438719 +0200
578@@ -422,7 +422,8 @@
579 plugindir = $(ABIWORD_PLUGINSDIR)
580 plugin_LTLIBRARIES = wmf.la
581 wmf_la_LIBADD = \
582- xp/libxp.la
583+ xp/libxp.la \
584+ @top_builddir@/src/libabiword-2.8.la
585
586 wmf_la_LDFLAGS = \
587 $(WMF_LIBS) \
588
589--- a/plugins/wml/Makefile.in 2014-09-06 11:25:35.000000000 +0200
590+++ b/plugins/wml/Makefile.in 2014-09-06 15:11:40.168439008 +0200
591@@ -425,7 +425,8 @@
592 @WML_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
593 @WML_BUILTIN_FALSE@plugin_LTLIBRARIES = wml.la
594 wml_la_LIBADD = \
595- xp/libxp.la
596+ xp/libxp.la \
597+ @top_builddir@/src/libabiword-2.8.la
598
599 wml_la_LDFLAGS = \
600 $(WML_LIBS) \
601
602--- a/plugins/wordperfect/Makefile.in 2014-09-06 11:25:35.000000000 +0200
603+++ b/plugins/wordperfect/Makefile.in 2014-09-06 15:11:50.336439341 +0200
604@@ -423,7 +423,8 @@
605 plugindir = $(ABIWORD_PLUGINSDIR)
606 plugin_LTLIBRARIES = wordperfect.la
607 wordperfect_la_LIBADD = \
608- xp/libxp.la
609+ xp/libxp.la \
610+ @top_builddir@/src/libabiword-2.8.la
611
612 wordperfect_la_LDFLAGS = \
613 $(WORDPERFECT_LIBS) \
614
615--- a/plugins/wpg/Makefile.in 2014-09-06 11:25:35.000000000 +0200
616+++ b/plugins/wpg/Makefile.in 2014-09-06 15:12:11.328440028 +0200
617@@ -422,7 +422,8 @@
618 plugindir = $(ABIWORD_PLUGINSDIR)
619 plugin_LTLIBRARIES = wpg.la
620 wpg_la_LIBADD = \
621- xp/libxp.la
622+ xp/libxp.la \
623+ @top_builddir@/src/libabiword-2.8.la
624
625 wpg_la_LDFLAGS = \
626 $(WPG_LIBS) \
627
628--- a/plugins/xslfo/Makefile.in 2014-09-06 11:25:35.000000000 +0200
629+++ b/plugins/xslfo/Makefile.in 2014-09-06 15:12:44.984441130 +0200
630@@ -425,7 +425,8 @@
631 @XSLFO_BUILTIN_FALSE@plugindir = $(ABIWORD_PLUGINSDIR)
632 @XSLFO_BUILTIN_FALSE@plugin_LTLIBRARIES = xslfo.la
633 xslfo_la_LIBADD = \
634- xp/libxp.la
635+ xp/libxp.la \
636+ @top_builddir@/src/libabiword-2.8.la
637
638 xslfo_la_LDFLAGS = \
639 $(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 00000000000..60a74920fb8
--- /dev/null
+++ b/gnu/packages/patches/abiword-no-include-glib-internal-headers.patch
@@ -0,0 +1,13 @@
1Include glib.h instead of an internal header.
2
3--- a/goffice-bits/goffice/app/goffice-app.h 2007-01-17 00:17:27.000000000 +0100
4+++ b/goffice-bits/goffice/app/goffice-app.h 2014-09-05 19:02:59.402064713 +0200
5@@ -22,7 +22,7 @@
6 #ifndef GOFFICE_APP_H
7 #define GOFFICE_APP_H
8
9-#include <glib/gmacros.h>
10+#include <glib.h>
11
12 G_BEGIN_DECLS
13
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 00000000000..a17d465edb6
--- /dev/null
+++ b/gnu/packages/patches/abiword-pass-no-undefined-to-linker.patch
@@ -0,0 +1,608 @@
1gcc/g++ chokes on --no-undefined, so instead pass it directly to the linker.
2
3--- a/plugins/loadbindings/Makefile.in 2010-06-13 23:17:48.000000000 +0200
4+++ b/plugins/loadbindings/Makefile.in 2014-09-06 11:03:21.151951221 +0200
5@@ -433,7 +433,7 @@
6 $(LOADBINDINGS_LIBS) \
7 -avoid-version \
8 -module \
9- -no-undefined
10+ -Wl,--no-undefined
11
12 loadbindings_la_SOURCES =
13 nodist_EXTRA_loadbindings_la_SOURCES = dummy.cpp
14
15--- a/plugins/pdf/Makefile.in 2010-06-13 23:17:53.000000000 +0200
16+++ b/plugins/pdf/Makefile.in 2014-09-06 11:03:21.207951223 +0200
17@@ -431,7 +431,7 @@
18 $(PDF_LIBS) \
19 -avoid-version \
20 -module \
21- -no-undefined
22+ -Wl,--no-undefined
23
24 pdf_la_SOURCES =
25 nodist_EXTRA_pdf_la_SOURCES = dummy.cpp
26
27--- a/plugins/xslfo/Makefile.in 2010-06-13 23:17:55.000000000 +0200
28+++ b/plugins/xslfo/Makefile.in 2014-09-06 11:03:21.227951224 +0200
29@@ -431,7 +431,7 @@
30 $(XSLFO_LIBS) \
31 -avoid-version \
32 -module \
33- -no-undefined
34+ -Wl,--no-undefined
35
36 xslfo_la_SOURCES =
37 nodist_EXTRA_xslfo_la_SOURCES = dummy.cpp
38
39--- a/plugins/gda/Makefile.in 2010-06-13 23:17:45.000000000 +0200
40+++ b/plugins/gda/Makefile.in 2014-09-06 11:03:21.251951225 +0200
41@@ -425,7 +425,7 @@
42 $(GDA_LIBS) \
43 -avoid-version \
44 -module \
45- -no-undefined
46+ -Wl,--no-undefined
47
48 gda_la_SOURCES =
49 EXTRA_DIST = \
50
51--- a/plugins/wikipedia/Makefile.in 2010-06-13 23:17:54.000000000 +0200
52+++ b/plugins/wikipedia/Makefile.in 2014-09-06 11:03:21.271951225 +0200
53@@ -431,7 +431,7 @@
54 $(WIKIPEDIA_LIBS) \
55 -avoid-version \
56 -module \
57- -no-undefined
58+ -Wl,--no-undefined
59
60 wikipedia_la_SOURCES =
61 nodist_EXTRA_wikipedia_la_SOURCES = dummy.cpp
62
63--- a/plugins/collab/Makefile.in 2010-06-13 23:17:41.000000000 +0200
64+++ b/plugins/collab/Makefile.in 2014-09-06 11:03:21.291951226 +0200
65@@ -435,7 +435,7 @@
66 @TOOLKIT_COCOA_FALSE@ $(SYSTEM_LIBS) \
67 @TOOLKIT_COCOA_FALSE@ -avoid-version \
68 @TOOLKIT_COCOA_FALSE@ -module \
69-@TOOLKIT_COCOA_FALSE@ -no-undefined
70+@TOOLKIT_COCOA_FALSE@ -Wl,--no-undefined
71
72 @TOOLKIT_COCOA_FALSE@collab_la_SOURCES =
73 @TOOLKIT_COCOA_FALSE@nodist_EXTRA_collab_la_SOURCES = dummy.cpp
74
75--- a/plugins/paint/Makefile.in 2010-06-13 23:17:52.000000000 +0200
76+++ b/plugins/paint/Makefile.in 2014-09-06 11:03:21.315951227 +0200
77@@ -432,7 +432,7 @@
78 $(PAINT_LIBS) \
79 -avoid-version \
80 -module \
81- -no-undefined
82+ -Wl,--no-undefined
83
84 paint_la_SOURCES =
85 nodist_EXTRA_paint_la_SOURCES = dummy.cpp
86
87--- a/plugins/garble/Makefile.in 2010-06-13 23:17:45.000000000 +0200
88+++ b/plugins/garble/Makefile.in 2014-09-06 11:03:21.335951227 +0200
89@@ -433,7 +433,7 @@
90 @TOOLKIT_COCOA_FALSE@ $(GARBLE_LIBS) \
91 @TOOLKIT_COCOA_FALSE@ -avoid-version \
92 @TOOLKIT_COCOA_FALSE@ -module \
93-@TOOLKIT_COCOA_FALSE@ -no-undefined
94+@TOOLKIT_COCOA_FALSE@ -Wl,--no-undefined
95
96 @TOOLKIT_COCOA_FALSE@garble_la_SOURCES =
97 @TOOLKIT_COCOA_FALSE@nodist_EXTRA_garble_la_SOURCES = dummy.cpp
98
99--- a/plugins/latex/Makefile.in 2010-06-13 23:17:48.000000000 +0200
100+++ b/plugins/latex/Makefile.in 2014-09-06 11:03:21.359951228 +0200
101@@ -432,7 +432,7 @@
102 $(LATEX_LIBS) \
103 -avoid-version \
104 -module \
105- -no-undefined
106+ -Wl,--no-undefined
107
108 latex_la_SOURCES =
109 nodist_EXTRA_latex_la_SOURCES = dummy.cpp
110
111--- a/plugins/mht/Makefile.in 2010-06-13 23:17:49.000000000 +0200
112+++ b/plugins/mht/Makefile.in 2014-09-06 11:03:21.379951229 +0200
113@@ -428,7 +428,7 @@
114 $(MHT_LIBS) \
115 -avoid-version \
116 -module \
117- -no-undefined
118+ -Wl,--no-undefined
119
120 mht_la_SOURCES =
121 nodist_EXTRA_mht_la_SOURCES = dummy.cpp
122
123--- a/plugins/google/Makefile.in 2010-06-13 23:17:46.000000000 +0200
124+++ b/plugins/google/Makefile.in 2014-09-06 11:03:21.399951230 +0200
125@@ -431,7 +431,7 @@
126 $(GOOGLE_LIBS) \
127 -avoid-version \
128 -module \
129- -no-undefined
130+ -Wl,--no-undefined
131
132 google_la_SOURCES =
133 nodist_EXTRA_google_la_SOURCES = dummy.cpp
134
135--- a/plugins/babelfish/Makefile.in 2010-06-13 23:17:40.000000000 +0200
136+++ b/plugins/babelfish/Makefile.in 2014-09-06 11:03:21.419951230 +0200
137@@ -431,7 +431,7 @@
138 $(BABELFISH_LIBS) \
139 -avoid-version \
140 -module \
141- -no-undefined
142+ -Wl,--no-undefined
143
144 babelfish_la_SOURCES =
145 nodist_EXTRA_babelfish_la_SOURCES = dummy.cpp
146
147--- a/plugins/opendocument/Makefile.in 2010-06-13 23:17:50.000000000 +0200
148+++ b/plugins/opendocument/Makefile.in 2014-09-06 11:03:21.443951231 +0200
149@@ -436,7 +436,7 @@
150 $(OPENDOCUMENT_LIBS) \
151 -avoid-version \
152 -module \
153- -no-undefined
154+ -Wl,--no-undefined
155
156 opendocument_la_SOURCES =
157
158--- a/plugins/opml/Makefile.in 2010-06-13 23:17:51.000000000 +0200
159+++ b/plugins/opml/Makefile.in 2014-09-06 11:03:21.463951232 +0200
160@@ -431,7 +431,7 @@
161 $(OPML_LIBS) \
162 -avoid-version \
163 -module \
164- -no-undefined
165+ -Wl,--no-undefined
166
167 opml_la_SOURCES =
168 nodist_EXTRA_opml_la_SOURCES = dummy.cpp
169
170--- a/plugins/gimp/Makefile.in 2010-06-13 23:17:46.000000000 +0200
171+++ b/plugins/gimp/Makefile.in 2014-09-06 11:03:21.483951232 +0200
172@@ -431,7 +431,7 @@
173 $(GIMP_LIBS) \
174 -avoid-version \
175 -module \
176- -no-undefined
177+ -Wl,--no-undefined
178
179 gimp_la_SOURCES =
180 nodist_EXTRA_gimp_la_SOURCES = dummy.cpp
181
182--- a/plugins/mswrite/Makefile.in 2010-06-13 23:17:49.000000000 +0200
183+++ b/plugins/mswrite/Makefile.in 2014-09-06 11:03:21.507951233 +0200
184@@ -431,7 +431,7 @@
185 $(MSWRITE_LIBS) \
186 -avoid-version \
187 -module \
188- -no-undefined
189+ -Wl,--no-undefined
190
191 mswrite_la_SOURCES =
192 nodist_EXTRA_mswrite_la_SOURCES = dummy.cpp
193
194--- a/plugins/wordperfect/Makefile.in 2010-06-13 23:17:55.000000000 +0200
195+++ b/plugins/wordperfect/Makefile.in 2014-09-06 11:03:21.527951234 +0200
196@@ -429,7 +429,7 @@
197 $(WORDPERFECT_LIBS) \
198 -avoid-version \
199 -module \
200- -no-undefined
201+ -Wl,--no-undefined
202
203 wordperfect_la_SOURCES =
204 nodist_EXTRA_wordperfect_la_SOURCES = dummy.cpp
205
206--- a/plugins/pdb/Makefile.in 2010-06-13 23:17:53.000000000 +0200
207+++ b/plugins/pdb/Makefile.in 2014-09-06 11:03:21.547951234 +0200
208@@ -431,7 +431,7 @@
209 $(PDB_LIBS) \
210 -avoid-version \
211 -module \
212- -no-undefined
213+ -Wl,--no-undefined
214
215 pdb_la_SOURCES =
216 nodist_EXTRA_pdb_la_SOURCES = dummy.cpp
217
218--- a/plugins/ots/Makefile.in 2010-06-13 23:17:52.000000000 +0200
219+++ b/plugins/ots/Makefile.in 2014-09-06 11:03:21.571951235 +0200
220@@ -425,7 +425,7 @@
221 $(OTS_LIBS) \
222 -avoid-version \
223 -module \
224- -no-undefined
225+ -Wl,--no-undefined
226
227 ots_la_SOURCES =
228 EXTRA_DIST = \
229
230--- a/plugins/wml/Makefile.in 2010-06-13 23:17:55.000000000 +0200
231+++ b/plugins/wml/Makefile.in 2014-09-06 11:03:21.591951236 +0200
232@@ -431,7 +431,7 @@
233 $(WML_LIBS) \
234 -avoid-version \
235 -module \
236- -no-undefined
237+ -Wl,--no-undefined
238
239 wml_la_SOURCES =
240 nodist_EXTRA_wml_la_SOURCES = dummy.cpp
241
242--- a/plugins/bmp/Makefile.in 2010-06-13 23:17:40.000000000 +0200
243+++ b/plugins/bmp/Makefile.in 2014-09-06 11:03:21.615951237 +0200
244@@ -431,7 +431,7 @@
245 $(BMP_LIBS) \
246 -avoid-version \
247 -module \
248- -no-undefined
249+ -Wl,--no-undefined
250
251 bmp_la_SOURCES =
252 nodist_EXTRA_bmp_la_SOURCES = dummy.cpp
253
254--- a/plugins/applix/Makefile.in 2010-06-13 23:17:40.000000000 +0200
255+++ b/plugins/applix/Makefile.in 2014-09-06 11:03:21.635951237 +0200
256@@ -431,7 +431,7 @@
257 $(APPLIX_LIBS) \
258 -avoid-version \
259 -module \
260- -no-undefined
261+ -Wl,--no-undefined
262
263 applix_la_SOURCES =
264
265--- a/plugins/iscii/Makefile.in 2010-06-13 23:17:47.000000000 +0200
266+++ b/plugins/iscii/Makefile.in 2014-09-06 11:03:21.659951238 +0200
267@@ -431,7 +431,7 @@
268 $(ISCII_LIBS) \
269 -avoid-version \
270 -module \
271- -no-undefined
272+ -Wl,--no-undefined
273
274 iscii_la_SOURCES =
275 nodist_EXTRA_iscii_la_SOURCES = dummy.cpp
276
277--- a/plugins/gdict/Makefile.in 2010-06-13 23:17:46.000000000 +0200
278+++ b/plugins/gdict/Makefile.in 2014-09-06 11:03:21.679951239 +0200
279@@ -429,7 +429,7 @@
280 @TOOLKIT_GTK_TRUE@ $(GDICT_LIBS) \
281 @TOOLKIT_GTK_TRUE@ -avoid-version \
282 @TOOLKIT_GTK_TRUE@ -module \
283-@TOOLKIT_GTK_TRUE@ -no-undefined
284+@TOOLKIT_GTK_TRUE@ -Wl,--no-undefined
285
286 @TOOLKIT_GTK_TRUE@gdict_la_SOURCES =
287 @TOOLKIT_GTK_TRUE@EXTRA_DIST = \
288
289--- a/plugins/openwriter/Makefile.in 2010-06-13 23:17:50.000000000 +0200
290+++ b/plugins/openwriter/Makefile.in 2014-09-06 11:03:21.699951239 +0200
291@@ -432,7 +432,7 @@
292 $(OPENWRITER_LIBS) \
293 -avoid-version \
294 -module \
295- -no-undefined
296+ -Wl,--no-undefined
297
298 openwriter_la_SOURCES =
299 nodist_EXTRA_openwriter_la_SOURCES = dummy.cpp
300
301--- a/plugins/sdw/Makefile.in 2010-06-13 23:17:54.000000000 +0200
302+++ b/plugins/sdw/Makefile.in 2014-09-06 11:03:21.723951240 +0200
303@@ -431,7 +431,7 @@
304 $(SDW_LIBS) \
305 -avoid-version \
306 -module \
307- -no-undefined
308+ -Wl,--no-undefined
309
310 sdw_la_SOURCES =
311 nodist_EXTRA_sdw_la_SOURCES = dummy.cpp
312
313--- a/plugins/grammar/Makefile.in 2010-06-13 23:17:47.000000000 +0200
314+++ b/plugins/grammar/Makefile.in 2014-09-06 11:03:21.747951241 +0200
315@@ -430,7 +430,7 @@
316 $(GRAMMAR_LIBS) \
317 -avoid-version \
318 -module \
319- -no-undefined
320+ -Wl,--no-undefined
321
322 nodist_EXTRA_grammar_la_SOURCES = dummy.cpp
323 grammar_la_SOURCES =
324
325--- a/plugins/urldict/Makefile.in 2010-06-13 23:17:54.000000000 +0200
326+++ b/plugins/urldict/Makefile.in 2014-09-06 11:03:21.779951242 +0200
327@@ -431,7 +431,7 @@
328 $(URLDICT_LIBS) \
329 -avoid-version \
330 -module \
331- -no-undefined
332+ -Wl,--no-undefined
333
334 urldict_la_SOURCES =
335 nodist_EXTRA_urldict_la_SOURCES = dummy.cpp
336
337--- a/plugins/wmf/Makefile.in 2010-06-13 23:17:55.000000000 +0200
338+++ b/plugins/wmf/Makefile.in 2014-09-06 11:03:21.799951243 +0200
339@@ -428,7 +428,7 @@
340 $(WMF_LIBS) \
341 -avoid-version \
342 -module \
343- -no-undefined
344+ -Wl,--no-undefined
345
346 wmf_la_SOURCES =
347 nodist_EXTRA_wmf_la_SOURCES = dummy.cpp
348
349--- a/plugins/mif/Makefile.in 2010-06-13 23:17:49.000000000 +0200
350+++ b/plugins/mif/Makefile.in 2014-09-06 11:03:21.819951243 +0200
351@@ -431,7 +431,7 @@
352 $(MIF_LIBS) \
353 -avoid-version \
354 -module \
355- -no-undefined
356+ -Wl,--no-undefined
357
358 mif_la_SOURCES =
359 nodist_EXTRA_mif_la_SOURCES = dummy.cpp
360
361--- a/plugins/eml/Makefile.in 2010-06-13 23:17:45.000000000 +0200
362+++ b/plugins/eml/Makefile.in 2014-09-06 11:03:21.843951244 +0200
363@@ -431,7 +431,7 @@
364 $(EML_LIBS) \
365 -avoid-version \
366 -module \
367- -no-undefined
368+ -Wl,--no-undefined
369
370 eml_la_SOURCES =
371 nodist_EXTRA_eml_la_SOURCES = dummy.cpp
372
373--- a/plugins/openxml/Makefile.in 2010-06-13 23:17:51.000000000 +0200
374+++ b/plugins/openxml/Makefile.in 2014-09-06 11:03:21.863951245 +0200
375@@ -434,7 +434,7 @@
376 $(OPENXML_LIBS) \
377 -avoid-version \
378 -module \
379- -no-undefined
380+ -Wl,--no-undefined
381
382 openxml_la_SOURCES =
383 nodist_EXTRA_openxml_la_SOURCES = dummy.cpp
384
385--- a/plugins/goffice/Makefile.in 2010-06-13 23:17:46.000000000 +0200
386+++ b/plugins/goffice/Makefile.in 2014-09-06 11:03:21.883951245 +0200
387@@ -425,7 +425,7 @@
388 $(GOFFICE_LIBS) \
389 -avoid-version \
390 -module \
391- -no-undefined
392+ -Wl,--no-undefined
393
394 goffice_la_SOURCES =
395 EXTRA_DIST = \
396
397--- a/plugins/passepartout/Makefile.in 2010-06-13 23:17:52.000000000 +0200
398+++ b/plugins/passepartout/Makefile.in 2014-09-06 11:03:21.907951246 +0200
399@@ -433,7 +433,7 @@
400 $(PASSEPARTOUT_LIBS) \
401 -avoid-version \
402 -module \
403- -no-undefined
404+ -Wl,--no-undefined
405
406 passepartout_la_SOURCES =
407 nodist_EXTRA_passepartout_la_SOURCES = dummy.cpp
408
409--- a/plugins/clarisworks/Makefile.in 2010-06-13 23:17:41.000000000 +0200
410+++ b/plugins/clarisworks/Makefile.in 2014-09-06 11:03:21.927951247 +0200
411@@ -433,7 +433,7 @@
412 $(CLARISWORKS_LIBS) \
413 -avoid-version \
414 -module \
415- -no-undefined
416+ -Wl,--no-undefined
417
418 clarisworks_la_SOURCES =
419 nodist_EXTRA_clarisworks_la_SOURCES = dummy.cpp
420
421--- a/plugins/command/Makefile.in 2010-06-13 23:17:44.000000000 +0200
422+++ b/plugins/command/Makefile.in 2014-09-06 11:03:21.947951247 +0200
423@@ -426,7 +426,7 @@
424 @TOOLKIT_COCOA_FALSE@ $(COMMAND_LIBS) \
425 @TOOLKIT_COCOA_FALSE@ -avoid-version \
426 @TOOLKIT_COCOA_FALSE@ -module \
427-@TOOLKIT_COCOA_FALSE@ -no-undefined
428+@TOOLKIT_COCOA_FALSE@ -Wl,--no-undefined
429
430 @TOOLKIT_COCOA_FALSE@command_la_SOURCES =
431 all: all-recursive
432
433--- a/plugins/presentation/Makefile.in 2010-06-13 23:17:53.000000000 +0200
434+++ b/plugins/presentation/Makefile.in 2014-09-06 11:03:21.971951248 +0200
435@@ -433,7 +433,7 @@
436 $(PRESENTATION_LIBS) \
437 -avoid-version \
438 -module \
439- -no-undefined
440+ -Wl,--no-undefined
441
442 presentation_la_SOURCES =
443 nodist_EXTRA_presentation_la_SOURCES = dummy.cpp
444
445--- a/plugins/psion/Makefile.in 2010-06-13 23:17:53.000000000 +0200
446+++ b/plugins/psion/Makefile.in 2014-09-06 11:03:21.991951249 +0200
447@@ -427,7 +427,7 @@
448 $(PSION_LIBS) \
449 -avoid-version \
450 -module \
451- -no-undefined
452+ -Wl,--no-undefined
453
454 psion_la_SOURCES =
455 EXTRA_DIST = \
456
457--- a/plugins/rsvg/Makefile.in 2010-06-13 23:17:53.000000000 +0200
458+++ b/plugins/rsvg/Makefile.in 2014-09-06 11:03:22.011951250 +0200
459@@ -430,7 +430,7 @@
460 rsvg_la_LDFLAGS = \
461 -avoid-version \
462 -module \
463- -no-undefined
464+ -Wl,--no-undefined
465
466 rsvg_la_SOURCES =
467 nodist_EXTRA_rsvg_la_SOURCES = dummy.cpp
468
469--- a/plugins/wpg/Makefile.in 2010-06-13 23:17:55.000000000 +0200
470+++ b/plugins/wpg/Makefile.in 2014-09-06 11:03:22.035951250 +0200
471@@ -428,7 +428,7 @@
472 $(WPG_LIBS) \
473 -avoid-version \
474 -module \
475- -no-undefined
476+ -Wl,--no-undefined
477
478 wpg_la_SOURCES =
479 nodist_EXTRA_wpg_la_SOURCES = dummy.cpp
480
481--- a/plugins/t602/Makefile.in 2010-06-13 23:17:54.000000000 +0200
482+++ b/plugins/t602/Makefile.in 2014-09-06 11:03:22.055951251 +0200
483@@ -431,7 +431,7 @@
484 $(T602_LIBS) \
485 -avoid-version \
486 -module \
487- -no-undefined
488+ -Wl,--no-undefined
489
490 t602_la_SOURCES =
491 nodist_EXTRA_t602_la_SOURCES = dummy.cpp
492
493--- a/plugins/docbook/Makefile.in 2010-06-13 23:17:44.000000000 +0200
494+++ b/plugins/docbook/Makefile.in 2014-09-06 11:03:22.075951252 +0200
495@@ -431,7 +431,7 @@
496 $(DOCBOOK_LIBS) \
497 -avoid-version \
498 -module \
499- -no-undefined
500+ -Wl,--no-undefined
501
502 docbook_la_SOURCES =
503 nodist_EXTRA_docbook_la_SOURCES = dummy.cpp
504
505--- a/plugins/hrtext/Makefile.in 2010-06-13 23:17:47.000000000 +0200
506+++ b/plugins/hrtext/Makefile.in 2014-09-06 11:03:22.099951252 +0200
507@@ -431,7 +431,7 @@
508 $(HRTEXT_LIBS) \
509 -avoid-version \
510 -module \
511- -no-undefined
512+ -Wl,--no-undefined
513
514 hrtext_la_SOURCES =
515 nodist_EXTRA_hrtext_la_SOURCES = dummy.cpp
516
517--- a/plugins/s5/Makefile.in 2010-06-13 23:17:54.000000000 +0200
518+++ b/plugins/s5/Makefile.in 2014-09-06 11:03:22.119951253 +0200
519@@ -431,7 +431,7 @@
520 $(S5_LIBS) \
521 -avoid-version \
522 -module \
523- -no-undefined
524+ -Wl,--no-undefined
525
526 s5_la_SOURCES =
527 nodist_EXTRA_s5_la_SOURCES = dummy.cpp
528
529--- a/plugins/hancom/Makefile.in 2010-06-13 23:17:47.000000000 +0200
530+++ b/plugins/hancom/Makefile.in 2014-09-06 11:03:22.143951254 +0200
531@@ -431,7 +431,7 @@
532 $(HANCOM_LIBS) \
533 -avoid-version \
534 -module \
535- -no-undefined
536+ -Wl,--no-undefined
537
538 hancom_la_SOURCES =
539 nodist_EXTRA_hancom_la_SOURCES = dummy.cpp
540
541--- a/plugins/aiksaurus/Makefile.in 2010-06-13 23:17:40.000000000 +0200
542+++ b/plugins/aiksaurus/Makefile.in 2014-09-06 11:03:22.163951255 +0200
543@@ -428,7 +428,7 @@
544 $(AIKSAURUS_LIBS) \
545 -avoid-version \
546 -module \
547- -no-undefined
548+ -Wl,--no-undefined
549
550 aiksaurus_la_SOURCES =
551 all: all-recursive
552
553--- a/plugins/kword/Makefile.in 2010-06-13 23:17:48.000000000 +0200
554+++ b/plugins/kword/Makefile.in 2014-09-06 11:03:22.183951255 +0200
555@@ -431,7 +431,7 @@
556 $(KWORD_LIBS) \
557 -avoid-version \
558 -module \
559- -no-undefined
560+ -Wl,--no-undefined
561
562 kword_la_SOURCES =
563 nodist_EXTRA_kword_la_SOURCES = dummy.cpp
564
565--- a/plugins/freetranslation/Makefile.in 2010-06-13 23:17:45.000000000 +0200
566+++ b/plugins/freetranslation/Makefile.in 2014-09-06 11:03:22.207951256 +0200
567@@ -433,7 +433,7 @@
568 $(FREETRANSLATION_LIBS) \
569 -avoid-version \
570 -module \
571- -no-undefined
572+ -Wl,--no-undefined
573
574 freetranslation_la_SOURCES =
575 nodist_EXTRA_freetranslation_la_SOURCES = dummy.cpp
576
577--- a/plugins/mathview/Makefile.in 2010-06-13 23:17:48.000000000 +0200
578+++ b/plugins/mathview/Makefile.in 2014-09-06 11:03:22.227951257 +0200
579@@ -429,7 +429,7 @@
580 $(MATHVIEW_LIBS) \
581 -avoid-version \
582 -module \
583- -no-undefined
584+ -Wl,--no-undefined
585
586 nodist_EXTRA_mathview_la_SOURCES = dummy.cpp
587 mathview_la_SOURCES =
588
589--- a/src/Makefile.in 2014-09-06 08:42:45.000000000 +0200
590+++ b/src/Makefile.in 2014-09-06 11:17:48.287979611 +0200
591@@ -538,7 +538,7 @@
592
593 @TOOLKIT_COCOA_TRUE@AbiWord_LDFLAGS = \
594 @TOOLKIT_COCOA_TRUE@ $(DEPS_LIBS) \
595-@TOOLKIT_COCOA_TRUE@ --no-undefined \
596+@TOOLKIT_COCOA_TRUE@ -Wl,--no-undefined \
597 @TOOLKIT_COCOA_TRUE@ -avoid-version \
598 @TOOLKIT_COCOA_TRUE@ -export-dynamic \
599 @TOOLKIT_COCOA_TRUE@ -headerpad_max_install_names
600@@ -554,7 +554,7 @@
601
602 @TOOLKIT_COCOA_FALSE@abiword_LDFLAGS = \
603 @TOOLKIT_COCOA_FALSE@ $(platform_ldflags) \
604-@TOOLKIT_COCOA_FALSE@ --no-undefined \
605+@TOOLKIT_COCOA_FALSE@ -Wl,--no-undefined \
606 @TOOLKIT_COCOA_FALSE@ -avoid-version \
607 @TOOLKIT_COCOA_FALSE@ -export-dynamic
608
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 00000000000..e8ce02899db
--- /dev/null
+++ b/gnu/packages/patches/abiword-use-proper-png-api.patch
@@ -0,0 +1,175 @@
1Do not directly access the fields of png_struct and png_info.
2
3--- a/plugins/mswrite/xp/ie_imp_MSWrite.cpp 2010-05-30 21:20:53.000000000 +0200
4+++ b/plugins/mswrite/xp/ie_imp_MSWrite.cpp 2014-09-07 06:58:04.162298089 +0200
5@@ -891,7 +891,7 @@
6 info_ptr = png_create_info_struct (png_ptr);
7 if (!info_ptr) goto err;
8
9- if (setjmp (png_ptr->jmpbuf) ) {
10+ if (setjmp (png_jmpbuf(png_ptr)) ) {
11 png_destroy_write_struct (&png_ptr, &info_ptr);
12 goto err;
13 }
14
15--- a/src/af/gr/win/gr_Win32Image.cpp 2009-07-08 19:33:53.000000000 +0200
16+++ b/src/af/gr/win/gr_Win32Image.cpp 2014-09-07 06:58:04.198298090 +0200
17@@ -148,7 +148,7 @@
18 info_ptr = png_create_info_struct(png_ptr);
19
20 // libpng will longjmp back to here if a fatal error occurs
21- if (setjmp(png_ptr->jmpbuf))
22+ if (setjmp(png_jmpbuf(png_ptr)))
23 {
24 /* If we get here, we had a problem reading the file */
25 png_destroy_write_struct(&png_ptr, (png_infopp)NULL);
26@@ -547,7 +547,7 @@
27 * the normal method of doing things with libpng). REQUIRED unless you
28 * set up your own error handlers in the png_create_read_struct() earlier.
29 */
30- if (setjmp(png_ptr->jmpbuf))
31+ if (setjmp(png_jmpbuf(png_ptr)))
32 {
33 /* Free all of the memory associated with the png_ptr and info_ptr */
34 png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
35
36--- a/src/af/util/xp/ut_png.cpp 2008-02-24 04:33:07.000000000 +0100
37+++ b/src/af/util/xp/ut_png.cpp 2014-09-07 06:58:04.230298091 +0200
38@@ -71,7 +71,7 @@
39 * the normal method of doing things with libpng). REQUIRED unless you
40 * set up your own error handlers in the png_create_read_struct() earlier.
41 */
42- if (setjmp(png_ptr->jmpbuf))
43+ if (setjmp(png_jmpbuf(png_ptr)))
44 {
45 /* Free all of the memory associated with the png_ptr and info_ptr */
46 png_destroy_read_struct(&png_ptr, &info_ptr, static_cast<png_infopp>(NULL));
47
48--- a/plugins/bmp/xp/ie_impGraphic_BMP.cpp 2009-06-25 06:02:06.000000000 +0200
49+++ b/plugins/bmp/xp/ie_impGraphic_BMP.cpp 2014-09-07 06:59:08.814300205 +0200
50@@ -313,7 +313,7 @@
51 * the normal method of doing things with libpng). REQUIRED unless you
52 * set up your own error handlers in the png_create_read_struct() earlier.
53 */
54- if (setjmp(m_pPNG->jmpbuf))
55+ if (setjmp(png_jmpbuf(m_pPNG)))
56 {
57 /* Free all of the memory associated with the png_ptr and info_ptr */
58 png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
59@@ -332,7 +332,7 @@
60 UT_Error IE_ImpGraphic_BMP::Convert_BMP_Pallet(UT_ByteBuf* pBB)
61 {
62 /* Reset error handling for libpng */
63- if (setjmp(m_pPNG->jmpbuf))
64+ if (setjmp(png_jmpbuf(m_pPNG)))
65 {
66 png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
67 return UT_ERROR;
68@@ -372,7 +372,7 @@
69 UT_Error IE_ImpGraphic_BMP::Convert_BMP(UT_ByteBuf* pBB)
70 {
71 /* Reset error handling for libpng */
72- if (setjmp(m_pPNG->jmpbuf))
73+ if (setjmp(png_jmpbuf(m_pPNG)))
74 {
75 png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
76 return UT_ERROR;
77
78--- a/plugins/rsvg/xp/AbiRSVG.cpp 2009-06-25 06:02:06.000000000 +0200
79+++ b/plugins/rsvg/xp/AbiRSVG.cpp 2014-09-07 06:59:08.914300209 +0200
80@@ -145,7 +145,7 @@
81 return error;
82 }
83
84- if (setjmp(m_pPNG->jmpbuf))
85+ if (setjmp(png_jmpbuf(m_pPNG)))
86 {
87 g_object_unref(G_OBJECT(pixbuf));
88 png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
89@@ -234,7 +234,7 @@
90 * the normal method of doing things with libpng). REQUIRED unless you
91 * set up your own error handlers in the png_create_read_struct() earlier.
92 */
93- if (setjmp(m_pPNG->jmpbuf))
94+ if (setjmp(png_jmpbuf(m_pPNG)))
95 {
96 /* Free all of the memory associated with the png_ptr and info_ptr */
97 png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
98
99--- a/src/wp/impexp/win/ie_impGraphic_Win32Native.cpp 2009-07-07 18:50:18.000000000 +0200
100+++ b/src/wp/impexp/win/ie_impGraphic_Win32Native.cpp 2014-09-07 06:59:09.018300212 +0200
101@@ -501,7 +501,7 @@
102 * the normal method of doing things with libpng). REQUIRED unless you
103 * set up your own error handlers in the png_create_read_struct() earlier.
104 */
105- if (setjmp(m_pPNG->jmpbuf))
106+ if (setjmp(png_jmpbuf(m_pPNG)))
107 {
108 /* Free all of the memory associated with the png_ptr and info_ptr */
109 png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
110@@ -520,7 +520,7 @@
111 UT_Error IE_ImpGraphic_Win32Native::Convert_BMP_Palette(UT_ByteBuf* pBB)
112 {
113 /* Reset error handling for libpng */
114- if (setjmp(m_pPNG->jmpbuf))
115+ if (setjmp(png_jmpbuf(m_pPNG)))
116 {
117 png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
118 return UT_ERROR;
119@@ -560,7 +560,7 @@
120 UT_Error IE_ImpGraphic_Win32Native::Convert_BMP(UT_ByteBuf* pBB)
121 {
122 /* Reset error handling for libpng */
123- if (setjmp(m_pPNG->jmpbuf))
124+ if (setjmp(png_jmpbuf(m_pPNG)))
125 {
126 png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
127 return UT_ERROR;
128
129--- a/src/wp/impexp/gtk/ie_impGraphic_GdkPixbuf.cpp 2009-07-01 06:02:04.000000000 +0200
130+++ b/src/wp/impexp/gtk/ie_impGraphic_GdkPixbuf.cpp 2014-09-07 06:59:09.138300216 +0200
131@@ -185,7 +185,7 @@
132 /** needed for the stejmp context */
133 UT_Error IE_ImpGraphic_GdkPixbuf::_png_write(GdkPixbuf * pixbuf)
134 {
135- if (setjmp(m_pPNG->jmpbuf))
136+ if (setjmp(png_jmpbuf(m_pPNG)))
137 {
138 DELETEP(m_pPngBB);
139 png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
140@@ -446,7 +446,7 @@
141 * the normal method of doing things with libpng). REQUIRED unless you
142 * set up your own error handlers in the png_create_read_struct() earlier.
143 */
144- if (setjmp(m_pPNG->jmpbuf))
145+ if (setjmp(png_jmpbuf(m_pPNG)))
146 {
147 /* Free all of the memory associated with the png_ptr and info_ptr */
148 png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
149
150--- a/plugins/bmp/xp/ie_impGraphic_BMP.cpp 2014-09-07 07:03:02.000000000 +0200
151+++ b/plugins/bmp/xp/ie_impGraphic_BMP.cpp 2014-09-07 12:35:33.306961036 +0200
152@@ -191,7 +191,11 @@
153
154 /* Clean Up Memory Used */
155
156- FREEP(m_pPNGInfo->palette);
157+
158+ png_colorp palette;
159+ int ignored_placeholder;
160+ png_get_PLTE(m_pPNG, m_pPNGInfo, &palette, &ignored_placeholder);
161+ FREEP(palette);
162 DELETEP(pBB);
163 png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
164
165--- a/plugins/garble/xp/abiword-garble-png.cpp 2009-09-05 17:34:44.000000000 +0200
166+++ b/plugins/garble/xp/abiword-garble-png.cpp 2014-09-08 00:15:04.508335153 +0200
167@@ -79,7 +79,7 @@
168 png_set_strip_alpha( png_ptr );
169 png_set_interlace_handling( png_ptr );
170 png_set_bgr( png_ptr );
171- rowbytes = info_ptr->rowbytes;
172+ rowbytes = png_get_rowbytes( png_ptr, info_ptr );
173 png_destroy_read_struct( &png_ptr, &info_ptr, NULL );
174 }
175
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 00000000000..f27f32f30ba
--- /dev/null
+++ b/gnu/packages/patches/abiword-wmf-version-lookup-fix.patch
@@ -0,0 +1,28 @@
1The way the configure script determines the version of libwmf is by temporarily
2making dots separator characters, but since the file name of the program which
3returns the version contains dots in Guix (the version in the store entry name),
4doing it this way will always fail.
5
6This is a simple guix-specific fix for the problem.
7
8--- a/configure 2010-06-13 23:17:37.000000000 +0200
9+++ b/configure 2014-09-08 17:31:52.102371800 +0200
10@@ -21140,13 +21140,11 @@
11 $as_echo "$as_me: WARNING: wmf plugin: program libwmf-config not found in path" >&2;}
12 fi
13 else
14- IFS_old="$IFS"
15- IFS='.'
16- set -- `$libwmfconfig --version`
17- libwmf_major_found="${1}"
18- libwmf_minor_found="${2}"
19- libwmf_micro_found="${3}"
20- IFS="$IFS_old"
21+ libwmf_fullver_found=`$libwmfconfig --version`
22+ libwmf_major_found=$(echo $libwmf_fullver_found | cut -d . -f 1)
23+ libwmf_minor_found=$(echo $libwmf_fullver_found | cut -d . -f 2)
24+ libwmf_micro_found=$(echo $libwmf_fullver_found | cut -d . -f 3)
25+
26 if test "$libwmf_major_found" -gt "$libwmf_major_req"; then
27 wmf_deps="yes"
28 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 00000000000..6795f10ac73
--- /dev/null
+++ b/gnu/packages/patches/lua51-liblua-so.patch
@@ -0,0 +1,65 @@
1
2Patch the two Makefile to also create liblua.so
3Original patch by Allan McRae <allan@archlinux.org>
4for Archlinux
5
6
7diff -ruN lua-5.1.5/Makefile lua-5.1.5-new/Makefile
8--- lua-5.1.5/Makefile 2012-02-10 10:50:23.000000000 +0100
9+++ lua-5.1.5-new/Makefile 2014-09-10 20:17:28.913951433 +0200
10@@ -43,7 +43,7 @@
11 # What to install.
12 TO_BIN= lua luac
13 TO_INC= lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp
14-TO_LIB= liblua.a
15+TO_LIB= liblua.a liblua.so liblua.so.${V}
16 TO_MAN= lua.1 luac.1
17
18 # Lua version and release.
19@@ -53,7 +53,7 @@
20 all: $(PLAT)
21
22 $(PLATS) clean:
23- cd src && $(MAKE) $@
24+ cd src && $(MAKE) $@ V=$(V) R=$(R)
25
26 test: dummy
27 src/lua test/hello.lua
28diff -ruN lua-5.1.5/src/Makefile lua-5.1.5-new/src/Makefile
29--- lua-5.1.5/src/Makefile 2012-02-13 21:41:22.000000000 +0100
30+++ lua-5.1.5-new/src/Makefile 2014-09-10 20:16:09.982952152 +0200
31@@ -8,7 +8,7 @@
32 PLAT= none
33
34 CC= gcc
35-CFLAGS= -O2 -Wall $(MYCFLAGS)
36+CFLAGS= -O2 -Wall $(MYCFLAGS) -fPIC
37 AR= ar rcu
38 RANLIB= ranlib
39 RM= rm -f
40@@ -34,9 +34,10 @@
41
42 LUAC_T= luac
43 LUAC_O= luac.o print.o
44+LUA_SO= liblua.so
45
46 ALL_O= $(CORE_O) $(LIB_O) $(LUA_O) $(LUAC_O)
47-ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
48+ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO)
49 ALL_A= $(LUA_A)
50
51 default: $(PLAT)
52@@ -57,6 +58,13 @@
53 $(LUAC_T): $(LUAC_O) $(LUA_A)
54 $(CC) -o $@ $(MYLDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS)
55
56+$(LUA_SO): $(CORE_O) $(LIB_O)
57+ $(CC) -shared -ldl -Wl,-soname,$(LUA_SO).$(V) -o $@.$(R) $? -lm $(MYLDFLAGS)
58+ ln -sf $(LUA_SO).$(R) $(LUA_SO).$(V)
59+ ln -sf $(LUA_SO).$(R) $(LUA_SO)
60+
61+
62+
63 clean:
64 $(RM) $(ALL_T) $(ALL_O)
65
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 00000000000..c23c7c36a12
--- /dev/null
+++ b/gnu/packages/patches/ots-no-include-missing-file.patch
@@ -0,0 +1,14 @@
1The file $(top_srcdir)/gtk-doc.make doesn't exist, so don't include it.
2
3--- a/doc/Makefile.in 2007-04-08 20:17:25.000000000 +0200
4+++ b/doc/Makefile.in 2014-09-06 23:19:41.413397662 +0200
5@@ -240,9 +240,6 @@
6 distclean-generic clean-generic maintainer-clean-generic clean \
7 mostlyclean distclean maintainer-clean
8
9-
10-include $(top_srcdir)/gtk-doc.make
11-
12 # Tell versions [3.59,3.63) of GNU make to not export all variables.
13 # Otherwise a system limit (for SysV at least) may be exceeded.
14 .NOEXPORT:
diff --git a/gnu/packages/postgresql.scm b/gnu/packages/postgresql.scm
deleted file mode 100644
index d6b505f6a26..00000000000
--- a/gnu/packages/postgresql.scm
+++ /dev/null
@@ -1,52 +0,0 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 David Thompson <davet@gnu.org>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (gnu packages postgresql)
20 #:use-module ((guix licenses) #:select (x11-style))
21 #:use-module (guix packages)
22 #:use-module (guix download)
23 #:use-module (guix build-system gnu)
24 #:use-module (gnu packages)
25 #:use-module (gnu packages compression)
26 #:use-module (gnu packages readline))
27
28(define-public postgresql
29 (package
30 (name "postgresql")
31 (version "9.3.5")
32 (source (origin
33 (method url-fetch)
34 (uri (string-append "http://ftp.postgresql.org/pub/source/v"
35 version "/postgresql-" version ".tar.gz"))
36 (sha256
37 (base32
38 "08kga00izykgvnx7hn995wc4zjqslspapaa8z63045p1ya14mr4g"))))
39 (build-system gnu-build-system)
40 (inputs
41 `(("readline" ,readline)
42 ("zlib" ,zlib)))
43 (home-page "http://www.postgresql.org/")
44 (synopsis "Powerful object-relational database system")
45 (description
46 "PostgreSQL is a powerful object-relational database system. It is fully
47ACID compliant, has full support for foreign keys, joins, views, triggers, and
48stored procedures (in multiple languages). It includes most SQL:2008 data
49types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, and
50TIMESTAMP. It also supports storage of binary large objects, including
51pictures, sounds, or video.")
52 (license (x11-style "file://COPYRIGHT"))))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 81b6c956a9d..3046c3b1e1f 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -36,7 +36,7 @@
36 #:use-module (gnu packages openssl) 36 #:use-module (gnu packages openssl)
37 #:use-module (gnu packages elf) 37 #:use-module (gnu packages elf)
38 #:use-module (gnu packages pkg-config) 38 #:use-module (gnu packages pkg-config)
39 #:use-module (gnu packages sqlite) 39 #:use-module (gnu packages databases)
40 #:use-module (gnu packages zip) 40 #:use-module (gnu packages zip)
41 #:use-module (gnu packages multiprecision) 41 #:use-module (gnu packages multiprecision)
42 #:use-module (guix packages) 42 #:use-module (guix packages)
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 4d367d8ab7a..ced7e905753 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -30,7 +30,7 @@
30 #:use-module (gnu packages icu4c) 30 #:use-module (gnu packages icu4c)
31 #:use-module (gnu packages image) 31 #:use-module (gnu packages image)
32 #:use-module (gnu packages linux) 32 #:use-module (gnu packages linux)
33 #:use-module (gnu packages mysql) 33 #:use-module (gnu packages databases)
34 #:use-module (gnu packages openssl) 34 #:use-module (gnu packages openssl)
35 #:use-module (gnu packages perl) 35 #:use-module (gnu packages perl)
36 #:use-module (gnu packages pkg-config) 36 #:use-module (gnu packages pkg-config)
diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm
index 7634e48018e..19a68be229e 100644
--- a/gnu/packages/rdf.scm
+++ b/gnu/packages/rdf.scm
@@ -23,7 +23,7 @@
23 #:use-module (guix build-system cmake) 23 #:use-module (guix build-system cmake)
24 #:use-module (guix build-system gnu) 24 #:use-module (guix build-system gnu)
25 #:use-module (gnu packages) 25 #:use-module (gnu packages)
26 #:use-module (gnu packages bdb) 26 #:use-module (gnu packages databases)
27 #:use-module (gnu packages boost) 27 #:use-module (gnu packages boost)
28 #:use-module (gnu packages compression) 28 #:use-module (gnu packages compression)
29 #:use-module (gnu packages curl) 29 #:use-module (gnu packages curl)
diff --git a/gnu/packages/recutils.scm b/gnu/packages/recutils.scm
deleted file mode 100644
index 7e78ac121d5..00000000000
--- a/gnu/packages/recutils.scm
+++ /dev/null
@@ -1,66 +0,0 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (gnu packages recutils)
20 #:use-module (guix licenses)
21 #:use-module (gnu packages)
22 #:use-module (guix packages)
23 #:use-module (guix download)
24 #:use-module (guix build-system gnu)
25 #:use-module (gnu packages emacs)
26 #:use-module (gnu packages check)
27 #:use-module (gnu packages algebra)
28 #:use-module (gnu packages curl)
29 #:use-module (gnu packages gnupg))
30
31(define-public recutils
32 (package
33 (name "recutils")
34 (version "1.7")
35 (source (origin
36 (method url-fetch)
37 (uri (string-append "mirror://gnu/recutils/recutils-"
38 version ".tar.gz"))
39 (sha256
40 (base32
41 "0cdwa4094x3yx7vn98xykvnlp9rngvd58d19vs3vh5hrvggccg93"))))
42 (build-system gnu-build-system)
43
44 ;; Running tests in parallel leads to test failures and crashes in
45 ;; torture/utils.
46 (arguments '(#:parallel-tests? #f))
47
48 (native-inputs `(("emacs" ,emacs)
49 ("bc" ,bc)))
50
51 ;; TODO: Add more optional inputs.
52 ;; FIXME: Our Bash doesn't have development headers (need for the 'readrec'
53 ;; built-in command), but it's not clear how to get them installed.
54 ;; See <https://lists.gnu.org/archive/html/bug-bash/2014-03/msg00125.html>.
55 (inputs `(("curl" ,curl)
56 ("libgcrypt" ,libgcrypt)
57 ("check" ,check)))
58 (synopsis "Manipulate plain text files as databases")
59 (description
60 "GNU Recutils is a set of tools and libraries for creating and
61manipulating text-based, human-editable databases. Despite being text-based,
62databases created with Recutils carry all of the expected features such as
63unique fields, primary keys, time stamps and more. Many different field types
64are supported, as is encryption.")
65 (license gpl3+)
66 (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 e19160a864d..00000000000
--- a/gnu/packages/sqlite.scm
+++ /dev/null
@@ -1,63 +0,0 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
3;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
4;;;
5;;; This file is part of GNU Guix.
6;;;
7;;; GNU Guix is free software; you can redistribute it and/or modify it
8;;; under the terms of the GNU General Public License as published by
9;;; the Free Software Foundation; either version 3 of the License, or (at
10;;; your option) any later version.
11;;;
12;;; GNU Guix is distributed in the hope that it will be useful, but
13;;; WITHOUT ANY WARRANTY; without even the implied warranty of
14;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15;;; GNU General Public License for more details.
16;;;
17;;; You should have received a copy of the GNU General Public License
18;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
19
20(define-module (gnu packages sqlite)
21 #:use-module (guix licenses)
22 #:use-module (guix packages)
23 #:use-module (guix download)
24 #:use-module (guix build-system gnu)
25 #:use-module (gnu packages)
26 #:use-module (srfi srfi-26)
27 #:use-module (ice-9 match))
28
29(define-public sqlite
30 (package
31 (name "sqlite")
32 (version "3.8.4.3")
33 (source (origin
34 (method url-fetch)
35 ;; TODO: Download from sqlite.org once this bug :
36 ;; http://lists.gnu.org/archive/html/bug-guile/2013-01/msg00027.html
37 ;; has been fixed.
38 (uri (let ((numeric-version
39 (match (string-split version #\.)
40 ((first-digit other-digits ...)
41 (string-append first-digit
42 (string-pad-right
43 (string-concatenate
44 (map (cut string-pad <> 2 #\0)
45 other-digits))
46 6 #\0))))))
47 (string-append
48 "mirror://sourceforge/sqlite.mirror/SQLite%20" version
49 "/sqlite-autoconf-" numeric-version ".tar.gz")))
50 (sha256
51 (base32
52 "0rcdsk5sz34w8vy0g5yhfms4saiq81i872jxx5m5sjij7bi9bsg0"))
53 (patches
54 (list (search-patch "sqlite-large-page-size-fix.patch")))))
55 (build-system gnu-build-system)
56 (home-page "http://www.sqlite.org/")
57 (synopsis "The SQLite database management system")
58 (description
59 "SQLite is a software library that implements a self-contained, serverless,
60zero-configuration, transactional SQL database engine. SQLite is the most
61widely deployed SQL database engine in the world. The source code for SQLite is
62in the public domain.")
63 (license public-domain)))
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 83ad35fb771..89b26e69df5 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -44,7 +44,7 @@
44 #:use-module (gnu packages perl) 44 #:use-module (gnu packages perl)
45 #:use-module (gnu packages pkg-config) 45 #:use-module (gnu packages pkg-config)
46 #:use-module (gnu packages python) 46 #:use-module (gnu packages python)
47 #:use-module (gnu packages sqlite) 47 #:use-module (gnu packages databases)
48 #:use-module (gnu packages admin) 48 #:use-module (gnu packages admin)
49 #:use-module (gnu packages xml) 49 #:use-module (gnu packages xml)
50 #:use-module (gnu packages emacs) 50 #:use-module (gnu packages emacs)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 2873c49e3b7..2fabf2679d1 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.")
383(define-public youtube-dl 383(define-public youtube-dl
384 (package 384 (package
385 (name "youtube-dl") 385 (name "youtube-dl")
386 (version "2014.06.26") 386 (version "2014.09.06")
387 (source (origin 387 (source (origin
388 (method url-fetch) 388 (method url-fetch)
389 (uri (string-append "http://youtube-dl.org/downloads/" 389 (uri (string-append "http://youtube-dl.org/downloads/"
@@ -391,7 +391,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
391 version ".tar.gz")) 391 version ".tar.gz"))
392 (sha256 392 (sha256
393 (base32 393 (base32
394 "0jl90plg9mz4mwich219a58y4npwi33myx0cx44v8pymkqykv5cd")))) 394 "1a50vqgzp9wjh2763shald6dlmdd5qlqy83vg4yrihdrlh8sk6dd"))))
395 (build-system python-build-system) 395 (build-system python-build-system)
396 (inputs `(("setuptools" ,python-setuptools))) 396 (inputs `(("setuptools" ,python-setuptools)))
397 (home-page "http://youtube-dl.org") 397 (home-page "http://youtube-dl.org")
diff --git a/gnu/packages/weechat.scm b/gnu/packages/weechat.scm
new file mode 100644
index 00000000000..5555601d473
--- /dev/null
+++ b/gnu/packages/weechat.scm
@@ -0,0 +1,101 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 Kevin Lemonnier <lemonnierk@ulrar.net>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19;; TODO: Add ruby
20
21(define-module (gnu packages weechat)
22 #:use-module (gnu packages ncurses)
23 #:use-module (gnu packages base)
24 #:use-module (gnu packages gettext)
25 #:use-module (gnu packages gnupg)
26 #:use-module (gnu packages file)
27 #:use-module (gnu packages compression)
28 #:use-module (gnu packages lua)
29 #:use-module (gnu packages python)
30 #:use-module (gnu packages perl)
31 #:use-module (gnu packages tcl)
32 #:use-module (gnu packages aspell)
33 #:use-module (gnu packages curl)
34 #:use-module (gnu packages gnutls)
35 #:use-module (gnu packages guile)
36 #:use-module (gnu packages openssl)
37 #:use-module (gnu packages cyrus-sasl)
38 #:use-module (gnu packages autogen)
39 #:use-module (gnu packages autotools)
40 #:use-module (gnu packages pkg-config)
41 #:use-module (guix packages)
42 #:use-module (guix download)
43 #:use-module (guix build-system gnu)
44 #:use-module ((guix licenses) #:select (gpl3)))
45
46(define-public weechat
47 (package
48 (name "weechat")
49 (version "1.0")
50 (source (origin
51 (method url-fetch)
52 (uri (string-append "http://weechat.org/files/src/weechat-"
53 version ".tar.gz"))
54 (sha256
55 (base32 "1z17wyrl5fp697qp44srpmzk79w37f5hm1r0krffbmga6sbzdj3x"))))
56 (build-system gnu-build-system)
57 (native-inputs `(("autoconf" ,autoconf)
58 ("pkg-config" ,pkg-config)
59 ("file" ,file)
60 ("autogen" ,autogen)
61 ("automake" ,automake)))
62 (inputs `(("ncurses" ,ncurses)
63 ("diffutils" ,diffutils)
64 ("gettext" ,gnu-gettext)
65 ("libtool" ,libtool "bin")
66 ("libtool" ,libtool "out")
67 ("libgcrypt" ,libgcrypt "out")
68 ("zlib" ,zlib)
69 ("aspell" ,aspell)
70 ("curl" ,curl)
71 ("gnutls" ,gnutls)
72 ("guile" ,guile-2.0)
73 ("openssl" ,openssl)
74 ("cyrus-sasl" ,cyrus-sasl)
75 ("lua" ,lua-5.1)
76 ("python" ,python-2)
77 ("perl" ,perl)
78 ("tcl" ,tcl)))
79 (arguments `(#:configure-flags (list
80 (string-append
81 "--with-tclconfig="
82 (assoc-ref %build-inputs "tcl") "/lib"))
83 #:phases (alist-cons-after
84 'autogen 'fix-file
85 (lambda _
86 (substitute* "configure"
87 (("/usr/bin/file") (which "file"))))
88 (alist-cons-before
89 'configure 'autogen
90 (lambda _
91 (zero? (system* "./autogen.sh")))
92 %standard-phases))))
93 (synopsis "Extensible chat client")
94 (description "WeeChat (Wee Enhanced Environment for Chat) is an
95Internet Relay Chat client, which is designed to be light and fast.
96The client uses a curses frontend, and there are remote interfaces
97for Web, Qt, Android and Emacs. In WeeChat everything can be done
98with a keyboard, though it also supports mouse. It is customizable
99and extensible with plugins and scripts.")
100 (home-page "http://www.weechat.org/")
101 (license gpl3)))
diff --git a/gnu/packages/wv.scm b/gnu/packages/wv.scm
new file mode 100644
index 00000000000..af8412cbc42
--- /dev/null
+++ b/gnu/packages/wv.scm
@@ -0,0 +1,65 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 Marek Benc <merkur32@gmail.com>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (gnu packages wv)
20 #:use-module (gnu packages)
21 #:use-module (gnu packages compression)
22 #:use-module (gnu packages glib)
23 #:use-module (gnu packages gnome)
24 #:use-module (gnu packages image)
25 #:use-module (gnu packages pkg-config)
26 #:use-module (guix packages)
27 #:use-module (guix download)
28 #:use-module (guix build-system gnu)
29 #:use-module ((guix licenses) #:renamer (symbol-prefix-proc 'license:)))
30
31(define-public wv
32 (package
33 (name "wv")
34 (version "1.2.4")
35 (source (origin
36 (method url-fetch)
37 (uri (string-append "mirror://sourceforge/wvware/wv/" version
38 "/wv-" version ".tar.gz"))
39 (sha256
40 (base32
41 "1mn2ax6qjy3pvixlnvbkn6ymy6y4l2wxrr4brjaczm121s8hjcb7"))))
42
43 (build-system gnu-build-system)
44 (arguments
45 `(#:configure-flags '("--with-libwmf")))
46 (inputs
47 `(("glib" ,glib)
48 ("libgsf" ,libgsf)
49 ("libjpeg" ,libjpeg)
50 ("libpng" ,libpng)
51 ("libwmf" ,libwmf)
52 ("zlib" ,zlib)))
53 (native-inputs
54 `(("glib" ,glib "bin")
55 ("pkg-config" ,pkg-config)))
56 (synopsis "Microsoft Word conversion library and utilities")
57 (description
58 "wv converts Word 2,6,7,8,9 files to HTML and LaTeX. The Word 2
59conversion is still incomplete (no formatting), but it will do a passable job
60extracting the text, which is what you probably want anyway.
61
62libwv can be used as a library by third party programs, AbiWord uses it as its
63word importer, and KWord may use it in the future.")
64 (home-page "http://wvware.sourceforge.net/")
65 (license license:gpl2+)))
diff --git a/gnu/packages/zsh.scm b/gnu/packages/zsh.scm
new file mode 100644
index 00000000000..778085c3c23
--- /dev/null
+++ b/gnu/packages/zsh.scm
@@ -0,0 +1,73 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 Kevin Lemonnier <lemonnierk@ulrar.net>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (gnu packages zsh)
20 #:use-module (gnu packages ncurses)
21 #:use-module (gnu packages perl)
22 #:use-module (gnu packages pcre)
23 #:use-module (gnu packages autotools)
24 #:use-module (guix packages)
25 #:use-module (guix download)
26 #:use-module (guix build-system gnu)
27 #:use-module (guix licenses))
28
29(define-public zsh
30 (package
31 (name "zsh")
32 (version "5.0.6")
33 (source (origin
34 (method url-fetch)
35 (uri (string-append "http://www.zsh.org/pub/zsh-" version
36 ".tar.gz"))
37 (sha256
38 (base32 "0f9y2lkv6xs5nxgj7ld7sbncy454sgamz21fm4109mxqlqa32fph"))))
39 (build-system gnu-build-system)
40 (arguments `(#:configure-flags '("--with-tcsetpgrp" "--enable-pcre")
41 #:phases (alist-cons-before
42 'configure 'fix-sh
43 (lambda _
44 (substitute*
45 '("configure"
46 "configure.ac"
47 "Src/exec.c"
48 "Src/mkmakemod.sh"
49 "Config/installfns.sh"
50 "Config/defs.mk.in"
51 "Test/E01options.ztst"
52 "Test/A05execution.ztst"
53 "Test/A01grammar.ztst"
54 "Test/B02typeset.ztst"
55 "Completion/Unix/Command/_init_d"
56 "Util/preconfig")
57 (("/bin/sh") (which "sh"))))
58 %standard-phases)))
59 (native-inputs `(("autoconf", autoconf)))
60 (inputs `(("ncurses", ncurses)
61 ("pcre", pcre)
62 ("perl", perl)))
63 (synopsis "Powerful shell for interactive use and scripting")
64 (description "The Z shell (zsh) is a Unix shell that can be used
65as an interactive login shell and as a powerful command interpreter
66for shell scripting. Zsh can be thought of as an extended Bourne shell
67with a large number of improvements, including some features of bash,
68ksh, and tcsh.")
69 (home-page "http://www.zsh.org/")
70
71 ;; The whole thing is under an MIT/X11-style license, but there's one
72 ;; command, 'Completion/Unix/Command/_darcs', which is under GPLv2+.
73 (license gpl2+)))
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index b5b49d1a01b..014eef053ba 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -25,7 +25,7 @@
25 #:use-module (gnu system linux) ; 'pam-service', etc. 25 #:use-module (gnu system linux) ; 'pam-service', etc.
26 #:use-module (gnu packages admin) 26 #:use-module (gnu packages admin)
27 #:use-module ((gnu packages linux) 27 #:use-module ((gnu packages linux)
28 #:select (udev kbd e2fsprogs)) 28 #:select (udev kbd e2fsprogs lvm2))
29 #:use-module ((gnu packages base) 29 #:use-module ((gnu packages base)
30 #:select (canonical-package glibc)) 30 #:select (canonical-package glibc))
31 #:use-module (gnu packages package-management) 31 #:use-module (gnu packages package-management)
@@ -38,6 +38,7 @@
38 #:use-module (ice-9 format) 38 #:use-module (ice-9 format)
39 #:export (root-file-system-service 39 #:export (root-file-system-service
40 file-system-service 40 file-system-service
41 device-mapping-service
41 user-processes-service 42 user-processes-service
42 host-name-service 43 host-name-service
43 console-font-service 44 console-font-service
@@ -99,18 +100,20 @@ This service must be the root of the service dependency graph so that its
99 100
100(define* (file-system-service device target type 101(define* (file-system-service device target type
101 #:key (flags '()) (check? #t) 102 #:key (flags '()) (check? #t)
102 create-mount-point? options (title 'any)) 103 create-mount-point? options (title 'any)
104 (requirements '()))
103 "Return a service that mounts DEVICE on TARGET as a file system TYPE with 105 "Return a service that mounts DEVICE on TARGET as a file system TYPE with
104OPTIONS. TITLE is a symbol specifying what kind of name DEVICE is: 'label for 106OPTIONS. TITLE is a symbol specifying what kind of name DEVICE is: 'label for
105a partition label, 'device for a device file name, or 'any. When CHECK? is 107a partition label, 'device for a device file name, or 'any. When CHECK? is
106true, check the file system before mounting it. When CREATE-MOUNT-POINT? is 108true, check the file system before mounting it. When CREATE-MOUNT-POINT? is
107true, create TARGET if it does not exist yet. FLAGS is a list of symbols, 109true, create TARGET if it does not exist yet. FLAGS is a list of symbols,
108such as 'read-only' etc." 110such as 'read-only' etc. Optionally, REQUIREMENTS may be a list of service
111names such as device-mapping services."
109 (with-monad %store-monad 112 (with-monad %store-monad
110 (return 113 (return
111 (service 114 (service
112 (provision (list (symbol-append 'file-system- (string->symbol target)))) 115 (provision (list (symbol-append 'file-system- (string->symbol target))))
113 (requirement '(root-file-system)) 116 (requirement `(root-file-system ,@requirements))
114 (documentation "Check, mount, and unmount the given file system.") 117 (documentation "Check, mount, and unmount the given file system.")
115 (start #~(lambda args 118 (start #~(lambda args
116 (let ((device (canonicalize-device-spec #$device '#$title))) 119 (let ((device (canonicalize-device-spec #$device '#$title)))
@@ -479,9 +482,41 @@ passed to @command{guix-daemon}."
479 (id 30000)))) 482 (id 30000))))
480 (activate activate))))) 483 (activate activate)))))
481 484
482(define* (udev-service #:key (udev udev)) 485(define (udev-rules-union packages)
483 "Run @var{udev}, which populates the @file{/dev} directory dynamically." 486 "Return the union of the @code{lib/udev/rules.d} directories found in each
484 (with-monad %store-monad 487item of @var{packages}."
488 (define build
489 #~(begin
490 (use-modules (guix build union)
491 (guix build utils)
492 (srfi srfi-1)
493 (srfi srfi-26))
494
495 (define %standard-locations
496 '("/lib/udev/rules.d" "/libexec/udev/rules.d"))
497
498 (define (rules-sub-directory directory)
499 ;; Return the sub-directory of DIRECTORY containing udev rules, or
500 ;; #f if none was found.
501 (find directory-exists?
502 (map (cut string-append directory <>) %standard-locations)))
503
504 (mkdir-p (string-append #$output "/lib/udev"))
505 (union-build (string-append #$output "/lib/udev/rules.d")
506 (filter-map rules-sub-directory '#$packages))))
507
508 (gexp->derivation "udev-rules" build
509 #:modules '((guix build union)
510 (guix build utils))
511 #:local-build? #t))
512
513(define* (udev-service #:key (udev udev) (rules '()))
514 "Run @var{udev}, which populates the @file{/dev} directory dynamically. Get
515extra rules from the packages listed in @var{rules}."
516 (mlet* %store-monad ((rules (udev-rules-union (cons udev rules)))
517 (udev.conf (text-file* "udev.conf"
518 "udev_rules=\"" rules
519 "/lib/udev/rules.d\"\n")))
485 (return (service 520 (return (service
486 (provision '(udev)) 521 (provision '(udev))
487 522
@@ -513,6 +548,8 @@ passed to @command{guix-daemon}."
513 (setenv "LINUX_MODULE_DIRECTORY" 548 (setenv "LINUX_MODULE_DIRECTORY"
514 "/run/booted-system/kernel/lib/modules") 549 "/run/booted-system/kernel/lib/modules")
515 550
551 (setenv "UDEV_CONFIG_FILE" #$udev.conf)
552
516 (let ((pid (primitive-fork))) 553 (let ((pid (primitive-fork)))
517 (case pid 554 (case pid
518 ((0) 555 ((0)
@@ -533,6 +570,21 @@ passed to @command{guix-daemon}."
533 pid))))) 570 pid)))))
534 (stop #~(make-kill-destructor)))))) 571 (stop #~(make-kill-destructor))))))
535 572
573(define (device-mapping-service target command)
574 "Return a service that maps device @var{target}, a string such as
575@code{\"home\"} (meaning @code{/dev/mapper/home}), by executing @var{command},
576a gexp."
577 (with-monad %store-monad
578 (return (service
579 (provision (list (symbol-append 'device-mapping-
580 (string->symbol target))))
581 (requirement '(udev))
582 (documentation "Map a device node using Linux's device mapper.")
583 (start #~(lambda ()
584 #$command))
585 (stop #~(const #f))
586 (respawn? #f)))))
587
536(define %base-services 588(define %base-services
537 ;; Convenience variable holding the basic services. 589 ;; Convenience variable holding the basic services.
538 (let ((motd (text-file "motd" " 590 (let ((motd (text-file "motd" "
@@ -555,6 +607,9 @@ This is the GNU operating system, welcome!\n\n")))
555 (syslog-service) 607 (syslog-service)
556 (guix-service) 608 (guix-service)
557 (nscd-service) 609 (nscd-service)
558 (udev-service)))) 610
611 ;; By default, enable the udev rules of LVM2. They are needed as
612 ;; soon as LVM2 or the device-mapper is used.
613 (udev-service #:rules (list lvm2)))))
559 614
560;;; base.scm ends here 615;;; base.scm ends here
diff --git a/gnu/system.scm b/gnu/system.scm
index ea7fdf1cb78..9bdf227eca3 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -44,6 +44,7 @@
44 #:use-module (gnu system linux) 44 #:use-module (gnu system linux)
45 #:use-module (gnu system linux-initrd) 45 #:use-module (gnu system linux-initrd)
46 #:use-module (gnu system file-systems) 46 #:use-module (gnu system file-systems)
47 #:autoload (gnu packages cryptsetup) (cryptsetup)
47 #:use-module (ice-9 match) 48 #:use-module (ice-9 match)
48 #:use-module (srfi srfi-1) 49 #:use-module (srfi srfi-1)
49 #:use-module (srfi srfi-26) 50 #:use-module (srfi srfi-26)
@@ -55,6 +56,7 @@
55 operating-system-user-services 56 operating-system-user-services
56 operating-system-packages 57 operating-system-packages
57 operating-system-host-name 58 operating-system-host-name
59 operating-system-hosts-file
58 operating-system-kernel 60 operating-system-kernel
59 operating-system-initrd 61 operating-system-initrd
60 operating-system-users 62 operating-system-users
@@ -63,6 +65,7 @@
63 operating-system-packages 65 operating-system-packages
64 operating-system-timezone 66 operating-system-timezone
65 operating-system-locale 67 operating-system-locale
68 operating-system-mapped-devices
66 operating-system-file-systems 69 operating-system-file-systems
67 operating-system-activation-script 70 operating-system-activation-script
68 71
@@ -70,7 +73,10 @@
70 operating-system-profile 73 operating-system-profile
71 operating-system-grub.cfg 74 operating-system-grub.cfg
72 75
73 %base-packages)) 76 %setuid-programs
77 %base-packages
78
79 luks-device-mapping))
74 80
75;;; Commentary: 81;;; Commentary:
76;;; 82;;;
@@ -91,7 +97,11 @@
91 (default base-initrd)) 97 (default base-initrd))
92 98
93 (host-name operating-system-host-name) ; string 99 (host-name operating-system-host-name) ; string
100 (hosts-file operating-system-hosts-file ; M item | #f
101 (default #f))
94 102
103 (mapped-devices operating-system-mapped-devices ; list of <mapped-device>
104 (default '()))
95 (file-systems operating-system-file-systems) ; list of fs 105 (file-systems operating-system-file-systems) ; list of fs
96 106
97 (users operating-system-users ; list of user accounts 107 (users operating-system-users ; list of user accounts
@@ -148,6 +158,13 @@ file."
148;;; Services. 158;;; Services.
149;;; 159;;;
150 160
161(define (luks-device-mapping source target)
162 "Return a gexp that maps SOURCE to TARGET as a LUKS device, using
163'cryptsetup'."
164 #~(zero? (system* (string-append #$cryptsetup "/sbin/cryptsetup")
165 "open" "--type" "luks"
166 #$source #$target)))
167
151(define (other-file-system-services os) 168(define (other-file-system-services os)
152 "Return file system services for the file systems of OS that are not marked 169 "Return file system services for the file systems of OS that are not marked
153as 'needed-for-boot'." 170as 'needed-for-boot'."
@@ -157,30 +174,58 @@ as 'needed-for-boot'."
157 (string=? "/" (file-system-mount-point fs)))) 174 (string=? "/" (file-system-mount-point fs))))
158 (operating-system-file-systems os))) 175 (operating-system-file-systems os)))
159 176
177 (define (device-mappings fs)
178 (filter (lambda (md)
179 (string=? (string-append "/dev/mapper/"
180 (mapped-device-target md))
181 (file-system-device fs)))
182 (operating-system-mapped-devices os)))
183
184 (define (requirements fs)
185 (map (lambda (md)
186 (symbol-append 'device-mapping-
187 (string->symbol (mapped-device-target md))))
188 (device-mappings fs)))
189
160 (sequence %store-monad 190 (sequence %store-monad
161 (map (match-lambda 191 (map (lambda (fs)
162 (($ <file-system> device title target type flags opts 192 (match fs
163 #f check? create?) 193 (($ <file-system> device title target type flags opts
164 (file-system-service device target type 194 #f check? create?)
165 #:title title 195 (file-system-service device target type
166 #:check? check? 196 #:title title
167 #:create-mount-point? create? 197 #:requirements (requirements fs)
168 #:options opts 198 #:check? check?
169 #:flags flags))) 199 #:create-mount-point? create?
200 #:options opts
201 #:flags flags))))
170 file-systems))) 202 file-systems)))
171 203
204(define (device-mapping-services os)
205 "Return the list of device-mapping services for OS as a monadic list."
206 (sequence %store-monad
207 (map (lambda (md)
208 (let ((source (mapped-device-source md))
209 (target (mapped-device-target md))
210 (command (mapped-device-command md)))
211 (device-mapping-service target
212 (command source target))))
213 (operating-system-mapped-devices os))))
214
172(define (essential-services os) 215(define (essential-services os)
173 "Return the list of essential services for OS. These are special services 216 "Return the list of essential services for OS. These are special services
174that implement part of what's declared in OS are responsible for low-level 217that implement part of what's declared in OS are responsible for low-level
175bookkeeping." 218bookkeeping."
176 (mlet* %store-monad ((root-fs (root-file-system-service)) 219 (mlet* %store-monad ((mappings (device-mapping-services os))
220 (root-fs (root-file-system-service))
177 (other-fs (other-file-system-services os)) 221 (other-fs (other-file-system-services os))
178 (procs (user-processes-service 222 (procs (user-processes-service
179 (map (compose first service-provision) 223 (map (compose first service-provision)
180 other-fs))) 224 other-fs)))
181 (host-name (host-name-service 225 (host-name (host-name-service
182 (operating-system-host-name os)))) 226 (operating-system-host-name os))))
183 (return (cons* host-name procs root-fs other-fs)))) 227 (return (cons* host-name procs root-fs
228 (append other-fs mappings)))))
184 229
185(define (operating-system-services os) 230(define (operating-system-services os)
186 "Return all the services of OS, including \"internal\" services that do not 231 "Return all the services of OS, including \"internal\" services that do not
@@ -220,12 +265,19 @@ explicitly appear in OS."
220 " 265 "
221This is the GNU system. Welcome.\n") 266This is the GNU system. Welcome.\n")
222 267
268(define (default-/etc/hosts host-name)
269 "Return the default /etc/hosts file."
270 (text-file "hosts"
271 (string-append "localhost 127.0.0.1\n"
272 host-name " 127.0.0.1\n")))
273
223(define* (etc-directory #:key 274(define* (etc-directory #:key
224 (locale "C") (timezone "Europe/Paris") 275 (locale "C") (timezone "Europe/Paris")
225 (issue "Hello!\n") 276 (issue "Hello!\n")
226 (skeletons '()) 277 (skeletons '())
227 (pam-services '()) 278 (pam-services '())
228 (profile "/run/current-system/profile") 279 (profile "/run/current-system/profile")
280 hosts-file
229 (sudoers "")) 281 (sudoers ""))
230 "Return a derivation that builds the static part of the /etc directory." 282 "Return a derivation that builds the static part of the /etc directory."
231 (mlet* %store-monad 283 (mlet* %store-monad
@@ -241,7 +293,7 @@ This is the GNU system. Welcome.\n")
241 293
242 ;; TODO: Generate bashrc from packages' search-paths. 294 ;; TODO: Generate bashrc from packages' search-paths.
243 (bashrc (text-file* "bashrc" " 295 (bashrc (text-file* "bashrc" "
244export PS1='\\u@\\h\\$ ' 296export PS1='\\u@\\h \\w\\$ '
245 297
246export LC_ALL=\"" locale "\" 298export LC_ALL=\"" locale "\"
247export TZ=\"" timezone "\" 299export TZ=\"" timezone "\"
@@ -268,6 +320,7 @@ alias ll='ls -l'
268 ("skel" ,#~#$skel) 320 ("skel" ,#~#$skel)
269 ("shells" ,#~#$shells) 321 ("shells" ,#~#$shells)
270 ("profile" ,#~#$bashrc) 322 ("profile" ,#~#$bashrc)
323 ("hosts" ,#~#$hosts-file)
271 ("localtime" ,#~(string-append #$tzdata "/share/zoneinfo/" 324 ("localtime" ,#~(string-append #$tzdata "/share/zoneinfo/"
272 #$timezone)) 325 #$timezone))
273 ("sudoers" ,#~#$sudoers))))) 326 ("sudoers" ,#~#$sudoers)))))
@@ -310,12 +363,15 @@ alias ll='ls -l'
310 (append (operating-system-pam-services os) 363 (append (operating-system-pam-services os)
311 (append-map service-pam-services services)))) 364 (append-map service-pam-services services))))
312 (profile-drv (operating-system-profile os)) 365 (profile-drv (operating-system-profile os))
313 (skeletons (operating-system-skeletons os))) 366 (skeletons (operating-system-skeletons os))
367 (/etc/hosts (or (operating-system-hosts-file os)
368 (default-/etc/hosts (operating-system-host-name os)))))
314 (etc-directory #:pam-services pam-services 369 (etc-directory #:pam-services pam-services
315 #:skeletons skeletons 370 #:skeletons skeletons
316 #:issue (operating-system-issue os) 371 #:issue (operating-system-issue os)
317 #:locale (operating-system-locale os) 372 #:locale (operating-system-locale os)
318 #:timezone (operating-system-timezone os) 373 #:timezone (operating-system-timezone os)
374 #:hosts-file /etc/hosts
319 #:sudoers (operating-system-sudoers os) 375 #:sudoers (operating-system-sudoers os)
320 #:profile profile-drv))) 376 #:profile profile-drv)))
321 377
@@ -402,6 +458,11 @@ etc."
402 458
403 (use-modules (gnu build activation)) 459 (use-modules (gnu build activation))
404 460
461 ;; Make sure /bin/sh is valid and current.
462 (activate-/bin/sh
463 (string-append #$(canonical-package bash)
464 "/bin/sh"))
465
405 ;; Populate /etc. 466 ;; Populate /etc.
406 (activate-etc #$etc) 467 (activate-etc #$etc)
407 468
@@ -470,6 +531,8 @@ we're running in the final root."
470 boot?)) 531 boot?))
471 (operating-system-file-systems os))) 532 (operating-system-file-systems os)))
472 533
534 ;; TODO: Pass the mapped devices required by boot-time file systems to the
535 ;; initrd.
473 (mlet %store-monad 536 (mlet %store-monad
474 ((initrd ((operating-system-initrd os) boot-file-systems))) 537 ((initrd ((operating-system-initrd os) boot-file-systems)))
475 (return #~(string-append #$initrd "/initrd")))) 538 (return #~(string-append #$initrd "/initrd"))))
diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index 48c4fc7e773..90e2b0c796a 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -37,7 +37,13 @@
37 %pseudo-terminal-file-system 37 %pseudo-terminal-file-system
38 %devtmpfs-file-system 38 %devtmpfs-file-system
39 39
40 %base-file-systems)) 40 %base-file-systems
41
42 mapped-device
43 mapped-device?
44 mapped-device-source
45 mapped-device-target
46 mapped-device-command))
41 47
42;;; Commentary: 48;;; Commentary:
43;;; 49;;;
@@ -128,4 +134,17 @@
128 %pseudo-terminal-file-system 134 %pseudo-terminal-file-system
129 %shared-memory-file-system)) 135 %shared-memory-file-system))
130 136
137
138
139;;;
140;;; Mapped devices, for Linux's device-mapper.
141;;;
142
143(define-record-type* <mapped-device> mapped-device
144 make-mapped-device
145 mapped-device?
146 (source mapped-device-source) ;string
147 (target mapped-device-target) ;string
148 (command mapped-device-command)) ;source target -> gexp
149
131;;; file-systems.scm ends here 150;;; file-systems.scm ends here
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index 627d17bac24..93f751b7571 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -34,6 +34,7 @@
34 #:use-module (ice-9 match) 34 #:use-module (ice-9 match)
35 #:use-module (ice-9 regex) 35 #:use-module (ice-9 regex)
36 #:use-module (srfi srfi-1) 36 #:use-module (srfi srfi-1)
37 #:use-module (srfi srfi-26)
37 #:export (expression->initrd 38 #:export (expression->initrd
38 base-initrd)) 39 base-initrd))
39 40
@@ -53,106 +54,37 @@
53 (gzip gzip) 54 (gzip gzip)
54 (name "guile-initrd") 55 (name "guile-initrd")
55 (system (%current-system)) 56 (system (%current-system))
56 (modules '()) 57 (modules '()))
57 (to-copy '())
58 (linux #f)
59 (linux-modules '()))
60 "Return a derivation that builds a Linux initrd (a gzipped cpio archive) 58 "Return a derivation that builds a Linux initrd (a gzipped cpio archive)
61containing GUILE and that evaluates EXP, a G-expression, upon booting. 59containing GUILE and that evaluates EXP, a G-expression, upon booting. All
60the derivations referenced by EXP are automatically copied to the initrd.
62 61
63LINUX-MODULES is a list of '.ko' file names to be copied from LINUX into the 62MODULES is a list of Guile module names to be embedded in the initrd."
64initrd. TO-COPY is a list of additional derivations or packages to copy to
65the initrd. MODULES is a list of Guile module names to be embedded in the
66initrd."
67 63
68 ;; General Linux overview in `Documentation/early-userspace/README' and 64 ;; General Linux overview in `Documentation/early-userspace/README' and
69 ;; `Documentation/filesystems/ramfs-rootfs-initramfs.txt'. 65 ;; `Documentation/filesystems/ramfs-rootfs-initramfs.txt'.
70 66
71 (define graph-files 67 (mlet %store-monad ((init (gexp->script "init" exp
72 (unfold-right zero? 68 #:modules modules
73 number->string 69 #:guile guile)))
74 1-
75 (length to-copy)))
76
77 (mlet %store-monad ((source (imported-modules modules))
78 (compiled (compiled-modules modules))
79 (module-dir (flat-linux-module-directory linux
80 linux-modules)))
81 (define builder 70 (define builder
82 ;; TODO: Move most of this code to (gnu build linux-initrd).
83 #~(begin 71 #~(begin
84 (use-modules (gnu build linux-initrd) 72 (use-modules (gnu build linux-initrd))
85 (guix build utils)
86 (guix build store-copy)
87 (ice-9 pretty-print)
88 (ice-9 popen)
89 (ice-9 match)
90 (ice-9 ftw)
91 (srfi srfi-26)
92 (system base compile)
93 (rnrs bytevectors)
94 ((system foreign) #:select (sizeof)))
95
96 (let ((modules #$source)
97 (gos #$compiled)
98 (scm-dir (string-append "share/guile/" (effective-version)))
99 (go-dir (format #f ".cache/guile/ccache/~a-~a-~a-~a"
100 (effective-version)
101 (if (eq? (native-endianness) (endianness little))
102 "LE"
103 "BE")
104 (sizeof '*)
105 (effective-version))))
106 (mkdir #$output)
107 (mkdir "contents")
108
109 (with-directory-excursion "contents"
110 (copy-recursively #$guile ".")
111 (call-with-output-file "init"
112 (lambda (p)
113 (format p "#!/bin/guile -ds~%!#~%" #$guile)
114 (pretty-print '#$exp p)))
115 (chmod "init" #o555)
116 (chmod "bin/guile" #o555)
117
118 ;; Copy Guile modules.
119 (chmod scm-dir #o777)
120 (copy-recursively modules scm-dir
121 #:follow-symlinks? #t)
122 (copy-recursively gos (string-append "lib/guile/"
123 (effective-version) "/ccache")
124 #:follow-symlinks? #t)
125
126 ;; Compile `init'.
127 (mkdir-p go-dir)
128 (set! %load-path (cons modules %load-path))
129 (set! %load-compiled-path (cons gos %load-compiled-path))
130 (compile-file "init"
131 #:opts %auto-compilation-options
132 #:output-file (string-append go-dir "/init.go"))
133 73
134 ;; Copy Linux modules. 74 (mkdir #$output)
135 (mkdir "modules") 75 (build-initrd (string-append #$output "/initrd")
136 (copy-recursively #$module-dir "modules") 76 #:guile #$guile
137 77 #:init #$init
138 ;; Populate the initrd's store. 78 ;; Copy everything INIT refers to into the initrd.
139 (with-directory-excursion ".." 79 #:references-graphs '("closure")
140 (populate-store '#$graph-files "contents")) 80 #:cpio (string-append #$cpio "/bin/cpio")
141 81 #:gzip (string-append #$gzip "/bin/gzip"))))
142 ;; Reset the timestamps of all the files that will make it in the
143 ;; initrd.
144 (for-each (cut utime <> 0 0 0 0)
145 (find-files "." ".*"))
146
147 (write-cpio-archive (string-append #$output "/initrd") "."
148 #:cpio (string-append #$cpio "/bin/cpio")
149 #:gzip (string-append #$gzip "/bin/gzip"))))))
150 82
151 (gexp->derivation name builder 83 (gexp->derivation name builder
152 #:modules '((guix build utils) 84 #:modules '((guix build utils)
153 (guix build store-copy) 85 (guix build store-copy)
154 (gnu build linux-initrd)) 86 (gnu build linux-initrd))
155 #:references-graphs (zip graph-files to-copy)))) 87 #:references-graphs `(("closure" ,init)))))
156 88
157(define (flat-linux-module-directory linux modules) 89(define (flat-linux-module-directory linux modules)
158 "Return a flat directory containing the Linux kernel modules listed in 90 "Return a flat directory containing the Linux kernel modules listed in
@@ -199,6 +131,7 @@ initrd code."
199 volatile-root? 131 volatile-root?
200 (extra-modules '()) 132 (extra-modules '())
201 guile-modules-in-chroot?) 133 guile-modules-in-chroot?)
134 ;; TODO: Support boot-time device mappings.
202 "Return a monadic derivation that builds a generic initrd. FILE-SYSTEMS is 135 "Return a monadic derivation that builds a generic initrd. FILE-SYSTEMS is
203a list of file-systems to be mounted by the initrd, possibly in addition to 136a list of file-systems to be mounted by the initrd, possibly in addition to
204the root file system specified on the kernel command line via '--root'. 137the root file system specified on the kernel command line via '--root'.
@@ -264,28 +197,29 @@ exception and backtrace!)."
264 (list unionfs-fuse/static) 197 (list unionfs-fuse/static)
265 '()))) 198 '())))
266 199
267 (expression->initrd 200 (mlet %store-monad ((kodir (flat-linux-module-directory linux-libre
268 #~(begin 201 linux-modules)))
269 (use-modules (gnu build linux-boot) 202 (expression->initrd
270 (guix build utils) 203 #~(begin
271 (srfi srfi-26)) 204 (use-modules (gnu build linux-boot)
272 205 (guix build utils)
273 (with-output-to-port (%make-void-port "w") 206 (srfi srfi-26))
274 (lambda () 207
275 (set-path-environment-variable "PATH" '("bin" "sbin") 208 (with-output-to-port (%make-void-port "w")
276 '#$helper-packages))) 209 (lambda ()
277 210 (set-path-environment-variable "PATH" '("bin" "sbin")
278 (boot-system #:mounts '#$(map file-system->spec file-systems) 211 '#$helper-packages)))
279 #:linux-modules '#$linux-modules 212
280 #:qemu-guest-networking? #$qemu-networking? 213 (boot-system #:mounts '#$(map file-system->spec file-systems)
281 #:guile-modules-in-chroot? '#$guile-modules-in-chroot? 214 #:linux-modules (map (lambda (file)
282 #:volatile-root? '#$volatile-root?)) 215 (string-append #$kodir "/" file))
283 #:name "base-initrd" 216 '#$linux-modules)
284 #:modules '((guix build utils) 217 #:qemu-guest-networking? #$qemu-networking?
285 (gnu build linux-boot) 218 #:guile-modules-in-chroot? '#$guile-modules-in-chroot?
286 (gnu build file-systems)) 219 #:volatile-root? '#$volatile-root?))
287 #:to-copy helper-packages 220 #:name "base-initrd"
288 #:linux linux-libre 221 #:modules '((guix build utils)
289 #:linux-modules linux-modules)) 222 (gnu build linux-boot)
223 (gnu build file-systems)))))
290 224
291;;; linux-initrd.scm ends here 225;;; linux-initrd.scm ends here
diff --git a/gnu/system/linux.scm b/gnu/system/linux.scm
index 524ad012619..8cddedf28eb 100644
--- a/gnu/system/linux.scm
+++ b/gnu/system/linux.scm
@@ -175,7 +175,8 @@ authenticate to run COMMAND."
175 ;; These programs are setuid-root. 175 ;; These programs are setuid-root.
176 (map (cut unix-pam-service <> 176 (map (cut unix-pam-service <>
177 #:allow-empty-passwords? allow-empty-passwords?) 177 #:allow-empty-passwords? allow-empty-passwords?)
178 '("su" "passwd" "sudo")) 178 '("su" "passwd" "sudo"
179 "xlock" "xscreensaver"))
179 180
180 ;; These programs are not setuid-root, and we want root to be able 181 ;; These programs are not setuid-root, and we want root to be able
181 ;; to run them without having to authenticate (notably because 182 ;; to run them without having to authenticate (notably because
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index 205bf2cb193..4ee8dc5cf29 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -428,7 +428,9 @@ exec " #$qemu "/bin/" #$(qemu-command (%current-system))
428 "--system=" #$os-drv " --load=" #$os-drv "/boot --root=/dev/vda1\" \ 428 "--system=" #$os-drv " --load=" #$os-drv "/boot --root=/dev/vda1\" \
429 -serial stdio \ 429 -serial stdio \
430 -drive file=" #$image 430 -drive file=" #$image
431 ",if=virtio,cache=writeback,werror=report,readonly\n") 431 ",if=virtio,cache=writeback,werror=report,readonly \
432 -m 256
433\n")
432 port) 434 port)
433 (chmod port #o555)))) 435 (chmod port #o555))))
434 436
diff --git a/guix/profiles.scm b/guix/profiles.scm
index 9dc9ab43b95..aa88b849e11 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -321,10 +321,10 @@ replacement if PORT is not Unicode-capable."
321 (let ((arrow "→")) 321 (let ((arrow "→"))
322 (catch 'encoding-error 322 (catch 'encoding-error
323 (lambda () 323 (lambda ()
324 (with-fluids ((%default-port-conversion-strategy 'error)) 324 (call-with-output-string
325 (with-output-to-string 325 (lambda (port)
326 (lambda () 326 (set-port-conversion-strategy! port 'error)
327 (display arrow))))) 327 (display arrow port))))
328 (lambda (key . args) 328 (lambda (key . args)
329 "->"))))) 329 "->")))))
330 330
diff --git a/po/packages/POTFILES.in b/po/packages/POTFILES.in
index 43db1b27196..7f287f6816a 100644
--- a/po/packages/POTFILES.in
+++ b/po/packages/POTFILES.in
@@ -3,4 +3,4 @@
3gnu/packages/base.scm 3gnu/packages/base.scm
4gnu/packages/guile.scm 4gnu/packages/guile.scm
5gnu/packages/lout.scm 5gnu/packages/lout.scm
6gnu/packages/recutils.scm 6gnu/packages/databases.scm