summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.dir-locals.el3
-rw-r--r--.gitignore1
-rw-r--r--.mailmap6
-rw-r--r--HACKING4
-rw-r--r--Makefile.am2
-rw-r--r--THANKS1
-rw-r--r--config-daemon.ac4
-rw-r--r--configure.ac11
-rw-r--r--doc/guix.texi189
-rw-r--r--emacs/guix-devel.el2
-rw-r--r--etc/guix-daemon.service.in1
-rw-r--r--gnu/local.mk15
-rw-r--r--gnu/packages/admin.scm57
-rw-r--r--gnu/packages/algebra.scm4
-rw-r--r--gnu/packages/backup.scm9
-rw-r--r--gnu/packages/bioinformatics.scm636
-rw-r--r--gnu/packages/bittorrent.scm4
-rw-r--r--gnu/packages/busybox.scm67
-rw-r--r--gnu/packages/ccache.scm11
-rw-r--r--gnu/packages/cdrom.scm6
-rw-r--r--gnu/packages/compression.scm37
-rw-r--r--gnu/packages/conkeror.scm11
-rw-r--r--gnu/packages/crypto.scm90
-rw-r--r--gnu/packages/databases.scm2
-rw-r--r--gnu/packages/datastructures.scm22
-rw-r--r--gnu/packages/disk.scm46
-rw-r--r--gnu/packages/documentation.scm38
-rw-r--r--gnu/packages/ebook.scm4
-rw-r--r--gnu/packages/emacs.scm535
-rw-r--r--gnu/packages/engineering.scm27
-rw-r--r--gnu/packages/enlightenment.scm17
-rw-r--r--gnu/packages/flashing-tools.scm5
-rw-r--r--gnu/packages/fonts.scm9
-rw-r--r--gnu/packages/freedesktop.scm6
-rw-r--r--gnu/packages/games.scm38
-rw-r--r--gnu/packages/gd.scm11
-rw-r--r--gnu/packages/geeqie.scm36
-rw-r--r--gnu/packages/gimp.scm1
-rw-r--r--gnu/packages/gl.scm61
-rw-r--r--gnu/packages/gnunet.scm12
-rw-r--r--gnu/packages/gnupg.scm24
-rw-r--r--gnu/packages/golang.scm185
-rw-r--r--gnu/packages/graphics.scm28
-rw-r--r--gnu/packages/grub.scm25
-rw-r--r--gnu/packages/gstreamer.scm24
-rw-r--r--gnu/packages/imagemagick.scm4
-rw-r--r--gnu/packages/irc.scm6
-rw-r--r--gnu/packages/julia.scm3
-rw-r--r--gnu/packages/kde.scm5
-rw-r--r--gnu/packages/libreoffice.scm12
-rw-r--r--gnu/packages/libusb.scm13
-rw-r--r--gnu/packages/linux.scm150
-rw-r--r--gnu/packages/lisp.scm2
-rw-r--r--gnu/packages/llvm.scm90
-rw-r--r--gnu/packages/logging.scm45
-rw-r--r--gnu/packages/lsh.scm159
-rw-r--r--gnu/packages/lxde.scm17
-rw-r--r--gnu/packages/mail.scm46
-rw-r--r--gnu/packages/man.scm12
-rw-r--r--gnu/packages/markdown.scm5
-rw-r--r--gnu/packages/maths.scm30
-rw-r--r--gnu/packages/messaging.scm4
-rw-r--r--gnu/packages/mpd.scm4
-rw-r--r--gnu/packages/music.scm71
-rw-r--r--gnu/packages/networking.scm2
-rw-r--r--gnu/packages/ninja.scm7
-rw-r--r--gnu/packages/node.scm19
-rw-r--r--gnu/packages/openstack.scm4
-rw-r--r--gnu/packages/owncloud.scm17
-rw-r--r--gnu/packages/package-management.scm7
-rw-r--r--gnu/packages/parallel.scm4
-rw-r--r--gnu/packages/patches/avrdude-fix-libusb.patch256
-rw-r--r--gnu/packages/patches/clang-3.8-libc-search-path.patch69
-rw-r--r--gnu/packages/patches/gd-CVE-2016-5766.patch81
-rw-r--r--gnu/packages/patches/gd-CVE-2016-6128.patch253
-rw-r--r--gnu/packages/patches/gd-CVE-2016-6132.patch55
-rw-r--r--gnu/packages/patches/gd-CVE-2016-6214.patch66
-rw-r--r--gnu/packages/patches/gd-fix-test-on-i686.patch34
-rw-r--r--gnu/packages/patches/gimp-CVE-2016-4994.patch96
-rw-r--r--gnu/packages/patches/khmer-use-libraries.patch16
-rw-r--r--gnu/packages/patches/libmtp-devices.patch554
-rw-r--r--gnu/packages/patches/ninja-tests.patch34
-rw-r--r--gnu/packages/patches/openimageio-boost-1.60.patch47
-rw-r--r--gnu/packages/patches/python-dendropy-exclude-failing-tests.patch21
-rw-r--r--gnu/packages/patches/sudo-CVE-2015-5602.patch372
-rw-r--r--gnu/packages/pdf.scm42
-rw-r--r--gnu/packages/perl.scm308
-rw-r--r--gnu/packages/pumpio.scm1
-rw-r--r--gnu/packages/python.scm257
-rw-r--r--gnu/packages/qt.scm87
-rw-r--r--gnu/packages/readline.scm28
-rw-r--r--gnu/packages/samba.scm18
-rw-r--r--gnu/packages/scheme.scm4
-rw-r--r--gnu/packages/screen.scm36
-rw-r--r--gnu/packages/smalltalk.scm15
-rw-r--r--gnu/packages/ssh.scm162
-rw-r--r--gnu/packages/stalonetray.scm7
-rw-r--r--gnu/packages/statistics.scm150
-rw-r--r--gnu/packages/tls.scm2
-rw-r--r--gnu/packages/tmux.scm38
-rw-r--r--gnu/packages/version-control.scm14
-rw-r--r--gnu/packages/video.scm70
-rw-r--r--gnu/packages/web.scm4
-rw-r--r--gnu/packages/wm.scm1
-rw-r--r--gnu/packages/xdisorg.scm31
-rw-r--r--gnu/packages/xfce.scm34
-rw-r--r--gnu/packages/xml.scm9
-rw-r--r--gnu/services.scm102
-rw-r--r--gnu/services/avahi.scm12
-rw-r--r--gnu/services/base.scm264
-rw-r--r--gnu/services/dbus.scm44
-rw-r--r--gnu/services/desktop.scm67
-rw-r--r--gnu/services/networking.scm54
-rw-r--r--gnu/services/shepherd.scm45
-rw-r--r--gnu/services/ssh.scm97
-rw-r--r--gnu/services/web.scm3
-rw-r--r--gnu/services/xorg.scm42
-rw-r--r--gnu/system.scm10
-rw-r--r--gnu/system/install.scm119
-rw-r--r--gnu/system/linux-container.scm49
-rw-r--r--gnu/system/linux-initrd.scm172
-rw-r--r--gnu/system/locale.scm8
-rw-r--r--gnu/system/mapped-devices.scm34
-rw-r--r--gnu/system/pam.scm61
-rw-r--r--gnu/system/shadow.scm47
-rw-r--r--gnu/system/vm.scm166
-rw-r--r--gnu/tests.scm183
-rw-r--r--gnu/tests/base.scm468
-rw-r--r--gnu/tests/install.scm246
-rw-r--r--guix/build/download.scm14
-rw-r--r--guix/build/svn.scm21
-rw-r--r--guix/config.scm.in6
-rw-r--r--guix/cvs-download.scm20
-rw-r--r--guix/download.scm96
-rw-r--r--guix/gexp.scm188
-rw-r--r--guix/git-download.scm36
-rw-r--r--guix/hg-download.scm22
-rw-r--r--guix/import/cpan.scm13
-rw-r--r--guix/packages.scm209
-rw-r--r--guix/profiles.scm422
-rw-r--r--guix/records.scm19
-rw-r--r--guix/scripts/challenge.scm40
-rw-r--r--guix/scripts/gc.scm7
-rw-r--r--guix/scripts/lint.scm17
-rw-r--r--guix/scripts/publish.scm169
-rwxr-xr-xguix/scripts/substitute.scm3
-rw-r--r--guix/scripts/system.scm2
-rw-r--r--guix/store.scm2
-rw-r--r--guix/svn-download.scm26
-rw-r--r--guix/zlib.scm234
-rw-r--r--m4/guix.m411
-rw-r--r--tests/cpan.scm11
-rw-r--r--tests/gexp.scm100
-rw-r--r--tests/grafts.scm16
-rw-r--r--tests/lint.scm52
-rw-r--r--tests/packages.scm1
-rw-r--r--tests/publish.scm59
-rw-r--r--tests/records.scm29
-rw-r--r--tests/system.scm43
-rw-r--r--tests/zlib.scm63
160 files changed, 7031 insertions, 3550 deletions
diff --git a/.dir-locals.el b/.dir-locals.el
index 0873c1d747b..572a35f828f 100644
--- a/.dir-locals.el
+++ b/.dir-locals.el
@@ -41,6 +41,8 @@
41 (eval . (put 'with-atomic-file-output 'scheme-indent-function 1)) 41 (eval . (put 'with-atomic-file-output 'scheme-indent-function 1))
42 (eval . (put 'call-with-compressed-output-port 'scheme-indent-function 2)) 42 (eval . (put 'call-with-compressed-output-port 'scheme-indent-function 2))
43 (eval . (put 'call-with-decompressed-port 'scheme-indent-function 2)) 43 (eval . (put 'call-with-decompressed-port 'scheme-indent-function 2))
44 (eval . (put 'call-with-gzip-input-port 'scheme-indent-function 1))
45 (eval . (put 'call-with-gzip-output-port 'scheme-indent-function 1))
44 (eval . (put 'signature-case 'scheme-indent-function 1)) 46 (eval . (put 'signature-case 'scheme-indent-function 1))
45 (eval . (put 'emacs-batch-eval 'scheme-indent-function 0)) 47 (eval . (put 'emacs-batch-eval 'scheme-indent-function 0))
46 (eval . (put 'emacs-batch-edit-file 'scheme-indent-function 1)) 48 (eval . (put 'emacs-batch-edit-file 'scheme-indent-function 1))
@@ -59,6 +61,7 @@
59 (eval . (put 'run-with-store 'scheme-indent-function 1)) 61 (eval . (put 'run-with-store 'scheme-indent-function 1))
60 (eval . (put 'run-with-state 'scheme-indent-function 1)) 62 (eval . (put 'run-with-state 'scheme-indent-function 1))
61 (eval . (put 'wrap-program 'scheme-indent-function 1)) 63 (eval . (put 'wrap-program 'scheme-indent-function 1))
64 (eval . (put 'with-imported-modules 'scheme-indent-function 1))
62 65
63 (eval . (put 'call-with-container 'scheme-indent-function 1)) 66 (eval . (put 'call-with-container 'scheme-indent-function 1))
64 (eval . (put 'container-excursion 'scheme-indent-function 1)) 67 (eval . (put 'container-excursion 'scheme-indent-function 1))
diff --git a/.gitignore b/.gitignore
index 003412eeab3..6e892ca6875 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,6 +35,7 @@
35/doc/guix.ky 35/doc/guix.ky
36/doc/guix.pg 36/doc/guix.pg
37/doc/guix.toc 37/doc/guix.toc
38/doc/guix.t2p
38/doc/guix.tp 39/doc/guix.tp
39/doc/guix.vr 40/doc/guix.vr
40/doc/guix.vrs 41/doc/guix.vrs
diff --git a/.mailmap b/.mailmap
index 21841c1a0a6..2af7760b168 100644
--- a/.mailmap
+++ b/.mailmap
@@ -30,8 +30,9 @@ Ludovic Courtès <ludo@gnu.org> <ludovic.courtes@inria.fr>
30Mathieu Lirzin <mthl@gnu.org> <mthl@openmailbox.org> 30Mathieu Lirzin <mthl@gnu.org> <mthl@openmailbox.org>
31Mathieu Lirzin <mthl@gnu.org> <mathieu.lirzin@openmailbox.org> 31Mathieu Lirzin <mthl@gnu.org> <mathieu.lirzin@openmailbox.org>
32Nikita Karetnikov <nikita@karetnikov.org> <nikita.karetnikov@gmail.com> 32Nikita Karetnikov <nikita@karetnikov.org> <nikita.karetnikov@gmail.com>
33Nils Gillmann <ng0@libertad.pw> <niasterisk@grrlz.net> 33ng0 <ng0@we.make.ritual.n0.is> <niasterisk@grrlz.net>
34Nils Gillmann <ng0@libertad.pw> <ng@niasterisk.space> 34ng0 <ng0@we.make.ritual.n0.is> <ng@niasterisk.space>
35ng0 <ng0@we.make.ritual.n0.is> <ng0@libertad.pw>
35Pjotr Prins <pjotr.public01@thebird.nl> 36Pjotr Prins <pjotr.public01@thebird.nl>
36Pjotr Prins <pjotr.public01@thebird.nl> <pjotr.public12@thebird.nl> 37Pjotr Prins <pjotr.public01@thebird.nl> <pjotr.public12@thebird.nl>
37Raimon Grau <raimonster@gmail.com> <raimon@3scale.net> 38Raimon Grau <raimonster@gmail.com> <raimon@3scale.net>
@@ -41,3 +42,4 @@ Ricardo Wurmus <rekado@elephly.net> <ricardo.wurmus@mdc-berlin.de>
41Sou Bunnbu (宋文武) <iyzsong@gmail.com> 42Sou Bunnbu (宋文武) <iyzsong@gmail.com>
42Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> 43Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
43Tomáš Čech <sleep_walker@gnu.org> <sleep_walker@suse.cz> 44Tomáš Čech <sleep_walker@gnu.org> <sleep_walker@suse.cz>
45Tobias Geerinckx-Rice <me@tobias.gr> <tobias.geerinckx.rice@gmail.com> \ No newline at end of file
diff --git a/HACKING b/HACKING
index 41838ee816a..d5828f6836d 100644
--- a/HACKING
+++ b/HACKING
@@ -35,6 +35,10 @@ upgrading GnuTLS or GLib.) We have a mailing list for commit notifications
35(guix-commits@gnu.org), so people can notice. Before pushing your changes, 35(guix-commits@gnu.org), so people can notice. Before pushing your changes,
36make sure to run ‘git pull --rebase’. 36make sure to run ‘git pull --rebase’.
37 37
38All commits that are pushed to the central repository on Savannah should be
39signed with a PGP key, and the public key should be uploaded to your user
40account on Savannah.
41
38For anything else, please post to guix-devel@gnu.org and leave time for a 42For anything else, please post to guix-devel@gnu.org and leave time for a
39review, without committing anything. If you didn’t receive any reply 43review, without committing anything. If you didn’t receive any reply
40after two weeks, and if you’re confident, it’s OK to commit. 44after two weeks, and if you’re confident, it’s OK to commit.
diff --git a/Makefile.am b/Makefile.am
index b7792d07219..dc81d32b6c1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -57,6 +57,7 @@ MODULES = \
57 guix/licenses.scm \ 57 guix/licenses.scm \
58 guix/graph.scm \ 58 guix/graph.scm \
59 guix/cve.scm \ 59 guix/cve.scm \
60 guix/zlib.scm \
60 guix/build-system.scm \ 61 guix/build-system.scm \
61 guix/build-system/ant.scm \ 62 guix/build-system/ant.scm \
62 guix/build-system/cmake.scm \ 63 guix/build-system/cmake.scm \
@@ -252,6 +253,7 @@ SCM_TESTS = \
252 tests/graph.scm \ 253 tests/graph.scm \
253 tests/challenge.scm \ 254 tests/challenge.scm \
254 tests/cve.scm \ 255 tests/cve.scm \
256 tests/zlib.scm \
255 tests/file-systems.scm \ 257 tests/file-systems.scm \
256 tests/system.scm \ 258 tests/system.scm \
257 tests/services.scm \ 259 tests/services.scm \
diff --git a/THANKS b/THANKS
index b0dd79382ab..af7afd3576f 100644
--- a/THANKS
+++ b/THANKS
@@ -14,6 +14,7 @@ infrastructure help:
14 Alexandru Cojocaru <xojoc@gmx.com> 14 Alexandru Cojocaru <xojoc@gmx.com>
15 Aleix Conchillo Flaqué <aconchillo@gmail.com> 15 Aleix Conchillo Flaqué <aconchillo@gmail.com>
16 Malcolm Cook <MEC@stowers.org> 16 Malcolm Cook <MEC@stowers.org>
17 Thomas Danckaert <thomas.danckaert@gmail.com>
17 Rafael Ferreira <rafael.f.f1@gmail.com> 18 Rafael Ferreira <rafael.f.f1@gmail.com>
18 Christian Grothoff <christian@grothoff.org> 19 Christian Grothoff <christian@grothoff.org>
19 Eric Hanchrow <eric.hanchrow@gmail.com> 20 Eric Hanchrow <eric.hanchrow@gmail.com>
diff --git a/config-daemon.ac b/config-daemon.ac
index 803eb536996..f66f31269df 100644
--- a/config-daemon.ac
+++ b/config-daemon.ac
@@ -113,10 +113,10 @@ if test "x$guix_build_daemon" = "xyes"; then
113 dnl Determine the appropriate default list of substitute URLs. 113 dnl Determine the appropriate default list of substitute URLs.
114 GUILE_MODULE_AVAILABLE([have_gnutls], [(gnutls)]) 114 GUILE_MODULE_AVAILABLE([have_gnutls], [(gnutls)])
115 if test "x$have_gnutls" = "xyes"; then 115 if test "x$have_gnutls" = "xyes"; then
116 guix_substitute_urls="https://mirror.hydra.gnu.org https://hydra.gnu.org" 116 guix_substitute_urls="https://mirror.hydra.gnu.org"
117 else 117 else
118 AC_MSG_WARN([GnuTLS is missing, substitutes will be downloaded in the clear]) 118 AC_MSG_WARN([GnuTLS is missing, substitutes will be downloaded in the clear])
119 guix_substitute_urls="http://mirror.hydra.gnu.org http://hydra.gnu.org" 119 guix_substitute_urls="http://mirror.hydra.gnu.org"
120 fi 120 fi
121 AC_MSG_CHECKING([for default substitute URLs]) 121 AC_MSG_CHECKING([for default substitute URLs])
122 AC_MSG_RESULT([$guix_substitute_urls]) 122 AC_MSG_RESULT([$guix_substitute_urls])
diff --git a/configure.ac b/configure.ac
index 1f5c549aee6..20adf85f0b0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -189,6 +189,17 @@ AC_SUBST([LIBGCRYPT_LIBDIR])
189 189
190GUIX_ASSERT_LIBGCRYPT_USABLE 190GUIX_ASSERT_LIBGCRYPT_USABLE
191 191
192dnl Library name of zlib suitable for 'dynamic-link'.
193GUIX_LIBZ_LIBDIR([libz_libdir])
194if test "x$libz_libdir" = "x"; then
195 LIBZ="libz"
196else
197 LIBZ="$libz_libdir/libz"
198fi
199AC_MSG_CHECKING([for zlib's shared library name])
200AC_MSG_RESULT([$LIBZ])
201AC_SUBST([LIBZ])
202
192AC_CACHE_SAVE 203AC_CACHE_SAVE
193 204
194m4_include([config-daemon.ac]) 205m4_include([config-daemon.ac])
diff --git a/doc/guix.texi b/doc/guix.texi
index 7204f2e9392..318e6cb5d9d 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -17,6 +17,7 @@ Copyright @copyright{} 2015, 2016 Mathieu Lirzin@*
17Copyright @copyright{} 2014 Pierre-Antoine Rault@* 17Copyright @copyright{} 2014 Pierre-Antoine Rault@*
18Copyright @copyright{} 2015 Taylan Ulrich Bayırlı/Kammer@* 18Copyright @copyright{} 2015 Taylan Ulrich Bayırlı/Kammer@*
19Copyright @copyright{} 2015, 2016 Leo Famulari@* 19Copyright @copyright{} 2015, 2016 Leo Famulari@*
20Copyright @copyright{} 2015, 2016 Ricardo Wurmus@*
20Copyright @copyright{} 2016 Ben Woodcroft@* 21Copyright @copyright{} 2016 Ben Woodcroft@*
21Copyright @copyright{} 2016 Chris Marusich@* 22Copyright @copyright{} 2016 Chris Marusich@*
22Copyright @copyright{} 2016 Efraim Flashner 23Copyright @copyright{} 2016 Efraim Flashner
@@ -546,6 +547,10 @@ Installing
546allow you to use the @command{guix import pypi} command (@pxref{Invoking 547allow you to use the @command{guix import pypi} command (@pxref{Invoking
547guix import}). It is of 548guix import}). It is of
548interest primarily for developers and not for casual users. 549interest primarily for developers and not for casual users.
550
551@item
552When @url{http://zlib.net, zlib} is available, @command{guix publish}
553can compress build byproducts (@pxref{Invoking guix publish}).
549@end itemize 554@end itemize
550 555
551Unless @code{--disable-daemon} was passed to @command{configure}, the 556Unless @code{--disable-daemon} was passed to @command{configure}, the
@@ -2669,6 +2674,7 @@ Examples include:
2669download a file from the HTTP, HTTPS, or FTP URL specified in the 2674download a file from the HTTP, HTTPS, or FTP URL specified in the
2670@code{uri} field; 2675@code{uri} field;
2671 2676
2677@vindex git-fetch
2672@item @var{git-fetch} from @code{(guix git-download)} 2678@item @var{git-fetch} from @code{(guix git-download)}
2673clone the Git version control repository, and check out the revision 2679clone the Git version control repository, and check out the revision
2674specified in the @code{uri} field as a @code{git-reference} object; a 2680specified in the @code{uri} field as a @code{git-reference} object; a
@@ -2686,6 +2692,10 @@ A bytevector containing the SHA-256 hash of the source. Typically the
2686@code{base32} form is used here to generate the bytevector from a 2692@code{base32} form is used here to generate the bytevector from a
2687base-32 string. 2693base-32 string.
2688 2694
2695You can obtain this information using @code{guix download}
2696(@pxref{Invoking guix download}) or @code{guix hash} (@pxref{Invoking
2697guix hash}).
2698
2689@item @code{file-name} (default: @code{#f}) 2699@item @code{file-name} (default: @code{#f})
2690The file name under which the source code should be saved. When this is 2700The file name under which the source code should be saved. When this is
2691@code{#f}, a sensible default value will be used in most cases. In case 2701@code{#f}, a sensible default value will be used in most cases. In case
@@ -2697,8 +2707,9 @@ file name explicitly because the default is not very descriptive.
2697A list of file names containing patches to be applied to the source. 2707A list of file names containing patches to be applied to the source.
2698 2708
2699@item @code{snippet} (default: @code{#f}) 2709@item @code{snippet} (default: @code{#f})
2700A quoted piece of code that will be run in the source directory to make 2710A G-expression (@pxref{G-Expressions}) or S-expression that will be run
2701any modifications, which is sometimes more convenient than a patch. 2711in the source directory. This is a convenient way to modify the source,
2712sometimes more convenient than a patch.
2702 2713
2703@item @code{patch-flags} (default: @code{'("-p1")}) 2714@item @code{patch-flags} (default: @code{'("-p1")})
2704A list of command-line flags that should be passed to the @code{patch} 2715A list of command-line flags that should be passed to the @code{patch}
@@ -2713,10 +2724,6 @@ such as GNU@tie{}Patch.
2713A list of Guile modules that should be loaded during the patching 2724A list of Guile modules that should be loaded during the patching
2714process and while running the code in the @code{snippet} field. 2725process and while running the code in the @code{snippet} field.
2715 2726
2716@item @code{imported-modules} (default: @code{'()})
2717The list of Guile modules to import in the patch derivation, for use by
2718the @code{snippet}.
2719
2720@item @code{patch-guile} (default: @code{#f}) 2727@item @code{patch-guile} (default: @code{#f})
2721The Guile package that should be used in the patching process. When 2728The Guile package that should be used in the patching process. When
2722this is @code{#f}, a sensible default is used. 2729this is @code{#f}, a sensible default is used.
@@ -3697,6 +3704,30 @@ In the example above, the native build of @var{coreutils} is used, so
3697that @command{ln} can actually run on the host; but then the 3704that @command{ln} can actually run on the host; but then the
3698cross-compiled build of @var{emacs} is referenced. 3705cross-compiled build of @var{emacs} is referenced.
3699 3706
3707@cindex imported modules, for gexps
3708@findex with-imported-modules
3709Another gexp feature is @dfn{imported modules}: sometimes you want to be
3710able to use certain Guile modules from the ``host environment'' in the
3711gexp, so those modules should be imported in the ``build environment''.
3712The @code{with-imported-modules} form allows you to express that:
3713
3714@example
3715(let ((build (with-imported-modules '((guix build utils))
3716 #~(begin
3717 (use-modules (guix build utils))
3718 (mkdir-p (string-append #$output "/bin"))))))
3719 (gexp->derivation "empty-dir"
3720 #~(begin
3721 #$build
3722 (display "success!\n")
3723 #t)))
3724@end example
3725
3726@noindent
3727In this example, the @code{(guix build utils)} module is automatically
3728pulled into the isolated build environment of our gexp, such that
3729@code{(use-modules (guix build utils))} works as expected.
3730
3700The syntactic form to construct gexps is summarized below. 3731The syntactic form to construct gexps is summarized below.
3701 3732
3702@deffn {Scheme Syntax} #~@var{exp} 3733@deffn {Scheme Syntax} #~@var{exp}
@@ -3756,6 +3787,16 @@ G-expressions created by @code{gexp} or @code{#~} are run-time objects
3756of the @code{gexp?} type (see below.) 3787of the @code{gexp?} type (see below.)
3757@end deffn 3788@end deffn
3758 3789
3790@deffn {Scheme Syntax} with-imported-modules @var{modules} @var{body}@dots{}
3791Mark the gexps defined in @var{body}@dots{} as requiring @var{modules}
3792in their execution environment. @var{modules} must be a list of Guile
3793module names, such as @code{'((guix build utils) (guix build gremlin))}.
3794
3795This form has @emph{lexical} scope: it has an effect on the gexps
3796directly defined in @var{body}@dots{}, but not on those defined, say, in
3797procedures called from @var{body}@dots{}.
3798@end deffn
3799
3759@deffn {Scheme Procedure} gexp? @var{obj} 3800@deffn {Scheme Procedure} gexp? @var{obj}
3760Return @code{#t} if @var{obj} is a G-expression. 3801Return @code{#t} if @var{obj} is a G-expression.
3761@end deffn 3802@end deffn
@@ -3781,7 +3822,9 @@ stored in a file called @var{script-name}. When @var{target} is true,
3781it is used as the cross-compilation target triplet for packages referred 3822it is used as the cross-compilation target triplet for packages referred
3782to by @var{exp}. 3823to by @var{exp}.
3783 3824
3784Make @var{modules} available in the evaluation context of @var{exp}; 3825@var{modules} is deprecated in favor of @code{with-imported-modules}.
3826Its meaning is to
3827make @var{modules} available in the evaluation context of @var{exp};
3785@var{modules} is a list of names of Guile modules searched in 3828@var{modules} is a list of names of Guile modules searched in
3786@var{module-path} to be copied in the store, compiled, and made available in 3829@var{module-path} to be copied in the store, compiled, and made available in
3787the load path during the execution of @var{exp}---e.g., @code{((guix 3830the load path during the execution of @var{exp}---e.g., @code{((guix
@@ -3862,10 +3905,9 @@ This is the declarative counterpart of @code{text-file}.
3862@end deffn 3905@end deffn
3863 3906
3864@deffn {Scheme Procedure} computed-file @var{name} @var{gexp} @ 3907@deffn {Scheme Procedure} computed-file @var{name} @var{gexp} @
3865 [#:modules '()] [#:options '(#:local-build? #t)] 3908 [#:options '(#:local-build? #t)]
3866Return an object representing the store item @var{name}, a file or 3909Return an object representing the store item @var{name}, a file or
3867directory computed by @var{gexp}. @var{modules} specifies the set of 3910directory computed by @var{gexp}. @var{options}
3868modules visible in the execution context of @var{gexp}. @var{options}
3869is a list of additional arguments to pass to @code{gexp->derivation}. 3911is a list of additional arguments to pass to @code{gexp->derivation}.
3870 3912
3871This is the declarative counterpart of @code{gexp->derivation}. 3913This is the declarative counterpart of @code{gexp->derivation}.
@@ -3873,7 +3915,7 @@ This is the declarative counterpart of @code{gexp->derivation}.
3873 3915
3874@deffn {Monadic Procedure} gexp->script @var{name} @var{exp} 3916@deffn {Monadic Procedure} gexp->script @var{name} @var{exp}
3875Return an executable script @var{name} that runs @var{exp} using 3917Return an executable script @var{name} that runs @var{exp} using
3876@var{guile} with @var{modules} in its search path. 3918@var{guile}, with @var{exp}'s imported modules in its search path.
3877 3919
3878The example below builds a script that simply invokes the @command{ls} 3920The example below builds a script that simply invokes the @command{ls}
3879command: 3921command:
@@ -3899,16 +3941,20 @@ executable file @file{/gnu/store/@dots{}-list-files} along these lines:
3899@end deffn 3941@end deffn
3900 3942
3901@deffn {Scheme Procedure} program-file @var{name} @var{exp} @ 3943@deffn {Scheme Procedure} program-file @var{name} @var{exp} @
3902 [#:modules '()] [#:guile #f] 3944 [#:guile #f]
3903Return an object representing the executable store item @var{name} that 3945Return an object representing the executable store item @var{name} that
3904runs @var{gexp}. @var{guile} is the Guile package used to execute that 3946runs @var{gexp}. @var{guile} is the Guile package used to execute that
3905script, and @var{modules} is the list of modules visible to that script. 3947script.
3906 3948
3907This is the declarative counterpart of @code{gexp->script}. 3949This is the declarative counterpart of @code{gexp->script}.
3908@end deffn 3950@end deffn
3909 3951
3910@deffn {Monadic Procedure} gexp->file @var{name} @var{exp} 3952@deffn {Monadic Procedure} gexp->file @var{name} @var{exp} @
3953 [#:set-load-path? #t]
3911Return a derivation that builds a file @var{name} containing @var{exp}. 3954Return a derivation that builds a file @var{name} containing @var{exp}.
3955When @var{set-load-path?} is true, emit code in the resulting file to
3956set @code{%load-path} and @code{%load-compiled-path} to honor
3957@var{exp}'s imported modules.
3912 3958
3913The resulting file holds references to all the dependencies of @var{exp} 3959The resulting file holds references to all the dependencies of @var{exp}
3914or a subset thereof. 3960or a subset thereof.
@@ -4533,6 +4579,17 @@ hash (@pxref{Invoking guix archive}).
4533@c FIXME: Replace xref above with xref to an ``Archive'' section when 4579@c FIXME: Replace xref above with xref to an ``Archive'' section when
4534@c it exists. 4580@c it exists.
4535 4581
4582@vindex git-fetch
4583As an example, here is how you would compute the hash of a Git checkout,
4584which is useful when using the @code{git-fetch} method (@pxref{origin
4585Reference}):
4586
4587@example
4588$ git clone http://example.org/foo.git
4589$ cd foo
4590$ rm -rf .git
4591$ guix hash -r .
4592@end example
4536@end table 4593@end table
4537 4594
4538@node Invoking guix import 4595@node Invoking guix import
@@ -5592,6 +5649,18 @@ accept connections from any interface.
5592Change privileges to @var{user} as soon as possible---i.e., once the 5649Change privileges to @var{user} as soon as possible---i.e., once the
5593server socket is open and the signing key has been read. 5650server socket is open and the signing key has been read.
5594 5651
5652@item --compression[=@var{level}]
5653@itemx -C [@var{level}]
5654Compress data using the given @var{level}. When @var{level} is zero,
5655disable compression. The range 1 to 9 corresponds to different gzip
5656compression levels: 1 is the fastest, and 9 is the best (CPU-intensive).
5657The default is 3.
5658
5659Compression occurs on the fly and the compressed streams are not
5660cached. Thus, to reduce load on the machine that runs @command{guix
5661publish}, it may be a good idea to choose a low compression level, or to
5662run @command{guix publish} behind a caching proxy.
5663
5595@item --ttl=@var{ttl} 5664@item --ttl=@var{ttl}
5596Produce @code{Cache-Control} HTTP headers that advertise a time-to-live 5665Produce @code{Cache-Control} HTTP headers that advertise a time-to-live
5597(TTL) of @var{ttl}. @var{ttl} must denote a duration: @code{5d} means 5 5666(TTL) of @var{ttl}. @var{ttl} must denote a duration: @code{5d} means 5
@@ -7494,6 +7563,41 @@ created by @command{guix archive --generate-key} (@pxref{Invoking guix
7494archive}). If that is not the case, the service will fail to start. 7563archive}). If that is not the case, the service will fail to start.
7495@end deffn 7564@end deffn
7496 7565
7566@anchor{rngd-service}
7567@deffn {Scheme Procedure} rngd-service [#:rng-tools @var{rng-tools}] @
7568 [#:device "/dev/hwrng"]
7569Return a service that runs the @command{rngd} program from @var{rng-tools}
7570to add @var{device} to the kernel's entropy pool. The service will fail if
7571@var{device} does not exist.
7572@end deffn
7573
7574@anchor{pam-limits-service}
7575@cindex session limits
7576@cindex ulimit
7577@cindex priority
7578@deffn {Scheme Procedure} pam-limits-service [#:limits @var{limits}]
7579
7580Return a service that installs a configuration file for the
7581@uref{http://linux-pam.org/Linux-PAM-html/sag-pam_limits.html,
7582@code{pam_limits} module}. The procedure optionally takes a list of
7583@code{pam-limits-entry} values, which can be used to specify
7584@code{ulimit} limits and nice priority limits to user sessions.
7585
7586The following limits definition sets two hard and soft limits for all
7587login sessions of users in the @code{realtime} group:
7588
7589@example
7590(pam-limits-service
7591 (list
7592 (pam-limits-entry "@@realtime" 'both 'rtprio 99)
7593 (pam-limits-entry "@@realtime" 'both 'memlock 'unlimited)))
7594@end example
7595
7596The first entry increases the maximum realtime priority for
7597non-privileged processes; the second entry lifts any restriction of the
7598maximum address space that can be locked in memory. These settings are
7599commonly used for real-time audio systems.
7600@end deffn
7497 7601
7498@node Scheduled Job Execution 7602@node Scheduled Job Execution
7499@subsubsection Scheduled Job Execution 7603@subsubsection Scheduled Job Execution
@@ -7602,7 +7706,7 @@ Protocol (DHCP) client, on all the non-loopback network interfaces.
7602@end deffn 7706@end deffn
7603 7707
7604@deffn {Scheme Procedure} static-networking-service @var{interface} @var{ip} @ 7708@deffn {Scheme Procedure} static-networking-service @var{interface} @var{ip} @
7605 [#:gateway #f] [#:name-services @code{'()}] 7709 [#:gateway #f] [#:name-servers @code{'()}]
7606Return a service that starts @var{interface} with address @var{ip}. If 7710Return a service that starts @var{interface} with address @var{ip}. If
7607@var{gateway} is true, it must be a string specifying the default network 7711@var{gateway} is true, it must be a string specifying the default network
7608gateway. 7712gateway.
@@ -7695,7 +7799,7 @@ In addition, @var{extra-settings} specifies a string to append to the
7695configuration file. 7799configuration file.
7696@end deffn 7800@end deffn
7697 7801
7698Furthermore, @code{(gnu services ssh)} provides the following service. 7802Furthermore, @code{(gnu services ssh)} provides the following services.
7699 7803
7700@deffn {Scheme Procedure} lsh-service [#:host-key "/etc/lsh/host-key"] @ 7804@deffn {Scheme Procedure} lsh-service [#:host-key "/etc/lsh/host-key"] @
7701 [#:daemonic? #t] [#:interfaces '()] [#:port-number 22] @ 7805 [#:daemonic? #t] [#:interfaces '()] [#:port-number 22] @
@@ -7733,6 +7837,47 @@ root.
7733The other options should be self-descriptive. 7837The other options should be self-descriptive.
7734@end deffn 7838@end deffn
7735 7839
7840@deffn {Scheme Procedure} dropbear-service [@var{config}]
7841Run the @uref{https://matt.ucc.asn.au/dropbear/dropbear.html,Dropbear SSH
7842daemon} with the given @var{config}, a @code{<dropbear-configuration>}
7843object.
7844
7845For example, to specify a Dropbear service listening on port 1234, add
7846this call to the operating system's @code{services} field:
7847
7848@example
7849(dropbear-service (dropbear-configuration
7850 (port-number 1234)))
7851@end example
7852@end deffn
7853
7854@deftp {Data Type} dropbear-configuration
7855This data type represents the configuration of a Dropbear SSH daemon.
7856
7857@table @asis
7858@item @code{dropbear} (default: @var{dropbear})
7859The Dropbear package to use.
7860
7861@item @code{port-number} (default: 22)
7862The TCP port where the daemon waits for incoming connections.
7863
7864@item @code{syslog-output?} (default: @code{#t})
7865Whether to enable syslog output.
7866
7867@item @code{pid-file} (default: @code{"/var/run/dropbear.pid"})
7868File name of the daemon's PID file.
7869
7870@item @code{root-login?} (default: @code{#f})
7871Whether to allow @code{root} logins.
7872
7873@item @code{allow-empty-passwords?} (default: @code{#f})
7874Whether to allow empty passwords.
7875
7876@item @code{password-authentication?} (default: @code{#t})
7877Whether to enable password-based authentication.
7878@end table
7879@end deftp
7880
7736@defvr {Scheme Variable} %facebook-host-aliases 7881@defvr {Scheme Variable} %facebook-host-aliases
7737This variable contains a string for use in @file{/etc/hosts} 7882This variable contains a string for use in @file{/etc/hosts}
7738(@pxref{Host Names,,, libc, The GNU C Library Reference Manual}). Each 7883(@pxref{Host Names,,, libc, The GNU C Library Reference Manual}). Each
@@ -7767,7 +7912,7 @@ The @code{(gnu services avahi)} provides the following definition.
7767@deffn {Scheme Procedure} avahi-service [#:avahi @var{avahi}] @ 7912@deffn {Scheme Procedure} avahi-service [#:avahi @var{avahi}] @
7768 [#:host-name #f] [#:publish? #t] [#:ipv4? #t] @ 7913 [#:host-name #f] [#:publish? #t] [#:ipv4? #t] @
7769 [#:ipv6? #t] [#:wide-area? #f] @ 7914 [#:ipv6? #t] [#:wide-area? #f] @
7770 [#:domains-to-browse '()] 7915 [#:domains-to-browse '()] [#:debug? #f]
7771Return a service that runs @command{avahi-daemon}, a system-wide 7916Return a service that runs @command{avahi-daemon}, a system-wide
7772mDNS/DNS-SD responder that allows for service discovery and 7917mDNS/DNS-SD responder that allows for service discovery and
7773"zero-configuration" host name lookups (see @uref{http://avahi.org/}), and 7918"zero-configuration" host name lookups (see @uref{http://avahi.org/}), and
@@ -9973,15 +10118,11 @@ program. That gives a lot of flexibility. The
9973program to run in that initrd. 10118program to run in that initrd.
9974 10119
9975@deffn {Monadic Procedure} expression->initrd @var{exp} @ 10120@deffn {Monadic Procedure} expression->initrd @var{exp} @
9976 [#:guile %guile-static-stripped] [#:name "guile-initrd"] @ 10121 [#:guile %guile-static-stripped] [#:name "guile-initrd"]
9977 [#:modules '()]
9978Return a derivation that builds a Linux initrd (a gzipped cpio archive) 10122Return a derivation that builds a Linux initrd (a gzipped cpio archive)
9979containing @var{guile} and that evaluates @var{exp}, a G-expression, 10123containing @var{guile} and that evaluates @var{exp}, a G-expression,
9980upon booting. All the derivations referenced by @var{exp} are 10124upon booting. All the derivations referenced by @var{exp} are
9981automatically copied to the initrd. 10125automatically copied to the initrd.
9982
9983@var{modules} is a list of Guile module names to be embedded in the
9984initrd.
9985@end deffn 10126@end deffn
9986 10127
9987@node GRUB Configuration 10128@node GRUB Configuration
@@ -10805,10 +10946,6 @@ where @var{service-name} is one of the symbols in @var{provision}
10805This is the list of modules that must be in scope when @code{start} and 10946This is the list of modules that must be in scope when @code{start} and
10806@code{stop} are evaluated. 10947@code{stop} are evaluated.
10807 10948
10808@item @code{imported-modules} (default: @var{%default-imported-modules})
10809This is the list of modules to import in the execution environment of
10810the Shepherd.
10811
10812@end table 10949@end table
10813@end deftp 10950@end deftp
10814 10951
diff --git a/emacs/guix-devel.el b/emacs/guix-devel.el
index ee8371ce81e..b71670cdfba 100644
--- a/emacs/guix-devel.el
+++ b/emacs/guix-devel.el
@@ -216,6 +216,7 @@ to find 'modify-phases' keywords."
216 "with-derivation-substitute" 216 "with-derivation-substitute"
217 "with-directory-excursion" 217 "with-directory-excursion"
218 "with-error-handling" 218 "with-error-handling"
219 "with-imported-modules"
219 "with-monad" 220 "with-monad"
220 "with-mutex" 221 "with-mutex"
221 "with-store")) 222 "with-store"))
@@ -306,6 +307,7 @@ Each rule should have a form (SYMBOL VALUE). See `put' for details."
306 (with-derivation-substitute 2) 307 (with-derivation-substitute 2)
307 (with-directory-excursion 1) 308 (with-directory-excursion 1)
308 (with-error-handling 0) 309 (with-error-handling 0)
310 (with-imported-modules 1)
309 (with-monad 1) 311 (with-monad 1)
310 (with-mutex 1) 312 (with-mutex 1)
311 (with-store 1) 313 (with-store 1)
diff --git a/etc/guix-daemon.service.in b/etc/guix-daemon.service.in
index fc7c811db62..ab0ce090c3e 100644
--- a/etc/guix-daemon.service.in
+++ b/etc/guix-daemon.service.in
@@ -7,6 +7,7 @@ Description=Build daemon for GNU Guix
7 7
8[Service] 8[Service]
9ExecStart=@bindir@/guix-daemon --build-users-group=guixbuild 9ExecStart=@bindir@/guix-daemon --build-users-group=guixbuild
10Environment=GUIX_LOCPATH=/root/.guix-profile/lib/locale
10RemainAfterExit=yes 11RemainAfterExit=yes
11StandardOutput=syslog 12StandardOutput=syslog
12StandardError=syslog 13StandardError=syslog
diff --git a/gnu/local.mk b/gnu/local.mk
index ce4cdf65c10..29e1e84ae03 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -150,6 +150,7 @@ GNU_SYSTEM_MODULES = \
150 %D%/packages/gnustep.scm \ 150 %D%/packages/gnustep.scm \
151 %D%/packages/gnuzilla.scm \ 151 %D%/packages/gnuzilla.scm \
152 %D%/packages/gnu-pw-mgr.scm \ 152 %D%/packages/gnu-pw-mgr.scm \
153 %D%/packages/golang.scm \
153 %D%/packages/gperf.scm \ 154 %D%/packages/gperf.scm \
154 %D%/packages/gprolog.scm \ 155 %D%/packages/gprolog.scm \
155 %D%/packages/gps.scm \ 156 %D%/packages/gps.scm \
@@ -214,7 +215,6 @@ GNU_SYSTEM_MODULES = \
214 %D%/packages/llvm.scm \ 215 %D%/packages/llvm.scm \
215 %D%/packages/lout.scm \ 216 %D%/packages/lout.scm \
216 %D%/packages/logging.scm \ 217 %D%/packages/logging.scm \
217 %D%/packages/lsh.scm \
218 %D%/packages/lsof.scm \ 218 %D%/packages/lsof.scm \
219 %D%/packages/lua.scm \ 219 %D%/packages/lua.scm \
220 %D%/packages/lxde.scm \ 220 %D%/packages/lxde.scm \
@@ -441,7 +441,6 @@ dist_patch_DATA = \
441 %D%/packages/patches/automake-test-gzip-warning.patch \ 441 %D%/packages/patches/automake-test-gzip-warning.patch \
442 %D%/packages/patches/avahi-localstatedir.patch \ 442 %D%/packages/patches/avahi-localstatedir.patch \
443 %D%/packages/patches/avidemux-install-to-lib.patch \ 443 %D%/packages/patches/avidemux-install-to-lib.patch \
444 %D%/packages/patches/avrdude-fix-libusb.patch \
445 %D%/packages/patches/awesome-reproducible-png.patch \ 444 %D%/packages/patches/awesome-reproducible-png.patch \
446 %D%/packages/patches/bash-completion-directories.patch \ 445 %D%/packages/patches/bash-completion-directories.patch \
447 %D%/packages/patches/beets-image-test-failure.patch \ 446 %D%/packages/patches/beets-image-test-failure.patch \
@@ -454,6 +453,7 @@ dist_patch_DATA = \
454 %D%/packages/patches/cdparanoia-fpic.patch \ 453 %D%/packages/patches/cdparanoia-fpic.patch \
455 %D%/packages/patches/chmlib-inttypes.patch \ 454 %D%/packages/patches/chmlib-inttypes.patch \
456 %D%/packages/patches/clang-libc-search-path.patch \ 455 %D%/packages/patches/clang-libc-search-path.patch \
456 %D%/packages/patches/clang-3.8-libc-search-path.patch \
457 %D%/packages/patches/clucene-pkgconfig.patch \ 457 %D%/packages/patches/clucene-pkgconfig.patch \
458 %D%/packages/patches/cmake-fix-tests.patch \ 458 %D%/packages/patches/cmake-fix-tests.patch \
459 %D%/packages/patches/cpio-gets-undeclared.patch \ 459 %D%/packages/patches/cpio-gets-undeclared.patch \
@@ -511,10 +511,16 @@ dist_patch_DATA = \
511 %D%/packages/patches/gcc-cross-environment-variables.patch \ 511 %D%/packages/patches/gcc-cross-environment-variables.patch \
512 %D%/packages/patches/gcc-libvtv-runpath.patch \ 512 %D%/packages/patches/gcc-libvtv-runpath.patch \
513 %D%/packages/patches/gcc-5.0-libvtv-runpath.patch \ 513 %D%/packages/patches/gcc-5.0-libvtv-runpath.patch \
514 %D%/packages/patches/gd-CVE-2016-5766.patch \
515 %D%/packages/patches/gd-CVE-2016-6128.patch \
516 %D%/packages/patches/gd-CVE-2016-6132.patch \
517 %D%/packages/patches/gd-CVE-2016-6214.patch \
518 %D%/packages/patches/gd-fix-test-on-i686.patch \
514 %D%/packages/patches/gegl-CVE-2012-4433.patch \ 519 %D%/packages/patches/gegl-CVE-2012-4433.patch \
515 %D%/packages/patches/geoclue-config.patch \ 520 %D%/packages/patches/geoclue-config.patch \
516 %D%/packages/patches/ghostscript-CVE-2015-3228.patch \ 521 %D%/packages/patches/ghostscript-CVE-2015-3228.patch \
517 %D%/packages/patches/ghostscript-runpath.patch \ 522 %D%/packages/patches/ghostscript-runpath.patch \
523 %D%/packages/patches/gimp-CVE-2016-4994.patch \
518 %D%/packages/patches/glib-networking-ssl-cert-file.patch \ 524 %D%/packages/patches/glib-networking-ssl-cert-file.patch \
519 %D%/packages/patches/glib-tests-timer.patch \ 525 %D%/packages/patches/glib-tests-timer.patch \
520 %D%/packages/patches/glibc-bootstrap-system.patch \ 526 %D%/packages/patches/glibc-bootstrap-system.patch \
@@ -590,6 +596,7 @@ dist_patch_DATA = \
590 %D%/packages/patches/jasper-CVE-2016-2089.patch \ 596 %D%/packages/patches/jasper-CVE-2016-2089.patch \
591 %D%/packages/patches/jasper-CVE-2016-2116.patch \ 597 %D%/packages/patches/jasper-CVE-2016-2116.patch \
592 %D%/packages/patches/jbig2dec-ignore-testtest.patch \ 598 %D%/packages/patches/jbig2dec-ignore-testtest.patch \
599 %D%/packages/patches/khmer-use-libraries.patch \
593 %D%/packages/patches/kmod-module-directory.patch \ 600 %D%/packages/patches/kmod-module-directory.patch \
594 %D%/packages/patches/ldc-disable-tests.patch \ 601 %D%/packages/patches/ldc-disable-tests.patch \
595 %D%/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch \ 602 %D%/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch \
@@ -603,7 +610,6 @@ dist_patch_DATA = \
603 %D%/packages/patches/libdrm-symbol-check.patch \ 610 %D%/packages/patches/libdrm-symbol-check.patch \
604 %D%/packages/patches/libevent-dns-tests.patch \ 611 %D%/packages/patches/libevent-dns-tests.patch \
605 %D%/packages/patches/libextractor-ffmpeg-3.patch \ 612 %D%/packages/patches/libextractor-ffmpeg-3.patch \
606 %D%/packages/patches/libmtp-devices.patch \
607 %D%/packages/patches/liboop-mips64-deplibs-fix.patch \ 613 %D%/packages/patches/liboop-mips64-deplibs-fix.patch \
608 %D%/packages/patches/libotr-test-auth-fix.patch \ 614 %D%/packages/patches/libotr-test-auth-fix.patch \
609 %D%/packages/patches/liblxqt-include.patch \ 615 %D%/packages/patches/liblxqt-include.patch \
@@ -673,7 +679,6 @@ dist_patch_DATA = \
673 %D%/packages/patches/ocaml-CVE-2015-8869.patch \ 679 %D%/packages/patches/ocaml-CVE-2015-8869.patch \
674 %D%/packages/patches/ocaml-findlib-make-install.patch \ 680 %D%/packages/patches/ocaml-findlib-make-install.patch \
675 %D%/packages/patches/openexr-missing-samples.patch \ 681 %D%/packages/patches/openexr-missing-samples.patch \
676 %D%/packages/patches/openimageio-boost-1.60.patch \
677 %D%/packages/patches/openjpeg-CVE-2015-6581.patch \ 682 %D%/packages/patches/openjpeg-CVE-2015-6581.patch \
678 %D%/packages/patches/openjpeg-use-after-free-fix.patch \ 683 %D%/packages/patches/openjpeg-use-after-free-fix.patch \
679 %D%/packages/patches/openssh-CVE-2015-8325.patch \ 684 %D%/packages/patches/openssh-CVE-2015-8325.patch \
@@ -729,6 +734,7 @@ dist_patch_DATA = \
729 %D%/packages/patches/python-2.7-source-date-epoch.patch \ 734 %D%/packages/patches/python-2.7-source-date-epoch.patch \
730 %D%/packages/patches/python-3-deterministic-build-info.patch \ 735 %D%/packages/patches/python-3-deterministic-build-info.patch \
731 %D%/packages/patches/python-3-search-paths.patch \ 736 %D%/packages/patches/python-3-search-paths.patch \
737 %D%/packages/patches/python-dendropy-exclude-failing-tests.patch \
732 %D%/packages/patches/python-disable-ssl-test.patch \ 738 %D%/packages/patches/python-disable-ssl-test.patch \
733 %D%/packages/patches/python-fix-tests.patch \ 739 %D%/packages/patches/python-fix-tests.patch \
734 %D%/packages/patches/python-ipython-inputhook-ctype.patch \ 740 %D%/packages/patches/python-ipython-inputhook-ctype.patch \
@@ -760,7 +766,6 @@ dist_patch_DATA = \
760 %D%/packages/patches/slim-sigusr1.patch \ 766 %D%/packages/patches/slim-sigusr1.patch \
761 %D%/packages/patches/slurm-configure-remove-nonfree-contribs.patch \ 767 %D%/packages/patches/slurm-configure-remove-nonfree-contribs.patch \
762 %D%/packages/patches/soprano-find-clucene.patch \ 768 %D%/packages/patches/soprano-find-clucene.patch \
763 %D%/packages/patches/sudo-CVE-2015-5602.patch \
764 %D%/packages/patches/superlu-dist-scotchmetis.patch \ 769 %D%/packages/patches/superlu-dist-scotchmetis.patch \
765 %D%/packages/patches/synfig-build-fix.patch \ 770 %D%/packages/patches/synfig-build-fix.patch \
766 %D%/packages/patches/t1lib-CVE-2010-2642.patch \ 771 %D%/packages/patches/t1lib-CVE-2010-2642.patch \
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 415a35aab3e..1d08be9e139 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -11,6 +11,7 @@
11;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> 11;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
12;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> 12;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
13;;; Copyright © 2016 Peter Feigl <peter.feigl@nexoid.at> 13;;; Copyright © 2016 Peter Feigl <peter.feigl@nexoid.at>
14;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
14;;; 15;;;
15;;; This file is part of GNU Guix. 16;;; This file is part of GNU Guix.
16;;; 17;;;
@@ -789,18 +790,17 @@ system administrator.")
789(define-public sudo 790(define-public sudo
790 (package 791 (package
791 (name "sudo") 792 (name "sudo")
792 (version "1.8.15") 793 (version "1.8.17p1")
793 (source (origin 794 (source (origin
794 (method url-fetch) 795 (method url-fetch)
795 (uri 796 (uri
796 (list (string-append "http://www.sudo.ws/sudo/dist/sudo-" 797 (list (string-append "https://www.sudo.ws/sudo/dist/sudo-"
797 version ".tar.gz") 798 version ".tar.gz")
798 (string-append "ftp://ftp.sudo.ws/pub/sudo/OLD/sudo-" 799 (string-append "ftp://ftp.sudo.ws/pub/sudo/OLD/sudo-"
799 version ".tar.gz"))) 800 version ".tar.gz")))
800 (sha256 801 (sha256
801 (base32 802 (base32
802 "0263gi6i19fyzzc488n0qw3m518i39f6a7qmrfvahk9j10bkh5j3")) 803 "1k2mn65l1kmsxm8wh0gjxy496xhbpiimbpm6yv6kw6snzc3xg466"))))
803 (patches (search-patches "sudo-CVE-2015-5602.patch"))))
804 (build-system gnu-build-system) 804 (build-system gnu-build-system)
805 (arguments 805 (arguments
806 `(#:configure-flags 806 `(#:configure-flags
@@ -849,7 +849,7 @@ system administrator.")
849 `(("groff" ,groff) 849 `(("groff" ,groff)
850 ("linux-pam" ,linux-pam) 850 ("linux-pam" ,linux-pam)
851 ("coreutils" ,coreutils))) 851 ("coreutils" ,coreutils)))
852 (home-page "http://www.sudo.ws/") 852 (home-page "https://www.sudo.ws/")
853 (synopsis "Run commands as root") 853 (synopsis "Run commands as root")
854 (description 854 (description
855 "Sudo (su \"do\") allows a system administrator to delegate authority to 855 "Sudo (su \"do\") allows a system administrator to delegate authority to
@@ -1139,19 +1139,20 @@ characters can be replaced as well, as can UTF-8 characters.")
1139(define-public testdisk 1139(define-public testdisk
1140 (package 1140 (package
1141 (name "testdisk") 1141 (name "testdisk")
1142 (version "6.14") 1142 (version "7.0")
1143 (source (origin 1143 (source (origin
1144 (method url-fetch) 1144 (method url-fetch)
1145 (uri (string-append "http://www.cgsecurity.org/testdisk-" 1145 (uri (string-append "http://www.cgsecurity.org/testdisk-"
1146 version ".tar.bz2")) 1146 version ".tar.bz2"))
1147 (sha256 1147 (sha256
1148 (base32 1148 (base32
1149 "0v1jap83f5h99zv01v3qmqm160d36n4ysi0gyq7xzb3mqgmw75x5")))) 1149 "0ba4wfz2qrf60vwvb1qsq9l6j0pgg81qgf7fh22siaz649mkpfq0"))))
1150 (build-system gnu-build-system) 1150 (build-system gnu-build-system)
1151 (inputs 1151 (inputs
1152 `(;; ("ntfs" ,ntfs) 1152 `(("ntfs-3g" ,ntfs-3g)
1153 ("util-linux" ,util-linux) 1153 ("util-linux" ,util-linux)
1154 ("openssl" ,openssl) 1154 ("openssl" ,openssl)
1155 ;; FIXME: add reiserfs
1155 ("zlib" ,zlib) 1156 ("zlib" ,zlib)
1156 ("e2fsprogs" ,e2fsprogs) 1157 ("e2fsprogs" ,e2fsprogs)
1157 ("libjpeg" ,libjpeg) 1158 ("libjpeg" ,libjpeg)
@@ -1345,17 +1346,14 @@ of supported upstream metrics systems simultaneously.")
1345(define-public ansible 1346(define-public ansible
1346 (package 1347 (package
1347 (name "ansible") 1348 (name "ansible")
1348 (version "1.9.2") 1349 (version "2.1.0.0")
1349 (source 1350 (source
1350 (origin 1351 (origin
1351 (method url-fetch) 1352 (method url-fetch)
1352 (uri (string-append 1353 (uri (pypi-uri "ansible" version))
1353 "https://pypi.python.org/packages/source/a/ansible/ansible-"
1354 version
1355 ".tar.gz"))
1356 (sha256 1354 (sha256
1357 (base32 1355 (base32
1358 "007fzgsqaahb0y4gjdxxmir9kcni7wph2z14jhqgpz88idrz8pn2")))) 1356 "1bfc2xiplpad6f2nwi48y0kps7xqnsll85dlz63cy8k5bysl6d20"))))
1359 (build-system python-build-system) 1357 (build-system python-build-system)
1360 (native-inputs 1358 (native-inputs
1361 `(("python2-setuptools" ,python2-setuptools) 1359 `(("python2-setuptools" ,python2-setuptools)
@@ -1708,3 +1706,34 @@ throughput (in the same interval).")
1708 "The Fuck tries to match a rule for a previous, mistyped command, creates 1706 "The Fuck tries to match a rule for a previous, mistyped command, creates
1709a new command using the matched rule, and runs it.") 1707a new command using the matched rule, and runs it.")
1710 (license license:x11))) 1708 (license license:x11)))
1709
1710(define-public di
1711 (package
1712 (name "di")
1713 (version "4.42")
1714 (source
1715 (origin
1716 (method url-fetch)
1717 (uri (string-append "https://gentoo.com/di/di-" version ".tar.gz"))
1718 (sha256
1719 (base32 "1i6m9zdnidn8268q1lz9fd8payk7s4pgwh5zlam9rr4dy6h6a67n"))))
1720 (build-system gnu-build-system)
1721 (arguments
1722 `(#:tests? #f ; Obscure test failures.
1723 #:phases
1724 (modify-phases %standard-phases
1725 (delete 'configure)
1726 (add-before 'build 'setup-environment
1727 (lambda* (#:key outputs #:allow-other-keys)
1728 (setenv "CC" "gcc")
1729 (setenv "prefix" (assoc-ref outputs "out"))
1730 #t)))
1731 #:make-flags (list "--environment-overrides")))
1732 (home-page "https://www.gentoo.com/di/")
1733 (synopsis "Advanced df like disk information utility")
1734 (description
1735 "'di' is a disk information utility, displaying everything
1736(and more) that your @code{df} command does. It features the ability to
1737display your disk usage in whatever format you prefer. It is designed to be
1738highly portable. Great for heterogenous networks.")
1739 (license license:zlib)))
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index b0ffd7009bc..92b4d4c27ed 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -202,7 +202,7 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.")
202(define-public giac-xcas 202(define-public giac-xcas
203 (package 203 (package
204 (name "giac-xcas") 204 (name "giac-xcas")
205 (version "1.2.2-59") 205 (version "1.2.2-75")
206 (source (origin 206 (source (origin
207 (method url-fetch) 207 (method url-fetch)
208 ;; "~parisse/giac" is not used because the maintainer regularly 208 ;; "~parisse/giac" is not used because the maintainer regularly
@@ -214,7 +214,7 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.")
214 "source/giac_" version ".tar.gz")) 214 "source/giac_" version ".tar.gz"))
215 (sha256 215 (sha256
216 (base32 216 (base32
217 "02s774v2zg2ya43rm8s7bcwzrmp4wlmn8h2rlg4816zpfrjkrdn4")))) 217 "0vs111fkd900wkm7yypaxmplc8i8j63d9shc3fbdhddn7cdj70b1"))))
218 (build-system gnu-build-system) 218 (build-system gnu-build-system)
219 (arguments 219 (arguments
220 `(#:phases 220 `(#:phases
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index eb36238b440..956ead4d5aa 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -407,17 +407,14 @@ detection, and lossless compression.")
407(define-public borg 407(define-public borg
408 (package 408 (package
409 (name "borg") 409 (name "borg")
410 (version "1.0.3") 410 (version "1.0.6")
411 (source (origin 411 (source (origin
412 (method url-fetch) 412 (method url-fetch)
413 (uri (string-append 413 (uri (pypi-uri "borgbackup" version))
414 "https://pypi.python.org/packages/"
415 "c9/c6/1efc338724b054d4d264dfeadfcba11cefa6c3c50f474cec91b8f0c21d3a"
416 "/borgbackup-" version ".tar.gz"))
417 414
418 (sha256 415 (sha256
419 (base32 416 (base32
420 "0kzr0xa00yjfxx27aipli67qg5ffj52yrnqhpf3sdy6k5wzwaybs")))) 417 "1dxn9p4xm0zd32xzzd9hs4a542db34clykrrnnv3hrdnc394895p"))))
421 (build-system python-build-system) 418 (build-system python-build-system)
422 (arguments 419 (arguments
423 `(#:phases 420 `(#:phases
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index f5e72851938..1cbf85ff6cd 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -27,6 +27,7 @@
27 #:use-module (guix utils) 27 #:use-module (guix utils)
28 #:use-module (guix download) 28 #:use-module (guix download)
29 #:use-module (guix git-download) 29 #:use-module (guix git-download)
30 #:use-module (guix hg-download)
30 #:use-module (guix build-system ant) 31 #:use-module (guix build-system ant)
31 #:use-module (guix build-system gnu) 32 #:use-module (guix build-system gnu)
32 #:use-module (guix build-system cmake) 33 #:use-module (guix build-system cmake)
@@ -49,18 +50,23 @@
49 #:use-module (gnu packages file) 50 #:use-module (gnu packages file)
50 #:use-module (gnu packages gawk) 51 #:use-module (gnu packages gawk)
51 #:use-module (gnu packages gcc) 52 #:use-module (gnu packages gcc)
53 #:use-module (gnu packages gd)
54 #:use-module (gnu packages image)
52 #:use-module (gnu packages java) 55 #:use-module (gnu packages java)
53 #:use-module (gnu packages linux) 56 #:use-module (gnu packages linux)
57 #:use-module (gnu packages logging)
54 #:use-module (gnu packages machine-learning) 58 #:use-module (gnu packages machine-learning)
55 #:use-module (gnu packages maths) 59 #:use-module (gnu packages maths)
56 #:use-module (gnu packages mpi) 60 #:use-module (gnu packages mpi)
57 #:use-module (gnu packages ncurses) 61 #:use-module (gnu packages ncurses)
58 #:use-module (gnu packages pcre) 62 #:use-module (gnu packages pcre)
63 #:use-module (gnu packages pdf)
59 #:use-module (gnu packages perl) 64 #:use-module (gnu packages perl)
60 #:use-module (gnu packages pkg-config) 65 #:use-module (gnu packages pkg-config)
61 #:use-module (gnu packages popt) 66 #:use-module (gnu packages popt)
62 #:use-module (gnu packages protobuf) 67 #:use-module (gnu packages protobuf)
63 #:use-module (gnu packages python) 68 #:use-module (gnu packages python)
69 #:use-module (gnu packages readline)
64 #:use-module (gnu packages ruby) 70 #:use-module (gnu packages ruby)
65 #:use-module (gnu packages statistics) 71 #:use-module (gnu packages statistics)
66 #:use-module (gnu packages tbb) 72 #:use-module (gnu packages tbb)
@@ -70,6 +76,7 @@
70 #:use-module (gnu packages vim) 76 #:use-module (gnu packages vim)
71 #:use-module (gnu packages web) 77 #:use-module (gnu packages web)
72 #:use-module (gnu packages xml) 78 #:use-module (gnu packages xml)
79 #:use-module (gnu packages xorg)
73 #:use-module (gnu packages zip) 80 #:use-module (gnu packages zip)
74 #:use-module (srfi srfi-1)) 81 #:use-module (srfi srfi-1))
75 82
@@ -215,7 +222,7 @@ computational cluster.")
215(define-public bedtools 222(define-public bedtools
216 (package 223 (package
217 (name "bedtools") 224 (name "bedtools")
218 (version "2.25.0") 225 (version "2.26.0")
219 (source (origin 226 (source (origin
220 (method url-fetch) 227 (method url-fetch)
221 (uri (string-append "https://github.com/arq5x/bedtools2/archive/v" 228 (uri (string-append "https://github.com/arq5x/bedtools2/archive/v"
@@ -223,7 +230,7 @@ computational cluster.")
223 (file-name (string-append name "-" version ".tar.gz")) 230 (file-name (string-append name "-" version ".tar.gz"))
224 (sha256 231 (sha256
225 (base32 232 (base32
226 "1ywcy3yfwzhl905b51l0ffjia55h75vv3mw5xkvib04pp6pj548m")))) 233 "0xvri5hnp2iim1cx6mcd5d9f102p5ql41x69rd6106x1c17pinqm"))))
227 (build-system gnu-build-system) 234 (build-system gnu-build-system)
228 (native-inputs `(("python" ,python-2))) 235 (native-inputs `(("python" ,python-2)))
229 (inputs `(("samtools" ,samtools) 236 (inputs `(("samtools" ,samtools)
@@ -251,6 +258,51 @@ intervals from multiple files in widely-used genomic file formats such as BAM,
251BED, GFF/GTF, VCF.") 258BED, GFF/GTF, VCF.")
252 (license license:gpl2))) 259 (license license:gpl2)))
253 260
261;; Later releases of bedtools produce files with more columns than
262;; what Ribotaper expects.
263(define-public bedtools-2.18
264 (package (inherit bedtools)
265 (name "bedtools")
266 (version "2.18.0")
267 (source (origin
268 (method url-fetch)
269 (uri (string-append "https://github.com/arq5x/bedtools2/"
270 "archive/v" version ".tar.gz"))
271 (file-name (string-append name "-" version ".tar.gz"))
272 (sha256
273 (base32
274 "05vrnr8yp7swfagshzpgqmzk1blnwnq8pq5pckzi1m26w98d63vf"))))))
275
276(define-public ribotaper
277 (package
278 (name "ribotaper")
279 (version "1.3.1")
280 (source (origin
281 (method url-fetch)
282 (uri (string-append "https://ohlerlab.mdc-berlin.de/"
283 "files/RiboTaper/RiboTaper_Version_"
284 version ".tar.gz"))
285 (sha256
286 (base32
287 "0ykjbps1y3z3085q94npw8i9x5gldc6shy8vlc08v76zljsm07hv"))))
288 (build-system gnu-build-system)
289 (inputs
290 `(("bedtools" ,bedtools-2.18)
291 ("samtools" ,samtools-0.1)
292 ("r" ,r)
293 ("r-foreach" ,r-foreach)
294 ("r-xnomial" ,r-xnomial)
295 ("r-domc" ,r-domc)
296 ("r-multitaper" ,r-multitaper)
297 ("r-seqinr" ,r-seqinr)))
298 (home-page "https://ohlerlab.mdc-berlin.de/software/RiboTaper_126/")
299 (synopsis "Define translated ORFs using ribosome profiling data")
300 (description
301 "Ribotaper is a method for defining translated @dfn{open reading
302frames} (ORFs) using ribosome profiling (ribo-seq) data. This package
303provides the Ribotaper pipeline.")
304 (license license:gpl3+)))
305
254(define-public bioawk 306(define-public bioawk
255 (package 307 (package
256 (name "bioawk") 308 (name "bioawk")
@@ -421,7 +473,7 @@ into separate processes; and more.")
421(define-public blast+ 473(define-public blast+
422 (package 474 (package
423 (name "blast+") 475 (name "blast+")
424 (version "2.2.31") 476 (version "2.4.0")
425 (source (origin 477 (source (origin
426 (method url-fetch) 478 (method url-fetch)
427 (uri (string-append 479 (uri (string-append
@@ -429,7 +481,7 @@ into separate processes; and more.")
429 version "/ncbi-blast-" version "+-src.tar.gz")) 481 version "/ncbi-blast-" version "+-src.tar.gz"))
430 (sha256 482 (sha256
431 (base32 483 (base32
432 "19gq6as4k1jrgsd26158ads6h7v4jca3h4r5dzg1y0m6ya50x5ph")) 484 "14n9jik6vhiwjd3m7bach4xj1pzfn0szbsbyfxybd9l9cc43b6mb"))
433 (modules '((guix build utils))) 485 (modules '((guix build utils)))
434 (snippet 486 (snippet
435 '(begin 487 '(begin
@@ -1439,6 +1491,40 @@ accessing bigWig files.")
1439 (native-inputs 1491 (native-inputs
1440 `(("python-setuptools" ,python2-setuptools)))))) 1492 `(("python-setuptools" ,python2-setuptools))))))
1441 1493
1494(define-public python-dendropy
1495 (package
1496 (name "python-dendropy")
1497 (version "4.1.0")
1498 (source
1499 (origin
1500 (method url-fetch)
1501 (uri (pypi-uri "DendroPy" version))
1502 (sha256
1503 (base32
1504 "1jfz7gp18wph311w1yygbvjanb3n5mdqal439bb6myw41dwb5m63"))
1505 ;; There are two known test failures that will be fixed in the next
1506 ;; release after 4.1.0.
1507 ;; https://github.com/jeetsukumaran/DendroPy/issues/48
1508 (patches (search-patches
1509 "python-dendropy-exclude-failing-tests.patch"))))
1510 (build-system python-build-system)
1511 (home-page "http://packages.python.org/DendroPy/")
1512 (synopsis "Library for phylogenetics and phylogenetic computing")
1513 (description
1514 "DendroPy is a library for phylogenetics and phylogenetic computing: reading,
1515writing, simulation, processing and manipulation of phylogenetic
1516trees (phylogenies) and characters.")
1517 (license license:bsd-3)
1518 (properties `((python2-variant . ,(delay python2-dendropy))))))
1519
1520(define-public python2-dendropy
1521 (let ((base (package-with-python2 (strip-python2-variant python-dendropy))))
1522 (package
1523 (inherit base)
1524 (native-inputs `(("python2-setuptools" ,python2-setuptools)
1525 ,@(package-native-inputs base))))))
1526
1527
1442(define-public deeptools 1528(define-public deeptools
1443 (package 1529 (package
1444 (name "deeptools") 1530 (name "deeptools")
@@ -1482,7 +1568,7 @@ identify enrichments with functional annotations of the genome.")
1482(define-public diamond 1568(define-public diamond
1483 (package 1569 (package
1484 (name "diamond") 1570 (name "diamond")
1485 (version "0.8.7") 1571 (version "0.8.15")
1486 (source (origin 1572 (source (origin
1487 (method url-fetch) 1573 (method url-fetch)
1488 (uri (string-append 1574 (uri (string-append
@@ -1491,7 +1577,7 @@ identify enrichments with functional annotations of the genome.")
1491 (file-name (string-append name "-" version ".tar.gz")) 1577 (file-name (string-append name "-" version ".tar.gz"))
1492 (sha256 1578 (sha256
1493 (base32 1579 (base32
1494 "15r7gcrqc4pv5d4kvv530zc3xnni92c74y63zrxzidriss7591yx")))) 1580 "14n0p28b4i5j8vvz1fl4xj1gxnpg98bj0kr3i90mhn7miwr4pkpw"))))
1495 (build-system cmake-build-system) 1581 (build-system cmake-build-system)
1496 (arguments 1582 (arguments
1497 '(#:tests? #f ; no "check" target 1583 '(#:tests? #f ; no "check" target
@@ -1517,6 +1603,75 @@ data and settings.")
1517 (license (license:non-copyleft "file://src/COPYING" 1603 (license (license:non-copyleft "file://src/COPYING"
1518 "See src/COPYING in the distribution.")))) 1604 "See src/COPYING in the distribution."))))
1519 1605
1606(define-public eigensoft
1607 (let ((revision "1")
1608 (commit "b14d1e202e21e532536ff8004f0419cd5e259dc7"))
1609 (package
1610 (name "eigensoft")
1611 (version (string-append "6.1.2-"
1612 revision "."
1613 (string-take commit 9)))
1614 (source
1615 (origin
1616 (method git-fetch)
1617 (uri (git-reference
1618 (url "https://github.com/DReichLab/EIG.git")
1619 (commit commit)))
1620 (file-name (string-append "eigensoft-" commit "-checkout"))
1621 (sha256
1622 (base32
1623 "0f5m6k2j5c16xc3xbywcs989xyc26ncy1zfzp9j9n55n9r4xcaiq"))
1624 (modules '((guix build utils)))
1625 ;; Remove pre-built binaries.
1626 (snippet '(begin
1627 (delete-file-recursively "bin")
1628 (mkdir "bin")
1629 #t))))
1630 (build-system gnu-build-system)
1631 (arguments
1632 `(#:tests? #f ; There are no tests.
1633 #:make-flags '("CC=gcc")
1634 #:phases
1635 (modify-phases %standard-phases
1636 ;; There is no configure phase, but the Makefile is in a
1637 ;; sub-directory.
1638 (replace 'configure
1639 (lambda _
1640 (chdir "src")
1641 ;; The link flags are incomplete.
1642 (substitute* "Makefile"
1643 (("-lgsl") "-lgsl -lm -llapack -llapacke -lpthread"))
1644 #t))
1645 ;; The provided install target only copies executables to
1646 ;; the "bin" directory in the build root.
1647 (add-after 'install 'actually-install
1648 (lambda* (#:key outputs #:allow-other-keys)
1649 (let* ((out (assoc-ref outputs "out"))
1650 (bin (string-append out "/bin")))
1651 (mkdir-p bin)
1652 (for-each (lambda (file)
1653 (install-file file bin))
1654 (find-files "../bin" ".*"))
1655 #t))))))
1656 (inputs
1657 `(("gsl" ,gsl)
1658 ("lapack" ,lapack)
1659 ("openblas" ,openblas)
1660 ("perl" ,perl)
1661 ("gfortran" ,gfortran "lib")))
1662 (home-page "https://github.com/DReichLab/EIG")
1663 (synopsis "Tools for population genetics")
1664 (description "The EIGENSOFT package provides tools for population
1665genetics and stratification correction. EIGENSOFT implements methods commonly
1666used in population genetics analyses such as PCA, computation of Tracy-Widom
1667statistics, and finding related individuals in structured populations. It
1668comes with a built-in plotting script and supports multiple file formats and
1669quantitative phenotypes.")
1670 ;; The license of the eigensoft tools is Expat, but since it's
1671 ;; linking with the GNU Scientific Library (GSL) the effective
1672 ;; license is the GPL.
1673 (license license:gpl3+))))
1674
1520(define-public edirect 1675(define-public edirect
1521 (package 1676 (package
1522 (name "edirect") 1677 (name "edirect")
@@ -2170,7 +2325,7 @@ manipulating HTS data.")
2170(define-public htslib 2325(define-public htslib
2171 (package 2326 (package
2172 (name "htslib") 2327 (name "htslib")
2173 (version "1.2.1") 2328 (version "1.3.1")
2174 (source (origin 2329 (source (origin
2175 (method url-fetch) 2330 (method url-fetch)
2176 (uri (string-append 2331 (uri (string-append
@@ -2178,7 +2333,7 @@ manipulating HTS data.")
2178 version "/htslib-" version ".tar.bz2")) 2333 version "/htslib-" version ".tar.bz2"))
2179 (sha256 2334 (sha256
2180 (base32 2335 (base32
2181 "1c32ssscbnjwfw3dra140fq7riarp2x990qxybh34nr1p5r17nxx")))) 2336 "1rja282fwdc25ql6izkhdyh8ppw8x2fs0w0js78zgkmqjlikmma9"))))
2182 (build-system gnu-build-system) 2337 (build-system gnu-build-system)
2183 (arguments 2338 (arguments
2184 `(#:phases 2339 `(#:phases
@@ -2301,6 +2456,87 @@ command, or queried for specific k-mers with @code{jellyfish query}.")
2301 ;; files such as lib/jsoncpp.cpp are released under the Expat license. 2456 ;; files such as lib/jsoncpp.cpp are released under the Expat license.
2302 (license (list license:gpl3+ license:expat)))) 2457 (license (list license:gpl3+ license:expat))))
2303 2458
2459(define-public khmer
2460 (package
2461 (name "khmer")
2462 (version "2.0")
2463 (source
2464 (origin
2465 (method url-fetch)
2466 (uri (pypi-uri "khmer" version))
2467 (sha256
2468 (base32
2469 "0wb05shqh77v00256qlm68vbbx3kl76fyzihszbz5nhanl4ni33a"))
2470 (patches (search-patches "khmer-use-libraries.patch"))))
2471 (build-system python-build-system)
2472 (arguments
2473 `(#:phases
2474 (modify-phases %standard-phases
2475 (add-after 'unpack 'set-paths
2476 (lambda* (#:key inputs outputs #:allow-other-keys)
2477 ;; Delete bundled libraries.
2478 (delete-file-recursively "third-party/zlib")
2479 (delete-file-recursively "third-party/bzip2")
2480 ;; Replace bundled seqan.
2481 (let* ((seqan-all "third-party/seqan")
2482 (seqan-include (string-append
2483 seqan-all "/core/include")))
2484 (delete-file-recursively seqan-all)
2485 (copy-recursively (string-append (assoc-ref inputs "seqan")
2486 "/include/seqan")
2487 (string-append seqan-include "/seqan")))
2488 ;; We do not replace the bundled MurmurHash as the canonical
2489 ;; repository for this code 'SMHasher' is unsuitable for
2490 ;; providing a library. See
2491 ;; https://lists.gnu.org/archive/html/guix-devel/2016-06/msg00977.html
2492 #t))
2493 (add-after 'unpack 'set-cc
2494 (lambda _
2495 (setenv "CC" "gcc")
2496 #t))
2497 ;; It is simpler to test after installation.
2498 (delete 'check)
2499 (add-after 'install 'post-install-check
2500 (lambda* (#:key inputs outputs #:allow-other-keys)
2501 (let ((out (assoc-ref outputs "out")))
2502 (setenv "PATH"
2503 (string-append
2504 (getenv "PATH")
2505 ":"
2506 (assoc-ref outputs "out")
2507 "/bin"))
2508 (setenv "PYTHONPATH"
2509 (string-append
2510 (getenv "PYTHONPATH")
2511 ":"
2512 out
2513 "/lib/python"
2514 (string-take (string-take-right
2515 (assoc-ref inputs "python") 5) 3)
2516 "/site-packages"))
2517 (with-directory-excursion "build"
2518 (zero? (system* "nosetests" "khmer" "--attr"
2519 "!known_failing")))))))))
2520 (native-inputs
2521 `(("seqan" ,seqan)
2522 ("python-nose" ,python-nose)))
2523 (inputs
2524 `(("zlib" ,zlib)
2525 ("bzip2" ,bzip2)
2526 ("python-screed" ,python-screed)
2527 ("python-bz2file" ,python-bz2file)))
2528 (home-page "https://khmer.readthedocs.org/")
2529 (synopsis "K-mer counting, filtering and graph traversal library")
2530 (description "The khmer software is a set of command-line tools for
2531working with DNA shotgun sequencing data from genomes, transcriptomes,
2532metagenomes and single cells. Khmer can make de novo assemblies faster, and
2533sometimes better. Khmer can also identify and fix problems with shotgun
2534data.")
2535 ;; When building on i686, armhf and mips64el, we get the following error:
2536 ;; error: ['khmer', 'khmer.tests', 'oxli'] require 64-bit operating system
2537 (supported-systems '("x86_64-linux"))
2538 (license license:bsd-3)))
2539
2304(define-public macs 2540(define-public macs
2305 (package 2541 (package
2306 (name "macs") 2542 (name "macs")
@@ -2333,7 +2569,7 @@ sequencing tag position and orientation.")
2333(define-public mafft 2569(define-public mafft
2334 (package 2570 (package
2335 (name "mafft") 2571 (name "mafft")
2336 (version "7.267") 2572 (version "7.299")
2337 (source (origin 2573 (source (origin
2338 (method url-fetch) 2574 (method url-fetch)
2339 (uri (string-append 2575 (uri (string-append
@@ -2342,7 +2578,7 @@ sequencing tag position and orientation.")
2342 (file-name (string-append name "-" version ".tgz")) 2578 (file-name (string-append name "-" version ".tgz"))
2343 (sha256 2579 (sha256
2344 (base32 2580 (base32
2345 "1xl6xq1rfxkws0svrlhyqxhhwbv6r77jwblsdpcyiwzsscw6wlk0")))) 2581 "1pwwdy5a17ggx8h9v9y712ilswj27dc3d23r65l56jgjz67y5zc0"))))
2346 (build-system gnu-build-system) 2582 (build-system gnu-build-system)
2347 (arguments 2583 (arguments
2348 `(#:tests? #f ; no automated tests, though there are tests in the read me 2584 `(#:tests? #f ; no automated tests, though there are tests in the read me
@@ -2408,7 +2644,7 @@ sequences).")
2408(define-public metabat 2644(define-public metabat
2409 (package 2645 (package
2410 (name "metabat") 2646 (name "metabat")
2411 (version "0.26.1") 2647 (version "0.26.3")
2412 (source (origin 2648 (source (origin
2413 (method url-fetch) 2649 (method url-fetch)
2414 (uri (string-append 2650 (uri (string-append
@@ -2417,31 +2653,40 @@ sequences).")
2417 (file-name (string-append name "-" version ".tar.bz2")) 2653 (file-name (string-append name "-" version ".tar.bz2"))
2418 (sha256 2654 (sha256
2419 (base32 2655 (base32
2420 "0vgrhbaxg4dkxyax2kbigak7w0arhqvw0szwp6gd9wmyilc44kfa")))) 2656 "1vpfvgsn8wdsv1g7z73zxcncskx7dy7bw5msg1hhibk25ay11pyg"))))
2421 (build-system gnu-build-system) 2657 (build-system gnu-build-system)
2422 (arguments 2658 (arguments
2423 `(#:phases 2659 `(#:phases
2424 (modify-phases %standard-phases 2660 (modify-phases %standard-phases
2425 (add-after 'unpack 'fix-includes 2661 (add-after 'unpack 'fix-includes
2426 (lambda _ 2662 (lambda _
2427 (substitute* "SConstruct" 2663 (substitute* "src/BamUtils.h"
2428 (("/include/bam/bam.h") 2664 (("^#include \"bam/bam\\.h\"")
2429 "/include/samtools/bam.h")) 2665 "#include \"samtools/bam.h\"")
2430 (substitute* "src/BamUtils.h" 2666 (("^#include \"bam/sam\\.h\"")
2431 (("^#include \"bam/bam\\.h\"") 2667 "#include \"samtools/sam.h\""))
2432 "#include \"samtools/bam.h\"") 2668 (substitute* "src/KseqReader.h"
2433 (("^#include \"bam/sam\\.h\"") 2669 (("^#include \"bam/kseq\\.h\"")
2434 "#include \"samtools/sam.h\"")) 2670 "#include \"htslib/kseq.h\""))
2435 (substitute* "src/KseqReader.h" 2671 #t))
2436 (("^#include \"bam/kseq\\.h\"")
2437 "#include \"samtools/kseq.h\""))
2438 #t))
2439 (add-after 'unpack 'fix-scons 2672 (add-after 'unpack 'fix-scons
2440 (lambda _ 2673 (lambda* (#:key inputs #:allow-other-keys)
2441 (substitute* "SConstruct" ; Do not distribute README 2674 (substitute* "SConstruct"
2442 (("^env\\.Install\\(idir_prefix, 'README\\.md'\\)") 2675 (("^htslib_dir = 'samtools'")
2443 "")) 2676 (string-append "hitslib_dir = '"
2444 #t)) 2677 (assoc-ref inputs "htslib")
2678 "'"))
2679 (("^samtools_dir = 'samtools'")
2680 (string-append "samtools_dir = '"
2681 (assoc-ref inputs "htslib")
2682 "'"))
2683 (("^findStaticOrShared\\('bam', hts_lib")
2684 (string-append "findStaticOrShared('bam', '"
2685 (assoc-ref inputs "samtools")
2686 "/lib'"))
2687 ;; Do not distribute README.
2688 (("^env\\.Install\\(idir_prefix, 'README\\.md'\\)") ""))
2689 #t))
2445 (delete 'configure) 2690 (delete 'configure)
2446 (replace 'build 2691 (replace 'build
2447 (lambda* (#:key inputs outputs #:allow-other-keys) 2692 (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -2451,16 +2696,10 @@ sequences).")
2451 "PREFIX=" 2696 "PREFIX="
2452 (assoc-ref outputs "out")) 2697 (assoc-ref outputs "out"))
2453 (string-append 2698 (string-append
2454 "HTSLIB_DIR="
2455 (assoc-ref inputs "htslib"))
2456 (string-append
2457 "SAMTOOLS_DIR="
2458 (assoc-ref inputs "samtools"))
2459 (string-append
2460 "BOOST_ROOT=" 2699 "BOOST_ROOT="
2461 (assoc-ref inputs "boost")) 2700 (assoc-ref inputs "boost"))
2462 "install")))) 2701 "install"))))
2463 ;; check and install carried out during build phase 2702 ;; Check and install are carried out during build phase.
2464 (delete 'check) 2703 (delete 'check)
2465 (delete 'install)))) 2704 (delete 'install))))
2466 (inputs 2705 (inputs
@@ -2919,6 +3158,75 @@ while RNA-seq specific modules evaluate sequencing saturation, mapped reads
2919distribution, coverage uniformity, strand specificity, etc.") 3158distribution, coverage uniformity, strand specificity, etc.")
2920 (license license:gpl3+))) 3159 (license license:gpl3+)))
2921 3160
3161(define-public seek
3162 ;; There are no release tarballs. According to the installation
3163 ;; instructions at http://seek.princeton.edu/installation.jsp, the latest
3164 ;; stable release is identified by this changeset ID.
3165 (let ((changeset "2329130")
3166 (revision "1"))
3167 (package
3168 (name "seek")
3169 (version (string-append "0-" revision "." changeset))
3170 (source (origin
3171 (method hg-fetch)
3172 (uri (hg-reference
3173 (url "https://bitbucket.org/libsleipnir/sleipnir")
3174 (changeset changeset)))
3175 (sha256
3176 (base32
3177 "0qrvilwh18dpbhkf92qvxbmay0j75ra3jg2wrhz67gf538zzphsx"))))
3178 (build-system gnu-build-system)
3179 (arguments
3180 `(#:modules ((srfi srfi-1)
3181 (guix build gnu-build-system)
3182 (guix build utils))
3183 #:phases
3184 (let ((dirs '("SeekMiner"
3185 "SeekEvaluator"
3186 "SeekPrep"
3187 "Distancer"
3188 "Data2DB"
3189 "PCL2Bin")))
3190 (modify-phases %standard-phases
3191 (add-before 'configure 'bootstrap
3192 (lambda _
3193 (zero? (system* "bash" "gen_auto"))))
3194 (add-after 'build 'build-additional-tools
3195 (lambda* (#:key make-flags #:allow-other-keys)
3196 (every (lambda (dir)
3197 (with-directory-excursion (string-append "tools/" dir)
3198 (zero? (apply system* "make" make-flags))))
3199 dirs)))
3200 (add-after 'install 'install-additional-tools
3201 (lambda* (#:key make-flags #:allow-other-keys)
3202 (fold (lambda (dir result)
3203 (with-directory-excursion (string-append "tools/" dir)
3204 (and result
3205 (zero? (apply system*
3206 `("make" ,@make-flags "install"))))))
3207 #t dirs)))))))
3208 (inputs
3209 `(("gsl" ,gsl)
3210 ("boost" ,boost)
3211 ("libsvm" ,libsvm)
3212 ("readline" ,readline)
3213 ("gengetopt" ,gengetopt)
3214 ("log4cpp" ,log4cpp)))
3215 (native-inputs
3216 `(("autoconf" ,autoconf)
3217 ("automake" ,automake)
3218 ("perl" ,perl)))
3219 (home-page "http://seek.princeton.edu")
3220 (synopsis "Gene co-expression search engine")
3221 (description
3222 "SEEK is a computational gene co-expression search engine. SEEK provides
3223biologists with a way to navigate the massive human expression compendium that
3224now contains thousands of expression datasets. SEEK returns a robust ranking
3225of co-expressed genes in the biological area of interest defined by the user's
3226query genes. It also prioritizes thousands of expression datasets according
3227to the user's query of interest.")
3228 (license license:cc-by3.0))))
3229
2922(define-public samtools 3230(define-public samtools
2923 (package 3231 (package
2924 (name "samtools") 3232 (name "samtools")
@@ -3359,6 +3667,44 @@ optimize the sequencing depth, or to screen multiple libraries to avoid low
3359complexity samples.") 3667complexity samples.")
3360 (license license:gpl3+))) 3668 (license license:gpl3+)))
3361 3669
3670(define-public python-screed
3671 (package
3672 (name "python-screed")
3673 (version "0.9")
3674 (source
3675 (origin
3676 (method url-fetch)
3677 (uri (pypi-uri "screed" version))
3678 (sha256
3679 (base32
3680 "18czszp9fkx3j6jr7y5kp6dfialscgddk05mw1zkhh2zhn0jd8i0"))))
3681 (build-system python-build-system)
3682 (arguments
3683 `(#:phases
3684 (modify-phases %standard-phases
3685 (replace 'check
3686 (lambda _
3687 (setenv "PYTHONPATH"
3688 (string-append (getenv "PYTHONPATH") ":."))
3689 (zero? (system* "nosetests" "--attr" "!known_failing")))))))
3690 (native-inputs
3691 `(("python-nose" ,python-nose)))
3692 (inputs
3693 `(("python-bz2file" ,python-bz2file)))
3694 (home-page "http://github.com/dib-lab/screed/")
3695 (synopsis "Short read sequence database utilities")
3696 (description "Screed parses FASTA and FASTQ files and generates databases.
3697Values such as sequence name, sequence description, sequence quality and the
3698sequence itself can be retrieved from these databases.")
3699 (license license:bsd-3)))
3700
3701(define-public python2-screed
3702 (let ((base (package-with-python2 (strip-python2-variant python-screed))))
3703 (package
3704 (inherit base)
3705 (native-inputs `(("python2-setuptools" ,python2-setuptools)
3706 ,@(package-native-inputs base))))))
3707
3362(define-public sra-tools 3708(define-public sra-tools
3363 (package 3709 (package
3364 (name "sra-tools") 3710 (name "sra-tools")
@@ -3600,7 +3946,7 @@ application of SortMeRNA is filtering rRNA from metatranscriptomic data.")
3600(define-public star 3946(define-public star
3601 (package 3947 (package
3602 (name "star") 3948 (name "star")
3603 (version "2.5.1b") 3949 (version "2.5.2a")
3604 (source (origin 3950 (source (origin
3605 (method url-fetch) 3951 (method url-fetch)
3606 (uri (string-append "https://github.com/alexdobin/STAR/archive/" 3952 (uri (string-append "https://github.com/alexdobin/STAR/archive/"
@@ -3608,7 +3954,7 @@ application of SortMeRNA is filtering rRNA from metatranscriptomic data.")
3608 (file-name (string-append name "-" version ".tar.gz")) 3954 (file-name (string-append name "-" version ".tar.gz"))
3609 (sha256 3955 (sha256
3610 (base32 3956 (base32
3611 "0wzcfhkg10apnh0y73xlarfa79xxwxdizicbdl11wb48awk44iq4")) 3957 "0xjlsm4p9flln111hv4xx7xy94c2nl53zvdvbk9winmiradjsdra"))
3612 (modules '((guix build utils))) 3958 (modules '((guix build utils)))
3613 (snippet 3959 (snippet
3614 '(begin 3960 '(begin
@@ -3665,6 +4011,8 @@ by seed clustering and stitching procedure. In addition to unbiased de novo
3665detection of canonical junctions, STAR can discover non-canonical splices and 4011detection of canonical junctions, STAR can discover non-canonical splices and
3666chimeric (fusion) transcripts, and is also capable of mapping full-length RNA 4012chimeric (fusion) transcripts, and is also capable of mapping full-length RNA
3667sequences.") 4013sequences.")
4014 ;; Only 64-bit systems are supported according to the README.
4015 (supported-systems '("x86_64-linux" "mips64el-linux"))
3668 ;; STAR is licensed under GPLv3 or later; htslib is MIT-licensed. 4016 ;; STAR is licensed under GPLv3 or later; htslib is MIT-licensed.
3669 (license license:gpl3+))) 4017 (license license:gpl3+)))
3670 4018
@@ -3869,7 +4217,7 @@ data types as well.")
3869(define-public vsearch 4217(define-public vsearch
3870 (package 4218 (package
3871 (name "vsearch") 4219 (name "vsearch")
3872 (version "2.0.0") 4220 (version "2.0.1")
3873 (source 4221 (source
3874 (origin 4222 (origin
3875 (method url-fetch) 4223 (method url-fetch)
@@ -3879,7 +4227,7 @@ data types as well.")
3879 (file-name (string-append name "-" version ".tar.gz")) 4227 (file-name (string-append name "-" version ".tar.gz"))
3880 (sha256 4228 (sha256
3881 (base32 4229 (base32
3882 "1sd57abgx077icqrbj36jq9q7pdpzc6dbics2pn1555kisq2jhfh")) 4230 "0q7szwbf7r29yxkhb415a8i51vj87kvl5ap7h09w7k9ycb2ywvzw"))
3883 (modules '((guix build utils))) 4231 (modules '((guix build utils)))
3884 (snippet 4232 (snippet
3885 '(begin 4233 '(begin
@@ -4191,6 +4539,30 @@ In addition, a few low-level concrete subclasses of general interest (e.g.
4191S4Vectors package itself.") 4539S4Vectors package itself.")
4192 (license license:artistic2.0))) 4540 (license license:artistic2.0)))
4193 4541
4542(define-public r-seqinr
4543 (package
4544 (name "r-seqinr")
4545 (version "3.1-3")
4546 (source
4547 (origin
4548 (method url-fetch)
4549 (uri (cran-uri "seqinr" version))
4550 (sha256
4551 (base32
4552 "0bbjfwbqg74wsamb3iz01g0ssdpdpg65gh00y9xlnpk4wb990n4n"))))
4553 (build-system r-build-system)
4554 (propagated-inputs
4555 `(("r-ade4" ,r-ade4)))
4556 (inputs
4557 `(("zlib" ,zlib)))
4558 (home-page "http://seqinr.r-forge.r-project.org/")
4559 (synopsis "Biological sequences retrieval and analysis")
4560 (description
4561 "This package provides tools for exploratory data analysis and data
4562visualization of biological sequence (DNA and protein) data. It also includes
4563utilities for sequence data management under the ACNUC system.")
4564 (license license:gpl2+)))
4565
4194(define-public r-iranges 4566(define-public r-iranges
4195 (package 4567 (package
4196 (name "r-iranges") 4568 (name "r-iranges")
@@ -4246,6 +4618,31 @@ translation between different chromosome sequence naming conventions (e.g.,
4246names in their natural, rather than lexicographic, order.") 4618names in their natural, rather than lexicographic, order.")
4247 (license license:artistic2.0))) 4619 (license license:artistic2.0)))
4248 4620
4621(define-public r-edger
4622 (package
4623 (name "r-edger")
4624 (version "3.14.0")
4625 (source (origin
4626 (method url-fetch)
4627 (uri (bioconductor-uri "edgeR" version))
4628 (sha256
4629 (base32
4630 "14vrygy7rz5ngaap4kgkvr3j18y5l6m742n79h68plk6iqgmsskn"))))
4631 (properties `((upstream-name . "edgeR")))
4632 (build-system r-build-system)
4633 (propagated-inputs
4634 `(("r-limma" ,r-limma)))
4635 (home-page "http://bioinf.wehi.edu.au/edgeR")
4636 (synopsis "EdgeR does empirical analysis of digital gene expression data")
4637 (description "This package can do differential expression analysis of
4638RNA-seq expression profiles with biological replication. It implements a range
4639of statistical methodology based on the negative binomial distributions,
4640including empirical Bayes estimation, exact tests, generalized linear models
4641and quasi-likelihood tests. It be applied to differential signal analysis of
4642other types of genomic data that produce counts, including ChIP-seq, SAGE and
4643CAGE.")
4644 (license license:gpl2+)))
4645
4249(define-public r-variantannotation 4646(define-public r-variantannotation
4250 (package 4647 (package
4251 (name "r-variantannotation") 4648 (name "r-variantannotation")
@@ -4278,6 +4675,25 @@ names in their natural, rather than lexicographic, order.")
4278coding changes and predict coding outcomes.") 4675coding changes and predict coding outcomes.")
4279 (license license:artistic2.0))) 4676 (license license:artistic2.0)))
4280 4677
4678(define-public r-limma
4679 (package
4680 (name "r-limma")
4681 (version "3.28.14")
4682 (source (origin
4683 (method url-fetch)
4684 (uri (bioconductor-uri "limma" version))
4685 (sha256
4686 (base32
4687 "1jgn66ajafhjlqpfcw2p85h6ah8mgmz66znmsw6pcapia7d34akw"))))
4688 (build-system r-build-system)
4689 (home-page "http://bioinf.wehi.edu.au/limma")
4690 (synopsis "Package for linear models for microarray and RNA-seq data")
4691 (description "This package can be used for the analysis of gene expression
4692studies, especially the use of linear models for analysing designed experiments
4693and the assessment of differential expression. The analysis methods apply to
4694different technologies, including microarrays, RNA-seq, and quantitative PCR.")
4695 (license license:gpl2+)))
4696
4281(define-public r-xvector 4697(define-public r-xvector
4282 (package 4698 (package
4283 (name "r-xvector") 4699 (name "r-xvector")
@@ -5237,6 +5653,115 @@ two-dimensional genome scans.")
5237libraries for systems that do not have these available via other means.") 5653libraries for systems that do not have these available via other means.")
5238 (license license:artistic2.0))) 5654 (license license:artistic2.0)))
5239 5655
5656(define-public emboss
5657 (package
5658 (name "emboss")
5659 (version "6.5.7")
5660 (source (origin
5661 (method url-fetch)
5662 (uri (string-append "ftp://emboss.open-bio.org/pub/EMBOSS/old/"
5663 (version-major+minor version) ".0/"
5664 "EMBOSS-" version ".tar.gz"))
5665 (sha256
5666 (base32
5667 "0vsmz96gc411yj2iyzdrsmg4l2n1nhgmp7vrgzlxx3xixv9xbf0q"))))
5668 (build-system gnu-build-system)
5669 (arguments
5670 `(#:configure-flags
5671 (list (string-append "--with-hpdf="
5672 (assoc-ref %build-inputs "libharu")))
5673 #:phases
5674 (modify-phases %standard-phases
5675 (add-after 'unpack 'fix-checks
5676 (lambda _
5677 ;; The PNGDRIVER tests check for the presence of libgd, libpng
5678 ;; and zlib, but assume that they are all found at the same
5679 ;; prefix.
5680 (substitute* "configure.in"
5681 (("CHECK_PNGDRIVER")
5682 "LIBS=\"$LIBS -lgd -lpng -lz -lm\"
5683AC_DEFINE([PLD_png], [1], [Define to 1 if PNG support is available])
5684AM_CONDITIONAL(AMPNG, true)"))
5685 #t))
5686 (add-after 'unpack 'disable-update-check
5687 (lambda _
5688 ;; At build time there is no connection to the Internet, so
5689 ;; looking for updates will not work.
5690 (substitute* "Makefile.am"
5691 (("\\$\\(bindir\\)/embossupdate") ""))
5692 #t))
5693 (add-before 'configure 'autogen
5694 (lambda _ (zero? (system* "autoreconf" "-vif")))))))
5695 (inputs
5696 `(("perl" ,perl)
5697 ("libpng" ,libpng)
5698 ("gd" ,gd)
5699 ("libx11" ,libx11)
5700 ("libharu" ,libharu)
5701 ("zlib" ,zlib)))
5702 (native-inputs
5703 `(("autoconf" ,autoconf)
5704 ("automake" ,automake)
5705 ("libtool" ,libtool)
5706 ("pkg-config" ,pkg-config)))
5707 (home-page "http://emboss.sourceforge.net")
5708 (synopsis "Molecular biology analysis suite")
5709 (description "EMBOSS is the \"European Molecular Biology Open Software
5710Suite\". EMBOSS is an analysis package specially developed for the needs of
5711the molecular biology (e.g. EMBnet) user community. The software
5712automatically copes with data in a variety of formats and even allows
5713transparent retrieval of sequence data from the web. It also provides a
5714number of libraries for the development of software in the field of molecular
5715biology. EMBOSS also integrates a range of currently available packages and
5716tools for sequence analysis into a seamless whole.")
5717 (license license:gpl2+)))
5718
5719(define-public bits
5720 (let ((revision "1")
5721 (commit "3cc4567896d9d6442923da944beb704750a08d2d"))
5722 (package
5723 (name "bits")
5724 ;; The version is 2.13.0 even though no release archives have been
5725 ;; published as yet.
5726 (version (string-append "2.13.0-" revision "." (string-take commit 9)))
5727 (source (origin
5728 (method git-fetch)
5729 (uri (git-reference
5730 (url "https://github.com/arq5x/bits.git")
5731 (commit commit)))
5732 (file-name (string-append name "-" version "-checkout"))
5733 (sha256
5734 (base32
5735 "17n2kffk4kmhivd8c98g2vr6y1s23vbg4sxlxs689wni66797hbs"))))
5736 (build-system gnu-build-system)
5737 (arguments
5738 `(#:tests? #f ;no tests included
5739 #:phases
5740 (modify-phases %standard-phases
5741 (delete 'configure)
5742 (add-after 'unpack 'remove-cuda
5743 (lambda _
5744 (substitute* "Makefile"
5745 ((".*_cuda") "")
5746 (("(bits_test_intersections) \\\\" _ match) match))
5747 #t))
5748 (replace 'install
5749 (lambda* (#:key outputs #:allow-other-keys)
5750 (copy-recursively
5751 "bin" (string-append (assoc-ref outputs "out") "/bin"))
5752 #t)))))
5753 (inputs
5754 `(("gsl" ,gsl)
5755 ("zlib" ,zlib)))
5756 (home-page "https://github.com/arq5x/bits")
5757 (synopsis "Implementation of binary interval search algorithm")
5758 (description "This package provides an implementation of the
5759BITS (Binary Interval Search) algorithm, an approach to interval set
5760intersection. It is especially suited for the comparison of diverse genomic
5761datasets and the exploration of large datasets of genome
5762intervals (e.g. genes, sequence alignments).")
5763 (license license:gpl2))))
5764
5240(define-public piranha 5765(define-public piranha
5241 ;; There is no release tarball for the latest version. The latest commit is 5766 ;; There is no release tarball for the latest version. The latest commit is
5242 ;; older than one year at the time of this writing. 5767 ;; older than one year at the time of this writing.
@@ -5372,3 +5897,32 @@ group or two ChIP groups run under different conditions.")
5372 (description "This program compares version strings. It intends to be a 5897 (description "This program compares version strings. It intends to be a
5373replacement for strverscmp.") 5898replacement for strverscmp.")
5374 (license license:gpl3+)))) 5899 (license license:gpl3+))))
5900
5901(define-public multiqc
5902 (package
5903 (name "multiqc")
5904 (version "0.6")
5905 (source
5906 (origin
5907 (method url-fetch)
5908 (uri (pypi-uri "multiqc" version))
5909 (sha256
5910 (base32
5911 "0avw11h63ldpxy5pizc3wl1wa01ha7q10wb240nggsjz3jaqvyiy"))))
5912 (build-system python-build-system)
5913 (propagated-inputs
5914 `(("python-jinja2" ,python-jinja2)
5915 ("python-simplejson" ,python-simplejson)
5916 ("python-pyyaml" ,python-pyyaml)
5917 ("python-click" ,python-click)
5918 ("python-matplotlib" ,python-matplotlib)
5919 ("python-numpy" ,python-numpy)))
5920 (native-inputs
5921 `(("python-setuptools" ,python-setuptools)))
5922 (home-page "http://multiqc.info")
5923 (synopsis "Aggregate bioinformatics analysis reports")
5924 (description
5925 "MultiQC is a tool to aggregate bioinformatics results across many
5926samples into a single report. It contains modules for a large number of
5927common bioinformatics tools.")
5928 (license license:gpl3)))
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index 75e5519a774..f04dc951966 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -207,7 +207,7 @@ interface, for the Transmission BitTorrent daemon.")
207(define-public aria2 207(define-public aria2
208 (package 208 (package
209 (name "aria2") 209 (name "aria2")
210 (version "1.24.0") 210 (version "1.25.0")
211 (source (origin 211 (source (origin
212 (method url-fetch) 212 (method url-fetch)
213 (uri (string-append "https://github.com/tatsuhiro-t/aria2/" 213 (uri (string-append "https://github.com/tatsuhiro-t/aria2/"
@@ -215,7 +215,7 @@ interface, for the Transmission BitTorrent daemon.")
215 name "-" version ".tar.xz")) 215 name "-" version ".tar.xz"))
216 (sha256 216 (sha256
217 (base32 217 (base32
218 "0dxzyy3x20vla4c4563zjqkl71djv731db6wn3h0gysgf399d91m")))) 218 "0d8drwc5m5ps4bw63iq2gng36gyc2vadzixbynk1dj6gfr6fp2gz"))))
219 (build-system gnu-build-system) 219 (build-system gnu-build-system)
220 (arguments 220 (arguments
221 `(#:configure-flags '("--enable-libaria2") 221 `(#:configure-flags '("--enable-libaria2")
diff --git a/gnu/packages/busybox.scm b/gnu/packages/busybox.scm
index e2d6cf8f9e9..ecbdd6f9398 100644
--- a/gnu/packages/busybox.scm
+++ b/gnu/packages/busybox.scm
@@ -1,5 +1,6 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 John Darrington <jmd@gnu.org> 2;;; Copyright © 2014 John Darrington <jmd@gnu.org>
3;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
3;;; 4;;;
4;;; This file is part of GNU Guix. 5;;; This file is part of GNU Guix.
5;;; 6;;;
@@ -29,49 +30,48 @@
29(define-public busybox 30(define-public busybox
30 (package 31 (package
31 (name "busybox") 32 (name "busybox")
32 (version "1.22.1") 33 (version "1.25.0")
33 (source (origin 34 (source (origin
34 (method url-fetch) 35 (method url-fetch)
35 (uri (string-append 36 (uri (string-append
36 "http://www.busybox.net/downloads/" name "-" 37 "https://www.busybox.net/downloads/" name "-"
37 version ".tar.bz2")) 38 version ".tar.bz2"))
38 (sha256 39 (sha256
39 (base32 40 (base32
40 "12v7nri79v8gns3inmz4k24q7pcnwi00hybs0wddfkcy1afh42xf")))) 41 "1z52mh6prhd6v47qryz4rvng5r1z0am6masrnigq06zfhmlf03ss"))))
41 (build-system gnu-build-system) 42 (build-system gnu-build-system)
42 (arguments 43 (arguments
43 `(#:phases 44 `(#:phases
44 (alist-replace 45 (modify-phases %standard-phases
45 'configure 46 (replace 'configure
46 (lambda _ (zero? (system* "make" "defconfig"))) 47 (lambda _ (zero? (system* "make" "defconfig"))))
47 (alist-replace 48 (replace 'check
48 'check 49 (lambda _
49 (lambda _
50 (substitute* '("testsuite/du/du-s-works" 50 (substitute* '("testsuite/du/du-s-works"
51 "testsuite/du/du-works") 51 "testsuite/du/du-works")
52 (("/bin") "/etc")) ; there is no /bin but there is a /etc 52 (("/bin") "/etc")) ; there is no /bin but there is a /etc
53 53
54 ;; There is no /usr/bin or /bin - replace it with /gnu/store 54 ;; There is no /usr/bin or /bin - replace it with /gnu/store
55 (substitute* "testsuite/cpio.tests" 55 (substitute* "testsuite/cpio.tests"
56 (("/usr/bin") (%store-directory)) 56 (("/usr/bin") (%store-directory))
57 (("usr") (car (filter (negate string-null?) 57 (("usr") (car (filter (negate string-null?)
58 (string-split (%store-directory) #\/))))) 58 (string-split (%store-directory) #\/)))))
59 59
60 (substitute* "testsuite/date/date-works-1" 60 (substitute* "testsuite/date/date-works-1"
61 (("/bin/date") (which "date"))) 61 (("/bin/date") (which "date")))
62 62
63 ;; The pidof tests assume that pid 1 is called "init" but that is not 63 ;; The pidof tests assume that pid 1 is called "init" but that is not
64 ;; true in guix build environment 64 ;; true in guix build environment
65 (substitute* "testsuite/pidof.tests" 65 (substitute* "testsuite/pidof.tests"
66 (("-s init") "-s $(cat /proc/1/comm)")) 66 (("-s init") "-s $(cat /proc/1/comm)"))
67 67
68 (substitute* "testsuite/grep.tests" 68 (substitute* "testsuite/grep.tests"
69 ;; The subject of this test is buggy. It is known by upstream (fixed in git) 69 ;; The subject of this test is buggy. It is known by upstream (fixed in git)
70 ;; So mark it with SKIP_KNOWN_BUGS like the others. 70 ;; So mark it with SKIP_KNOWN_BUGS like the others.
71 ;; Presumably it wasn't known at the time of release ... 71 ;; Presumably it wasn't known at the time of release ...
72 ;; (It is strange that they release software which they know to have bugs) 72 ;; (It is strange that they release software which they know to have bugs)
73 (("testing \"grep -w \\^str doesn't match str not at the beginning\"") 73 (("testing \"grep -w \\^str doesn't match str not at the beginning\"")
74 "test x\"$SKIP_KNOWN_BUGS\" = x\"\" && testing \"grep -w ^str doesn't match str not at the beginning\"")) 74 "test x\"$SKIP_KNOWN_BUGS\" = x\"\" && testing \"grep -w ^str doesn't match str not at the beginning\""))
75 75
76 ;; This test cannot possibly pass. 76 ;; This test cannot possibly pass.
77 ;; It is trying to test that "which ls" returns "/bin/ls" when PATH is not set. 77 ;; It is trying to test that "which ls" returns "/bin/ls" when PATH is not set.
@@ -83,24 +83,23 @@
83 ;; "V=1" 83 ;; "V=1"
84 "SKIP_KNOWN_BUGS=1" 84 "SKIP_KNOWN_BUGS=1"
85 "SKIP_INTERNET_TESTS=1" 85 "SKIP_INTERNET_TESTS=1"
86 "check"))) 86 "check"))))
87 (alist-replace 87 (replace 'install
88 'install 88 (lambda* (#:key outputs #:allow-other-keys)
89 (lambda* (#:key outputs #:allow-other-keys) 89 (let ((out (assoc-ref outputs "out")))
90 (let ((out (assoc-ref outputs "out"))) 90 (zero?
91 (zero? 91 (system* "make"
92 (system* "make" 92 (string-append "CONFIG_PREFIX=" out)
93 (string-append "CONFIG_PREFIX=" out) 93 "install"))))))))
94 "install"))))
95 %standard-phases)))))
96 (native-inputs `(("perl" ,perl) ; needed to generate the man pages (pod2man) 94 (native-inputs `(("perl" ,perl) ; needed to generate the man pages (pod2man)
97 ;; The following are needed by the tests. 95 ;; The following are needed by the tests.
98 ("inetutils" ,inetutils) 96 ("inetutils" ,inetutils)
97 ("which" ,(@ (gnu packages base) which))
99 ("zip" ,zip))) 98 ("zip" ,zip)))
100 (synopsis "Many common UNIX utilities in a single executable") 99 (synopsis "Many common UNIX utilities in a single executable")
101 (description "BusyBox combines tiny versions of many common UNIX utilities 100 (description "BusyBox combines tiny versions of many common UNIX utilities
102into a single small executable. It provides a fairly complete environment for 101into a single small executable. It provides a fairly complete environment for
103any small or embedded system.") 102any small or embedded system.")
104 (home-page "http://www.busybox.net") 103 (home-page "https://www.busybox.net")
105 ;; Some files are gplv2+ 104 ;; Some files are gplv2+
106 (license gpl2))) 105 (license gpl2)))
diff --git a/gnu/packages/ccache.scm b/gnu/packages/ccache.scm
index d84ac80bbf7..01db7ae57d9 100644
--- a/gnu/packages/ccache.scm
+++ b/gnu/packages/ccache.scm
@@ -1,5 +1,6 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org> 2;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org>
3;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
3;;; 4;;;
4;;; This file is part of GNU Guix. 5;;; This file is part of GNU Guix.
5;;; 6;;;
@@ -28,7 +29,7 @@
28(define-public ccache 29(define-public ccache
29 (package 30 (package
30 (name "ccache") 31 (name "ccache")
31 (version "3.2.4") 32 (version "3.2.5")
32 (source 33 (source
33 (origin 34 (origin
34 (method url-fetch) 35 (method url-fetch)
@@ -36,16 +37,18 @@
36 version ".tar.xz")) 37 version ".tar.xz"))
37 (sha256 38 (sha256
38 (base32 39 (base32
39 "0pga3hvd80f2p7mz88jmmbwzxh4vn5ihyjx5f6na8y2fclzsjg8w")))) 40 "11db1g109g0g5si0s50yd99ja5f8j4asxb081clvx78r9d9i2w0i"))))
40 (build-system gnu-build-system) 41 (build-system gnu-build-system)
41 (native-inputs `(("perl" ,perl))) ;for test.sh 42 (native-inputs `(("perl" ,perl) ;for test.sh
43 ("which" ,(@ (gnu packages base) which))))
42 (inputs `(("zlib" ,zlib))) 44 (inputs `(("zlib" ,zlib)))
43 (arguments 45 (arguments
44 '(#:phases (alist-cons-before 46 '(#:phases (alist-cons-before
45 'check 'setup-tests 47 'check 'setup-tests
46 (lambda _ 48 (lambda _
47 (substitute* '("test/test_hashutil.c" "test.sh") 49 (substitute* '("test/test_hashutil.c" "test.sh")
48 (("#!/bin/sh") (string-append "#!" (which "sh")))) 50 (("#!/bin/sh") (string-append "#!" (which "sh")))
51 (("which") (which "which")))
49 #t) 52 #t)
50 %standard-phases))) 53 %standard-phases)))
51 (home-page "https://ccache.samba.org/") 54 (home-page "https://ccache.samba.org/")
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 70772bf1571..2dd84a2a176 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -130,14 +130,14 @@ libcdio.")
130(define-public xorriso 130(define-public xorriso
131 (package 131 (package
132 (name "xorriso") 132 (name "xorriso")
133 (version "1.4.2") 133 (version "1.4.4")
134 (source (origin 134 (source (origin
135 (method url-fetch) 135 (method url-fetch)
136 (uri (string-append "mirror://gnu/xorriso/xorriso-" 136 (uri (string-append "mirror://gnu/xorriso/xorriso-"
137 version ".tar.gz")) 137 version ".tar.gz"))
138 (sha256 138 (sha256
139 (base32 139 (base32
140 "1cq4a0904lnz6nygbgarnlq49cz4qnfdyvz90s3nfk5as7gbwhr8")))) 140 "1izv8dvwacyh432vv1rm6lyjrq0v205kyakfra6iwa146c9m9fgr"))))
141 (build-system gnu-build-system) 141 (build-system gnu-build-system)
142 (inputs 142 (inputs
143 `(("acl" ,acl) 143 `(("acl" ,acl)
@@ -145,7 +145,7 @@ libcdio.")
145 ("bzip2" ,bzip2) 145 ("bzip2" ,bzip2)
146 ("zlib" ,zlib) 146 ("zlib" ,zlib)
147 ("libcdio" ,libcdio))) 147 ("libcdio" ,libcdio)))
148 (home-page "http://www.gnu.org/software/xorriso/") 148 (home-page "https://www.gnu.org/software/xorriso/")
149 (synopsis "Create, manipulate, burn ISO-9660 filesystems") 149 (synopsis "Create, manipulate, burn ISO-9660 filesystems")
150 (description 150 (description
151 "GNU Xorriso is a tool for copying files to and from ISO 9660 Rock 151 "GNU Xorriso is a tool for copying files to and from ISO 9660 Rock
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 47e0499f7f3..af3bba1f61f 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -10,6 +10,7 @@
10;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> 10;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
11;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> 11;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
12;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org> 12;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
13;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
13;;; 14;;;
14;;; This file is part of GNU Guix. 15;;; This file is part of GNU Guix.
15;;; 16;;;
@@ -796,3 +797,39 @@ respectively, based on the reference implementation from Google.")
796 (description "Extracts files out of Microsoft Cabinet (.cab) archives") 797 (description "Extracts files out of Microsoft Cabinet (.cab) archives")
797 ;; Some source files specify gpl2+, lgpl2+, however COPYING is gpl3. 798 ;; Some source files specify gpl2+, lgpl2+, however COPYING is gpl3.
798 (license license:gpl3+))) 799 (license license:gpl3+)))
800
801(define-public xdelta
802 (package
803 (name "xdelta")
804 (version "3.1.0")
805 (source
806 (origin
807 (method url-fetch)
808 (uri (string-append "https://github.com/jmacd/xdelta/archive/v"
809 version ".tar.gz"))
810 (sha256
811 (base32
812 "17g2pbbqy6h20qgdjq7ykib7kg5ajh8fwbsfgyjqg8pwg19wy5bm"))
813 (file-name (string-append name "-" version ".tar.gz"))
814 (snippet
815 ;; This file isn't freely distributable and has no effect on building.
816 '(delete-file "xdelta3/draft-korn-vcdiff.txt"))))
817 (build-system gnu-build-system)
818 (native-inputs
819 `(("autoconf" ,autoconf)
820 ("automake" ,automake)))
821 (arguments
822 `(#:phases
823 (modify-phases %standard-phases
824 (add-after 'unpack 'enter-build-directory
825 (lambda _ (chdir "xdelta3")))
826 (add-before 'configure 'autoconf
827 (lambda _ (zero? (system* "autoreconf" "-vfi")))))))
828 (home-page "http://xdelta.com")
829 (synopsis "Delta encoder for binary files")
830 (description "xdelta encodes only the differences between two binary files
831using the VCDIFF algorithm and patch file format described in RFC 3284. It can
832also be used to apply such patches. xdelta is similar to @command{diff} and
833@command{patch}, but is not limited to plain text and does not generate
834human-readable output.")
835 (license license:asl2.0)))
diff --git a/gnu/packages/conkeror.scm b/gnu/packages/conkeror.scm
index cfeb22e8c3d..d9722a1906f 100644
--- a/gnu/packages/conkeror.scm
+++ b/gnu/packages/conkeror.scm
@@ -1,6 +1,7 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com> 2;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
3;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org> 3;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
4;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
4;;; 5;;;
5;;; This file is part of GNU Guix. 6;;; This file is part of GNU Guix.
6;;; 7;;;
@@ -28,16 +29,16 @@
28(define-public conkeror 29(define-public conkeror
29 (package 30 (package
30 (name "conkeror") 31 (name "conkeror")
31 (version "1.0pre1.20150730") 32 (version "1.0.3")
32 (source (origin 33 (source (origin
33 (method url-fetch) 34 (method url-fetch)
34 (uri 35 (uri
35 (string-append "http://repo.or.cz/w/conkeror.git/snapshot/" 36 (string-append "http://repo.or.cz/conkeror.git/snapshot/"
36 "a1f7e879b129df5cf14ea4ce80a9c1407380ed58" 37 version ".tar.gz"))
37 ".tar.gz")) ; tag: debian-1.0--pre-1+git150730-1 38 (file-name (string-append name "-" version ".tar.gz"))
38 (sha256 39 (sha256
39 (base32 40 (base32
40 "1q45hc30733gz3ca2ixvw0rzzcbi7rlay7gx7kvzjv17a030nyk0")))) 41 "0ybmincxw3msnrfpby9gnckbq2x94c7fra2m66zham54cjc7mav3"))))
41 (build-system gnu-build-system) 42 (build-system gnu-build-system)
42 (inputs `(("icecat" ,icecat))) 43 (inputs `(("icecat" ,icecat)))
43 (arguments 44 (arguments
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index f167f3320c8..7d61164b059 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -3,6 +3,7 @@
3;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> 3;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
4;;; Copyright © 2016 Leo Famulari <leo@famulari.name> 4;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
5;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox> 5;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
6;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
6;;; 7;;;
7;;; This file is part of GNU Guix. 8;;; This file is part of GNU Guix.
8;;; 9;;;
@@ -22,14 +23,18 @@
22(define-module (gnu packages crypto) 23(define-module (gnu packages crypto)
23 #:use-module (gnu packages) 24 #:use-module (gnu packages)
24 #:use-module (gnu packages autotools) 25 #:use-module (gnu packages autotools)
26 #:use-module (gnu packages boost)
27 #:use-module (gnu packages gettext)
25 #:use-module (gnu packages pkg-config) 28 #:use-module (gnu packages pkg-config)
26 #:use-module (gnu packages libbsd) 29 #:use-module (gnu packages libbsd)
30 #:use-module (gnu packages linux)
27 #:use-module (gnu packages nettle) 31 #:use-module (gnu packages nettle)
28 #:use-module (gnu packages password-utils) 32 #:use-module (gnu packages password-utils)
33 #:use-module (gnu packages perl)
29 #:use-module (gnu packages readline) 34 #:use-module (gnu packages readline)
30 #:use-module (gnu packages serialization) 35 #:use-module (gnu packages serialization)
31 #:use-module (gnu packages tls) 36 #:use-module (gnu packages tls)
32 #:use-module (guix licenses) 37 #:use-module ((guix licenses) #:prefix license:)
33 #:use-module (guix packages) 38 #:use-module (guix packages)
34 #:use-module (guix download) 39 #:use-module (guix download)
35 #:use-module (guix build-system gnu)) 40 #:use-module (guix build-system gnu))
@@ -54,7 +59,7 @@
54 (description 59 (description
55 "Sodium is a new easy-to-use high-speed software library for network 60 "Sodium is a new easy-to-use high-speed software library for network
56communication, encryption, decryption, signatures, etc.") 61communication, encryption, decryption, signatures, etc.")
57 (license isc) 62 (license license:isc)
58 (home-page "http://libsodium.org"))) 63 (home-page "http://libsodium.org")))
59 64
60(define-public signify 65(define-public signify
@@ -91,10 +96,11 @@ OpenBSD tool of the same name.")
91 (home-page "https://github.com/aperezdc/signify") 96 (home-page "https://github.com/aperezdc/signify")
92 ;; This package includes third-party code that was originally released under 97 ;; This package includes third-party code that was originally released under
93 ;; various non-copyleft licenses. See the source files for clarification. 98 ;; various non-copyleft licenses. See the source files for clarification.
94 (license (list bsd-3 bsd-4 expat isc public-domain 99 (license (list license:bsd-3 license:bsd-4 license:expat license:isc
95 (non-copyleft "file://base64.c" 100 license:public-domain (license:non-copyleft
96 "See base64.c in the distribution for 101 "file://base64.c"
97 the license from IBM."))))) 102 "See base64.c in the distribution for
103 the license from IBM.")))))
98 104
99 105
100(define-public opendht 106(define-public opendht
@@ -146,4 +152,74 @@ OpenBSD tool of the same name.")
146 (description "OpenDHT is a Distributed Hash Table (DHT) library. It may 152 (description "OpenDHT is a Distributed Hash Table (DHT) library. It may
147be used to manage peer-to-peer network connections as needed for real time 153be used to manage peer-to-peer network connections as needed for real time
148communication.") 154communication.")
149 (license gpl3))) 155 (license license:gpl3)))
156
157(define rlog
158 (package
159 (name "rlog")
160 (version "1.4")
161 (source
162 (origin
163 (method url-fetch)
164 (uri
165 (string-append "http://rlog.googlecode.com/files/rlog-"
166 version ".tar.gz"))
167 (sha256
168 (base32
169 "0y9zg0pd7vmnskwac1qdyzl282z7kb01nmn57lsg2mjdxgnywf59"))))
170 (build-system gnu-build-system)
171 (arguments
172 `(#:phases (modify-phases %standard-phases
173 (add-before 'configure 'patch-/bin/sh
174 (lambda _
175 (substitute* "docs/Makefile.in"
176 (("/bin/sh") "sh")))))))
177 (home-page "http://www.arg0.net/rlog")
178 (synopsis "Flexible message logging library for EncFS")
179 (description
180 "RLog provides message logging for EncFS. It is no longer maintained.")
181 (license license:lgpl2.1+)))
182
183(define-public encfs
184 (package
185 (name "encfs")
186 (version "1.8.1")
187 (source
188 (origin
189 (method url-fetch)
190 (uri
191 (string-append "https://github.com/vgough/encfs/releases/download/v"
192 version "/encfs-" version ".tar.gz"))
193 (sha256
194 (base32
195 "1lfmcsk187qr6ahy8c8959p7jrk9d5rd9kcsx572850ca3zmf0la"))))
196 (build-system gnu-build-system)
197 (arguments
198 `(#:configure-flags '("--with-boost-serialization=boost_wserialization"
199 "--with-boost-filesystem=boost_filesystem")
200 #:phases (modify-phases %standard-phases
201 (add-before 'configure 'autoconf
202 (lambda _
203 (zero? (system* "autoreconf" "-vfi")))))))
204 (native-inputs
205 `(("autoconf" ,autoconf)
206 ("automake" ,automake)
207 ("gettext" ,gnu-gettext)
208 ("libtool" ,libtool)
209 ("perl" ,perl)
210 ("pkg-config" ,pkg-config)))
211 (inputs
212 `(("boost" ,boost)
213 ("fuse" ,fuse)
214 ("openssl" ,openssl)
215 ("rlog" ,rlog)))
216 (home-page "https://vgough.github.io/encfs")
217 (synopsis "Encrypted virtual file system")
218 (description
219 "EncFS creates a virtual encrypted file system in user-space. Each file
220created under an EncFS mount point is stored as a separate encrypted file on
221the underlying file system. Like most encrypted file systems, EncFS is meant
222to provide security against off-line attacks, such as a drive falling into
223the wrong hands.")
224 (license (list license:lgpl3+ ;encfs library
225 license:gpl3+)))) ;command-line tools
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 4f2f211fb3f..fdee887af78 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -8,7 +8,7 @@
8;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> 8;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
9;;; Copyright © 2015 Leo Famulari <leo@famulari.name> 9;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
10;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> 10;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
11;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net> 11;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
12;;; Copyright © 2016 Roel Janssen <roel@gnu.org> 12;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
13;;; 13;;;
14;;; This file is part of GNU Guix. 14;;; This file is part of GNU Guix.
diff --git a/gnu/packages/datastructures.scm b/gnu/packages/datastructures.scm
index 74b9fff4afe..b9e6061238e 100644
--- a/gnu/packages/datastructures.scm
+++ b/gnu/packages/datastructures.scm
@@ -1,5 +1,6 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> 2;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
3;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
3;;; 4;;;
4;;; This file is part of GNU Guix. 5;;; This file is part of GNU Guix.
5;;; 6;;;
@@ -70,3 +71,24 @@ probing. This method is space-efficient -- there is no pointer overhead --
70and time-efficient for good hash functions.") 71and time-efficient for good hash functions.")
71 (home-page "https://github.com/sparsehash/sparsehash") 72 (home-page "https://github.com/sparsehash/sparsehash")
72 (license license:bsd-3))) 73 (license license:bsd-3)))
74
75(define-public ssdeep
76 (package
77 (name "ssdeep")
78 (version "2.13")
79 (source (origin
80 (method url-fetch)
81 (uri (string-append "mirror://sourceforge/ssdeep/"
82 name "-" version "/"
83 name "-" version ".tar.gz"))
84 (sha256
85 (base32
86 "1igqy0j7jrklb8fdlrm6ald4cyl1fda5ipfl8crzyl6bax2ajk3f"))))
87 (build-system gnu-build-system)
88 (home-page "http://ssdeep.sourceforge.net")
89 (synopsis "Context-triggered piecewise hashing algorithm")
90 (description "ssdeep computes and matches context triggered piecewise
91hashes (CTPH), also called fuzzy checksums. It can identify similar files
92that have sequences of identical bytes in the same order, even though bytes
93in between these sequences may be different in both content and length.")
94 (license license:gpl2+)))
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index c60eacb15ef..54f23db01e2 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -2,8 +2,9 @@
2;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org> 2;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org>
3;;; Copyright © 2015 Mathieu Lirzin <mthl@gnu.org> 3;;; Copyright © 2015 Mathieu Lirzin <mthl@gnu.org>
4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> 4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
5;;; Copyright © 2016 Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com> 5;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
6;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> 6;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
7;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
7;;; 8;;;
8;;; This file is part of GNU Guix. 9;;; This file is part of GNU Guix.
9;;; 10;;;
@@ -25,9 +26,12 @@
25 #:use-module (guix packages) 26 #:use-module (guix packages)
26 #:use-module (guix download) 27 #:use-module (guix download)
27 #:use-module (guix build-system gnu) 28 #:use-module (guix build-system gnu)
29 #:use-module (gnu packages)
28 #:use-module (gnu packages gettext) 30 #:use-module (gnu packages gettext)
29 #:use-module (gnu packages linux) 31 #:use-module (gnu packages linux)
32 #:use-module (gnu packages ncurses)
30 #:use-module (gnu packages perl) 33 #:use-module (gnu packages perl)
34 #:use-module (gnu packages popt)
31 #:use-module (gnu packages python) 35 #:use-module (gnu packages python)
32 #:use-module (gnu packages readline) 36 #:use-module (gnu packages readline)
33 #:use-module (gnu packages guile) 37 #:use-module (gnu packages guile)
@@ -97,6 +101,46 @@ fdisk. fdisk is used for the creation and manipulation of disk partition
97tables, and it understands a variety of different formats.") 101tables, and it understands a variety of different formats.")
98 (license gpl3+))) 102 (license gpl3+)))
99 103
104(define-public gptfdisk
105 (package
106 (name "gptfdisk")
107 (version "1.0.1")
108 (source
109 (origin
110 (method url-fetch)
111 (uri (string-append "mirror://sourceforge/gptfdisk/gptfdisk/"
112 version "/" name "-" version ".tar.gz"))
113 (sha256
114 (base32
115 "1izazbyv5n2d81qdym77i8mg9m870hiydmq4d0s51npx5vp8lk46"))))
116 (build-system gnu-build-system)
117 (inputs
118 `(("gettext" ,gnu-gettext)
119 ("ncurses" ,ncurses)
120 ("popt" ,popt)
121 ("util-linux" ,util-linux))) ; libuuid
122 (arguments
123 `(#:test-target "test"
124 #:phases
125 (modify-phases %standard-phases
126 ;; no configure script
127 (delete 'configure)
128 ;; no install target
129 (replace 'install
130 (lambda* (#:key outputs #:allow-other-keys)
131 (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
132 (install-file "gdisk" bin)
133 (install-file "sgdisk" bin)
134 (install-file "cgdisk" bin)
135 (install-file "fixparts" bin)))))))
136 (home-page "http://www.rodsbooks.com/gdisk/")
137 (synopsis "Low-level GPT disk partitioning and formatting")
138 (description "GPT fdisk (aka gdisk) is a text-mode partitioning tool that
139works on Globally Unique Identifier (GUID) Partition Table (GPT) disks, rather
140than on the more common (through 2009) Master Boot Record (MBR) partition
141tables.")
142 (license gpl2)))
143
100(define-public ddrescue 144(define-public ddrescue
101 (package 145 (package
102 (name "ddrescue") 146 (name "ddrescue")
diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm
index 17a69e2c255..8302cc49cc9 100644
--- a/gnu/packages/documentation.scm
+++ b/gnu/packages/documentation.scm
@@ -2,6 +2,7 @@
2;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2014, 2016 Andreas Enge <andreas@enge.fr> 3;;; Copyright © 2014, 2016 Andreas Enge <andreas@enge.fr>
4;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org> 4;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
5;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
5;;; 6;;;
6;;; This file is part of GNU Guix. 7;;; This file is part of GNU Guix.
7;;; 8;;;
@@ -27,9 +28,11 @@
27 #:use-module (gnu packages) 28 #:use-module (gnu packages)
28 #:use-module (gnu packages python) 29 #:use-module (gnu packages python)
29 #:use-module (gnu packages bison) 30 #:use-module (gnu packages bison)
31 #:use-module (gnu packages docbook)
30 #:use-module (gnu packages flex) 32 #:use-module (gnu packages flex)
31 #:use-module (gnu packages graphviz) 33 #:use-module (gnu packages graphviz)
32 #:use-module (gnu packages gettext) 34 #:use-module (gnu packages gettext)
35 #:use-module (gnu packages glib)
33 #:use-module (gnu packages perl) 36 #:use-module (gnu packages perl)
34 #:use-module (gnu packages xml) 37 #:use-module (gnu packages xml)
35 #:autoload (gnu packages zip) (unzip)) 38 #:autoload (gnu packages zip) (unzip))
@@ -115,3 +118,38 @@ generate both TeX output for high-quality hardcopies or HTML output for online
115brwosing. The documentation is extracted directly from the C/C++/IDL source 118brwosing. The documentation is extracted directly from the C/C++/IDL source
116or Java class files.") 119or Java class files.")
117 (license gpl2+))) 120 (license gpl2+)))
121
122(define-public scrollkeeper
123 (package
124 (name "scrollkeeper")
125 (version "0.3.14")
126 (source
127 (origin
128 (method url-fetch)
129 (uri (string-append "mirror://sourceforge/scrollkeeper/scrollkeeper-"
130 version ".tar.gz"))
131 (sha256
132 (base32 "1bfxwxc1ngh11v36z899sz9qam366r050fhkyb5adv65lb1x62sa"))))
133 (build-system gnu-build-system)
134 (arguments
135 `(#:configure-flags
136 (list (string-append "--with-xml-catalog="
137 (assoc-ref %build-inputs "docbook-xml")
138 "/xml/dtd/docbook/catalog.xml"))))
139 (inputs
140 `(("perl" ,perl)
141 ("libxml2" ,libxml2)
142 ("libxslt" ,libxslt)
143 ;; The configure script checks for either version 4.2 or 4.1.2.
144 ("docbook-xml" ,docbook-xml-4.2)))
145 (native-inputs
146 `(("intltool" ,intltool)))
147 (home-page "http://scrollkeeper.sourceforge.net/")
148 (synopsis "Open Documentation Cataloging Project")
149 (description "ScrollKeeper is a cataloging system for documentation on open
150systems. It manages documentation metadata as specified by the Open Source
151Metadata Framework and provides a simple API to allow help browsers to find,
152sort, and search the document catalog. It will also be able to communicate
153with catalog servers on the Net to search for documents which are not on the
154local system.")
155 (license lgpl2.1+)))
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index f7e15584f38..69946b1e787 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -61,7 +61,7 @@
61(define-public calibre 61(define-public calibre
62 (package 62 (package
63 (name "calibre") 63 (name "calibre")
64 (version "2.58.0") 64 (version "2.62.0")
65 (source 65 (source
66 (origin 66 (origin
67 (method url-fetch) 67 (method url-fetch)
@@ -70,7 +70,7 @@
70 version ".tar.xz")) 70 version ".tar.xz"))
71 (sha256 71 (sha256
72 (base32 72 (base32
73 "0npqvfjqj1vwa7nmnsyd4d30z40brydw275ldf1jankrp6dr9dyd")) 73 "15qskfsdg3fy9cpw1m3mccwgn45366yn7lci5kim0fdzpw9pnkna"))
74 ;; Remove non-free or doubtful code, see 74 ;; Remove non-free or doubtful code, see
75 ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html 75 ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html
76 (modules '((guix build utils))) 76 (modules '((guix build utils)))
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 7b60722c101..926db42a467 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -5,7 +5,6 @@
5;;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com> 5;;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com>
6;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> 6;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
7;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> 7;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
8;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net>
9;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> 8;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
10;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org> 9;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
11;;; Copyright © 2016 humanitiesNerd <catonano@gmail.com> 10;;; Copyright © 2016 humanitiesNerd <catonano@gmail.com>
@@ -47,6 +46,7 @@
47 #:use-module (gnu packages gtk) 46 #:use-module (gnu packages gtk)
48 #:use-module (gnu packages gnome) 47 #:use-module (gnu packages gnome)
49 #:use-module (gnu packages ncurses) 48 #:use-module (gnu packages ncurses)
49 #:use-module (gnu packages tex)
50 #:use-module (gnu packages texinfo) 50 #:use-module (gnu packages texinfo)
51 #:use-module (gnu packages tls) 51 #:use-module (gnu packages tls)
52 #:use-module (gnu packages pkg-config) 52 #:use-module (gnu packages pkg-config)
@@ -68,6 +68,7 @@
68 #:use-module (gnu packages perl) 68 #:use-module (gnu packages perl)
69 #:use-module (gnu packages pdf) 69 #:use-module (gnu packages pdf)
70 #:use-module (gnu packages scheme) 70 #:use-module (gnu packages scheme)
71 #:use-module (gnu packages statistics)
71 #:use-module (gnu packages xiph) 72 #:use-module (gnu packages xiph)
72 #:use-module (gnu packages mp3) 73 #:use-module (gnu packages mp3)
73 #:use-module (guix utils) 74 #:use-module (guix utils)
@@ -554,6 +555,31 @@ operations.")
554support for Git-SVN.") 555support for Git-SVN.")
555 (license license:gpl3+))) 556 (license license:gpl3+)))
556 557
558(define-public emacs-magit-popup
559 (package
560 (name "emacs-magit-popup")
561 (version (package-version magit))
562 (source (origin
563 (method url-fetch)
564 (uri (string-append
565 "https://raw.githubusercontent.com/magit/magit/"
566 version "/lisp/magit-popup.el"))
567 (file-name (string-append "magit-popup-" version ".el"))
568 (sha256
569 (base32
570 "144nl7j5mn86ccan6qxgg40bsxpkbc83vwnhd5y657gqki74972r"))))
571 (build-system emacs-build-system)
572 (propagated-inputs
573 `(("emacs-dash" ,emacs-dash)))
574 (home-page "https://github.com/magit/magit")
575 (synopsis "Define prefix-infix-suffix command combos")
576 (description
577 "This library implements a generic interface for toggling switches and
578setting options and then invoking an Emacs command which does something with
579these arguments. The prototypical use is for the command to call an external
580process, passing on the arguments as command line arguments.")
581 (license license:gpl3+)))
582
557(define-public haskell-mode 583(define-public haskell-mode
558 (package 584 (package
559 (name "haskell-mode") 585 (name "haskell-mode")
@@ -664,7 +690,7 @@ the body are let-bound and this search is done at compile time.")
664(define-public flycheck 690(define-public flycheck
665 (package 691 (package
666 (name "emacs-flycheck") 692 (name "emacs-flycheck")
667 (version "0.23") 693 (version "28")
668 (source (origin 694 (source (origin
669 (method url-fetch) 695 (method url-fetch)
670 (uri (string-append 696 (uri (string-append
@@ -672,11 +698,12 @@ the body are let-bound and this search is done at compile time.")
672 version "/flycheck-" version ".tar")) 698 version "/flycheck-" version ".tar"))
673 (sha256 699 (sha256
674 (base32 700 (base32
675 "1n2cifzsl5dbv42l82bi3y1vk6q33msi8dd4bj7b9nvnl9jfjj5b")))) 701 "1yjxivk11d7w39zfhj2xr4h6xhwx1aj6yhyzd63rjrad7xpjfl86"))))
676 (build-system emacs-build-system) 702 (build-system emacs-build-system)
677 (propagated-inputs 703 (propagated-inputs
678 `(("emacs-dash" ,emacs-dash) 704 `(("emacs-dash" ,emacs-dash)
679 ("emacs-let-alist" ,let-alist))) 705 ("emacs-let-alist" ,let-alist)
706 ("emacs-seq" ,emacs-seq)))
680 (home-page "https://www.flycheck.org") 707 (home-page "https://www.flycheck.org")
681 (synopsis "On-the-fly syntax checking") 708 (synopsis "On-the-fly syntax checking")
682 (description 709 (description
@@ -821,7 +848,7 @@ provides an optional IDE-like error list.")
821 848
822(define-public emms 849(define-public emms
823 (package 850 (package
824 (name "emms") 851 (name "emacs-emms")
825 (version "4.1") 852 (version "4.1")
826 (source (origin 853 (source (origin
827 (method url-fetch) 854 (method url-fetch)
@@ -933,6 +960,29 @@ light user interface.")
933 (home-page "http://www.gnu.org/software/emms/") 960 (home-page "http://www.gnu.org/software/emms/")
934 (license license:gpl3+))) 961 (license license:gpl3+)))
935 962
963(define-public emacs-emms-player-mpv
964 (package
965 (name "emacs-emms-player-mpv")
966 (version "0.0.8")
967 (source
968 (origin
969 (method url-fetch)
970 (uri (string-append "https://github.com/dochang/emms-player-mpv/archive/"
971 version ".tar.gz"))
972 (file-name (string-append name "-" version ".tar.gz"))
973 (sha256
974 (base32
975 "01wj410dpx25b3i8781i2j9c6nlvzvvphy9qgh7zfpmyz6a3wsm4"))))
976 (build-system emacs-build-system)
977 (propagated-inputs
978 `(("emms" ,emms)))
979 (home-page "https://github.com/dochang/emms-player-mpv/")
980 (synopsis "Mpv support for EMMS")
981 (description
982 "This package provides an EMMS player that uses mpv. It supports pause
983and seeking.")
984 (license license:gpl3+)))
985
936 986
937;;; 987;;;
938;;; Miscellaneous. 988;;; Miscellaneous.
@@ -1225,6 +1275,317 @@ strings.")
1225files and directories.") 1275files and directories.")
1226 (license license:gpl3+))) 1276 (license license:gpl3+)))
1227 1277
1278(define-public emacs-el-mock
1279 (package
1280 (name "emacs-el-mock")
1281 (version "1.25.1")
1282 (source
1283 (origin
1284 (method url-fetch)
1285 (uri (string-append "https://github.com/rejeep/el-mock.el/"
1286 "archive/v" version ".tar.gz"))
1287 (file-name (string-append name "-" version ".tar.gz"))
1288 (sha256
1289 (base32
1290 "16xw94n58xxn3zvgyj72bmzs0k5lkvswjmzs79ws9n7rzdivb38b"))))
1291 (build-system emacs-build-system)
1292 (home-page "http://github.com/rejeep/el-mock.el")
1293 (synopsis "Tiny mock and stub framework in Emacs Lisp")
1294 (description
1295 "Emacs Lisp Mock is a library for mocking and stubbing using readable
1296syntax. Most commonly Emacs Lisp Mock is used in conjunction with Emacs Lisp
1297Expectations, but it can be used in other contexts.")
1298 (license license:gpl3+)))
1299
1300(define-public emacs-espuds
1301 (package
1302 (name "emacs-espuds")
1303 (version "0.3.3")
1304 (source
1305 (origin
1306 (method url-fetch)
1307 (uri (string-append "https://github.com/ecukes/espuds/"
1308 "archive/v" version ".tar.gz"))
1309 (file-name (string-append name "-" version ".tar.gz"))
1310 (sha256
1311 (base32
1312 "0xv551376pbmh735a3zjwc9z4qdx6ngj1vpq3xqjpn0a1rwjyn4k"))))
1313 (build-system emacs-build-system)
1314 (propagated-inputs
1315 `(("emacs-s" ,emacs-s)
1316 ("emacs-dash" ,emacs-dash)
1317 ("emacs-f" ,emacs-f)))
1318 (home-page "http://github.com/ecukes/espuds")
1319 (synopsis "Common step definitions for Ecukes")
1320 (description "Espuds is a collection of the most commonly used step
1321definitions for testing with the Ecukes framework.")
1322 (license license:gpl3+)))
1323
1324(define-public emacs-expand-region
1325 (package
1326 (name "emacs-expand-region")
1327 (version "0.10.0")
1328 (source
1329 (origin
1330 (method url-fetch)
1331 (uri (string-append "https://github.com/magnars/expand-region.el"
1332 "/archive/" version ".tar.gz"))
1333 (file-name (string-append name "-" version ".tar.gz"))
1334 (sha256
1335 (base32
1336 "1zfiaqyb3zqiyqjkpqsjw660j09805nqsg25q6ars2h8gs0rnvxb"))))
1337 (build-system emacs-build-system)
1338 (home-page "https://github.com/magnars/expand-region.el")
1339 (synopsis "Increase selected region by semantic units")
1340 (description
1341 "Expand region increases the selected region by semantic units. Just
1342keep pressing the key until it selects what you want. There's also
1343@code{er/contract-region} if you expand too far.")
1344 (license license:gpl3+)))
1345
1346(define-public emacs-fill-column-indicator
1347 (package
1348 (name "emacs-fill-column-indicator")
1349 (version "1.81")
1350 (source
1351 (origin
1352 (method url-fetch)
1353 (uri (string-append "https://github.com/alpaker/Fill-Column-Indicator"
1354 "/archive/v" version ".tar.gz"))
1355 (file-name (string-append name "-" version ".tar.gz"))
1356 (sha256
1357 (base32
1358 "1xwyqbjbbicmvhlb85vg4j5snwy1vd7rfk89ws4viws5ljkhhyg8"))))
1359 (build-system emacs-build-system)
1360 (home-page "https://www.emacswiki.org/emacs/FillColumnIndicator")
1361 (synopsis "Graphically indicate the fill column")
1362 (description
1363 "Fill-column-indicator graphically indicates the location of the fill
1364column by drawing a thin line down the length of the editing window.")
1365 (license license:gpl3+)))
1366
1367(define-public emacs-znc
1368 (package
1369 (name "emacs-znc")
1370 (version "0.0.2")
1371 (source
1372 (origin
1373 (method url-fetch)
1374 (uri (string-append "https://marmalade-repo.org/packages/znc-"
1375 version ".el"))
1376 (sha256
1377 (base32
1378 "1d8lqvybgyazin5z0g1c4l3rg1vzrrvf0saqs53jr1zcdg0lianh"))))
1379 (build-system emacs-build-system)
1380 (home-page "https://github.com/sshirokov/ZNC.el")
1381 (synopsis "Make ERC and ZNC get along better")
1382 (description
1383 "This is a thin wrapper around @code{erc} that enables one to use the ZNC
1384IRC bouncer with ERC.")
1385 (license license:expat)))
1386
1387(define-public emacs-shut-up
1388 (package
1389 (name "emacs-shut-up")
1390 (version "0.3.2")
1391 (source
1392 (origin
1393 (method url-fetch)
1394 (uri (string-append "https://github.com/cask/shut-up/"
1395 "archive/v" version ".tar.gz"))
1396 (file-name (string-append name "-" version ".tar.gz"))
1397 (sha256
1398 (base32
1399 "09kzrjdkb569iviyg7ydwq44yh84m3f9hkl7jizfrlk0w4gz67d1"))))
1400 (build-system emacs-build-system)
1401 (home-page "https://github.com/cask/shut-up")
1402 (synopsis "Silence Emacs")
1403 (description "This package silences most output of Emacs when running an
1404Emacs shell script.")
1405 (license license:expat)))
1406
1407(define-public emacs-undercover
1408 (package
1409 (name "emacs-undercover")
1410 (version "0.6.0")
1411 (source
1412 (origin
1413 (method url-fetch)
1414 (uri (string-append "https://github.com/sviridov/undercover.el/"
1415 "archive/v" version ".tar.gz"))
1416 (file-name (string-append name "-" version ".tar.gz"))
1417 (sha256
1418 (base32
1419 "0f48fi0xnbsqs382rgh85m9mq1wdnr0yib7as9xhwzvq0hsr5m0a"))))
1420 (build-system emacs-build-system)
1421 (propagated-inputs
1422 `(("emacs-dash" ,emacs-dash)
1423 ("emacs-shut-up" ,emacs-shut-up)))
1424 (home-page "https://github.com/sviridov/undercover.el")
1425 (synopsis "Test coverage library for Emacs Lisp")
1426 (description
1427 "Undercover is a test coverage library for software written in Emacs
1428Lisp.")
1429 (license license:expat)))
1430
1431(define-public emacs-paren-face
1432 (package
1433 (name "emacs-paren-face")
1434 (version "1.0.0")
1435 (source
1436 (origin
1437 (method url-fetch)
1438 (uri (string-append "https://github.com/tarsius/paren-face/archive/"
1439 version ".tar.gz"))
1440 (file-name (string-append name "-" version ".tar.gz"))
1441 (sha256
1442 (base32
1443 "0y4qrhxa9332vsvr999jg7qj1ymnfgwpf591yi4a4jgg90pm7qnn"))))
1444 (build-system emacs-build-system)
1445 (home-page "http://github.com/tarsius/paren-face")
1446 (synopsis "Face for parentheses in lisp modes")
1447 (description
1448 "This library defines a face named @code{parenthesis} used just for
1449parentheses. The intended purpose of this face is to make parentheses less
1450visible in Lisp code by dimming them. Lispers probably don't need to be
1451constantly made aware of the existence of the parentheses. Dimming them might
1452be even more useful for people new to lisp who have not yet learned to
1453subconsciously blend out the parentheses.")
1454 (license license:gpl3+)))
1455
1456(define-public emacs-page-break-lines
1457 (package
1458 (name "emacs-page-break-lines")
1459 (version "0.11")
1460 (source
1461 (origin
1462 (method url-fetch)
1463 (uri (string-append "https://github.com/purcell/page-break-lines/"
1464 "archive/" version ".tar.gz"))
1465 (file-name (string-append name "-" version ".tar.gz"))
1466 (sha256
1467 (base32
1468 "1zzhziq5kbrm9rxk30kx2glz455fp1blqxg8cpcf6l8xl3w8z4pg"))))
1469 (build-system emacs-build-system)
1470 (home-page "https://github.com/purcell/page-break-lines")
1471 (synopsis "Display page breaks as tidy horizontal lines")
1472 (description
1473 "This library provides a global mode which displays form feed characters
1474as horizontal rules.")
1475 (license license:gpl3+)))
1476
1477(define-public emacs-simple-httpd
1478 (package
1479 (name "emacs-simple-httpd")
1480 (version "1.4.6")
1481 (source
1482 (origin
1483 (method url-fetch)
1484 (uri (string-append "https://github.com/skeeto/emacs-web-server/"
1485 "archive/" version ".tar.gz"))
1486 (file-name (string-append name "-" version ".tar.gz"))
1487 (sha256
1488 (base32
1489 "01r7h3imnj4qx1m53a2wjafvbylcyz5f9r2rg2cs7ky3chlg220r"))))
1490 (build-system emacs-build-system)
1491 (home-page "https://github.com/skeeto/emacs-http-server")
1492 (synopsis "HTTP server in pure Emacs Lisp")
1493 (description
1494 "This package provides a simple HTTP server written in Emacs Lisp to
1495serve files and directory listings.")
1496 (license license:unlicense)))
1497
1498(define-public emacs-skewer-mode
1499 (package
1500 (name "emacs-skewer-mode")
1501 (version "1.6.2")
1502 (source
1503 (origin
1504 (method url-fetch)
1505 (uri (string-append "https://github.com/skeeto/skewer-mode/archive/"
1506 version ".tar.gz"))
1507 (file-name (string-append name "-" version ".tar.gz"))
1508 (sha256
1509 (base32
1510 "07jpz374j0j964szy3zznrkyja2kpdl3xa87wh7349mzxivqxdx0"))))
1511 (build-system emacs-build-system)
1512 (propagated-inputs
1513 `(("emacs-simple-httpd" ,emacs-simple-httpd)
1514 ("emacs-js2-mode" ,emacs-js2-mode)))
1515 (home-page "https://github.com/skeeto/skewer-mode")
1516 (synopsis "Live web development in Emacs")
1517 (description
1518 "Skewer-mode provides live interaction with JavaScript, CSS, and HTML in
1519a web browser. Expressions are sent on-the-fly from an editing buffer to be
1520evaluated in the browser, just like Emacs does with an inferior Lisp process
1521in Lisp modes.")
1522 (license license:unlicense)))
1523
1524(define-public emacs-rich-minority
1525 (package
1526 (name "emacs-rich-minority")
1527 (version "1.0.1")
1528 (source
1529 (origin
1530 (method url-fetch)
1531 (uri (string-append "https://github.com/Malabarba/rich-minority/"
1532 "archive/" version ".tar.gz"))
1533 (file-name (string-append name "-" version ".tar.gz"))
1534 (sha256
1535 (base32
1536 "1l0cb0q7kyi88nwfqd542psnkgwnjklpzc5rx32gzd3lkwkrbr8v"))))
1537 (build-system emacs-build-system)
1538 (home-page "https://github.com/Malabarba/rich-minority")
1539 (synopsis "Clean-up and beautify the list of minor modes")
1540 (description
1541 "This Emacs package hides and/or highlights minor modes in the
1542mode-line.")
1543 (license license:gpl2+)))
1544
1545(define-public emacs-smart-mode-line
1546 (package
1547 (name "emacs-smart-mode-line")
1548 (version "2.10.1")
1549 (source
1550 (origin
1551 (method url-fetch)
1552 (uri (string-append "https://github.com/Malabarba/smart-mode-line/"
1553 "archive/" version ".tar.gz"))
1554 (file-name (string-append name "-" version ".tar.gz"))
1555 (sha256
1556 (base32
1557 "0i9wajabrrsjzwd842q0m2611kf0q31p9hg1pdj81177gynkw8l8"))))
1558 (build-system emacs-build-system)
1559 (propagated-inputs
1560 `(("emacs-rich-minority" ,emacs-rich-minority)))
1561 (home-page "http://github.com/Malabarba/smart-mode-line")
1562 (synopsis "Color-coded smart mode-line.")
1563 (description
1564 "Smart Mode Line is a mode-line theme for Emacs. It aims to be easy to
1565read from small to large monitors by using colors, a prefix feature, and smart
1566truncation.")
1567 (license license:gpl2+)))
1568
1569(define-public emacs-shell-switcher
1570 (package
1571 (name "emacs-shell-switcher")
1572 (version "1.0.1")
1573 (source
1574 (origin
1575 (method url-fetch)
1576 (uri (string-append "https://github.com/DamienCassou/shell-switcher"
1577 "/archive/v" version ".tar.gz"))
1578 (file-name (string-append name "-" version ".tar.gz"))
1579 (sha256
1580 (base32
1581 "1c23mfkdqz2g9rixd9smm323vzlvhzz3ng34ambcqjfq309qb2nz"))))
1582 (build-system emacs-build-system)
1583 (home-page "https://github.com/DamienCassou/shell-switcher")
1584 (synopsis "Provide fast switching between shell buffers")
1585 (description
1586 "This package provides commands to quickly switch between shell buffers.")
1587 (license license:gpl3+)))
1588
1228(define-public emacs-ob-ipython 1589(define-public emacs-ob-ipython
1229 (package 1590 (package
1230 (name "emacs-ob-ipython") 1591 (name "emacs-ob-ipython")
@@ -1482,10 +1843,34 @@ identifiers in the MIT-Scheme documentation.")
1482constants and units into an Emacs buffer.") 1843constants and units into an Emacs buffer.")
1483 (license license:gpl2+))) 1844 (license license:gpl2+)))
1484 1845
1846(define-public emacs-tagedit
1847 (package
1848 (name "emacs-tagedit")
1849 (version "1.4.0")
1850 (source
1851 (origin
1852 (method url-fetch)
1853 (uri (string-append "https://github.com/magnars/tagedit/"
1854 "archive/" version ".tar.gz"))
1855 (file-name (string-append name "-" version ".tar.gz"))
1856 (sha256
1857 (base32
1858 "1apfnann4qklfdsmdi7icjsj18x7gwx8d83iqr4z25clszz95xfq"))))
1859 (build-system emacs-build-system)
1860 (propagated-inputs
1861 `(("emacs-s" ,emacs-s)
1862 ("emacs-dash" ,emacs-dash)))
1863 (home-page "https://github.com/magnars/tagedit")
1864 (synopsis "Some paredit-like features for html-mode")
1865 (description
1866 "This package provides a collection of paredit-like functions for editing
1867in @code{html-mode}.")
1868 (license license:gpl3+)))
1869
1485(define-public emacs-slime 1870(define-public emacs-slime
1486 (package 1871 (package
1487 (name "emacs-slime") 1872 (name "emacs-slime")
1488 (version "2.15") 1873 (version "2.18")
1489 (source 1874 (source
1490 (origin 1875 (origin
1491 (file-name (string-append name "-" version ".tar.gz")) 1876 (file-name (string-append name "-" version ".tar.gz"))
@@ -1495,7 +1880,7 @@ constants and units into an Emacs buffer.")
1495 version ".tar.gz")) 1880 version ".tar.gz"))
1496 (sha256 1881 (sha256
1497 (base32 1882 (base32
1498 "0l2z6l2xm78mhh0nczkrmzh2ddb1n911ij9xb6q40zwvx4f8blds")))) 1883 "146avwbwr6mw0nmgyihx8gkr0mv6al7a73igzxvysj62000cqvlj"))))
1499 (build-system emacs-build-system) 1884 (build-system emacs-build-system)
1500 (native-inputs 1885 (native-inputs
1501 `(("texinfo" ,texinfo))) 1886 `(("texinfo" ,texinfo)))
@@ -1680,6 +2065,30 @@ number.")
1680It is built on top of the custom theme support in Emacs 24 or later.") 2065It is built on top of the custom theme support in Emacs 24 or later.")
1681 (license license:gpl3+))) 2066 (license license:gpl3+)))
1682 2067
2068(define-public emacs-solarized-theme
2069 (package
2070 (name "emacs-solarized-theme")
2071 (version "1.2.2")
2072 (source (origin
2073 (method url-fetch)
2074 (uri (string-append "https://github.com/bbatsov/solarized-emacs/"
2075 "archive/v" version ".tar.gz"))
2076 (file-name (string-append name "-" version ".tar.gz"))
2077 (sha256
2078 (base32
2079 "1ha3slc6d9wi9ilkhmwrzkvf308n6ph7b0k69pk369s9304awxzx"))))
2080 (build-system emacs-build-system)
2081 (propagated-inputs
2082 `(("emacs-dash" ,emacs-dash)
2083 ("emacs-f" ,emacs-f)
2084 ("emacs-s" ,emacs-s)))
2085 (home-page "http://github.com/bbatsov/solarized-emacs")
2086 (synopsis "Port of the Solarized theme for Emacs")
2087 (description
2088 "Solarized for Emacs is a port of the Solarized theme for Vim. This
2089package provides a light and a dark variant.")
2090 (license license:gpl3+)))
2091
1683(define-public emacs-smartparens 2092(define-public emacs-smartparens
1684 (package 2093 (package
1685 (name "emacs-smartparens") 2094 (name "emacs-smartparens")
@@ -1709,6 +2118,55 @@ features found in other packages it also brings many improvements as
1709well as completely new features.") 2118well as completely new features.")
1710 (license license:gpl3+))) 2119 (license license:gpl3+)))
1711 2120
2121(define-public emacs-hl-todo
2122 (package
2123 (name "emacs-hl-todo")
2124 (version "1.7.0")
2125 (source (origin
2126 (method url-fetch)
2127 (uri (string-append
2128 "https://raw.githubusercontent.com/tarsius/hl-todo/"
2129 version "/hl-todo.el"))
2130 (sha256
2131 (base32
2132 "18zydm43zajlglhgr0bhdkd4pln27amd063k2ql6p1mvyam3j8ia"))))
2133 (build-system emacs-build-system)
2134 (home-page "https://github.com/tarsius/hl-todo")
2135 (synopsis "Emacs mode to highlight TODO and similar keywords")
2136 (description
2137 "This package provides an Emacs mode to highlight TODO and similar
2138keywords in comments and strings. This package also provides commands for
2139moving to the next or previous keyword and to invoke @code{occur} with a
2140regexp that matches all known keywords.")
2141 (license license:gpl3+)))
2142
2143(define-public emacs-perspective
2144 (package
2145 (name "emacs-perspective")
2146 (version "1.12")
2147 (source
2148 (origin
2149 (method url-fetch)
2150 (uri (string-append "https://github.com/nex3/perspective-el/"
2151 "archive/" version ".tar.gz"))
2152 (file-name (string-append name "-" version ".tar.gz"))
2153 (sha256
2154 (base32
2155 "078ahh0kmhdylq5ib9c81c76kz1n02xwc83pm729d00i84ibviic"))))
2156 (build-system emacs-build-system)
2157 (home-page "http://github.com/nex3/perspective-el")
2158 (synopsis "Switch between named \"perspectives\"")
2159 (description
2160 "This package provides tagged workspaces in Emacs, similar to workspaces in
2161windows managers such as Awesome and XMonad. @code{perspective.el} provides
2162multiple workspaces (or \"perspectives\") for each Emacs frame. Each
2163perspective is composed of a window configuration and a set of buffers.
2164Switching to a perspective activates its window configuration, and when in a
2165perspective only its buffers are available by default.")
2166 ;; This package is released under the same license as Emacs (GPLv3+) or
2167 ;; the Expat license.
2168 (license license:gpl3+)))
2169
1712(define-public emacs-hydra 2170(define-public emacs-hydra
1713 (package 2171 (package
1714 (name "emacs-hydra") 2172 (name "emacs-hydra")
@@ -2021,6 +2479,65 @@ Emacs default configuration in uncontroversial ways that nearly everyone can
2021agree upon.") 2479agree upon.")
2022 (license license:gpl3+))) 2480 (license license:gpl3+)))
2023 2481
2482(define-public emacs-eprime
2483 (let ((commit "17a481af26496be91c07139a9bfc05cfe722506f"))
2484 (package
2485 (name "emacs-eprime")
2486 (version (string-append "20140513-" (string-take commit 7)))
2487 (source (origin
2488 (method url-fetch)
2489 (uri (string-append "https://raw.githubusercontent.com"
2490 "/AndrewHynes/eprime-mode/"
2491 commit "/eprime-mode.el"))
2492 (file-name (string-append "eprime-" version ".el"))
2493 (sha256
2494 (base32
2495 "0v68lggkyq7kbcr9zyi573m2g2x251xy3jadlaw8kx02l8krwq8d"))))
2496 (build-system emacs-build-system)
2497 (home-page "https://github.com/AndrewHynes/eprime-mode")
2498 (synopsis "E-prime checking mode for Emacs")
2499 (description "This package provides an E-prime checking mode for Emacs
2500that highlights non-conforming text. The subset of the English language called
2501E-Prime forbids the use of the \"to be\" form to strengthen your writing.")
2502 (license license:gpl3+))))
2503
2504(define-public emacs-ess
2505 (package
2506 (name "emacs-ess")
2507 (version "16.04")
2508 (source (origin
2509 (method url-fetch)
2510 (uri (string-append "http://ess.r-project.org/downloads/ess/ess-"
2511 version ".tgz"))
2512 (sha256
2513 (base32
2514 "0w7mbbajn377gdmvnd21mpyr368b2ia46gq6cb99y4y5rspf9pcg"))))
2515 (build-system gnu-build-system)
2516 (arguments
2517 `(#:tests? #f ; There is no test suite.
2518 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
2519 #:phases
2520 (modify-phases %standard-phases
2521 (delete 'configure)
2522 (add-before 'build 'more-shebang-patching
2523 (lambda* (#:key inputs #:allow-other-keys)
2524 (substitute* "Makeconf"
2525 (("SHELL = /bin/sh")
2526 (string-append "SHELL = " (which "sh")))))))))
2527 (inputs
2528 `(("emacs" ,emacs-minimal)
2529 ("r" ,r)))
2530 (native-inputs
2531 `(("perl" ,perl)
2532 ("texinfo" ,texinfo)
2533 ("texlive" ,texlive)))
2534 (home-page "http://ess.r-project.org/")
2535 (synopsis "Emacs mode for statistical analysis programs")
2536 (description "Emacs Speaks Statistics (ESS) is an add-on package for GNU
2537Emacs. It is designed to support editing of scripts and interaction with
2538various statistical analysis programs such as R and OpenBUGS.")
2539 (license license:gpl2+)))
2540
2024(define-public emacs-smex 2541(define-public emacs-smex
2025 (package 2542 (package
2026 (name "emacs-smex") 2543 (name "emacs-smex")
@@ -2273,7 +2790,7 @@ Dust.js, React/JSX, Angularjs, ejs, etc.")
2273(define-public emacs-helm 2790(define-public emacs-helm
2274 (package 2791 (package
2275 (name "emacs-helm") 2792 (name "emacs-helm")
2276 (version "1.9.6") 2793 (version "1.9.8")
2277 (source (origin 2794 (source (origin
2278 (method url-fetch) 2795 (method url-fetch)
2279 (uri (string-append 2796 (uri (string-append
@@ -2282,7 +2799,7 @@ Dust.js, React/JSX, Angularjs, ejs, etc.")
2282 (file-name (string-append name "-" version ".tar.gz")) 2799 (file-name (string-append name "-" version ".tar.gz"))
2283 (sha256 2800 (sha256
2284 (base32 2801 (base32
2285 "0fc897rwf1fm2m7jrsikkgcyzhngfcysxfmzchpwzfj6v9sb5rl9")))) 2802 "019dpzr6l83k1fgxn40aqxjvrpz4dl5d9vi7fc5wjnifmxaqxia6"))))
2286 (build-system emacs-build-system) 2803 (build-system emacs-build-system)
2287 (propagated-inputs 2804 (propagated-inputs
2288 `(("emacs-async" ,emacs-async) 2805 `(("emacs-async" ,emacs-async)
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 7b21c11ad35..b3e44311381 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -58,7 +58,7 @@
58(define-public librecad 58(define-public librecad
59 (package 59 (package
60 (name "librecad") 60 (name "librecad")
61 (version "2.0.11") 61 (version "2.1.1")
62 (source (origin 62 (source (origin
63 (method url-fetch) 63 (method url-fetch)
64 (uri (string-append 64 (uri (string-append
@@ -67,7 +67,7 @@
67 (file-name (string-append name "-" version ".tar.gz")) 67 (file-name (string-append name "-" version ".tar.gz"))
68 (sha256 68 (sha256
69 (base32 69 (base32
70 "0jda23qspziph6fwgq1q3nmnllbgn9kwfpjylv1f0wa7c5l85gh5")))) 70 "132vv9pzbx64zmbnikyg06d4j47yzlmwi4mywxnd9gkaik4yd2kb"))))
71 (build-system gnu-build-system) 71 (build-system gnu-build-system)
72 (arguments 72 (arguments
73 '(#:phases 73 '(#:phases
@@ -108,26 +108,25 @@ plans and designs.")
108(define-public geda-gaf 108(define-public geda-gaf
109 (package 109 (package
110 (name "geda-gaf") 110 (name "geda-gaf")
111 (version "1.8.2") 111 (version "1.9.2")
112 (source (origin 112 (source (origin
113 (method url-fetch) 113 (method url-fetch)
114 (uri (string-append 114 (uri (string-append
115 "http://ftp.geda-project.org/geda-gaf/stable/v" 115 "http://ftp.geda-project.org/geda-gaf/unstable/v"
116 (version-major+minor version) "/" 116 (version-major+minor version) "/"
117 version "/geda-gaf-" version ".tar.gz")) 117 version "/geda-gaf-" version ".tar.gz"))
118 (sha256 118 (sha256
119 (base32 119 (base32
120 "08dpa506xk4gjbbi8vnxcb640wq4ihlgmhzlssl52nhvxwx7gx5v")))) 120 "14mk45pfz11v54q66gafw2l68n1p5ssvvjmdm8ffgc8x1w5ajfrz"))))
121 (build-system gnu-build-system) 121 (build-system gnu-build-system)
122 (arguments 122 (arguments
123 '(#:phases 123 '(#:phases
124 ;; tests require a writable HOME 124 (modify-phases %standard-phases
125 (alist-cons-before 125 ;; tests require a writable HOME
126 'check 'set-home 126 (add-before 'check 'set-home
127 (lambda _ 127 (lambda _
128 (setenv "HOME" (getenv "TMPDIR"))) 128 (setenv "HOME" (getenv "TMPDIR"))
129 %standard-phases 129 #t)))
130 )
131 #:configure-flags 130 #:configure-flags
132 (let ((pcb (assoc-ref %build-inputs "pcb"))) 131 (let ((pcb (assoc-ref %build-inputs "pcb")))
133 (list (string-append "--with-pcb-datadir=" pcb "/share") 132 (list (string-append "--with-pcb-datadir=" pcb "/share")
@@ -229,10 +228,6 @@ optimizer; and it can produce photorealistic and design review images.")
229 (snippet 228 (snippet
230 ;; Remove a non-free file. 229 ;; Remove a non-free file.
231 '(delete-file "doc/psfig.sty")) 230 '(delete-file "doc/psfig.sty"))
232 (modules '((guix build utils)
233 (guix build download)
234 (guix ftp-client)))
235 (imported-modules modules)
236 (patches (search-patches "fastcap-mulSetup.patch" 231 (patches (search-patches "fastcap-mulSetup.patch"
237 "fastcap-mulGlobal.patch")))) 232 "fastcap-mulGlobal.patch"))))
238 (build-system gnu-build-system) 233 (build-system gnu-build-system)
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index 2a606ebd7e8..a8187f8f85f 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -47,7 +47,6 @@
47 #:use-module (gnu packages pulseaudio) 47 #:use-module (gnu packages pulseaudio)
48 #:use-module (gnu packages python) 48 #:use-module (gnu packages python)
49 #:use-module (gnu packages tls) 49 #:use-module (gnu packages tls)
50 #:use-module (gnu packages valgrind)
51 #:use-module (gnu packages video) 50 #:use-module (gnu packages video)
52 #:use-module (gnu packages xorg)) 51 #:use-module (gnu packages xorg))
53 52
@@ -93,7 +92,6 @@
93 ("mesa" ,mesa) 92 ("mesa" ,mesa)
94 ("printproto" ,printproto) 93 ("printproto" ,printproto)
95 ("scrnsaverproto" ,scrnsaverproto) 94 ("scrnsaverproto" ,scrnsaverproto)
96 ("valgrind" ,valgrind)
97 ("xextproto" ,xextproto) 95 ("xextproto" ,xextproto)
98 ("xinput" ,xinput) 96 ("xinput" ,xinput)
99 ("xpr" ,xpr) 97 ("xpr" ,xpr)
@@ -118,12 +116,11 @@
118 (arguments 116 (arguments
119 `(#:configure-flags '("--disable-silent-rules") 117 `(#:configure-flags '("--disable-silent-rules")
120 #:phases 118 #:phases
121 (alist-cons-before 119 (modify-phases %standard-phases
122 'configure 'patch-config-files 120 (add-before 'configure 'patch-config-files
123 (lambda _ 121 (lambda _
124 (substitute* "po/Makefile.in.in" 122 (substitute* "po/Makefile.in.in"
125 (("/bin/sh") (which "bash")))) 123 (("/bin/sh") (which "bash"))))))))
126 %standard-phases)))
127 (home-page "http://www.enlightenment.org") 124 (home-page "http://www.enlightenment.org")
128 (synopsis "Enlightenment Foundation Libraries") 125 (synopsis "Enlightenment Foundation Libraries")
129 (description 126 (description
@@ -273,7 +270,7 @@ Libraries with some extra bells and whistles.")
273(define-public enlightenment 270(define-public enlightenment
274 (package 271 (package
275 (name "enlightenment") 272 (name "enlightenment")
276 (version "0.20.9") 273 (version "0.21.0")
277 (source (origin 274 (source (origin
278 (method url-fetch) 275 (method url-fetch)
279 (uri 276 (uri
@@ -281,7 +278,7 @@ Libraries with some extra bells and whistles.")
281 name "/" name "-" version ".tar.xz")) 278 name "/" name "-" version ".tar.xz"))
282 (sha256 279 (sha256
283 (base32 280 (base32
284 "1gniy7i3mg3q9cgqf004lvnv397yncdr2b7w1gzj69bvv7a2lyfv")))) 281 "0p85dmk9ysbf9y7vlc92z7495mh9l860xj3s8pspy9mscv3dnwg9"))))
285 (build-system gnu-build-system) 282 (build-system gnu-build-system)
286 (arguments 283 (arguments
287 `(#:configure-flags '("--enable-mount-eeze"))) 284 `(#:configure-flags '("--enable-mount-eeze")))
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index 0ab8bc57eef..e3f8d80c022 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -90,12 +90,11 @@ programmer devices.")
90 version ".tar.gz")) 90 version ".tar.gz"))
91 (sha256 91 (sha256
92 (base32 92 (base32
93 "0frxg0q09nrm95z7ymzddx7ysl77ilfbdix1m81d9jjpiv5bm64y")) 93 "0frxg0q09nrm95z7ymzddx7ysl77ilfbdix1m81d9jjpiv5bm64y"))))
94 (patches (search-patches "avrdude-fix-libusb.patch"))))
95 (build-system gnu-build-system) 94 (build-system gnu-build-system)
96 (inputs 95 (inputs
97 `(("libelf" ,libelf) 96 `(("libelf" ,libelf)
98 ("libusb" ,libusb) 97 ("libusb" ,libusb-compat)
99 ("libftdi" ,libftdi))) 98 ("libftdi" ,libftdi)))
100 (native-inputs 99 (native-inputs
101 `(("bison" ,bison) 100 `(("bison" ,bison)
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 4b8a2786102..3faeb2ebd83 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -6,7 +6,8 @@
6;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> 6;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
7;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> 7;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
8;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> 8;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
9;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net> 9;;; Copyright © 2015, 2016 Leo Famulari <leo@famulari.name>
10;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
10;;; Copyright © 2016 Jookia <166291@gmail.com> 11;;; Copyright © 2016 Jookia <166291@gmail.com>
11;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org> 12;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
12;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com> 13;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com>
@@ -599,15 +600,15 @@ languages, plus Greek and Cyrillic.")
599(define-public font-gnu-unifont 600(define-public font-gnu-unifont
600 (package 601 (package
601 (name "font-gnu-unifont") 602 (name "font-gnu-unifont")
602 (version "8.0.01") 603 (version "9.0.01")
603 (source (origin 604 (source (origin
604 (method url-fetch) 605 (method url-fetch)
605 (uri (string-append 606 (uri (string-append
606 "mirror://gnu/unifont/unifont-8.0.01/unifont-" 607 "mirror://gnu/unifont/unifont-" version "/unifont-"
607 version ".tar.gz")) 608 version ".tar.gz"))
608 (sha256 609 (sha256
609 (base32 610 (base32
610 "176bzc2y3i49xavrmbyyz5lkqp0qq3bkj7rjrl197kib873by82b")))) 611 "14z4lx6asa94i73m19lsdgzqjn9xzi8320h3dafvzq9ima94pm9b"))))
611 (build-system gnu-build-system) 612 (build-system gnu-build-system)
612 (outputs '("out" ; TrueType version 613 (outputs '("out" ; TrueType version
613 "pcf" ; PCF (bitmap) version 614 "pcf" ; PCF (bitmap) version
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 53bd757c1d8..458331d7035 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -82,14 +82,14 @@ freedesktop.org project.")
82(define-public libinput 82(define-public libinput
83 (package 83 (package
84 (name "libinput") 84 (name "libinput")
85 (version "1.3.0") 85 (version "1.4.0")
86 (source (origin 86 (source (origin
87 (method url-fetch) 87 (method url-fetch)
88 (uri (string-append "https://freedesktop.org/software/libinput/" 88 (uri (string-append "https://freedesktop.org/software/libinput/"
89 name "-" version ".tar.xz")) 89 name "-" version ".tar.xz"))
90 (sha256 90 (sha256
91 (base32 91 (base32
92 "1sn1s1bz06fa49izqkqf519sjclsvhf42i6slzx1w5hx4vxpb2lr")))) 92 "085lcxy111j8r1lwyghsc6zrysqh0vg8xip5axxsdl8r8n3i1vvn"))))
93 (build-system gnu-build-system) 93 (build-system gnu-build-system)
94 (native-inputs 94 (native-inputs
95 `(("pkg-config" ,pkg-config))) 95 `(("pkg-config" ,pkg-config)))
@@ -99,7 +99,7 @@ freedesktop.org project.")
99 `(("libevdev" ,libevdev) 99 `(("libevdev" ,libevdev)
100 ("mtdev" ,mtdev) 100 ("mtdev" ,mtdev)
101 ("libwacom" ,libwacom))) 101 ("libwacom" ,libwacom)))
102 (home-page "http://www.freedesktop.org/wiki/Software/libinput/") 102 (home-page "https://www.freedesktop.org/wiki/Software/libinput/")
103 (synopsis "Input devices handling library") 103 (synopsis "Input devices handling library")
104 (description 104 (description
105 "Libinput is a library to handle input devices for display servers and 105 "Libinput is a library to handle input devices for display servers and
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 6036ce3e199..731e243f465 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -17,7 +17,7 @@
17;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> 17;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
18;;; Copyright © 2016 Rodger Fox <thylakoid@openmailbox.org> 18;;; Copyright © 2016 Rodger Fox <thylakoid@openmailbox.org>
19;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> 19;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
20;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net> 20;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
21;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org> 21;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org>
22;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> 22;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
23;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> 23;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
@@ -2493,3 +2493,39 @@ in strikes against the evil corporation.")
2493 license:cc-by-sa3.0 2493 license:cc-by-sa3.0
2494 license:cc0 2494 license:cc0
2495 license:public-domain)))) 2495 license:public-domain))))
2496
2497(define-public chromium-bsu
2498 (package
2499 (name "chromium-bsu")
2500 (version "0.9.15.1")
2501 (source (origin
2502 (method url-fetch)
2503 (uri (string-append "mirror://sourceforge/" name
2504 "/Chromium B.S.U. source code/"
2505 name "-" version ".tar.gz"))
2506 (sha256
2507 (base32
2508 "01c4mki0rpz6wrqbf18fj4vd7axln5v0xqm80cyksbv63g04s6w6"))))
2509 (build-system gnu-build-system)
2510 (arguments
2511 `(#:phases (modify-phases %standard-phases
2512 (add-after 'set-paths 'set-sdl-paths
2513 (lambda* (#:key inputs #:allow-other-keys)
2514 (setenv "CPATH"
2515 (string-append (assoc-ref inputs "sdl-union")
2516 "/include/SDL"))
2517 #t)))))
2518 (native-inputs `(("pkg-config" ,pkg-config)))
2519 (inputs `(("glu" ,glu)
2520 ("quesoglc" ,quesoglc)
2521 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
2522 (home-page "http://chromium-bsu.sourceforge.net/")
2523 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
2524 (description
2525 "In this game you are the captain of the cargo ship Chromium B.S.U. and
2526are responsible for delivering supplies to the troops on the front line. Your
2527ship has a small fleet of robotic fighters which you control from the relative
2528safety of the Chromium vessel.")
2529 ;; Clarified Artistic License for everything but sound, which is covered
2530 ;; by the Expat License.
2531 (license (list license:clarified-artistic license:expat))))
diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm
index 4d6b1a3c89d..3313ee68f22 100644
--- a/gnu/packages/gd.scm
+++ b/gnu/packages/gd.scm
@@ -1,6 +1,6 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013, 2016 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2013, 2016 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> 3;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org>
4;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> 4;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
5;;; Copyright © 2016 Leo Famulari <leo@famulari.name> 5;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
6;;; 6;;;
@@ -40,16 +40,21 @@
40 ;; Note: With libgd.org now pointing to github.com, genuine old 40 ;; Note: With libgd.org now pointing to github.com, genuine old
41 ;; tarballs are no longer available. Notably, versions 2.0.x are 41 ;; tarballs are no longer available. Notably, versions 2.0.x are
42 ;; missing. 42 ;; missing.
43 (version "2.2.1") 43 (version "2.2.2")
44 44
45 (source (origin 45 (source (origin
46 (method url-fetch) 46 (method url-fetch)
47 (uri (string-append 47 (uri (string-append
48 "https://github.com/libgd/libgd/releases/download/gd-" 48 "https://github.com/libgd/libgd/releases/download/gd-"
49 version "/libgd-" version ".tar.xz")) 49 version "/libgd-" version ".tar.xz"))
50 (patches (search-patches "gd-fix-test-on-i686.patch"
51 "gd-CVE-2016-5766.patch"
52 "gd-CVE-2016-6128.patch"
53 "gd-CVE-2016-6132.patch"
54 "gd-CVE-2016-6214.patch"))
50 (sha256 55 (sha256
51 (base32 56 (base32
52 "0xmrqka1ggqgml84xbmkw1y0r0lg7qn657v5b1my8pry92p651vh")))) 57 "1311g5mva2xlzqv3rjqjc4jjkn5lzls4skvr395h633zw1n7b7s8"))))
53 (build-system gnu-build-system) 58 (build-system gnu-build-system)
54 (native-inputs 59 (native-inputs
55 `(("pkg-config" ,pkg-config))) 60 `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/geeqie.scm b/gnu/packages/geeqie.scm
index 7ea75aa3a0c..110fb68ea0e 100644
--- a/gnu/packages/geeqie.scm
+++ b/gnu/packages/geeqie.scm
@@ -22,29 +22,33 @@
22 #:use-module (guix download) 22 #:use-module (guix download)
23 #:use-module ((guix licenses) #:prefix l:) 23 #:use-module ((guix licenses) #:prefix l:)
24 #:use-module (guix build-system gnu) 24 #:use-module (guix build-system gnu)
25 #:use-module (gnu packages pkg-config) 25 #:use-module (gnu packages autotools)
26 #:use-module (gnu packages compression)
27 #:use-module (gnu packages ghostscript)
26 #:use-module (gnu packages glib) 28 #:use-module (gnu packages glib)
27 #:use-module (gnu packages gtk) 29 #:use-module (gnu packages gtk)
28 #:use-module (gnu packages image) 30 #:use-module (gnu packages image)
29 #:use-module (gnu packages ghostscript) 31 #:use-module (gnu packages pkg-config)
30 #:use-module (gnu packages compression)
31 #:use-module (gnu packages xml)) 32 #:use-module (gnu packages xml))
32 33
33(define-public exiv2 ; XXX: move elsewhere? 34(define-public exiv2 ; XXX: move elsewhere?
34 (package 35 (package
35 (name "exiv2") 36 (name "exiv2")
36 (version "0.23") 37 (version "0.25")
37 (source (origin 38 (source (origin
38 (method url-fetch) 39 (method url-fetch)
39 (uri (string-append "http://www.exiv2.org/exiv2-" 40 (uri (string-append "http://www.exiv2.org/exiv2-"
40 version ".tar.gz")) 41 version ".tar.gz"))
41 (sha256 42 (sha256
42 (base32 43 (base32
43 "04bbg2cg6mgcyz435zamx37sp5zw44n2alb59ki1daz71f851yl1")))) 44 "197g6vgcpyf9p2cwn5p5hb1r714xsk1v4p96f5pv1z8mi9vzq2y8"))))
44 (build-system gnu-build-system) 45 (build-system gnu-build-system)
45 (arguments '(#:tests? #f)) ; no `check' target 46 (arguments '(#:tests? #f)) ; no `check' target
46 (propagated-inputs 47 (propagated-inputs
47 `(("expat" ,expat) ("zlib" ,zlib))) 48 `(("expat" ,expat)
49 ("zlib" ,zlib)))
50 (native-inputs
51 `(("intltool" ,intltool)))
48 (home-page "http://www.exiv2.org/") 52 (home-page "http://www.exiv2.org/")
49 (synopsis "Library and command-line utility to manage image metadata") 53 (synopsis "Library and command-line utility to manage image metadata")
50 (description 54 (description
@@ -61,16 +65,23 @@ and XMP metadata of images in various formats.")
61(define-public geeqie 65(define-public geeqie
62 (package 66 (package
63 (name "geeqie") 67 (name "geeqie")
64 (version "1.1") 68 (version "1.3")
65 (source (origin 69 (source (origin
66 (method url-fetch) 70 (method url-fetch)
67 (uri (string-append "https://github.com/BestImageViewer/geeqie/" 71 (uri (string-append "https://github.com/BestImageViewer/geeqie/"
68 "archive/" version ".tar.gz")) 72 "releases/download/v" version "/geeqie-"
69 (file-name (string-append name "-" version ".tar.gz")) 73 version ".tar.xz"))
70 (sha256 74 (sha256
71 (base32 75 (base32
72 "1kzy39z9505xkayyx7rjj2wda76xy3ch1s5z35zn8yli54ffhi2m")))) 76 "0gzc82sy66pbsmq7lnmq4y37zqad1zfwfls3ik3dmfm8s5nmcvsb"))))
73 (build-system gnu-build-system) 77 (build-system gnu-build-system)
78 (arguments
79 `(#:phases
80 (modify-phases %standard-phases
81 (add-after 'unpack 'autogen
82 (lambda _
83 (setenv "NOCONFIGURE" "true")
84 (zero? (system* "sh" "autogen.sh")))))))
74 (inputs 85 (inputs
75 `(;; ("libchamplain" ,libchamplain) 86 `(;; ("libchamplain" ,libchamplain)
76 ("lcms" ,lcms) 87 ("lcms" ,lcms)
@@ -78,7 +89,10 @@ and XMP metadata of images in various formats.")
78 ("libpng" ,libpng) 89 ("libpng" ,libpng)
79 ("gtk+" ,gtk+-2))) 90 ("gtk+" ,gtk+-2)))
80 (native-inputs 91 (native-inputs
81 `(("intltool" ,intltool) 92 `(("autoconf" ,autoconf)
93 ("automake" ,automake)
94 ("glib" ,glib "bin") ; glib-gettextize
95 ("intltool" ,intltool)
82 ("pkg-config" ,pkg-config))) 96 ("pkg-config" ,pkg-config)))
83 (home-page "http://www.geeqie.org/") 97 (home-page "http://www.geeqie.org/")
84 (synopsis "Lightweight GTK+ based image viewer") 98 (synopsis "Lightweight GTK+ based image viewer")
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index 1cd779a9b08..d5c58e26ba2 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -130,6 +130,7 @@ buffers.")
130 (uri (string-append "http://download.gimp.org/pub/gimp/v" 130 (uri (string-append "http://download.gimp.org/pub/gimp/v"
131 (version-major+minor version) 131 (version-major+minor version)
132 "/gimp-" version ".tar.bz2")) 132 "/gimp-" version ".tar.bz2"))
133 (patches (search-patches "gimp-CVE-2016-4994.patch"))
133 (sha256 134 (sha256
134 (base32 135 (base32
135 "1dsgazia9hmab8cw3iis7s69dvqyfj5wga7ds7w2q5mms1xqbqwm")))) 136 "1dsgazia9hmab8cw3iis7s69dvqyfj5wga7ds7w2q5mms1xqbqwm"))))
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index 907e3bf30a2..7fa79bbde37 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -20,29 +20,29 @@
20;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. 20;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21 21
22(define-module (gnu packages gl) 22(define-module (gnu packages gl)
23 #:use-module (ice-9 match)
24 #:use-module (guix build utils)
25 #:use-module ((guix licenses) #:prefix l:)
26 #:use-module (guix packages)
27 #:use-module (guix download)
28 #:use-module (guix build-system gnu)
29 #:use-module (guix build-system cmake)
30 #:use-module (guix packages)
31 #:use-module (guix utils)
32 #:use-module (gnu packages autotools) 23 #:use-module (gnu packages autotools)
33 #:use-module (gnu packages bison) 24 #:use-module (gnu packages bison)
34 #:use-module (gnu packages flex) 25 #:use-module (gnu packages flex)
35 #:use-module (gnu packages pkg-config) 26 #:use-module (gnu packages fontutils)
27 #:use-module (gnu packages freedesktop)
36 #:use-module (gnu packages gettext) 28 #:use-module (gnu packages gettext)
29 #:use-module (gnu packages guile)
37 #:use-module (gnu packages linux) 30 #:use-module (gnu packages linux)
31 #:use-module (gnu packages pkg-config)
38 #:use-module (gnu packages python) 32 #:use-module (gnu packages python)
39 #:use-module (gnu packages xorg)
40 #:use-module (gnu packages xml)
41 #:use-module (gnu packages fontutils)
42 #:use-module (gnu packages guile)
43 #:use-module (gnu packages video) 33 #:use-module (gnu packages video)
44 #:use-module (gnu packages xdisorg) 34 #:use-module (gnu packages xdisorg)
45 #:use-module (gnu packages zip)) 35 #:use-module (gnu packages xml)
36 #:use-module (gnu packages xorg)
37 #:use-module (gnu packages zip)
38 #:use-module (guix download)
39 #:use-module (guix build utils)
40 #:use-module (guix build-system gnu)
41 #:use-module (guix build-system cmake)
42 #:use-module ((guix licenses) #:prefix license:)
43 #:use-module (guix packages)
44 #:use-module (guix utils)
45 #:use-module (ice-9 match))
46 46
47(define-public glu 47(define-public glu
48 (package 48 (package
@@ -71,7 +71,7 @@ matrices for creating perspective and orthographic projections,
71positioning a camera, and selection/picking, Rendering of disk, 71positioning a camera, and selection/picking, Rendering of disk,
72cylinder, and sphere primitives, Interpreting OpenGL error values 72cylinder, and sphere primitives, Interpreting OpenGL error values
73as ASCII text.") 73as ASCII text.")
74 (license (l:x11-style "http://directory.fsf.org/wiki/License:SGIFreeBv2")))) 74 (license (license:x11-style "http://directory.fsf.org/wiki/License:SGIFreeBv2"))))
75 75
76(define-public freeglut 76(define-public freeglut
77 (package 77 (package
@@ -112,7 +112,7 @@ GLUT (and hence freeglut) allows the user to create and manage windows
112containing OpenGL contexts on a wide range of platforms and also read 112containing OpenGL contexts on a wide range of platforms and also read
113the mouse, keyboard and joystick functions. Freeglut is released under 113the mouse, keyboard and joystick functions. Freeglut is released under
114the X-Consortium license.") 114the X-Consortium license.")
115 (license l:x11))) 115 (license license:x11)))
116 116
117(define-public ftgl 117(define-public ftgl
118 (package 118 (package
@@ -138,7 +138,7 @@ the X-Consortium license.")
138 "FTGL is a font rendering library for OpenGL applications. Supported 138 "FTGL is a font rendering library for OpenGL applications. Supported
139rendering modes are: Bitmaps, Anti-aliased pixmaps, Texture maps, Outlines, 139rendering modes are: Bitmaps, Anti-aliased pixmaps, Texture maps, Outlines,
140Polygon meshes, and Extruded polygon meshes.") 140Polygon meshes, and Extruded polygon meshes.")
141 (license l:x11))) 141 (license license:x11)))
142 142
143(define-public s2tc 143(define-public s2tc
144 (package 144 (package
@@ -170,7 +170,7 @@ Polygon meshes, and Extruded polygon meshes.")
170 (description 170 (description
171 "S2TC is a patent-free implementation of S3 Texture Compression (S3TC, 171 "S2TC is a patent-free implementation of S3 Texture Compression (S3TC,
172also known as DXTn or DXTC) for Mesa.") 172also known as DXTn or DXTC) for Mesa.")
173 (license l:expat))) 173 (license license:expat)))
174 174
175;;; Mesa needs LibVA headers to build its Gallium-based VA API implementation; 175;;; Mesa needs LibVA headers to build its Gallium-based VA API implementation;
176;;; LibVA itself depends on Mesa. We use the following to solve the circular 176;;; LibVA itself depends on Mesa. We use the following to solve the circular
@@ -287,7 +287,7 @@ also known as DXTn or DXTC) for Mesa.")
287a system for rendering interactive 3D graphics. A variety of device drivers 287a system for rendering interactive 3D graphics. A variety of device drivers
288allows Mesa to be used in many different environments ranging from software 288allows Mesa to be used in many different environments ranging from software
289emulation to complete hardware acceleration for modern GPUs.") 289emulation to complete hardware acceleration for modern GPUs.")
290 (license l:x11))) 290 (license license:x11)))
291 291
292(define-public mesa-headers 292(define-public mesa-headers
293 (package 293 (package
@@ -317,12 +317,12 @@ emulation to complete hardware acceleration for modern GPUs.")
317 (method url-fetch) 317 (method url-fetch)
318 (uri (string-append "ftp://ftp.freedesktop.org/pub/mesa/demos/" version 318 (uri (string-append "ftp://ftp.freedesktop.org/pub/mesa/demos/" version
319 "/mesa-demos-" version ".tar.bz2")) 319 "/mesa-demos-" version ".tar.bz2"))
320 (sha256 (base32 "14msj0prbl3ljwd24yaqv9pz1xzicdmqgg616xxlppbdh6syrgz4")))) 320 (sha256 (base32 "1vqb7s5m3fcg2csbiz45mha1pys2xx6rhw94fcyvapqdpm5iawy1"))))
321 321
322(define-public mesa-utils 322(define-public mesa-utils
323 (package 323 (package
324 (name "mesa-utils") 324 (name "mesa-utils")
325 (version "8.2.0") 325 (version "8.3.0")
326 (source (mesa-demos-source version)) 326 (source (mesa-demos-source version))
327 (build-system gnu-build-system) 327 (build-system gnu-build-system)
328 (inputs 328 (inputs
@@ -332,12 +332,7 @@ emulation to complete hardware acceleration for modern GPUs.")
332 (native-inputs 332 (native-inputs
333 `(("pkg-config" ,pkg-config))) 333 `(("pkg-config" ,pkg-config)))
334 (arguments 334 (arguments
335 '(;; XXX: fails to build against latest mesa: 335 '(#:phases
336 ;; eglut.c: error: 'EGL_SCREEN_BIT_MESA' undeclared
337 ;;
338 ;; <https://bugs.freedesktop.org/show_bug.cgi?id=91643>
339 #:configure-flags '("--disable-egl")
340 #:phases
341 (modify-phases %standard-phases 336 (modify-phases %standard-phases
342 (replace 337 (replace
343 'install 338 'install
@@ -355,7 +350,7 @@ emulation to complete hardware acceleration for modern GPUs.")
355 "The mesa-utils package contains several utility tools for Mesa: glxdemo, 350 "The mesa-utils package contains several utility tools for Mesa: glxdemo,
356glxgears, glxheads, and glxinfo.") 351glxgears, glxheads, and glxinfo.")
357 ;; glxdemo is public domain; others expat. 352 ;; glxdemo is public domain; others expat.
358 (license (list l:expat l:public-domain)))) 353 (license (list license:expat license:public-domain))))
359 354
360(define-public glew 355(define-public glew
361 (package 356 (package
@@ -399,7 +394,7 @@ glxgears, glxheads, and glxinfo.")
399loading library. GLEW provides efficient run-time mechanisms for determining 394loading library. GLEW provides efficient run-time mechanisms for determining
400which OpenGL extensions are supported on the target platform. OpenGL core and 395which OpenGL extensions are supported on the target platform. OpenGL core and
401extension functionality is exposed in a single header file.") 396extension functionality is exposed in a single header file.")
402 (license l:bsd-3))) 397 (license license:bsd-3)))
403 398
404(define-public guile-opengl 399(define-public guile-opengl
405 (package 400 (package
@@ -445,7 +440,7 @@ extension functionality is exposed in a single header file.")
445 (description 440 (description
446 "Guile-OpenGL is a library for Guile that provides bindings to the 441 "Guile-OpenGL is a library for Guile that provides bindings to the
447OpenGL graphics API.") 442OpenGL graphics API.")
448 (license l:lgpl3+))) 443 (license license:lgpl3+)))
449 444
450(define-public libepoxy 445(define-public libepoxy
451 (package 446 (package
@@ -502,7 +497,7 @@ OpenGL graphics API.")
502 (synopsis "A library for handling OpenGL function pointer management") 497 (synopsis "A library for handling OpenGL function pointer management")
503 (description 498 (description
504 "A library for handling OpenGL function pointer management.") 499 "A library for handling OpenGL function pointer management.")
505 (license l:x11))) 500 (license license:x11)))
506 501
507(define-public soil 502(define-public soil
508 (package 503 (package
@@ -544,4 +539,4 @@ OpenGL graphics API.")
544 (description 539 (description
545 "SOIL is a tiny C library used primarily for uploading textures into 540 "SOIL is a tiny C library used primarily for uploading textures into
546OpenGL.") 541OpenGL.")
547 (license l:public-domain))) 542 (license license:public-domain)))
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index c4e2a37955b..f052eab40cb 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -3,7 +3,6 @@
3;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in> 3;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
4;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org> 4;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
5;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il> 5;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
6;;; Copyright © 2016 Ni* Gillmann <ng@niasterisk.space>
7;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> 6;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
8;;; Copyright © 2016 Mark H Weaver <mhw@netris.org> 7;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
9;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> 8;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
@@ -154,13 +153,16 @@ and support for SSL3 and TLS.")
154(define-public gnurl 153(define-public gnurl
155 (package 154 (package
156 (name "gnurl") 155 (name "gnurl")
157 (version "7.45.0") 156 (version "7.48.0")
158 (source (origin 157 (source (origin
159 (method url-fetch) 158 (method url-fetch)
160 (uri (string-append "https://gnunet.org/sites/default/files/gnurl-" 159 (uri (let ((version-with-underscores
161 version ".tar.bz2")) 160 (string-join (string-split version #\.) "_")))
161 (string-append "https://gnunet.org/sites/default/files/"
162 name "-" version-with-underscores ".tar.bz2")))
162 (sha256 163 (sha256
163 (base32 "0hd8w4wyjwagd4k6vm6srphqbmysz08rcwf8z7f4b2d6d2yrn3mm")))) 164 (base32
165 "14gch4rdibrc8qs4mijsczxvl45dsclf234g17dk6c8nc2s4bm0a"))))
164 (build-system gnu-build-system) 166 (build-system gnu-build-system)
165 (inputs `(("gnutls" ,gnutls) 167 (inputs `(("gnutls" ,gnutls)
166 ("libidn" ,libidn) 168 ("libidn" ,libidn)
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 2ef241036a9..2b4ce718668 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -60,7 +60,7 @@
60 (base32 60 (base32
61 "0ywxwswizmkyciy480kzczxn6nhbgzf3z8my4nk43nvv67k4x87j")))) 61 "0ywxwswizmkyciy480kzczxn6nhbgzf3z8my4nk43nvv67k4x87j"))))
62 (build-system gnu-build-system) 62 (build-system gnu-build-system)
63 (home-page "http://gnupg.org") 63 (home-page "https://gnupg.org")
64 (synopsis "Library of error values for GnuPG components") 64 (synopsis "Library of error values for GnuPG components")
65 (description 65 (description
66 "Libgpg-error is a small library that defines common error values 66 "Libgpg-error is a small library that defines common error values
@@ -96,7 +96,7 @@ Daemon and possibly more in the future.")
96 (list (string-append "--with-gpg-error-prefix=" 96 (list (string-append "--with-gpg-error-prefix="
97 (assoc-ref %build-inputs "libgpg-error-host"))))) 97 (assoc-ref %build-inputs "libgpg-error-host")))))
98 (outputs '("out" "debug")) 98 (outputs '("out" "debug"))
99 (home-page "http://gnupg.org/") 99 (home-page "https://gnupg.org/")
100 (synopsis "Cryptographic function library") 100 (synopsis "Cryptographic function library")
101 (description 101 (description
102 "Libgcrypt is a general-purpose cryptographic library. It provides the 102 "Libgcrypt is a general-purpose cryptographic library. It provides the
@@ -122,7 +122,7 @@ generation.")
122(define-public libassuan 122(define-public libassuan
123 (package 123 (package
124 (name "libassuan") 124 (name "libassuan")
125 (version "2.4.2") 125 (version "2.4.3")
126 (source 126 (source
127 (origin 127 (origin
128 (method url-fetch) 128 (method url-fetch)
@@ -130,11 +130,11 @@ generation.")
130 version ".tar.bz2")) 130 version ".tar.bz2"))
131 (sha256 131 (sha256
132 (base32 132 (base32
133 "086bbcdnvs48qq5g4iac7dpk76j0q3jrp16mchdvyx0b720xq1mv")))) 133 "0w9bmasln4z8mn16s1is55a06w3nv8jbyal496z5jvr5vcxkm112"))))
134 (build-system gnu-build-system) 134 (build-system gnu-build-system)
135 (propagated-inputs 135 (propagated-inputs
136 `(("libgpg-error" ,libgpg-error) ("pth" ,pth))) 136 `(("libgpg-error" ,libgpg-error) ("pth" ,pth)))
137 (home-page "http://gnupg.org") 137 (home-page "https://gnupg.org")
138 (synopsis 138 (synopsis
139 "IPC library used by GnuPG and related software") 139 "IPC library used by GnuPG and related software")
140 (description 140 (description
@@ -171,7 +171,7 @@ provided.")
171 '()) 171 '())
172 (string-append "--with-gpg-error-prefix=" 172 (string-append "--with-gpg-error-prefix="
173 (assoc-ref %build-inputs "libgpg-error"))))) 173 (assoc-ref %build-inputs "libgpg-error")))))
174 (home-page "http://www.gnupg.org") 174 (home-page "https://www.gnupg.org")
175 (synopsis "CMS and X.509 access library") 175 (synopsis "CMS and X.509 access library")
176 (description 176 (description
177 "KSBA (pronounced Kasbah) is a library to make X.509 certificates 177 "KSBA (pronounced Kasbah) is a library to make X.509 certificates
@@ -195,7 +195,7 @@ specifications are building blocks of S/MIME and TLS.")
195 (base32 195 (base32
196 "12n0nvhw4fzwp0k7gjv3rc6pdml0qiinbbfiz4ilg6pl5kdxvnvd")))) 196 "12n0nvhw4fzwp0k7gjv3rc6pdml0qiinbbfiz4ilg6pl5kdxvnvd"))))
197 (build-system gnu-build-system) 197 (build-system gnu-build-system)
198 (home-page "http://www.gnupg.org") 198 (home-page "https://www.gnupg.org")
199 (synopsis "Non-preemptive thread library") 199 (synopsis "Non-preemptive thread library")
200 (description 200 (description
201 "Npth is a library to provide the GNU Pth API and thus a non-preemptive 201 "Npth is a library to provide the GNU Pth API and thus a non-preemptive
@@ -242,7 +242,7 @@ compatible to GNU Pth.")
242 (substitute* "tests/openpgp/defs.inc" 242 (substitute* "tests/openpgp/defs.inc"
243 (("/bin/pwd") (which "pwd")))) 243 (("/bin/pwd") (which "pwd"))))
244 %standard-phases))) 244 %standard-phases)))
245 (home-page "http://gnupg.org/") 245 (home-page "https://gnupg.org/")
246 (synopsis "GNU Privacy Guard") 246 (synopsis "GNU Privacy Guard")
247 (description 247 (description
248 "The GNU Privacy Guard is a complete implementation of the OpenPGP 248 "The GNU Privacy Guard is a complete implementation of the OpenPGP
@@ -332,7 +332,7 @@ libskba (working with X.509 certificates and CMS data).")
332 `(("gnupg" ,gnupg-2.0) 332 `(("gnupg" ,gnupg-2.0)
333 ("libassuan" ,libassuan))) 333 ("libassuan" ,libassuan)))
334 (arguments '(#:make-flags '("GPG=gpg2"))) 334 (arguments '(#:make-flags '("GPG=gpg2")))
335 (home-page "http://www.gnupg.org/related_software/gpgme/") 335 (home-page "https://www.gnupg.org/related_software/gpgme/")
336 (synopsis "Library providing simplified access to GnuPG functionality") 336 (synopsis "Library providing simplified access to GnuPG functionality")
337 (description 337 (description
338 "GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG 338 "GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG
@@ -418,7 +418,7 @@ decrypt messages using the OpenPGP format by making use of GPGME.")
418 "test_gnupg.py" "--no-doctests"))))))) 418 "test_gnupg.py" "--no-doctests")))))))
419 (native-inputs 419 (native-inputs
420 `(("gnupg" ,gnupg-1))) 420 `(("gnupg" ,gnupg-1)))
421 (home-page "http://packages.python.org/python-gnupg/index.html") 421 (home-page "https://packages.python.org/python-gnupg/index.html")
422 (synopsis "Wrapper for the GNU Privacy Guard") 422 (synopsis "Wrapper for the GNU Privacy Guard")
423 (description 423 (description
424 "This module allows easy access to GnuPG’s key management, encryption 424 "This module allows easy access to GnuPG’s key management, encryption
@@ -466,7 +466,7 @@ to the process.
466pius-keyring-mgr and pius-party-worksheet help organisers of 466pius-keyring-mgr and pius-party-worksheet help organisers of
467PGP keysigning parties.") 467PGP keysigning parties.")
468 (license license:gpl2) 468 (license license:gpl2)
469 (home-page "http://www.phildev.net/pius/index.shtml"))) 469 (home-page "https://www.phildev.net/pius/index.shtml")))
470 470
471(define-public signing-party 471(define-public signing-party
472 (package 472 (package
@@ -566,7 +566,7 @@ including tools for signing keys, keyring analysis, and party preparation.
566 ;; and caff and gpgsigs: bsd-3, see 566 ;; and caff and gpgsigs: bsd-3, see
567 ;; http://packages.debian.org/changelogs/pool/main/s/signing-party/current/copyright 567 ;; http://packages.debian.org/changelogs/pool/main/s/signing-party/current/copyright
568 (license license:gpl2) 568 (license license:gpl2)
569 (home-page "http://pgp-tools.alioth.debian.org/"))) 569 (home-page "https://pgp-tools.alioth.debian.org/")))
570 570
571(define-public pinentry-tty 571(define-public pinentry-tty
572 (package 572 (package
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
new file mode 100644
index 00000000000..cc1b66f0ae9
--- /dev/null
+++ b/gnu/packages/golang.scm
@@ -0,0 +1,185 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
3;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
4;;; Copyright © 2016 Andy Wingo <wingo@igalia.com>
5;;;
6;;; This file is an addendum GNU Guix.
7;;;
8;;; GNU Guix is free software; you can redistribute it and/or modify it
9;;; under the terms of the GNU General Public License as published by
10;;; the Free Software Foundation; either version 3 of the License, or (at
11;;; your option) any later version.
12;;;
13;;; GNU Guix is distributed in the hope that it will be useful, but
14;;; WITHOUT ANY WARRANTY; without even the implied warranty of
15;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16;;; GNU General Public License for more details.
17;;;
18;;; You should have received a copy of the GNU General Public License
19;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
20
21(define-module (gnu packages golang)
22 #:use-module ((guix licenses) #:prefix license:)
23 #:use-module (guix utils)
24 #:use-module (guix download)
25 #:use-module (guix packages)
26 #:use-module (guix build-system gnu)
27 #:use-module (gnu packages admin)
28 #:use-module (gnu packages gcc)
29 #:use-module (gnu packages base)
30 #:use-module (gnu packages perl)
31 #:use-module (gnu packages pkg-config)
32 #:use-module (gnu packages pcre)
33 #:use-module (ice-9 match)
34 #:use-module (srfi srfi-1))
35
36;; According to https://golang.org/doc/install/gccgo, gccgo-4.8.2 includes a
37;; complete go-1.1.2 implementation, gccgo-4.9 includes a complete go-1.2
38;; implementation, and gccgo-5 a complete implementation of go-1.4. Ultimately
39;; we hope to build go-1.5+ with a bootstrap process using gccgo-5. As of
40;; go-1.5, go cannot be bootstrapped without go-1.4, so we need to use go-1.4 or
41;; gccgo-5. Mips is not officially supported, but it should work if it is
42;; bootstrapped.
43
44(define-public go-1.4
45 (package
46 (name "go")
47 (version "1.4.3")
48 (source (origin
49 (method url-fetch)
50 (uri (string-append "https://storage.googleapis.com/golang/"
51 name version ".src.tar.gz"))
52 (sha256
53 (base32
54 "0na9yqilzpvq0bjndbibfp07wr796gf252y471cip10bbdqgqiwr"))))
55 (build-system gnu-build-system)
56 (outputs '("out"
57 "doc"
58 "tests"))
59 (arguments
60 `(#:modules ((ice-9 match)
61 (guix build gnu-build-system)
62 (guix build utils))
63 #:tests? #f ; Tests are run by the all.bash script.
64 #:phases
65 (modify-phases %standard-phases
66 (delete 'configure)
67 (add-after 'patch-generated-file-shebangs 'chdir
68 (lambda _
69 (chdir "src")))
70 (add-before 'build 'prebuild
71 (lambda* (#:key inputs outputs #:allow-other-keys)
72 (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
73 (ld (string-append (assoc-ref inputs "libc") "/lib"))
74 (loader (car (find-files ld "^ld-linux.+")))
75 (net-base (assoc-ref inputs "net-base"))
76 (tzdata-path
77 (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo"))
78 (output (assoc-ref outputs "out")))
79
80 ;; Removing net/ tests, which fail when attempting to access
81 ;; network resources not present in the build container.
82 (for-each delete-file
83 '("net/multicast_test.go" "net/parse_test.go"
84 "net/port_test.go"))
85
86 ;; Add libgcc to the RUNPATH.
87 (substitute* "cmd/go/build.go"
88 (("cgoldflags := \\[\\]string\\{\\}")
89 (string-append "cgoldflags := []string{"
90 "\"-rpath=" gcclib "\"}"))
91 (("ldflags := buildLdflags")
92 (string-append
93 "ldflags := buildLdflags\n"
94 "ldflags = append(ldflags, \"-r\")\n"
95 "ldflags = append(ldflags, \"" gcclib "\")\n")))
96
97 (substitute* "os/os_test.go"
98 (("/usr/bin") (getcwd))
99 (("/bin/pwd") (which "pwd")))
100
101 ;; Disable failing tests: these tests attempt to access
102 ;; commands or network resources which are neither available or
103 ;; necessary for the build to succeed.
104 (for-each
105 (match-lambda
106 ((file regex)
107 (substitute* file
108 ((regex all before test_name)
109 (string-append before "Disabled" test_name)))))
110 '(("net/net_test.go" "(.+)(TestShutdownUnix.+)")
111 ("net/dial_test.go" "(.+)(TestDialTimeout.+)")
112 ("os/os_test.go" "(.+)(TestHostname.+)")
113 ("time/format_test.go" "(.+)(TestParseInSydney.+)")
114 ("os/exec/exec_test.go" "(.+)(TestEcho.+)")
115 ("os/exec/exec_test.go" "(.+)(TestCommandRelativeName.+)")
116 ("os/exec/exec_test.go" "(.+)(TestCatStdin.+)")
117 ("os/exec/exec_test.go" "(.+)(TestCatGoodAndBadFile.+)")
118 ("os/exec/exec_test.go" "(.+)(TestExitStatus.+)")
119 ("os/exec/exec_test.go" "(.+)(TestPipes.+)")
120 ("os/exec/exec_test.go" "(.+)(TestStdinClose.+)")
121 ("syscall/syscall_unix_test.go" "(.+)(TestPassFD\\(.+)")
122 ("os/exec/exec_test.go" "(.+)(TestExtraFiles.+)")))
123
124 (substitute* "net/lookup_unix.go"
125 (("/etc/protocols") (string-append net-base "/etc/protocols")))
126 (substitute* "time/zoneinfo_unix.go"
127 (("/usr/share/zoneinfo/") tzdata-path))
128 (substitute* (find-files "cmd" "asm.c")
129 (("/lib/ld-linux.*\\.so\\.[0-9]") loader))
130 #t)))
131
132 (replace 'build
133 (lambda* (#:key inputs outputs #:allow-other-keys)
134 ;; FIXME: Some of the .a files are not bit-reproducible.
135 (let* ((output (assoc-ref outputs "out")))
136 (setenv "CC" (which "gcc"))
137 (setenv "GOOS" "linux")
138 (setenv "GOROOT" (dirname (getcwd)))
139 (setenv "GOROOT_FINAL" output)
140 (setenv "CGO_ENABLED" "1")
141 (zero? (system* "sh" "all.bash")))))
142
143 (replace 'install
144 (lambda* (#:key outputs inputs #:allow-other-keys)
145 (let* ((output (assoc-ref outputs "out"))
146 (doc_out (assoc-ref outputs "doc"))
147 (bash (string-append (assoc-ref inputs "bash") "bin/bash"))
148 (docs (string-append doc_out "/share/doc/" ,name "-" ,version))
149 (tests (string-append
150 (assoc-ref outputs "tests") "/share/" ,name "-" ,version)))
151 (mkdir-p tests)
152 (copy-recursively "../test" (string-append tests "/test"))
153 (delete-file-recursively "../test")
154 (mkdir-p docs)
155 (copy-recursively "../api" (string-append docs "/api"))
156 (delete-file-recursively "../api")
157 (copy-recursively "../doc" (string-append docs "/doc"))
158 (delete-file-recursively "../doc")
159
160 (for-each (lambda (file)
161 (let ((file (string-append "../" file)))
162 (install-file file docs)
163 (delete-file file)))
164 '("README" "CONTRIBUTORS" "AUTHORS" "PATENTS"
165 "LICENSE" "VERSION" "robots.txt"))
166 (copy-recursively "../" output)
167 #t))))))
168 (inputs
169 `(("tzdata" ,tzdata)
170 ("pcre" ,pcre)
171 ("gcc:lib" ,gcc "lib")))
172 (native-inputs
173 `(("pkg-config" ,%pkg-config)
174 ("which" ,which)
175 ("net-base" ,net-base)
176 ("perl" ,perl)))
177
178 (home-page "https://golang.org/")
179 (synopsis "Compiler and libraries for Go, a statically-typed language")
180 (description "Go, also commonly referred to as golang, is an imperative
181programming language. Designed primarily for systems programming, it is a
182compiled, statically typed language in the tradition of C and C++, with
183garbage collection, various safety features and in the style of communicating
184sequential processes (CSP) concurrent programming features added.")
185 (license license:bsd-3)))
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index ca99cd0302d..f6298ce394f 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -3,6 +3,7 @@
3;;; Copyright © 2015 Tomáš Čech <sleep_walker@gnu.org> 3;;; Copyright © 2015 Tomáš Čech <sleep_walker@gnu.org>
4;;; Copyright © 2016 Leo Famulari <leo@famulari.name> 4;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
5;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> 5;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
6;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
6;;; 7;;;
7;;; This file is part of GNU Guix. 8;;; This file is part of GNU Guix.
8;;; 9;;;
@@ -139,15 +140,15 @@ application can be customized via its API for Python scripting.")
139(define-public cgal 140(define-public cgal
140 (package 141 (package
141 (name "cgal") 142 (name "cgal")
142 (version "4.6.3") 143 (version "4.8.1")
143 (source (origin 144 (source (origin
144 (method url-fetch) 145 (method url-fetch)
145 (uri (string-append 146 (uri (string-append
146 "http://gforge.inria.fr/frs/download.php/file/" 147 "https://github.com/CGAL/cgal/releases/download/releases/"
147 "35139/CGAL-4.6.3.tar.xz")) 148 "CGAL-" version "/CGAL-" version ".tar.xz"))
148 (sha256 149 (sha256
149 (base32 150 (base32
150 "08gwjjh0qz3fakj1y2nsl2qvb0qv5lc7k1pxwjkagh37hxxh4f73")))) 151 "1c41yzl2jg3d6zx5k0iccwqwibp950q7dr7z7pp4xi9wlph3c87s"))))
151 (build-system cmake-build-system) 152 (build-system cmake-build-system)
152 (arguments 153 (arguments
153 '(;; "RelWithDebInfo" is not supported. 154 '(;; "RelWithDebInfo" is not supported.
@@ -211,9 +212,17 @@ exception-handling library.")
211 "0ca2j526n4wlamrxb85y2jrgcv0gf21b3a19rr0gh4rjqkv1581n")) 212 "0ca2j526n4wlamrxb85y2jrgcv0gf21b3a19rr0gh4rjqkv1581n"))
212 (modules '((guix build utils))) 213 (modules '((guix build utils)))
213 (snippet 214 (snippet
214 '(substitute* (find-files "." "tmpDir\\.h") 215 '(begin
215 (("\"/var/tmp/\"") 216 (substitute* (find-files "." "tmpDir\\.h")
216 "\"/tmp/\""))) 217 (("\"/var/tmp/\"")
218 "\"/tmp/\""))
219
220 ;; Install 'ImfStdIO.h'. Reported at
221 ;; <https://lists.nongnu.org/archive/html/openexr-devel/2016-06/msg00001.html>
222 ;; and <https://github.com/openexr/openexr/pull/184>.
223 (substitute* "IlmImf/Makefile.in"
224 (("ImfIO\\.h")
225 "ImfIO.h ImfStdIO.h"))))
217 (patches (search-patches "openexr-missing-samples.patch")))) 226 (patches (search-patches "openexr-missing-samples.patch"))))
218 (build-system gnu-build-system) 227 (build-system gnu-build-system)
219 (arguments 228 (arguments
@@ -246,7 +255,7 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.")
246(define-public openimageio 255(define-public openimageio
247 (package 256 (package
248 (name "openimageio") 257 (name "openimageio")
249 (version "1.5.18") 258 (version "1.6.15")
250 (source (origin 259 (source (origin
251 (method url-fetch) 260 (method url-fetch)
252 (uri (string-append "https://github.com/OpenImageIO/oiio/" 261 (uri (string-append "https://github.com/OpenImageIO/oiio/"
@@ -254,8 +263,7 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.")
254 (file-name (string-append name "-" version ".tar.gz")) 263 (file-name (string-append name "-" version ".tar.gz"))
255 (sha256 264 (sha256
256 (base32 265 (base32
257 "0mn7cz19mn8dcrhkq15h25gl20ammr1wz0j2j3c2vxs6ph7zn8jy")) 266 "144crq0205d0w5aq4iglh2rhzf54a8rv3pksy6d533b75w5d7rq7"))))
258 (patches (search-patches "openimageio-boost-1.60.patch"))))
259 (build-system cmake-build-system) 267 (build-system cmake-build-system)
260 ;; FIXME: To run all tests successfully, test image sets from multiple 268 ;; FIXME: To run all tests successfully, test image sets from multiple
261 ;; third party sources have to be present. For details see 269 ;; third party sources have to be present. For details see
diff --git a/gnu/packages/grub.scm b/gnu/packages/grub.scm
index 31b270c0d8a..01f2a8454dd 100644
--- a/gnu/packages/grub.scm
+++ b/gnu/packages/grub.scm
@@ -2,6 +2,7 @@
2;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> 3;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
4;;; Copyright © 2015 Leo Famulari <leo@famulari.name> 4;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
5;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
5;;; 6;;;
6;;; This file is part of GNU Guix. 7;;; This file is part of GNU Guix.
7;;; 8;;;
@@ -76,20 +77,21 @@
76(define-public grub 77(define-public grub
77 (package 78 (package
78 (name "grub") 79 (name "grub")
79 (version "2.00") 80 (version "2.02beta3")
80 (source (origin 81 (source (origin
81 (method url-fetch) 82 (method url-fetch)
82 (uri (string-append "mirror://gnu/grub/grub-" 83 (uri (string-append
83 version ".tar.xz")) 84 "ftp://alpha.gnu.org/gnu/grub/grub-"
85 "2.02~beta3"
86 ".tar.xz"))
87 (file-name (string-append name "-" version ".tar.xz"))
84 (sha256 88 (sha256
85 (base32 89 (base32
86 "0n64hpmsccvicagvr0c6v0kgp2yw0kgnd3jvsyd26cnwgs7c6kkq")) 90 "18ddwnw0vxs7zigvah0g6a5z5vvlz0p8fjglxv1h59sjbrakvv1h"))))
87 (patches (search-patches "grub-gets-undeclared.patch"
88 "grub-freetype.patch"
89 "grub-CVE-2015-8370.patch"))))
90 (build-system gnu-build-system) 91 (build-system gnu-build-system)
91 (arguments 92 (arguments
92 '(#:configure-flags '("--disable-werror") 93 '(;; Two warnings: suggest braces, signed/unsigned comparison.
94 #:configure-flags '("--disable-werror")
93 #:phases (modify-phases %standard-phases 95 #:phases (modify-phases %standard-phases
94 (add-after 96 (add-after
95 'unpack 'patch-stuff 97 'unpack 'patch-stuff
@@ -100,6 +102,13 @@
100 ;; Make the font visible. 102 ;; Make the font visible.
101 (copy-file (assoc-ref inputs "unifont") "unifont.bdf.gz") 103 (copy-file (assoc-ref inputs "unifont") "unifont.bdf.gz")
102 (system* "gunzip" "unifont.bdf.gz") 104 (system* "gunzip" "unifont.bdf.gz")
105
106 ;; We hit an assertion failure in
107 ;; grub-core/tests/video_checksum.c, as reported at
108 ;; <https://lists.gnu.org/archive/html/grub-devel/2016-07/msg00026.html>.
109 ;; Disable this test for now.
110 (substitute* "tests/grub_func_test.in"
111 (("set -e") "exit 77\nset -e"))
103 #t))))) 112 #t)))))
104 (inputs 113 (inputs
105 `(;; ("lvm2" ,lvm2) 114 `(;; ("lvm2" ,lvm2)
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index f9e677bca48..a39a3b434db 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -97,7 +97,7 @@ arrays of data.")
97(define-public gstreamer 97(define-public gstreamer
98 (package 98 (package
99 (name "gstreamer") 99 (name "gstreamer")
100 (version "1.8.0") 100 (version "1.8.2")
101 (source 101 (source
102 (origin 102 (origin
103 (method url-fetch) 103 (method url-fetch)
@@ -106,7 +106,7 @@ arrays of data.")
106 version ".tar.xz")) 106 version ".tar.xz"))
107 (sha256 107 (sha256
108 (base32 108 (base32
109 "1p5y9bbrhywng0prmpxv29p6jsz6vd039d49bnc98p9b45532yll")))) 109 "0hc3j684nx209p10ampvnkza3gna2yiryr7jyx701ciakh3vxglx"))))
110 (build-system gnu-build-system) 110 (build-system gnu-build-system)
111 (outputs '("out" "doc")) 111 (outputs '("out" "doc"))
112 (arguments 112 (arguments
@@ -145,7 +145,7 @@ This package provides the core library and elements.")
145(define-public gst-plugins-base 145(define-public gst-plugins-base
146 (package 146 (package
147 (name "gst-plugins-base") 147 (name "gst-plugins-base")
148 (version "1.8.0") 148 (version "1.8.2")
149 (source 149 (source
150 (origin 150 (origin
151 (method url-fetch) 151 (method url-fetch)
@@ -153,7 +153,7 @@ This package provides the core library and elements.")
153 name "-" version ".tar.xz")) 153 name "-" version ".tar.xz"))
154 (sha256 154 (sha256
155 (base32 155 (base32
156 "08hmg7fp519wim1fm04r7f2q2020ssdninawqsbrqjsvs70srh5b")))) 156 "13fk751vvfrfhbm4ip28vxyvlsm4b4y0bc0pvf7fqp8azg40jwcx"))))
157 (build-system gnu-build-system) 157 (build-system gnu-build-system)
158 (outputs '("out" "doc")) 158 (outputs '("out" "doc"))
159 (propagated-inputs 159 (propagated-inputs
@@ -198,7 +198,7 @@ for the GStreamer multimedia library.")
198(define-public gst-plugins-good 198(define-public gst-plugins-good
199 (package 199 (package
200 (name "gst-plugins-good") 200 (name "gst-plugins-good")
201 (version "1.8.0") 201 (version "1.8.2")
202 (source 202 (source
203 (origin 203 (origin
204 (method url-fetch) 204 (method url-fetch)
@@ -207,7 +207,7 @@ for the GStreamer multimedia library.")
207 name "-" version ".tar.xz")) 207 name "-" version ".tar.xz"))
208 (sha256 208 (sha256
209 (base32 209 (base32
210 "0kczdvqxvl8kxiy2d7czv16jp73hv9k3nykh47ckihnv8x6i6362")))) 210 "0i1rlbbx3m6ykvcdyaidsd8wa2b7nq2qmcvbrsg00yivi88ljxcd"))))
211 (build-system gnu-build-system) 211 (build-system gnu-build-system)
212 (inputs 212 (inputs
213 `(("aalib" ,aalib) 213 `(("aalib" ,aalib)
@@ -336,7 +336,7 @@ par compared to the rest.")
336(define-public gst-plugins-ugly 336(define-public gst-plugins-ugly
337 (package 337 (package
338 (name "gst-plugins-ugly") 338 (name "gst-plugins-ugly")
339 (version "1.8.0") 339 (version "1.8.2")
340 (source 340 (source
341 (origin 341 (origin
342 (method url-fetch) 342 (method url-fetch)
@@ -344,7 +344,7 @@ par compared to the rest.")
344 name "/" name "-" version ".tar.xz")) 344 name "/" name "-" version ".tar.xz"))
345 (sha256 345 (sha256
346 (base32 346 (base32
347 "137b6kqykh5nwbmiv28nn1pc1d2x2rb2xxg382pc9pa9gpxpyrak")))) 347 "1b58s7z430cbbaw8mgy87kslbpmj3xmm66wsr7bddhcgm6i36nww"))))
348 (build-system gnu-build-system) 348 (build-system gnu-build-system)
349 (inputs 349 (inputs
350 `(("gst-plugins-base" ,gst-plugins-base) 350 `(("gst-plugins-base" ,gst-plugins-base)
@@ -374,7 +374,7 @@ distribution problems in some jurisdictions, e.g. due to patent threats.")
374(define-public gst-libav 374(define-public gst-libav
375 (package 375 (package
376 (name "gst-libav") 376 (name "gst-libav")
377 (version "1.8.0") 377 (version "1.8.2")
378 (source (origin 378 (source (origin
379 (method url-fetch) 379 (method url-fetch)
380 (uri (string-append 380 (uri (string-append
@@ -382,7 +382,7 @@ distribution problems in some jurisdictions, e.g. due to patent threats.")
382 name "-" version ".tar.xz")) 382 name "-" version ".tar.xz"))
383 (sha256 383 (sha256
384 (base32 384 (base32
385 "0719njp8aarhvn038pijq6dmsnli0zlg146hyfs3rsdffs4f472s")))) 385 "0yk8pxg3xi26ndj7pliqdfphy0jmqsq4dmdzy31gbd9rgficgwxm"))))
386 (build-system gnu-build-system) 386 (build-system gnu-build-system)
387 (arguments 387 (arguments
388 '(#:configure-flags '("--with-system-libav") 388 '(#:configure-flags '("--with-system-libav")
@@ -411,7 +411,7 @@ compression formats through the use of the libav library.")
411(define-public python-gst 411(define-public python-gst
412 (package 412 (package
413 (name "python-gst") 413 (name "python-gst")
414 (version "1.8.0") 414 (version "1.8.2")
415 (source (origin 415 (source (origin
416 (method url-fetch) 416 (method url-fetch)
417 (uri (string-append 417 (uri (string-append
@@ -419,7 +419,7 @@ compression formats through the use of the libav library.")
419 "gst-python-" version ".tar.xz")) 419 "gst-python-" version ".tar.xz"))
420 (sha256 420 (sha256
421 (base32 421 (base32
422 "1spn49x7yaj69df6mxh9wwcs0y3abswkfpk84njs71lzqlbzyiff")))) 422 "15sdfa6lq5pswvi09vk51cs30yf8wr2rlm9myhb4q0c2jhiial2g"))))
423 (build-system gnu-build-system) 423 (build-system gnu-build-system)
424 (arguments 424 (arguments
425 ;; XXX: Factorize python-sitedir with python-build-system. 425 ;; XXX: Factorize python-sitedir with python-build-system.
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
index 4497150db75..038ca00c792 100644
--- a/gnu/packages/imagemagick.scm
+++ b/gnu/packages/imagemagick.scm
@@ -41,14 +41,14 @@
41(define-public imagemagick 41(define-public imagemagick
42 (package 42 (package
43 (name "imagemagick") 43 (name "imagemagick")
44 (version "6.9.4-10") 44 (version "6.9.5-0")
45 (source (origin 45 (source (origin
46 (method url-fetch) 46 (method url-fetch)
47 (uri (string-append "mirror://imagemagick/ImageMagick-" 47 (uri (string-append "mirror://imagemagick/ImageMagick-"
48 version ".tar.xz")) 48 version ".tar.xz"))
49 (sha256 49 (sha256
50 (base32 50 (base32
51 "0bbac9zdjl2g8x127jx5jisih9r49980w7ar6m8xj3nyh3m83jd2")))) 51 "1d1hmmnks071zfkpv971b3q56qlml0wv1xlw8yvq6cnybc2cwc3q"))))
52 (build-system gnu-build-system) 52 (build-system gnu-build-system)
53 (arguments 53 (arguments
54 `(#:configure-flags '("--with-frozenpaths") 54 `(#:configure-flags '("--with-frozenpaths")
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index def16c939c7..03f014aa4e2 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -72,14 +72,16 @@
72 "-DUSE_QT5=ON" ; default is qt4 72 "-DUSE_QT5=ON" ; default is qt4
73 "-DWITH_KDE=OFF" ; no to integration 73 "-DWITH_KDE=OFF" ; no to integration
74 "-DWITH_OXYGEN=ON" ; on=embed icons 74 "-DWITH_OXYGEN=ON" ; on=embed icons
75 "-DWITH_WEBKIT=ON") ; wants qtwebkit, in qt5 75 "-DWITH_WEBKIT=OFF") ; qtwebkit isn't packaged
76 #:tests? #f)) ; no test target 76 #:tests? #f)) ; no test target
77 (native-inputs `(("pkg-config" ,pkg-config))) 77 (native-inputs `(("pkg-config" ,pkg-config)))
78 (inputs 78 (inputs
79 `(("extra-cmake-modules" ,extra-cmake-modules) 79 `(("extra-cmake-modules" ,extra-cmake-modules)
80 ("oxygen-icons" ,oxygen-icons) 80 ("oxygen-icons" ,oxygen-icons)
81 ("qca" ,qca) 81 ("qca" ,qca)
82 ("qt", qt) 82 ("qtbase", qtbase)
83 ("qttools" ,qttools)
84 ("qtscript" ,qtscript)
83 ("snorenotify" ,snorenotify) 85 ("snorenotify" ,snorenotify)
84 ("zlib" ,zlib))) 86 ("zlib" ,zlib)))
85 (home-page "http://quassel-irc.org/") 87 (home-page "http://quassel-irc.org/")
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 1cda5d89c8c..e3cefb43307 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -1,5 +1,6 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> 2;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
3;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
3;;; 4;;;
4;;; This file is part of GNU Guix. 5;;; This file is part of GNU Guix.
5;;; 6;;;
@@ -26,6 +27,7 @@
26 #:use-module (gnu packages) 27 #:use-module (gnu packages)
27 #:use-module (gnu packages algebra) 28 #:use-module (gnu packages algebra)
28 #:use-module (gnu packages base) 29 #:use-module (gnu packages base)
30 #:use-module (gnu packages compression)
29 #:use-module (gnu packages elf) 31 #:use-module (gnu packages elf)
30 #:use-module (gnu packages gcc) 32 #:use-module (gnu packages gcc)
31 #:use-module (gnu packages llvm) 33 #:use-module (gnu packages llvm)
@@ -262,6 +264,7 @@
262 ("mpfr" ,mpfr) 264 ("mpfr" ,mpfr)
263 ("wget" ,wget) 265 ("wget" ,wget)
264 ("which" ,which) 266 ("which" ,which)
267 ("zlib" ,zlib)
265 ("gmp" ,gmp) 268 ("gmp" ,gmp)
266 ;; FIXME: The following inputs are downloaded from upstream to allow us 269 ;; FIXME: The following inputs are downloaded from upstream to allow us
267 ;; to use the lightweight Julia release tarball. Ideally, these inputs 270 ;; to use the lightweight Julia release tarball. Ideally, these inputs
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index b74a6051ea0..34a5046d20f 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -44,7 +44,7 @@
44 `(("pkg-config" ,pkg-config))) 44 `(("pkg-config" ,pkg-config)))
45 (inputs 45 (inputs
46 `(("openssl" ,openssl) 46 `(("openssl" ,openssl)
47 ("qt" ,qt))) 47 ("qtbase" ,qtbase)))
48 (home-page "http://delta.affinix.com/qca/") 48 (home-page "http://delta.affinix.com/qca/")
49 (synopsis "Libraries for the Qt Cryptographic Architecture") 49 (synopsis "Libraries for the Qt Cryptographic Architecture")
50 (description "The Qt Cryptographic Architecture (QCA) provides a 50 (description "The Qt Cryptographic Architecture (QCA) provides a
@@ -70,7 +70,8 @@ cards.")
70 `(#:tests? #f)) ; both tests fail, require display 70 `(#:tests? #f)) ; both tests fail, require display
71 (inputs 71 (inputs
72 `(("extra-cmake-modules" ,extra-cmake-modules) 72 `(("extra-cmake-modules" ,extra-cmake-modules)
73 ("qt" ,qt))) 73 ("qtbase" ,qtbase)
74 ("qttools" ,qttools)))
74 (home-page "https://techbase.kde.org/Projects/Snorenotify") 75 (home-page "https://techbase.kde.org/Projects/Snorenotify")
75 (synopsis "Qt notification framework") 76 (synopsis "Qt notification framework")
76 (description "Snorenotify is a multi platform Qt notification framework. 77 (description "Snorenotify is a multi platform Qt notification framework.
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index 60a6d7df736..18606f96a11 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -94,14 +94,14 @@ their dependencies automatically upon calculation.")
94(define-public orcus 94(define-public orcus
95 (package 95 (package
96 (name "orcus") 96 (name "orcus")
97 (version "0.7.1") 97 (version "0.9.2")
98 (source 98 (source
99 (origin 99 (origin
100 (method url-fetch) 100 (method url-fetch)
101 (uri (string-append "http://kohei.us/files/" name "/src/lib" 101 (uri (string-append "http://kohei.us/files/" name "/src/lib"
102 name "-" version ".tar.xz")) 102 name "-" version ".tar.xz"))
103 (sha256 (base32 103 (sha256 (base32
104 "0hva4qalg3dk6n1118ncr5fy8cqnj2f7fwldw7aa04124rj6p104")))) 104 "170racjz7s7yxza722hxsqc12788w57qnp6x6j2692pzp3qzjjfx"))))
105 (build-system gnu-build-system) 105 (build-system gnu-build-system)
106 (native-inputs 106 (native-inputs
107 `(("pkg-config" ,pkg-config))) 107 `(("pkg-config" ,pkg-config)))
@@ -709,7 +709,7 @@ and to return information on pronunciations, meanings and synonyms.")
709(define-public libreoffice 709(define-public libreoffice
710 (package 710 (package
711 (name "libreoffice") 711 (name "libreoffice")
712 (version "5.0.5.2") 712 (version "5.1.4.2")
713 (source 713 (source
714 (origin 714 (origin
715 (method url-fetch) 715 (method url-fetch)
@@ -718,7 +718,7 @@ and to return information on pronunciations, meanings and synonyms.")
718 "http://download.documentfoundation.org/libreoffice/src/" 718 "http://download.documentfoundation.org/libreoffice/src/"
719 (version-prefix version 3) "/libreoffice-" version ".tar.xz")) 719 (version-prefix version 3) "/libreoffice-" version ".tar.xz"))
720 (sha256 (base32 720 (sha256 (base32
721 "120vcxpxzs0za76fyfry281ysv6d1ianb37d1yq8py8chkdjkrqy")))) 721 "11c30y9gvsy5h3nh9pnciq57gi99plrmr6qp8hhdk2l5xmwlmrfa"))))
722 (build-system gnu-build-system) 722 (build-system gnu-build-system)
723 (native-inputs 723 (native-inputs
724 `(;; autoreconf is run by the LibreOffice build system, since after 724 `(;; autoreconf is run by the LibreOffice build system, since after
@@ -730,7 +730,7 @@ and to return information on pronunciations, meanings and synonyms.")
730 ("cppunit" ,cppunit) 730 ("cppunit" ,cppunit)
731 ("flex" ,flex) 731 ("flex" ,flex)
732 ("pkg-config" ,pkg-config) 732 ("pkg-config" ,pkg-config)
733 ("python" ,python) 733 ("python" ,python-wrapper)
734 ("which" ,which))) 734 ("which" ,which)))
735 (inputs 735 (inputs
736 `(("bluez" ,bluez) 736 `(("bluez" ,bluez)
@@ -851,6 +851,8 @@ and to return information on pronunciations, meanings and synonyms.")
851 "--disable-coinmp" 851 "--disable-coinmp"
852 "--disable-firebird-sdbc" ; embedded firebird 852 "--disable-firebird-sdbc" ; embedded firebird
853 "--disable-gltf" 853 "--disable-gltf"
854 "--without-doxygen"
855 "--disable-gtk3"
854 "--disable-liblangtag"))) 856 "--disable-liblangtag")))
855 (home-page "https://www.libreoffice.org/") 857 (home-page "https://www.libreoffice.org/")
856 (synopsis "Office suite") 858 (synopsis "Office suite")
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index 1e72442c734..1f659c7594f 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -92,14 +92,14 @@ version of libusb to run with newer libusb.")
92(define-public python-pyusb 92(define-public python-pyusb
93 (package 93 (package
94 (name "python-pyusb") 94 (name "python-pyusb")
95 (version "1.0.0rc1") 95 (version "1.0.0")
96 (source 96 (source
97 (origin 97 (origin
98 (method url-fetch) 98 (method url-fetch)
99 (uri (pypi-uri "pyusb" version)) 99 (uri (pypi-uri "PyUSB" version))
100 (sha256 100 (sha256
101 (base32 101 (base32
102 "07cjq11qhngzjd746k7688s6y2x7lpj669fxqfsiy985rg0jsn7j")))) 102 "0s2k4z06fapd5vp1gnrlf8a9sjpc03p9974lzw5k6ky39akzyd2v"))))
103 (build-system python-build-system) 103 (build-system python-build-system)
104 (arguments 104 (arguments
105 `(#:tests? #f ;no tests 105 `(#:tests? #f ;no tests
@@ -135,15 +135,14 @@ version of libusb to run with newer libusb.")
135(define-public libmtp 135(define-public libmtp
136 (package 136 (package
137 (name "libmtp") 137 (name "libmtp")
138 (version "1.1.9") 138 (version "1.1.11")
139 (source (origin 139 (source (origin
140 (method url-fetch) 140 (method url-fetch)
141 (uri (string-append "mirror://sourceforge/libmtp/" version 141 (uri (string-append "mirror://sourceforge/libmtp/" version
142 "/libmtp-" version ".tar.gz")) 142 "/libmtp-" version ".tar.gz"))
143 (sha256 143 (sha256
144 (base32 144 (base32
145 "12dinqic0ljnhrwx3rc61jc7q24ybr0mckc2ya5kh1s1np0d7w93")) 145 "1sc768q2cixwanlwrz95mp389iaadl4s95486caavxx4g7znvn8m"))))
146 (patches (search-patches "libmtp-devices.patch"))))
147 (build-system gnu-build-system) 146 (build-system gnu-build-system)
148 (native-inputs 147 (native-inputs
149 `(("pkg-config" ,pkg-config))) 148 `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index bfb6580cbfc..5ce6007b40d 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -7,12 +7,13 @@
7;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> 7;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
8;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> 8;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
9;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org> 9;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
10;;; Copyright © 2016 Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com> 10;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
11;;; Copyright © 2016 Alex Kost <alezost@gmail.com> 11;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
12;;; Copyright © 2016 Raymond Nicholson <rain1@openmailbox.org> 12;;; Copyright © 2016 Raymond Nicholson <rain1@openmailbox.org>
13;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> 13;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
14;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr> 14;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr>
15;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> 15;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
16;;; Copyright © 2016 David Craven <david@craven.ch>
16;;; 17;;;
17;;; This file is part of GNU Guix. 18;;; This file is part of GNU Guix.
18;;; 19;;;
@@ -30,49 +31,49 @@
30;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. 31;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
31 32
32(define-module (gnu packages linux) 33(define-module (gnu packages linux)
33 #:use-module ((guix licenses) #:prefix license:)
34 #:use-module (gnu packages) 34 #:use-module (gnu packages)
35 #:use-module (gnu packages admin)
36 #:use-module (gnu packages algebra)
37 #:use-module (gnu packages attr)
38 #:use-module (gnu packages autotools)
39 #:use-module (gnu packages base)
40 #:use-module (gnu packages bison)
41 #:use-module (gnu packages calendar)
42 #:use-module (gnu packages check)
35 #:use-module (gnu packages compression) 43 #:use-module (gnu packages compression)
36 #:use-module (gnu packages gcc) 44 #:use-module (gnu packages databases)
45 #:use-module (gnu packages docbook)
46 #:use-module (gnu packages documentation)
47 #:use-module (gnu packages elf)
37 #:use-module (gnu packages flex) 48 #:use-module (gnu packages flex)
38 #:use-module (gnu packages bison) 49 #:use-module (gnu packages freedesktop)
39 #:use-module (gnu packages admin) 50 #:use-module (gnu packages gcc)
51 #:use-module (gnu packages gettext)
52 #:use-module (gnu packages glib)
40 #:use-module (gnu packages gperf) 53 #:use-module (gnu packages gperf)
54 #:use-module (gnu packages gtk)
41 #:use-module (gnu packages libusb) 55 #:use-module (gnu packages libusb)
56 #:use-module (gnu packages maths)
42 #:use-module (gnu packages ncurses) 57 #:use-module (gnu packages ncurses)
43 #:use-module (gnu packages pciutils)
44 #:use-module (gnu packages databases)
45 #:use-module (gnu packages perl) 58 #:use-module (gnu packages perl)
59 #:use-module (gnu packages pciutils)
46 #:use-module (gnu packages pkg-config) 60 #:use-module (gnu packages pkg-config)
61 #:use-module (gnu packages pulseaudio)
47 #:use-module (gnu packages python) 62 #:use-module (gnu packages python)
63 #:use-module (gnu packages readline)
64 #:use-module (gnu packages rrdtool)
48 #:use-module (gnu packages slang) 65 #:use-module (gnu packages slang)
49 #:use-module (gnu packages algebra)
50 #:use-module (gnu packages gettext)
51 #:use-module (gnu packages glib)
52 #:use-module (gnu packages pulseaudio)
53 #:use-module (gnu packages attr)
54 #:use-module (gnu packages xml)
55 #:use-module (gnu packages autotools)
56 #:use-module (gnu packages texinfo) 66 #:use-module (gnu packages texinfo)
57 #:use-module (gnu packages check)
58 #:use-module (gnu packages maths)
59 #:use-module (gnu packages base)
60 #:use-module (gnu packages rrdtool)
61 #:use-module (gnu packages elf)
62 #:use-module (gnu packages gtk)
63 #:use-module (gnu packages docbook)
64 #:use-module (gnu packages documentation)
65 #:use-module (gnu packages readline)
66 #:use-module (gnu packages calendar)
67 #:use-module (gnu packages tls) 67 #:use-module (gnu packages tls)
68 #:use-module (gnu packages freedesktop) 68 #:use-module (gnu packages xml)
69 #:use-module (guix packages)
70 #:use-module (guix download)
71 #:use-module (guix utils)
72 #:use-module (guix build-system gnu)
73 #:use-module (guix build-system cmake) 69 #:use-module (guix build-system cmake)
70 #:use-module (guix build-system gnu)
74 #:use-module (guix build-system python) 71 #:use-module (guix build-system python)
75 #:use-module (guix build-system trivial) 72 #:use-module (guix build-system trivial)
73 #:use-module (guix download)
74 #:use-module ((guix licenses) #:prefix license:)
75 #:use-module (guix packages)
76 #:use-module (guix utils)
76 #:use-module (srfi srfi-1) 77 #:use-module (srfi srfi-1)
77 #:use-module (srfi srfi-2) 78 #:use-module (srfi srfi-2)
78 #:use-module (srfi srfi-26) 79 #:use-module (srfi srfi-26)
@@ -225,7 +226,7 @@ for SYSTEM and optionally VARIANT, or #f if there is no such configuration."
225 (search-path %load-path file))) 226 (search-path %load-path file)))
226 227
227(define-public linux-libre 228(define-public linux-libre
228 (let* ((version "4.6.3") 229 (let* ((version "4.6.4")
229 (build-phase 230 (build-phase
230 '(lambda* (#:key system inputs #:allow-other-keys #:rest args) 231 '(lambda* (#:key system inputs #:allow-other-keys #:rest args)
231 ;; Avoid introducing timestamps 232 ;; Avoid introducing timestamps
@@ -303,7 +304,7 @@ for SYSTEM and optionally VARIANT, or #f if there is no such configuration."
303 (uri (linux-libre-urls version)) 304 (uri (linux-libre-urls version))
304 (sha256 305 (sha256
305 (base32 306 (base32
306 "1ajhdk9jq0pfxlhvzwarbxc23418yqav1v0z0mnfs575y5lq2gmp")))) 307 "1294qw4agax0cnbhh0dk33jz358smhflllg77zv0rd8w9g433xiz"))))
307 (build-system gnu-build-system) 308 (build-system gnu-build-system)
308 (supported-systems '("x86_64-linux" "i686-linux")) 309 (supported-systems '("x86_64-linux" "i686-linux"))
309 (native-inputs `(("perl" ,perl) 310 (native-inputs `(("perl" ,perl)
@@ -340,13 +341,13 @@ It has been modified to remove all non-free binary blobs.")
340(define-public linux-libre-4.4 341(define-public linux-libre-4.4
341 (package 342 (package
342 (inherit linux-libre) 343 (inherit linux-libre)
343 (version "4.4.14") 344 (version "4.4.15")
344 (source (origin 345 (source (origin
345 (method url-fetch) 346 (method url-fetch)
346 (uri (linux-libre-urls version)) 347 (uri (linux-libre-urls version))
347 (sha256 348 (sha256
348 (base32 349 (base32
349 "1yfmzrjrkj8mn2dfd7p98w13afchrkpz26gwfcm2fhsmla16n1my")))) 350 "0n3lz4xnciif9v3y769q1pjs9321gvl6a2wr10r40sl1ixlk3ipz"))))
350 (native-inputs 351 (native-inputs
351 (let ((conf (kernel-config (or (%current-target-system) 352 (let ((conf (kernel-config (or (%current-target-system)
352 (%current-system)) 353 (%current-system))
@@ -1433,17 +1434,15 @@ UnionFS-FUSE additionally supports copy-on-write.")
1433(define-public sshfs-fuse 1434(define-public sshfs-fuse
1434 (package 1435 (package
1435 (name "sshfs-fuse") 1436 (name "sshfs-fuse")
1436 (version "2.5") 1437 (version "2.8")
1437 (source (origin 1438 (source (origin
1438 (method url-fetch) 1439 (method url-fetch)
1439 (uri (let ((version-with-underscores 1440 (uri (string-append "https://github.com/libfuse/sshfs/releases/"
1440 (string-join (string-split version #\.) "_"))) 1441 "download/sshfs_" version
1441 (string-append "https://github.com/libfuse/sshfs/releases/" 1442 "/sshfs-" version ".tar.gz"))
1442 "download/sshfs_" version-with-underscores
1443 "/sshfs-fuse-" version ".tar.gz")))
1444 (sha256 1443 (sha256
1445 (base32 1444 (base32
1446 "0gp6qr33l2p0964j0kds0dfmvyyf5lpgsn11daf0n5fhwm9185z9")))) 1445 "08mdd4rs7yys7hmyig6i08qlid76p17xlvrh64k7wsrfs1s92s3z"))))
1447 (build-system gnu-build-system) 1446 (build-system gnu-build-system)
1448 (inputs 1447 (inputs
1449 `(("fuse" ,fuse) 1448 `(("fuse" ,fuse)
@@ -1876,9 +1875,14 @@ country-specific regulations for the wireless spectrum.")
1876 (version "3.3.5") 1875 (version "3.3.5")
1877 (source (origin 1876 (source (origin
1878 (method url-fetch) 1877 (method url-fetch)
1879 (uri (string-append 1878 (uri (list (string-append
1880 "ftp://ftp.netroedge.com/pub/lm-sensors/lm_sensors-" 1879 "ftp://ftp.netroedge.com/pub/lm-sensors/"
1881 version ".tar.bz2")) 1880 "lm_sensors-" version ".tar.bz2")
1881 (string-append
1882 "http://pkgs.fedoraproject.org/repo/pkgs/"
1883 "lm_sensors/lm_sensors-3.3.5.tar.bz2/"
1884 "da506dedceb41822e64865f6ba34828a/"
1885 "lm_sensors-3.3.5.tar.bz2")))
1882 (sha256 1886 (sha256
1883 (base32 1887 (base32
1884 "1ksgrynxgrq590nb2fwxrl1gwzisjkqlyg3ljfd1al0ibrk6mbjx")) 1888 "1ksgrynxgrq590nb2fwxrl1gwzisjkqlyg3ljfd1al0ibrk6mbjx"))
@@ -2754,3 +2758,63 @@ from userspace.")
2754commonly found on Microsoft Windows. It is implemented as a FUSE file system. 2758commonly found on Microsoft Windows. It is implemented as a FUSE file system.
2755The package provides additional NTFS tools.") 2759The package provides additional NTFS tools.")
2756 (license license:gpl2+))) 2760 (license license:gpl2+)))
2761
2762(define-public rng-tools
2763 (package
2764 (name "rng-tools")
2765 (version "5")
2766 (source (origin
2767 (method url-fetch)
2768 (uri (string-append
2769 "http://downloads.sourceforge.net/sourceforge/gkernel/"
2770 "rng-tools-" version ".tar.gz"))
2771 (sha256
2772 (base32
2773 "13h7lc8wl9khhvkr0i3bl5j9bapf8anhqis1lcnwxg1vc2v058b0"))))
2774 (build-system gnu-build-system)
2775 (synopsis "Random number generator daemon")
2776 (description
2777 "Monitor a hardware random number generator, and supply entropy
2778from that to the system kernel's @file{/dev/random} machinery.")
2779 (home-page "http://sourceforge.net/projects/gkernel")
2780 ;; The source package is offered under the GPL2+, but the files
2781 ;; 'rngd_rdrand.c' and 'rdrand_asm.S' are only available under the GPL2.
2782 (license (list license:gpl2 license:gpl2+))))
2783
2784(define-public cpupower
2785 (package
2786 (name "cpupower")
2787 (version (package-version linux-libre))
2788 (source (package-source linux-libre))
2789 (build-system gnu-build-system)
2790 (arguments
2791 '(#:phases (modify-phases %standard-phases
2792 (add-after 'unpack 'enter-subdirectory
2793 (lambda _
2794 (chdir "tools/power/cpupower")))
2795 (delete 'configure)
2796 (add-before 'build 'fix-makefiles
2797 (lambda _
2798 (substitute* "Makefile"
2799 (("/usr/") "/")
2800 (("/bin/(install|pwd)" _ command) command))
2801 (substitute* "bench/Makefile"
2802 (("\\$\\(CC\\) -o") "$(CC) $(LDFLAGS) -o")))))
2803 #:make-flags (let ((out (assoc-ref %outputs "out")))
2804 (list (string-append "DESTDIR=" out)
2805 (string-append "LDFLAGS=-Wl,-rpath=" out "/lib")
2806 "docdir=/share/doc/cpupower"
2807 "confdir=$(docdir)/examples"
2808 ;; The Makefile recommends the following changes
2809 "DEBUG=false"
2810 "PACKAGE_BUGREPORT=bug-guix@gnu.org"))
2811 #:tests? #f)) ;no tests
2812 (native-inputs `(("gettext" ,gnu-gettext)))
2813 (inputs `(("pciutils" ,pciutils)))
2814 (home-page (package-home-page linux-libre))
2815 (synopsis "CPU frequency and voltage scaling tools for Linux")
2816 (description
2817 "cpupower is a set of user-space tools that use the cpufreq feature of the
2818Linux kernel to retrieve and control processor features related to power saving,
2819such as frequency and voltage scaling.")
2820 (license license:gpl2)))
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index e349907f14a..22f542ccc57 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -3,7 +3,7 @@
3;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> 3;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> 4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
5;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch> 5;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch>
6;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net> 6;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
7;;; 7;;;
8;;; This file is part of GNU Guix. 8;;; This file is part of GNU Guix.
9;;; 9;;;
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 3bf019fa835..c380eba122a 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -1,7 +1,8 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> 2;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org>
3;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> 3;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
4;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org> 4;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
5;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com>
5;;; 6;;;
6;;; This file is part of GNU Guix. 7;;; This file is part of GNU Guix.
7;;; 8;;;
@@ -20,7 +21,7 @@
20 21
21(define-module (gnu packages llvm) 22(define-module (gnu packages llvm)
22 #:use-module (guix packages) 23 #:use-module (guix packages)
23 #:use-module (guix licenses) 24 #:use-module ((guix licenses) #:prefix license:)
24 #:use-module (guix download) 25 #:use-module (guix download)
25 #:use-module (guix utils) 26 #:use-module (guix utils)
26 #:use-module (guix build-system gnu) 27 #:use-module (guix build-system gnu)
@@ -28,6 +29,8 @@
28 #:use-module (gnu packages) 29 #:use-module (gnu packages)
29 #:use-module (gnu packages gcc) 30 #:use-module (gnu packages gcc)
30 #:use-module (gnu packages bootstrap) ;glibc-dynamic-linker 31 #:use-module (gnu packages bootstrap) ;glibc-dynamic-linker
32 #:use-module (gnu packages compression)
33 #:use-module (gnu packages libffi)
31 #:use-module (gnu packages perl) 34 #:use-module (gnu packages perl)
32 #:use-module (gnu packages python) 35 #:use-module (gnu packages python)
33 #:use-module (gnu packages xml)) 36 #:use-module (gnu packages xml))
@@ -35,7 +38,7 @@
35(define-public llvm 38(define-public llvm
36 (package 39 (package
37 (name "llvm") 40 (name "llvm")
38 (version "3.6.2") 41 (version "3.8.1")
39 (source 42 (source
40 (origin 43 (origin
41 (method url-fetch) 44 (method url-fetch)
@@ -43,14 +46,21 @@
43 version "/llvm-" version ".src.tar.xz")) 46 version "/llvm-" version ".src.tar.xz"))
44 (sha256 47 (sha256
45 (base32 48 (base32
46 "153vcvj8gvgwakzr4j0kndc0b7wn91c2g1vy2vg24s6spxcc23gn")))) 49 "1ybmnid4pw2hxn12ax5qa5kl1ldfns0njg8533y3mzslvd5cx0kf"))))
47 (build-system cmake-build-system) 50 (build-system cmake-build-system)
48 (native-inputs 51 (native-inputs
49 `(("python" ,python-wrapper) 52 `(("python" ,python-2) ;bytes->str conversion in clang>=3.7 needs python-2
50 ("perl" ,perl))) 53 ("perl" ,perl)))
54 (inputs
55 `(("libffi" ,libffi)
56 ("zlib" ,zlib)))
51 (arguments 57 (arguments
52 `(#:configure-flags '("-DCMAKE_SKIP_BUILD_RPATH=FALSE" 58 `(#:configure-flags '("-DCMAKE_SKIP_BUILD_RPATH=FALSE"
53 "-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE"))) 59 "-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE"
60 "-DLLVM_ENABLE_FFI:BOOL=TRUE")
61
62 ;; Don't use '-g' during the build, to save space.
63 #:build-type "Release"))
54 (home-page "http://www.llvm.org") 64 (home-page "http://www.llvm.org")
55 (synopsis "Optimizing compiler infrastructure") 65 (synopsis "Optimizing compiler infrastructure")
56 (description 66 (description
@@ -60,7 +70,7 @@ languages. It currently supports compilation of C and C++ programs, using
60front-ends derived from GCC 4.0.1. A new front-end for the C family of 70front-ends derived from GCC 4.0.1. A new front-end for the C family of
61languages is in development. The compiler infrastructure includes mirror sets 71languages is in development. The compiler infrastructure includes mirror sets
62of programming tools as well as libraries with equivalent functionality.") 72of programming tools as well as libraries with equivalent functionality.")
63 (license ncsa))) 73 (license license:ncsa)))
64 74
65(define (clang-runtime-from-llvm llvm hash) 75(define (clang-runtime-from-llvm llvm hash)
66 (package 76 (package
@@ -78,8 +88,8 @@ of programming tools as well as libraries with equivalent functionality.")
78 `(("llvm" ,llvm))) 88 `(("llvm" ,llvm)))
79 (arguments 89 (arguments
80 `(;; Don't use '-g' during the build to save space. 90 `(;; Don't use '-g' during the build to save space.
81 #:build-type "Release")) 91 #:build-type "Release"
82 92 #:tests? #f)) ; Tests require gtest
83 (home-page "http://compiler-rt.llvm.org") 93 (home-page "http://compiler-rt.llvm.org")
84 (synopsis "Runtime library for Clang/LLVM") 94 (synopsis "Runtime library for Clang/LLVM")
85 (description 95 (description
@@ -87,12 +97,13 @@ of programming tools as well as libraries with equivalent functionality.")
87functions for C and C++ programs. It also provides header files that allow C 97functions for C and C++ programs. It also provides header files that allow C
88and C++ source code to interface with the \"sanitization\" passes of the clang 98and C++ source code to interface with the \"sanitization\" passes of the clang
89compiler. In LLVM this library is called \"compiler-rt\".") 99compiler. In LLVM this library is called \"compiler-rt\".")
90 (license ncsa) 100 (license license:ncsa)
91 101
92 ;; <http://compiler-rt.llvm.org/> doesn't list MIPS as supported. 102 ;; <http://compiler-rt.llvm.org/> doesn't list MIPS as supported.
93 (supported-systems (delete "mips64el-linux" %supported-systems)))) 103 (supported-systems (delete "mips64el-linux" %supported-systems))))
94 104
95(define (clang-from-llvm llvm clang-runtime hash) 105(define* (clang-from-llvm llvm clang-runtime hash
106 #:key (patches '("clang-libc-search-path.patch")))
96 (package 107 (package
97 (name "clang") 108 (name "clang")
98 (version (package-version llvm)) 109 (version (package-version llvm))
@@ -102,7 +113,7 @@ compiler. In LLVM this library is called \"compiler-rt\".")
102 (uri (string-append "http://llvm.org/releases/" 113 (uri (string-append "http://llvm.org/releases/"
103 version "/cfe-" version ".src.tar.xz")) 114 version "/cfe-" version ".src.tar.xz"))
104 (sha256 (base32 hash)) 115 (sha256 (base32 hash))
105 (patches (search-patches "clang-libc-search-path.patch")))) 116 (patches (map search-patch patches))))
106 ;; Using cmake allows us to treat llvm as an external library. There 117 ;; Using cmake allows us to treat llvm as an external library. There
107 ;; doesn't seem to be any way to do this with clang's autotools-based 118 ;; doesn't seem to be any way to do this with clang's autotools-based
108 ;; build system. 119 ;; build system.
@@ -170,20 +181,63 @@ compiler. In LLVM this library is called \"compiler-rt\".")
170Objective-C++ programming languages. It uses LLVM as its back end. The Clang 181Objective-C++ programming languages. It uses LLVM as its back end. The Clang
171project includes the Clang front end, the Clang static analyzer, and several 182project includes the Clang front end, the Clang static analyzer, and several
172code analysis tools.") 183code analysis tools.")
173 (license ncsa))) 184 (license license:ncsa)))
174 185
175(define-public clang-runtime 186(define-public clang-runtime
176 (clang-runtime-from-llvm 187 (clang-runtime-from-llvm
177 llvm 188 llvm
178 "11qx8d3pbfqjaj2x207pvlvzihbs1z2xbw4crpz7aid6h1yz6bqg")) 189 "0p0y85c7izndbpg2l816z7z7558axq11d5pwkm4h11sdw7d13w0d"))
179 190
180(define-public clang 191(define-public clang
181 (clang-from-llvm llvm clang-runtime 192 (clang-from-llvm llvm clang-runtime
193 "1prc72xmkgx8wrzmrr337776676nhsp1qd3mw2bvb22bzdnq7lsc"
194 #:patches '("clang-3.8-libc-search-path.patch")))
195
196(define-public llvm-3.7
197 (package (inherit llvm)
198 (version "3.7.1")
199 (source
200 (origin
201 (method url-fetch)
202 (uri (string-append "http://llvm.org/releases/"
203 version "/llvm-" version ".src.tar.xz"))
204 (sha256
205 (base32
206 "1masakdp9g2dan1yrazg7md5am2vacbkb3nahb3dchpc1knr8xxy"))))))
207
208(define-public clang-runtime-3.7
209 (clang-runtime-from-llvm
210 llvm-3.7
211 "10c1mz2q4bdq9bqfgr3dirc6hz1h3sq8573srd5q5lr7m7j6jiwx"))
212
213(define-public clang-3.7
214 (clang-from-llvm llvm-3.7 clang-runtime-3.7
215 "0x065d0w9b51xvdjxwfzjxng0gzpbx45fgiaxpap45ragi61dqjn"))
216
217(define-public llvm-3.6
218 (package (inherit llvm)
219 (version "3.6.2")
220 (source
221 (origin
222 (method url-fetch)
223 (uri (string-append "http://llvm.org/releases/"
224 version "/llvm-" version ".src.tar.xz"))
225 (sha256
226 (base32
227 "153vcvj8gvgwakzr4j0kndc0b7wn91c2g1vy2vg24s6spxcc23gn"))))))
228
229(define-public clang-runtime-3.6
230 (clang-runtime-from-llvm
231 llvm-3.6
232 "11qx8d3pbfqjaj2x207pvlvzihbs1z2xbw4crpz7aid6h1yz6bqg"))
233
234(define-public clang-3.6
235 (clang-from-llvm llvm-3.6 clang-runtime-3.6
182 "1wwr8s6lzr324hv4s1k6na4j5zv6n9kdhi14s4kb9b13d93814df")) 236 "1wwr8s6lzr324hv4s1k6na4j5zv6n9kdhi14s4kb9b13d93814df"))
183 237
184(define-public llvm-3.5 238(define-public llvm-3.5
185 (package (inherit llvm) 239 (package (inherit llvm)
186 (version "3.5.0") 240 (version "3.5.2")
187 (source 241 (source
188 (origin 242 (origin
189 (method url-fetch) 243 (method url-fetch)
@@ -191,13 +245,13 @@ code analysis tools.")
191 version "/llvm-" version ".src.tar.xz")) 245 version "/llvm-" version ".src.tar.xz"))
192 (sha256 246 (sha256
193 (base32 247 (base32
194 "00swb43mzlvda8306arlg2jw7g6k3acwfccgf1k4c2pgd3rrkq98")))))) 248 "0xf5q17kkxsrm2gsi93h4pwlv663kji73r2g4asb97klsmb626a4"))))))
195 249
196(define-public clang-runtime-3.5 250(define-public clang-runtime-3.5
197 (clang-runtime-from-llvm 251 (clang-runtime-from-llvm
198 llvm-3.5 252 llvm-3.5
199 "0dl1kbrhz96djsxqr61iw5h788s7ncfpfb7aayixky1bhdaydcx4")) 253 "1hsdnzzdr5kglz6fnv3lcsjs222zjsy14y8ax9dy6zqysanplbal"))
200 254
201(define-public clang-3.5 255(define-public clang-3.5
202 (clang-from-llvm llvm-3.5 clang-runtime-3.5 256 (clang-from-llvm llvm-3.5 clang-runtime-3.5
203 "12yv3jwdjcbkrx7zjm8wh4jrvb59v8fdw4mnmz3zc1jb00p9k07w")) 257 "0846h8vn3zlc00jkmvrmy88gc6ql6014c02l4jv78fpvfigmgssg"))
diff --git a/gnu/packages/logging.scm b/gnu/packages/logging.scm
index 68af09e08c3..c40d6ebbaf7 100644
--- a/gnu/packages/logging.scm
+++ b/gnu/packages/logging.scm
@@ -1,5 +1,6 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> 2;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
3;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
3;;; 4;;;
4;;; This file is part of GNU Guix. 5;;; This file is part of GNU Guix.
5;;; 6;;;
@@ -21,8 +22,10 @@
21 #:use-module (guix packages) 22 #:use-module (guix packages)
22 #:use-module (guix utils) 23 #:use-module (guix utils)
23 #:use-module (guix download) 24 #:use-module (guix download)
25 #:use-module (guix git-download)
24 #:use-module (guix build-system gnu) 26 #:use-module (guix build-system gnu)
25 #:use-module (gnu packages)) 27 #:use-module (gnu packages perl)
28 #:use-module (gnu packages autotools))
26 29
27(define-public log4cpp 30(define-public log4cpp
28 (package 31 (package
@@ -45,3 +48,43 @@ IDSA and other destinations. It is modeled after the Log4j Java library,
45staying as close to their API as is reasonable.") 48staying as close to their API as is reasonable.")
46 (home-page "http://log4cpp.sourceforge.net/") 49 (home-page "http://log4cpp.sourceforge.net/")
47 (license license:lgpl2.1+))) 50 (license license:lgpl2.1+)))
51
52(define-public glog
53 (package
54 (name "glog")
55 (version "0.3.4")
56 (home-page "https://github.com/google/glog")
57 (source (origin
58 (method git-fetch)
59 (uri (git-reference
60 (url home-page)
61 (commit (string-append "v" version))))
62 (sha256
63 (base32
64 "0ym5g15m7c8kjfr2c3zq6bz08ghin2d1r1nb6v2vnkfh1vn945x1"))
65 (file-name (string-append name "-" version "-checkout"))))
66 (build-system gnu-build-system)
67 (native-inputs
68 `(("perl" ,perl) ;for tests
69 ("autoconf" ,(autoconf-wrapper))
70 ("automake" ,automake)
71 ("libtool" ,libtool)))
72 (arguments
73 '(#:phases (modify-phases %standard-phases
74 (add-before 'configure 'add-automake-files
75 (lambda _
76 ;; The 'test-driver' file is a dangling symlink to
77 ;; /usr/share/automake; replace it. We can't just run
78 ;; 'automake -ac' because it complains about version
79 ;; mismatch, so run the whole thing.
80 (delete-file "test-driver")
81 (delete-file "configure") ;it's read-only
82 (zero? (system* "autoreconf" "-vfi")))))))
83 (synopsis "C++ logging library")
84 (description
85 "Google glog is a library that implements application-level logging.
86This library provides logging APIs based on C++-style streams and various
87helper macros. You can log a message by simply streaming things to log at a
88particular severity level. It allows logging to be controlled from the
89command line.")
90 (license license:bsd-3)))
diff --git a/gnu/packages/lsh.scm b/gnu/packages/lsh.scm
deleted file mode 100644
index 2ea1591354b..00000000000
--- a/gnu/packages/lsh.scm
+++ /dev/null
@@ -1,159 +0,0 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2012, 2013, 2014, 2015, 2016 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 lsh)
20 #:use-module ((guix licenses) #:prefix license:)
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 m4)
26 #:use-module (gnu packages linux)
27 #:use-module (gnu packages nettle)
28 #:use-module (gnu packages compression)
29 #:use-module (gnu packages multiprecision)
30 #:use-module (gnu packages readline)
31 #:use-module (gnu packages gperf)
32 #:use-module (gnu packages guile)
33 #:use-module (gnu packages xorg))
34
35(define-public liboop
36 (package
37 (name "liboop")
38 (version "1.0")
39 (source
40 (origin
41 (method url-fetch)
42 (uri (string-append "http://download.ofb.net/liboop/liboop-"
43 version ".tar.gz"))
44 (sha256
45 (base32
46 "0z6rlalhvfca64jpvksppc9bdhs7jwhiw4y35g5ibvh91xp3rn1l"))
47 (patches (search-patches "liboop-mips64-deplibs-fix.patch"))))
48 (build-system gnu-build-system)
49 (home-page "http://www.lysator.liu.se/liboop/")
50 (synopsis "Event loop library")
51 (description "Liboop is a low-level event loop management library for
52POSIX-based operating systems. It supports the development of modular,
53multiplexed applications which may respond to events from several sources. It
54replaces the \"select() loop\" and allows the registration of event handlers
55for file and network I/O, timers and signals. Since processes use these
56mechanisms for almost all external communication, liboop can be used as the
57basis for almost any application.")
58 (license license:lgpl2.1+)))
59
60(define-public lsh
61 (package
62 (name "lsh")
63 (version "2.1")
64 (source (origin
65 (method url-fetch)
66 (uri (string-append "mirror://gnu/lsh/lsh-"
67 version ".tar.gz"))
68 (sha256
69 (base32
70 "1qqjy9zfzgny0rkb27c8c7dfsylvb6n0ld8h3an2r83pmaqr9gwb"))
71 (modules '((guix build utils)))
72 (snippet
73 '(begin
74 (substitute* "src/testsuite/functions.sh"
75 (("localhost")
76 ;; Avoid host name lookups since they don't work in
77 ;; chroot builds.
78 "127.0.0.1")
79 (("set -e")
80 ;; Make tests more verbose.
81 "set -e\nset -x"))
82
83 (substitute* (find-files "src/testsuite" "-test$")
84 (("localhost") "127.0.0.1"))
85
86 (substitute* "src/testsuite/login-auth-test"
87 (("/bin/cat") "cat"))))))
88 (build-system gnu-build-system)
89 (native-inputs
90 `(("m4" ,m4)
91 ("guile" ,guile-2.0)
92 ("gperf" ,gperf)
93 ("psmisc" ,psmisc))) ; for `killall'
94 (inputs
95 `(("nettle" ,nettle-2)
96 ("linux-pam" ,linux-pam)
97
98 ;; 'rl.c' uses the 'CPPFunction' type, which is no longer in
99 ;; Readline 6.3.
100 ("readline" ,readline-6.2)
101
102 ("liboop" ,liboop)
103 ("zlib" ,zlib)
104 ("gmp" ,gmp)
105
106 ;; The server (lshd) invokes xauth when X11 forwarding is requested.
107 ;; This adds 24 MiB (or 27%) to the closure of lsh.
108 ("xauth" ,xauth)))
109 (arguments
110 '(;; Skip the `configure' test that checks whether /dev/ptmx &
111 ;; co. work as expected, because it relies on impurities (for
112 ;; instance, /dev/pts may be unavailable in chroots.)
113 #:configure-flags '("lsh_cv_sys_unix98_ptys=yes")
114
115 ;; FIXME: Tests won't run in a chroot, presumably because
116 ;; /etc/profile is missing, and thus clients get an empty $PATH
117 ;; and nothing works.
118 #:tests? #f
119
120 #:phases
121 (modify-phases %standard-phases
122 (add-before 'configure 'pre-configure
123 (lambda* (#:key inputs #:allow-other-keys)
124 (let* ((nettle (assoc-ref inputs "nettle"))
125 (sexp-conv (string-append nettle "/bin/sexp-conv")))
126 ;; Make sure 'lsh' and 'lshd' pick 'sexp-conv' in the right place
127 ;; by default.
128 (substitute* "src/environ.h.in"
129 (("^#define PATH_SEXP_CONV.*")
130 (string-append "#define PATH_SEXP_CONV \""
131 sexp-conv "\"\n")))
132
133 ;; Same for the 'lsh-authorize' script.
134 (substitute* "src/lsh-authorize"
135 (("=sexp-conv")
136 (string-append "=" sexp-conv)))
137
138 ;; Tell lshd where 'xauth' lives. Another option would be to
139 ;; hardcode "/run/current-system/profile/bin/xauth", thereby
140 ;; reducing the closure size, but that wouldn't work on foreign
141 ;; distros.
142 (with-fluids ((%default-port-encoding "ISO-8859-1"))
143 (substitute* "src/server_x11.c"
144 (("define XAUTH_PROGRAM.*")
145 (string-append "define XAUTH_PROGRAM \""
146 (assoc-ref inputs "xauth")
147 "/bin/xauth\"\n")))))
148
149 ;; Tests rely on $USER being set.
150 (setenv "USER" "guix"))))))
151 (home-page "http://www.lysator.liu.se/~nisse/lsh/")
152 (synopsis "GNU implementation of the Secure Shell (ssh) protocols")
153 (description
154 "GNU lsh is a free implementation of the SSH version 2 protocol. It is
155used to create a secure line of communication between two computers,
156providing shell access to the server system from the client. It provides
157both the server daemon and the client application, as well as tools for
158manipulating key files.")
159 (license license:gpl2+)))
diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm
index 7ce31ad36a8..c00400ca703 100644
--- a/gnu/packages/lxde.scm
+++ b/gnu/packages/lxde.scm
@@ -1,5 +1,6 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org> 2;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
3;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
3;;; 4;;;
4;;; This file is part of GNU Guix. 5;;; This file is part of GNU Guix.
5;;; 6;;;
@@ -71,14 +72,14 @@ libFM file management library.")))
71(define-public lxappearance 72(define-public lxappearance
72 (package 73 (package
73 (name "lxappearance") 74 (name "lxappearance")
74 (version "0.6.1") 75 (version "0.6.2")
75 (source (origin 76 (source (origin
76 (method url-fetch) 77 (method url-fetch)
77 (uri (string-append "mirror://sourceforge/project/lxde/" 78 (uri (string-append "mirror://sourceforge/project/lxde/"
78 "LXAppearance/" name "-" version ".tar.xz")) 79 "LXAppearance/" name "-" version ".tar.xz"))
79 (sha256 80 (sha256
80 (base32 81 (base32
81 "1phnv1b2jdj2vlibjyc9z01izcf3k5zxj8glsaf0i3vh77zqmqq9")))) 82 "07r0xbi6504zjnbpan7zrn7gi4j0kbsqqfpj8v2x94gr05p16qj4"))))
82 (build-system gnu-build-system) 83 (build-system gnu-build-system)
83 (inputs `(("gtk+" ,gtk+-2))) 84 (inputs `(("gtk+" ,gtk+-2)))
84 (native-inputs `(("intltool" ,intltool) 85 (native-inputs `(("intltool" ,intltool)
@@ -92,7 +93,7 @@ able to change themes, icons, and fonts used by GTK+ applications.")
92(define-public lxrandr 93(define-public lxrandr
93 (package 94 (package
94 (name "lxrandr") 95 (name "lxrandr")
95 (version "0.3.0") 96 (version "0.3.1")
96 (source (origin 97 (source (origin
97 (method url-fetch) 98 (method url-fetch)
98 (uri (string-append "mirror://sourceforge/project/lxde/LXRandR" 99 (uri (string-append "mirror://sourceforge/project/lxde/LXRandR"
@@ -101,7 +102,7 @@ able to change themes, icons, and fonts used by GTK+ applications.")
101 name "-" version ".tar.xz")) 102 name "-" version ".tar.xz"))
102 (sha256 103 (sha256
103 (base32 104 (base32
104 "0xkbqv66hisbxkvnf7y5kwqbhrq26f49wd7w6ylhnjlccpnylg8q")))) 105 "0khqi42paqg82jllb2kza4arf3fafzgq90fhyr3rw3d9hn23763d"))))
105 (build-system gnu-build-system) 106 (build-system gnu-build-system)
106 (inputs `(("gtk+" ,gtk+-2))) 107 (inputs `(("gtk+" ,gtk+-2)))
107 (native-inputs `(("intltool" ,intltool) 108 (native-inputs `(("intltool" ,intltool)
@@ -118,7 +119,7 @@ or external monitor.")
118(define-public lxtask 119(define-public lxtask
119 (package 120 (package
120 (name "lxtask") 121 (name "lxtask")
121 (version "0.1.6") 122 (version "0.1.7")
122 (source (origin 123 (source (origin
123 (method url-fetch) 124 (method url-fetch)
124 (uri (string-append "mirror://sourceforge/project/lxde/LXTask" 125 (uri (string-append "mirror://sourceforge/project/lxde/LXTask"
@@ -127,7 +128,7 @@ or external monitor.")
127 name "-" version ".tar.xz")) 128 name "-" version ".tar.xz"))
128 (sha256 129 (sha256
129 (base32 130 (base32
130 "0ia3i430lpwgl2kch6sl1za8qf96wc4fkcv91yhdzgnzafcnm3gp")))) 131 "1zihhvzsg9bl6k0gv7jwx6cgsi3rmcagvnmshc1h0mjq2immmdph"))))
131 (build-system gnu-build-system) 132 (build-system gnu-build-system)
132 (inputs `(("gtk+" ,gtk+-2))) 133 (inputs `(("gtk+" ,gtk+-2)))
133 (native-inputs `(("intltool" ,intltool) 134 (native-inputs `(("intltool" ,intltool)
@@ -167,7 +168,7 @@ performance, all instances of the terminal are sharing a single process.")
167(define-public menu-cache 168(define-public menu-cache
168 (package 169 (package
169 (name "menu-cache") 170 (name "menu-cache")
170 (version "1.0.0") 171 (version "1.0.1")
171 (source (origin 172 (source (origin
172 (method url-fetch) 173 (method url-fetch)
173 (uri (string-append "mirror://sourceforge/project/lxde/" name "/" 174 (uri (string-append "mirror://sourceforge/project/lxde/" name "/"
@@ -175,7 +176,7 @@ performance, all instances of the terminal are sharing a single process.")
175 name "-" version ".tar.xz")) 176 name "-" version ".tar.xz"))
176 (sha256 177 (sha256
177 (base32 178 (base32
178 "1bws84fiwk3anp30hcr0lw1xw5cgp44x5ik2yv2ijcgxpcvz8zgz")))) 179 "0ngxvwfj9drabqi3lyzgpi0d0za6431sy2ijb010filrj54jdiqa"))))
179 (build-system gnu-build-system) 180 (build-system gnu-build-system)
180 (inputs `(("glib" ,glib) 181 (inputs `(("glib" ,glib)
181 ("libfm" ,libfm-extra))) 182 ("libfm" ,libfm-extra)))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 5ce7ed42544..a36fd5ff707 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -14,6 +14,7 @@
14;;; Copyright © 2016 Leo Famulari <leo@famulari.name> 14;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
15;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> 15;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
16;;; Copyright © 2016 Alex Kost <alezost@gmail.com> 16;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
17;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
17;;; 18;;;
18;;; This file is part of GNU Guix. 19;;; This file is part of GNU Guix.
19;;; 20;;;
@@ -397,6 +398,40 @@ messages you need; in addition, it allows you to view messages, extract
397attachments, create new maildirs, and so on.") 398attachments, create new maildirs, and so on.")
398 (license gpl3+))) 399 (license gpl3+)))
399 400
401(define-public alot
402 (package
403 (name "alot")
404 (version "0.3.7")
405 (source (origin
406 (method url-fetch)
407 ; v0.3.7 not on PyPi yet, so use github instead
408 (uri (string-append "https://github.com/pazz/alot/archive/"
409 version ".tar.gz"))
410 (file-name (string-append "alot-" version ".tar.gz"))
411 (sha256
412 (base32
413 "09md9llg38r6xby8l0y0zf8nhlh91cr4xs0r15b294hhp8hl2bgx"))))
414 (build-system python-build-system)
415 (arguments
416 `(#:tests? #f ; no tests
417 ; python 3 is unsupported, more info:
418 ; https://github.com/pazz/alot/blob/0.3.7/docs/source/faq.rst
419 #:python ,python-2))
420 (inputs
421 `(("python2-magic" ,python2-magic)
422 ("python2-configobj" ,python2-configobj)
423 ("python2-twisted" ,python2-twisted)
424 ("python2-urwid" ,python2-urwid)
425 ("python2-urwidtrees" ,python2-urwidtrees)
426 ("python2-pygpgme" ,python2-pygpgme)
427 ("python2-notmuch" ,python2-notmuch)))
428 (home-page "https://github.com/pazz/alot")
429 (synopsis "Commandline MUA using notmuch")
430 (description
431 "Alot is an experimental terminal mail user agent (MUA) based on
432@code{notmuch} mail. It is written in Python using the @code{urwid} toolkit.")
433 (license gpl3+)))
434
400(define-public notmuch 435(define-public notmuch
401 (package 436 (package
402 (name "notmuch") 437 (name "notmuch")
@@ -519,7 +554,7 @@ and search library.")
519(define-public getmail 554(define-public getmail
520 (package 555 (package
521 (name "getmail") 556 (name "getmail")
522 (version "4.48.0") 557 (version "4.49.0")
523 (source 558 (source
524 (origin 559 (origin
525 (method url-fetch) 560 (method url-fetch)
@@ -527,7 +562,7 @@ and search library.")
527 name "-" version ".tar.gz")) 562 name "-" version ".tar.gz"))
528 (sha256 563 (sha256
529 (base32 564 (base32
530 "0k5rm5kag14izng2ajcagvli9sns5mzvkyfa65ri4xymxs91wi29")))) 565 "1m0yzxd05fklwbmjj1n2q4sx397c1j5qi9a0r5fv3h8pplz4lv0w"))))
531 (build-system python-build-system) 566 (build-system python-build-system)
532 (arguments 567 (arguments
533 `(#:tests? #f ; no tests 568 `(#:tests? #f ; no tests
@@ -546,14 +581,14 @@ useful features.")
546(define-public libetpan 581(define-public libetpan
547 (package 582 (package
548 (name "libetpan") 583 (name "libetpan")
549 (version "1.6") 584 (version "1.7.2")
550 (source (origin 585 (source (origin
551 (method url-fetch) 586 (method url-fetch)
552 (uri (string-append "https://github.com/dinhviethoa/" name 587 (uri (string-append "https://github.com/dinhviethoa/" name
553 "/archive/" version ".tar.gz")) 588 "/archive/" version ".tar.gz"))
554 (file-name (string-append name "-" version ".tar.gz")) 589 (file-name (string-append name "-" version ".tar.gz"))
555 (sha256 590 (sha256
556 (base32 "05qyqx2c1ppb1jnrs3m52i60f9xlxfxdmb9dnwg4vqjv8kwv2qkr")))) 591 (base32 "081ixgj3skglq9i7v0jb835lmfx21zi4i5b7997igwr0lj174y9j"))))
557 (build-system gnu-build-system) 592 (build-system gnu-build-system)
558 (native-inputs `(("autoconf" ,(autoconf-wrapper)) 593 (native-inputs `(("autoconf" ,(autoconf-wrapper))
559 ("automake" ,automake) 594 ("automake" ,automake)
@@ -566,7 +601,8 @@ useful features.")
566 ("openssl" ,openssl))) 601 ("openssl" ,openssl)))
567 (inputs 602 (inputs
568 `(("curl" ,curl) 603 `(("curl" ,curl)
569 ("expat" ,expat))) 604 ("expat" ,expat)
605 ("zlib" ,zlib)))
570 (arguments 606 (arguments
571 '(#:phases (alist-cons-after 607 '(#:phases (alist-cons-after
572 'unpack 'autogen 608 'unpack 'autogen
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index ab5e770b522..9ffbba9de99 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -58,14 +58,14 @@ a flexible and convenient way.")
58(define-public man-db 58(define-public man-db
59 (package 59 (package
60 (name "man-db") 60 (name "man-db")
61 (version "2.7.1") 61 (version "2.7.5")
62 (source (origin 62 (source (origin
63 (method url-fetch) 63 (method url-fetch)
64 (uri (string-append "mirror://savannah/man-db/man-db-" 64 (uri (string-append "mirror://savannah/man-db/man-db-"
65 version ".tar.xz")) 65 version ".tar.xz"))
66 (sha256 66 (sha256
67 (base32 67 (base32
68 "03ly0hbpgjnag576rgccanaisn7f6422q5qxrj64vyzslc2651y4")))) 68 "056a3il7agfazac12yggcg4gf412yq34k065im0cpfxbcw6xskaw"))))
69 (build-system gnu-build-system) 69 (build-system gnu-build-system)
70 (arguments 70 (arguments
71 '(#:phases 71 '(#:phases
@@ -129,7 +129,7 @@ the traditional flat-text whatis databases.")
129(define-public man-pages 129(define-public man-pages
130 (package 130 (package
131 (name "man-pages") 131 (name "man-pages")
132 (version "4.04") 132 (version "4.06")
133 (source (origin 133 (source (origin
134 (method url-fetch) 134 (method url-fetch)
135 (uri 135 (uri
@@ -142,7 +142,7 @@ the traditional flat-text whatis databases.")
142 "man-pages-" version ".tar.xz"))) 142 "man-pages-" version ".tar.xz")))
143 (sha256 143 (sha256
144 (base32 144 (base32
145 "0v8zxq4scfixy3pjpw9ankvv5v8frv62khv4xm1jpkswyq6rbqcg")))) 145 "0vv056k9yyf05dqal9m2pq3pv9c8lnp7i5rjxvcnic6aq7vyrafb"))))
146 (build-system gnu-build-system) 146 (build-system gnu-build-system)
147 (arguments 147 (arguments
148 '(#:phases (alist-delete 'configure %standard-phases) 148 '(#:phases (alist-delete 'configure %standard-phases)
@@ -168,7 +168,7 @@ Linux kernel and C library interfaces employed by user-space programs.")
168(define-public help2man 168(define-public help2man
169 (package 169 (package
170 (name "help2man") 170 (name "help2man")
171 (version "1.47.3") 171 (version "1.47.4")
172 (source 172 (source
173 (origin 173 (origin
174 (method url-fetch) 174 (method url-fetch)
@@ -176,7 +176,7 @@ Linux kernel and C library interfaces employed by user-space programs.")
176 version ".tar.xz")) 176 version ".tar.xz"))
177 (sha256 177 (sha256
178 (base32 178 (base32
179 "0miqq77ssk5rgsc9xlv7k5n2wk2c5wv2m1kh4zhbwrggfmjaycn2")))) 179 "0lvp4306f5nq08f3snffs5pp1zwv8l35z6f5g0dds51zs6bzdv6l"))))
180 (build-system gnu-build-system) 180 (build-system gnu-build-system)
181 (arguments `(;; There's no `check' target. 181 (arguments `(;; There's no `check' target.
182 #:tests? #f)) 182 #:tests? #f))
diff --git a/gnu/packages/markdown.scm b/gnu/packages/markdown.scm
index a20eef68189..dab3d4eab13 100644
--- a/gnu/packages/markdown.scm
+++ b/gnu/packages/markdown.scm
@@ -1,6 +1,7 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org> 2;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
3;;; Copyright © 2015 David Thompson <davet@gnu.org> 3;;; Copyright © 2015 David Thompson <davet@gnu.org>
4;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
4;;; 5;;;
5;;; This file is part of GNU Guix. 6;;; This file is part of GNU Guix.
6;;; 7;;;
@@ -31,7 +32,7 @@
31(define-public hoedown 32(define-public hoedown
32 (package 33 (package
33 (name "hoedown") 34 (name "hoedown")
34 (version "3.0.3") 35 (version "3.0.7")
35 (source (origin 36 (source (origin
36 (method url-fetch) 37 (method url-fetch)
37 (uri (string-append "https://github.com/hoedown/hoedown/archive/" 38 (uri (string-append "https://github.com/hoedown/hoedown/archive/"
@@ -39,7 +40,7 @@
39 (file-name (string-append name "-" version ".tar.gz")) 40 (file-name (string-append name "-" version ".tar.gz"))
40 (sha256 41 (sha256
41 (base32 42 (base32
42 "0mmmkfayqgh6k39kbi3pq68mg03x35aiygy3zypxzvwx9y8b53ky")))) 43 "0859dc2xjasd6kgkshi8mb20kbyw5sql1ln0hw3bfaf33qdh5dh1"))))
43 (build-system gnu-build-system) 44 (build-system gnu-build-system)
44 (arguments 45 (arguments
45 '(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output)) 46 '(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 3b860a957f1..b8ec213d8b1 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -63,6 +63,7 @@
63 #:use-module (gnu packages image) 63 #:use-module (gnu packages image)
64 #:use-module (gnu packages less) 64 #:use-module (gnu packages less)
65 #:use-module (gnu packages lisp) 65 #:use-module (gnu packages lisp)
66 #:use-module (gnu packages logging)
66 #:use-module (gnu packages gnome) 67 #:use-module (gnu packages gnome)
67 #:use-module (gnu packages guile) 68 #:use-module (gnu packages guile)
68 #:use-module (gnu packages xorg) 69 #:use-module (gnu packages xorg)
@@ -333,7 +334,8 @@ large scale eigenvalue problems.")
333 (inputs `(("fortran" ,gfortran) 334 (inputs `(("fortran" ,gfortran)
334 ("python" ,python-2))) 335 ("python" ,python-2)))
335 (arguments 336 (arguments
336 `(#:configure-flags '("-DBUILD_SHARED_LIBS:BOOL=YES") 337 `(#:configure-flags '("-DBUILD_SHARED_LIBS:BOOL=YES"
338 "-DLAPACKE=ON")
337 #:phases (alist-cons-before 339 #:phases (alist-cons-before
338 'check 'patch-python 340 'check 'patch-python
339 (lambda* (#:key inputs #:allow-other-keys) 341 (lambda* (#:key inputs #:allow-other-keys)
@@ -644,10 +646,7 @@ interfaces.")
644 (build-system cmake-build-system) 646 (build-system cmake-build-system)
645 (arguments 647 (arguments
646 ;; TODO: Build HTML user documentation and install separately. 648 ;; TODO: Build HTML user documentation and install separately.
647 ;; XXX: Use the embedded "miniglog" as a replacement for 649 '(#:configure-flags '("-DBUILD_EXAMPLES=OFF"
648 ;; <https://github.com/google/glog>. TODO: Use Glog when it's available.
649 '(#:configure-flags '("-DMINIGLOG=ON"
650 "-DBUILD_EXAMPLES=OFF"
651 "-DBUILD_SHARED_LIBS=ON") 650 "-DBUILD_SHARED_LIBS=ON")
652 651
653 #:phases (modify-phases %standard-phases 652 #:phases (modify-phases %standard-phases
@@ -660,6 +659,8 @@ interfaces.")
660 #t))))) 659 #t)))))
661 (native-inputs 660 (native-inputs
662 `(("pkg-config" ,pkg-config))) 661 `(("pkg-config" ,pkg-config)))
662 (propagated-inputs
663 `(("glog" ,glog))) ;for #include <glog/glog.h>
663 (inputs 664 (inputs
664 `(("eigen" ,eigen) 665 `(("eigen" ,eigen)
665 ("blas" ,openblas) 666 ("blas" ,openblas)
@@ -1874,7 +1875,7 @@ constant parts of it.")
1874(define-public openlibm 1875(define-public openlibm
1875 (package 1876 (package
1876 (name "openlibm") 1877 (name "openlibm")
1877 (version "0.4.1") 1878 (version "0.5.1")
1878 (source 1879 (source
1879 (origin 1880 (origin
1880 (method url-fetch) 1881 (method url-fetch)
@@ -1883,7 +1884,7 @@ constant parts of it.")
1883 (file-name (string-append name "-" version ".tar.gz")) 1884 (file-name (string-append name "-" version ".tar.gz"))
1884 (sha256 1885 (sha256
1885 (base32 1886 (base32
1886 "0cwqqqlblj3kzp9aq1wnpfs1fl0qd1wp1xzm5shb09w06i4rh9nn")))) 1887 "11czx2z7nh6dfpz45s3xl7v38hw36jxzxfvny454bk3if14pfakq"))))
1887 (build-system gnu-build-system) 1888 (build-system gnu-build-system)
1888 (arguments 1889 (arguments
1889 `(#:make-flags 1890 `(#:make-flags
@@ -1911,7 +1912,7 @@ environments.")
1911(define-public openspecfun 1912(define-public openspecfun
1912 (package 1913 (package
1913 (name "openspecfun") 1914 (name "openspecfun")
1914 (version "0.4") 1915 (version "0.5.2")
1915 (source 1916 (source
1916 (origin 1917 (origin
1917 (method url-fetch) 1918 (method url-fetch)
@@ -1920,7 +1921,7 @@ environments.")
1920 (file-name (string-append name "-" version ".tar.gz")) 1921 (file-name (string-append name "-" version ".tar.gz"))
1921 (sha256 1922 (sha256
1922 (base32 1923 (base32
1923 "0nsa3jjmlhcqkw5ba5ypbn3n0c8b6lc22zzlxnmxkxi9shhdx65z")))) 1924 "1y5b2h6f2k72536kym3vzy3li3bhpd23x463g7hdmjdi3cncavz1"))))
1924 (build-system gnu-build-system) 1925 (build-system gnu-build-system)
1925 (arguments 1926 (arguments
1926 '(#:tests? #f ;no "check" target 1927 '(#:tests? #f ;no "check" target
@@ -2119,14 +2120,13 @@ Optimization occurs at build time. For this reason, the library is built on
2119the machine where it is installed, without resorting to pre-built substitutes. 2120the machine where it is installed, without resorting to pre-built substitutes.
2120 2121
2121Before building the library, CPU throttling should be disabled. This can be 2122Before building the library, CPU throttling should be disabled. This can be
2122done in the BIOS, or, on GNU/Linux, with the following commands: 2123done in the BIOS, or, on GNU/Linux, with the following command:
2123 2124
2124cpufreq-selector -g performance -c 0 2125@example
2125... 2126# cpupower --governor performance
2126cpufreq-selector -g performance -c N-1 2127@end example
2127 2128
2128where N is the number of cores of your CPU. Failure to do so will result in a 2129Failure to do so will result in a library with poor performance.")
2129library with poor performance.")
2130 (license license:bsd-3))) 2130 (license license:bsd-3)))
2131 2131
2132(define-public glm 2132(define-public glm
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 215fa19bb86..de9ac179bb6 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -257,7 +257,7 @@ supports IPv6, SSL-protected connections as well as PAM for authentication.")
257(define-public pidgin 257(define-public pidgin
258 (package 258 (package
259 (name "pidgin") 259 (name "pidgin")
260 (version "2.10.11") 260 (version "2.11.0")
261 (source 261 (source
262 (origin 262 (origin
263 (method url-fetch) 263 (method url-fetch)
@@ -265,7 +265,7 @@ supports IPv6, SSL-protected connections as well as PAM for authentication.")
265 version "/" name "-" version ".tar.bz2")) 265 version "/" name "-" version ".tar.bz2"))
266 (sha256 266 (sha256
267 (base32 267 (base32
268 "01s0q30qrjlzj7kkz6f8lvrwsdd55a9yjh2xjjwyyxzw849j3bpj")) 268 "0crkggjj6y07v1kdwil9vw532b0vrs6p33nmlvdkpnl60m2169pp"))
269 (patches (search-patches "pidgin-add-search-path.patch")))) 269 (patches (search-patches "pidgin-add-search-path.patch"))))
270 (build-system glib-or-gtk-build-system) 270 (build-system glib-or-gtk-build-system)
271 (native-inputs 271 (native-inputs
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 3162cf18b85..da7c1ccb372 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -71,7 +71,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
71(define-public mpd 71(define-public mpd
72 (package 72 (package
73 (name "mpd") 73 (name "mpd")
74 (version "0.19.14") 74 (version "0.19.17")
75 (source (origin 75 (source (origin
76 (method url-fetch) 76 (method url-fetch)
77 (uri 77 (uri
@@ -80,7 +80,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
80 "/mpd-" version ".tar.xz")) 80 "/mpd-" version ".tar.xz"))
81 (sha256 81 (sha256
82 (base32 82 (base32
83 "1rwr1qb9an1qylddf35xwdasyfkxghd00c29saj04l1f2c2kilig")))) 83 "1xxjkwbs0d1bdcsykhmw6l1lybpyp2l7b2bw58y1j70w5fnwhzj8"))))
84 (build-system gnu-build-system) 84 (build-system gnu-build-system)
85 (inputs `(("ao" ,ao) 85 (inputs `(("ao" ,ao)
86 ("alsa-lib" ,alsa-lib) 86 ("alsa-lib" ,alsa-lib)
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index dfc21cc95fe..91ba4be97b7 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -6,6 +6,7 @@
6;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> 6;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
7;;; Copyright © 2016 Leo Famulari <leo@famulari.name> 7;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
8;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> 8;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
9;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
9;;; 10;;;
10;;; This file is part of GNU Guix. 11;;; This file is part of GNU Guix.
11;;; 12;;;
@@ -715,6 +716,49 @@ Editor. It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
715oscillators and stereo effects.") 716oscillators and stereo effects.")
716 (license license:gpl2+))) 717 (license license:gpl2+)))
717 718
719(define-public amsynth
720 (package
721 (name "amsynth")
722 (version "1.6.4")
723 (source
724 (origin
725 (method url-fetch)
726 (uri (string-append "https://github.com/amsynth/amsynth/releases/"
727 "download/release-" version
728 "/amsynth-" version ".tar.bz2"))
729 (sha256
730 (base32
731 "07dp9dl38g9krjqxxh89l2z42z08yzrl57cx95b1l67xnxwjp5k3"))))
732 (build-system gnu-build-system)
733 (arguments
734 `(#:phases
735 (modify-phases %standard-phases
736 (add-before 'configure 'set-flags
737 (lambda _
738 ;; Compile with C++11, required by gtkmm.
739 (setenv "CXXFLAGS" "-std=c++11")
740 #t)))))
741 (inputs
742 `(("alsa-lib" ,alsa-lib)
743 ("jack" ,jack-1)
744 ("lv2" ,lv2)
745 ("libsndfile" ,libsndfile)
746 ("gtk+" ,gtk+-2)
747 ("gtkmm" ,gtkmm-2)))
748 (native-inputs
749 `(("pkg-config" ,pkg-config)))
750 (home-page "http://amsynth.github.io")
751 (synopsis "Analog modeling synthesizer")
752 (description
753 "amsynth is an easy-to-use software synthesizer with a classic
754subtractive synthesizer topology. Its features include: dual
755oscillators (sine, saw, square, noise) with hard sync; 12 and 24 dB/oct
756resonant filters (low-pass, high-pass, band-pass, notch); mono, poly, legato
757keyboard modes; dual ADSR envelope generators for filter and amplitude; LFO
758which can modulate the oscillators, filter, and amplitude; distortion and
759reverb effects.")
760 (license license:gpl2+)))
761
718(define-public setbfree 762(define-public setbfree
719 (package 763 (package
720 (name "setbfree") 764 (name "setbfree")
@@ -1594,3 +1638,30 @@ for improved Amiga ProTracker 2/3 compatibility.")
1594formats, including most audio formats recognized by FFMpeg.") 1638formats, including most audio formats recognized by FFMpeg.")
1595 (home-page "http://moc.daper.net") 1639 (home-page "http://moc.daper.net")
1596 (license license:gpl2+))) 1640 (license license:gpl2+)))
1641
1642(define-public midicsv
1643 (package
1644 (name "midicsv")
1645 (version "1.1")
1646 (source (origin
1647 (method url-fetch)
1648 (uri (string-append "http://www.fourmilab.ch/webtools/midicsv/"
1649 name "-" version ".tar.gz"))
1650 (sha256
1651 (base32
1652 "1vvhk2nf9ilfw0wchmxy8l13hbw9cnpz079nsx5srsy4nnd78nkw"))))
1653 (build-system gnu-build-system)
1654 (arguments
1655 `(#:phases (modify-phases %standard-phases (delete 'configure))
1656 #:make-flags (list "CC=gcc" (string-append "INSTALL_DEST=" %output))))
1657 (synopsis "Convert MIDI files to and from CSV")
1658 (description
1659 "Midicsv reads a standard MIDI file and decodes it into a comma-separated
1660value file (CSV), which preserves all the information in the MIDI file. The
1661ASCII CSV file may be loaded into a spreadsheet or database application, or
1662processed by a program to transform the MIDI data (for example, to key
1663transpose a composition or extract a track from a multi-track sequence). A
1664CSV file in the format created by midicsv may be converted back into a
1665standard MIDI file with the csvmidi program.")
1666 (home-page "http://www.fourmilab.ch/webtools/midicsv/")
1667 (license license:public-domain)))
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 72c601102ce..9e4f7bb010f 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -4,7 +4,7 @@
4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> 4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
5;;; Copyright © 2015 Stefan Reichör <stefan@xsteve.at> 5;;; Copyright © 2015 Stefan Reichör <stefan@xsteve.at>
6;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com> 6;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com>
7;;; Copyright © 2016 Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com> 7;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
8;;; Copyright 2016 John Darrington <jmd@gnu.org> 8;;; Copyright 2016 John Darrington <jmd@gnu.org>
9;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr> 9;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr>
10;;; 10;;;
diff --git a/gnu/packages/ninja.scm b/gnu/packages/ninja.scm
index cfcc6d5a519..8f18eb35605 100644
--- a/gnu/packages/ninja.scm
+++ b/gnu/packages/ninja.scm
@@ -1,6 +1,7 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> 2;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
3;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> 3;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
4;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
4;;; 5;;;
5;;; This file is part of GNU Guix. 6;;; This file is part of GNU Guix.
6;;; 7;;;
@@ -28,7 +29,7 @@
28(define-public ninja 29(define-public ninja
29 (package 30 (package
30 (name "ninja") 31 (name "ninja")
31 (version "1.5.3") 32 (version "1.7.1")
32 (source (origin 33 (source (origin
33 (method url-fetch) 34 (method url-fetch)
34 (uri (string-append "https://github.com/martine/ninja/" 35 (uri (string-append "https://github.com/martine/ninja/"
@@ -36,7 +37,7 @@
36 (file-name (string-append name "-" version ".tar.gz")) 37 (file-name (string-append name "-" version ".tar.gz"))
37 (sha256 38 (sha256
38 (base32 39 (base32
39 "1h3yfwcfl61v493vna6jia2fizh8rpig7qw2504cvkr6gid3p5bw")) 40 "06dy2dc1aafm61ynw9gzig88la3km9dsh53bxf4mnw7l7kjisn2i"))
40 (patches (search-patches "ninja-zero-mtime.patch" 41 (patches (search-patches "ninja-zero-mtime.patch"
41 "ninja-tests.patch")))) 42 "ninja-tests.patch"))))
42 (build-system gnu-build-system) 43 (build-system gnu-build-system)
@@ -69,7 +70,7 @@
69 (install-file "ninja" bin) 70 (install-file "ninja" bin)
70 (install-file "doc/manual.asciidoc" doc) 71 (install-file "doc/manual.asciidoc" doc)
71 #t)))))) 72 #t))))))
72 (home-page "http://martine.github.io/ninja/") 73 (home-page "https://ninja-build.org/")
73 (synopsis "Small build system") 74 (synopsis "Small build system")
74 (description 75 (description
75 "Ninja is a small build system with a focus on speed. It differs from 76 "Ninja is a small build system with a focus on speed. It differs from
diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm
index 2f269d08b17..887ef930ffc 100644
--- a/gnu/packages/node.scm
+++ b/gnu/packages/node.scm
@@ -2,6 +2,7 @@
2;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com> 2;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
3;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> 3;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
4;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org> 4;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
5;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
5;;; 6;;;
6;;; This file is part of GNU Guix. 7;;; This file is part of GNU Guix.
7;;; 8;;;
@@ -99,7 +100,23 @@
99 (zero? (apply system* 100 (zero? (apply system*
100 (string-append (assoc-ref inputs "python") 101 (string-append (assoc-ref inputs "python")
101 "/bin/python") 102 "/bin/python")
102 "configure" flags)))))))) 103 "configure" flags)))))
104 (replace 'patch-shebangs
105 (lambda* (#:key outputs #:allow-other-keys #:rest all)
106 ;; Work around <http://bugs.gnu.org/23723>.
107 (let* ((patch (assoc-ref %standard-phases 'patch-shebangs))
108 (npm (string-append (assoc-ref outputs "out")
109 "/bin/npm"))
110 (target (readlink npm)))
111 (and (apply patch all)
112 (with-directory-excursion (dirname npm)
113 ;; Turn NPM into a symlink to TARGET again, which 'npm'
114 ;; relies on for the resolution of relative file names
115 ;; in JS files.
116 (delete-file target)
117 (rename-file npm target)
118 (symlink target npm)
119 #t))))))))
103 (native-inputs 120 (native-inputs
104 `(("python" ,python-2) 121 `(("python" ,python-2)
105 ("perl" ,perl) 122 ("perl" ,perl)
diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm
index 780fb7f2525..a316af96662 100644
--- a/gnu/packages/openstack.scm
+++ b/gnu/packages/openstack.scm
@@ -529,14 +529,14 @@ in transmittable and storable formats, such as JSON and MessagePack.")
529(define-public python-oslosphinx 529(define-public python-oslosphinx
530 (package 530 (package
531 (name "python-oslosphinx") 531 (name "python-oslosphinx")
532 (version "4.2.0") 532 (version "4.3.0")
533 (source 533 (source
534 (origin 534 (origin
535 (method url-fetch) 535 (method url-fetch)
536 (uri (pypi-uri "oslosphinx" version)) 536 (uri (pypi-uri "oslosphinx" version))
537 (sha256 537 (sha256
538 (base32 538 (base32
539 "178svff46pmynpsnw06gpxk0w13p1gwkqbsvyxphblxv9wl09ksz")))) 539 "0cz8ym4i1n4rgljlqhyhfkpgdmid7nkb909k8r8nk186m9cmpla2"))))
540 (build-system python-build-system) 540 (build-system python-build-system)
541 (propagated-inputs 541 (propagated-inputs
542 `(("python-requests" ,python-requests))) 542 `(("python-requests" ,python-requests)))
diff --git a/gnu/packages/owncloud.scm b/gnu/packages/owncloud.scm
index 4969d31c01f..f755df4f0b8 100644
--- a/gnu/packages/owncloud.scm
+++ b/gnu/packages/owncloud.scm
@@ -34,14 +34,27 @@
34(define-public owncloud-client 34(define-public owncloud-client
35 (package 35 (package
36 (name "owncloud-client") 36 (name "owncloud-client")
37 (version "2.2.1") 37 (version "2.2.2")
38 (source 38 (source
39 (origin 39 (origin
40 (method url-fetch) 40 (method url-fetch)
41 (uri (string-append "https://download.owncloud.com/desktop/stable/" 41 (uri (string-append "https://download.owncloud.com/desktop/stable/"
42 "owncloudclient-" version ".tar.xz")) 42 "owncloudclient-" version ".tar.xz"))
43 (sha256 43 (sha256
44 (base32 "1wis62jk4y4mbr25y39y6af57pi6vp2mbryazmvn6zgnygf69m3h")))) 44 (base32 "0m0pxv12w72qqgxim9fh8w3bgkgnhpjyay8ldll3nnzq1jmhk09n"))
45 (modules '((guix build utils)))
46 (snippet
47 '(begin
48 ;; only allows bundled libcrashreporter-qt
49 (delete-file-recursively "src/3rdparty/libcrashreporter-qt")
50 ;; we already package qtkeychain and sqlite
51 (delete-file-recursively "src/3rdparty/qtkeychain")
52 (delete-file-recursively "src/3rdparty/sqlite3")
53 ;; qjson is packaged, qprogessindicator, qlockedfile, qtokenizer and
54 ;; qtsingleapplication have not yet been packaged, but all are
55 ;; explicitly used from the 3rdparty folder during build.
56 ;; We can also remove the macgoodies folder
57 (delete-file-recursively "src/3rdparty/qtmacgoodies")))))
45 (build-system cmake-build-system) 58 (build-system cmake-build-system)
46 (arguments 59 (arguments
47 `(#:phases 60 `(#:phases
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index f3a1cda149d..cd58fde2495 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -192,7 +192,8 @@
192 (propagated-inputs 192 (propagated-inputs
193 `(("gnutls" ,gnutls) ;for 'guix download' & co. 193 `(("gnutls" ,gnutls) ;for 'guix download' & co.
194 ("guile-json" ,guile-json) 194 ("guile-json" ,guile-json)
195 ("geiser" ,geiser))) ;for guix.el 195 ("geiser" ,geiser) ;for guix.el
196 ("emacs-magit-popup" ,emacs-magit-popup))) ;for "M-x guix" command
196 197
197 (home-page "http://www.gnu.org/software/guix") 198 (home-page "http://www.gnu.org/software/guix")
198 (synopsis "Functional package manager for installed software packages and versions") 199 (synopsis "Functional package manager for installed software packages and versions")
@@ -474,13 +475,13 @@ transactions from C or Python.")
474(define-public diffoscope 475(define-public diffoscope
475 (package 476 (package
476 (name "diffoscope") 477 (name "diffoscope")
477 (version "51") 478 (version "54")
478 (source (origin 479 (source (origin
479 (method url-fetch) 480 (method url-fetch)
480 (uri (pypi-uri name version)) 481 (uri (pypi-uri name version))
481 (sha256 482 (sha256
482 (base32 483 (base32
483 "18rn6rrwh586228vnaf1nq0wayh19zbvfc0qmnbys6ln2pv2v007")))) 484 "1dv46ywzcll3mlqgvr48mq7rncizfvsic62c6dd2kdhynb22087n"))))
484 (build-system python-build-system) 485 (build-system python-build-system)
485 (arguments 486 (arguments
486 `(#:phases (modify-phases %standard-phases 487 `(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index d1f49abed39..766167d6e9b 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -44,7 +44,7 @@
44(define-public parallel 44(define-public parallel
45 (package 45 (package
46 (name "parallel") 46 (name "parallel")
47 (version "20160522") 47 (version "20160622")
48 (source 48 (source
49 (origin 49 (origin
50 (method url-fetch) 50 (method url-fetch)
@@ -52,7 +52,7 @@
52 version ".tar.bz2")) 52 version ".tar.bz2"))
53 (sha256 53 (sha256
54 (base32 54 (base32
55 "03r07ksxw5xx946x9s26ivifgldr8bc9bz6da4wfrd0dx4546xyy")))) 55 "1axng9bwapmb0vrrv67pp787gv7r5g02zyrfwnrhpxhi8zmm1jmg"))))
56 (build-system gnu-build-system) 56 (build-system gnu-build-system)
57 (inputs `(("perl" ,perl))) 57 (inputs `(("perl" ,perl)))
58 (home-page "http://www.gnu.org/software/parallel/") 58 (home-page "http://www.gnu.org/software/parallel/")
diff --git a/gnu/packages/patches/avrdude-fix-libusb.patch b/gnu/packages/patches/avrdude-fix-libusb.patch
deleted file mode 100644
index 13d0eca91ca..00000000000
--- a/gnu/packages/patches/avrdude-fix-libusb.patch
+++ /dev/null
@@ -1,256 +0,0 @@
1Avrdude cannot build with our version of libusb. This patch fixes that.
2See http://savannah.nongnu.org/bugs/?41854
3
4diff --git a/dfu.c b/dfu.c
5index 7d349bc..0f80440 100644
6--- a/dfu.c
7+++ b/dfu.c
8@@ -36,13 +36,14 @@
9
10 #ifndef HAVE_LIBUSB
11
12-int dfu_open(struct dfu_dev *dfu, char *port_name) {
13+struct dfu_dev * dfu_open(char *port_spec) {
14 fprintf(stderr, "%s: Error: No USB support in this compile of avrdude\n",
15 progname);
16- return -1;
17+ return NULL;
18 }
19
20-int dfu_init(struct dfu_dev *dfu, unsigned short usb_pid) {
21+int dfu_init(struct dfu_dev *dfu,
22+ unsigned short vid, unsigned short pid) {
23 return -1;
24 }
25
26diff --git a/flip1.c b/flip1.c
27index b891d80..0959996 100644
28--- a/flip1.c
29+++ b/flip1.c
30@@ -164,6 +164,8 @@ static void flip1_setup(PROGRAMMER * pgm);
31 static void flip1_teardown(PROGRAMMER * pgm);
32
33 /* INTERNAL PROGRAMMER FUNCTION PROTOTYPES */
34+#ifdef HAVE_LIBUSB
35+// The internal ones are made conditional, as they're not defined further down #ifndef HAVE_LIBUSB
36
37 static void flip1_show_info(struct flip1 *flip1);
38
39@@ -177,6 +179,8 @@ static const char * flip1_mem_unit_str(enum flip1_mem_unit mem_unit);
40 static int flip1_set_mem_page(struct dfu_dev *dfu, unsigned short page_addr);
41 static enum flip1_mem_unit flip1_mem_unit(const char *name);
42
43+#endif /* HAVE_LIBUSB */
44+
45 /* THE INITPGM FUNCTION DEFINITIONS */
46
47 void flip1_initpgm(PROGRAMMER *pgm)
48@@ -201,6 +205,7 @@ void flip1_initpgm(PROGRAMMER *pgm)
49 pgm->teardown = flip1_teardown;
50 }
51
52+#ifdef HAVE_LIBUSB
53 /* EXPORTED PROGRAMMER FUNCTION DEFINITIONS */
54
55 int flip1_open(PROGRAMMER *pgm, char *port_spec)
56@@ -876,3 +881,82 @@ enum flip1_mem_unit flip1_mem_unit(const char *name) {
57 return FLIP1_MEM_UNIT_EEPROM;
58 return FLIP1_MEM_UNIT_UNKNOWN;
59 }
60+#else /* HAVE_LIBUSB */
61+// Dummy functions
62+int flip1_open(PROGRAMMER *pgm, char *port_spec)
63+{
64+ fprintf(stderr, "%s: Error: No USB support in this compile of avrdude\n",
65+ progname);
66+ return NULL;
67+}
68+
69+int flip1_initialize(PROGRAMMER* pgm, AVRPART *part)
70+{
71+ return -1;
72+}
73+
74+void flip1_close(PROGRAMMER* pgm)
75+{
76+}
77+
78+void flip1_enable(PROGRAMMER* pgm)
79+{
80+}
81+
82+void flip1_disable(PROGRAMMER* pgm)
83+{
84+}
85+
86+void flip1_display(PROGRAMMER* pgm, const char *prefix)
87+{
88+}
89+
90+int flip1_program_enable(PROGRAMMER* pgm, AVRPART *part)
91+{
92+ return -1;
93+}
94+
95+int flip1_chip_erase(PROGRAMMER* pgm, AVRPART *part)
96+{
97+ return -1;
98+}
99+
100+int flip1_read_byte(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
101+ unsigned long addr, unsigned char *value)
102+{
103+ return -1;
104+}
105+
106+int flip1_write_byte(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
107+ unsigned long addr, unsigned char value)
108+{
109+ return -1;
110+}
111+
112+int flip1_paged_load(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
113+ unsigned int page_size, unsigned int addr, unsigned int n_bytes)
114+{
115+ return -1;
116+}
117+
118+int flip1_paged_write(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
119+ unsigned int page_size, unsigned int addr, unsigned int n_bytes)
120+{
121+ return -1;
122+}
123+
124+int flip1_read_sig_bytes(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem)
125+{
126+ return -1;
127+}
128+
129+void flip1_setup(PROGRAMMER * pgm)
130+{
131+}
132+
133+void flip1_teardown(PROGRAMMER * pgm)
134+{
135+}
136+
137+
138+#endif /* HAVE_LIBUSB */
139\ No newline at end of file
140
141diff --git a/flip2.c b/flip2.c
142index ed8e996..16c4bf8 100644
143--- a/flip2.c
144+++ b/flip2.c
145@@ -151,6 +151,8 @@ static void flip2_setup(PROGRAMMER * pgm);
146 static void flip2_teardown(PROGRAMMER * pgm);
147
148 /* INTERNAL PROGRAMMER FUNCTION PROTOTYPES */
149+#ifdef HAVE_LIBUSB
150+// The internal ones are made conditional, as they're not defined further down #ifndef HAVE_LIBUSB
151
152 static void flip2_show_info(struct flip2 *flip2);
153
154@@ -171,6 +173,8 @@ static const char * flip2_status_str(const struct dfu_status *status);
155 static const char * flip2_mem_unit_str(enum flip2_mem_unit mem_unit);
156 static enum flip2_mem_unit flip2_mem_unit(const char *name);
157
158+#endif /* HAVE_LIBUSB */
159+
160 /* THE INITPGM FUNCTION DEFINITIONS */
161
162 void flip2_initpgm(PROGRAMMER *pgm)
163@@ -195,6 +199,7 @@ void flip2_initpgm(PROGRAMMER *pgm)
164 pgm->teardown = flip2_teardown;
165 }
166
167+#ifdef HAVE_LIBUSB
168 /* EXPORTED PROGRAMMER FUNCTION DEFINITIONS */
169
170 int flip2_open(PROGRAMMER *pgm, char *port_spec)
171@@ -922,3 +927,85 @@ enum flip2_mem_unit flip2_mem_unit(const char *name) {
172 return FLIP2_MEM_UNIT_SIGNATURE;
173 return FLIP2_MEM_UNIT_UNKNOWN;
174 }
175+
176+#else /* HAVE_LIBUSB */
177+
178+/* EXPORTED PROGRAMMER FUNCTION DEFINITIONS */
179+
180+int flip2_open(PROGRAMMER *pgm, char *port_spec)
181+{
182+ fprintf(stderr, "%s: Error: No USB support in this compile of avrdude\n",
183+ progname);
184+ return NULL;
185+}
186+
187+int flip2_initialize(PROGRAMMER* pgm, AVRPART *part)
188+{
189+ return -1;
190+}
191+
192+void flip2_close(PROGRAMMER* pgm)
193+{
194+}
195+
196+void flip2_enable(PROGRAMMER* pgm)
197+{
198+}
199+
200+void flip2_disable(PROGRAMMER* pgm)
201+{
202+}
203+
204+void flip2_display(PROGRAMMER* pgm, const char *prefix)
205+{
206+}
207+
208+int flip2_program_enable(PROGRAMMER* pgm, AVRPART *part)
209+{
210+ return -1;
211+}
212+
213+int flip2_chip_erase(PROGRAMMER* pgm, AVRPART *part)
214+{
215+ return -1;
216+}
217+
218+int flip2_read_byte(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
219+ unsigned long addr, unsigned char *value)
220+{
221+ return -1;
222+}
223+
224+int flip2_write_byte(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
225+ unsigned long addr, unsigned char value)
226+{
227+ return -1;
228+}
229+
230+int flip2_paged_load(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
231+ unsigned int page_size, unsigned int addr, unsigned int n_bytes)
232+{
233+ return -1;
234+}
235+
236+int flip2_paged_write(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
237+ unsigned int page_size, unsigned int addr, unsigned int n_bytes)
238+{
239+ return -1;
240+}
241+
242+int flip2_read_sig_bytes(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem)
243+{
244+ return -1;
245+}
246+
247+void flip2_setup(PROGRAMMER * pgm)
248+{
249+}
250+
251+void flip2_teardown(PROGRAMMER * pgm)
252+{
253+}
254+
255+
256+#endif /* HAVE_LIBUSB */
diff --git a/gnu/packages/patches/clang-3.8-libc-search-path.patch b/gnu/packages/patches/clang-3.8-libc-search-path.patch
new file mode 100644
index 00000000000..0f7d0a4add4
--- /dev/null
+++ b/gnu/packages/patches/clang-3.8-libc-search-path.patch
@@ -0,0 +1,69 @@
1Clang attempts to guess file names based on the OS and distro (yes!),
2but unfortunately, that doesn't work for us.
3
4This patch makes it easy to insert libc's $libdir so that Clang passes the
5correct absolute file name of crt1.o etc. to 'ld'. It also disables all
6the distro-specific stuff and removes the hard-coded FHS directory names
7to make sure Clang also works on non-GuixSD systems.
8
9This patch makes slight adjustments over "clang-libc-search-path.patch" for
10changes in clang 3.8.
11
12--- cfe-3.8.0.src/lib/Driver/ToolChains.cpp
13+++ cfe-3.8.0.src/lib/Driver/ToolChains.cpp
14@@ -3661,6 +3661,9 @@
15 GCCInstallation.getTriple().str() + "/bin")
16 .str());
17
18+ // Comment out the distro-specific tweaks so that they don't bite when
19+ // using Guix on a foreign distro.
20+#if 0
21 Distro Distro = DetectDistro(D, Arch);
22
23 if (IsOpenSUSE(Distro) || IsUbuntu(Distro)) {
24@@ -3702,6 +3705,7 @@
25
26 if (IsOpenSUSE(Distro))
27 ExtraOpts.push_back("--enable-new-dtags");
28+#endif
29
30 // The selection of paths to try here is designed to match the patterns which
31 // the GCC driver itself uses, as this is part of the GCC-compatible driver.
32@@ -3771,14 +3775,12 @@
33 addPathIfExists(D, D.Dir + "/../" + OSLibDir, Paths);
34 }
35
36- addPathIfExists(D, SysRoot + "/lib/" + MultiarchTriple, Paths);
37- addPathIfExists(D, SysRoot + "/lib/../" + OSLibDir, Paths);
38- addPathIfExists(D, SysRoot + "/usr/lib/" + MultiarchTriple, Paths);
39- addPathIfExists(D, SysRoot + "/usr/lib/../" + OSLibDir, Paths);
40-
41 // Try walking via the GCC triple path in case of biarch or multiarch GCC
42 // installations with strange symlinks.
43 if (GCCInstallation.isValid()) {
44+ // The following code would end up adding things like
45+ // "/usr/lib/x86_64-unknown-linux-gnu/../../lib64" to the search path.
46+#if 0
47 addPathIfExists(D,
48 SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() +
49 "/../../" + OSLibDir,
50@@ -3791,6 +3793,7 @@
51 BiarchSibling.gccSuffix(),
52 Paths);
53 }
54+#endif
55
56 // See comments above on the multilib variant for details of why this is
57 // included even from outside the sysroot.
58@@ -3815,8 +3818,9 @@
59 if (StringRef(D.Dir).startswith(SysRoot))
60 addPathIfExists(D, D.Dir + "/../lib", Paths);
61
62- addPathIfExists(D, SysRoot + "/lib", Paths);
63- addPathIfExists(D, SysRoot + "/usr/lib", Paths);
64+ // Add libc's lib/ directory to the search path, so that crt1.o, crti.o,
65+ // and friends can be found.
66+ addPathIfExists(D, "@GLIBC_LIBDIR@", Paths);
67 }
68
69 bool Linux::HasNativeLLVMSupport() const { return true; }
diff --git a/gnu/packages/patches/gd-CVE-2016-5766.patch b/gnu/packages/patches/gd-CVE-2016-5766.patch
new file mode 100644
index 00000000000..400cb0ab480
--- /dev/null
+++ b/gnu/packages/patches/gd-CVE-2016-5766.patch
@@ -0,0 +1,81 @@
1Fix CVE-2016-5766 (Integer Overflow in _gd2GetHeader() resulting in heap
2overflow).
3
4https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5766
5
6Adapted from upstream commits:
7https://github.com/libgd/libgd/commit/aba3db8ba159465ecec1089027a24835a6da9cc0
8https://github.com/libgd/libgd/commit/a6a0e7feabb2a9738086a5dc96348f233c87fa79
9
10Since `patch` cannot apply Git binary diffs, we omit the addition of
11'tests/gd2/php_bug_72339.c' and its associated binary data.
12
13From aba3db8ba159465ecec1089027a24835a6da9cc0 Mon Sep 17 00:00:00 2001
14From: Pierre Joye <pierre.php@gmail.com>
15Date: Tue, 28 Jun 2016 16:23:42 +0700
16Subject: [PATCH] fix php bug 72339 (CVE-2016-5766), Integer Overflow in
17 _gd2GetHeader() resulting in heap overflow
18
19---
20 src/gd_gd2.c | 5 ++++-
21 tests/gd2/CMakeLists.txt | 1 +
22 tests/gd2/Makemodule.am | 6 ++++--
23 tests/gd2/php_bug_72339.c | 21 +++++++++++++++++++++
24 tests/gd2/php_bug_72339_exp.gd2 | Bin 0 -> 67108882 bytes
25 5 files changed, 30 insertions(+), 3 deletions(-)
26 create mode 100644 tests/gd2/php_bug_72339.c
27 create mode 100644 tests/gd2/php_bug_72339_exp.gd2
28
29diff --git a/src/gd_gd2.c b/src/gd_gd2.c
30index fd1e0c9..bdbbecf 100644
31--- a/src/gd_gd2.c
32+++ b/src/gd_gd2.c
33@@ -154,8 +154,11 @@ _gd2GetHeader (gdIOCtxPtr in, int *sx, int *sy,
34 nc = (*ncx) * (*ncy);
35 GD2_DBG (printf ("Reading %d chunk index entries\n", nc));
36 sidx = sizeof (t_chunk_info) * nc;
37+ if (overflow2(sidx, nc)) {
38+ goto fail1;
39+ }
40 cidx = gdCalloc (sidx, 1);
41- if (!cidx) {
42+ if (cidx == NULL) {
43 goto fail1;
44 }
45 for (i = 0; i < nc; i++) {
46From a6a0e7feabb2a9738086a5dc96348f233c87fa79 Mon Sep 17 00:00:00 2001
47From: Pierre Joye <pierre.php@gmail.com>
48Date: Wed, 29 Jun 2016 09:36:26 +0700
49Subject: [PATCH] fix php bug 72339 (CVE-2016-5766), Integer Overflow in
50 _gd2GetHeader() resulting in heap overflow. Sync with php's sync
51
52---
53 src/gd_gd2.c | 7 ++++++-
54 tests/gd2/php_bug_72339.c | 2 +-
55 2 files changed, 7 insertions(+), 2 deletions(-)
56
57diff --git a/src/gd_gd2.c b/src/gd_gd2.c
58index bdbbecf..2837456 100644
59--- a/src/gd_gd2.c
60+++ b/src/gd_gd2.c
61@@ -152,11 +152,16 @@ _gd2GetHeader (gdIOCtxPtr in, int *sx, int *sy,
62
63 if (gd2_compressed (*fmt)) {
64 nc = (*ncx) * (*ncy);
65+
66 GD2_DBG (printf ("Reading %d chunk index entries\n", nc));
67+ if (overflow2(sizeof(t_chunk_info), nc)) {
68+ goto fail1;
69+ }
70 sidx = sizeof (t_chunk_info) * nc;
71- if (overflow2(sidx, nc)) {
72+ if (sidx <= 0) {
73 goto fail1;
74 }
75+
76 cidx = gdCalloc (sidx, 1);
77 if (cidx == NULL) {
78 goto fail1;
79--
802.9.1
81
diff --git a/gnu/packages/patches/gd-CVE-2016-6128.patch b/gnu/packages/patches/gd-CVE-2016-6128.patch
new file mode 100644
index 00000000000..45ee6b0cfa3
--- /dev/null
+++ b/gnu/packages/patches/gd-CVE-2016-6128.patch
@@ -0,0 +1,253 @@
1Fix CVE-2016-6128 (invalid color index is not properly handled leading
2to denial of service).
3
4https://cve.mitre.org/cgi-bin/cvename.cgi?name=2016-6128
5
6Copied from upstream commits:
7https://github.com/libgd/libgd/compare/3fe0a7128bac5000fdcfab888bd2a75ec0c9447d...fd623025505e87bba7ec8555eeb72dae4fb0afd
8
9From 1ccfe21e14c4d18336f9da8515cd17db88c3de61 Mon Sep 17 00:00:00 2001
10From: Pierre Joye <pierre.php@gmail.com>
11Date: Mon, 27 Jun 2016 11:17:39 +0700
12Subject: [PATCH 1/8] fix php 72494, invalid color index not handled, can lead
13 to crash
14
15---
16 src/gd_crop.c | 4 ++++
17 tests/CMakeLists.txt | 1 +
18 tests/Makefile.am | 1 +
19 3 files changed, 6 insertions(+)
20
21diff --git a/src/gd_crop.c b/src/gd_crop.c
22index 0296633..532b49b 100644
23--- a/src/gd_crop.c
24+++ b/src/gd_crop.c
25@@ -136,6 +136,10 @@ BGD_DECLARE(gdImagePtr) gdImageCropThreshold(gdImagePtr im, const unsigned int c
26 return NULL;
27 }
28
29+ if (color < 0 || (!gdImageTrueColor(im) && color >= gdImageColorsTotal(im))) {
30+ return NULL;
31+ }
32+
33 /* TODO: Add gdImageGetRowPtr and works with ptr at the row level
34 * for the true color and palette images
35 * new formats will simply work with ptr
36diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
37index 6f5c786..5093d52 100644
38--- a/tests/CMakeLists.txt
39+++ b/tests/CMakeLists.txt
40@@ -31,6 +31,7 @@ if (BUILD_TEST)
41 gdimagecolortransparent
42 gdimagecopy
43 gdimagecopyrotated
44+ gdimagecrop
45 gdimagefile
46 gdimagefill
47 gdimagefilledellipse
48diff --git a/tests/Makefile.am b/tests/Makefile.am
49index 4f6e756..5a0ebe8 100644
50--- a/tests/Makefile.am
51+++ b/tests/Makefile.am
52@@ -25,6 +25,7 @@ include gdimagecolorresolve/Makemodule.am
53 include gdimagecolortransparent/Makemodule.am
54 include gdimagecopy/Makemodule.am
55 include gdimagecopyrotated/Makemodule.am
56+include gdimagecrop/Makemodule.am
57 include gdimagefile/Makemodule.am
58 include gdimagefill/Makemodule.am
59 include gdimagefilledellipse/Makemodule.am
60--
612.9.1
62
63From 8c9f39c7cb1f62ea00bc7a48aff64d3811c2d6d0 Mon Sep 17 00:00:00 2001
64From: Pierre Joye <pierre.php@gmail.com>
65Date: Mon, 27 Jun 2016 11:20:07 +0700
66Subject: [PATCH 2/8] fix php 72494, invalid color index not handled, can lead
67 to crash
68
69---
70 tests/gdimagecrop/.gitignore | 1 +
71 1 file changed, 1 insertion(+)
72 create mode 100644 tests/gdimagecrop/.gitignore
73
74diff --git a/tests/gdimagecrop/.gitignore b/tests/gdimagecrop/.gitignore
75new file mode 100644
76index 0000000..8e8c9c3
77--- /dev/null
78+++ b/tests/gdimagecrop/.gitignore
79@@ -0,0 +1 @@
80+/php_bug_72494
81--
822.9.1
83
84From 8de370b7b6263a02268037a7cd13ddd991b43ea9 Mon Sep 17 00:00:00 2001
85From: Pierre Joye <pierre.php@gmail.com>
86Date: Mon, 27 Jun 2016 11:24:50 +0700
87Subject: [PATCH 3/8] fix php 72494, invalid color index not handled, can lead
88 to crash
89
90---
91 tests/gdimagecrop/CMakeLists.txt | 5 +++++
92 1 file changed, 5 insertions(+)
93 create mode 100644 tests/gdimagecrop/CMakeLists.txt
94
95diff --git a/tests/gdimagecrop/CMakeLists.txt b/tests/gdimagecrop/CMakeLists.txt
96new file mode 100644
97index 0000000..f7e4c7e
98--- /dev/null
99+++ b/tests/gdimagecrop/CMakeLists.txt
100@@ -0,0 +1,5 @@
101+SET(TESTS_FILES
102+ php_bug_72494
103+)
104+
105+ADD_GD_TESTS()
106--
1072.9.1
108
109From bca12e4e11ecda8a0ea719472700ad5c2b36a0d6 Mon Sep 17 00:00:00 2001
110From: Pierre Joye <pierre.php@gmail.com>
111Date: Mon, 27 Jun 2016 11:25:12 +0700
112Subject: [PATCH 4/8] fix php 72494, invalid color index not handled, can lead
113 to crash
114
115---
116 tests/gdimagecrop/Makemodule.am | 5 +++++
117 1 file changed, 5 insertions(+)
118 create mode 100644 tests/gdimagecrop/Makemodule.am
119
120diff --git a/tests/gdimagecrop/Makemodule.am b/tests/gdimagecrop/Makemodule.am
121new file mode 100644
122index 0000000..210888b
123--- /dev/null
124+++ b/tests/gdimagecrop/Makemodule.am
125@@ -0,0 +1,5 @@
126+libgd_test_programs += \
127+ gdimagecrop/php_bug_72494
128+
129+EXTRA_DIST += \
130+ gdimagecrop/CMakeLists.txt
131--
1322.9.1
133
134From 6ff72ae40c7c20ece939afb362d98cc37f4a1c96 Mon Sep 17 00:00:00 2001
135From: Pierre Joye <pierre.php@gmail.com>
136Date: Mon, 27 Jun 2016 11:25:40 +0700
137Subject: [PATCH 5/8] fix php 72494, invalid color index not handled, can lead
138 to crash
139
140---
141 tests/gdimagecrop/php_bug_72494.c | 23 +++++++++++++++++++++++
142 1 file changed, 23 insertions(+)
143 create mode 100644 tests/gdimagecrop/php_bug_72494.c
144
145diff --git a/tests/gdimagecrop/php_bug_72494.c b/tests/gdimagecrop/php_bug_72494.c
146new file mode 100644
147index 0000000..adaa379
148--- /dev/null
149+++ b/tests/gdimagecrop/php_bug_72494.c
150@@ -0,0 +1,23 @@
151+#include <stdio.h>
152+#include <stdlib.h>
153+#include "gd.h"
154+
155+#include "gdtest.h"
156+
157+int main()
158+{
159+ gdImagePtr im, exp;
160+ int error = 0;
161+
162+ im = gdImageCreate(50, 50);
163+
164+ if (!im) {
165+ gdTestErrorMsg("gdImageCreate failed.\n");
166+ return 1;
167+ }
168+
169+ gdImageCropThreshold(im, 1337, 0);
170+ gdImageDestroy(im);
171+ /* this bug tests a crash, it never reaches this point if the bug exists*/
172+ return 0;
173+}
174--
1752.9.1
176
177From a0f9f8f7bd0d3a6c6afd6d180b8e75d93aadddfa Mon Sep 17 00:00:00 2001
178From: Pierre Joye <pierre.php@gmail.com>
179Date: Mon, 27 Jun 2016 11:38:07 +0700
180Subject: [PATCH 6/8] fix php 72494, CID 149753, color is unsigned int, remove
181 useless <0 comparison
182
183---
184 src/gd_crop.c | 2 +-
185 1 file changed, 1 insertion(+), 1 deletion(-)
186
187diff --git a/src/gd_crop.c b/src/gd_crop.c
188index 532b49b..d51ad67 100644
189--- a/src/gd_crop.c
190+++ b/src/gd_crop.c
191@@ -136,7 +136,7 @@ BGD_DECLARE(gdImagePtr) gdImageCropThreshold(gdImagePtr im, const unsigned int c
192 return NULL;
193 }
194
195- if (color < 0 || (!gdImageTrueColor(im) && color >= gdImageColorsTotal(im))) {
196+ if (!gdImageTrueColor(im) && color >= gdImageColorsTotal(im)) {
197 return NULL;
198 }
199
200--
2012.9.1
202
203From 907115fbb980862934d0de91af4977a216745039 Mon Sep 17 00:00:00 2001
204From: Pierre Joye <pierre.php@gmail.com>
205Date: Mon, 27 Jun 2016 11:51:40 +0700
206Subject: [PATCH 7/8] fix php 72494, CID 149753, color is unsigned int, remove
207 useless <0 comparison
208
209---
210 tests/gdimagecrop/php_bug_72494.c | 2 +-
211 1 file changed, 1 insertion(+), 1 deletion(-)
212
213diff --git a/tests/gdimagecrop/php_bug_72494.c b/tests/gdimagecrop/php_bug_72494.c
214index adaa379..5cb589b 100644
215--- a/tests/gdimagecrop/php_bug_72494.c
216+++ b/tests/gdimagecrop/php_bug_72494.c
217@@ -6,7 +6,7 @@
218
219 int main()
220 {
221- gdImagePtr im, exp;
222+ gdImagePtr im;
223 int error = 0;
224
225 im = gdImageCreate(50, 50);
226--
2272.9.1
228
229From fd623025505e87bba7ec8555eeb72dae4fb0afdc Mon Sep 17 00:00:00 2001
230From: Pierre Joye <pierre.php@gmail.com>
231Date: Mon, 27 Jun 2016 12:04:25 +0700
232Subject: [PATCH 8/8] fix php 72494, CID 149753, color is unsigned int, remove
233 useless <0 comparison
234
235---
236 tests/gdimagecrop/php_bug_72494.c | 1 -
237 1 file changed, 1 deletion(-)
238
239diff --git a/tests/gdimagecrop/php_bug_72494.c b/tests/gdimagecrop/php_bug_72494.c
240index 5cb589b..3bd19be 100644
241--- a/tests/gdimagecrop/php_bug_72494.c
242+++ b/tests/gdimagecrop/php_bug_72494.c
243@@ -7,7 +7,6 @@
244 int main()
245 {
246 gdImagePtr im;
247- int error = 0;
248
249 im = gdImageCreate(50, 50);
250
251--
2522.9.1
253
diff --git a/gnu/packages/patches/gd-CVE-2016-6132.patch b/gnu/packages/patches/gd-CVE-2016-6132.patch
new file mode 100644
index 00000000000..4c475b71b29
--- /dev/null
+++ b/gnu/packages/patches/gd-CVE-2016-6132.patch
@@ -0,0 +1,55 @@
1Fix CVE-2016-6132 (read out-of-bounds when parsing TGA files).
2
3https://cve.mitre.org/cgi-bin/cvename.cgi?name=2016-6132
4
5Copied from upstream commit:
6https://github.com/libgd/libgd/commit/ead349e99868303b37f5e6e9d9d680c9dc71ff8d
7
8From ead349e99868303b37f5e6e9d9d680c9dc71ff8d Mon Sep 17 00:00:00 2001
9From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= <ondrej@sury.org>
10Date: Tue, 12 Jul 2016 11:24:09 +0200
11Subject: [PATCH] Fix #247, A read out-of-bands was found in the parsing of TGA
12 files (CVE-2016-6132)
13
14---
15 src/gd_tga.c | 13 +++++++++++--
16 1 file changed, 11 insertions(+), 2 deletions(-)
17
18diff --git a/src/gd_tga.c b/src/gd_tga.c
19index ef20f86..20fe2d2 100644
20--- a/src/gd_tga.c
21+++ b/src/gd_tga.c
22@@ -237,7 +237,11 @@ int read_image_tga( gdIOCtx *ctx, oTga *tga )
23 return -1;
24 }
25
26- gdGetBuf(conversion_buffer, image_block_size, ctx);
27+ if (gdGetBuf(conversion_buffer, image_block_size, ctx) != image_block_size) {
28+ gd_error("gd-tga: premature end of image data\n");
29+ gdFree(conversion_buffer);
30+ return -1;
31+ }
32
33 while (buffer_caret < image_block_size) {
34 tga->bitmap[buffer_caret] = (int) conversion_buffer[buffer_caret];
35@@ -257,11 +261,16 @@ int read_image_tga( gdIOCtx *ctx, oTga *tga )
36 }
37 conversion_buffer = (unsigned char *) gdMalloc(image_block_size * sizeof(unsigned char));
38 if (conversion_buffer == NULL) {
39+ gd_error("gd-tga: premature end of image data\n");
40 gdFree( decompression_buffer );
41 return -1;
42 }
43
44- gdGetBuf( conversion_buffer, image_block_size, ctx );
45+ if (gdGetBuf(conversion_buffer, image_block_size, ctx) != image_block_size) {
46+ gdFree(conversion_buffer);
47+ gdFree(decompression_buffer);
48+ return -1;
49+ }
50
51 buffer_caret = 0;
52
53--
542.9.1
55
diff --git a/gnu/packages/patches/gd-CVE-2016-6214.patch b/gnu/packages/patches/gd-CVE-2016-6214.patch
new file mode 100644
index 00000000000..7894a32bb11
--- /dev/null
+++ b/gnu/packages/patches/gd-CVE-2016-6214.patch
@@ -0,0 +1,66 @@
1Fix CVE-2016-6214 (read out-of-bounds when parsing TGA files).
2
3https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6214
4
5Adapted from upstream commit:
6https://github.com/libgd/libgd/commit/341aa68843ceceae9ba6e083431f14a07bd92308
7
8Since `patch` cannot apply Git binary diffs, we omit the addition of
9'tests/tga/bug00247a.c' and its associated binary data.
10
11From 341aa68843ceceae9ba6e083431f14a07bd92308 Mon Sep 17 00:00:00 2001
12From: "Christoph M. Becker" <cmbecker69@gmx.de>
13Date: Tue, 12 Jul 2016 19:23:13 +0200
14Subject: [PATCH] Unsupported TGA bpp/alphabit combinations should error
15 gracefully
16
17Currently, only 24bpp without alphabits and 32bpp with 8 alphabits are
18really supported. All other combinations will be rejected with a warning.
19
20(cherry picked from commit cb1a0b7e54e9aa118270c23a4a6fe560e4590dc9)
21---
22 src/gd_tga.c | 16 ++++++----------
23 tests/tga/.gitignore | 1 +
24 tests/tga/CMakeLists.txt | 1 +
25 tests/tga/Makemodule.am | 4 +++-
26 tests/tga/bug00247a.c | 19 +++++++++++++++++++
27 tests/tga/bug00247a.tga | Bin 0 -> 36 bytes
28 6 files changed, 30 insertions(+), 11 deletions(-)
29 create mode 100644 tests/tga/bug00247a.c
30 create mode 100644 tests/tga/bug00247a.tga
31
32diff --git a/src/gd_tga.c b/src/gd_tga.c
33index 20fe2d2..b4f8fa6 100644
34--- a/src/gd_tga.c
35+++ b/src/gd_tga.c
36@@ -99,7 +99,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromTgaCtx(gdIOCtx* ctx)
37 if (tga->bits == TGA_BPP_24) {
38 *tpix = gdTrueColor(tga->bitmap[bitmap_caret + 2], tga->bitmap[bitmap_caret + 1], tga->bitmap[bitmap_caret]);
39 bitmap_caret += 3;
40- } else if (tga->bits == TGA_BPP_32 || tga->alphabits) {
41+ } else if (tga->bits == TGA_BPP_32 && tga->alphabits) {
42 register int a = tga->bitmap[bitmap_caret + 3];
43
44 *tpix = gdTrueColorAlpha(tga->bitmap[bitmap_caret + 2], tga->bitmap[bitmap_caret + 1], tga->bitmap[bitmap_caret], gdAlphaMax - (a >> 1));
45@@ -159,16 +159,12 @@ int read_header_tga(gdIOCtx *ctx, oTga *tga)
46 printf("wxh: %i %i\n", tga->width, tga->height);
47 #endif
48
49- switch(tga->bits) {
50- case 8:
51- case 16:
52- case 24:
53- case 32:
54- break;
55- default:
56- gd_error("bps %i not supported", tga->bits);
57+ if (!((tga->bits == TGA_BPP_24 && tga->alphabits == 0)
58+ || (tga->bits == TGA_BPP_32 && tga->alphabits == 8)))
59+ {
60+ gd_error_ex(GD_WARNING, "gd-tga: %u bits per pixel with %u alpha bits not supported\n",
61+ tga->bits, tga->alphabits);
62 return -1;
63- break;
64 }
65
66 tga->ident = NULL;
diff --git a/gnu/packages/patches/gd-fix-test-on-i686.patch b/gnu/packages/patches/gd-fix-test-on-i686.patch
new file mode 100644
index 00000000000..6dd2e0fb032
--- /dev/null
+++ b/gnu/packages/patches/gd-fix-test-on-i686.patch
@@ -0,0 +1,34 @@
1Disable part of the gdimagerotate test on architectures such as i686
2where intermediate floating-point operations are done with 80-bit long
3doubles, and typically later rounded to 64-bit doubles. This double
4rounding causes small differences in the resulting pixel values
5compared with other architectures, causing the image comparison to
6fail.
7
8Patch by Mark H Weaver <mhw@netris.org>.
9
10--- libgd-2.2.2/tests/gdimagerotate/bug00067.c 1969-12-31 19:00:00.000000000 -0500
11+++ libgd-2.2.2/tests/gdimagerotate/bug00067.c 2016-07-18 12:19:19.885423132 -0400
12@@ -1,5 +1,6 @@
13 #include <stdio.h>
14 #include <stdlib.h>
15+#include <float.h>
16 #include "gd.h"
17
18 #include "gdtest.h"
19@@ -41,6 +42,7 @@
20 return 1;
21 }
22
23+#if FLT_EVAL_METHOD != 2
24 sprintf(filename, "bug00067_%03d_exp.png", angle);
25 path = gdTestFilePath2("gdimagerotate", filename);
26 if (!gdAssertImageEqualsToFile(path, exp)) {
27@@ -48,6 +50,7 @@
28 error += 1;
29 }
30 free(path);
31+#endif
32
33 gdImageDestroy(exp);
34 }
diff --git a/gnu/packages/patches/gimp-CVE-2016-4994.patch b/gnu/packages/patches/gimp-CVE-2016-4994.patch
new file mode 100644
index 00000000000..6c81c63386c
--- /dev/null
+++ b/gnu/packages/patches/gimp-CVE-2016-4994.patch
@@ -0,0 +1,96 @@
1Fix CVE-2016-4994:
2https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-4994
3
4Copied from upstream repository:
5https://git.gnome.org/browse/gimp/patch/?id=e82aaa4b4ee0703c879e35ea9321fff6be3e9b6f
6
7From e82aaa4b4ee0703c879e35ea9321fff6be3e9b6f Mon Sep 17 00:00:00 2001
8From: Shmuel H <shmuelgimp@gmail.com>
9Date: Mon, 20 Jun 2016 17:14:41 +0300
10Subject: Bug 767873 - (CVE-2016-4994) Multiple Use-After-Free when parsing...
11
12...XCF channel and layer properties
13
14The properties PROP_ACTIVE_LAYER, PROP_FLOATING_SELECTION,
15PROP_ACTIVE_CHANNEL saves the current object pointer the @info
16structure. Others like PROP_SELECTION (for channel) and
17PROP_GROUP_ITEM (for layer) will delete the current object and create
18a new object, leaving the pointers in @info invalid (dangling).
19
20Therefore, if a property from the first type will come before the
21second, the result will be an UaF in the last lines of xcf_load_image
22(when it actually using the pointers from @info).
23
24I wasn't able to exploit this bug because that
25g_object_instance->c_class gets cleared by the last g_object_unref and
26GIMP_IS_{LAYER,CHANNEL} detects that and return FALSE.
27
28(cherry picked from commit 6d804bf9ae77bc86a0a97f9b944a129844df9395)
29---
30 app/xcf/xcf-load.c | 29 +++++++++++++++++++++++++++++
31 1 file changed, 29 insertions(+)
32
33diff --git a/app/xcf/xcf-load.c b/app/xcf/xcf-load.c
34index b180377..67cc6d4 100644
35--- a/app/xcf/xcf-load.c
36+++ b/app/xcf/xcf-load.c
37@@ -904,6 +904,18 @@ xcf_load_layer_props (XcfInfo *info,
38 case PROP_GROUP_ITEM:
39 {
40 GimpLayer *group;
41+ gboolean is_active_layer;
42+
43+ /* We're going to delete *layer, Don't leave its pointers
44+ * in @info. After that, we'll restore them back with the
45+ * new pointer. See bug #767873.
46+ */
47+ is_active_layer = (*layer == info->active_layer);
48+ if (is_active_layer)
49+ info->active_layer = NULL;
50+
51+ if (*layer == info->floating_sel)
52+ info->floating_sel = NULL;
53
54 group = gimp_group_layer_new (image);
55
56@@ -916,6 +928,13 @@ xcf_load_layer_props (XcfInfo *info,
57 g_object_ref_sink (*layer);
58 g_object_unref (*layer);
59 *layer = group;
60+
61+ if (is_active_layer)
62+ info->active_layer = *layer;
63+
64+ /* Don't restore info->floating_sel because group layers
65+ * can't be floating selections
66+ */
67 }
68 break;
69
70@@ -986,6 +1005,12 @@ xcf_load_channel_props (XcfInfo *info,
71 {
72 GimpChannel *mask;
73
74+ /* We're going to delete *channel, Don't leave its pointer
75+ * in @info. See bug #767873.
76+ */
77+ if (*channel == info->active_channel)
78+ info->active_channel = NULL;
79+
80 mask =
81 gimp_selection_new (image,
82 gimp_item_get_width (GIMP_ITEM (*channel)),
83@@ -1000,6 +1025,10 @@ xcf_load_channel_props (XcfInfo *info,
84 *channel = mask;
85 (*channel)->boundary_known = FALSE;
86 (*channel)->bounds_known = FALSE;
87+
88+ /* Don't restore info->active_channel because the
89+ * selection can't be the active channel
90+ */
91 }
92 break;
93
94--
95cgit v0.12
96
diff --git a/gnu/packages/patches/khmer-use-libraries.patch b/gnu/packages/patches/khmer-use-libraries.patch
new file mode 100644
index 00000000000..47d163a99a2
--- /dev/null
+++ b/gnu/packages/patches/khmer-use-libraries.patch
@@ -0,0 +1,16 @@
1Change setup.cfg so that the bundled zlib and bzip2 are not used. This cannot
2currently be achieved using "--library z,bz2" as instructed in the setup.py.
3
4diff --git a/setup.cfg b/setup.cfg
5index c054092..080992e 100644
6--- a/setup.cfg
7+++ b/setup.cfg
8@@ -1,7 +1,7 @@
9 [build_ext]
10 define = SEQAN_HAS_BZIP2,SEQAN_HAS_ZLIB
11 undef = NO_UNIQUE_RC
12-# libraries = z,bz2
13+libraries = z,bz2
14 ## if using system libraries
15 include-dirs = lib:third-party/zlib:third-party/bzip2:third-party/seqan/core/include:third-party/smhasher
16 # include-dirs = lib
diff --git a/gnu/packages/patches/libmtp-devices.patch b/gnu/packages/patches/libmtp-devices.patch
deleted file mode 100644
index 9b985e526d2..00000000000
--- a/gnu/packages/patches/libmtp-devices.patch
+++ /dev/null
@@ -1,554 +0,0 @@
1Add additional devices; the patched file corresponds to git commit 8e471b,
2to which one additional device has been added as reported at
3 http://sourceforge.net/p/libmtp/bugs/1422/
4
5diff -u -r libmtp-1.1.9.orig/src/music-players.h libmtp-1.1.9/src/music-players.h
6--- libmtp-1.1.9.orig/src/music-players.h 2015-09-19 22:54:24.537330594 +0200
7+++ libmtp-1.1.9/src/music-players.h 2015-09-19 23:16:41.079206331 +0200
8@@ -47,82 +47,61 @@
9 * and properties.
10 */
11 { "Creative", 0x041e, "ZEN Vision", 0x411f,
12- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
13- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
14+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
15 { "Creative", 0x041e, "Portable Media Center", 0x4123,
16- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
17- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
18+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
19 { "Creative", 0x041e, "ZEN Xtra (MTP mode)", 0x4128,
20- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
21- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
22+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
23 { "Dell", 0x041e, "DJ (2nd generation)", 0x412f,
24- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
25- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
26+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
27 { "Creative", 0x041e, "ZEN Micro (MTP mode)", 0x4130,
28- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
29- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
30+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
31 { "Creative", 0x041e, "ZEN Touch (MTP mode)", 0x4131,
32- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
33- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
34+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
35 { "Dell", 0x041e, "Dell Pocket DJ (MTP mode)", 0x4132,
36- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
37- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
38- { "Creative", 0x041e, "ZEN MicroPhoto (alternate version)", 0x4133,
39- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
40- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
41+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
42+ { "Creative", 0x041e, "ZEN MicroPhoto (alternate version)", 0x4133,
43+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
44 { "Creative", 0x041e, "ZEN Sleek (MTP mode)", 0x4137,
45- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
46- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
47+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
48 { "Creative", 0x041e, "ZEN MicroPhoto", 0x413c,
49- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
50- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
51+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
52 { "Creative", 0x041e, "ZEN Sleek Photo", 0x413d,
53- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
54- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
55+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
56 { "Creative", 0x041e, "ZEN Vision:M", 0x413e,
57- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
58- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
59+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
60 // Reported by marazm@o2.pl
61 { "Creative", 0x041e, "ZEN V", 0x4150,
62- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
63- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
64+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
65 // Reported by danielw@iinet.net.au
66 // This version of the Vision:M needs the no release interface flag,
67 // unclear whether the other version above need it too or not.
68 { "Creative", 0x041e, "ZEN Vision:M (DVP-HD0004)", 0x4151,
69 DEVICE_FLAG_NO_RELEASE_INTERFACE |
70- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
71- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
72+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
73 // Reported by Darel on the XNJB forums
74 { "Creative", 0x041e, "ZEN V Plus", 0x4152,
75- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
76- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
77+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
78 { "Creative", 0x041e, "ZEN Vision W", 0x4153,
79- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
80- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
81+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
82 // Don't add 0x4155: this is a Zen Stone device which is not MTP
83 // Reported by Paul Kurczaba <paul@kurczaba.com>
84 { "Creative", 0x041e, "ZEN", 0x4157,
85 DEVICE_FLAG_IGNORE_HEADER_ERRORS |
86 DEVICE_FLAG_BROKEN_SET_SAMPLE_DIMENSIONS |
87- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
88- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
89+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
90 // Reported by Ringofan <mcroman@users.sourceforge.net>
91 { "Creative", 0x041e, "ZEN V 2GB", 0x4158,
92- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
93- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
94+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
95 // Reported by j norment <stormzen@gmail.com>
96 { "Creative", 0x041e, "ZEN Mozaic", 0x4161,
97- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
98- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
99+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
100 // Reported by Aaron F. Gonzalez <sub_tex@users.sourceforge.net>
101 { "Creative", 0x041e, "ZEN X-Fi", 0x4162,
102- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
103- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
104+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
105 // Reported by farmerstimuli <farmerstimuli@users.sourceforge.net>
106 { "Creative", 0x041e, "ZEN X-Fi 3", 0x4169,
107- DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL |
108- DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL },
109+ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
110 // Reported by Todor Gyumyushev <yodor1@users.sourceforge.net>
111 { "ZiiLABS", 0x041e, "Zii EGG", 0x6000,
112 DEVICE_FLAG_UNLOAD_DRIVER |
113@@ -607,8 +586,17 @@
114 /* https://sourceforge.net/p/libmtp/bugs/1251/ */
115 { "Acer", 0x0502, "E39", 0x3643,
116 DEVICE_FLAGS_ANDROID_BUGS },
117+ /* https://sourceforge.net/p/libmtp/bugs/1369/ */
118+ { "Acer", 0x0502, "liquid e700", 0x3644,
119+ DEVICE_FLAGS_ANDROID_BUGS },
120 { "Acer", 0x0502, "One 7", 0x3657,
121 DEVICE_FLAGS_ANDROID_BUGS },
122+ /* https://sourceforge.net/p/libmtp/support-requests/183/ */
123+ { "Acer", 0x0502, "Z200", 0x3683,
124+ DEVICE_FLAGS_ANDROID_BUGS },
125+ /* https://sourceforge.net/p/libmtp/bugs/1341/ */
126+ { "Acer", 0x0502, "Liquid S56", 0x3725,
127+ DEVICE_FLAGS_ANDROID_BUGS },
128
129 /*
130 * SanDisk
131@@ -952,6 +940,7 @@
132 { "Archos", 0x0e79, "SPOD (MTP mode)", 0x1341, DEVICE_FLAG_UNLOAD_DRIVER },
133 { "Archos", 0x0e79, "5S IT (MTP mode)", 0x1351, DEVICE_FLAG_UNLOAD_DRIVER },
134 { "Archos", 0x0e79, "5H IT (MTP mode)", 0x1357, DEVICE_FLAG_UNLOAD_DRIVER },
135+ { "Archos", 0x0e79, "48 (MTP mode)", 0x1421, DEVICE_FLAGS_ANDROID_BUGS },
136 { "Archos", 0x0e79, "Arnova Childpad", 0x1458, DEVICE_FLAGS_ANDROID_BUGS },
137 { "Archos", 0x0e79, "Arnova 8c G3", 0x145e, DEVICE_FLAGS_ANDROID_BUGS },
138 { "Archos", 0x0e79, "Arnova 10bG3 Tablet", 0x146b, DEVICE_FLAGS_ANDROID_BUGS },
139@@ -973,9 +962,17 @@
140 { "Archos", 0x0e79, "70it2 (ID 2)", 0x1569, DEVICE_FLAGS_ANDROID_BUGS },
141 { "Archos", 0x0e79, "50c", 0x2008, DEVICE_FLAGS_ANDROID_BUGS },
142 { "Archos", 0x0e79, "C40", 0x31ab, DEVICE_FLAGS_ANDROID_BUGS },
143+ /* https://sourceforge.net/p/libmtp/bugs/1393/ */
144+ { "Archos", 0x0e79, "Phone", 0x31e1, DEVICE_FLAGS_ANDROID_BUGS },
145+ /* https://sourceforge.net/p/libmtp/bugs/1325/ */
146+ { "Archos", 0x0e79, "45 Neon", 0x31f3, DEVICE_FLAGS_ANDROID_BUGS },
147+ /* https://sourceforge.net/p/libmtp/bugs/1352/ */
148+ { "Archos", 0x0e79, "50 Diamond", 0x3229, DEVICE_FLAGS_ANDROID_BUGS },
149 { "Archos", 0x0e79, "101 G4", 0x4002, DEVICE_FLAGS_ANDROID_BUGS },
150 { "Archos (for Tesco)", 0x0e79, "Hudl (ID1)", 0x5008, DEVICE_FLAGS_ANDROID_BUGS },
151 { "Archos (for Tesco)", 0x0e79, "Hudl (ID2)", 0x5009, DEVICE_FLAGS_ANDROID_BUGS },
152+ /* https://sourceforge.net/p/libmtp/bugs/1404/ */
153+ { "Archos", 0x0e79, "AC40DTI", 0x5217, DEVICE_FLAGS_ANDROID_BUGS },
154
155 /*
156 * Dunlop (OEM of EGOMAN ltd?) reported by Nanomad
157@@ -1181,6 +1178,10 @@
158 { "Qualcomm (for OnePlus)", 0x05c6, "One (MTP+ADB)",
159 0x6765, DEVICE_FLAGS_ANDROID_BUGS },
160
161+ /* https://sourceforge.net/p/libmtp/bugs/1377/ */
162+ { "Qualcomm (for Xolo)", 0x901b, "Xolo Black (MTP)",
163+ 0x9039, DEVICE_FLAGS_ANDROID_BUGS },
164+
165 { "Qualcomm (for PhiComm)", 0x05c6, "C230w (MTP)",
166 0x9039, DEVICE_FLAGS_ANDROID_BUGS },
167
168@@ -1221,6 +1222,9 @@
169 // Reported by Thomas Bretthauer
170 { "Fujitsu, Ltd", 0x04c5, "STYLISTIC M532", 0x133b,
171 DEVICE_FLAGS_ANDROID_BUGS },
172+ /* https://sourceforge.net/p/libmtp/feature-requests/137/ */
173+ { "Fujitsu, Ltd", 0x04c5, "F02-E", 0x1378,
174+ DEVICE_FLAGS_ANDROID_BUGS },
175
176 /*
177 * Palm device userland program named Pocket Tunes
178@@ -1247,6 +1251,9 @@
179 // Reported by anonymous SourceForge user
180 { "Medion", 0x066f, "MD8333 (ID2)", 0x8588,
181 DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST },
182+ /* https://sourceforge.net/p/libmtp/bugs/1359/ */
183+ { "Verizon", 0x0408, "Ellipsis 7", 0x3899,
184+ DEVICE_FLAGS_ANDROID_BUGS },
185 // The vendor ID is "Quanta Computer, Inc."
186 // same as Olivetti Olipad 110
187 // Guessing on device flags
188@@ -1403,6 +1410,9 @@
189 DEVICE_FLAGS_ANDROID_BUGS },
190 { "LG Electronics Inc.", 0x1004, "LG2 Optimus", 0x6225,
191 DEVICE_FLAGS_ANDROID_BUGS },
192+ /* https://sourceforge.net/p/libmtp/bugs/1386/ */
193+ { "LG Electronics Inc.", 0x1004, "LG VS950", 0x622a,
194+ DEVICE_FLAGS_ANDROID_BUGS },
195 { "LG Electronics Inc.", 0x1004, "LG VS870", 0x6239,
196 DEVICE_FLAGS_ANDROID_BUGS },
197 /* https://sourceforge.net/p/libmtp/bugs/992/ */
198@@ -1410,6 +1420,8 @@
199 DEVICE_FLAGS_ANDROID_BUGS },
200 { "LG Electronics Inc.", 0x1004, "VK810", 0x6265,
201 DEVICE_FLAGS_ANDROID_BUGS },
202+ { "LG Electronics Inc.", 0x1004, "G3", 0x627f,
203+ DEVICE_FLAGS_ANDROID_BUGS },
204 /* https://sourceforge.net/p/libmtp/support-requests/134/ */
205 { "LG Electronics Inc.", 0x1004, "G3 (VS985)", 0x626e,
206 DEVICE_FLAGS_ANDROID_BUGS },
207@@ -1723,8 +1735,12 @@
208 DEVICE_FLAG_NONE },
209 { "SONY", 0x0fce, "Xperia M2 MTP", 0x01aa,
210 DEVICE_FLAG_NONE },
211+ { "SONY", 0x0fce, "Xperia M2 Dual MTP", 0x01ab,
212+ DEVICE_FLAG_NONE },
213 { "SONY", 0x0fce, "Xperia Z2 MTP", 0x01af,
214 DEVICE_FLAG_NONE },
215+ { "SONY", 0x0fce, "Xperia Z2 Tablet MTP", 0x01b1,
216+ DEVICE_FLAGS_ANDROID_BUGS },
217 { "SONY", 0x0fce, "Xperia Z Ultra MTP", 0x01b6,
218 DEVICE_FLAGS_ANDROID_BUGS },
219 { "SONY", 0x0fce, "Xperia Z3 MTP", 0x01ba,
220@@ -1733,6 +1749,10 @@
221 DEVICE_FLAG_NONE },
222 { "SONY", 0x0fce, "Xperia E3 MTP", 0x01bc,
223 DEVICE_FLAG_NONE },
224+ { "SONY", 0x0fce, "XPeria Z3+ MTP", 0x01c9,
225+ DEVICE_FLAG_NONE },
226+ { "SONY", 0x0fce, "XPeria E4g MTP", 0x01cb,
227+ DEVICE_FLAG_NONE },
228
229
230 /*
231@@ -1788,6 +1808,8 @@
232 DEVICE_FLAG_NONE },
233 { "SONY", 0x0fce, "Xperia M MTP+CDROM", 0x419b,
234 DEVICE_FLAG_NONE },
235+ { "SONY", 0x0fce, "Xperia Z Ultra MTP+CDROM (ID3)", 0x419c,
236+ DEVICE_FLAG_NONE },
237 { "SONY", 0x0fce, "Xperia Z1 MTP+CDROM", 0x419e,
238 DEVICE_FLAG_NONE },
239 { "SONY", 0x0fce, "Xperia C MTP+CDROM", 0x41a3,
240@@ -1796,10 +1818,20 @@
241 DEVICE_FLAG_NONE },
242 { "SONY", 0x0fce, "Xperia M2 MTP+CDROM", 0x41aa,
243 DEVICE_FLAG_NONE },
244+ { "SONY", 0x0fce, "Xperia M2 Dual MTP+CDROM", 0x41ab,
245+ DEVICE_FLAG_NONE },
246 { "SONY", 0x0fce, "Xperia Z2 MTP+CDROM", 0x41af,
247 DEVICE_FLAG_NONE },
248 { "SONY", 0x0fce, "Xperia Z3 MTP+CDROM", 0x41ba,
249 DEVICE_FLAG_NONE },
250+ { "SONY", 0x0fce, "Xperia Z3 Compact MTP+CDROM", 0x41bb,
251+ DEVICE_FLAG_NONE },
252+ { "SONY", 0x0fce, "Xperia E3 MTP+CDROM", 0x01bc,
253+ DEVICE_FLAG_NONE },
254+ { "SONY", 0x0fce, "XPeria Z3+ MTP+CDROM", 0x41c9,
255+ DEVICE_FLAG_NONE },
256+ { "SONY", 0x0fce, "XPeria E4g MTP+CDROM", 0x41cb,
257+ DEVICE_FLAG_NONE },
258
259 /*
260 * MTP+ADB personalities of MTP devices (see above)
261@@ -1888,6 +1920,8 @@
262 DEVICE_FLAG_NONE },
263 { "SONY", 0x0fce, "Xperia M2 MTP+ADB", 0x51aa,
264 DEVICE_FLAG_NONE },
265+ { "SONY", 0x0fce, "Xperia M2 Dual MTP+ADB", 0x51ab,
266+ DEVICE_FLAG_NONE },
267 { "SONY", 0x0fce, "Xperia Z2 MTP+ADB", 0x51af,
268 DEVICE_FLAG_NONE },
269 { "SONY", 0x0fce, "Xperia Z Ultra MTP+ADB", 0x51b6,
270@@ -1898,6 +1932,10 @@
271 DEVICE_FLAG_NONE },
272 { "SONY", 0x0fce, "Xperia E3 MTP+ADB", 0x51bc,
273 DEVICE_FLAG_NONE },
274+ { "SONY", 0x0fce, "XPeria Z3+ MTP+ADB", 0x51c9,
275+ DEVICE_FLAG_NONE },
276+ { "SONY", 0x0fce, "XPeria E4g MTP+ADB", 0x51cb,
277+ DEVICE_FLAG_NONE },
278
279 /*
280 * MTP+UMS modes
281@@ -1936,6 +1974,9 @@
282 * Motorola
283 * Assume DEVICE_FLAG_BROKEN_SET_OBJECT_PROPLIST on all of these.
284 */
285+ /* https://sourceforge.net/p/libmtp/feature-requests/136/ */
286+ { "Motorola", 0x22b8, "XT1524 (MTP)", 0x002e,
287+ DEVICE_FLAGS_ANDROID_BUGS },
288 // Reported by David Boyd <tiggrdave@users.sourceforge.net>
289 { "Motorola", 0x22b8, "V3m/V750 verizon", 0x2a65,
290 DEVICE_FLAG_BROKEN_SET_OBJECT_PROPLIST |
291@@ -1952,6 +1993,9 @@
292 DEVICE_FLAGS_ANDROID_BUGS },
293 { "Motorola", 0x22b8, "Moto X (XT1058)", 0x2e63,
294 DEVICE_FLAGS_ANDROID_BUGS },
295+ /* https://sourceforge.net/p/libmtp/bugs/1323/ */
296+ { "Motorola", 0x22b8, "Moto X (XT1080)", 0x2e66,
297+ DEVICE_FLAGS_ANDROID_BUGS },
298 { "Motorola", 0x22b8, "Droid Maxx (XT1080)", 0x2e67,
299 DEVICE_FLAGS_ANDROID_BUGS },
300 { "Motorola", 0x22b8, "Droid Ultra", 0x2e68,
301@@ -2345,6 +2389,14 @@
302 /* https://sourceforge.net/p/libmtp/bugs/1244/ */
303 { "Asus", 0x0b05, "MemoPad 8 ME181 CX (MTP)", 0x5561,
304 DEVICE_FLAGS_ANDROID_BUGS },
305+ /* https://sourceforge.net/p/libmtp/bugs/1406/ */
306+ { "Asus", 0x0b05, "Zenfone 2 (MTP)", 0x5600,
307+ DEVICE_FLAGS_ANDROID_BUGS },
308+ /* https://sourceforge.net/p/libmtp/bugs/1364/ */
309+ { "Asus", 0x0b05, "Z00AD (MTP)", 0x5601,
310+ DEVICE_FLAGS_ANDROID_BUGS },
311+ { "Asus", 0x0b05, "TX201LA (MTP)", 0x561f,
312+ DEVICE_FLAGS_ANDROID_BUGS },
313 /* https://sourceforge.net/p/libmtp/bugs/1271/ */
314 { "Asus", 0x0b05, "ZenFone 4 (MTP)", 0x580f,
315 DEVICE_FLAGS_ANDROID_BUGS },
316@@ -2354,9 +2406,20 @@
317 /* https://sourceforge.net/p/libmtp/bugs/1258/ */
318 { "Asus", 0x0b05, "A450CG (MTP)", 0x5a0f,
319 DEVICE_FLAGS_ANDROID_BUGS },
320+ /* https://sourceforge.net/p/libmtp/bugs/1350/ */
321+ { "Asus", 0x0b05, "Zenfone 2 ZE550ML (MTP)", 0x5f02,
322+ DEVICE_FLAGS_ANDROID_BUGS },
323+ /* https://sourceforge.net/p/libmtp/bugs/1364/ */
324+ { "Asus", 0x0b05, "Zenfone 2 ZE551ML (MTP)", 0x5f03,
325+ DEVICE_FLAGS_ANDROID_BUGS },
326 /* https://sourceforge.net/p/libmtp/bugs/1232/ */
327 { "Asus", 0x0b05, "MemoPad 7 (ME572CL)", 0x7772,
328 DEVICE_FLAGS_ANDROID_BUGS },
329+ /* https://sourceforge.net/p/libmtp/bugs/1351/ */
330+ { "Asus", 0x0b05, "Fonepad 7 (FE375CXG)", 0x7773,
331+ DEVICE_FLAGS_ANDROID_BUGS },
332+ { "Asus", 0x0b05, "ZenFone 5 A500KL (MTP)", 0x7780,
333+ DEVICE_FLAGS_ANDROID_BUGS },
334 /* https://sourceforge.net/p/libmtp/bugs/1247/ */
335 { "Asus", 0x0b05, "ZenFone 5 A500KL (MTP+ADB)", 0x7781,
336 DEVICE_FLAGS_ANDROID_BUGS },
337@@ -2365,6 +2428,12 @@
338 /*
339 * Lenovo
340 */
341+ /* https://sourceforge.net/p/libmtp/support-requests/178/ */
342+ { "Lenovo", 0x17ef, "P70-A", 0x0c02,
343+ DEVICE_FLAGS_ANDROID_BUGS },
344+ /* https://sourceforge.net/p/libmtp/bugs/1415/ */
345+ { "Lenovo", 0x17ef, "P70", 0x2008,
346+ DEVICE_FLAGS_ANDROID_BUGS },
347 // Reported by Richard Körber <shredzone@users.sourceforge.net>
348 { "Lenovo", 0x17ef, "K1", 0x740a,
349 DEVICE_FLAGS_ANDROID_BUGS },
350@@ -2407,6 +2476,9 @@
351 DEVICE_FLAGS_ANDROID_BUGS },
352 { "Lenovo", 0x17ef, "Toga Tablet B6000-F", 0x76f2,
353 DEVICE_FLAGS_ANDROID_BUGS },
354+ /* https://sourceforge.net/p/libmtp/bugs/1122/ */
355+ { "Lenovo", 0x17ef, "S930", 0x7718,
356+ DEVICE_FLAGS_ANDROID_BUGS },
357 /* https://sourceforge.net/p/libmtp/bugs/1250/ */
358 { "Lenovo", 0x17ef, "A5500-F", 0x772b,
359 DEVICE_FLAGS_ANDROID_BUGS },
360@@ -2417,15 +2489,24 @@
361 /* https://sourceforge.net/p/libmtp/bugs/1155/ */
362 { "Lenovo", 0x17ef, "Yoga Tablet 10 B8000-H", 0x76ff,
363 DEVICE_FLAGS_ANDROID_BUGS },
364+ /* https://sourceforge.net/p/libmtp/bugs/1391/ */
365+ { "Lenovo", 0x17ef, "A7600-F", 0x7731,
366+ DEVICE_FLAGS_ANDROID_BUGS },
367 /* https://sourceforge.net/p/libmtp/bugs/1291/ */
368 { "Lenovo", 0x17ef, "A3500-F", 0x7737,
369 DEVICE_FLAGS_ANDROID_BUGS },
370+ /* https://sourceforge.net/p/libmtp/support-requests/186/ */
371+ { "Lenovo", 0x17ef, "Yoga Tablet 2 - 1050F", 0x77a4,
372+ DEVICE_FLAGS_ANDROID_BUGS },
373 /* https://sourceforge.net/p/libmtp/support-requests/168/ */
374 { "Lenovo", 0x17ef, "Yoga Tablet 2 Pro", 0x77b1,
375 DEVICE_FLAGS_ANDROID_BUGS },
376 /* https://sourceforge.net/p/libmtp/feature-requests/125/ */
377 { "Lenovo", 0x17ef, "Vibe Z2", 0x77ea,
378 DEVICE_FLAGS_ANDROID_BUGS },
379+ /* https://sourceforge.net/p/libmtp/bugs/1360/ */
380+ { "Lenovo", 0x17ef, "K3 Note", 0x7883,
381+ DEVICE_FLAGS_ANDROID_BUGS },
382
383 /*
384 * Huawei
385@@ -2435,6 +2516,15 @@
386 DEVICE_FLAGS_ANDROID_BUGS },
387 { "Huawei", 0x12d1, "MTP device (ID2)", 0x1052,
388 DEVICE_FLAGS_ANDROID_BUGS },
389+ /* https://sourceforge.net/p/libmtp/bugs/1381/ */
390+ { "Huawei", 0x12d1, "H60-L11", 0x1079,
391+ DEVICE_FLAGS_ANDROID_BUGS },
392+ /* https://sourceforge.net/p/libmtp/bugs/1361/ */
393+ { "Huawei", 0x12d1, "Ascend P8 ", 0x1082,
394+ DEVICE_FLAGS_ANDROID_BUGS },
395+ /* https://sourceforge.net/p/libmtp/bugs/1418/ */
396+ { "Huawei", 0x12d1, "Honor 3C ", 0x2012,
397+ DEVICE_FLAGS_ANDROID_BUGS },
398 { "Huawei", 0x12d1, "Mediapad (mode 0)", 0x360f,
399 DEVICE_FLAGS_ANDROID_BUGS },
400 // Reported by Bearsh <bearsh@users.sourceforge.net>
401@@ -2452,6 +2542,8 @@
402 /* https://sourceforge.net/p/libmtp/bugs/672/ */
403 { "ZTE", 0x19d2, "Grand X In", 0x0343, DEVICE_FLAGS_ANDROID_BUGS },
404 { "ZTE", 0x19d2, "V985", 0x0383, DEVICE_FLAGS_ANDROID_BUGS },
405+ /* https://sourceforge.net/p/libmtp/bugs/1328/ */
406+ { "ZTE", 0x19d2, "V5", 0xffce, DEVICE_FLAGS_ANDROID_BUGS },
407
408 /*
409 * HTC (High Tech Computer Corp)
410@@ -2459,6 +2551,12 @@
411 * Steven Eastland <grassmonk@users.sourceforge.net>
412 * Kevin Cheng <kache@users.sf.net>
413 */
414+ /* https://sourceforge.net/p/libmtp/support-requests/181/ */
415+ { "HTC", 0x0bb4, "HTC One M9 (MTP)", 0x040b,
416+ DEVICE_FLAGS_ANDROID_BUGS },
417+ /* https://sourceforge.net/p/libmtp/bugs/1398/ */
418+ { "HTC", 0x0bb4, "Spreadtrum SH57MYZ03342 (MTP)", 0x05e3,
419+ DEVICE_FLAGS_ANDROID_BUGS },
420 /* reported by Mikkel Oscar Lyderik <mikkeloscar@gmail.com> */
421 { "HTC", 0x0bb4, "HTC Desire 510 (MTP+ADB)", 0x05fd,
422 DEVICE_FLAGS_ANDROID_BUGS },
423@@ -2545,6 +2643,9 @@
424 /* https://sourceforge.net/p/libmtp/bugs/1182/ */
425 { "HTC", 0x0bb4, "Desire 310 (MTP)", 0x0ec6,
426 DEVICE_FLAGS_ANDROID_BUGS },
427+ /* https://sourceforge.net/p/libmtp/bugs/1420/ */
428+ { "HTC", 0x0bb4, "Desire 816G (MTP)", 0x0edb,
429+ DEVICE_FLAGS_ANDROID_BUGS },
430 { "HTC", 0x0bb4, "HTC One (MTP+ADB+CDC)", 0x0f5f,
431 DEVICE_FLAGS_ANDROID_BUGS },
432 { "HTC", 0x0bb4, "HTC One (MTP+CDC)", 0x0f60,
433@@ -2658,6 +2759,9 @@
434 DEVICE_FLAGS_ANDROID_BUGS },
435 { "Amazon", 0x1949, "Kindle Fire (ID5)", 0x0012,
436 DEVICE_FLAGS_ANDROID_BUGS },
437+ /* https://sourceforge.net/p/libmtp/bugs/1353/ */
438+ { "Amazon", 0x1949, "Kindle Fire HD6", 0x00f2,
439+ DEVICE_FLAGS_ANDROID_BUGS },
440 { "Amazon", 0x1949, "Fire Phone", 0x0800,
441 DEVICE_FLAGS_ANDROID_BUGS },
442
443@@ -2677,6 +2781,9 @@
444 DEVICE_FLAGS_ANDROID_BUGS },
445 { "YiFang", 0x2207, "BQ Tesla", 0x0006,
446 DEVICE_FLAGS_ANDROID_BUGS },
447+ /* https://sourceforge.net/p/libmtp/bugs/1354/ */
448+ { "Various", 0x2207, "Viewpia DR/bq Kepler Debugging", 0x0011,
449+ DEVICE_FLAGS_ANDROID_BUGS },
450
451 /*
452 * Kobo
453@@ -2708,6 +2815,8 @@
454 { "Intel", 0x8087, "Foxconn iView i700", 0x0a15, DEVICE_FLAGS_ANDROID_BUGS },
455 /* https://sourceforge.net/p/libmtp/bugs/1237/ */
456 { "Intel", 0x8087, "Telcast Air 3G", 0x0a5e, DEVICE_FLAGS_ANDROID_BUGS },
457+ /* https://sourceforge.net/p/libmtp/bugs/1338/ */
458+ { "Intel", 0x8087, "Chuwi vi8", 0x0a5f, DEVICE_FLAGS_ANDROID_BUGS },
459
460 /*
461 * Xiaomi
462@@ -2738,6 +2847,15 @@
463 DEVICE_FLAGS_ANDROID_BUGS },
464 { "Xiaomi", 0x2717, "Mi-2 (MTP)", 0xf003,
465 DEVICE_FLAGS_ANDROID_BUGS },
466+ /* https://sourceforge.net/p/libmtp/bugs/1397/ */
467+ { "Xiaomi", 0x2717, "Mi-2s (id2) (MTP)", 0xff40,
468+ DEVICE_FLAGS_ANDROID_BUGS },
469+ /* https://sourceforge.net/p/libmtp/bugs/1339/ */
470+ { "Xiaomi", 0x2717, "Mi-2s (MTP)", 0xff48,
471+ DEVICE_FLAGS_ANDROID_BUGS },
472+ /* https://sourceforge.net/p/libmtp/bugs/1402/ */
473+ { "Xiaomi", 0x2717, "Redmi 2 (MTP)", 0xff60,
474+ DEVICE_FLAGS_ANDROID_BUGS },
475
476 /*
477 * XO Learning Tablet
478@@ -2774,6 +2892,9 @@
479 /* https://sourceforge.net/p/libmtp/bugs/1304/ */
480 { "Alcatel", 0x1bbb, "OneTouch 5042D (MTP)", 0xa00e,
481 DEVICE_FLAGS_ANDROID_BUGS },
482+ /* https://sourceforge.net/p/libmtp/bugs/1401/ */
483+ { "Alcatel", 0x1bbb, "OneTouch Idol 3 (MTP)", 0xaf2b,
484+ DEVICE_FLAGS_ANDROID_BUGS },
485 /* https://sourceforge.net/p/libmtp/feature-requests/114/ */
486 { "Alcatel", 0x1bbb, "OneTouch 6034R", 0xf003,
487 DEVICE_FLAGS_ANDROID_BUGS },
488@@ -2782,8 +2903,12 @@
489 * Kyocera
490 */
491 { "Kyocera", 0x0482, "Rise", 0x0571, DEVICE_FLAGS_ANDROID_BUGS },
492+ /* https://sourceforge.net/p/libmtp/feature-requests/134/ */
493+ { "Kyocera", 0x0482, "Torque Model E6715", 0x0059a, DEVICE_FLAGS_ANDROID_BUGS },
494 /* https://sourceforge.net/p/libmtp/discussion/535190/thread/6270f5ce/ */
495 { "Kyocera", 0x0482, "KYL22", 0x0810, DEVICE_FLAGS_ANDROID_BUGS },
496+ /* https://sourceforge.net/p/libmtp/bugs/1345/ */
497+ { "Kyocera", 0x0482, "DuraForce", 0x0979, DEVICE_FLAGS_ANDROID_BUGS },
498
499 /*
500 * HiSense
501@@ -2798,12 +2923,20 @@
502 DEVICE_FLAGS_ANDROID_BUGS },
503 { "Hewlett-Packard", 0x03f0, "Slate 7 2800", 0x5d1d,
504 DEVICE_FLAGS_ANDROID_BUGS },
505+ /* https://sourceforge.net/p/libmtp/bugs/1366/ */
506+ { "Hewlett-Packard", 0x03f0, "Slate 10 HD", 0x7e1d,
507+ DEVICE_FLAGS_ANDROID_BUGS },
508
509 /*
510 * MediaTek Inc.
511 */
512 { "MediaTek Inc", 0x0e8d, "MT5xx and MT6xx SoCs", 0x0050,
513 DEVICE_FLAGS_ANDROID_BUGS },
514+ { "MediaTek Inc", 0x0e8d, "MT65xx", 0x2008,
515+ DEVICE_FLAGS_ANDROID_BUGS },
516+ /* https://sourceforge.net/p/libmtp/feature-requests/79/ */
517+ { "MediaTek Inc", 0x0e8d, "Elephone P8000", 0x201d,
518+ DEVICE_FLAGS_ANDROID_BUGS },
519
520 /*
521 * Jolla
522@@ -2860,6 +2993,8 @@
523 { "Prestigio", 0x29e4, "5505 DUO ", 0x1103, DEVICE_FLAGS_ANDROID_BUGS },
524 /* https://sourceforge.net/p/libmtp/bugs/1243/ */
525 { "Prestigio", 0x29e4, "5504 DUO ", 0x1203, DEVICE_FLAGS_ANDROID_BUGS },
526+ /* https://sourceforge.net/p/libmtp/feature-requests/141/ */
527+ { "Prestigio", 0x29e4, "3405 DUO ", 0x3201, DEVICE_FLAGS_ANDROID_BUGS },
528
529 /* https://sourceforge.net/p/libmtp/bugs/1283/ */
530 { "Megafon", 0x201e, "MFLogin3T", 0x42ab, DEVICE_FLAGS_ANDROID_BUGS },
531@@ -2867,6 +3002,8 @@
532 /* https://sourceforge.net/p/libmtp/bugs/1287/ */
533 { "Gensis", 0x040d, "GT-7305 ", 0x885c, DEVICE_FLAGS_ANDROID_BUGS },
534
535+ /* https://sourceforge.net/p/libmtp/support-requests/182/ */
536+ { "Oppo", 0x22d9, "Find 5", 0x2764, DEVICE_FLAGS_ANDROID_BUGS },
537 /* https://sourceforge.net/p/libmtp/bugs/1207/ */
538 { "Oppo", 0x22d9, "Find 7 (ID 1)", 0x2765, DEVICE_FLAGS_ANDROID_BUGS },
539 /* https://sourceforge.net/p/libmtp/bugs/1277/ */
540@@ -2916,6 +3053,14 @@
541 /* https://sourceforge.net/p/libmtp/bugs/1314/ */
542 { "BenQ", 0x1d45, "F5", 0x459d, DEVICE_FLAGS_ANDROID_BUGS },
543
544+ /* https://sourceforge.net/p/libmtp/bugs/1362/ */
545+ { "TomTom", 0x1390, "Rider 40", 0x5455, DEVICE_FLAGS_ANDROID_BUGS },
546+
547+ /* https://sourceforge.net/p/libmtp/feature-requests/135/. guessed android. */
548+ { "OUYA", 0x2836, "Videogame Console", 0x0010, DEVICE_FLAGS_ANDROID_BUGS },
549+
550+ /* https://sourceforge.net/p/libmtp/bugs/1383/ */
551+ { "BLU", 0x0e8d, "Studio HD", 0x2008, DEVICE_FLAGS_ANDROID_BUGS },
552 /*
553 * Other strange stuff.
554 */
diff --git a/gnu/packages/patches/ninja-tests.patch b/gnu/packages/patches/ninja-tests.patch
index 3436b6314dd..f9b0d9f9109 100644
--- a/gnu/packages/patches/ninja-tests.patch
+++ b/gnu/packages/patches/ninja-tests.patch
@@ -1,16 +1,17 @@
1SubprocessTest.SetWithLots fails with: 1From 67d6b9262efad99f8aad63ab81efc8e689748766 Mon Sep 17 00:00:00 2001
2 Raise [ulimit -n] well above 1025 to make this test go. 2From: Efraim Flashner <efraim@flashner.co.il>
3Skip it. 3Date: Sun, 3 Jul 2016 11:55:43 +0300
4Subject: [PATCH] patch
4 5
5SubprocessTest.InterruptChild fails when using 'system*': 6---
6 *** Failure in src/subprocess_test.cc:83 7 src/subprocess_test.cc | 4 ++++
7 ExitInterrupted == subproc->Finish() 8 1 file changed, 4 insertions(+)
8I can pass it by using 'system' instead of 'system*' when building locally,
9but it still failed on Hydra. Skip it.
10 9
11--- ninja-1.5.3.orig/src/subprocess_test.cc 2015-01-15 10:34:28.859522176 +0800 10diff --git a/src/subprocess_test.cc b/src/subprocess_test.cc
12+++ ninja-1.5.3/src/subprocess_test.cc 2015-01-15 10:37:52.969572075 +0800 11index ee16190..a537c11 100644
13@@ -72,6 +72,7 @@ 12--- a/src/subprocess_test.cc
13+++ b/src/subprocess_test.cc
14@@ -72,6 +72,7 @@ TEST_F(SubprocessTest, NoSuchCommand) {
14 15
15 #ifndef _WIN32 16 #ifndef _WIN32
16 17
@@ -18,7 +19,7 @@ but it still failed on Hydra. Skip it.
18 TEST_F(SubprocessTest, InterruptChild) { 19 TEST_F(SubprocessTest, InterruptChild) {
19 Subprocess* subproc = subprocs_.Add("kill -INT $$"); 20 Subprocess* subproc = subprocs_.Add("kill -INT $$");
20 ASSERT_NE((Subprocess *) 0, subproc); 21 ASSERT_NE((Subprocess *) 0, subproc);
21@@ -82,6 +83,7 @@ 22@@ -82,6 +83,7 @@ TEST_F(SubprocessTest, InterruptChild) {
22 23
23 EXPECT_EQ(ExitInterrupted, subproc->Finish()); 24 EXPECT_EQ(ExitInterrupted, subproc->Finish());
24 } 25 }
@@ -26,7 +27,7 @@ but it still failed on Hydra. Skip it.
26 27
27 TEST_F(SubprocessTest, InterruptParent) { 28 TEST_F(SubprocessTest, InterruptParent) {
28 Subprocess* subproc = subprocs_.Add("kill -INT $PPID ; sleep 1"); 29 Subprocess* subproc = subprocs_.Add("kill -INT $PPID ; sleep 1");
29@@ -169,6 +171,7 @@ 30@@ -217,6 +219,7 @@ TEST_F(SubprocessTest, SetWithMulti) {
30 // OS X's process limit is less than 1025 by default 31 // OS X's process limit is less than 1025 by default
31 // (|sysctl kern.maxprocperuid| is 709 on 10.7 and 10.8 and less prior to that). 32 // (|sysctl kern.maxprocperuid| is 709 on 10.7 and 10.8 and less prior to that).
32 #if !defined(__APPLE__) && !defined(_WIN32) 33 #if !defined(__APPLE__) && !defined(_WIN32)
@@ -34,11 +35,14 @@ but it still failed on Hydra. Skip it.
34 TEST_F(SubprocessTest, SetWithLots) { 35 TEST_F(SubprocessTest, SetWithLots) {
35 // Arbitrary big number; needs to be over 1024 to confirm we're no longer 36 // Arbitrary big number; needs to be over 1024 to confirm we're no longer
36 // hostage to pselect. 37 // hostage to pselect.
37@@ -196,6 +199,7 @@ 38@@ -245,6 +248,7 @@ TEST_F(SubprocessTest, SetWithLots) {
38 } 39 }
39 ASSERT_EQ(kNumProcs, subprocs_.finished_.size()); 40 ASSERT_EQ(kNumProcs, subprocs_.finished_.size());
40 } 41 }
41+#endif 42+#endif
42 #endif // !__APPLE__ && !_WIN32 43 #endif // !__APPLE__ && !_WIN32
43 44
44 // TODO: this test could work on Windows, just not sure how to simply 45 // TODO: this test could work on Windows, just not sure how to simply
46--
472.9.0
48
diff --git a/gnu/packages/patches/openimageio-boost-1.60.patch b/gnu/packages/patches/openimageio-boost-1.60.patch
deleted file mode 100644
index 92fc3237bb5..00000000000
--- a/gnu/packages/patches/openimageio-boost-1.60.patch
+++ /dev/null
@@ -1,47 +0,0 @@
1From 875fbbd92695397bfc83d1cd5fdd4094e1d50199 Mon Sep 17 00:00:00 2001
2From: Larry Gritz <lg@larrygritz.com>
3Date: Mon, 28 Dec 2015 11:46:07 -0800
4Subject: [PATCH] Python ImageCache binding fixes -- disable broken calls
5
6Some of these calls (thankfully undocumented and presumably unused)
7are horribly broken. They compiled before, but with new Boost 1.60
8they don't even compile properly. So just comment them out on this
9obsolete branch. They are fully fixed in RB-1.6 and beyond.
10
11--- a/src/python/py_imagecache.cpp
12+++ b/src/python/py_imagecache.cpp
13@@ -199,23 +199,24 @@ void declare_imagecache()
14 .def("destroy", &ImageCacheWrap::destroy)
15 .staticmethod("destroy")
16 .def("clear", &ImageCacheWrap::clear)
17- .def("attribute", &ImageCacheWrap::attribute)
18+ // .def("attribute", &ImageCacheWrap::attribute)
19 .def("attribute", &ImageCacheWrap::attribute_int)
20 .def("attribute", &ImageCacheWrap::attribute_float)
21- .def("attribute", &ImageCacheWrap::attribute_double)
22- .def("attribute", &ImageCacheWrap::attribute_char)
23+ // .def("attribute", &ImageCacheWrap::attribute_double)
24+ // .def("attribute", &ImageCacheWrap::attribute_char)
25 .def("attribute", &ImageCacheWrap::attribute_string)
26- .def("getattribute", &ImageCacheWrap::attribute)
27+ // .def("getattribute", &ImageCacheWrap::attribute)
28 .def("getattribute", &ImageCacheWrap::getattribute_int)
29 .def("getattribute", &ImageCacheWrap::getattribute_float)
30- .def("getattribute", &ImageCacheWrap::getattribute_double)
31- .def("getattribute", &ImageCacheWrap::getattribute_char)
32+ // .def("getattribute", &ImageCacheWrap::getattribute_double)
33+ // .def("getattribute", &ImageCacheWrap::getattribute_char)
34 .def("getattribute", &ImageCacheWrap::getattribute_string)
35- .def("resolve_filename", &ImageCacheWrap::resolve_filename)
36- .def("get_image_info", &ImageCacheWrap::get_image_info)
37- .def("get_image_info", &ImageCacheWrap::get_image_info_old)
38+ // .def("get_image_info", &ImageCacheWrap::get_image_info)
39+ // .def("get_image_info", &ImageCacheWrap::get_image_info_old)
40 .def("get_imagespec", &ImageCacheWrap::get_imagespec)
41- .def("get_pixels", &ImageCacheWrap::get_pixels)
42+ // .def("get_pixels", &ImageCacheWrap::get_pixels)
43+ .def("resolve_filename", &ImageCacheWrap::resolve_filename)
44+
45 // .def("get_tile", &ImageCacheWrap::get_tile)
46 // .def("release_tile", &ImageCacheWrap::release_tile)
47 // .def("tile_pixels", &ImageCacheWrap::tile_pixels)
diff --git a/gnu/packages/patches/python-dendropy-exclude-failing-tests.patch b/gnu/packages/patches/python-dendropy-exclude-failing-tests.patch
new file mode 100644
index 00000000000..288a58b06f5
--- /dev/null
+++ b/gnu/packages/patches/python-dendropy-exclude-failing-tests.patch
@@ -0,0 +1,21 @@
1diff --git a/dendropy/test/test_phylogenetic_distance_matrix.py b/dendropy/test/test_phylogenetic_distance_matrix.py
2index 10c05f5..a18ba52 100644
3--- a/dendropy/test/test_phylogenetic_distance_matrix.py
4+++ b/dendropy/test/test_phylogenetic_distance_matrix.py
5@@ -793,7 +793,7 @@ class PdmUpgmaTree(PdmTreeChecker, unittest.TestCase):
6 expected_tree=expected_tree)
7
8 class NodeToNodeDistancesTest(unittest.TestCase):
9-
10+ @unittest.expectedFailure
11 def test_distances(self):
12 ## get distances from ape
13 # library(ape)
14@@ -825,6 +825,7 @@ class NodeToNodeDistancesTest(unittest.TestCase):
15 e = reference_table[nd1.label, nd2.label]
16 self.assertAlmostEqual(d, e)
17
18+ @unittest.expectedFailure
19 def test_mrca(self):
20 test_runs = [
21 "hiv1.newick",
diff --git a/gnu/packages/patches/sudo-CVE-2015-5602.patch b/gnu/packages/patches/sudo-CVE-2015-5602.patch
deleted file mode 100644
index 36c90fbee71..00000000000
--- a/gnu/packages/patches/sudo-CVE-2015-5602.patch
+++ /dev/null
@@ -1,372 +0,0 @@
1Based on the patch from https://www.sudo.ws/repos/sudo/raw-rev/c2e36a80a279
2Backported to 1.8.15 by Mark H Weaver <mhw@netris.org>
3
4# HG changeset patch
5# User Todd C. Miller <Todd.Miller@courtesan.com>
6# Date 1452475889 25200
7# Node ID c2e36a80a27927c32cba55afae78b8dc830cddc3
8# Parent 94ffd6b18431fa4b9ed0a0c3f0b7b9582a4f6bde
9Rewritten sudoedit_checkdir support that checks all the dirs in the
10path and refuses to follow symlinks in writable directories.
11This is a better fix for CVE-2015-5602.
12Adapted from a diff by Ben Hutchings. Bug #707
13
14diff -r 94ffd6b18431 -r c2e36a80a279 doc/CONTRIBUTORS
15--- a/doc/CONTRIBUTORS Mon Jan 04 10:47:11 2016 -0700
16+++ b/doc/CONTRIBUTORS Sun Jan 10 18:31:29 2016 -0700
17@@ -58,6 +58,7 @@
18 Holloway, Nick
19 Hoover, Adam
20 Hunter, Michael T.
21+ Hutchings, Ben
22 Irrgang, Eric
23 Jackson, Brian
24 Jackson, John R.
25diff -r 94ffd6b18431 -r c2e36a80a279 doc/UPGRADE
26--- a/doc/UPGRADE Mon Jan 04 10:47:11 2016 -0700
27+++ b/doc/UPGRADE Sun Jan 10 18:31:29 2016 -0700
28@@ -1,6 +1,15 @@
29 Notes on upgrading from an older release
30 ========================================
31
32+o Upgrading from a version prior to the post-1.8.15 fix for CVE-2015-5602.
33+
34+ The meaning of the sudoedit_checkdir sudoers option has changed.
35+ Previously, it would only check the parent directory
36+ of the file to be edited. After the CVE fix, all directories
37+ in the path to be edited are checked and sudoedit will refuse
38+ to follow a symbolic link in a directory that is writable by
39+ the invoking user.
40+
41 o Upgrading from a version prior to 1.8.15:
42
43 Prior to version 1.8.15, when env_reset was enabled (the default)
44diff -r 94ffd6b18431 -r c2e36a80a279 doc/sudoers.cat
45--- a/doc/sudoers.cat Mon Jan 04 10:47:11 2016 -0700
46+++ b/doc/sudoers.cat Sun Jan 10 18:31:29 2016 -0700
47@@ -1275,12 +1275,15 @@
48 system call. This flag is _o_f_f by default.
49
50 sudoedit_checkdir
51- If set, ssuuddooeeddiitt will refuse to edit files located in a
52- directory that is writable by the invoking user unless
53- it is run by root. On many systems, this option
54- requires that the parent directory of the file to be
55- edited be readable by the target user. This flag is
56- _o_f_f by default.
57+ If set, ssuuddooeeddiitt will check directories in the path to
58+ be edited for writability by the invoking user.
59+ Symbolic links will not be followed in writable
60+ directories and ssuuddooeeddiitt will also refuse to edit a
61+ file located in a writable directory. Theses
62+ restrictions are not enforced when ssuuddooeeddiitt is invoked
63+ as root. On many systems, this option requires that
64+ all directories in the path to be edited be readable by
65+ the target user. This flag is _o_f_f by default.
66
67 sudoedit_follow By default, ssuuddooeeddiitt will not follow symbolic links
68 when opening files. The _s_u_d_o_e_d_i_t___f_o_l_l_o_w option can be
69diff -r 94ffd6b18431 -r c2e36a80a279 doc/sudoers.man.in
70--- a/doc/sudoers.man.in Mon Jan 04 10:47:11 2016 -0700
71+++ b/doc/sudoers.man.in Sun Jan 10 18:31:29 2016 -0700
72@@ -2715,10 +2715,16 @@
73 .br
74 If set,
75 \fBsudoedit\fR
76-will refuse to edit files located in a directory that is writable
77-by the invoking user unless it is run by root.
78-On many systems, this option requires that the parent directory
79-of the file to be edited be readable by the target user.
80+will check directories in the path to be edited for writability
81+by the invoking user.
82+Symbolic links will not be followed in writable directories and
83+\fBsudoedit\fR
84+will also refuse to edit a file located in a writable directory.
85+Theses restrictions are not enforced when
86+\fBsudoedit\fR
87+is invoked as root.
88+On many systems, this option requires that all directories
89+in the path to be edited be readable by the target user.
90 This flag is
91 \fIoff\fR
92 by default.
93diff -r 94ffd6b18431 -r c2e36a80a279 doc/sudoers.mdoc.in
94--- a/doc/sudoers.mdoc.in Mon Jan 04 10:47:11 2016 -0700
95+++ b/doc/sudoers.mdoc.in Sun Jan 10 18:31:29 2016 -0700
96@@ -2549,10 +2549,16 @@
97 .It sudoedit_checkdir
98 If set,
99 .Nm sudoedit
100-will refuse to edit files located in a directory that is writable
101-by the invoking user unless it is run by root.
102-On many systems, this option requires that the parent directory
103-of the file to be edited be readable by the target user.
104+will check directories in the path to be edited for writability
105+by the invoking user.
106+Symbolic links will not be followed in writable directories and
107+.Nm sudoedit
108+will also refuse to edit a file located in a writable directory.
109+Theses restrictions are not enforced when
110+.Nm sudoedit
111+is invoked as root.
112+On many systems, this option requires that all directories
113+in the path to be edited be readable by the target user.
114 This flag is
115 .Em off
116 by default.
117diff -r 94ffd6b18431 -r c2e36a80a279 include/sudo_compat.h
118--- a/include/sudo_compat.h Mon Jan 04 10:47:11 2016 -0700
119+++ b/include/sudo_compat.h Sun Jan 10 18:31:29 2016 -0700
120@@ -182,6 +182,8 @@
121 # ifndef UTIME_NOW
122 # define UTIME_NOW -2L
123 # endif
124+#endif
125+#if !defined(HAVE_OPENAT) || (!defined(HAVE_FUTIMENS) && !defined(HAVE_UTIMENSAT))
126 # ifndef AT_FDCWD
127 # define AT_FDCWD -100
128 # endif
129diff -r 94ffd6b18431 -r c2e36a80a279 src/sudo_edit.c
130--- a/src/sudo_edit.c Mon Jan 04 10:47:11 2016 -0700
131+++ b/src/sudo_edit.c Sun Jan 10 18:31:29 2016 -0700
132@@ -179,13 +179,15 @@
133 }
134
135 #ifndef HAVE_OPENAT
136-/* This does not support AT_FDCWD... */
137 static int
138 sudo_openat(int dfd, const char *path, int flags, mode_t mode)
139 {
140 int fd, odfd;
141 debug_decl(sudo_openat, SUDO_DEBUG_EDIT)
142
143+ if (dfd == AT_FDCWD)
144+ debug_return_int(open(path, flags, mode));
145+
146 /* Save cwd */
147 if ((odfd = open(".", O_RDONLY)) == -1)
148 debug_return_int(-1);
149@@ -207,6 +209,64 @@
150 #define openat sudo_openat
151 #endif /* HAVE_OPENAT */
152
153+#ifdef O_NOFOLLOW
154+static int
155+sudo_edit_openat_nofollow(int dfd, char *path, int oflags, mode_t mode)
156+{
157+ debug_decl(sudo_edit_open_nofollow, SUDO_DEBUG_EDIT)
158+
159+ debug_return_int(openat(dfd, path, oflags|O_NOFOLLOW, mode));
160+}
161+#else
162+/*
163+ * Returns true if fd and path don't match or path is a symlink.
164+ * Used on older systems without O_NOFOLLOW.
165+ */
166+static bool
167+sudo_edit_is_symlink(int fd, char *path)
168+{
169+ struct stat sb1, sb2;
170+ debug_decl(sudo_edit_is_symlink, SUDO_DEBUG_EDIT)
171+
172+ /*
173+ * Treat [fl]stat() failure like there was a symlink.
174+ */
175+ if (fstat(fd, &sb1) == -1 || lstat(path, &sb2) == -1)
176+ debug_return_bool(true);
177+
178+ /*
179+ * Make sure we did not open a link and that what we opened
180+ * matches what is currently on the file system.
181+ */
182+ if (S_ISLNK(sb2.st_mode) ||
183+ sb1.st_dev != sb2.st_dev || sb1.st_ino != sb2.st_ino) {
184+ debug_return_bool(true);
185+ }
186+
187+ debug_return_bool(false);
188+}
189+
190+static int
191+sudo_edit_openat_nofollow(char *path, int oflags, mode_t mode)
192+{
193+ struct stat sb1, sb2;
194+ int fd;
195+ debug_decl(sudo_edit_openat_nofollow, SUDO_DEBUG_EDIT)
196+
197+ fd = openat(dfd, path, oflags, mode);
198+ if (fd == -1)
199+ debug_return_int(-1);
200+
201+ if (sudo_edit_is_symlink(fd, path)) {
202+ close(fd);
203+ fd = -1;
204+ errno = ELOOP;
205+ }
206+
207+ debug_return_int(fd);
208+}
209+#endif /* O_NOFOLLOW */
210+
211 /*
212 * Returns true if the directory described by sb is writable
213 * by the user. We treat directories with the sticky bit as
214@@ -245,49 +305,94 @@
215 debug_return_bool(false);
216 }
217
218+/*
219+ * Directory open flags for use with openat(2) and fstat(2).
220+ * Use O_PATH and O_DIRECTORY where possible.
221+ */
222+#if defined(O_PATH) && defined(O_DIRECTORY)
223+# define DIR_OPEN_FLAGS (O_PATH|O_DIRECTORY)
224+#elif defined(O_PATH) && !defined(O_DIRECTORY)
225+# define DIR_OPEN_FLAGS O_PATH
226+#elif !defined(O_PATH) && defined(O_DIRECTORY)
227+# define DIR_OPEN_FLAGS (O_RDONLY|O_DIRECTORY)
228+#else
229+# define DIR_OPEN_FLAGS (O_RDONLY|O_NONBLOCK)
230+#endif
231+
232 static int
233 sudo_edit_open_nonwritable(char *path, int oflags, mode_t mode)
234 {
235- char *base, *dir;
236+ int dfd, fd, dflags = DIR_OPEN_FLAGS;
237+#if defined(__linux__) && defined(O_PATH)
238+ char *opath = path;
239+#endif
240+ bool is_writable;
241 struct stat sb;
242- int dfd, fd;
243 debug_decl(sudo_edit_open_nonwritable, SUDO_DEBUG_EDIT)
244
245- base = strrchr(path, '/');
246- if (base != NULL) {
247- *base++ = '\0';
248- dir = path;
249+#if defined(__linux__) && defined(O_PATH)
250+restart:
251+#endif
252+ if (path[0] == '/') {
253+ dfd = open("/", dflags);
254+ path++;
255 } else {
256- base = path;
257- dir = ".";
258+ dfd = open(".", dflags);
259+ if (path[0] == '.' && path[1] == '/')
260+ path += 2;
261 }
262-#ifdef O_PATH
263- if ((dfd = open(dir, O_PATH)) != -1) {
264- /* Linux kernels < 3.6 can't do fstat on O_PATH fds. */
265- if (fstat(dfd, &sb) == -1) {
266- close(dfd);
267- dfd = open(dir, O_RDONLY);
268- if (fstat(dfd, &sb) == -1) {
269- close(dfd);
270- dfd = -1;
271- }
272- }
273- }
274-#else
275- if ((dfd = open(dir, O_RDONLY)) != -1) {
276- if (fstat(dfd, &sb) == -1) {
277- close(dfd);
278- dfd = -1;
279- }
280- }
281-#endif
282- if (base != path)
283- base[-1] = '/'; /* restore path */
284 if (dfd == -1)
285 debug_return_int(-1);
286
287- if (dir_is_writable(&sb, user_details.uid, user_details.gid,
288- user_details.ngroups, user_details.groups)) {
289+ for (;;) {
290+ char *slash;
291+ int subdfd;
292+
293+ /*
294+ * Look up one component at a time, avoiding symbolic links in
295+ * writable directories.
296+ */
297+ if (fstat(dfd, &sb) == -1) {
298+ close(dfd);
299+#if defined(__linux__) && defined(O_PATH)
300+ /* Linux prior to 3.6 can't fstat an O_PATH fd */
301+ if (ISSET(dflags, O_PATH)) {
302+ CLR(dflags, O_PATH);
303+ path = opath;
304+ goto restart;
305+ }
306+#endif
307+ debug_return_int(-1);
308+ }
309+#ifndef O_DIRECTORY
310+ if (!S_ISDIR(sb.st_mode)) {
311+ close(dfd);
312+ errno = ENOTDIR;
313+ debug_return_int(-1);
314+ }
315+#endif
316+ is_writable = dir_is_writable(&sb, user_details.uid, user_details.gid,
317+ user_details.ngroups, user_details.groups);
318+
319+ while (path[0] == '/')
320+ path++;
321+ slash = strchr(path, '/');
322+ if (slash == NULL)
323+ break;
324+ *slash = '\0';
325+ if (is_writable)
326+ subdfd = sudo_edit_openat_nofollow(dfd, path, dflags, 0);
327+ else
328+ subdfd = openat(dfd, path, dflags, 0);
329+ *slash = '/'; /* restore path */
330+ close(dfd);
331+ if (subdfd == -1)
332+ debug_return_int(-1);
333+ path = slash + 1;
334+ dfd = subdfd;
335+ }
336+
337+ if (is_writable) {
338 close(dfd);
339 errno = EISDIR;
340 debug_return_int(-1);
341@@ -332,27 +437,10 @@
342 if (!ISSET(oflags, O_NONBLOCK))
343 (void) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_NONBLOCK);
344
345- /*
346- * Treat [fl]stat() failure like an open() failure.
347- */
348- if (fstat(fd, &sb1) == -1 || lstat(path, &sb2) == -1) {
349- const int serrno = errno;
350+ if (!ISSET(sflags, CD_SUDOEDIT_FOLLOW) && sudo_edit_is_symlink(fd, path)) {
351 close(fd);
352- errno = serrno;
353- debug_return_int(-1);
354- }
355-
356- /*
357- * Make sure we did not open a link and that what we opened
358- * matches what is currently on the file system.
359- */
360- if (!ISSET(sflags, CD_SUDOEDIT_FOLLOW)) {
361- if (S_ISLNK(sb2.st_mode) ||
362- sb1.st_dev != sb2.st_dev || sb1.st_ino != sb2.st_ino) {
363- close(fd);
364- errno = ELOOP;
365- debug_return_int(-1);
366- }
367+ fd = -1;
368+ errno = ELOOP;
369 }
370
371 debug_return_int(fd);
372
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 7c2651764ad..36c538c1655 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -1,7 +1,7 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013, 2015, 2016 Andreas Enge <andreas@enge.fr> 2;;; Copyright © 2013, 2015, 2016 Andreas Enge <andreas@enge.fr>
3;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> 3;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
4;;; Copyright © 2014, 2015 Ricardo Wurmus <rekado@elephly.net> 4;;; Copyright © 2014, 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
5;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> 5;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
6;;; Copyright © 2016 Roel Janssen <roel@gnu.org> 6;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
7;;; 7;;;
@@ -28,6 +28,7 @@
28 #:use-module (guix build-system cmake) 28 #:use-module (guix build-system cmake)
29 #:use-module (guix build-system python) 29 #:use-module (guix build-system python)
30 #:use-module (gnu packages) 30 #:use-module (gnu packages)
31 #:use-module (gnu packages autotools)
31 #:use-module (gnu packages compression) 32 #:use-module (gnu packages compression)
32 #:use-module (gnu packages fontutils) 33 #:use-module (gnu packages fontutils)
33 #:use-module (gnu packages ghostscript) 34 #:use-module (gnu packages ghostscript)
@@ -157,6 +158,45 @@
157Poppler PDF rendering library.") 158Poppler PDF rendering library.")
158 (license license:lgpl2.1+))) 159 (license license:lgpl2.1+)))
159 160
161(define-public libharu
162 (package
163 (name "libharu")
164 (version "2.3.0")
165 (source (origin
166 (method url-fetch)
167 (uri (string-append "https://github.com/libharu/libharu/archive/"
168 "RELEASE_"
169 (string-join (string-split version #\.) "_")
170 ".tar.gz"))
171 (file-name (string-append name "-" version ".tar.gz"))
172 (sha256
173 (base32
174 "1lm4v539y9cb1lvbq387j57sy7yxda3yv8b1pk8m6zazbp66i7lg"))))
175 (build-system gnu-build-system)
176 (arguments
177 `(#:configure-flags
178 (list (string-append "--with-zlib="
179 (assoc-ref %build-inputs "zlib"))
180 (string-append "--with-png="
181 (assoc-ref %build-inputs "libpng")))
182 #:phases
183 (modify-phases %standard-phases
184 (add-before 'configure 'autogen
185 (lambda _ (zero? (system* "autoreconf" "-vif")))))))
186 (inputs
187 `(("zlib" ,zlib)
188 ("libpng" ,libpng)))
189 (native-inputs
190 `(("autoconf" ,autoconf)
191 ("automake" ,automake)
192 ("libtool" ,libtool)))
193 (home-page "http://libharu.org/")
194 (synopsis "Library for generating PDF files")
195 (description
196 "libHaru is a library for generating PDF files. libHaru does not support
197reading and editing of existing PDF files.")
198 (license license:zlib)))
199
160(define-public xpdf 200(define-public xpdf
161 (package 201 (package
162 (name "xpdf") 202 (name "xpdf")
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 211505a8460..9f298ac9600 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -8,6 +8,8 @@
8;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net> 8;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net>
9;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> 9;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
10;;; Coypright © 2016 ng0 <ng0@we.make.ritual.n0.is> 10;;; Coypright © 2016 ng0 <ng0@we.make.ritual.n0.is>
11;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
12;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
11;;; 13;;;
12;;; This file is part of GNU Guix. 14;;; This file is part of GNU Guix.
13;;; 15;;;
@@ -1002,6 +1004,29 @@ some enhancements such as here-documents, C-style comments, and multiline
1002options.") 1004options.")
1003 (license (package-license perl)))) 1005 (license (package-license perl))))
1004 1006
1007(define-public perl-config-ini
1008 (package
1009 (name "perl-config-ini")
1010 (version "0.025")
1011 (source (origin
1012 (method url-fetch)
1013 (uri (string-append
1014 "mirror://cpan/authors/id/R/RJ/RJBS/Config-INI-"
1015 version ".tar.gz"))
1016 (sha256
1017 (base32
1018 "0clphq6a17chvb663fvjnxqvyvh26g03x0fl4bg9vy4ibdnzg2v2"))))
1019 (build-system perl-build-system)
1020 (inputs
1021 `(("perl-mixin-linewise" ,perl-mixin-linewise)
1022 ("perl-perlio-utf8_strict" ,perl-perlio-utf8_strict)
1023 ("perl-sub-exporter" ,perl-sub-exporter)))
1024 (home-page "http://search.cpan.org/dist/Config-INI")
1025 (synopsis "Simple .ini-file format reader and writer")
1026 (description "@code{Config::INI} is a module that facilates the reading
1027and writing of @code{.ini}-style configuration files.")
1028 (license (package-license perl))))
1029
1005(define-public perl-context-preserve 1030(define-public perl-context-preserve
1006 (package 1031 (package
1007 (name "perl-context-preserve") 1032 (name "perl-context-preserve")
@@ -2458,6 +2483,26 @@ shell.")
2458 "File-Which-" version)) 2483 "File-Which-" version))
2459 (license (package-license perl)))) 2484 (license (package-license perl))))
2460 2485
2486(define-public perl-file-zglob
2487 (package
2488 (name "perl-file-zglob")
2489 (version "0.11")
2490 (source (origin
2491 (method url-fetch)
2492 (uri (string-append
2493 "mirror://cpan/authors/id/T/TO/TOKUHIROM/File-Zglob-"
2494 version ".tar.gz"))
2495 (sha256
2496 (base32
2497 "16v61rn0yimpv5kp6b20z2f1c93n5kpsyjvr0gq4w2dc43gfvc8w"))))
2498 (build-system perl-build-system)
2499 (home-page "http://search.cpan.org/dist/File-Zglob")
2500 (synopsis "Extended Unix style glob functionality")
2501 (description "@code{File::Zglob} provides a traditional Unix @code{glob}
2502functionality; it returns a list of file names that match the given pattern.
2503For instance, it supports the @code{**/*.pm} form.")
2504 (license (package-license perl))))
2505
2461(define-public perl-getopt-long-descriptive 2506(define-public perl-getopt-long-descriptive
2462 (package 2507 (package
2463 (name "perl-getopt-long-descriptive") 2508 (name "perl-getopt-long-descriptive")
@@ -2505,6 +2550,29 @@ vaguely inspired by John Ousterhout's Tk_ParseArgv.")
2505 "Getopt-Tabular-" version)) 2550 "Getopt-Tabular-" version))
2506 (license (package-license perl)))) 2551 (license (package-license perl))))
2507 2552
2553(define-public perl-guard
2554 (package
2555 (name "perl-guard")
2556 (version "1.023")
2557 (source (origin
2558 (method url-fetch)
2559 (uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/Guard-"
2560 version ".tar.gz"))
2561 (sha256
2562 (base32
2563 "1p6i9mfmbs9cw40jqdv71ihv2xfi0vvlv8bdv2810gf93zwxvi1l"))))
2564 (build-system perl-build-system)
2565 (home-page "http://search.cpan.org/dist/Guard")
2566 (synopsis "Safe cleanup blocks implemented as guards")
2567 (description "@code{Guard} implements so-called @dfn{guards}. A guard is
2568something (usually an object) that \"guards\" a resource, ensuring that it is
2569cleaned up when expected.
2570
2571Specifically, this module supports two different types of guards: guard
2572objects, which execute a given code block when destroyed, and scoped guards,
2573which are tied to the scope exit.")
2574 (license (package-license perl))))
2575
2508(define-public perl-hash-merge 2576(define-public perl-hash-merge
2509 (package 2577 (package
2510 (name "perl-hash-merge") 2578 (name "perl-hash-merge")
@@ -2592,6 +2660,31 @@ dependencies for CPAN distributions. These dependencies get bundled into the
2592inc directory within a distribution and are used by Makefile.PL or Build.PL.") 2660inc directory within a distribution and are used by Makefile.PL or Build.PL.")
2593 (license asl2.0))) 2661 (license asl2.0)))
2594 2662
2663(define-public perl-io-captureoutput
2664 (package
2665 (name "perl-io-captureoutput")
2666 (version "1.1104")
2667 (source
2668 (origin
2669 (method url-fetch)
2670 (uri (string-append
2671 "mirror://cpan/authors/id/D/DA/DAGOLDEN/IO-CaptureOutput-"
2672 version
2673 ".tar.gz"))
2674 (sha256
2675 (base32
2676 "0c437zvzpqi8f0h3nmblwdi2bvsb92b7g30fndr7my9qnky35izw"))))
2677 (build-system perl-build-system)
2678 (home-page "http://search.cpan.org/dist/IO-CaptureOutput")
2679 (synopsis "Capture STDOUT and STDERR from Perl code, subprocesses or XS")
2680 (description "@code{IO::CaptureOutput} provides routines for capturing
2681@code{STDOUT} and @code{STDERR} from perl subroutines, forked system
2682calls (e.g. @code{system()}, @code{fork()}) and from XS or C modules.
2683
2684This module is no longer recommended by its maintainer. Users are advised to
2685try @code{Capture::Tiny} instead.")
2686 (license (package-license perl))))
2687
2595(define-public perl-io-interactive 2688(define-public perl-io-interactive
2596 (package 2689 (package
2597 (name "perl-io-interactive") 2690 (name "perl-io-interactive")
@@ -2744,6 +2837,30 @@ Perlish API and none of the bloat and rarely used features of IPC::Run.")
2744allowing data to be efficiently communicated between processes.") 2837allowing data to be efficiently communicated between processes.")
2745 (license (package-license perl)))) 2838 (license (package-license perl))))
2746 2839
2840(define-public perl-ipc-system-simple
2841 (package
2842 (name "perl-ipc-system-simple")
2843 (version "1.25")
2844 (source (origin
2845 (method url-fetch)
2846 (uri (string-append
2847 "mirror://cpan/authors/id/P/PJ/PJF/IPC-System-Simple-"
2848 version ".tar.gz"))
2849 (sha256
2850 (base32
2851 "0fsdb81shjj4hifyyzvj7vpkhq5jrfhlcpw2xbjfi1mqz8fsmdpi"))))
2852 (build-system perl-build-system)
2853 (home-page "http://search.cpan.org/dist/IPC-System-Simple")
2854 (synopsis "Run commands simply, with detailed diagnostics")
2855 (description "Calling Perl's in-built @code{system} function is easy,
2856determining if it was successful is hard. Let's face it, @code{$?} isn't the
2857nicest variable in the world to play with, and even if you do check it,
2858producing a well-formatted error string takes a lot of work.
2859
2860@code{IPC::System::Simple} takes the hard work out of calling external
2861commands.")
2862 (license (package-license perl))))
2863
2747(define-public perl-json 2864(define-public perl-json
2748 (package 2865 (package
2749 (name "perl-json") 2866 (name "perl-json")
@@ -2913,6 +3030,30 @@ one: logging, exceptions, and translations.")
2913List::Util or List::MoreUtils defines, with preference to List::Util.") 3030List::Util or List::MoreUtils defines, with preference to List::Util.")
2914 (license (package-license perl)))) 3031 (license (package-license perl))))
2915 3032
3033(define-public perl-list-compare
3034 (package
3035 (name "perl-list-compare")
3036 (version "0.53")
3037 (source
3038 (origin
3039 (method url-fetch)
3040 (uri (string-append
3041 "mirror://cpan/authors/id/J/JK/JKEENAN/List-Compare-"
3042 version
3043 ".tar.gz"))
3044 (sha256
3045 (base32
3046 "0l451yqhx1hlm7f2c3bjsl3n8w6l1jngrxzyfm2d8d9iggv4zgzx"))))
3047 (build-system perl-build-system)
3048 (native-inputs
3049 `(("perl-io-captureoutput" ,perl-io-captureoutput)))
3050 (home-page "http://search.cpan.org/dist/List-Compare")
3051 (synopsis "Compare elements of two or more lists")
3052 (description "@code{List::Compare} provides a module to perform
3053comparative operations on two or more lists. Provided operations include
3054intersections, unions, unique elements, complements and many more.")
3055 (license (package-license perl))))
3056
2916(define-public perl-list-moreutils 3057(define-public perl-list-moreutils
2917 (package 3058 (package
2918 (name "perl-list-moreutils") 3059 (name "perl-list-moreutils")
@@ -2938,6 +3079,39 @@ List::Util or List::MoreUtils defines, with preference to List::Util.")
2938functionality on lists which is not going to go into List::Util.") 3079functionality on lists which is not going to go into List::Util.")
2939 (license (package-license perl)))) 3080 (license (package-license perl))))
2940 3081
3082(define-public perl-list-someutils
3083 (package
3084 (name "perl-list-someutils")
3085 (version "0.52")
3086 (source
3087 (origin
3088 (method url-fetch)
3089 (uri (string-append
3090 "mirror://cpan/authors/id/D/DR/DROLSKY/List-SomeUtils-"
3091 version
3092 ".tar.gz"))
3093 (sha256
3094 (base32
3095 "1b450jyxaa6q2yl0cdhknr3c2a5s7b9b18ccnwac625c681r130y"))))
3096 (build-system perl-build-system)
3097 (native-inputs
3098 `(("perl-test-leaktrace" ,perl-test-leaktrace)))
3099 (inputs
3100 `(("perl-exporter-tiny" ,perl-exporter-tiny)
3101 ("perl-module-implementation"
3102 ,perl-module-implementation)))
3103 (home-page "http://search.cpan.org/dist/List-SomeUtils")
3104 (synopsis "Provide the stuff missing in List::Util")
3105 (description "@code{List::SomeUtils} provides some trivial but commonly
3106needed functionality on lists which is not going to go into @code{List::Util}.
3107
3108All of the below functions are implementable in only a couple of lines of Perl
3109code. Using the functions from this module however should give slightly
3110better performance as everything is implemented in C. The pure-Perl
3111implementation of these functions only serves as a fallback in case the C
3112portions of this module couldn't be compiled on this machine.")
3113 (license (package-license perl))))
3114
2941(define-public perl-memoize-expirelru 3115(define-public perl-memoize-expirelru
2942 (package 3116 (package
2943 (name "perl-memoize-expirelru") 3117 (name "perl-memoize-expirelru")
@@ -2997,6 +3171,31 @@ from various sources. For instance, it contains all IANA types and the
2997knowledge of Apache.") 3171knowledge of Apache.")
2998 (license (package-license perl)))) 3172 (license (package-license perl))))
2999 3173
3174(define-public perl-mixin-linewise
3175 (package
3176 (name "perl-mixin-linewise")
3177 (version "0.108")
3178 (source (origin
3179 (method url-fetch)
3180 (uri (string-append
3181 "mirror://cpan/authors/id/R/RJ/RJBS/Mixin-Linewise-"
3182 version ".tar.gz"))
3183 (sha256
3184 (base32
3185 "1wmfr19w9y8qys7b32mnj1vmps7qwdahqas71a9p62ac8xw0dwkx"))))
3186 (build-system perl-build-system)
3187 (inputs
3188 `(("perl-perlio-utf8_strict" ,perl-perlio-utf8_strict)
3189 ("perl-sub-exporter" ,perl-sub-exporter)))
3190 (home-page "http://search.cpan.org/dist/Mixin-Linewise")
3191 (synopsis "Write your linewise code for handles; this does the rest")
3192 (description "It's boring to deal with opening files for IO, converting
3193strings to handle-like objects, and all that. With
3194@code{Mixin::Linewise::Readers} and @code{Mixin::Linewise::Writers}, you can
3195just write a method to handle handles, and methods for handling strings and
3196file names are added for you.")
3197 (license (package-license perl))))
3198
3000(define-public perl-module-build-tiny 3199(define-public perl-module-build-tiny
3001 (package 3200 (package
3002 (name "perl-module-build-tiny") 3201 (name "perl-module-build-tiny")
@@ -4154,6 +4353,29 @@ up inheritance from those modules at the same time.")
4154directory specifications in a cross-platform manner.") 4353directory specifications in a cross-platform manner.")
4155 (license (package-license perl)))) 4354 (license (package-license perl))))
4156 4355
4356(define-public perl-perlio-utf8_strict
4357 (package
4358 (name "perl-perlio-utf8-strict")
4359 (version "0.006")
4360 (source (origin
4361 (method url-fetch)
4362 (uri (string-append
4363 "mirror://cpan/authors/id/L/LE/LEONT/PerlIO-utf8_strict-"
4364 version ".tar.gz"))
4365 (sha256
4366 (base32
4367 "0qnmiflirfq10jkmrxyy81ch6hzyndfzxqf8maif0fy44kk1004q"))))
4368 (build-system perl-build-system)
4369 (native-inputs
4370 `(("perl-test-exception" ,perl-test-exception)))
4371 (home-page
4372 "http://search.cpan.org/dist/PerlIO-utf8_strict")
4373 (synopsis "Fast and correct UTF-8 IO")
4374 (description "@code{PerlIO::utf8_strict} provides a fast and correct UTF-8
4375PerlIO layer. Unlike Perl's default @code{:utf8} layer it checks the input
4376for correctness.")
4377 (license (package-license perl))))
4378
4157(define-public perl-pod-coverage 4379(define-public perl-pod-coverage
4158 (package 4380 (package
4159 (name "perl-pod-coverage") 4381 (name "perl-pod-coverage")
@@ -4939,6 +5161,66 @@ framework base class. It concentrates on offering reusable data driven
4939patterns, so that you can write tests with a minimum of code.") 5161patterns, so that you can write tests with a minimum of code.")
4940 (license (package-license perl)))) 5162 (license (package-license perl))))
4941 5163
5164(define-public perl-test-class
5165 (package
5166 (name "perl-test-class")
5167 (version "0.50")
5168 (source
5169 (origin
5170 (method url-fetch)
5171 (uri (string-append
5172 "https://cpan.metacpan.org/authors/id/E/ET/ETHER/Test-Class-"
5173 version
5174 ".tar.gz"))
5175 (sha256
5176 (base32
5177 "0l0kk5jvxjkic2jkf1r7v41irb344aasnzr3f5ygjgxgiknm9489"))))
5178 (build-system perl-build-system)
5179 (native-inputs
5180 `(("perl-test-exception" ,perl-test-exception)))
5181 (inputs
5182 `(("perl-module-runtime" ,perl-module-runtime)
5183 ("perl-mro-compat" ,perl-mro-compat)
5184 ("perl-try-tiny" ,perl-try-tiny)))
5185 (home-page "http://search.cpan.org/dist/Test-Class")
5186 (synopsis "Easily create test classes in an xUnit/JUnit style")
5187 (description "@code{Test::Class} provides a simple way of creating classes
5188and objects to test your code in an xUnit style.
5189
5190Built using @code{Test::Builder}, it was designed to work with other
5191@code{Test::Builder} based modules (@code{Test::More},
5192@code{Test::Differences}, @code{Test::Exception}, etc.).")
5193 (license (package-license perl))))
5194
5195(define-public perl-test-class-most
5196 (package
5197 (name "perl-test-class-most")
5198 (version "0.08")
5199 (source
5200 (origin
5201 (method url-fetch)
5202 (uri (string-append
5203 "mirror://cpan/authors/id/O/OV/OVID/Test-Class-Most-"
5204 version
5205 ".tar.gz"))
5206 (sha256
5207 (base32
5208 "1zvx9hil0mg0pnb8xfa4m0xgjpvh8s5gnbyprq3xwpdsdgcdwk33"))))
5209 (build-system perl-build-system)
5210 (native-inputs
5211 `(("perl-module-build" ,perl-module-build)))
5212 (inputs
5213 `(("perl-test-class" ,perl-test-class)
5214 ("perl-test-most" ,perl-test-most)
5215 ("perl-module-runtime" ,perl-module-runtime)
5216 ("perl-try-tiny" ,perl-try-tiny)
5217 ("perl-mro-compat" ,perl-mro-compat)))
5218 (home-page "http://search.cpan.org/dist/Test-Class-Most")
5219 (synopsis "Test classes the easy way")
5220 (description "@code{Test::Class::Most} provides some more convenience when
5221using @code{Test::Class}.")
5222 (license (package-license perl))))
5223
4942(define-public perl-test-cleannamespaces 5224(define-public perl-test-cleannamespaces
4943 (package 5225 (package
4944 (name "perl-test-cleannamespaces") 5226 (name "perl-test-cleannamespaces")
@@ -5651,15 +5933,15 @@ can combine fields into a CSV string and parse a CSV string into fields.")
5651(define-public perl-text-diff 5933(define-public perl-text-diff
5652 (package 5934 (package
5653 (name "perl-text-diff") 5935 (name "perl-text-diff")
5654 (version "1.41") 5936 (version "1.44")
5655 (source 5937 (source
5656 (origin 5938 (origin
5657 (method url-fetch) 5939 (method url-fetch)
5658 (uri (string-append "mirror://cpan/authors/id/O/OV/OVID/" 5940 (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/"
5659 "Text-Diff-" version ".tar.gz")) 5941 "Text-Diff-" version ".tar.gz"))
5660 (sha256 5942 (sha256
5661 (base32 5943 (base32
5662 "1ynjsa4sr1yvyh65sdfvahaafglibz70j8b6rj01cg1iisj50zx6")))) 5944 "041v92zla2acdc433f47giridf6p820sdczs7x5d71fhsyza1xsp"))))
5663 (build-system perl-build-system) 5945 (build-system perl-build-system)
5664 (propagated-inputs 5946 (propagated-inputs
5665 `(("perl-algorithm-diff" ,perl-algorithm-diff))) 5947 `(("perl-algorithm-diff" ,perl-algorithm-diff)))
@@ -5806,6 +6088,26 @@ system.")
5806as exceptions to standard program flow.") 6088as exceptions to standard program flow.")
5807 (license (package-license perl)))) 6089 (license (package-license perl))))
5808 6090
6091(define-public perltidy
6092 (package
6093 (name "perltidy")
6094 (version "20160302")
6095 (source (origin
6096 (method url-fetch)
6097 (uri (string-append "mirror://sourceforge/perltidy/Perl-Tidy-"
6098 version ".tar.gz"))
6099 (sha256
6100 (base32
6101 "19yw63yh5s3pq7k3nkw6nsamg5b8vvwyhgbizslgxg0mqgc4xl3d"))))
6102 (build-system perl-build-system)
6103 (home-page "http://perltidy.sourceforge.net/")
6104 (synopsis "Perl script tidier")
6105 (description "This package contains a Perl script which indents and
6106reformats Perl scripts to make them easier to read. The formatting can be
6107controlled with command line parameters. The default parameter settings
6108approximately follow the suggestions in the Perl Style Guide.")
6109 (license gpl2+)))
6110
5809(define-public perl-tie-ixhash 6111(define-public perl-tie-ixhash
5810 (package 6112 (package
5811 (name "perl-tie-ixhash") 6113 (name "perl-tie-ixhash")
diff --git a/gnu/packages/pumpio.scm b/gnu/packages/pumpio.scm
index 9d705ea3d55..a74d474368c 100644
--- a/gnu/packages/pumpio.scm
+++ b/gnu/packages/pumpio.scm
@@ -61,7 +61,6 @@
61 (inputs 61 (inputs
62 `(("aspell" ,aspell) 62 `(("aspell" ,aspell)
63 ("qtbase" ,qtbase) 63 ("qtbase" ,qtbase)
64 ("qjson" ,qjson)
65 ("tidy" ,tidy))) 64 ("tidy" ,tidy)))
66 (synopsis "Qt-based pump.io client") 65 (synopsis "Qt-based pump.io client")
67 (description "Pumpa is a simple pump.io client written in C++ and Qt.") 66 (description "Pumpa is a simple pump.io client written in C++ and Qt.")
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 8bba7ca2565..717a81e59fc 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -22,6 +22,8 @@
22;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> 22;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
23;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org> 23;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
24;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> 24;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
25;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
26;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
25;;; 27;;;
26;;; This file is part of GNU Guix. 28;;; This file is part of GNU Guix.
27;;; 29;;;
@@ -384,18 +386,18 @@ instead of @command{python3}.")))
384(define-public python-psutil 386(define-public python-psutil
385 (package 387 (package
386 (name "python-psutil") 388 (name "python-psutil")
387 (version "3.3.0") 389 (version "4.3.0")
388 (source 390 (source
389 (origin 391 (origin
390 (method url-fetch) 392 (method url-fetch)
391 (uri (pypi-uri "psutil" version)) 393 (uri (pypi-uri "psutil" version))
392 (sha256 394 (sha256
393 (base32 395 (base32
394 "11bd1555vf2ibjnmqf64im5cp55vcqfq45ccinm9ll3bs68na6s2")))) 396 "1w4r09fvn6kd80m5mx4ws1wz100brkaq6hzzpwrns8cgjzjpl6c6"))))
395 (build-system python-build-system) 397 (build-system python-build-system)
396 (native-inputs 398 (native-inputs
397 `(("python-setuptools" ,python-setuptools))) 399 `(("python-setuptools" ,python-setuptools)))
398 (home-page "https://pypi.python.org/pypi/psutil/") 400 (home-page "https://www.github.com/giampaolo/psutil")
399 (synopsis "Library for retrieving information on running processes") 401 (synopsis "Library for retrieving information on running processes")
400 (description 402 (description
401 "psutil (Python system and process utilities) is a library for retrieving 403 "psutil (Python system and process utilities) is a library for retrieving
@@ -1139,15 +1141,14 @@ after Andy Lester’s Perl module WWW::Mechanize.")
1139(define-public python-simplejson 1141(define-public python-simplejson
1140 (package 1142 (package
1141 (name "python-simplejson") 1143 (name "python-simplejson")
1142 (version "3.3.0") 1144 (version "3.8.2")
1143 (source 1145 (source
1144 (origin 1146 (origin
1145 (method url-fetch) 1147 (method url-fetch)
1146 (uri (string-append "https://pypi.python.org/packages/source/s/simplejson/simplejson-" 1148 (uri (pypi-uri "simplejson" version))
1147 version ".tar.gz"))
1148 (sha256 1149 (sha256
1149 (base32 1150 (base32
1150 "07wsry5j44l5zzm74l4j2bvasiq8n5m32f31n2p7c68i5vc6p2ks")))) 1151 "0zylrnax8b6r0ndgni4w9c599fi6wm9vx5g6k3ddqfj3932kk16m"))))
1151 (build-system python-build-system) 1152 (build-system python-build-system)
1152 (home-page "http://simplejson.readthedocs.org/en/latest/") 1153 (home-page "http://simplejson.readthedocs.org/en/latest/")
1153 (synopsis 1154 (synopsis
@@ -2030,14 +2031,14 @@ have failed since the last commit or what tests are currently failing.")
2030(define-public python-coverage 2031(define-public python-coverage
2031 (package 2032 (package
2032 (name "python-coverage") 2033 (name "python-coverage")
2033 (version "4.0.3") 2034 (version "4.1")
2034 (source 2035 (source
2035 (origin 2036 (origin
2036 (method url-fetch) 2037 (method url-fetch)
2037 (uri (pypi-uri "coverage" version)) 2038 (uri (pypi-uri "coverage" version))
2038 (sha256 2039 (sha256
2039 (base32 2040 (base32
2040 "0qjlja8ny4gcfp8abqfwdrvr8qw9kr69lkja0b4cqqbsdmdjgcc5")))) 2041 "01rbr4br4lsk0lwn8fb96zwd2xr4f0mg1w7iq3j11i8f5ig2nqs1"))))
2041 (build-system python-build-system) 2042 (build-system python-build-system)
2042 (inputs 2043 (inputs
2043 `(("python-setuptools" ,python-setuptools))) 2044 `(("python-setuptools" ,python-setuptools)))
@@ -2083,14 +2084,13 @@ backported from Python 2.7 for Python 2.4+.")
2083(define-public behave 2084(define-public behave
2084 (package 2085 (package
2085 (name "behave") 2086 (name "behave")
2086 (version "1.2.4") 2087 (version "1.2.5")
2087 (source (origin 2088 (source (origin
2088 (method url-fetch) 2089 (method url-fetch)
2089 (uri (string-append "https://pypi.python.org/packages/source/b/" 2090 (uri (pypi-uri "behave" version ".tar.bz2"))
2090 name "/" name "-" version ".tar.gz"))
2091 (sha256 2091 (sha256
2092 (base32 2092 (base32
2093 "1v2rfy8xnf0rk7cj4cgr7lam4015d458i7bg0xqs9czfv6njlm14")))) 2093 "1iypp6z46r19n4xmgx6m1lwmlpfjh8vapq8izigrqlaarvp2y64c"))))
2094 (build-system python-build-system) 2094 (build-system python-build-system)
2095 (inputs 2095 (inputs
2096 `(("python-setuptools" ,python-setuptools) 2096 `(("python-setuptools" ,python-setuptools)
@@ -3283,15 +3283,14 @@ that client code uses to construct the grammar directly in Python code.")
3283(define-public python-numexpr 3283(define-public python-numexpr
3284 (package 3284 (package
3285 (name "python-numexpr") 3285 (name "python-numexpr")
3286 (version "2.4.4") 3286 (version "2.6.0")
3287 (source 3287 (source
3288 (origin 3288 (origin
3289 (method url-fetch) 3289 (method url-fetch)
3290 (uri (string-append "https://pypi.python.org/packages/source/" 3290 (uri (pypi-uri "numexpr" version))
3291 "n/numexpr/numexpr-" version ".tar.gz"))
3292 (sha256 3291 (sha256
3293 (base32 3292 (base32
3294 "0nsnff5312fm38w6dm34bw7ghfqqy8vl9gig0al963h4mz8zm8nz")))) 3293 "0i6iagl2hhbr8q4qzbbjd859v5806vqylq87fq7pi914ps6d6cag"))))
3295 (build-system python-build-system) 3294 (build-system python-build-system)
3296 (arguments `(#:tests? #f)) ; no tests included 3295 (arguments `(#:tests? #f)) ; no tests included
3297 (propagated-inputs 3296 (propagated-inputs
@@ -4132,13 +4131,13 @@ child application and control it as if a human were typing commands.")
4132(define-public python-setuptools-scm 4131(define-public python-setuptools-scm
4133 (package 4132 (package
4134 (name "python-setuptools-scm") 4133 (name "python-setuptools-scm")
4135 (version "1.9.0") 4134 (version "1.11.1")
4136 (source (origin 4135 (source (origin
4137 (method url-fetch) 4136 (method url-fetch)
4138 (uri (pypi-uri "setuptools_scm" version)) 4137 (uri (pypi-uri "setuptools_scm" version))
4139 (sha256 4138 (sha256
4140 (base32 4139 (base32
4141 "0y24bl893zk6nrklbvdrlmpkalf214zjn6k1xrglljd29rrn4wxi")))) 4140 "1gqr73i150yzj3mz32854vj93x07yr52kn8fdckwa41ll8wgficc"))))
4142 (build-system python-build-system) 4141 (build-system python-build-system)
4143 (native-inputs `(("python-setuptools" ,python-setuptools))) 4142 (native-inputs `(("python-setuptools" ,python-setuptools)))
4144 (home-page "https://github.com/pypa/setuptools_scm/") 4143 (home-page "https://github.com/pypa/setuptools_scm/")
@@ -4507,6 +4506,30 @@ features useful for text console applications.")
4507(define-public python2-urwid 4506(define-public python2-urwid
4508 (package-with-python2 python-urwid)) 4507 (package-with-python2 python-urwid))
4509 4508
4509(define-public python-urwidtrees
4510 (package
4511 (name "python-urwidtrees")
4512 (version "1.0.1.1")
4513 (source
4514 (origin
4515 (method url-fetch)
4516 (uri (pypi-uri "urwidtrees" version))
4517 (sha256
4518 (base32
4519 "1zcvy12s7h3fazf33d6y7b4v19p8hg95xqwhqlmw6jz9fq76v9h8"))))
4520 (build-system python-build-system)
4521 (arguments
4522 '(#:tests? #f)) ; no tests
4523 (inputs `(("python-urwid" ,python-urwid)))
4524 (home-page "https://github.com/pazz/urwidtrees")
4525 (synopsis "Tree widgets for urwid")
4526 (description "Urwidtrees is a Widget Container API for the @code{urwid}
4527toolkit. Use it to build trees of widgets.")
4528 (license gpl3+)))
4529
4530(define-public python2-urwidtrees
4531 (package-with-python2 python-urwidtrees))
4532
4510(define-public python-dbus 4533(define-public python-dbus
4511 (package 4534 (package
4512 (name "python-dbus") 4535 (name "python-dbus")
@@ -4591,14 +4614,14 @@ translate the complete SQLite API into Python.")
4591(define-public python-lxml 4614(define-public python-lxml
4592 (package 4615 (package
4593 (name "python-lxml") 4616 (name "python-lxml")
4594 (version "3.5.0") 4617 (version "3.6.0")
4595 (source 4618 (source
4596 (origin 4619 (origin
4597 (method url-fetch) 4620 (method url-fetch)
4598 (uri (pypi-uri "lxml" version)) 4621 (uri (pypi-uri "lxml" version))
4599 (sha256 4622 (sha256
4600 (base32 4623 (base32
4601 "0y7m2s8ci6q642zl85y5axkj8z827l0vhjl532acb75hlkir77rl")))) 4624 "1pvbmiy2m7jwv493kilbghhj2pkh8wy1na3ji350vhzhlwlclx4w"))))
4602 (build-system python-build-system) 4625 (build-system python-build-system)
4603 (inputs 4626 (inputs
4604 `(("libxml2" ,libxml2) 4627 `(("libxml2" ,libxml2)
@@ -4651,17 +4674,14 @@ converts incoming documents to Unicode and outgoing documents to UTF-8.")
4651(define-public python2-cssutils 4674(define-public python2-cssutils
4652 (package 4675 (package
4653 (name "python2-cssutils") 4676 (name "python2-cssutils")
4654 (version "1.0") 4677 (version "1.0.1")
4655 (source 4678 (source
4656 (origin 4679 (origin
4657 (method url-fetch) 4680 (method url-fetch)
4658 (uri (string-append 4681 (uri (pypi-uri "cssutils" version))
4659 "https://pypi.python.org/packages/source/c/cssutils/cssutils-"
4660 version
4661 ".zip"))
4662 (sha256 4682 (sha256
4663 (base32 4683 (base32
4664 "1bwim1353r4hqiir73sn4sc43y7ymh09qx0kly7vj048blppc125")))) 4684 "0qwha9x1wml2qmipbcz03gndnlwhzrjdvw9i09si247a90l8p8fq"))))
4665 (build-system python-build-system) 4685 (build-system python-build-system)
4666 (native-inputs 4686 (native-inputs
4667 `(("python2-mock" ,python2-mock) ; for the tests 4687 `(("python2-mock" ,python2-mock) ; for the tests
@@ -4684,17 +4704,14 @@ options.")
4684(define-public python-cssselect 4704(define-public python-cssselect
4685 (package 4705 (package
4686 (name "python-cssselect") 4706 (name "python-cssselect")
4687 (version "0.9.1") 4707 (version "0.9.2")
4688 (source 4708 (source
4689 (origin 4709 (origin
4690 (method url-fetch) 4710 (method url-fetch)
4691 (uri (string-append 4711 (uri (pypi-uri "cssselect" version))
4692 "https://pypi.python.org/packages/source/c/cssselect/cssselect-"
4693 version
4694 ".tar.gz"))
4695 (sha256 4712 (sha256
4696 (base32 4713 (base32
4697 "10h623qnp6dp1191jri7lvgmnd4yfkl36k9smqklp1qlf3iafd85")))) 4714 "1xg6gbva1yswghiycmgincv6ab4bn7hpm720ndbj40h8xycmnfvi"))))
4698 (build-system python-build-system) 4715 (build-system python-build-system)
4699 (inputs 4716 (inputs
4700 `(("python-setuptools" ,python-setuptools))) 4717 `(("python-setuptools" ,python-setuptools)))
@@ -5961,18 +5978,14 @@ responses, rather than doing any computation.")
5961(define-public python-cryptography-vectors 5978(define-public python-cryptography-vectors
5962 (package 5979 (package
5963 (name "python-cryptography-vectors") 5980 (name "python-cryptography-vectors")
5964 (version "1.3.2") 5981 (version "1.3.4")
5965 (source 5982 (source
5966 (origin 5983 (origin
5967 (method url-fetch) 5984 (method url-fetch)
5968 (uri (string-append 5985 (uri (pypi-uri "cryptography_vectors" version))
5969 "https://pypi.python.org/packages/"
5970 "3f/fd/"
5971 "5883a7fdfcdf6edec55c58605be99d8c36ce97a9b729763ea9cf30e761b7"
5972 "/cryptography_vectors-" version ".tar.gz"))
5973 (sha256 5986 (sha256
5974 (base32 5987 (base32
5975 "0ss682bpgzdfy2vam8yhhrx7p5gnw89ydlvaswqp52za8sd8nsh0")))) 5988 "15h1iz2klnpb4f8djxy7cpbnyn3wbjp7bnj4pz6s7w6plghbq524"))))
5976 (build-system python-build-system) 5989 (build-system python-build-system)
5977 (native-inputs 5990 (native-inputs
5978 `(("python-setuptools" ,python-setuptools))) 5991 `(("python-setuptools" ,python-setuptools)))
@@ -5989,18 +6002,14 @@ responses, rather than doing any computation.")
5989(define-public python-cryptography 6002(define-public python-cryptography
5990 (package 6003 (package
5991 (name "python-cryptography") 6004 (name "python-cryptography")
5992 (version "1.3.2") 6005 (version "1.3.4")
5993 (source 6006 (source
5994 (origin 6007 (origin
5995 (method url-fetch) 6008 (method url-fetch)
5996 (uri (string-append 6009 (uri (pypi-uri "cryptography" version))
5997 "https://pypi.python.org/packages/"
5998 "04/da/"
5999 "35f9a1d34dab5d777f65fb87731288f338ab0ae46a525ffdf0405b573dd0"
6000 "/cryptography-" version ".tar.gz"))
6001 (sha256 6010 (sha256
6002 (base32 6011 (base32
6003 "121067qdbzd0ir0nxjdf0kgai7qlsc9yh2xhrj4cavcn4y4gmapv")))) 6012 "1a85l548w5vvq3yhz0az7ajg2ijixzp6gagapw6wgrqvq28ghgs2"))))
6004 (build-system python-build-system) 6013 (build-system python-build-system)
6005 (inputs 6014 (inputs
6006 `(("openssl" ,openssl))) 6015 `(("openssl" ,openssl)))
@@ -6666,16 +6675,14 @@ facilities for defining, registering and looking up components.")
6666(define-public python2-pythondialog 6675(define-public python2-pythondialog
6667 (package 6676 (package
6668 (name "python2-pythondialog") 6677 (name "python2-pythondialog")
6669 (version "3.3.0") 6678 (version "3.4.0")
6670 (source 6679 (source
6671 (origin 6680 (origin
6672 (method url-fetch) 6681 (method url-fetch)
6673 (uri (string-append "https://pypi.python.org/packages/source/p/" 6682 (uri (pypi-uri "python2-pythondialog" version))
6674 "python2-pythondialog/python2-pythondialog-"
6675 version ".tar.gz"))
6676 (sha256 6683 (sha256
6677 (base32 6684 (base32
6678 "1yhkagsh99bfi592ymczf8rnw8rk6n9hdqy3dd98m3yrx8zmjvry")))) 6685 "0d8k7lxk50imdyx85lv8j98i4c93a71iwpapnl1506rpkbm9qvd9"))))
6679 (build-system python-build-system) 6686 (build-system python-build-system)
6680 (arguments 6687 (arguments
6681 `(#:phases 6688 `(#:phases
@@ -6896,16 +6903,14 @@ tables.")
6896(define-public python-websocket-client 6903(define-public python-websocket-client
6897 (package 6904 (package
6898 (name "python-websocket-client") 6905 (name "python-websocket-client")
6899 (version "0.34.0") 6906 (version "0.37.0")
6900 (source 6907 (source
6901 (origin 6908 (origin
6902 (method url-fetch) 6909 (method url-fetch)
6903 (uri (string-append "https://pypi.python.org/packages/source/w" 6910 (uri (pypi-uri "websocket_client" version))
6904 "/websocket-client/websocket_client-"
6905 version ".tar.gz"))
6906 (sha256 6911 (sha256
6907 (base32 6912 (base32
6908 "1prdx6d49f1cff17kzj15bnz09palfdgc1m5dkq9jd4mr90n4ak8")))) 6913 "0h9glp1jll3z76ly3kg08aqgxqk0a68p4zi9yn50353bh5nj92v7"))))
6909 (build-system python-build-system) 6914 (build-system python-build-system)
6910 (native-inputs 6915 (native-inputs
6911 `(("python-six" ,python-six))) ; for tests 6916 `(("python-six" ,python-six))) ; for tests
@@ -7094,7 +7099,17 @@ minimal and fast API targetting the following uses:
7094 (description "The pytest-cache plugin provides tools to rerun failures from 7099 (description "The pytest-cache plugin provides tools to rerun failures from
7095the last py.test invocation.") 7100the last py.test invocation.")
7096 (home-page "https://bitbucket.org/hpk42/pytest-cache/") 7101 (home-page "https://bitbucket.org/hpk42/pytest-cache/")
7097 (license license:expat))) 7102 (license license:expat)
7103 (properties `((python2-variant . ,(delay python2-pytest-cache))))))
7104
7105(define-public python2-pytest-cache
7106 (let ((pytest-cache (package-with-python2
7107 (strip-python2-variant python-pytest-cache))))
7108 (package
7109 (inherit pytest-cache)
7110 (native-inputs
7111 `(("python2-setuptools" ,python2-setuptools)
7112 ,@(package-native-inputs pytest-cache))))))
7098 7113
7099(define-public python-pytest-localserver 7114(define-public python-pytest-localserver
7100 (package 7115 (package
@@ -7975,14 +7990,14 @@ layouts.")
7975(define-public python-pyquery 7990(define-public python-pyquery
7976 (package 7991 (package
7977 (name "python-pyquery") 7992 (name "python-pyquery")
7978 (version "1.2.11") 7993 (version "1.2.13")
7979 (source 7994 (source
7980 (origin 7995 (origin
7981 (method url-fetch) 7996 (method url-fetch)
7982 (uri (pypi-uri "pyquery" version)) 7997 (uri (pypi-uri "pyquery" version))
7983 (sha256 7998 (sha256
7984 (base32 7999 (base32
7985 "1ikz1387nsp0pp7mzzr6ip9n5gr67acpap24yn33987v7fkjp0sa")))) 8000 "0j9fsisip21qv4xljsg5dmni1pgpvwrjyyhhql0glydc4bs5rjgv"))))
7986 (build-system python-build-system) 8001 (build-system python-build-system)
7987 (propagated-inputs 8002 (propagated-inputs
7988 `(("python-lxml" ,python-lxml) 8003 `(("python-lxml" ,python-lxml)
@@ -8335,13 +8350,13 @@ commands into documents, helping you to keep your command examples up to date.")
8335(define-public python-sphinx-repoze-autointerface 8350(define-public python-sphinx-repoze-autointerface
8336 (package 8351 (package
8337 (name "python-sphinx-repoze-autointerface") 8352 (name "python-sphinx-repoze-autointerface")
8338 (version "0.7.1") 8353 (version "0.8")
8339 (source (origin 8354 (source (origin
8340 (method url-fetch) 8355 (method url-fetch)
8341 (uri (pypi-uri "repoze.sphinx.autointerface" version)) 8356 (uri (pypi-uri "repoze.sphinx.autointerface" version))
8342 (sha256 8357 (sha256
8343 (base32 8358 (base32
8344 "016mv3wbylw278wl7z33y2liyra8ljp08zq1g0anzadh1an5zvwp")))) 8359 "08ycivzf7bh4a1zcyp31hbyqs1b2c9r26raa3vxjwwmbfqr3iw4f"))))
8345 (build-system python-build-system) 8360 (build-system python-build-system)
8346 (propagated-inputs 8361 (propagated-inputs
8347 `(("python-docutils" ,python-docutils) 8362 `(("python-docutils" ,python-docutils)
@@ -9123,8 +9138,9 @@ to provide a high-level synchronous API on top of the libev event loop.")
9123 "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450")))) 9138 "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450"))))
9124 (build-system python-build-system) 9139 (build-system python-build-system)
9125 (native-inputs 9140 (native-inputs
9126 `(("python-setuptools" ,python-setuptools) 9141 `(("python-setuptools" ,python-setuptools)))
9127 ("python-zope-interface" ,python-zope-interface))) 9142 (propagated-inputs
9143 `(("python-zope-interface" ,python-zope-interface)))
9128 (home-page "https://twistedmatrix.com/") 9144 (home-page "https://twistedmatrix.com/")
9129 (synopsis "Asynchronous networking framework written in Python") 9145 (synopsis "Asynchronous networking framework written in Python")
9130 (description 9146 (description
@@ -9209,8 +9225,9 @@ data in Python.")
9209 (build-system python-build-system) 9225 (build-system python-build-system)
9210 (arguments '(#:tests? #f)) ; XXX: needs zookeeper 9226 (arguments '(#:tests? #f)) ; XXX: needs zookeeper
9211 (native-inputs 9227 (native-inputs
9212 `(("python-setuptools" ,python-setuptools) 9228 `(("python-setuptools" ,python-setuptools)))
9213 ("python-six" ,python-six))) 9229 (propagated-inputs
9230 `(("python-six" ,python-six)))
9214 (home-page "https://kazoo.readthedocs.org") 9231 (home-page "https://kazoo.readthedocs.org")
9215 (synopsis "High-level Zookeeper client library") 9232 (synopsis "High-level Zookeeper client library")
9216 (description 9233 (description
@@ -9238,9 +9255,10 @@ programming errors.")
9238 (build-system python-build-system) 9255 (build-system python-build-system)
9239 (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc. 9256 (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc.
9240 (native-inputs 9257 (native-inputs
9258 `(("python-setuptools" ,python-setuptools)))
9259 (propagated-inputs
9241 `(("python-gevent" ,python-gevent) 9260 `(("python-gevent" ,python-gevent)
9242 ("python-kazoo" ,python-kazoo) 9261 ("python-kazoo" ,python-kazoo)
9243 ("python-setuptools" ,python-setuptools)
9244 ("python-tabulate" ,python-tabulate))) 9262 ("python-tabulate" ,python-tabulate)))
9245 (inputs 9263 (inputs
9246 `(("librdkafka" ,librdkafka))) 9264 `(("librdkafka" ,librdkafka)))
@@ -9277,7 +9295,8 @@ wide-character codes. It is useful for those implementing a terminal emulator,
9277or programs that carefully produce output to be interpreted by one. It is a 9295or programs that carefully produce output to be interpreted by one. It is a
9278Python implementation of the @code{wcwidth} and @code{wcswidth} C functions 9296Python implementation of the @code{wcwidth} and @code{wcswidth} C functions
9279specified in POSIX.1-2001 and POSIX.1-2008.") 9297specified in POSIX.1-2001 and POSIX.1-2008.")
9280 (license license:expat))) 9298 (license license:expat)
9299 (properties `((python2-variant . ,(delay python2-wcwidth))))))
9281 9300
9282(define-public python2-wcwidth 9301(define-public python2-wcwidth
9283 (package 9302 (package
@@ -9348,10 +9367,11 @@ objects, patterned after the Mocha library for Ruby.")
9348 (build-system python-build-system) 9367 (build-system python-build-system)
9349 (native-inputs 9368 (native-inputs
9350 `(("python-setuptools" ,python-setuptools) 9369 `(("python-setuptools" ,python-setuptools)
9351 ("python-dateutil" ,python-dateutil-2)
9352 ;; For testing 9370 ;; For testing
9353 ("python-chai" ,python-chai) 9371 ("python-chai" ,python-chai)
9354 ("python-simplejson" ,python-simplejson))) 9372 ("python-simplejson" ,python-simplejson)))
9373 (propagated-inputs
9374 `(("python-dateutil" ,python-dateutil-2)))
9355 (home-page "https://github.com/crsmithdev/arrow/") 9375 (home-page "https://github.com/crsmithdev/arrow/")
9356 (synopsis "Dates and times for Python") 9376 (synopsis "Dates and times for Python")
9357 (description 9377 (description
@@ -9422,12 +9442,13 @@ Wikipedia code samples at
9422 "1k2dcl6mqpn5bljyl6w42rqyd9mb3y9kh2mg7m2x3kfjwvg0rpva")))) 9442 "1k2dcl6mqpn5bljyl6w42rqyd9mb3y9kh2mg7m2x3kfjwvg0rpva"))))
9423 (build-system python-build-system) 9443 (build-system python-build-system)
9424 (native-inputs 9444 (native-inputs
9425 `(("python-psutil" ,python-psutil) 9445 `(("python-setuptools" ,python-setuptools)
9426 ("python-pylev" ,python-pylev)
9427 ("python-setuptools" ,python-setuptools)
9428 ;; For testing 9446 ;; For testing
9429 ("python-mock" ,python-mock) 9447 ("python-mock" ,python-mock)
9430 ("python-pytest" ,python-pytest))) 9448 ("python-pytest" ,python-pytest)))
9449 (propagated-inputs
9450 `(("python-psutil" ,python-psutil)
9451 ("python-pylev" ,python-pylev)))
9431 (home-page "https://github.com/sdispater/cleo") 9452 (home-page "https://github.com/sdispater/cleo")
9432 (synopsis "Command-line arguments library for Python") 9453 (synopsis "Command-line arguments library for Python")
9433 (description 9454 (description
@@ -9507,9 +9528,10 @@ It supports TSIG authenticated messages and EDNS0.")
9507 (("dnspython3") "dnspython")) 9528 (("dnspython3") "dnspython"))
9508 #t))))) 9529 #t)))))
9509 (native-inputs 9530 (native-inputs
9531 `(("python-setuptools" ,python-setuptools)))
9532 (propagated-inputs
9510 `(("python-dnspython" ,python-dnspython) 9533 `(("python-dnspython" ,python-dnspython)
9511 ("python-idna" ,python-idna) 9534 ("python-idna" ,python-idna)))
9512 ("python-setuptools" ,python-setuptools)))
9513 (home-page "https://github.com/JoshData/python-email-validator") 9535 (home-page "https://github.com/JoshData/python-email-validator")
9514 (synopsis "Email address validation library for Python") 9536 (synopsis "Email address validation library for Python")
9515 (description 9537 (description
@@ -9564,13 +9586,14 @@ parsing UK postcodes.")
9564 (delete-file "faker/tests/ne_np/__init__.py") 9586 (delete-file "faker/tests/ne_np/__init__.py")
9565 #t))))) 9587 #t)))))
9566 (native-inputs 9588 (native-inputs
9567 `(("python-dateutil" ,python-dateutil-2) 9589 `(("python-setuptools" ,python-setuptools)
9568 ("python-setuptools" ,python-setuptools)
9569 ("python-six" ,python-six)
9570 ;; For testing 9590 ;; For testing
9571 ("python-email-validator" ,python-email-validator) 9591 ("python-email-validator" ,python-email-validator)
9572 ("python-mock" ,python-mock) 9592 ("python-mock" ,python-mock)
9573 ("python-ukpostcodeparser" ,python-ukpostcodeparser))) 9593 ("python-ukpostcodeparser" ,python-ukpostcodeparser)))
9594 (propagated-inputs
9595 `(("python-dateutil" ,python-dateutil-2)
9596 ("python-six" ,python-six)))
9574 (home-page "http://github.com/joke2k/faker") 9597 (home-page "http://github.com/joke2k/faker")
9575 (synopsis "Python package that generates fake data") 9598 (synopsis "Python package that generates fake data")
9576 (description 9599 (description
@@ -9584,9 +9607,9 @@ addresses, and phone numbers.")
9584 python-fake-factory)))) 9607 python-fake-factory))))
9585 (package 9608 (package
9586 (inherit base) 9609 (inherit base)
9587 (native-inputs 9610 (propagated-inputs
9588 `(("python2-ipaddress" ,python2-ipaddress) 9611 `(("python2-ipaddress" ,python2-ipaddress)
9589 ,@(package-native-inputs base)))))) 9612 ,@(package-propagated-inputs base))))))
9590 9613
9591(define-public python-pyaml 9614(define-public python-pyaml
9592 (package 9615 (package
@@ -9649,6 +9672,8 @@ mocks, stubs and fakes.")
9649 (build-system python-build-system) 9672 (build-system python-build-system)
9650 (arguments '(#:tests? #f)) ; no tests 9673 (arguments '(#:tests? #f)) ; no tests
9651 (native-inputs 9674 (native-inputs
9675 `(("python-setuptools" ,python-setuptools)))
9676 (propagated-inputs
9652 `(("python-arrow" ,python-arrow) 9677 `(("python-arrow" ,python-arrow)
9653 ("python-blinker" ,python-blinker) 9678 ("python-blinker" ,python-blinker)
9654 ("python-cleo" ,python-cleo) 9679 ("python-cleo" ,python-cleo)
@@ -9656,7 +9681,6 @@ mocks, stubs and fakes.")
9656 ("python-inflection" ,python-inflection) 9681 ("python-inflection" ,python-inflection)
9657 ("python-lazy-object-proxy" ,python-lazy-object-proxy) 9682 ("python-lazy-object-proxy" ,python-lazy-object-proxy)
9658 ("python-pyaml" ,python-pyaml) 9683 ("python-pyaml" ,python-pyaml)
9659 ("python-setuptools" ,python-setuptools)
9660 ("python-simplejson" ,python-simplejson) 9684 ("python-simplejson" ,python-simplejson)
9661 ("python-wrapt" ,python-wrapt))) 9685 ("python-wrapt" ,python-wrapt)))
9662 (home-page "https://orator-orm.com/") 9686 (home-page "https://orator-orm.com/")
@@ -9671,6 +9695,71 @@ implementation for Python.")
9671 (let ((base (package-with-python2 (strip-python2-variant python-orator)))) 9695 (let ((base (package-with-python2 (strip-python2-variant python-orator))))
9672 (package 9696 (package
9673 (inherit base) 9697 (inherit base)
9674 (native-inputs 9698 (propagated-inputs
9675 `(("python2-ipaddress" ,python2-ipaddress) 9699 `(("python2-ipaddress" ,python2-ipaddress)
9700 ,@(package-propagated-inputs base))))))
9701
9702(define-public python-prompt-toolkit
9703 (package
9704 (name "python-prompt-toolkit")
9705 (version "1.0.3")
9706 (source
9707 (origin
9708 (method url-fetch)
9709 (uri (string-append
9710 "https://pypi.python.org/packages/"
9711 "8d/de/412f23919929c01e6b55183e124623f705e4b91796d3d2dce2cb53d595ad/"
9712 "prompt_toolkit-" version ".tar.gz"))
9713 (sha256
9714 (base32
9715 "18lbmmkyjf509klc3217lq0x863pfzix779zx5kp9lms1iph4pl0"))))
9716 (build-system python-build-system)
9717 (inputs `(("python-wcwidth" ,python-wcwidth)
9718 ("python-pygments" ,python-pygments)))
9719 (native-inputs `(("python-six" ,python-six)))
9720 (home-page "https://github.com/jonathanslenders/python-prompt-toolkit")
9721 (synopsis "Library for building command line interfaces in Python")
9722 (description
9723 "Prompt-Toolkit is a library for building interactive command line
9724interfaces in Python. It's like GNU Readline but it also features syntax
9725highlighting while typing, out-of-the-box multi-line input editing, advanced
9726code completion, incremental search, support for Chinese double-width
9727characters, mouse support, and auto suggestions.")
9728 (license bsd-3)
9729 (properties `((python2-variant . ,(delay python2-prompt-toolkit))))))
9730
9731(define-public python2-prompt-toolkit
9732 (let ((base (package-with-python2 (strip-python2-variant python-prompt-toolkit))))
9733 (package
9734 (inherit base)
9735 (native-inputs
9736 `(("python2-setuptools" ,python2-setuptools)
9737 ,@(package-native-inputs base))))))
9738
9739(define-public python-jedi
9740 (package
9741 (name "python-jedi")
9742 (version "0.9.0")
9743 (source
9744 (origin
9745 (method url-fetch)
9746 (uri (pypi-uri "jedi" version))
9747 (sha256
9748 (base32
9749 "0c8x962ynpx001fdvp07m2q5jk4igkxbj3rmnydavphvlgxijk1v"))))
9750 (build-system python-build-system)
9751 (home-page "https://github.com/davidhalter/jedi")
9752 (synopsis
9753 "Autocompletion for Python that can be used for text editors")
9754 (description
9755 "Jedi is an autocompletion tool for Python that can be used for text editors.")
9756 (license license:expat)
9757 (properties `((python2-variant . ,(delay python2-jedi))))))
9758
9759(define-public python2-jedi
9760 (let ((base (package-with-python2 (strip-python2-variant python-jedi))))
9761 (package
9762 (inherit base)
9763 (native-inputs
9764 `(("python2-setuptools" ,python2-setuptools)
9676 ,@(package-native-inputs base)))))) 9765 ,@(package-native-inputs base))))))
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index cab1f30db51..6c1bbc33c36 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -302,7 +302,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
302(define-public qtbase 302(define-public qtbase
303 (package 303 (package
304 (name "qtbase") 304 (name "qtbase")
305 (version "5.6.1") 305 (version "5.6.1-1")
306 (source (origin 306 (source (origin
307 (method url-fetch) 307 (method url-fetch)
308 (uri (string-append "https://download.qt.io/official_releases/qt/" 308 (uri (string-append "https://download.qt.io/official_releases/qt/"
@@ -310,8 +310,8 @@ developers using C++ or QML, a CSS & JavaScript like language.")
310 "/submodules/" name "-opensource-src-" 310 "/submodules/" name "-opensource-src-"
311 version ".tar.xz")) 311 version ".tar.xz"))
312 (sha256 312 (sha256
313 (base32 313 (base32
314 "0r3jrqymnnxrig4f11xvs33c26f0kzfakbp3kcbdpv795gpc276h")) 314 "0fbwprlhqmdyhh2wb9122fcpq7pbil530iak482b9sy5gqs7i5ij"))
315 (modules '((guix build utils))) 315 (modules '((guix build utils)))
316 (snippet 316 (snippet
317 '(begin 317 '(begin
@@ -328,12 +328,14 @@ developers using C++ or QML, a CSS & JavaScript like language.")
328 `(("alsa-lib" ,alsa-lib) 328 `(("alsa-lib" ,alsa-lib)
329 ("cups" ,cups) 329 ("cups" ,cups)
330 ("dbus" ,dbus) 330 ("dbus" ,dbus)
331 ("eudev" ,eudev)
331 ("expat" ,expat) 332 ("expat" ,expat)
332 ("fontconfig" ,fontconfig) 333 ("fontconfig" ,fontconfig)
333 ("freetype" ,freetype) 334 ("freetype" ,freetype)
334 ("glib" ,glib) 335 ("glib" ,glib)
335 ("harfbuzz" ,harfbuzz) 336 ("harfbuzz" ,harfbuzz)
336 ("icu4c" ,icu4c) 337 ("icu4c" ,icu4c)
338 ("libinput" ,libinput)
337 ("libjpeg" ,libjpeg) 339 ("libjpeg" ,libjpeg)
338 ("libmng" ,libmng) 340 ("libmng" ,libmng)
339 ("libpng" ,libpng) 341 ("libpng" ,libpng)
@@ -435,7 +437,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
435(define-public qtsvg 437(define-public qtsvg
436 (package (inherit qtbase) 438 (package (inherit qtbase)
437 (name "qtsvg") 439 (name "qtsvg")
438 (version "5.6.1") 440 (version "5.6.1-1")
439 (source (origin 441 (source (origin
440 (method url-fetch) 442 (method url-fetch)
441 (uri (string-append "https://download.qt.io/official_releases/qt/" 443 (uri (string-append "https://download.qt.io/official_releases/qt/"
@@ -444,7 +446,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
444 version ".tar.xz")) 446 version ".tar.xz"))
445 (sha256 447 (sha256
446 (base32 448 (base32
447 "08ca5g46g75acy27jfnvnalmcias5hxmjp7491v3y4k9y7a4ybpi")))) 449 "1w0jvhgaiddafcms2nv8wl1klg07lncmjwm1zhdw3l6rxi9071sw"))))
448 (propagated-inputs `()) 450 (propagated-inputs `())
449 (native-inputs `(("perl" ,perl))) 451 (native-inputs `(("perl" ,perl)))
450 (inputs 452 (inputs
@@ -469,7 +471,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
469(define-public qtimageformats 471(define-public qtimageformats
470 (package (inherit qtsvg) 472 (package (inherit qtsvg)
471 (name "qtimageformats") 473 (name "qtimageformats")
472 (version "5.6.1") 474 (version "5.6.1-1")
473 (source (origin 475 (source (origin
474 (method url-fetch) 476 (method url-fetch)
475 (uri (string-append "https://download.qt.io/official_releases/qt/" 477 (uri (string-append "https://download.qt.io/official_releases/qt/"
@@ -478,7 +480,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
478 version ".tar.xz")) 480 version ".tar.xz"))
479 (sha256 481 (sha256
480 (base32 482 (base32
481 "020v1148433zx4g87z2r8fgff32n0laajxqqsja1l3yzz7jbrwvl")))) 483 "1p98acvsm3azka2by1ph4gdb31qbnndrr5k5wns4xk2d760y8ifc"))))
482 (native-inputs `()) 484 (native-inputs `())
483 (inputs 485 (inputs
484 `(("libmng" ,libmng) 486 `(("libmng" ,libmng)
@@ -491,7 +493,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
491(define-public qtx11extras 493(define-public qtx11extras
492 (package (inherit qtsvg) 494 (package (inherit qtsvg)
493 (name "qtx11extras") 495 (name "qtx11extras")
494 (version "5.6.1") 496 (version "5.6.1-1")
495 (source (origin 497 (source (origin
496 (method url-fetch) 498 (method url-fetch)
497 (uri (string-append "https://download.qt.io/official_releases/qt/" 499 (uri (string-append "https://download.qt.io/official_releases/qt/"
@@ -500,7 +502,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
500 version ".tar.xz")) 502 version ".tar.xz"))
501 (sha256 503 (sha256
502 (base32 504 (base32
503 "0l736qiz8adrnh267xz63hv4sph6nhy90h836qfnnmv3p78ipsz8")))) 505 "0yj5yg2dqkrwbgbicmk2rpqsagmi8dsffkrprpsj0fmkx4awhv5y"))))
504 (native-inputs `(("perl" ,perl))) 506 (native-inputs `(("perl" ,perl)))
505 (inputs 507 (inputs
506 `(("mesa" ,mesa) 508 `(("mesa" ,mesa)
@@ -509,7 +511,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
509(define-public qtxmlpatterns 511(define-public qtxmlpatterns
510 (package (inherit qtsvg) 512 (package (inherit qtsvg)
511 (name "qtxmlpatterns") 513 (name "qtxmlpatterns")
512 (version "5.6.1") 514 (version "5.6.1-1")
513 (source (origin 515 (source (origin
514 (method url-fetch) 516 (method url-fetch)
515 (uri (string-append "https://download.qt.io/official_releases/qt/" 517 (uri (string-append "https://download.qt.io/official_releases/qt/"
@@ -518,14 +520,14 @@ developers using C++ or QML, a CSS & JavaScript like language.")
518 version ".tar.xz")) 520 version ".tar.xz"))
519 (sha256 521 (sha256
520 (base32 522 (base32
521 "0q412jv3xbg7v05b8pbahifwx17gzlp96s90akh6zwhpm8i6xx34")))) 523 "1966rrk7f6c55k57j33rffdjs77kk4mawrnnl8yv1ckcirxc3np1"))))
522 (native-inputs `(("perl" ,perl))) 524 (native-inputs `(("perl" ,perl)))
523 (inputs `(("qtbase" ,qtbase))))) 525 (inputs `(("qtbase" ,qtbase)))))
524 526
525(define-public qtdeclarative 527(define-public qtdeclarative
526 (package (inherit qtsvg) 528 (package (inherit qtsvg)
527 (name "qtdeclarative") 529 (name "qtdeclarative")
528 (version "5.6.1") 530 (version "5.6.1-1")
529 (source (origin 531 (source (origin
530 (method url-fetch) 532 (method url-fetch)
531 (uri (string-append "https://download.qt.io/official_releases/qt/" 533 (uri (string-append "https://download.qt.io/official_releases/qt/"
@@ -534,7 +536,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
534 version ".tar.xz")) 536 version ".tar.xz"))
535 (sha256 537 (sha256
536 (base32 538 (base32
537 "1d2217kxk85kpi7ls08b41hqzy26hvch8m4cgzq6km5sqi5zvz0j")))) 539 "094gx5mzqzcga97y7ihf052b6i5iv512lh7m0702m5q94nsn1pqw"))))
538 (native-inputs 540 (native-inputs
539 `(("perl" ,perl) 541 `(("perl" ,perl)
540 ("pkg-config" ,pkg-config) 542 ("pkg-config" ,pkg-config)
@@ -548,7 +550,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
548(define-public qtconnectivity 550(define-public qtconnectivity
549 (package (inherit qtsvg) 551 (package (inherit qtsvg)
550 (name "qtconnectivity") 552 (name "qtconnectivity")
551 (version "5.6.1") 553 (version "5.6.1-1")
552 (source (origin 554 (source (origin
553 (method url-fetch) 555 (method url-fetch)
554 (uri (string-append "https://download.qt.io/official_releases/qt/" 556 (uri (string-append "https://download.qt.io/official_releases/qt/"
@@ -557,7 +559,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
557 version ".tar.xz")) 559 version ".tar.xz"))
558 (sha256 560 (sha256
559 (base32 561 (base32
560 "06fr9321f52kf0nda9zjjfzp5694hbnx0y0v315iw28mnpvandas")))) 562 "0sr6sxp0q45pacs25knr28139xdrphcjgrwlksdhdpsryfw19mzi"))))
561 (native-inputs 563 (native-inputs
562 `(("perl" ,perl) 564 `(("perl" ,perl)
563 ("pkg-config" ,pkg-config) 565 ("pkg-config" ,pkg-config)
@@ -569,7 +571,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
569(define-public qtwebsockets 571(define-public qtwebsockets
570 (package (inherit qtsvg) 572 (package (inherit qtsvg)
571 (name "qtwebsockets") 573 (name "qtwebsockets")
572 (version "5.6.1") 574 (version "5.6.1-1")
573 (source (origin 575 (source (origin
574 (method url-fetch) 576 (method url-fetch)
575 (uri (string-append "https://download.qt.io/official_releases/qt/" 577 (uri (string-append "https://download.qt.io/official_releases/qt/"
@@ -578,7 +580,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
578 version ".tar.xz")) 580 version ".tar.xz"))
579 (sha256 581 (sha256
580 (base32 582 (base32
581 "0fkj52i4yi6gmq4jfjgdij08cspxspac6mbpf0fknnllimmkl7jm")))) 583 "1fz0x8570zxc00a22skd848svma3p2g3xyxj14jq10559jihqqil"))))
582 (native-inputs 584 (native-inputs
583 `(("perl" ,perl) 585 `(("perl" ,perl)
584 ("qtdeclarative" ,qtdeclarative))) 586 ("qtdeclarative" ,qtdeclarative)))
@@ -587,7 +589,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
587(define-public qtsensors 589(define-public qtsensors
588 (package (inherit qtsvg) 590 (package (inherit qtsvg)
589 (name "qtsensors") 591 (name "qtsensors")
590 (version "5.6.1") 592 (version "5.6.1-1")
591 (source (origin 593 (source (origin
592 (method url-fetch) 594 (method url-fetch)
593 (uri (string-append "https://download.qt.io/official_releases/qt/" 595 (uri (string-append "https://download.qt.io/official_releases/qt/"
@@ -596,7 +598,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
596 version ".tar.xz")) 598 version ".tar.xz"))
597 (sha256 599 (sha256
598 (base32 600 (base32
599 "0bll7ll6s5g8w89knyrc0famjwqyfzwpn512m1f96bf6xwacs967")))) 601 "0kcrvf6vzn6g2v2m70f9r3raalzmfp48rwjlqhss3w84jfz3y04r"))))
600 (native-inputs 602 (native-inputs
601 `(("perl" ,perl) 603 `(("perl" ,perl)
602 ("qtdeclarative" ,qtdeclarative))) 604 ("qtdeclarative" ,qtdeclarative)))
@@ -605,7 +607,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
605(define-public qtmultimedia 607(define-public qtmultimedia
606 (package (inherit qtsvg) 608 (package (inherit qtsvg)
607 (name "qtmultimedia") 609 (name "qtmultimedia")
608 (version "5.6.1") 610 (version "5.6.1-1")
609 (source (origin 611 (source (origin
610 (method url-fetch) 612 (method url-fetch)
611 (uri (string-append "https://download.qt.io/official_releases/qt/" 613 (uri (string-append "https://download.qt.io/official_releases/qt/"
@@ -614,7 +616,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
614 version ".tar.xz")) 616 version ".tar.xz"))
615 (sha256 617 (sha256
616 (base32 618 (base32
617 "058523c2qra3d8fq46ygcndnkrbwlh316zy28s2cr5pjr5gmnjyj")))) 619 "0paffx0614ivjbf87lr9klpbqik6r1pzbc14l41np6d9jv3dqa2f"))))
618 (native-inputs 620 (native-inputs
619 `(("perl" ,perl) 621 `(("perl" ,perl)
620 ("pkg-config" ,pkg-config) 622 ("pkg-config" ,pkg-config)
@@ -629,7 +631,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
629(define-public qtwayland 631(define-public qtwayland
630 (package (inherit qtsvg) 632 (package (inherit qtsvg)
631 (name "qtwayland") 633 (name "qtwayland")
632 (version "5.6.1") 634 (version "5.6.1-1")
633 (source (origin 635 (source (origin
634 (method url-fetch) 636 (method url-fetch)
635 (uri (string-append "https://download.qt.io/official_releases/qt/" 637 (uri (string-append "https://download.qt.io/official_releases/qt/"
@@ -638,7 +640,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
638 version ".tar.xz")) 640 version ".tar.xz"))
639 (sha256 641 (sha256
640 (base32 642 (base32
641 "1jgghjfrg0wwyfzfwgwhagwxz9k936ylv3w2l9bwlpql8rgm8d11")))) 643 "1fnvgpi49ilds3ah9iizxj9qhhb5rnwqd9h03bhkwf0ydywv52c4"))))
642 (native-inputs 644 (native-inputs
643 `(("glib" ,glib) 645 `(("glib" ,glib)
644 ("perl" ,perl) 646 ("perl" ,perl)
@@ -660,7 +662,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
660(define-public qtserialport 662(define-public qtserialport
661 (package (inherit qtsvg) 663 (package (inherit qtsvg)
662 (name "qtserialport") 664 (name "qtserialport")
663 (version "5.6.1") 665 (version "5.6.1-1")
664 (source (origin 666 (source (origin
665 (method url-fetch) 667 (method url-fetch)
666 (uri (string-append "https://download.qt.io/official_releases/qt/" 668 (uri (string-append "https://download.qt.io/official_releases/qt/"
@@ -669,14 +671,16 @@ developers using C++ or QML, a CSS & JavaScript like language.")
669 version ".tar.xz")) 671 version ".tar.xz"))
670 (sha256 672 (sha256
671 (base32 673 (base32
672 "1hp63cgqhps6y1k041lzhcb2b0rcpcmszabnn293q5ilbvla4x0b")))) 674 "135cbgghxk0c6dblmyyrw6znfb9m8sac9hhyc2dm6vq7vzy8id52"))))
673 (native-inputs `(("perl" ,perl))) 675 (native-inputs `(("perl" ,perl)))
674 (inputs `(("qtbase" ,qtbase))))) 676 (inputs
677 `(("qtbase" ,qtbase)
678 ("eudev" ,eudev)))))
675 679
676(define-public qtwebchannel 680(define-public qtwebchannel
677 (package (inherit qtsvg) 681 (package (inherit qtsvg)
678 (name "qtwebchannel") 682 (name "qtwebchannel")
679 (version "5.6.1") 683 (version "5.6.1-1")
680 (source (origin 684 (source (origin
681 (method url-fetch) 685 (method url-fetch)
682 (uri (string-append "https://download.qt.io/official_releases/qt/" 686 (uri (string-append "https://download.qt.io/official_releases/qt/"
@@ -685,7 +689,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
685 version ".tar.xz")) 689 version ".tar.xz"))
686 (sha256 690 (sha256
687 (base32 691 (base32
688 "01q80917a1048hdhaii4v50dqs84h16lc9w3v99r9xvspk8vab7q")))) 692 "10kys3ppjkj60fs1s335fdcpdsbxsjn6ibvm6zph9gqbncabd2l7"))))
689 (native-inputs 693 (native-inputs
690 `(("perl" ,perl) 694 `(("perl" ,perl)
691 ("qtdeclarative" ,qtdeclarative) 695 ("qtdeclarative" ,qtdeclarative)
@@ -695,7 +699,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
695(define-public qtlocation 699(define-public qtlocation
696 (package (inherit qtsvg) 700 (package (inherit qtsvg)
697 (name "qtlocation") 701 (name "qtlocation")
698 (version "5.6.1") 702 (version "5.6.1-1")
699 (source (origin 703 (source (origin
700 (method url-fetch) 704 (method url-fetch)
701 (uri (string-append "https://download.qt.io/official_releases/qt/" 705 (uri (string-append "https://download.qt.io/official_releases/qt/"
@@ -704,7 +708,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
704 version ".tar.xz")) 708 version ".tar.xz"))
705 (sha256 709 (sha256
706 (base32 710 (base32
707 "0qahs7a2n3l4h0bl8bnwci9mzy1vra3zncnzr40csic9ys67ddfk")))) 711 "0my4pbcxa58yzvdh65l5qx99ln03chjr5c3ml5v37wfk7nx23k69"))))
708 (native-inputs 712 (native-inputs
709 `(("perl" ,perl) 713 `(("perl" ,perl)
710 ("qtdeclarative" ,qtdeclarative) 714 ("qtdeclarative" ,qtdeclarative)
@@ -715,7 +719,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
715(define-public qttools 719(define-public qttools
716 (package (inherit qtsvg) 720 (package (inherit qtsvg)
717 (name "qttools") 721 (name "qttools")
718 (version "5.6.1") 722 (version "5.6.1-1")
719 (source (origin 723 (source (origin
720 (method url-fetch) 724 (method url-fetch)
721 (uri (string-append "https://download.qt.io/official_releases/qt/" 725 (uri (string-append "https://download.qt.io/official_releases/qt/"
@@ -724,7 +728,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
724 version ".tar.xz")) 728 version ".tar.xz"))
725 (sha256 729 (sha256
726 (base32 730 (base32
727 "0wbzq60d7lkvlb7b5lqcw87qgy6kyjz1npjavz8f4grdxsaqi8vp")))) 731 "0haic027a2d7p7k8xz83fbvci4a4dln34360rlwgy7hlyy5m4nip"))))
728 (native-inputs 732 (native-inputs
729 `(("perl" ,perl) 733 `(("perl" ,perl)
730 ("qtdeclarative" ,qtdeclarative))) 734 ("qtdeclarative" ,qtdeclarative)))
@@ -732,6 +736,25 @@ developers using C++ or QML, a CSS & JavaScript like language.")
732 `(("mesa" ,mesa) 736 `(("mesa" ,mesa)
733 ("qtbase" ,qtbase))))) 737 ("qtbase" ,qtbase)))))
734 738
739(define-public qtscript
740 (package (inherit qtsvg)
741 (name "qtscript")
742 (version "5.6.1-1")
743 (source (origin
744 (method url-fetch)
745 (uri (string-append "https://download.qt.io/official_releases/qt/"
746 (version-major+minor version) "/" version
747 "/submodules/" name "-opensource-src-"
748 version ".tar.xz"))
749 (sha256
750 (base32
751 "1gini9483flqa9q4a4bl81bh7g5s408bycqykqhgbklmfd29y5lx"))))
752 (native-inputs
753 `(("perl" ,perl)
754 ("qttools" ,qttools)))
755 (inputs
756 `(("qtbase" ,qtbase)))))
757
735(define-public qjson 758(define-public qjson
736 (package 759 (package
737 (name "qjson") 760 (name "qjson")
diff --git a/gnu/packages/readline.scm b/gnu/packages/readline.scm
index db469db0514..169a7386c4c 100644
--- a/gnu/packages/readline.scm
+++ b/gnu/packages/readline.scm
@@ -1,5 +1,6 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
3;;; 4;;;
4;;; This file is part of GNU Guix. 5;;; This file is part of GNU Guix.
5;;; 6;;;
@@ -20,6 +21,7 @@
20 #:use-module (guix licenses) 21 #:use-module (guix licenses)
21 #:use-module (gnu packages) 22 #:use-module (gnu packages)
22 #:use-module (gnu packages ncurses) 23 #:use-module (gnu packages ncurses)
24 #:use-module (gnu packages perl)
23 #:use-module (guix packages) 25 #:use-module (guix packages)
24 #:use-module (guix download) 26 #:use-module (guix download)
25 #:use-module (guix build-system gnu)) 27 #:use-module (guix build-system gnu))
@@ -85,3 +87,29 @@ comfortable for anyone.")
85 (sha256 87 (sha256
86 (base32 88 (base32
87 "10ckm2bd2rkxhvdmj7nmbsylmihw0abwcsnxf8y27305183rd9kr")))))) 89 "10ckm2bd2rkxhvdmj7nmbsylmihw0abwcsnxf8y27305183rd9kr"))))))
90
91(define-public rlwrap
92 (package
93 (name "rlwrap")
94 (version "0.42")
95 (source
96 (origin
97 (method url-fetch)
98 (uri (string-append "http://utopia.knoware.nl/~hlub/uck/rlwrap/rlwrap-"
99 version ".tar.gz"))
100 (sha256
101 (base32
102 "0i3yz303wscrysyzpdq04h4nrl9ajz9dbwi80risdl5rkm3dhw2s"))))
103 (build-system gnu-build-system)
104 (native-inputs `(("perl" ,perl)))
105 (inputs
106 `(("readline" ,readline)))
107 (synopsis "Wrapper to allow the editing of keyboard commands")
108 (description
109 "Rlwrap is a 'readline wrapper', a small utility that uses the GNU
110readline library to allow the editing of keyboard input for any command. You
111should consider rlwrap especially when you need user-defined completion (by way
112of completion word lists) and persistent history, or if you want to program
113'special effects' using the filter mechanism.")
114 (home-page "http://utopia.knoware.nl/~hlub/uck/rlwrap/")
115 (license gpl2+)))
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index 8aac6a5dc10..9f0b57c739f 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -99,14 +99,14 @@ anywhere.")
99(define-public samba 99(define-public samba
100 (package 100 (package
101 (name "samba") 101 (name "samba")
102 (version "4.3.8") 102 (version "4.3.11")
103 (source (origin 103 (source (origin
104 (method url-fetch) 104 (method url-fetch)
105 (uri (string-append "https://www.samba.org/samba/ftp/stable/samba-" 105 (uri (string-append "https://www.samba.org/samba/ftp/stable/samba-"
106 version ".tar.gz")) 106 version ".tar.gz"))
107 (sha256 107 (sha256
108 (base32 108 (base32
109 "041b5frh4ikcka922aqhqjvlv4w2s7jycyykpvsknj0a79ncd79p")))) 109 "1v2grwivm6rasz1ganbybs0ikz1lydaniy65kxf1v8rl1qqngach"))))
110 (build-system gnu-build-system) 110 (build-system gnu-build-system)
111 (arguments 111 (arguments
112 '(#:phases 112 '(#:phases
@@ -150,7 +150,7 @@ anywhere.")
150 `(("perl" ,perl) 150 `(("perl" ,perl)
151 ("pkg-config" ,pkg-config) 151 ("pkg-config" ,pkg-config)
152 ("python" ,python-2))) ; incompatible with Python 3 152 ("python" ,python-2))) ; incompatible with Python 3
153 (home-page "http://www.samba.org/") 153 (home-page "https://www.samba.org/")
154 (synopsis 154 (synopsis
155 "The standard Windows interoperability suite of programs for GNU and Unix") 155 "The standard Windows interoperability suite of programs for GNU and Unix")
156 (description 156 (description
@@ -165,14 +165,14 @@ Desktops into Active Directory environments using the winbind daemon.")
165(define-public talloc 165(define-public talloc
166 (package 166 (package
167 (name "talloc") 167 (name "talloc")
168 (version "2.1.5") 168 (version "2.1.7")
169 (source (origin 169 (source (origin
170 (method url-fetch) 170 (method url-fetch)
171 (uri (string-append "https://www.samba.org/ftp/talloc/talloc-" 171 (uri (string-append "https://www.samba.org/ftp/talloc/talloc-"
172 version ".tar.gz")) 172 version ".tar.gz"))
173 (sha256 173 (sha256
174 (base32 174 (base32
175 "1pfx3kmj973hpacfw46fzfnjd7ms1j03ifkc30wk930brx8ffcrq")))) 175 "01m0kzndciyj43z1zd2nc61xqgh9knjv0w7lk1rrrlj8irr4w58r"))))
176 (build-system gnu-build-system) 176 (build-system gnu-build-system)
177 (arguments 177 (arguments
178 '(#:phases 178 '(#:phases
@@ -202,14 +202,14 @@ destructors. It is the core memory allocator used in Samba.")
202(define-public tevent 202(define-public tevent
203 (package 203 (package
204 (name "tevent") 204 (name "tevent")
205 (version "0.9.26") 205 (version "0.9.28")
206 (source (origin 206 (source (origin
207 (method url-fetch) 207 (method url-fetch)
208 (uri (string-append "https://www.samba.org/ftp/tevent/tevent-" 208 (uri (string-append "https://www.samba.org/ftp/tevent/tevent-"
209 version ".tar.gz")) 209 version ".tar.gz"))
210 (sha256 210 (sha256
211 (base32 211 (base32
212 "1gbh6d2m49j1v2hkaiyrh8bj02i5wxd4hqayzk2g44yyivbi8b16")))) 212 "0a9ml52jjnzz7qg9z750mavlvs1yibjwrzy4yl55dc95j0vm7n84"))))
213 (build-system gnu-build-system) 213 (build-system gnu-build-system)
214 (arguments 214 (arguments
215 '(#:phases 215 '(#:phases
@@ -237,14 +237,14 @@ many event types, including timers, signals, and the classic file descriptor eve
237(define-public ldb 237(define-public ldb
238 (package 238 (package
239 (name "ldb") 239 (name "ldb")
240 (version "1.1.24") 240 (version "1.1.26")
241 (source (origin 241 (source (origin
242 (method url-fetch) 242 (method url-fetch)
243 (uri (string-append "https://www.samba.org/ftp/ldb/ldb-" 243 (uri (string-append "https://www.samba.org/ftp/ldb/ldb-"
244 version ".tar.gz")) 244 version ".tar.gz"))
245 (sha256 245 (sha256
246 (base32 246 (base32
247 "08ab66qzigfsfxqdvp6lx1knwsl3sqsww309xbq17l7hfcjgbsa5")))) 247 "1rmjv12pf57vga8s5z9p9d90rlfckc1lqjbcp89r83cq5fkwfhw8"))))
248 (build-system gnu-build-system) 248 (build-system gnu-build-system)
249 (arguments 249 (arguments
250 '(#:phases 250 '(#:phases
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index eac550e4ab9..1e00e6bb9dc 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -400,7 +400,7 @@ implementation techniques and as an expository tool.")
400(define-public racket 400(define-public racket
401 (package 401 (package
402 (name "racket") 402 (name "racket")
403 (version "6.2.1") 403 (version "6.5")
404 (source (origin 404 (source (origin
405 (method url-fetch) 405 (method url-fetch)
406 (uri (list (string-append "http://mirror.racket-lang.org/installers/" 406 (uri (list (string-append "http://mirror.racket-lang.org/installers/"
@@ -410,7 +410,7 @@ implementation techniques and as an expository tool.")
410 version "/racket/racket-" version "-src-unix.tgz"))) 410 version "/racket/racket-" version "-src-unix.tgz")))
411 (sha256 411 (sha256
412 (base32 412 (base32
413 "0555j63k7fs10iv0icmivlxpzgp6s7gwcbfddmbwxlf2rk80qhq0")))) 413 "0gvh7i5k87mg1gpqk8gaq50ja9ksbhnvdqn7qqh0n17byidd6999"))))
414 (build-system gnu-build-system) 414 (build-system gnu-build-system)
415 (arguments 415 (arguments
416 '(#:phases 416 '(#:phases
diff --git a/gnu/packages/screen.scm b/gnu/packages/screen.scm
index a4eefd85a62..e3f97f4b685 100644
--- a/gnu/packages/screen.scm
+++ b/gnu/packages/screen.scm
@@ -3,6 +3,7 @@
3;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> 3;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
4;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> 4;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
5;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> 5;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
6;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
6;;; 7;;;
7;;; This file is part of GNU Guix. 8;;; This file is part of GNU Guix.
8;;; 9;;;
@@ -49,11 +50,9 @@
49 ("perl" ,perl))) 50 ("perl" ,perl)))
50 (arguments 51 (arguments
51 `(#:configure-flags 52 `(#:configure-flags
52 ;; By default, man and info pages are put in PREFIX/{man,info}, 53 ;; By default, screen supports 16 colors, but we want 256 when
53 ;; but we want them in PREFIX/share/{man,info}. 54 ;; ~/.screenrc contains 'term xterm-256color'.
54 (let ((out (assoc-ref %outputs "out"))) 55 '("--enable-colors256")))
55 (list (string-append "--mandir=" out "/share/man")
56 (string-append "--infodir=" out "/share/info")))))
57 (home-page "http://www.gnu.org/software/screen/") 56 (home-page "http://www.gnu.org/software/screen/")
58 (synopsis "Full-screen window manager providing multiple terminals") 57 (synopsis "Full-screen window manager providing multiple terminals")
59 (description 58 (description
@@ -144,3 +143,30 @@ as folding room dividers. The Byobu software includes an enhanced profile,
144configuration utilities, and system status notifications for the GNU Screen 143configuration utilities, and system status notifications for the GNU Screen
145window manager as well as the Tmux terminal multiplexer.") 144window manager as well as the Tmux terminal multiplexer.")
146 (license gpl3+))) 145 (license gpl3+)))
146
147(define-public reptyr
148 (package
149 (name "reptyr")
150 (version "0.6.2")
151 (source
152 (origin
153 (method url-fetch)
154 (uri (string-append "https://github.com/nelhage/reptyr/archive"
155 "/reptyr-" version ".tar.gz"))
156 (sha256
157 (base32
158 "07pfl0rkgm8m3f3jy8r9l2yvnhf8lgllpsk3mh57mhzdxq8fagf7"))))
159 (build-system gnu-build-system)
160 (arguments
161 '(#:tests? #f ; no tests
162 #:make-flags (list "CC=gcc"
163 (string-append "PREFIX=" %output))
164 #:phases (modify-phases %standard-phases (delete 'configure))))
165 (home-page "https://github.com/nelhage/reptyr")
166 (synopsis "Tool for reparenting a running program to a new terminal")
167 (description
168 "reptyr is a utility for taking an existing running program and attaching
169it to a new terminal. Started a long-running process over @code{ssh}, but have
170to leave and don't want to interrupt it? Just start a @code{screen}, use
171reptyr to grab it, and then kill the @code{ssh} session and head on home.")
172 (license expat)))
diff --git a/gnu/packages/smalltalk.scm b/gnu/packages/smalltalk.scm
index c9d733d5056..77e033f8473 100644
--- a/gnu/packages/smalltalk.scm
+++ b/gnu/packages/smalltalk.scm
@@ -1,5 +1,6 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> 2;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
3;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
3;;; 4;;;
4;;; This file is part of GNU Guix. 5;;; This file is part of GNU Guix.
5;;; 6;;;
@@ -21,6 +22,10 @@
21 #:use-module (guix packages) 22 #:use-module (guix packages)
22 #:use-module (guix download) 23 #:use-module (guix download)
23 #:use-module (guix build-system gnu) 24 #:use-module (guix build-system gnu)
25 #:use-module (gnu packages autotools)
26 #:use-module (gnu packages libffi)
27 #:use-module (gnu packages libsigsegv)
28 #:use-module (gnu packages pkg-config)
24 #:use-module (gnu packages zip)) 29 #:use-module (gnu packages zip))
25 30
26(define-public smalltalk 31(define-public smalltalk
@@ -36,7 +41,13 @@
36 (base32 41 (base32
37 "1k2ssrapfzhngc7bg1zrnd9n2vyxp9c9m70byvsma6wapbvib6l1")))) 42 "1k2ssrapfzhngc7bg1zrnd9n2vyxp9c9m70byvsma6wapbvib6l1"))))
38 (build-system gnu-build-system) 43 (build-system gnu-build-system)
39 (inputs `(("zip" ,zip))) 44 (native-inputs
45 `(("libffi" ,libffi)
46 ("libltdl" ,libltdl)
47 ("libsigsegv" ,libsigsegv)
48 ("pkg-config" ,pkg-config)))
49 (inputs
50 `(("zip" ,zip)))
40 (arguments 51 (arguments
41 `(#:phases (alist-cons-before 52 `(#:phases (alist-cons-before
42 'configure 'fix-libc 53 'configure 'fix-libc
@@ -46,7 +57,7 @@
46 (("@LIBC_SO_NAME@") "libc.so") 57 (("@LIBC_SO_NAME@") "libc.so")
47 (("@LIBC_SO_DIR@") (string-append libc "/lib"))))) 58 (("@LIBC_SO_DIR@") (string-append libc "/lib")))))
48 %standard-phases))) 59 %standard-phases)))
49 (home-page "https://www.gnu.org/software/smalltalk/") 60 (home-page "http://smalltalk.gnu.org/")
50 (synopsis "Smalltalk environment") 61 (synopsis "Smalltalk environment")
51 (description 62 (description
52 "GNU Smalltalk is a free implementation of the Smalltalk language. It 63 "GNU Smalltalk is a free implementation of the Smalltalk language. It
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index b8f107b111b..71310ecf949 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -1,4 +1,5 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
2;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr> 3;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
3;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> 4;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
4;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> 5;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
@@ -20,27 +21,34 @@
20;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. 21;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21 22
22(define-module (gnu packages ssh) 23(define-module (gnu packages ssh)
23 #:use-module ((guix licenses) #:prefix license:) 24 #:use-module (gnu packages)
25 #:use-module (gnu packages autotools)
26 #:use-module (gnu packages base)
27 #:autoload (gnu packages boost) (boost)
24 #:use-module (gnu packages compression) 28 #:use-module (gnu packages compression)
29 #:use-module (gnu packages elf)
25 #:use-module (gnu packages gnupg) 30 #:use-module (gnu packages gnupg)
31 #:use-module (gnu packages gperf)
26 #:use-module (gnu packages groff) 32 #:use-module (gnu packages groff)
27 #:use-module (gnu packages elf)
28 #:use-module (gnu packages guile) 33 #:use-module (gnu packages guile)
29 #:use-module (gnu packages pkg-config) 34 #:use-module (gnu packages linux)
30 #:use-module (gnu packages autotools) 35 #:use-module (gnu packages m4)
31 #:use-module (gnu packages texinfo) 36 #:use-module (gnu packages multiprecision)
32 #:use-module (gnu packages perl)
33 #:use-module (gnu packages ncurses) 37 #:use-module (gnu packages ncurses)
38 #:use-module (gnu packages nettle)
39 #:use-module (gnu packages perl)
40 #:use-module (gnu packages pkg-config)
34 #:autoload (gnu packages protobuf) (protobuf) 41 #:autoload (gnu packages protobuf) (protobuf)
35 #:autoload (gnu packages boost) (boost) 42 #:use-module (gnu packages readline)
36 #:use-module (gnu packages base) 43 #:use-module (gnu packages texinfo)
37 #:use-module (gnu packages tls) 44 #:use-module (gnu packages tls)
38 #:use-module (gnu packages) 45 #:use-module (gnu packages xorg)
39 #:use-module (guix packages) 46 #:use-module (guix build-system cmake)
47 #:use-module (guix build-system gnu)
40 #:use-module (guix download) 48 #:use-module (guix download)
41 #:use-module (guix git-download) 49 #:use-module (guix git-download)
42 #:use-module (guix build-system gnu) 50 #:use-module ((guix licenses) #:prefix license:)
43 #:use-module (guix build-system cmake)) 51 #:use-module (guix packages))
44 52
45(define-public libssh 53(define-public libssh
46 (package 54 (package
@@ -337,7 +345,7 @@ especially over Wi-Fi, cellular, and long-distance links.")
337(define-public dropbear 345(define-public dropbear
338 (package 346 (package
339 (name "dropbear") 347 (name "dropbear")
340 (version "2016.72") 348 (version "2016.73")
341 (source (origin 349 (source (origin
342 (method url-fetch) 350 (method url-fetch)
343 (uri (string-append 351 (uri (string-append
@@ -345,7 +353,7 @@ especially over Wi-Fi, cellular, and long-distance links.")
345 name "-" version ".tar.bz2")) 353 name "-" version ".tar.bz2"))
346 (sha256 354 (sha256
347 (base32 355 (base32
348 "10fnlaf6rm537v3rml1gnd58d42plv2q5cp7svbrysap69npc8wk")))) 356 "1mzg18jss1bsmcnn88zv7kv5yj01hzimndnd5636hfq9kgva8qaw"))))
349 (build-system gnu-build-system) 357 (build-system gnu-build-system)
350 (arguments `(#:tests? #f)) ; There is no "make check" or anything similar 358 (arguments `(#:tests? #f)) ; There is no "make check" or anything similar
351 (inputs `(("zlib" ,zlib))) 359 (inputs `(("zlib" ,zlib)))
@@ -355,3 +363,129 @@ client. It runs on a variety of POSIX-based platforms. Dropbear is
355particularly useful for embedded systems, such as wireless routers.") 363particularly useful for embedded systems, such as wireless routers.")
356 (home-page "https://matt.ucc.asn.au/dropbear/dropbear.html") 364 (home-page "https://matt.ucc.asn.au/dropbear/dropbear.html")
357 (license (license:x11-style "" "See file LICENSE.")))) 365 (license (license:x11-style "" "See file LICENSE."))))
366
367(define-public liboop
368 (package
369 (name "liboop")
370 (version "1.0")
371 (source
372 (origin
373 (method url-fetch)
374 (uri (string-append "http://download.ofb.net/liboop/liboop-"
375 version ".tar.gz"))
376 (sha256
377 (base32
378 "0z6rlalhvfca64jpvksppc9bdhs7jwhiw4y35g5ibvh91xp3rn1l"))
379 (patches (search-patches "liboop-mips64-deplibs-fix.patch"))))
380 (build-system gnu-build-system)
381 (home-page "http://www.lysator.liu.se/liboop/")
382 (synopsis "Event loop library")
383 (description "Liboop is a low-level event loop management library for
384POSIX-based operating systems. It supports the development of modular,
385multiplexed applications which may respond to events from several sources. It
386replaces the \"select() loop\" and allows the registration of event handlers
387for file and network I/O, timers and signals. Since processes use these
388mechanisms for almost all external communication, liboop can be used as the
389basis for almost any application.")
390 (license license:lgpl2.1+)))
391
392(define-public lsh
393 (package
394 (name "lsh")
395 (version "2.1")
396 (source (origin
397 (method url-fetch)
398 (uri (string-append "mirror://gnu/lsh/lsh-"
399 version ".tar.gz"))
400 (sha256
401 (base32
402 "1qqjy9zfzgny0rkb27c8c7dfsylvb6n0ld8h3an2r83pmaqr9gwb"))
403 (modules '((guix build utils)))
404 (snippet
405 '(begin
406 (substitute* "src/testsuite/functions.sh"
407 (("localhost")
408 ;; Avoid host name lookups since they don't work in
409 ;; chroot builds.
410 "127.0.0.1")
411 (("set -e")
412 ;; Make tests more verbose.
413 "set -e\nset -x"))
414
415 (substitute* (find-files "src/testsuite" "-test$")
416 (("localhost") "127.0.0.1"))
417
418 (substitute* "src/testsuite/login-auth-test"
419 (("/bin/cat") "cat"))))))
420 (build-system gnu-build-system)
421 (native-inputs
422 `(("m4" ,m4)
423 ("guile" ,guile-2.0)
424 ("gperf" ,gperf)
425 ("psmisc" ,psmisc))) ; for `killall'
426 (inputs
427 `(("nettle" ,nettle-2)
428 ("linux-pam" ,linux-pam)
429
430 ;; 'rl.c' uses the 'CPPFunction' type, which is no longer in
431 ;; Readline 6.3.
432 ("readline" ,readline-6.2)
433
434 ("liboop" ,liboop)
435 ("zlib" ,zlib)
436 ("gmp" ,gmp)
437
438 ;; The server (lshd) invokes xauth when X11 forwarding is requested.
439 ;; This adds 24 MiB (or 27%) to the closure of lsh.
440 ("xauth" ,xauth)))
441 (arguments
442 '(;; Skip the `configure' test that checks whether /dev/ptmx &
443 ;; co. work as expected, because it relies on impurities (for
444 ;; instance, /dev/pts may be unavailable in chroots.)
445 #:configure-flags '("lsh_cv_sys_unix98_ptys=yes")
446
447 ;; FIXME: Tests won't run in a chroot, presumably because
448 ;; /etc/profile is missing, and thus clients get an empty $PATH
449 ;; and nothing works.
450 #:tests? #f
451
452 #:phases
453 (modify-phases %standard-phases
454 (add-before 'configure 'pre-configure
455 (lambda* (#:key inputs #:allow-other-keys)
456 (let* ((nettle (assoc-ref inputs "nettle"))
457 (sexp-conv (string-append nettle "/bin/sexp-conv")))
458 ;; Make sure 'lsh' and 'lshd' pick 'sexp-conv' in the right place
459 ;; by default.
460 (substitute* "src/environ.h.in"
461 (("^#define PATH_SEXP_CONV.*")
462 (string-append "#define PATH_SEXP_CONV \""
463 sexp-conv "\"\n")))
464
465 ;; Same for the 'lsh-authorize' script.
466 (substitute* "src/lsh-authorize"
467 (("=sexp-conv")
468 (string-append "=" sexp-conv)))
469
470 ;; Tell lshd where 'xauth' lives. Another option would be to
471 ;; hardcode "/run/current-system/profile/bin/xauth", thereby
472 ;; reducing the closure size, but that wouldn't work on foreign
473 ;; distros.
474 (with-fluids ((%default-port-encoding "ISO-8859-1"))
475 (substitute* "src/server_x11.c"
476 (("define XAUTH_PROGRAM.*")
477 (string-append "define XAUTH_PROGRAM \""
478 (assoc-ref inputs "xauth")
479 "/bin/xauth\"\n")))))
480
481 ;; Tests rely on $USER being set.
482 (setenv "USER" "guix"))))))
483 (home-page "http://www.lysator.liu.se/~nisse/lsh/")
484 (synopsis "GNU implementation of the Secure Shell (ssh) protocols")
485 (description
486 "GNU lsh is a free implementation of the SSH version 2 protocol. It is
487used to create a secure line of communication between two computers,
488providing shell access to the server system from the client. It provides
489both the server daemon and the client application, as well as tools for
490manipulating key files.")
491 (license license:gpl2+)))
diff --git a/gnu/packages/stalonetray.scm b/gnu/packages/stalonetray.scm
index e1604327ab2..c803fb06f63 100644
--- a/gnu/packages/stalonetray.scm
+++ b/gnu/packages/stalonetray.scm
@@ -1,5 +1,6 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 Raimon Grau <raimonster@gmail.com> 2;;; Copyright © 2014 Raimon Grau <raimonster@gmail.com>
3;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
3;;; 4;;;
4;;; This file is part of GNU Guix. 5;;; This file is part of GNU Guix.
5;;; 6;;;
@@ -26,16 +27,16 @@
26(define-public stalonetray 27(define-public stalonetray
27 (package 28 (package
28 (name "stalonetray") 29 (name "stalonetray")
29 (version "0.8.1") 30 (version "0.8.3")
30 (source 31 (source
31 (origin 32 (origin
32 (method url-fetch) 33 (method url-fetch)
33 (uri 34 (uri
34 (string-append "mirror://sourceforge/stalonetray/stalonetray-" 35 (string-append "mirror://sourceforge/stalonetray/stalonetray/stalonetray-"
35 version "/stalonetray-" version ".tar.bz2")) 36 version "/stalonetray-" version ".tar.bz2"))
36 (sha256 37 (sha256
37 (base32 38 (base32
38 "1wp8pnlv34w7xizj1vivnc3fkwqq4qgb9dbrsg15598iw85gi8ll")))) 39 "0k7xnpdb6dvx25d67v0crlr32cdnzykdsi9j889njiididc8lm1n"))))
39 (inputs `(("libx11" ,libx11))) 40 (inputs `(("libx11" ,libx11)))
40 (build-system gnu-build-system) 41 (build-system gnu-build-system)
41 (home-page "http://stalonetray.sourceforge.net") 42 (home-page "http://stalonetray.sourceforge.net")
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index c84845dd296..45e50b651c0 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -165,7 +165,9 @@ be output in text, PostScript, PDF or HTML.")
165 ("which" ,which) ; for tests/Examples/base-Ex.R 165 ("which" ,which) ; for tests/Examples/base-Ex.R
166 ("xz" ,xz))) 166 ("xz" ,xz)))
167 (inputs 167 (inputs
168 `(("cairo" ,cairo) 168 `(;; We need not only cairo here, but pango to ensure that tests for the
169 ;; "cairo" bitmapType plotting backend succeed.
170 ("pango" ,pango)
169 ("curl" ,curl) 171 ("curl" ,curl)
170 ("tzdata" ,tzdata) 172 ("tzdata" ,tzdata)
171 ("gfortran" ,gfortran) 173 ("gfortran" ,gfortran)
@@ -596,7 +598,8 @@ legends.")
596 ("r-plyr" ,r-plyr) 598 ("r-plyr" ,r-plyr)
597 ("r-proto" ,r-proto) 599 ("r-proto" ,r-proto)
598 ("r-reshape2" ,r-reshape2) 600 ("r-reshape2" ,r-reshape2)
599 ("r-scales" ,r-scales))) 601 ("r-scales" ,r-scales)
602 ("r-svglite" ,r-svglite)))
600 (home-page "http://ggplot2.org") 603 (home-page "http://ggplot2.org")
601 (synopsis "An implementation of the grammar of graphics") 604 (synopsis "An implementation of the grammar of graphics")
602 (description 605 (description
@@ -608,6 +611,55 @@ multidimensional conditioning system and a consistent interface to map data to
608aesthetic attributes.") 611aesthetic attributes.")
609 (license license:gpl2+))) 612 (license license:gpl2+)))
610 613
614(define-public r-gdtools
615 (package
616 (name "r-gdtools")
617 (version "0.0.7")
618 (source
619 (origin
620 (method url-fetch)
621 (uri (cran-uri "gdtools" version))
622 (sha256
623 (base32
624 "1bmnf9d677f2jy8jnb9ymjz1qzm4yrd0qp6k5qrrly06jfffyx7g"))))
625 (build-system r-build-system)
626 (native-inputs
627 `(("r-rcpp" ,r-rcpp)
628 ("pkg-config" ,pkg-config)))
629 (inputs
630 `(("cairo" ,cairo)))
631 (home-page "http://cran.r-project.org/web/packages/gdtools")
632 (synopsis "Utilities for graphical rendering")
633 (description
634 "The @code{gdtools} package provides functionalities to get font metrics
635and to generate base64 encoded string from raster matrix.")
636 (license license:gpl3)))
637
638(define-public r-svglite
639 (package
640 (name "r-svglite")
641 (version "1.1.0")
642 (source
643 (origin
644 (method url-fetch)
645 (uri (cran-uri "svglite" version))
646 (sha256
647 (base32
648 "11ryicjglfi6jvkk4jgg5kra42qbs5z2zid7jjhlslpjcljfwc70"))))
649 (build-system r-build-system)
650 (native-inputs `(("r-rcpp" ,r-rcpp)))
651 (propagated-inputs
652 `(("r-bh" ,r-bh)
653 ("r-gdtools" ,r-gdtools)))
654 (home-page "https://github.com/hadley/svglite")
655 (synopsis "SVG graphics device")
656 (description
657 "@code{svglite} is a graphics device that produces clean
658@dfn{SVG} (Scalable Vector Graphics) output, suitable for use on the web, or
659hand editing. Compared to the built-in @code{svg()}, @code{svglite} is
660considerably faster, produces smaller files, and leaves text as is.")
661 (license license:gpl2+)))
662
611(define-public r-assertthat 663(define-public r-assertthat
612 (package 664 (package
613 (name "r-assertthat") 665 (name "r-assertthat")
@@ -1353,6 +1405,25 @@ diagnostic tests of convergence to the equilibrium distribution of the Markov
1353chain.") 1405chain.")
1354 (license license:gpl2+))) 1406 (license license:gpl2+)))
1355 1407
1408(define-public r-ade4
1409 (package
1410 (name "r-ade4")
1411 (version "1.7-4")
1412 (source
1413 (origin
1414 (method url-fetch)
1415 (uri (cran-uri "ade4" version))
1416 (sha256
1417 (base32
1418 "17sbicash7z4b63dlrbaf8xx2pbwh62vykzvhdjs43h8jkl881y7"))))
1419 (build-system r-build-system)
1420 (home-page "http://pbil.univ-lyon1.fr/ADE-4")
1421 (synopsis "Multivariate data analysis and graphical display")
1422 (description
1423 "The ade4 package contains data analysis functions to analyze ecological
1424and environmental data in the framework of Euclidean exploratory methods.")
1425 (license license:gpl2+)))
1426
1356(define-public r-xml2 1427(define-public r-xml2
1357 (package 1428 (package
1358 (name "r-xml2") 1429 (name "r-xml2")
@@ -1377,6 +1448,32 @@ chain.")
1377files in R. It is built on top of the libxml2 C library.") 1448files in R. It is built on top of the libxml2 C library.")
1378 (license license:gpl2+))) 1449 (license license:gpl2+)))
1379 1450
1451(define-public r-multitaper
1452 (package
1453 (name "r-multitaper")
1454 (version "1.0-11")
1455 (source
1456 (origin
1457 (method url-fetch)
1458 (uri (cran-uri "multitaper" version))
1459 (sha256
1460 (base32
1461 "1s0lmjzpyd7zmc2p1ywv5fm7qkq357p70b76gw9wjlms6d81j1n4"))))
1462 (build-system r-build-system)
1463 (native-inputs
1464 `(("gfortran" ,gfortran)))
1465 (home-page "http://github.com/wesleyburr/multitaper/")
1466 (synopsis "Multitaper spectral analysis tools")
1467 (description
1468 "This package implements multitaper spectral estimation
1469techniques using prolate spheroidal sequences (Slepians) and sine
1470tapers for time series analysis. It includes an adaptive weighted
1471multitaper spectral estimate, a coherence estimate, Thomson's Harmonic
1472F-test, and complex demodulation. The Slepians sequences are
1473generated efficiently using a tridiagonal matrix solution, and
1474jackknifed confidence intervals are available for most estimates.")
1475 (license license:gpl2+)))
1476
1380(define-public r-rversions 1477(define-public r-rversions
1381 (package 1478 (package
1382 (name "r-rversions") 1479 (name "r-rversions")
@@ -2170,6 +2267,29 @@ parallel.")
2170using the parallel package.") 2267using the parallel package.")
2171 (license license:gpl2+))) 2268 (license license:gpl2+)))
2172 2269
2270(define-public r-domc
2271 (package
2272 (name "r-domc")
2273 (version "1.3.4")
2274 (source
2275 (origin
2276 (method url-fetch)
2277 (uri (cran-uri "doMC" version))
2278 (sha256
2279 (base32
2280 "0y47jl6g4f83r14pj8bafdzq1phj7bxy5dwyz3k43d2rr8phk8bn"))))
2281 (properties `((upstream-name . "doMC")))
2282 (build-system r-build-system)
2283 (propagated-inputs
2284 `(("r-foreach" ,r-foreach)
2285 ("r-iterators" ,r-iterators)))
2286 (home-page "http://cran.r-project.org/web/packages/doMC")
2287 (synopsis "Foreach parallel adaptor for the 'parallel' package")
2288 (description
2289 "This package provides a parallel backend for the @code{%dopar%} function
2290using the multicore functionality of the parallel package.")
2291 (license license:gpl2+)))
2292
2173(define-public r-dt 2293(define-public r-dt
2174 (package 2294 (package
2175 (name "r-dt") 2295 (name "r-dt")
@@ -2242,6 +2362,32 @@ singular and eigenvalue decompositions, as well as for principal component
2242analysis of large sparse or dense matrices.") 2362analysis of large sparse or dense matrices.")
2243 (license (list license:gpl2+ license:gpl3+)))) 2363 (license (list license:gpl2+ license:gpl3+))))
2244 2364
2365(define-public r-glmnet
2366 (package
2367 (name "r-glmnet")
2368 (version "2.0-5")
2369 (source
2370 (origin
2371 (method url-fetch)
2372 (uri (cran-uri "glmnet" version))
2373 (sha256
2374 (base32
2375 "1cbpzmbv837fvq88rgn6mgzgr9f1wqp9fg8gh2kkmngvr1957a9c"))))
2376 (build-system r-build-system)
2377 (inputs
2378 `(("gfortran" ,gfortran)))
2379 (propagated-inputs
2380 `(("r-foreach" ,r-foreach)))
2381 (home-page "http://www.jstatsoft.org/v33/i01")
2382 (synopsis "Lasso and elastic-net regularized generalized linear models")
2383 (description
2384 "The glmnet package provides efficient procedures for fitting the entire
2385lasso or elastic-net regularization path for linear and Poisson regression, as
2386well as logistic, multinomial, Cox, multiple-response Gaussian and grouped
2387multinomial models. The algorithm uses cyclical coordinate descent in a
2388path-wise fashion.")
2389 (license license:gpl2+)))
2390
2245(define-public r-pkgmaker 2391(define-public r-pkgmaker
2246 (package 2392 (package
2247 (name "r-pkgmaker") 2393 (name "r-pkgmaker")
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index ec4d3df1a66..9abaabad893 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -6,7 +6,7 @@
6;;; Copyright © 2015 David Thompson <davet@gnu.org> 6;;; Copyright © 2015 David Thompson <davet@gnu.org>
7;;; Copyright © 2015 Leo Famulari <leo@famulari.name> 7;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
8;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> 8;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
9;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net> 9;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
10;;; 10;;;
11;;; This file is part of GNU Guix. 11;;; This file is part of GNU Guix.
12;;; 12;;;
diff --git a/gnu/packages/tmux.scm b/gnu/packages/tmux.scm
index d89fc168443..e4f3b45d687 100644
--- a/gnu/packages/tmux.scm
+++ b/gnu/packages/tmux.scm
@@ -1,6 +1,7 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> 2;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
3;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> 3;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
4;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
4;;; 5;;;
5;;; This file is part of GNU Guix. 6;;; This file is part of GNU Guix.
6;;; 7;;;
@@ -21,11 +22,13 @@
21 #:use-module (guix licenses) 22 #:use-module (guix licenses)
22 #:use-module (guix packages) 23 #:use-module (guix packages)
23 #:use-module (guix download) 24 #:use-module (guix download)
25 #:use-module (guix git-download)
24 #:use-module (guix build-system gnu) 26 #:use-module (guix build-system gnu)
25 #:use-module (gnu packages) 27 #:use-module (gnu packages)
26 #:use-module (gnu packages libevent) 28 #:use-module (gnu packages libevent)
27 #:use-module (gnu packages ncurses)) 29 #:use-module (gnu packages ncurses))
28 30
31
29(define-public tmux 32(define-public tmux
30 (package 33 (package
31 (name "tmux") 34 (name "tmux")
@@ -50,3 +53,38 @@ windows), each running a separate program, to be created, accessed, and
50controlled from a single screen. tmux may be detached from a screen and 53controlled from a single screen. tmux may be detached from a screen and
51continue running in the background, then later reattached.") 54continue running in the background, then later reattached.")
52 (license isc))) 55 (license isc)))
56
57(define-public tmux-themepack
58 (let ((commit "03a372866f7677f7fe63bcee140b48b9fd372c48")
59 (revision "1"))
60 (package
61 (name "tmux-themepack")
62 (version
63 (string-append "0.0.0-" revision "." (string-take commit 7))) ;; No version tags
64 (source (origin
65 (method git-fetch)
66 (uri (git-reference
67 (url
68 (string-append "https://github.com/jimeh/" name ".git"))
69 (commit commit)))
70 (sha256
71 (base32
72 "1d3k87mq5lca042jbap5kxskjy3kg79wjhhpnm6jacbn3anc67zl"))
73 (file-name (string-append name "-" version "-checkout"))))
74 (build-system gnu-build-system)
75 (arguments
76 `(#:tests? #f ; No test suite.
77 #:phases (modify-phases %standard-phases
78 (delete 'configure)
79 (delete 'build)
80 (replace 'install
81 (lambda* (#:key outputs #:allow-other-keys)
82 (let* ((out (string-append
83 (assoc-ref outputs "out")
84 "/share/" ,name "-" ,version)))
85 (copy-recursively "." out)))))))
86 (home-page "https://github.com/jimeh/tmux-themepack")
87 (synopsis "Collection of themes for Tmux")
88 (description "A collection of various themes for Tmux.")
89 (license
90 (non-copyleft "http://www.wtfpl.net/txt/copying/")))))
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index e6e7e0011bb..ec7f9e8a3ce 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -112,14 +112,14 @@ as well as the classic centralized workflow.")
112 ;; Keep in sync with 'git-manpages'! 112 ;; Keep in sync with 'git-manpages'!
113 (package 113 (package
114 (name "git") 114 (name "git")
115 (version "2.9.0") 115 (version "2.9.1")
116 (source (origin 116 (source (origin
117 (method url-fetch) 117 (method url-fetch)
118 (uri (string-append "mirror://kernel.org/software/scm/git/git-" 118 (uri (string-append "mirror://kernel.org/software/scm/git/git-"
119 version ".tar.xz")) 119 version ".tar.xz"))
120 (sha256 120 (sha256
121 (base32 121 (base32
122 "02dl8yvvl7m4zy39s0xmqr958ah7krvkv94lmx4vz3wl95wsj7zl")))) 122 "18l2jb4bkp9ljz6p2aviwzxqyzza9z3v6h1pnkz7kjf1fay61zp8"))))
123 (build-system gnu-build-system) 123 (build-system gnu-build-system)
124 (native-inputs 124 (native-inputs
125 `(("native-perl" ,perl) 125 `(("native-perl" ,perl)
@@ -294,7 +294,7 @@ everything from small to very large projects with speed and efficiency.")
294 version ".tar.xz")) 294 version ".tar.xz"))
295 (sha256 295 (sha256
296 (base32 296 (base32
297 "0ic4zs4axkkwa44nqv5iihj3q2nm42kx0j8scnfp1z93m6pw31fw")))) 297 "1v9icsf85vvrrg7fakm91d11q23rvnh6dq4b4c4ya8v95z00mg8p"))))
298 (build-system trivial-build-system) 298 (build-system trivial-build-system)
299 (arguments 299 (arguments
300 '(#:modules ((guix build utils)) 300 '(#:modules ((guix build utils))
@@ -369,7 +369,7 @@ write native speed custom Git applications in any language with bindings.")
369(define-public cgit 369(define-public cgit
370 (package 370 (package
371 (name "cgit") 371 (name "cgit")
372 (version "0.12") 372 (version "1.0")
373 (source (origin 373 (source (origin
374 (method url-fetch) 374 (method url-fetch)
375 (uri (string-append 375 (uri (string-append
@@ -377,7 +377,7 @@ write native speed custom Git applications in any language with bindings.")
377 version ".tar.xz")) 377 version ".tar.xz"))
378 (sha256 378 (sha256
379 (base32 379 (base32
380 "1dx54hgfyabmg9nm5qp6d01f54nlbqbbdwhwl0llb9imjf237qif")))) 380 "0kbh835p7dl4h88qv55fyfh1za09cgnqh63rii325w9215hm95x8"))))
381 (build-system gnu-build-system) 381 (build-system gnu-build-system)
382 (arguments 382 (arguments
383 '(#:tests? #f ; XXX: fail to build the in-source git. 383 '(#:tests? #f ; XXX: fail to build the in-source git.
@@ -608,14 +608,14 @@ control to Git repositories.")
608(define-public mercurial 608(define-public mercurial
609 (package 609 (package
610 (name "mercurial") 610 (name "mercurial")
611 (version "3.8.1") 611 (version "3.8.4")
612 (source (origin 612 (source (origin
613 (method url-fetch) 613 (method url-fetch)
614 (uri (string-append "https://www.mercurial-scm.org/" 614 (uri (string-append "https://www.mercurial-scm.org/"
615 "release/mercurial-" version ".tar.gz")) 615 "release/mercurial-" version ".tar.gz"))
616 (sha256 616 (sha256
617 (base32 617 (base32
618 "156m6269xdqq7mpw01c6b065k29xnb8b9lyzn1b0nlz5il2izkps")))) 618 "19ixvxgifx48lxp9vdmsf88nnjsxl035ahmp3iw1vyilkpqkwbjb"))))
619 (build-system python-build-system) 619 (build-system python-build-system)
620 (arguments 620 (arguments
621 `(;; Restrict to Python 2, as Python 3 would require 621 `(;; Restrict to Python 2, as Python 3 would require
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 819c0d5f485..dfce444d9ee 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -7,6 +7,7 @@
7;;; Copyright © 2015 Andy Patterson <ajpatter@uwaterloo.ca> 7;;; Copyright © 2015 Andy Patterson <ajpatter@uwaterloo.ca>
8;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> 8;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
9;;; Copyright © 2015 Alex Vong <alexvong1995@gmail.com> 9;;; Copyright © 2015 Alex Vong <alexvong1995@gmail.com>
10;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
10;;; 11;;;
11;;; This file is part of GNU Guix. 12;;; This file is part of GNU Guix.
12;;; 13;;;
@@ -25,6 +26,8 @@
25 26
26(define-module (gnu packages video) 27(define-module (gnu packages video)
27 #:use-module (ice-9 match) 28 #:use-module (ice-9 match)
29 #:use-module (srfi srfi-1)
30 #:use-module (srfi srfi-26)
28 #:use-module ((guix licenses) #:prefix license:) 31 #:use-module ((guix licenses) #:prefix license:)
29 #:use-module (guix utils) 32 #:use-module (guix utils)
30 #:use-module (guix packages) 33 #:use-module (guix packages)
@@ -32,6 +35,7 @@
32 #:use-module (guix git-download) 35 #:use-module (guix git-download)
33 #:use-module (guix build-system cmake) 36 #:use-module (guix build-system cmake)
34 #:use-module (guix build-system gnu) 37 #:use-module (guix build-system gnu)
38 #:use-module (guix build-system glib-or-gtk)
35 #:use-module (guix build-system python) 39 #:use-module (guix build-system python)
36 #:use-module (guix build-system waf) 40 #:use-module (guix build-system waf)
37 #:use-module (gnu packages) 41 #:use-module (gnu packages)
@@ -373,14 +377,14 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
373(define-public ffmpeg 377(define-public ffmpeg
374 (package 378 (package
375 (name "ffmpeg") 379 (name "ffmpeg")
376 (version "3.0.2") 380 (version "3.1.1")
377 (source (origin 381 (source (origin
378 (method url-fetch) 382 (method url-fetch)
379 (uri (string-append "https://ffmpeg.org/releases/ffmpeg-" 383 (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
380 version ".tar.xz")) 384 version ".tar.xz"))
381 (sha256 385 (sha256
382 (base32 386 (base32
383 "08sjp4dxgcinmv9ly7nm24swmn2cnbbhvph44ihlplf4n33kr542")))) 387 "1nris3flwqd4v4b65yrrv9aqhsab7cb9lfp4wpxz6bi0m3r13g3i"))))
384 (build-system gnu-build-system) 388 (build-system gnu-build-system)
385 (inputs 389 (inputs
386 `(("fontconfig" ,fontconfig) 390 `(("fontconfig" ,fontconfig)
@@ -539,14 +543,14 @@ audio/video codec library.")
539(define-public ffmpeg-2.8 543(define-public ffmpeg-2.8
540 (package 544 (package
541 (inherit ffmpeg) 545 (inherit ffmpeg)
542 (version "2.8.6") 546 (version "2.8.7")
543 (source (origin 547 (source (origin
544 (method url-fetch) 548 (method url-fetch)
545 (uri (string-append "https://ffmpeg.org/releases/ffmpeg-" 549 (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
546 version ".tar.xz")) 550 version ".tar.xz"))
547 (sha256 551 (sha256
548 (base32 552 (base32
549 "1yh7dvm7zwdlsspdaq524s5qaggma5md9h95qc4kvb5dmyyyvg15")))) 553 "0z0mcj2q3ysp9qdn1ks03g5sn2zxyr06vxs4al0m4b5b3in8mglp"))))
550 (arguments 554 (arguments
551 (substitute-keyword-arguments (package-arguments ffmpeg) 555 (substitute-keyword-arguments (package-arguments ffmpeg)
552 ((#:configure-flags flags) 556 ((#:configure-flags flags)
@@ -818,7 +822,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
818 (lambda* (#:key inputs #:allow-other-keys) 822 (lambda* (#:key inputs #:allow-other-keys)
819 (copy-file (assoc-ref inputs "waf") "waf") 823 (copy-file (assoc-ref inputs "waf") "waf")
820 (setenv "CC" "gcc")))) 824 (setenv "CC" "gcc"))))
821 #:configure-flags (list "--enable-zsh-comp") 825 #:configure-flags (list "--enable-libmpv-shared" "--enable-zsh-comp")
822 ;; No check function defined. 826 ;; No check function defined.
823 #:tests? #f)) 827 #:tests? #f))
824 (home-page "https://mpv.io/") 828 (home-page "https://mpv.io/")
@@ -828,6 +832,34 @@ fork of mplayer2 and MPlayer. It shares some features with the former
828projects while introducing many more.") 832projects while introducing many more.")
829 (license license:gpl2+))) 833 (license license:gpl2+)))
830 834
835(define-public gnome-mpv
836 (package
837 (name "gnome-mpv")
838 (version "0.9")
839 (source
840 (origin
841 (method url-fetch)
842 (uri (string-append "https://github.com/gnome-mpv/gnome-mpv/releases"
843 "/download/v" version "/gnome-mpv-" version
844 ".tar.xz"))
845 (sha256
846 (base32
847 "06pgxl6f3kkgxv8nlmyl7gy3pg55sqf8vgr8m6426mlpm4p3qdn0"))))
848 (native-inputs
849 `(("intltool" ,intltool)
850 ("pkg-config" ,pkg-config)))
851 (inputs
852 `(("gtk+" ,gtk+)
853 ("libepoxy" ,libepoxy)
854 ("mpv" ,mpv)))
855 (build-system glib-or-gtk-build-system)
856 (home-page "https://github.com/gnome-mpv/gnome-mpv")
857 (synopsis "GTK+ frontend for the mpv media player")
858 (description "GNOME MPV is a simple GTK+ frontend for the mpv media player.
859GNOME MPV interacts with mpv via the client API exported by libmpv, allowing
860access to mpv's powerful playback capabilities.")
861 (license license:gpl3+)))
862
831(define-public libvpx 863(define-public libvpx
832 (package 864 (package
833 (name "libvpx") 865 (name "libvpx")
@@ -910,15 +942,15 @@ YouTube.com and a few more sites.")
910(define-public libbluray 942(define-public libbluray
911 (package 943 (package
912 (name "libbluray") 944 (name "libbluray")
913 (version "0.9.2") 945 (version "0.9.3")
914 (source (origin 946 (source (origin
915 (method url-fetch) 947 (method url-fetch)
916 (uri (string-append "http://download.videolan.org/videolan/" 948 (uri (string-append "https://download.videolan.org/videolan/"
917 name "/" version "/" 949 name "/" version "/"
918 name "-" version ".tar.bz2")) 950 name "-" version ".tar.bz2"))
919 (sha256 951 (sha256
920 (base32 952 (base32
921 "1sp71j4agcsg17g6b85cqz78pn5vknl5pl39rvr6mkib5ps99jgg")))) 953 "1q1whviqv5sr9nr372h31zwid1rvbfbx3z4lzr8lnj25xha6cdm6"))))
922 (build-system gnu-build-system) 954 (build-system gnu-build-system)
923 (arguments `(#:configure-flags '("--disable-bdjava"))) 955 (arguments `(#:configure-flags '("--disable-bdjava")))
924 (native-inputs `(("pkg-config" ,pkg-config))) 956 (native-inputs `(("pkg-config" ,pkg-config)))
@@ -926,7 +958,7 @@ YouTube.com and a few more sites.")
926 `(("fontconfig" ,fontconfig) 958 `(("fontconfig" ,fontconfig)
927 ("freetype" ,freetype) 959 ("freetype" ,freetype)
928 ("libxml2" ,libxml2))) 960 ("libxml2" ,libxml2)))
929 (home-page "http://www.videolan.org/developers/libbluray.html") 961 (home-page "https://www.videolan.org/developers/libbluray.html")
930 (synopsis "Blu-Ray Disc playback library") 962 (synopsis "Blu-Ray Disc playback library")
931 (description 963 (description
932 "libbluray is a library designed for Blu-Ray Disc playback for media 964 "libbluray is a library designed for Blu-Ray Disc playback for media
@@ -1363,7 +1395,7 @@ be used for realtime video capture via Linux-specific APIs.")
1363(define-public obs 1395(define-public obs
1364 (package 1396 (package
1365 (name "obs") 1397 (name "obs")
1366 (version "0.14.2") 1398 (version "0.15.1")
1367 (source (origin 1399 (source (origin
1368 (method url-fetch) 1400 (method url-fetch)
1369 (uri (string-append "https://github.com/jp9000/obs-studio" 1401 (uri (string-append "https://github.com/jp9000/obs-studio"
@@ -1371,9 +1403,23 @@ be used for realtime video capture via Linux-specific APIs.")
1371 (file-name (string-append name "-" version ".tar.gz")) 1403 (file-name (string-append name "-" version ".tar.gz"))
1372 (sha256 1404 (sha256
1373 (base32 1405 (base32
1374 "1cb8naa67kfnnngkzv1wpd4y241j29ggnk1w7jgnymp9j8dny1xl")))) 1406 "18fycg7xlj2i89wdb9c5js0bnl964s1lpmnvmfyj11zi9k061wsg"))))
1375 (build-system cmake-build-system) 1407 (build-system cmake-build-system)
1376 (arguments '(#:tests? #f)) ; no tests 1408 (arguments
1409 `(#:tests? #f ; no tests
1410 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
1411 (%current-system)))
1412 '("arm" "mips"))
1413 '(#:phases
1414 (modify-phases %standard-phases
1415 (add-after 'unpack 'remove-architecture-specific-instructions
1416 ;; non-Intel platforms fail to build with the architecture
1417 ;; specific compiler flags included by default.
1418 (lambda _
1419 (substitute* "libobs/CMakeLists.txt"
1420 (("if\\(NOT MSVC\\)") "if(MSVC)"))
1421 #t))))
1422 '())))
1377 (native-inputs 1423 (native-inputs
1378 `(("pkg-config" ,pkg-config))) 1424 `(("pkg-config" ,pkg-config)))
1379 (inputs 1425 (inputs
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 19870ef8f44..ea1a30ad260 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -76,14 +76,14 @@
76(define-public httpd 76(define-public httpd
77 (package 77 (package
78 (name "httpd") 78 (name "httpd")
79 (version "2.4.16") 79 (version "2.4.23")
80 (source (origin 80 (source (origin
81 (method url-fetch) 81 (method url-fetch)
82 (uri (string-append "mirror://apache/httpd/httpd-" 82 (uri (string-append "mirror://apache/httpd/httpd-"
83 version ".tar.bz2")) 83 version ".tar.bz2"))
84 (sha256 84 (sha256
85 (base32 85 (base32
86 "0hrpy6gjwma0kba7p7m61vwh82qcnkf08123lrwpg257m93hnrmc")))) 86 "0n2yx3gjlpr4kgqx845fj6amnmg25r2l6a7rzab5hxnpmar985hc"))))
87 (build-system gnu-build-system) 87 (build-system gnu-build-system)
88 (native-inputs `(("pcre" ,pcre "bin"))) ;for 'pcre-config' 88 (native-inputs `(("pcre" ,pcre "bin"))) ;for 'pcre-config'
89 (inputs `(("apr" ,apr) 89 (inputs `(("apr" ,apr)
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index f385d2b4fb8..790c74bbfd2 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -393,7 +393,6 @@ experience.")
393 "1m910lr7wkw2dgzmirfvz7dasfswhhccdf65l21iiciv24c3w1bb")) 393 "1m910lr7wkw2dgzmirfvz7dasfswhhccdf65l21iiciv24c3w1bb"))
394 (modules '((guix build utils) 394 (modules '((guix build utils)
395 (srfi srfi-19))) 395 (srfi srfi-19)))
396 (imported-modules '((guix build utils)))
397 (snippet 396 (snippet
398 ;; Remove non-reproducible timestamp and use the date of the 397 ;; Remove non-reproducible timestamp and use the date of the
399 ;; source file instead. 398 ;; source file instead.
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index bfcba473a8c..44d82dac609 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -12,6 +12,7 @@
12;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org> 12;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
13;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> 13;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
14;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> 14;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
15;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
15;;; 16;;;
16;;; This file is part of GNU Guix. 17;;; This file is part of GNU Guix.
17;;; 18;;;
@@ -63,14 +64,14 @@
63(define-public arandr 64(define-public arandr
64 (package 65 (package
65 (name "arandr") 66 (name "arandr")
66 (version "0.1.8") 67 (version "0.1.9")
67 (source (origin 68 (source (origin
68 (method url-fetch) 69 (method url-fetch)
69 (uri (string-append "http://christian.amsuess.com/tools/" name 70 (uri (string-append "http://christian.amsuess.com/tools/" name
70 "/files/" name "-" version ".tar.gz")) 71 "/files/" name "-" version ".tar.gz"))
71 (sha256 72 (sha256
72 (base32 73 (base32
73 "0d574mbmhaqmh7kivaryj2hpghz6xkvic9ah43s1hf385y7c33kd")))) 74 "1i3f1agixxbfy4kxikb2b241p7c2lg73cl9wqfvlwz3q6zf5faxv"))))
74 (build-system python-build-system) 75 (build-system python-build-system)
75 (arguments 76 (arguments
76 `(#:python ,python-2 ;incompatible with python 3 77 `(#:python ,python-2 ;incompatible with python 3
@@ -126,14 +127,14 @@ avoiding password prompts when X11 forwarding has already been setup.")
126(define-public libxkbcommon 127(define-public libxkbcommon
127 (package 128 (package
128 (name "libxkbcommon") 129 (name "libxkbcommon")
129 (version "0.5.0") 130 (version "0.6.1")
130 (source (origin 131 (source (origin
131 (method url-fetch) 132 (method url-fetch)
132 (uri (string-append "http://xkbcommon.org/download/" name "-" 133 (uri (string-append "http://xkbcommon.org/download/" name "-"
133 version ".tar.xz")) 134 version ".tar.xz"))
134 (sha256 135 (sha256
135 (base32 136 (base32
136 "176ii5dn2wh74q48sd8ac37ljlvgvp5f506glr96z6ibfhj7igch")))) 137 "0q47xa1szlxwgvwmhv4b7xwawnykz1hnc431d84nj8dlh2q8f22v"))))
137 (build-system gnu-build-system) 138 (build-system gnu-build-system)
138 (inputs 139 (inputs
139 `(("libx11" ,libx11) 140 `(("libx11" ,libx11)
@@ -296,7 +297,7 @@ and Matrox.")
296(define-public mtdev 297(define-public mtdev
297 (package 298 (package
298 (name "mtdev") 299 (name "mtdev")
299 (version "1.1.3") 300 (version "1.1.5")
300 (source 301 (source
301 (origin 302 (origin
302 (method url-fetch) 303 (method url-fetch)
@@ -304,8 +305,8 @@ and Matrox.")
304 "http://bitmath.org/code/mtdev/mtdev-" 305 "http://bitmath.org/code/mtdev/mtdev-"
305 version ".tar.bz2")) 306 version ".tar.bz2"))
306 (sha256 307 (sha256
307 (base32 308 (base32
308 "159ndzwfpw0xr8mw4lhl47w9c2krshlfrscs7k6n186vknv2hk3d")))) 309 "0zxs7shzgbalkvlaiibi25bd902rbmkv9n1lww6q8j3ri9qdaxv6"))))
309 (build-system gnu-build-system) 310 (build-system gnu-build-system)
310 (home-page "http://bitmath.org/code/mtdev/") 311 (home-page "http://bitmath.org/code/mtdev/")
311 (synopsis "Multitouch protocol translation library") 312 (synopsis "Multitouch protocol translation library")
@@ -638,7 +639,7 @@ Guile will work for XBindKeys.")
638(define-public sxhkd 639(define-public sxhkd
639 (package 640 (package
640 (name "sxhkd") 641 (name "sxhkd")
641 (version "0.5.5") 642 (version "0.5.6")
642 (source 643 (source
643 (origin 644 (origin
644 (file-name (string-append name "-" version ".tar.gz")) 645 (file-name (string-append name "-" version ".tar.gz"))
@@ -648,7 +649,7 @@ Guile will work for XBindKeys.")
648 version ".tar.gz")) 649 version ".tar.gz"))
649 (sha256 650 (sha256
650 (base32 651 (base32
651 "04s3y2bq9502gw72jj3y2zsh96yj3qg2av3zsa8ahd2farvrysg6")))) 652 "15grmzpxz5fqlbfg2slj7gb7r6nzkvjmflmbkqx7mlby9pm6wdkj"))))
652 (build-system gnu-build-system) 653 (build-system gnu-build-system)
653 (inputs 654 (inputs
654 `(("asciidoc" ,asciidoc) 655 `(("asciidoc" ,asciidoc)
@@ -670,14 +671,14 @@ compact configuration syntax.")
670(define-public rxvt-unicode 671(define-public rxvt-unicode
671 (package 672 (package
672 (name "rxvt-unicode") 673 (name "rxvt-unicode")
673 (version "9.21") 674 (version "9.22")
674 (source (origin 675 (source (origin
675 (method url-fetch) 676 (method url-fetch)
676 (uri (string-append "http://dist.schmorp.de/rxvt-unicode/Attic/" 677 (uri (string-append "http://dist.schmorp.de/rxvt-unicode/Attic/"
677 name "-" version ".tar.bz2")) 678 name "-" version ".tar.bz2"))
678 (sha256 679 (sha256
679 (base32 680 (base32
680 "0swmi308v5yxsddrdhvi4cch88k2bbs2nffpl5j5m2f55gbhw9vm")))) 681 "1pddjn5ynblwfrdmskylrsxb9vfnk3w4jdnq2l8xn2pspkljhip9"))))
681 (build-system gnu-build-system) 682 (build-system gnu-build-system)
682 (arguments 683 (arguments
683 ;; This sets the destination when installing the necessary terminal 684 ;; This sets the destination when installing the necessary terminal
@@ -848,7 +849,7 @@ color temperature should be set to match the lamps in your room.")
848(define-public xscreensaver 849(define-public xscreensaver
849 (package 850 (package
850 (name "xscreensaver") 851 (name "xscreensaver")
851 (version "5.34") 852 (version "5.35")
852 (source 853 (source
853 (origin 854 (origin
854 (method url-fetch) 855 (method url-fetch)
@@ -857,7 +858,7 @@ color temperature should be set to match the lamps in your room.")
857 version ".tar.gz")) 858 version ".tar.gz"))
858 (sha256 859 (sha256
859 (base32 860 (base32
860 "09sy5v8bn62hiq4ib3jyvp8lipqcvn3rdsj74q25qgklpv27xzvg")))) 861 "08kbb0ry7ih436ab4i5g6lnhaaz13zkcdmbdibrn4j5gm5qq8v0y"))))
861 (build-system gnu-build-system) 862 (build-system gnu-build-system)
862 (arguments 863 (arguments
863 `(#:tests? #f ; no check target 864 `(#:tests? #f ; no check target
@@ -914,7 +915,7 @@ demos. It also acts as a nice screen locker.")
914(define-public rofi 915(define-public rofi
915 (package 916 (package
916 (name "rofi") 917 (name "rofi")
917 (version "1.0.1") 918 (version "1.1.0")
918 (source (origin 919 (source (origin
919 (method url-fetch) 920 (method url-fetch)
920 (uri (string-append "https://github.com/DaveDavenport/rofi/" 921 (uri (string-append "https://github.com/DaveDavenport/rofi/"
@@ -922,7 +923,7 @@ demos. It also acts as a nice screen locker.")
922 version "/rofi-" version ".tar.xz")) 923 version "/rofi-" version ".tar.xz"))
923 (sha256 924 (sha256
924 (base32 925 (base32
925 "01jxml9vk4cw7pngpan7dipmb98s6ibh6f0023lw3hbgxy650637")))) 926 "1l8vl0mh7i0b1ycifqpg6392f5i4qxlv003m126skfk6fnlfq8hn"))))
926 (build-system gnu-build-system) 927 (build-system gnu-build-system)
927 (inputs 928 (inputs
928 `(("libx11" ,libx11) 929 `(("libx11" ,libx11)
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index c201f03ab5d..5639f1daa3d 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -28,6 +28,7 @@
28 #:use-module (guix build-system gnu) 28 #:use-module (guix build-system gnu)
29 #:use-module (guix build-system trivial) 29 #:use-module (guix build-system trivial)
30 #:use-module (gnu packages) 30 #:use-module (gnu packages)
31 #:use-module (gnu packages calendar)
31 #:use-module (gnu packages pkg-config) 32 #:use-module (gnu packages pkg-config)
32 #:use-module (gnu packages glib) 33 #:use-module (gnu packages glib)
33 #:use-module (gnu packages gtk) 34 #:use-module (gnu packages gtk)
@@ -43,6 +44,7 @@
43 #:use-module (gnu packages linux) 44 #:use-module (gnu packages linux)
44 #:use-module (gnu packages photo) 45 #:use-module (gnu packages photo)
45 #:use-module (gnu packages pcre) 46 #:use-module (gnu packages pcre)
47 #:use-module (gnu packages popt)
46 #:use-module (gnu packages pulseaudio)) 48 #:use-module (gnu packages pulseaudio))
47 49
48(define-public gtk-xfce-engine 50(define-public gtk-xfce-engine
@@ -815,3 +817,35 @@ the desktop wallpaper.")
815 "This is a task manager for the Xfce desktop. It displays the CPU and 817 "This is a task manager for the Xfce desktop. It displays the CPU and
816memory usage graphically, and it can display processes as a tree.") 818memory usage graphically, and it can display processes as a tree.")
817 (license gpl2+))) 819 (license gpl2+)))
820
821(define-public orage
822 (package
823 (name "orage")
824 (version "4.12.1")
825 (source (origin
826 (method url-fetch)
827 (uri (string-append "http://archive.xfce.org/src/apps/"
828 name "/" (version-major+minor version) "/"
829 name "-" version ".tar.bz2"))
830 (sha256
831 (base32
832 "0qlhvnl2m33vfxqlbkic2nmfpwyd4mq230jzhs48cg78392amy9w"))))
833 (build-system gnu-build-system)
834 (native-inputs
835 `(("intltool" ,intltool)
836 ("pkg-config" ,pkg-config)))
837 (inputs
838 `(("gtk+" ,gtk+-2)
839 ("libical" ,libical)
840 ("libnotify" ,libnotify)
841 ("popt" ,popt)
842 ("xfce4-panel" ,xfce4-panel)))
843 (home-page "http://www.xfce.org/projects/")
844 (synopsis "Simple calendar application with reminders")
845 (description
846 "This is a simple calendar application for the Xfce desktop. Orage has
847alarms and uses the iCalendar format, making it compatible with many other
848calendar applications. It also includes a panel clock plugin and an
849international clock application capable of simultaneously showing clocks from
850several different time zones.")
851 (license gpl2+)))
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index ef7f257139b..fb0d07d8cfc 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -532,16 +532,15 @@ server, collect the answer, and finally decoding the XML to Perl.")
532(define-public pugixml 532(define-public pugixml
533 (package 533 (package
534 (name "pugixml") 534 (name "pugixml")
535 (version "1.6") 535 (version "1.7")
536 (source 536 (source
537 (origin 537 (origin
538 (method url-fetch) 538 (method url-fetch)
539 (uri (string-append "https://github.com/zeux/pugixml/archive/v" 539 (uri (string-append "https://github.com/zeux/pugixml/releases/download/v"
540 version ".tar.gz")) 540 version "/pugixml-" version ".tar.gz"))
541 (file-name (string-append name "-" version ".tar.gz"))
542 (sha256 541 (sha256
543 (base32 542 (base32
544 "0czbcv9aqf2rw3s9cljz2wb1f4zbhd07wnj7ykklklccl0ipfnwi")))) 543 "1jpml475kbhs1aqwa48g2cbfxlrb9qp115m2j9yryxhxyr30vqgv"))))
545 (build-system cmake-build-system) 544 (build-system cmake-build-system)
546 (arguments 545 (arguments
547 `(#:tests? #f 546 `(#:tests? #f
diff --git a/gnu/services.scm b/gnu/services.scm
index 50e76df8182..5479bfae193 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -238,42 +238,33 @@ directory."
238(define (cleanup-gexp _) 238(define (cleanup-gexp _)
239 "Return as a monadic value a gexp to clean up /tmp and similar places upon 239 "Return as a monadic value a gexp to clean up /tmp and similar places upon
240boot." 240boot."
241 (define %modules 241 (with-monad %store-monad
242 '((guix build utils))) 242 (with-imported-modules '((guix build utils))
243 243 (return #~(begin
244 (mlet %store-monad ((modules (imported-modules %modules)) 244 (use-modules (guix build utils))
245 (compiled (compiled-modules %modules))) 245
246 (return #~(begin 246 ;; Clean out /tmp and /var/run.
247 (eval-when (expand load eval) 247 ;;
248 ;; Make sure 'use-modules' below succeeds. 248 ;; XXX This needs to happen before service activations, so it
249 (set! %load-path (cons #$modules %load-path)) 249 ;; has to be here, but this also implicitly assumes that /tmp
250 (set! %load-compiled-path 250 ;; and /var/run are on the root partition.
251 (cons #$compiled %load-compiled-path))) 251 (letrec-syntax ((fail-safe (syntax-rules ()
252 252 ((_ exp rest ...)
253 (use-modules (guix build utils)) 253 (begin
254 254 (catch 'system-error
255 ;; Clean out /tmp and /var/run. 255 (lambda () exp)
256 ;; 256 (const #f))
257 ;; XXX This needs to happen before service activations, so it 257 (fail-safe rest ...)))
258 ;; has to be here, but this also implicitly assumes that /tmp 258 ((_)
259 ;; and /var/run are on the root partition. 259 #t))))
260 (letrec-syntax ((fail-safe (syntax-rules () 260 ;; Ignore I/O errors so the system can boot.
261 ((_ exp rest ...) 261 (fail-safe
262 (begin 262 (delete-file-recursively "/tmp")
263 (catch 'system-error 263 (delete-file-recursively "/var/run")
264 (lambda () exp) 264 (mkdir "/tmp")
265 (const #f)) 265 (chmod "/tmp" #o1777)
266 (fail-safe rest ...))) 266 (mkdir "/var/run")
267 ((_) 267 (chmod "/var/run" #o755))))))))
268 #t))))
269 ;; Ignore I/O errors so the system can boot.
270 (fail-safe
271 (delete-file-recursively "/tmp")
272 (delete-file-recursively "/var/run")
273 (mkdir "/tmp")
274 (chmod "/tmp" #o1777)
275 (mkdir "/var/run")
276 (chmod "/var/run" #o755)))))))
277 268
278(define cleanup-service-type 269(define cleanup-service-type
279 ;; Service that cleans things up in /tmp and similar. 270 ;; Service that cleans things up in /tmp and similar.
@@ -309,10 +300,10 @@ file."
309 one) 300 one)
310 (_ 301 (_
311 (computed-file name 302 (computed-file name
312 #~(begin 303 (with-imported-modules '((guix build union))
313 (use-modules (guix build union)) 304 #~(begin
314 (union-build #$output '#$things)) 305 (use-modules (guix build union))
315 #:modules '((guix build union)))))) 306 (union-build #$output '#$things)))))))
316 307
317(define* (activation-service->script service) 308(define* (activation-service->script service)
318 "Return as a monadic value the activation script for SERVICE, a service of 309 "Return as a monadic value the activation script for SERVICE, a service of
@@ -337,29 +328,22 @@ ACTIVATION-SCRIPT-TYPE."
337 (cut gexp->file "activate-service" <>) 328 (cut gexp->file "activate-service" <>)
338 gexps)) 329 gexps))
339 330
340 (mlet* %store-monad ((actions (service-activations)) 331 (mlet* %store-monad ((actions (service-activations)))
341 (modules (imported-modules %modules))
342 (compiled (compiled-modules %modules)))
343 (gexp->file "activate" 332 (gexp->file "activate"
344 #~(begin 333 (with-imported-modules %modules
345 (eval-when (expand load eval) 334 #~(begin
346 ;; Make sure 'use-modules' below succeeds. 335 (use-modules (gnu build activation))
347 (set! %load-path (cons #$modules %load-path))
348 (set! %load-compiled-path
349 (cons #$compiled %load-compiled-path)))
350
351 (use-modules (gnu build activation))
352 336
353 ;; Make sure /bin/sh is valid and current. 337 ;; Make sure /bin/sh is valid and current.
354 (activate-/bin/sh 338 (activate-/bin/sh
355 (string-append #$(canonical-package bash) "/bin/sh")) 339 (string-append #$(canonical-package bash) "/bin/sh"))
356 340
357 ;; Run the services' activation snippets. 341 ;; Run the services' activation snippets.
358 ;; TODO: Use 'load-compiled'. 342 ;; TODO: Use 'load-compiled'.
359 (for-each primitive-load '#$actions) 343 (for-each primitive-load '#$actions)
360 344
361 ;; Set up /run/current-system. 345 ;; Set up /run/current-system.
362 (activate-current-system))))) 346 (activate-current-system))))))
363 347
364(define (gexps->activation-gexp gexps) 348(define (gexps->activation-gexp gexps)
365 "Return a gexp that runs the activation script containing GEXPS." 349 "Return a gexp that runs the activation script containing GEXPS."
diff --git a/gnu/services/avahi.scm b/gnu/services/avahi.scm
index 8005b066ed4..562005c22c7 100644
--- a/gnu/services/avahi.scm
+++ b/gnu/services/avahi.scm
@@ -42,6 +42,8 @@
42 avahi-configuration? 42 avahi-configuration?
43 (avahi avahi-configuration-avahi ;<package> 43 (avahi avahi-configuration-avahi ;<package>
44 (default avahi)) 44 (default avahi))
45 (debug? avahi-configuration-debug? ;Boolean
46 (default #f))
45 (host-name avahi-configuration-host-name) ;string 47 (host-name avahi-configuration-host-name) ;string
46 (publish? avahi-configuration-publish?) ;Boolean 48 (publish? avahi-configuration-publish?) ;Boolean
47 (ipv4? avahi-configuration-ipv4?) ;Boolean 49 (ipv4? avahi-configuration-ipv4?) ;Boolean
@@ -96,6 +98,7 @@
96(define (avahi-shepherd-service config) 98(define (avahi-shepherd-service config)
97 "Return a list of <shepherd-service> for CONFIG." 99 "Return a list of <shepherd-service> for CONFIG."
98 (let ((config (configuration-file config)) 100 (let ((config (configuration-file config))
101 (debug? (avahi-configuration-debug? config))
99 (avahi (avahi-configuration-avahi config))) 102 (avahi (avahi-configuration-avahi config)))
100 (list (shepherd-service 103 (list (shepherd-service
101 (documentation "Run the Avahi mDNS/DNS-SD responder.") 104 (documentation "Run the Avahi mDNS/DNS-SD responder.")
@@ -104,7 +107,10 @@
104 107
105 (start #~(make-forkexec-constructor 108 (start #~(make-forkexec-constructor
106 (list (string-append #$avahi "/sbin/avahi-daemon") 109 (list (string-append #$avahi "/sbin/avahi-daemon")
107 "--syslog" "-f" #$config))) 110 "--daemonize"
111 #$@(if debug? #~("--debug") #~())
112 "-f" #$config)
113 #:pid-file "/var/run/avahi-daemon/pid"))
108 (stop #~(make-kill-destructor)))))) 114 (stop #~(make-kill-destructor))))))
109 115
110(define avahi-service-type 116(define avahi-service-type
@@ -127,7 +133,7 @@
127 (service-extension profile-service-type 133 (service-extension profile-service-type
128 avahi-package)))))) 134 avahi-package))))))
129 135
130(define* (avahi-service #:key (avahi avahi) 136(define* (avahi-service #:key (avahi avahi) debug?
131 host-name 137 host-name
132 (publish? #t) 138 (publish? #t)
133 (ipv4? #t) (ipv6? #t) 139 (ipv4? #t) (ipv6? #t)
@@ -155,7 +161,7 @@ Boolean values @var{ipv4?} and @var{ipv6?} determine whether to use IPv4/IPv6
155sockets." 161sockets."
156 (service avahi-service-type 162 (service avahi-service-type
157 (avahi-configuration 163 (avahi-configuration
158 (avahi avahi) (host-name host-name) 164 (avahi avahi) (debug? debug?) (host-name host-name)
159 (publish? publish?) (ipv4? ipv4?) (ipv6? ipv6?) 165 (publish? publish?) (ipv4? ipv4?) (ipv6? ipv6?)
160 (wide-area? wide-area?) 166 (wide-area? wide-area?)
161 (domains-to-browse domains-to-browse)))) 167 (domains-to-browse domains-to-browse))))
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 2780d124c77..805ba7d12c1 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -4,6 +4,8 @@
4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> 4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
5;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> 5;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
6;;; Copyright © 2016 Leo Famulari <leo@famulari.name> 6;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
7;;; Copyright © 2016 David Craven <david@craven.ch>
8;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
7;;; 9;;;
8;;; This file is part of GNU Guix. 10;;; This file is part of GNU Guix.
9;;; 11;;;
@@ -31,11 +33,11 @@
31 #:use-module (gnu system mapped-devices) 33 #:use-module (gnu system mapped-devices)
32 #:use-module (gnu packages admin) 34 #:use-module (gnu packages admin)
33 #:use-module ((gnu packages linux) 35 #:use-module ((gnu packages linux)
34 #:select (eudev kbd e2fsprogs lvm2 fuse alsa-utils crda gpm)) 36 #:select (alsa-utils crda eudev e2fsprogs fuse gpm kbd lvm2 rng-tools))
35 #:use-module ((gnu packages base) 37 #:use-module ((gnu packages base)
36 #:select (canonical-package glibc)) 38 #:select (canonical-package glibc))
37 #:use-module (gnu packages package-management) 39 #:use-module (gnu packages package-management)
38 #:use-module (gnu packages lsh) 40 #:use-module (gnu packages ssh)
39 #:use-module (gnu packages lsof) 41 #:use-module (gnu packages lsof)
40 #:use-module ((gnu build file-systems) 42 #:use-module ((gnu build file-systems)
41 #:select (mount-flags->bit-mask)) 43 #:select (mount-flags->bit-mask))
@@ -81,6 +83,7 @@
81 nscd-service-type 83 nscd-service-type
82 nscd-service 84 nscd-service
83 syslog-service 85 syslog-service
86 syslog-service-type
84 %default-syslog.conf 87 %default-syslog.conf
85 88
86 guix-configuration 89 guix-configuration
@@ -94,7 +97,12 @@
94 gpm-service-type 97 gpm-service-type
95 gpm-service 98 gpm-service
96 99
100 urandom-seed-service-type
97 urandom-seed-service 101 urandom-seed-service
102 rngd-service-type
103 rngd-service
104 pam-limits-service-type
105 pam-limits-service
98 106
99 %base-services)) 107 %base-services))
100 108
@@ -224,59 +232,58 @@ FILE-SYSTEM."
224 (create? (file-system-create-mount-point? file-system)) 232 (create? (file-system-create-mount-point? file-system))
225 (dependencies (file-system-dependencies file-system))) 233 (dependencies (file-system-dependencies file-system)))
226 (if (file-system-mount? file-system) 234 (if (file-system-mount? file-system)
227 (list 235 (with-imported-modules '((gnu build file-systems)
228 (shepherd-service 236 (guix build bournish))
229 (provision (list (file-system->shepherd-service-name file-system))) 237 (list
230 (requirement `(root-file-system 238 (shepherd-service
231 ,@(map dependency->shepherd-service-name dependencies))) 239 (provision (list (file-system->shepherd-service-name file-system)))
232 (documentation "Check, mount, and unmount the given file system.") 240 (requirement `(root-file-system
233 (start #~(lambda args 241 ,@(map dependency->shepherd-service-name dependencies)))
234 ;; FIXME: Use or factorize with 'mount-file-system'. 242 (documentation "Check, mount, and unmount the given file system.")
235 (let ((device (canonicalize-device-spec #$device '#$title)) 243 (start #~(lambda args
236 (flags #$(mount-flags->bit-mask 244 ;; FIXME: Use or factorize with 'mount-file-system'.
237 (file-system-flags file-system)))) 245 (let ((device (canonicalize-device-spec #$device '#$title))
238 #$(if create? 246 (flags #$(mount-flags->bit-mask
239 #~(mkdir-p #$target) 247 (file-system-flags file-system))))
240 #~#t) 248 #$(if create?
241 #$(if check? 249 #~(mkdir-p #$target)
242 #~(begin 250 #~#t)
243 ;; Make sure fsck.ext2 & co. can be found. 251 #$(if check?
244 (setenv "PATH" 252 #~(begin
245 (string-append 253 ;; Make sure fsck.ext2 & co. can be found.
246 #$e2fsprogs "/sbin:" 254 (setenv "PATH"
247 "/run/current-system/profile/sbin:" 255 (string-append
248 (getenv "PATH"))) 256 #$e2fsprogs "/sbin:"
249 (check-file-system device #$type)) 257 "/run/current-system/profile/sbin:"
250 #~#t) 258 (getenv "PATH")))
251 259 (check-file-system device #$type))
252 (mount device #$target #$type flags 260 #~#t)
253 #$(file-system-options file-system)) 261
254 262 (mount device #$target #$type flags
255 ;; For read-only bind mounts, an extra remount is 263 #$(file-system-options file-system))
256 ;; needed, as per <http://lwn.net/Articles/281157/>, 264
257 ;; which still applies to Linux 4.0. 265 ;; For read-only bind mounts, an extra remount is
258 (when (and (= MS_BIND (logand flags MS_BIND)) 266 ;; needed, as per <http://lwn.net/Articles/281157/>,
259 (= MS_RDONLY (logand flags MS_RDONLY))) 267 ;; which still applies to Linux 4.0.
260 (mount device #$target #$type 268 (when (and (= MS_BIND (logand flags MS_BIND))
261 (logior MS_BIND MS_REMOUNT MS_RDONLY)))) 269 (= MS_RDONLY (logand flags MS_RDONLY)))
262 #t)) 270 (mount device #$target #$type
263 (stop #~(lambda args 271 (logior MS_BIND MS_REMOUNT MS_RDONLY))))
264 ;; Normally there are no processes left at this point, so 272 #t))
265 ;; TARGET can be safely unmounted. 273 (stop #~(lambda args
266 274 ;; Normally there are no processes left at this point, so
267 ;; Make sure PID 1 doesn't keep TARGET busy. 275 ;; TARGET can be safely unmounted.
268 (chdir "/") 276
269 277 ;; Make sure PID 1 doesn't keep TARGET busy.
270 (umount #$target) 278 (chdir "/")
271 #f)) 279
272 280 (umount #$target)
273 ;; We need an additional module. 281 #f))
274 (modules `(((gnu build file-systems) 282
275 #:select (check-file-system canonicalize-device-spec)) 283 ;; We need an additional module.
276 ,@%default-modules)) 284 (modules `(((gnu build file-systems)
277 (imported-modules `((gnu build file-systems) 285 #:select (check-file-system canonicalize-device-spec))
278 (guix build bournish) 286 ,@%default-modules)))))
279 ,@%default-imported-modules))))
280 '()))) 287 '())))
281 288
282(define file-system-service-type 289(define file-system-service-type
@@ -484,7 +491,47 @@ stopped before 'kill' is called."
484(define (urandom-seed-service) 491(define (urandom-seed-service)
485 (service urandom-seed-service-type #f)) 492 (service urandom-seed-service-type #f))
486 493
487 494
495;;;
496;;; Add hardware random number generator to entropy pool.
497;;;
498
499(define-record-type* <rngd-configuration>
500 rngd-configuration make-rngd-configuration
501 rngd-configuration?
502 (rng-tools rngd-configuration-rng-tools) ;package
503 (device rngd-configuration-device)) ;string
504
505(define rngd-service-type
506 (shepherd-service-type
507 'rngd
508 (lambda (config)
509 (define rng-tools (rngd-configuration-rng-tools config))
510 (define device (rngd-configuration-device config))
511
512 (define rngd-command
513 (list #~(string-append #$rng-tools "/sbin/rngd")
514 "-f" "-r" device))
515
516 (shepherd-service
517 (documentation "Add TRNG to entropy pool.")
518 (requirement '(udev))
519 (provision '(trng))
520 (start #~(make-forkexec-constructor #$@rngd-command))
521 (stop #~(make-kill-destructor))))))
522
523(define* (rngd-service #:key
524 (rng-tools rng-tools)
525 (device "/dev/hwrng"))
526 "Return a service that runs the @command{rngd} program from @var{rng-tools}
527to add @var{device} to the kernel's entropy pool. The service will fail if
528@var{device} does not exist."
529 (service rngd-service-type
530 (rngd-configuration
531 (rng-tools rng-tools)
532 (device device))))
533
534
488;;; 535;;;
489;;; System-wide environment variables. 536;;; System-wide environment variables.
490;;; 537;;;
@@ -790,6 +837,11 @@ the tty to run, among other things."
790 "/sbin/nscd") 837 "/sbin/nscd")
791 "-f" #$nscd.conf "--foreground") 838 "-f" #$nscd.conf "--foreground")
792 839
840 ;; Wait for the PID file. However, the PID file is
841 ;; written before nscd is actually listening on its
842 ;; socket (XXX).
843 #:pid-file "/var/run/nscd/nscd.pid"
844
793 #:environment-variables 845 #:environment-variables
794 (list (string-append "LD_LIBRARY_PATH=" 846 (list (string-append "LD_LIBRARY_PATH="
795 (string-join 847 (string-join
@@ -875,6 +927,46 @@ settings.
875information on the configuration file syntax." 927information on the configuration file syntax."
876 (service syslog-service-type config-file)) 928 (service syslog-service-type config-file))
877 929
930(define pam-limits-service-type
931 (let ((security-limits
932 ;; Create /etc/security containing the provided "limits.conf" file.
933 (lambda (limits-file)
934 `(("security"
935 ,(computed-file
936 "security"
937 #~(begin
938 (mkdir #$output)
939 (stat #$limits-file)
940 (symlink #$limits-file
941 (string-append #$output "/limits.conf"))))))))
942 (pam-extension
943 (lambda (pam)
944 (let ((pam-limits (pam-entry
945 (control "required")
946 (module "pam_limits.so")
947 (arguments '("conf=/etc/security/limits.conf")))))
948 (if (member (pam-service-name pam)
949 '("login" "su" "slim"))
950 (pam-service
951 (inherit pam)
952 (session (cons pam-limits
953 (pam-service-session pam))))
954 pam)))))
955 (service-type
956 (name 'limits)
957 (extensions
958 (list (service-extension etc-service-type security-limits)
959 (service-extension pam-root-service-type
960 (lambda _ (list pam-extension))))))))
961
962(define* (pam-limits-service #:optional (limits '()))
963 "Return a service that makes selected programs respect the list of
964pam-limits-entry specified in LIMITS via pam_limits.so."
965 (service pam-limits-service-type
966 (plain-file "limits.conf"
967 (string-join (map pam-limits-entry->string limits)
968 "\n"))))
969
878 970
879;;; 971;;;
880;;; Guix services. 972;;; Guix services.
@@ -1088,44 +1180,44 @@ archive}). If that is not the case, the service will fail to start."
1088 "Return the union of the @code{lib/udev/rules.d} directories found in each 1180 "Return the union of the @code{lib/udev/rules.d} directories found in each
1089item of @var{packages}." 1181item of @var{packages}."
1090 (define build 1182 (define build
1091 #~(begin 1183 (with-imported-modules '((guix build union)
1092 (use-modules (guix build union) 1184 (guix build utils))
1093 (guix build utils) 1185 #~(begin
1094 (srfi srfi-1) 1186 (use-modules (guix build union)
1095 (srfi srfi-26)) 1187 (guix build utils)
1188 (srfi srfi-1)
1189 (srfi srfi-26))
1096 1190
1097 (define %standard-locations 1191 (define %standard-locations
1098 '("/lib/udev/rules.d" "/libexec/udev/rules.d")) 1192 '("/lib/udev/rules.d" "/libexec/udev/rules.d"))
1099 1193
1100 (define (rules-sub-directory directory) 1194 (define (rules-sub-directory directory)
1101 ;; Return the sub-directory of DIRECTORY containing udev rules, or 1195 ;; Return the sub-directory of DIRECTORY containing udev rules, or
1102 ;; #f if none was found. 1196 ;; #f if none was found.
1103 (find directory-exists? 1197 (find directory-exists?
1104 (map (cut string-append directory <>) %standard-locations))) 1198 (map (cut string-append directory <>) %standard-locations)))
1105 1199
1106 (mkdir-p (string-append #$output "/lib/udev")) 1200 (mkdir-p (string-append #$output "/lib/udev"))
1107 (union-build (string-append #$output "/lib/udev/rules.d") 1201 (union-build (string-append #$output "/lib/udev/rules.d")
1108 (filter-map rules-sub-directory '#$packages)))) 1202 (filter-map rules-sub-directory '#$packages)))))
1109 1203
1110 (computed-file "udev-rules" build 1204 (computed-file "udev-rules" build))
1111 #:modules '((guix build union)
1112 (guix build utils))))
1113 1205
1114(define (udev-rule file-name contents) 1206(define (udev-rule file-name contents)
1115 "Return a directory with a udev rule file FILE-NAME containing CONTENTS." 1207 "Return a directory with a udev rule file FILE-NAME containing CONTENTS."
1116 (computed-file file-name 1208 (computed-file file-name
1117 #~(begin 1209 (with-imported-modules '((guix build utils))
1118 (use-modules (guix build utils)) 1210 #~(begin
1119 1211 (use-modules (guix build utils))
1120 (define rules.d 1212
1121 (string-append #$output "/lib/udev/rules.d")) 1213 (define rules.d
1122 1214 (string-append #$output "/lib/udev/rules.d"))
1123 (mkdir-p rules.d) 1215
1124 (call-with-output-file 1216 (mkdir-p rules.d)
1125 (string-append rules.d "/" #$file-name) 1217 (call-with-output-file
1126 (lambda (port) 1218 (string-append rules.d "/" #$file-name)
1127 (display #$contents port)))) 1219 (lambda (port)
1128 #:modules '((guix build utils)))) 1220 (display #$contents port)))))))
1129 1221
1130(define kvm-udev-rule 1222(define kvm-udev-rule
1131 ;; Return a directory with a udev rule that changes the group of /dev/kvm to 1223 ;; Return a directory with a udev rule that changes the group of /dev/kvm to
diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm
index 9a4a13d41df..6ef13568efe 100644
--- a/gnu/services/dbus.scm
+++ b/gnu/services/dbus.scm
@@ -46,26 +46,27 @@
46 "Return the system service directory, containing @code{.service} files for 46 "Return the system service directory, containing @code{.service} files for
47all the services that may be activated by the daemon." 47all the services that may be activated by the daemon."
48 (computed-file "dbus-system-services" 48 (computed-file "dbus-system-services"
49 #~(begin 49 (with-imported-modules '((guix build utils))
50 (use-modules (guix build utils) 50 #~(begin
51 (srfi srfi-1)) 51 (use-modules (guix build utils)
52 52 (srfi srfi-1))
53 (define files 53
54 (append-map (lambda (service) 54 (define files
55 (find-files (string-append 55 (append-map (lambda (service)
56 service 56 (find-files
57 "/share/dbus-1/system-services") 57 (string-append
58 "\\.service$")) 58 service
59 (list #$@services))) 59 "/share/dbus-1/system-services")
60 60 "\\.service$"))
61 (mkdir #$output) 61 (list #$@services)))
62 (for-each (lambda (file) 62
63 (symlink file 63 (mkdir #$output)
64 (string-append #$output "/" 64 (for-each (lambda (file)
65 (basename file)))) 65 (symlink file
66 files) 66 (string-append #$output "/"
67 #t) 67 (basename file))))
68 #:modules '((guix build utils)))) 68 files)
69 #t))))
69 70
70(define (dbus-configuration-directory services) 71(define (dbus-configuration-directory services)
71 "Return a directory contains the @code{system-local.conf} file for DBUS that 72 "Return a directory contains the @code{system-local.conf} file for DBUS that
@@ -168,7 +169,8 @@ includes the @code{etc/dbus-1/system.d} directories of each package listed in
168 (requirement '(user-processes)) 169 (requirement '(user-processes))
169 (start #~(make-forkexec-constructor 170 (start #~(make-forkexec-constructor
170 (list (string-append #$dbus "/bin/dbus-daemon") 171 (list (string-append #$dbus "/bin/dbus-daemon")
171 "--nofork" "--system"))) 172 "--nofork" "--system")
173 #:pid-file "/var/run/dbus/pid"))
172 (stop #~(make-kill-destructor))))))) 174 (stop #~(make-kill-destructor)))))))
173 175
174(define dbus-root-service-type 176(define dbus-root-service-type
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index 2fb08cd1b33..86214a73bf2 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -91,30 +91,33 @@ is set to @var{value} when the bus daemon launches it."
91 (string-append #$service "/" #$program) 91 (string-append #$service "/" #$program)
92 (cdr (command-line)))))) 92 (cdr (command-line))))))
93 93
94 (define build
95 (with-imported-modules '((guix build utils))
96 #~(begin
97 (use-modules (guix build utils))
98
99 (define service-directory
100 "/share/dbus-1/system-services")
101
102 (mkdir-p (dirname (string-append #$output
103 service-directory)))
104 (copy-recursively (string-append #$service
105 service-directory)
106 (string-append #$output
107 service-directory))
108 (symlink (string-append #$service "/etc") ;for etc/dbus-1
109 (string-append #$output "/etc"))
110
111 (for-each (lambda (file)
112 (substitute* file
113 (("Exec[[:blank:]]*=[[:blank:]]*([[:graph:]]+)(.*)$"
114 _ original-program arguments)
115 (string-append "Exec=" #$wrapper arguments
116 "\n"))))
117 (find-files #$output "\\.service$")))))
118
94 (computed-file (string-append (package-name service) "-wrapper") 119 (computed-file (string-append (package-name service) "-wrapper")
95 #~(begin 120 build))
96 (use-modules (guix build utils))
97
98 (define service-directory
99 "/share/dbus-1/system-services")
100
101 (mkdir-p (dirname (string-append #$output
102 service-directory)))
103 (copy-recursively (string-append #$service
104 service-directory)
105 (string-append #$output
106 service-directory))
107 (symlink (string-append #$service "/etc") ;for etc/dbus-1
108 (string-append #$output "/etc"))
109
110 (for-each (lambda (file)
111 (substitute* file
112 (("Exec[[:blank:]]*=[[:blank:]]*([[:graph:]]+)(.*)$"
113 _ original-program arguments)
114 (string-append "Exec=" #$wrapper arguments
115 "\n"))))
116 (find-files #$output "\\.service$")))
117 #:modules '((guix build utils))))
118 121
119 122
120;;; 123;;;
@@ -408,15 +411,15 @@ Users need to be in the @code{lp} group to access the D-Bus service.
408(define (polkit-directory packages) 411(define (polkit-directory packages)
409 "Return a directory containing an @file{actions} and possibly a 412 "Return a directory containing an @file{actions} and possibly a
410@file{rules.d} sub-directory, for use as @file{/etc/polkit-1}." 413@file{rules.d} sub-directory, for use as @file{/etc/polkit-1}."
411 (computed-file "etc-polkit-1" 414 (with-imported-modules '((guix build union))
412 #~(begin 415 (computed-file "etc-polkit-1"
413 (use-modules (guix build union) (srfi srfi-26)) 416 #~(begin
414 417 (use-modules (guix build union) (srfi srfi-26))
415 (union-build #$output 418
416 (map (cut string-append <> 419 (union-build #$output
417 "/share/polkit-1") 420 (map (cut string-append <>
418 (list #$@packages)))) 421 "/share/polkit-1")
419 #:modules '((guix build union)))) 422 (list #$@packages)))))))
420 423
421(define polkit-etc-files 424(define polkit-etc-files
422 (match-lambda 425 (match-lambda
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index af2a60936b0..a77ed3bb80b 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -1,5 +1,5 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> 3;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
4;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> 4;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
5;;; 5;;;
@@ -345,39 +345,39 @@ keep the system clock synchronized with that of @var{servers}."
345 (($ <tor-configuration> tor config-file services) 345 (($ <tor-configuration> tor config-file services)
346 (computed-file 346 (computed-file
347 "torrc" 347 "torrc"
348 #~(begin 348 (with-imported-modules '((guix build utils))
349 (use-modules (guix build utils) 349 #~(begin
350 (ice-9 match)) 350 (use-modules (guix build utils)
351 351 (ice-9 match))
352 (call-with-output-file #$output 352
353 (lambda (port) 353 (call-with-output-file #$output
354 (display "\ 354 (lambda (port)
355 (display "\
355# The beginning was automatically added. 356# The beginning was automatically added.
356User tor 357User tor
357DataDirectory /var/lib/tor 358DataDirectory /var/lib/tor
358Log notice syslog\n" port) 359Log notice syslog\n" port)
359 360
360 (for-each (match-lambda 361 (for-each (match-lambda
361 ((service (ports hosts) ...) 362 ((service (ports hosts) ...)
362 (format port "\ 363 (format port "\
363HiddenServiceDir /var/lib/tor/hidden-services/~a~%" 364HiddenServiceDir /var/lib/tor/hidden-services/~a~%"
364 service) 365 service)
365 (for-each (lambda (tcp-port host) 366 (for-each (lambda (tcp-port host)
366 (format port "\ 367 (format port "\
367HiddenServicePort ~a ~a~%" 368HiddenServicePort ~a ~a~%"
368 tcp-port host)) 369 tcp-port host))
369 ports hosts))) 370 ports hosts)))
370 '#$(map (match-lambda 371 '#$(map (match-lambda
371 (($ <hidden-service> name mapping) 372 (($ <hidden-service> name mapping)
372 (cons name mapping))) 373 (cons name mapping)))
373 services)) 374 services))
374 375
375 ;; Append the user's config file. 376 ;; Append the user's config file.
376 (call-with-input-file #$config-file 377 (call-with-input-file #$config-file
377 (lambda (input) 378 (lambda (input)
378 (dump-port input port))) 379 (dump-port input port)))
379 #t))) 380 #t))))))))
380 #:modules '((guix build utils))))))
381 381
382(define (tor-shepherd-service config) 382(define (tor-shepherd-service config)
383 "Return a <shepherd-service> running TOR." 383 "Return a <shepherd-service> running TOR."
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm
index 5d829e4c38e..a14f51592a6 100644
--- a/gnu/services/shepherd.scm
+++ b/gnu/services/shepherd.scm
@@ -47,9 +47,7 @@
47 shepherd-service-stop 47 shepherd-service-stop
48 shepherd-service-auto-start? 48 shepherd-service-auto-start?
49 shepherd-service-modules 49 shepherd-service-modules
50 shepherd-service-imported-modules
51 50
52 %default-imported-modules
53 %default-modules 51 %default-modules
54 52
55 shepherd-service-file 53 shepherd-service-file
@@ -138,9 +136,7 @@ for a service that extends SHEPHERD-ROOT-SERVICE-TYPE and nothing else."
138 (auto-start? shepherd-service-auto-start? ;Boolean 136 (auto-start? shepherd-service-auto-start? ;Boolean
139 (default #t)) 137 (default #t))
140 (modules shepherd-service-modules ;list of module names 138 (modules shepherd-service-modules ;list of module names
141 (default %default-modules)) 139 (default %default-modules)))
142 (imported-modules shepherd-service-imported-modules ;list of module names
143 (default %default-imported-modules)))
144 140
145(define (shepherd-service-canonical-name service) 141(define (shepherd-service-canonical-name service)
146 "Return the 'canonical name' of SERVICE." 142 "Return the 'canonical name' of SERVICE."
@@ -179,7 +175,7 @@ assertion failure."
179 (&message 175 (&message
180 (message 176 (message
181 (format #f (_ "service '~a' requires '~a', \ 177 (format #f (_ "service '~a' requires '~a', \
182which is undefined") 178which is not provided by any service")
183 (match (shepherd-service-provision service) 179 (match (shepherd-service-provision service)
184 ((head . _) head) 180 ((head . _) head)
185 (_ service)) 181 (_ service))
@@ -203,37 +199,26 @@ stored."
203(define (shepherd-service-file service) 199(define (shepherd-service-file service)
204 "Return a file defining SERVICE." 200 "Return a file defining SERVICE."
205 (gexp->file (shepherd-service-file-name service) 201 (gexp->file (shepherd-service-file-name service)
206 #~(begin 202 (with-imported-modules %default-imported-modules
207 (use-modules #$@(shepherd-service-modules service)) 203 #~(begin
208 204 (use-modules #$@(shepherd-service-modules service))
209 (make <service> 205
210 #:docstring '#$(shepherd-service-documentation service) 206 (make <service>
211 #:provides '#$(shepherd-service-provision service) 207 #:docstring '#$(shepherd-service-documentation service)
212 #:requires '#$(shepherd-service-requirement service) 208 #:provides '#$(shepherd-service-provision service)
213 #:respawn? '#$(shepherd-service-respawn? service) 209 #:requires '#$(shepherd-service-requirement service)
214 #:start #$(shepherd-service-start service) 210 #:respawn? '#$(shepherd-service-respawn? service)
215 #:stop #$(shepherd-service-stop service))))) 211 #:start #$(shepherd-service-start service)
212 #:stop #$(shepherd-service-stop service))))))
216 213
217(define (shepherd-configuration-file services) 214(define (shepherd-configuration-file services)
218 "Return the shepherd configuration file for SERVICES." 215 "Return the shepherd configuration file for SERVICES."
219 (define modules
220 (delete-duplicates
221 (append-map shepherd-service-imported-modules services)))
222
223 (assert-valid-graph services) 216 (assert-valid-graph services)
224 217
225 (mlet %store-monad ((modules (imported-modules modules)) 218 (mlet %store-monad ((files (mapm %store-monad
226 (compiled (compiled-modules modules)) 219 shepherd-service-file services)))
227 (files (mapm %store-monad
228 shepherd-service-file
229 services)))
230 (define config 220 (define config
231 #~(begin 221 #~(begin
232 (eval-when (expand load eval)
233 (set! %load-path (cons #$modules %load-path))
234 (set! %load-compiled-path
235 (cons #$compiled %load-compiled-path)))
236
237 (use-modules (srfi srfi-34) 222 (use-modules (srfi srfi-34)
238 (system repl error-handling)) 223 (system repl error-handling))
239 224
diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm
index 33e1951a6e7..743b5e3805a 100644
--- a/gnu/services/ssh.scm
+++ b/gnu/services/ssh.scm
@@ -1,5 +1,6 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2016 David Craven <david@craven.ch>
3;;; 4;;;
4;;; This file is part of GNU Guix. 5;;; This file is part of GNU Guix.
5;;; 6;;;
@@ -17,14 +18,19 @@
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. 18;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18 19
19(define-module (gnu services ssh) 20(define-module (gnu services ssh)
20 #:use-module (guix gexp) 21 #:use-module (gnu packages ssh)
21 #:use-module (guix records)
22 #:use-module (gnu services) 22 #:use-module (gnu services)
23 #:use-module (gnu services shepherd) 23 #:use-module (gnu services shepherd)
24 #:use-module (gnu system pam) 24 #:use-module (gnu system pam)
25 #:use-module (gnu packages lsh) 25 #:use-module (guix gexp)
26 #:use-module (guix records)
26 #:use-module (srfi srfi-26) 27 #:use-module (srfi srfi-26)
27 #:export (lsh-service)) 28 #:export (lsh-service
29
30 dropbear-configuration
31 dropbear-configuration?
32 dropbear-service-type
33 dropbear-service))
28 34
29;;; Commentary: 35;;; Commentary:
30;;; 36;;;
@@ -235,4 +241,85 @@ The other options should be self-descriptive."
235 public-key-authentication?) 241 public-key-authentication?)
236 (initialize? initialize?)))) 242 (initialize? initialize?))))
237 243
244
245;;;
246;;; Dropbear.
247;;;
248
249(define-record-type* <dropbear-configuration>
250 dropbear-configuration make-dropbear-configuration
251 dropbear-configuration?
252 (dropbear dropbear-configuration-dropbear
253 (default dropbear))
254 (port-number dropbear-configuration-port-number
255 (default 22))
256 (syslog-output? dropbear-configuration-syslog-output?
257 (default #t))
258 (pid-file dropbear-configuration-pid-file
259 (default "/var/run/dropbear.pid"))
260 (root-login? dropbear-configuration-root-login?
261 (default #f))
262 (allow-empty-passwords? dropbear-configuration-allow-empty-passwords?
263 (default #f))
264 (password-authentication? dropbear-configuration-password-authentication?
265 (default #t)))
266
267(define (dropbear-activation config)
268 "Return the activation gexp for CONFIG."
269 #~(begin
270 (mkdir-p "/etc/dropbear")))
271
272(define (dropbear-shepherd-service config)
273 "Return a <shepherd-service> for dropbear with CONFIG."
274 (define dropbear
275 (dropbear-configuration-dropbear config))
276
277 (define pid-file
278 (dropbear-configuration-pid-file config))
279
280 (define dropbear-command
281 #~(list (string-append #$dropbear "/sbin/dropbear")
282
283 ;; '-R' allows host keys to be automatically generated upon first
284 ;; connection, at a time when /dev/urandom is more likely securely
285 ;; seeded.
286 "-F" "-R"
287
288 "-p" #$(number->string (dropbear-configuration-port-number config))
289 "-P" #$pid-file
290 #$@(if (dropbear-configuration-syslog-output? config) '() '("-E"))
291 #$@(if (dropbear-configuration-root-login? config) '() '("-w"))
292 #$@(if (dropbear-configuration-password-authentication? config)
293 '()
294 '("-s" "-g"))
295 #$@(if (dropbear-configuration-allow-empty-passwords? config)
296 '("-B")
297 '())))
298
299 (define requires
300 (if (dropbear-configuration-syslog-output? config)
301 '(networking syslogd) '(networking)))
302
303 (list (shepherd-service
304 (documentation "Dropbear SSH server.")
305 (requirement requires)
306 (provision '(ssh-daemon))
307 (start #~(make-forkexec-constructor #$dropbear-command
308 #:pid-file #$pid-file))
309 (stop #~(make-kill-destructor)))))
310
311(define dropbear-service-type
312 (service-type (name 'dropbear)
313 (extensions
314 (list (service-extension shepherd-root-service-type
315 dropbear-shepherd-service)
316 (service-extension activation-service-type
317 dropbear-activation)))))
318
319(define* (dropbear-service #:optional (config (dropbear-configuration)))
320 "Run the @uref{https://matt.ucc.asn.au/dropbear/dropbear.html,Dropbear SSH
321daemon} with the given @var{config}, a @code{<dropbear-configuration>}
322object."
323 (service dropbear-service-type config))
324
238;;; ssh.scm ends here 325;;; ssh.scm ends here
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index 0e17f6e5c61..72ef7d4050a 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -1,6 +1,7 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 David Thompson <davet@gnu.org> 2;;; Copyright © 2015 David Thompson <davet@gnu.org>
3;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org> 3;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
4;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
4;;; 5;;;
5;;; This file is part of GNU Guix. 6;;; This file is part of GNU Guix.
6;;; 7;;;
@@ -114,7 +115,7 @@
114 (default-nginx-config log-directory run-directory))) 115 (default-nginx-config log-directory run-directory)))
115 "Return a service that runs NGINX, the nginx web server. 116 "Return a service that runs NGINX, the nginx web server.
116 117
117The nginx daemon loads its runtime configuration from CONFIG-FIGLE, stores log 118The nginx daemon loads its runtime configuration from CONFIG-FILE, stores log
118files in LOG-DIRECTORY, and stores temporary runtime files in RUN-DIRECTORY." 119files in LOG-DIRECTORY, and stores temporary runtime files in RUN-DIRECTORY."
119 (service nginx-service-type 120 (service nginx-service-type
120 (nginx-configuration 121 (nginx-configuration
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 9908b9526bc..44d12a7e77a 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -158,27 +158,27 @@ EndSection
158 "Return a directory that contains the @code{.conf} files for X.org that 158 "Return a directory that contains the @code{.conf} files for X.org that
159includes the @code{share/X11/xorg.conf.d} directories of each package listed 159includes the @code{share/X11/xorg.conf.d} directories of each package listed
160in @var{modules}." 160in @var{modules}."
161 (computed-file "xorg.conf.d" 161 (with-imported-modules '((guix build utils))
162 #~(begin 162 (computed-file "xorg.conf.d"
163 (use-modules (guix build utils) 163 #~(begin
164 (srfi srfi-1)) 164 (use-modules (guix build utils)
165 165 (srfi srfi-1))
166 (define files 166
167 (append-map (lambda (module) 167 (define files
168 (find-files (string-append 168 (append-map (lambda (module)
169 module 169 (find-files (string-append
170 "/share/X11/xorg.conf.d") 170 module
171 "\\.conf$")) 171 "/share/X11/xorg.conf.d")
172 (list #$@modules))) 172 "\\.conf$"))
173 173 (list #$@modules)))
174 (mkdir #$output) 174
175 (for-each (lambda (file) 175 (mkdir #$output)
176 (symlink file 176 (for-each (lambda (file)
177 (string-append #$output "/" 177 (symlink file
178 (basename file)))) 178 (string-append #$output "/"
179 files) 179 (basename file))))
180 #t) 180 files)
181 #:modules '((guix build utils)))) 181 #t))))
182 182
183(define* (xorg-start-command #:key 183(define* (xorg-start-command #:key
184 (guile (canonical-package guile-2.0)) 184 (guile (canonical-package guile-2.0))
diff --git a/gnu/system.scm b/gnu/system.scm
index 96ea153cd06..476720b9f9b 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -81,6 +81,8 @@
81 operating-system-mapped-devices 81 operating-system-mapped-devices
82 operating-system-file-systems 82 operating-system-file-systems
83 operating-system-store-file-system 83 operating-system-store-file-system
84 operating-system-user-mapped-devices
85 operating-system-boot-mapped-devices
84 operating-system-activation-script 86 operating-system-activation-script
85 operating-system-user-accounts 87 operating-system-user-accounts
86 operating-system-shepherd-service-names 88 operating-system-shepherd-service-names
@@ -208,8 +210,9 @@ as 'needed-for-boot'."
208 "Return a file system among FILE-SYSTEMS that uses DEVICE, or #f." 210 "Return a file system among FILE-SYSTEMS that uses DEVICE, or #f."
209 (let ((target (string-append "/dev/mapper/" (mapped-device-target device)))) 211 (let ((target (string-append "/dev/mapper/" (mapped-device-target device))))
210 (find (lambda (fs) 212 (find (lambda (fs)
211 (and (eq? 'device (file-system-title fs)) 213 (or (member device (file-system-dependencies fs))
212 (string=? (file-system-device fs) target))) 214 (and (eq? 'device (file-system-title fs))
215 (string=? (file-system-device fs) target))))
213 file-systems))) 216 file-systems)))
214 217
215(define (operating-system-user-mapped-devices os) 218(define (operating-system-user-mapped-devices os)
@@ -731,7 +734,8 @@ this file is the reconstruction of GRUB menu entries for old configurations."
731 (kernel #$(operating-system-kernel os)) 734 (kernel #$(operating-system-kernel os))
732 (kernel-arguments 735 (kernel-arguments
733 #$(operating-system-kernel-arguments os)) 736 #$(operating-system-kernel-arguments os))
734 (initrd #$initrd))))) 737 (initrd #$initrd))
738 #:set-load-path? #f)))
735 739
736 740
737;;; 741;;;
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index de14f6fb4c7..734a361c375 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -1,6 +1,7 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> 3;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
4;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
4;;; 5;;;
5;;; This file is part of GNU Guix. 6;;; This file is part of GNU Guix.
6;;; 7;;;
@@ -55,52 +56,53 @@ under /root/.guix-profile where GUIX is installed."
55 (manifest 56 (manifest
56 (list (package->manifest-entry guix)))))) 57 (list (package->manifest-entry guix))))))
57 (define build 58 (define build
58 #~(begin 59 (with-imported-modules '((guix build utils)
59 (use-modules (guix build utils) 60 (guix build store-copy)
60 (gnu build install)) 61 (gnu build install))
61 62 #~(begin
62 (define %root "root") 63 (use-modules (guix build utils)
63 64 (gnu build install))
64 (setenv "PATH" 65
65 (string-append #$guix "/sbin:" #$tar "/bin:" #$xz "/bin")) 66 (define %root "root")
66 67
67 ;; Note: there is not much to gain here with deduplication and there 68 (setenv "PATH"
68 ;; is the overhead of the '.links' directory, so turn it off. 69 (string-append #$guix "/sbin:" #$tar "/bin:" #$xz "/bin"))
69 (populate-single-profile-directory %root 70
70 #:profile #$profile 71 ;; Note: there is not much to gain here with deduplication and
71 #:closure "profile" 72 ;; there is the overhead of the '.links' directory, so turn it
72 #:deduplicate? #f) 73 ;; off.
73 74 (populate-single-profile-directory %root
74 ;; Create the tarball. Use GNU format so there's no file name 75 #:profile #$profile
75 ;; length limitation. 76 #:closure "profile"
76 (with-directory-excursion %root 77 #:deduplicate? #f)
77 (zero? (system* "tar" "--xz" "--format=gnu" 78
78 79 ;; Create the tarball. Use GNU format so there's no file name
79 ;; Avoid non-determinism in the archive. Use 80 ;; length limitation.
80 ;; mtime = 1, not zero, because that is what the 81 (with-directory-excursion %root
81 ;; daemon does for files in the store (see the 82 (zero? (system* "tar" "--xz" "--format=gnu"
82 ;; 'mtimeStore' constant in local-store.cc.) 83
83 "--sort=name" 84 ;; Avoid non-determinism in the archive. Use
84 "--mtime=@1" ;for files in /var/guix 85 ;; mtime = 1, not zero, because that is what the
85 "--owner=root:0" 86 ;; daemon does for files in the store (see the
86 "--group=root:0" 87 ;; 'mtimeStore' constant in local-store.cc.)
87 88 "--sort=name"
88 "--check-links" 89 "--mtime=@1" ;for files in /var/guix
89 "-cvf" #$output 90 "--owner=root:0"
90 ;; Avoid adding / and /var to the tarball, 91 "--group=root:0"
91 ;; so that the ownership and permissions of those 92
92 ;; directories will not be overwritten when 93 "--check-links"
93 ;; extracting the archive. Do not include /root 94 "-cvf" #$output
94 ;; because the root account might have a different 95 ;; Avoid adding / and /var to the tarball, so
95 ;; home directory. 96 ;; that the ownership and permissions of those
96 "./var/guix" 97 ;; directories will not be overwritten when
97 (string-append "." (%store-directory))))))) 98 ;; extracting the archive. Do not include /root
99 ;; because the root account might have a
100 ;; different home directory.
101 "./var/guix"
102 (string-append "." (%store-directory))))))))
98 103
99 (gexp->derivation "guix-tarball.tar.xz" build 104 (gexp->derivation "guix-tarball.tar.xz" build
100 #:references-graphs `(("profile" ,profile)) 105 #:references-graphs `(("profile" ,profile)))))
101 #:modules '((guix build utils)
102 (guix build store-copy)
103 (gnu build install)))))
104 106
105 107
106(define (log-to-info) 108(define (log-to-info)
@@ -212,20 +214,20 @@ the user's target storage device rather than on the RAM disk."
212 214
213 (define directory 215 (define directory
214 (computed-file "configuration-templates" 216 (computed-file "configuration-templates"
215 #~(begin 217 (with-imported-modules '((guix build utils))
216 (mkdir #$output) 218 #~(begin
217 (for-each (lambda (file target) 219 (mkdir #$output)
218 (copy-file file 220 (for-each (lambda (file target)
219 (string-append #$output "/" 221 (copy-file file
220 target))) 222 (string-append #$output "/"
221 '(#$(file "bare-bones.tmpl") 223 target)))
222 #$(file "desktop.tmpl") 224 '(#$(file "bare-bones.tmpl")
223 #$(file "lightweight-desktop.tmpl")) 225 #$(file "desktop.tmpl")
224 '("bare-bones.scm" 226 #$(file "lightweight-desktop.tmpl"))
225 "desktop.scm" 227 '("bare-bones.scm"
226 "lightweight-desktop.scm")) 228 "desktop.scm"
227 #t) 229 "lightweight-desktop.scm"))
228 #:modules '((guix build utils)))) 230 #t))))
229 231
230 `(("configuration" ,directory))) 232 `(("configuration" ,directory)))
231 233
@@ -391,6 +393,7 @@ Use Alt-F2 for documentation.
391 parted ddrescue 393 parted ddrescue
392 grub ;mostly so xrefs to its manual work 394 grub ;mostly so xrefs to its manual work
393 cryptsetup 395 cryptsetup
396 mdadm
394 btrfs-progs 397 btrfs-progs
395 wireless-tools iw wpa-supplicant-minimal iproute 398 wireless-tools iw wpa-supplicant-minimal iproute
396 ;; XXX: We used to have GNU fdisk here, but as of version 399 ;; XXX: We used to have GNU fdisk here, but as of version
diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm
index 3acc579a6b9..d3c0036f47b 100644
--- a/gnu/system/linux-container.scm
+++ b/gnu/system/linux-container.scm
@@ -87,30 +87,29 @@ that will be shared with the host system."
87 #:container? #t))) 87 #:container? #t)))
88 88
89 (define script 89 (define script
90 #~(begin 90 (with-imported-modules '((guix config)
91 (use-modules (gnu build linux-container) 91 (guix utils)
92 (guix build utils)) 92 (guix combinators)
93 (guix build utils)
94 (guix build syscalls)
95 (guix build bournish)
96 (gnu build file-systems)
97 (gnu build linux-container))
98 #~(begin
99 (use-modules (gnu build linux-container)
100 (guix build utils))
93 101
94 (call-with-container '#$specs 102 (call-with-container '#$specs
95 (lambda () 103 (lambda ()
96 (setenv "HOME" "/root") 104 (setenv "HOME" "/root")
97 (setenv "TMPDIR" "/tmp") 105 (setenv "TMPDIR" "/tmp")
98 (setenv "GUIX_NEW_SYSTEM" #$os-drv) 106 (setenv "GUIX_NEW_SYSTEM" #$os-drv)
99 (for-each mkdir-p '("/run" "/bin" "/etc" "/home" "/var")) 107 (for-each mkdir-p '("/run" "/bin" "/etc" "/home" "/var"))
100 (primitive-load (string-append #$os-drv "/boot"))) 108 (primitive-load (string-append #$os-drv "/boot")))
101 ;; A range of 65536 uid/gids is used to cover 16 bits worth of 109 ;; A range of 65536 uid/gids is used to cover 16 bits worth of
102 ;; users and groups, which is sufficient for most cases. 110 ;; users and groups, which is sufficient for most cases.
103 ;; 111 ;;
104 ;; See: http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html#--private-users= 112 ;; See: http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html#--private-users=
105 #:host-uids 65536))) 113 #:host-uids 65536))))
106 114
107 (gexp->script "run-container" script 115 (gexp->script "run-container" script))))
108 #:modules '((ice-9 match)
109 (srfi srfi-98)
110 (guix config)
111 (guix utils)
112 (guix build utils)
113 (guix build syscalls)
114 (guix build bournish)
115 (gnu build file-systems)
116 (gnu build linux-container))))))
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index 484bce71c46..bbaa5c0f893 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -1,6 +1,7 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2016 Mark H Weaver <mhw@netris.org> 3;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
4;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
4;;; 5;;;
5;;; This file is part of GNU Guix. 6;;; This file is part of GNU Guix.
6;;; 7;;;
@@ -54,85 +55,81 @@
54 (guile %guile-static-stripped) 55 (guile %guile-static-stripped)
55 (gzip gzip) 56 (gzip gzip)
56 (name "guile-initrd") 57 (name "guile-initrd")
57 (system (%current-system)) 58 (system (%current-system)))
58 (modules '()))
59 "Return a derivation that builds a Linux initrd (a gzipped cpio archive) 59 "Return a derivation that builds a Linux initrd (a gzipped cpio archive)
60containing GUILE and that evaluates EXP, a G-expression, upon booting. All 60containing GUILE and that evaluates EXP, a G-expression, upon booting. All
61the derivations referenced by EXP are automatically copied to the initrd. 61the derivations referenced by EXP are automatically copied to the initrd."
62
63MODULES is a list of Guile module names to be embedded in the initrd."
64 62
65 ;; General Linux overview in `Documentation/early-userspace/README' and 63 ;; General Linux overview in `Documentation/early-userspace/README' and
66 ;; `Documentation/filesystems/ramfs-rootfs-initramfs.txt'. 64 ;; `Documentation/filesystems/ramfs-rootfs-initramfs.txt'.
67 65
68 (mlet %store-monad ((init (gexp->script "init" exp 66 (mlet %store-monad ((init (gexp->script "init" exp
69 #:modules modules
70 #:guile guile))) 67 #:guile guile)))
71 (define builder 68 (define builder
72 #~(begin 69 (with-imported-modules '((guix cpio)
73 (use-modules (gnu build linux-initrd)) 70 (guix build utils)
71 (guix build store-copy)
72 (gnu build linux-initrd))
73 #~(begin
74 (use-modules (gnu build linux-initrd))
74 75
75 (mkdir #$output) 76 (mkdir #$output)
76 (build-initrd (string-append #$output "/initrd") 77 (build-initrd (string-append #$output "/initrd")
77 #:guile #$guile 78 #:guile #$guile
78 #:init #$init 79 #:init #$init
79 ;; Copy everything INIT refers to into the initrd. 80 ;; Copy everything INIT refers to into the initrd.
80 #:references-graphs '("closure") 81 #:references-graphs '("closure")
81 #:gzip (string-append #$gzip "/bin/gzip")))) 82 #:gzip (string-append #$gzip "/bin/gzip")))))
82 83
83 (gexp->derivation name builder 84 (gexp->derivation name builder
84 #:modules '((guix cpio) 85 #:references-graphs `(("closure" ,init)))))
85 (guix build utils)
86 (guix build store-copy)
87 (gnu build linux-initrd))
88 #:references-graphs `(("closure" ,init)))))
89 86
90(define (flat-linux-module-directory linux modules) 87(define (flat-linux-module-directory linux modules)
91 "Return a flat directory containing the Linux kernel modules listed in 88 "Return a flat directory containing the Linux kernel modules listed in
92MODULES and taken from LINUX." 89MODULES and taken from LINUX."
93 (define build-exp 90 (define build-exp
94 #~(begin 91 (with-imported-modules '((guix build utils)
95 (use-modules (ice-9 match) (ice-9 regex) 92 (guix elf)
96 (srfi srfi-1) 93 (gnu build linux-modules))
97 (guix build utils) 94 #~(begin
98 (gnu build linux-modules)) 95 (use-modules (ice-9 match) (ice-9 regex)
96 (srfi srfi-1)
97 (guix build utils)
98 (gnu build linux-modules))
99 99
100 (define (string->regexp str) 100 (define (string->regexp str)
101 ;; Return a regexp that matches STR exactly. 101 ;; Return a regexp that matches STR exactly.
102 (string-append "^" (regexp-quote str) "$")) 102 (string-append "^" (regexp-quote str) "$"))
103 103
104 (define module-dir 104 (define module-dir
105 (string-append #$linux "/lib/modules")) 105 (string-append #$linux "/lib/modules"))
106 106
107 (define (lookup module) 107 (define (lookup module)
108 (let ((name (ensure-dot-ko module))) 108 (let ((name (ensure-dot-ko module)))
109 (match (find-files module-dir (string->regexp name)) 109 (match (find-files module-dir (string->regexp name))
110 ((file) 110 ((file)
111 file) 111 file)
112 (() 112 (()
113 (error "module not found" name module-dir)) 113 (error "module not found" name module-dir))
114 ((_ ...) 114 ((_ ...)
115 (error "several modules by that name" 115 (error "several modules by that name"
116 name module-dir))))) 116 name module-dir)))))
117 117
118 (define modules 118 (define modules
119 (let ((modules (map lookup '#$modules))) 119 (let ((modules (map lookup '#$modules)))
120 (append modules 120 (append modules
121 (recursive-module-dependencies modules 121 (recursive-module-dependencies modules
122 #:lookup-module lookup)))) 122 #:lookup-module lookup))))
123 123
124 (mkdir #$output) 124 (mkdir #$output)
125 (for-each (lambda (module) 125 (for-each (lambda (module)
126 (format #t "copying '~a'...~%" module) 126 (format #t "copying '~a'...~%" module)
127 (copy-file module 127 (copy-file module
128 (string-append #$output "/" 128 (string-append #$output "/"
129 (basename module)))) 129 (basename module))))
130 (delete-duplicates modules)))) 130 (delete-duplicates modules)))))
131 131
132 (gexp->derivation "linux-modules" build-exp 132 (gexp->derivation "linux-modules" build-exp))
133 #:modules '((guix build utils)
134 (guix elf)
135 (gnu build linux-modules))))
136 133
137(define* (base-initrd file-systems 134(define* (base-initrd file-systems
138 #:key 135 #:key
@@ -183,6 +180,7 @@ loaded at boot time in the order in which they appear."
183 "usb-storage" "uas" ;for the installation image etc. 180 "usb-storage" "uas" ;for the installation image etc.
184 "usbhid" "hid-generic" "hid-apple" ;keyboards during early boot 181 "usbhid" "hid-generic" "hid-apple" ;keyboards during early boot
185 "dm-crypt" "xts" "serpent_generic" "wp512" ;for encrypted root partitions 182 "dm-crypt" "xts" "serpent_generic" "wp512" ;for encrypted root partitions
183 "nvme" ;for new SSD NVMe devices
186 ,@(if (string-match "^(x86_64|i[3-6]86)-" (%current-system)) 184 ,@(if (string-match "^(x86_64|i[3-6]86)-" (%current-system))
187 '("pata_acpi" "pata_atiixp" ;for ATA controllers 185 '("pata_acpi" "pata_atiixp" ;for ATA controllers
188 "isci") ;for SAS controllers like Intel C602 186 "isci") ;for SAS controllers like Intel C602
@@ -225,38 +223,38 @@ loaded at boot time in the order in which they appear."
225 (mlet %store-monad ((kodir (flat-linux-module-directory linux 223 (mlet %store-monad ((kodir (flat-linux-module-directory linux
226 linux-modules))) 224 linux-modules)))
227 (expression->initrd 225 (expression->initrd
228 #~(begin 226 (with-imported-modules '((guix build bournish)
229 (use-modules (gnu build linux-boot) 227 (guix build utils)
230 (guix build utils) 228 (guix build syscalls)
231 (guix build bournish) ;add the 'bournish' meta-command 229 (gnu build linux-boot)
232 (srfi srfi-26) 230 (gnu build linux-modules)
231 (gnu build file-systems)
232 (guix elf))
233 #~(begin
234 (use-modules (gnu build linux-boot)
235 (guix build utils)
236 (guix build bournish) ;add the 'bournish' meta-command
237 (srfi srfi-26)
233 238
234 ;; FIXME: The following modules are for 239 ;; FIXME: The following modules are for
235 ;; LUKS-DEVICE-MAPPING. We should instead propagate 240 ;; LUKS-DEVICE-MAPPING. We should instead propagate
236 ;; this info via gexps. 241 ;; this info via gexps.
237 ((gnu build file-systems) 242 ((gnu build file-systems)
238 #:select (find-partition-by-luks-uuid)) 243 #:select (find-partition-by-luks-uuid))
239 (rnrs bytevectors)) 244 (rnrs bytevectors))
240 245
241 (with-output-to-port (%make-void-port "w") 246 (with-output-to-port (%make-void-port "w")
242 (lambda () 247 (lambda ()
243 (set-path-environment-variable "PATH" '("bin" "sbin") 248 (set-path-environment-variable "PATH" '("bin" "sbin")
244 '#$helper-packages))) 249 '#$helper-packages)))
245 250
246 (boot-system #:mounts '#$(map file-system->spec file-systems) 251 (boot-system #:mounts '#$(map file-system->spec file-systems)
247 #:pre-mount (lambda () 252 #:pre-mount (lambda ()
248 (and #$@device-mapping-commands)) 253 (and #$@device-mapping-commands))
249 #:linux-modules '#$linux-modules 254 #:linux-modules '#$linux-modules
250 #:linux-module-directory '#$kodir 255 #:linux-module-directory '#$kodir
251 #:qemu-guest-networking? #$qemu-networking? 256 #:qemu-guest-networking? #$qemu-networking?
252 #:volatile-root? '#$volatile-root?)) 257 #:volatile-root? '#$volatile-root?)))
253 #:name "base-initrd" 258 #:name "base-initrd")))
254 #:modules '((guix build bournish)
255 (guix build utils)
256 (guix build syscalls)
257 (gnu build linux-boot)
258 (gnu build linux-modules)
259 (gnu build file-systems)
260 (guix elf)))))
261 259
262;;; linux-initrd.scm ends here 260;;; linux-initrd.scm ends here
diff --git a/gnu/system/locale.scm b/gnu/system/locale.scm
index f9d713e0cfd..3bb9f950a84 100644
--- a/gnu/system/locale.scm
+++ b/gnu/system/locale.scm
@@ -154,10 +154,10 @@ data format changes between libc versions."
154 #:libc libc)) 154 #:libc libc))
155 libcs))) 155 libcs)))
156 (gexp->derivation "locale-multiple-versions" 156 (gexp->derivation "locale-multiple-versions"
157 #~(begin 157 (with-imported-modules '((guix build union))
158 (use-modules (guix build union)) 158 #~(begin
159 (union-build #$output (list #$@dirs))) 159 (use-modules (guix build union))
160 #:modules '((guix build union)) 160 (union-build #$output (list #$@dirs))))
161 #:local-build? #t 161 #:local-build? #t
162 #:substitutable? #f))))) 162 #:substitutable? #f)))))
163 163
diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm
index 450b4737acc..732f73cc4ba 100644
--- a/gnu/system/mapped-devices.scm
+++ b/gnu/system/mapped-devices.scm
@@ -85,9 +85,7 @@
85 (modules `((rnrs bytevectors) ;bytevector? 85 (modules `((rnrs bytevectors) ;bytevector?
86 ((gnu build file-systems) 86 ((gnu build file-systems)
87 #:select (find-partition-by-luks-uuid)) 87 #:select (find-partition-by-luks-uuid))
88 ,@%default-modules)) 88 ,@%default-modules)))))))
89 (imported-modules `((gnu build file-systems)
90 ,@%default-imported-modules)))))))
91 89
92(define (device-mapping-service mapped-device) 90(define (device-mapping-service mapped-device)
93 "Return a service that sets up @var{mapped-device}." 91 "Return a service that sets up @var{mapped-device}."
@@ -101,20 +99,22 @@
101(define (open-luks-device source target) 99(define (open-luks-device source target)
102 "Return a gexp that maps SOURCE to TARGET as a LUKS device, using 100 "Return a gexp that maps SOURCE to TARGET as a LUKS device, using
103'cryptsetup'." 101'cryptsetup'."
104 #~(let ((source #$source)) 102 (with-imported-modules '((gnu build file-systems)
105 (zero? (system* (string-append #$cryptsetup "/sbin/cryptsetup") 103 (guix build bournish))
106 "open" "--type" "luks" 104 #~(let ((source #$source))
107 105 (zero? (system* (string-append #$cryptsetup "/sbin/cryptsetup")
108 ;; Note: We cannot use the "UUID=source" syntax here 106 "open" "--type" "luks"
109 ;; because 'cryptsetup' implements it by searching the 107
110 ;; udev-populated /dev/disk/by-id directory but udev may 108 ;; Note: We cannot use the "UUID=source" syntax here
111 ;; be unavailable at the time we run this. 109 ;; because 'cryptsetup' implements it by searching the
112 (if (bytevector? source) 110 ;; udev-populated /dev/disk/by-id directory but udev may
113 (or (find-partition-by-luks-uuid source) 111 ;; be unavailable at the time we run this.
114 (error "LUKS partition not found" source)) 112 (if (bytevector? source)
115 source) 113 (or (find-partition-by-luks-uuid source)
116 114 (error "LUKS partition not found" source))
117 #$target)))) 115 source)
116
117 #$target)))))
118 118
119(define (close-luks-device source target) 119(define (close-luks-device source target)
120 "Return a gexp that closes TARGET, a LUKS device." 120 "Return a gexp that closes TARGET, a LUKS device."
diff --git a/gnu/system/pam.scm b/gnu/system/pam.scm
index 743039daf6c..cd7a3427ede 100644
--- a/gnu/system/pam.scm
+++ b/gnu/system/pam.scm
@@ -23,6 +23,7 @@
23 #:use-module (gnu services) 23 #:use-module (gnu services)
24 #:use-module (ice-9 match) 24 #:use-module (ice-9 match)
25 #:use-module (srfi srfi-1) 25 #:use-module (srfi srfi-1)
26 #:use-module (srfi srfi-9)
26 #:use-module (srfi srfi-11) 27 #:use-module (srfi srfi-11)
27 #:use-module (srfi srfi-26) 28 #:use-module (srfi srfi-26)
28 #:use-module ((guix utils) #:select (%current-system)) 29 #:use-module ((guix utils) #:select (%current-system))
@@ -38,6 +39,13 @@
38 pam-entry-module 39 pam-entry-module
39 pam-entry-arguments 40 pam-entry-arguments
40 41
42 pam-limits-entry
43 pam-limits-entry-domain
44 pam-limits-entry-type
45 pam-limits-entry-item
46 pam-limits-entry-value
47 pam-limits-entry->string
48
41 pam-services->directory 49 pam-services->directory
42 unix-pam-service 50 unix-pam-service
43 base-pam-services 51 base-pam-services
@@ -76,6 +84,59 @@
76 (arguments pam-entry-arguments ; list of string-valued g-expressions 84 (arguments pam-entry-arguments ; list of string-valued g-expressions
77 (default '()))) 85 (default '())))
78 86
87;; PAM limits entries are used by the pam_limits PAM module to set or override
88;; limits on system resources for user sessions. The format is specified
89;; here: http://linux-pam.org/Linux-PAM-html/sag-pam_limits.html
90(define-record-type <pam-limits-entry>
91 (make-pam-limits-entry domain type item value)
92 pam-limits-entry?
93 (domain pam-limits-entry-domain) ; string
94 (type pam-limits-entry-type) ; symbol
95 (item pam-limits-entry-item) ; symbol
96 (value pam-limits-entry-value)) ; symbol or number
97
98(define (pam-limits-entry domain type item value)
99 "Construct a pam-limits-entry ensuring that the provided values are valid."
100 (define (valid? value)
101 (case item
102 ((priority) (number? value))
103 ((nice) (and (number? value)
104 (>= value -20)
105 (<= value 19)))
106 (else (or (and (number? value)
107 (>= value -1))
108 (member value '(unlimited infinity))))))
109 (define items
110 (list 'core 'data 'fsize
111 'memlock 'nofile 'rss
112 'stack 'cpu 'nproc
113 'as 'maxlogins 'maxsyslogins
114 'priority 'locks 'sigpending
115 'msgqueue 'nice 'rtprio))
116 (when (not (member type '(hard soft both)))
117 (error "invalid limit type" type))
118 (when (not (member item items))
119 (error "invalid limit item" item))
120 (when (not (valid? value))
121 (error "invalid limit value" value))
122 (make-pam-limits-entry domain type item value))
123
124(define (pam-limits-entry->string entry)
125 "Convert a pam-limits-entry record to a string."
126 (match entry
127 (($ <pam-limits-entry> domain type item value)
128 (string-join (list domain
129 (if (eq? type 'both)
130 "-"
131 (symbol->string type))
132 (symbol->string item)
133 (cond
134 ((symbol? value)
135 (symbol->string value))
136 (else
137 (number->string value))))
138 " "))))
139
79(define (pam-service->configuration service) 140(define (pam-service->configuration service)
80 "Return the derivation building the configuration file for SERVICE, to be 141 "Return the derivation building the configuration file for SERVICE, to be
81dumped in /etc/pam.d/NAME, where NAME is the name of SERVICE." 142dumped in /etc/pam.d/NAME, where NAME is the name of SERVICE."
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index f09e8c24f2e..c3948900eb0 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -126,17 +126,19 @@
126 (name "nobody") 126 (name "nobody")
127 (uid 65534) 127 (uid 65534)
128 (group "nogroup") 128 (group "nogroup")
129 (home-directory "/var/empty") 129 (shell #~(string-append #$shadow "/sbin/nologin"))
130 (home-directory "/nonexistent")
130 (system? #t)))) 131 (system? #t))))
131 132
132(define (default-skeletons) 133(define (default-skeletons)
133 "Return the default skeleton files for /etc/skel. These files are copied by 134 "Return the default skeleton files for /etc/skel. These files are copied by
134'useradd' in the home directory of newly created user accounts." 135'useradd' in the home directory of newly created user accounts."
135 (define copy-guile-wm 136 (define copy-guile-wm
136 #~(begin 137 (with-imported-modules '((guix build utils))
137 (use-modules (guix build utils)) 138 #~(begin
138 (copy-file (car (find-files #$guile-wm "wm-init-sample.scm")) 139 (use-modules (guix build utils))
139 #$output))) 140 (copy-file (car (find-files #$guile-wm "wm-init-sample.scm"))
141 #$output))))
140 142
141 (let ((profile (plain-file "bash_profile" "\ 143 (let ((profile (plain-file "bash_profile" "\
142# Honor per-interactive-shell startup file 144# Honor per-interactive-shell startup file
@@ -170,8 +172,7 @@ alias ll='ls -l'\n"))
170 (zlogin (plain-file "zlogin" "\ 172 (zlogin (plain-file "zlogin" "\
171# Honor system-wide environment variables 173# Honor system-wide environment variables
172source /etc/profile\n")) 174source /etc/profile\n"))
173 (guile-wm (computed-file "guile-wm" copy-guile-wm 175 (guile-wm (computed-file "guile-wm" copy-guile-wm))
174 #:modules '((guix build utils))))
175 (xdefaults (plain-file "Xdefaults" "\ 176 (xdefaults (plain-file "Xdefaults" "\
176XTerm*utf8: always 177XTerm*utf8: always
177XTerm*metaSendsEscape: true\n")) 178XTerm*metaSendsEscape: true\n"))
@@ -188,22 +189,22 @@ set debug-file-directory ~/.guix-profile/lib/debug\n")))
188(define (skeleton-directory skeletons) 189(define (skeleton-directory skeletons)
189 "Return a directory containing SKELETONS, a list of name/derivation tuples." 190 "Return a directory containing SKELETONS, a list of name/derivation tuples."
190 (computed-file "skel" 191 (computed-file "skel"
191 #~(begin 192 (with-imported-modules '((guix build utils))
192 (use-modules (ice-9 match) 193 #~(begin
193 (guix build utils)) 194 (use-modules (ice-9 match)
194 195 (guix build utils))
195 (mkdir #$output) 196
196 (chdir #$output) 197 (mkdir #$output)
197 198 (chdir #$output)
198 ;; Note: copy the skeletons instead of symlinking 199
199 ;; them like 'file-union' does, because 'useradd' 200 ;; Note: copy the skeletons instead of symlinking
200 ;; would just copy the symlinks as is. 201 ;; them like 'file-union' does, because 'useradd'
201 (for-each (match-lambda 202 ;; would just copy the symlinks as is.
202 ((target source) 203 (for-each (match-lambda
203 (copy-recursively source target))) 204 ((target source)
204 '#$skeletons) 205 (copy-recursively source target)))
205 #t) 206 '#$skeletons)
206 #:modules '((guix build utils)))) 207 #t))))
207 208
208(define (assert-valid-users/groups users groups) 209(define (assert-valid-users/groups users groups)
209 "Raise an error if USERS refer to groups not listed in GROUPS." 210 "Raise an error if USERS refer to groups not listed in GROUPS."
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index 676e89df980..c31e3a80ef3 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -90,6 +90,21 @@
90 (options "trans=virtio") 90 (options "trans=virtio")
91 (check? #f)))) 91 (check? #f))))
92 92
93(define %vm-module-closure
94 ;; The closure of (gnu build vm), roughly.
95 ;; FIXME: Compute it automatically.
96 '((gnu build vm)
97 (gnu build install)
98 (gnu build linux-boot)
99 (gnu build linux-modules)
100 (gnu build file-systems)
101 (guix elf)
102 (guix records)
103 (guix build utils)
104 (guix build syscalls)
105 (guix build bournish)
106 (guix build store-copy)))
107
93(define* (expression->derivation-in-linux-vm name exp 108(define* (expression->derivation-in-linux-vm name exp
94 #:key 109 #:key
95 (system (%current-system)) 110 (system (%current-system))
@@ -97,18 +112,6 @@
97 initrd 112 initrd
98 (qemu qemu-minimal) 113 (qemu qemu-minimal)
99 (env-vars '()) 114 (env-vars '())
100 (modules
101 '((gnu build vm)
102 (gnu build install)
103 (gnu build linux-boot)
104 (gnu build linux-modules)
105 (gnu build file-systems)
106 (guix elf)
107 (guix records)
108 (guix build utils)
109 (guix build syscalls)
110 (guix build bournish)
111 (guix build store-copy)))
112 (guile-for-build 115 (guile-for-build
113 (%guile-for-build)) 116 (%guile-for-build))
114 117
@@ -128,23 +131,13 @@ When MAKE-DISK-IMAGE? is true, then create a QEMU disk image of type
128DISK-IMAGE-FORMAT (e.g., 'qcow2' or 'raw'), of DISK-IMAGE-SIZE bytes and 131DISK-IMAGE-FORMAT (e.g., 'qcow2' or 'raw'), of DISK-IMAGE-SIZE bytes and
129return it. 132return it.
130 133
131MODULES is the set of modules imported in the execution environment of EXP.
132
133When REFERENCES-GRAPHS is true, it must be a list of file name/store path 134When REFERENCES-GRAPHS is true, it must be a list of file name/store path
134pairs, as for `derivation'. The files containing the reference graphs are 135pairs, as for `derivation'. The files containing the reference graphs are
135made available under the /xchg CIFS share." 136made available under the /xchg CIFS share."
136 (mlet* %store-monad 137 (mlet* %store-monad
137 ((module-dir (imported-modules modules)) 138 ((user-builder (gexp->file "builder-in-linux-vm" exp))
138 (compiled (compiled-modules modules))
139 (user-builder (gexp->file "builder-in-linux-vm" exp))
140 (loader (gexp->file "linux-vm-loader" 139 (loader (gexp->file "linux-vm-loader"
141 #~(begin 140 #~(primitive-load #$user-builder)))
142 (set! %load-path
143 (cons #$module-dir %load-path))
144 (set! %load-compiled-path
145 (cons #$compiled
146 %load-compiled-path))
147 (primitive-load #$user-builder))))
148 (coreutils -> (canonical-package coreutils)) 141 (coreutils -> (canonical-package coreutils))
149 (initrd (if initrd ; use the default initrd? 142 (initrd (if initrd ; use the default initrd?
150 (return initrd) 143 (return initrd)
@@ -155,34 +148,34 @@ made available under the /xchg CIFS share."
155 148
156 (define builder 149 (define builder
157 ;; Code that launches the VM that evaluates EXP. 150 ;; Code that launches the VM that evaluates EXP.
158 #~(begin 151 (with-imported-modules %vm-module-closure
159 (use-modules (guix build utils) 152 #~(begin
160 (gnu build vm)) 153 (use-modules (guix build utils)
161 154 (gnu build vm))
162 (let ((inputs '#$(list qemu coreutils)) 155
163 (linux (string-append #$linux "/bzImage")) 156 (let ((inputs '#$(list qemu coreutils))
164 (initrd (string-append #$initrd "/initrd")) 157 (linux (string-append #$linux "/bzImage"))
165 (loader #$loader) 158 (initrd (string-append #$initrd "/initrd"))
166 (graphs '#$(match references-graphs 159 (loader #$loader)
167 (((graph-files . _) ...) graph-files) 160 (graphs '#$(match references-graphs
168 (_ #f)))) 161 (((graph-files . _) ...) graph-files)
169 162 (_ #f))))
170 (set-path-environment-variable "PATH" '("bin") inputs) 163
171 164 (set-path-environment-variable "PATH" '("bin") inputs)
172 (load-in-linux-vm loader 165
173 #:output #$output 166 (load-in-linux-vm loader
174 #:linux linux #:initrd initrd 167 #:output #$output
175 #:memory-size #$memory-size 168 #:linux linux #:initrd initrd
176 #:make-disk-image? #$make-disk-image? 169 #:memory-size #$memory-size
177 #:disk-image-format #$disk-image-format 170 #:make-disk-image? #$make-disk-image?
178 #:disk-image-size #$disk-image-size 171 #:disk-image-format #$disk-image-format
179 #:references-graphs graphs)))) 172 #:disk-image-size #$disk-image-size
173 #:references-graphs graphs)))))
180 174
181 (gexp->derivation name builder 175 (gexp->derivation name builder
182 ;; TODO: Require the "kvm" feature. 176 ;; TODO: Require the "kvm" feature.
183 #:system system 177 #:system system
184 #:env-vars env-vars 178 #:env-vars env-vars
185 #:modules modules
186 #:guile-for-build guile-for-build 179 #:guile-for-build guile-for-build
187 #:references-graphs references-graphs))) 180 #:references-graphs references-graphs)))
188 181
@@ -212,45 +205,46 @@ register INPUTS in the store database of the image so that Guix can be used in
212the image." 205the image."
213 (expression->derivation-in-linux-vm 206 (expression->derivation-in-linux-vm
214 name 207 name
215 #~(begin 208 (with-imported-modules %vm-module-closure
216 (use-modules (gnu build vm) 209 #~(begin
217 (guix build utils)) 210 (use-modules (gnu build vm)
218 211 (guix build utils))
219 (let ((inputs 212
220 '#$(append (list qemu parted grub e2fsprogs) 213 (let ((inputs
221 (map canonical-package 214 '#$(append (list qemu parted grub e2fsprogs)
222 (list sed grep coreutils findutils gawk)) 215 (map canonical-package
223 (if register-closures? (list guix) '()))) 216 (list sed grep coreutils findutils gawk))
224 217 (if register-closures? (list guix) '())))
225 ;; This variable is unused but allows us to add INPUTS-TO-COPY 218
226 ;; as inputs. 219 ;; This variable is unused but allows us to add INPUTS-TO-COPY
227 (to-register 220 ;; as inputs.
228 '#$(map (match-lambda 221 (to-register
229 ((name thing) thing) 222 '#$(map (match-lambda
230 ((name thing output) `(,thing ,output))) 223 ((name thing) thing)
231 inputs))) 224 ((name thing output) `(,thing ,output)))
232 225 inputs)))
233 (set-path-environment-variable "PATH" '("bin" "sbin") inputs) 226
234 227 (set-path-environment-variable "PATH" '("bin" "sbin") inputs)
235 (let* ((graphs '#$(match inputs 228
236 (((names . _) ...) 229 (let* ((graphs '#$(match inputs
237 names))) 230 (((names . _) ...)
238 (initialize (root-partition-initializer 231 names)))
239 #:closures graphs 232 (initialize (root-partition-initializer
240 #:copy-closures? #$copy-inputs? 233 #:closures graphs
241 #:register-closures? #$register-closures? 234 #:copy-closures? #$copy-inputs?
242 #:system-directory #$os-derivation)) 235 #:register-closures? #$register-closures?
243 (partitions (list (partition 236 #:system-directory #$os-derivation))
244 (size #$(- disk-image-size 237 (partitions (list (partition
245 (* 10 (expt 2 20)))) 238 (size #$(- disk-image-size
246 (label #$file-system-label) 239 (* 10 (expt 2 20))))
247 (file-system #$file-system-type) 240 (label #$file-system-label)
248 (bootable? #t) 241 (file-system #$file-system-type)
249 (initializer initialize))))) 242 (bootable? #t)
250 (initialize-hard-disk "/dev/vda" 243 (initializer initialize)))))
251 #:partitions partitions 244 (initialize-hard-disk "/dev/vda"
252 #:grub.cfg #$grub-configuration) 245 #:partitions partitions
253 (reboot)))) 246 #:grub.cfg #$grub-configuration)
247 (reboot)))))
254 #:system system 248 #:system system
255 #:make-disk-image? #t 249 #:make-disk-image? #t
256 #:disk-image-size disk-image-size 250 #:disk-image-size disk-image-size
diff --git a/gnu/tests.scm b/gnu/tests.scm
index ea779ed6f07..8abe6c608ba 100644
--- a/gnu/tests.scm
+++ b/gnu/tests.scm
@@ -27,7 +27,13 @@
27 #:use-module (srfi srfi-1) 27 #:use-module (srfi srfi-1)
28 #:use-module (srfi srfi-9 gnu) 28 #:use-module (srfi srfi-9 gnu)
29 #:use-module (ice-9 match) 29 #:use-module (ice-9 match)
30 #:export (marionette-service-type 30 #:export (marionette-configuration
31 marionette-configuration?
32 marionette-configuration-device
33 marionette-configuration-imported-modules
34 marionette-configuration-requirements
35
36 marionette-service-type
31 marionette-operating-system 37 marionette-operating-system
32 define-os-with-source 38 define-os-with-source
33 39
@@ -50,81 +56,93 @@
50;;; 56;;;
51;;; Code: 57;;; Code:
52 58
53(define (marionette-shepherd-service imported-modules) 59(define-record-type* <marionette-configuration>
60 marionette-configuration make-marionette-configuration
61 marionette-configuration?
62 (device marionette-configuration-device ;string
63 (default "/dev/hvc0"))
64 (imported-modules marionette-configuration-imported-modules
65 (default '()))
66 (requirements marionette-configuration-requirements ;list of symbols
67 (default '())))
68
69(define (marionette-shepherd-service config)
54 "Return the Shepherd service for the marionette REPL" 70 "Return the Shepherd service for the marionette REPL"
55 (define device 71 (match config
56 "/dev/hvc0") 72 (($ <marionette-configuration> device imported-modules requirement)
57 73 (list (shepherd-service
58 (list (shepherd-service 74 (provision '(marionette))
59 (provision '(marionette)) 75
60 (requirement '(udev)) ;so that DEVICE is available 76 ;; Always depend on UDEV so that DEVICE is available.
61 (modules '((ice-9 match) 77 (requirement `(udev ,@requirement))
62 (srfi srfi-9 gnu) 78
63 (guix build syscalls) 79 (modules '((ice-9 match)
64 (rnrs bytevectors))) 80 (srfi srfi-9 gnu)
65 (imported-modules `((guix build syscalls) 81 (guix build syscalls)
66 ,@imported-modules)) 82 (rnrs bytevectors)))
67 (start 83 (start
68 #~(lambda () 84 (with-imported-modules `((guix build syscalls)
69 (define (clear-echo termios) 85 ,@imported-modules)
70 (set-field termios (termios-local-flags) 86 #~(lambda ()
71 (logand (lognot (local-flags ECHO)) 87 (define (clear-echo termios)
72 (termios-local-flags termios)))) 88 (set-field termios (termios-local-flags)
73 89 (logand (lognot (local-flags ECHO))
74 (define (self-quoting? x) 90 (termios-local-flags termios))))
75 (letrec-syntax ((one-of (syntax-rules () 91
76 ((_) #f) 92 (define (self-quoting? x)
77 ((_ pred rest ...) 93 (letrec-syntax ((one-of (syntax-rules ()
78 (or (pred x) 94 ((_) #f)
79 (one-of rest ...)))))) 95 ((_ pred rest ...)
80 (one-of symbol? string? pair? null? vector? 96 (or (pred x)
81 bytevector? number? boolean?))) 97 (one-of rest ...))))))
82 98 (one-of symbol? string? pair? null? vector?
83 (match (primitive-fork) 99 bytevector? number? boolean?)))
84 (0 100
85 (dynamic-wind 101 (match (primitive-fork)
86 (const #t) 102 (0
87 (lambda () 103 (dynamic-wind
88 (let* ((repl (open-file #$device "r+0")) 104 (const #t)
89 (termios (tcgetattr (fileno repl))) 105 (lambda ()
90 (console (open-file "/dev/console" "r+0"))) 106 (let* ((repl (open-file #$device "r+0"))
91 ;; Don't echo input back. 107 (termios (tcgetattr (fileno repl)))
92 (tcsetattr (fileno repl) (tcsetattr-action TCSANOW) 108 (console (open-file "/dev/console" "r+0")))
93 (clear-echo termios)) 109 ;; Don't echo input back.
94 110 (tcsetattr (fileno repl) (tcsetattr-action TCSANOW)
95 ;; Redirect output to the console. 111 (clear-echo termios))
96 (close-fdes 1) 112
97 (close-fdes 2) 113 ;; Redirect output to the console.
98 (dup2 (fileno console) 1) 114 (close-fdes 1)
99 (dup2 (fileno console) 2) 115 (close-fdes 2)
100 (close-port console) 116 (dup2 (fileno console) 1)
101 117 (dup2 (fileno console) 2)
102 (display 'ready repl) 118 (close-port console)
103 (let loop () 119
104 (newline repl) 120 (display 'ready repl)
105 121 (let loop ()
106 (match (read repl) 122 (newline repl)
107 ((? eof-object?) 123
108 (primitive-exit 0)) 124 (match (read repl)
109 (expr 125 ((? eof-object?)
110 (catch #t 126 (primitive-exit 0))
111 (lambda () 127 (expr
112 (let ((result (primitive-eval expr))) 128 (catch #t
113 (write (if (self-quoting? result) 129 (lambda ()
114 result 130 (let ((result (primitive-eval expr)))
115 (object->string result)) 131 (write (if (self-quoting? result)
116 repl))) 132 result
117 (lambda (key . args) 133 (object->string result))
118 (print-exception (current-error-port) 134 repl)))
119 (stack-ref (make-stack #t) 1) 135 (lambda (key . args)
120 key args) 136 (print-exception (current-error-port)
121 (write #f repl))))) 137 (stack-ref (make-stack #t) 1)
122 (loop)))) 138 key args)
123 (lambda () 139 (write #f repl)))))
124 (primitive-exit 1)))) 140 (loop))))
125 (pid 141 (lambda ()
126 pid)))) 142 (primitive-exit 1))))
127 (stop #~(make-kill-destructor))))) 143 (pid
144 pid)))))
145 (stop #~(make-kill-destructor)))))))
128 146
129(define marionette-service-type 147(define marionette-service-type
130 ;; This is the type of the "marionette" service, allowing a guest system to 148 ;; This is the type of the "marionette" service, allowing a guest system to
@@ -136,12 +154,19 @@
136 marionette-shepherd-service))))) 154 marionette-shepherd-service)))))
137 155
138(define* (marionette-operating-system os 156(define* (marionette-operating-system os
139 #:key (imported-modules '())) 157 #:key
140 "Return a marionetteed variant of OS such that OS can be used as a marionette 158 (imported-modules '())
141in a virtual machine--i.e., controlled from the host system." 159 (requirements '()))
160 "Return a marionetteed variant of OS such that OS can be used as a
161marionette in a virtual machine--i.e., controlled from the host system. The
162marionette service in the guest is started after the Shepherd services listed
163in REQUIREMENTS."
142 (operating-system 164 (operating-system
143 (inherit os) 165 (inherit os)
144 (services (cons (service marionette-service-type imported-modules) 166 (services (cons (service marionette-service-type
167 (marionette-configuration
168 (requirements requirements)
169 (imported-modules imported-modules)))
145 (operating-system-user-services os))))) 170 (operating-system-user-services os)))))
146 171
147(define-syntax define-os-with-source 172(define-syntax define-os-with-source
diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm
index 4fe779802ba..479403e5c1a 100644
--- a/gnu/tests/base.scm
+++ b/gnu/tests/base.scm
@@ -22,10 +22,15 @@
22 #:use-module (gnu system grub) 22 #:use-module (gnu system grub)
23 #:use-module (gnu system file-systems) 23 #:use-module (gnu system file-systems)
24 #:use-module (gnu system shadow) 24 #:use-module (gnu system shadow)
25 #:use-module (gnu system nss)
25 #:use-module (gnu system vm) 26 #:use-module (gnu system vm)
26 #:use-module (gnu services) 27 #:use-module (gnu services)
28 #:use-module (gnu services base)
29 #:use-module (gnu services dbus)
30 #:use-module (gnu services avahi)
27 #:use-module (gnu services mcron) 31 #:use-module (gnu services mcron)
28 #:use-module (gnu services shepherd) 32 #:use-module (gnu services shepherd)
33 #:use-module (gnu services networking)
29 #:use-module (guix gexp) 34 #:use-module (guix gexp)
30 #:use-module (guix store) 35 #:use-module (guix store)
31 #:use-module (guix monads) 36 #:use-module (guix monads)
@@ -33,7 +38,8 @@
33 #:use-module (srfi srfi-1) 38 #:use-module (srfi srfi-1)
34 #:export (run-basic-test 39 #:export (run-basic-test
35 %test-basic-os 40 %test-basic-os
36 %test-mcron)) 41 %test-mcron
42 %test-nss-mdns))
37 43
38(define %simple-os 44(define %simple-os
39 (operating-system 45 (operating-system
@@ -64,104 +70,123 @@
64using COMMAND, a gexp that evaluates to a list of strings. Compare some 70using COMMAND, a gexp that evaluates to a list of strings. Compare some
65properties of running system to what's declared in OS, an <operating-system>." 71properties of running system to what's declared in OS, an <operating-system>."
66 (define test 72 (define test
67 #~(begin 73 (with-imported-modules '((gnu build marionette))
68 (use-modules (gnu build marionette) 74 #~(begin
69 (srfi srfi-1) 75 (use-modules (gnu build marionette)
70 (srfi srfi-26) 76 (srfi srfi-64)
71 (srfi srfi-64) 77 (ice-9 match))
72 (ice-9 match)) 78
73 79 (define marionette
74 (define marionette 80 (make-marionette #$command))
75 (make-marionette #$command)) 81
76 82 (mkdir #$output)
77 (mkdir #$output) 83 (chdir #$output)
78 (chdir #$output) 84
79 85 (test-begin "mcron")
80 (test-begin "basic") 86
81 87 (test-assert "uname"
82 (test-assert "uname" 88 (match (marionette-eval '(uname) marionette)
83 (match (marionette-eval '(uname) marionette) 89 (#("Linux" host-name version _ architecture)
84 (#("Linux" host-name version _ architecture) 90 (and (string=? host-name
85 (and (string=? host-name 91 #$(operating-system-host-name os))
86 #$(operating-system-host-name os)) 92 (string-prefix? #$(package-version
87 (string-prefix? #$(package-version 93 (operating-system-kernel os))
88 (operating-system-kernel os)) 94 version)
89 version) 95 (string-prefix? architecture %host-type)))))
90 (string-prefix? architecture %host-type))))) 96
91 97 (test-assert "shell and user commands"
92 (test-assert "shell and user commands" 98 ;; Is everything in $PATH?
93 ;; Is everything in $PATH? 99 (zero? (marionette-eval '(system "
94 (zero? (marionette-eval '(system "
95. /etc/profile 100. /etc/profile
96set -e -x 101set -e -x
97guix --version 102guix --version
98ls --version 103ls --version
99grep --version 104grep --version
100info --version") 105info --version")
101 marionette))) 106 marionette)))
102 107
103 (test-assert "accounts" 108 (test-assert "accounts"
104 (let ((users (marionette-eval '(begin 109 (let ((users (marionette-eval '(begin
105 (use-modules (ice-9 match)) 110 (use-modules (ice-9 match))
106 (let loop ((result '())) 111 (let loop ((result '()))
107 (match (getpw) 112 (match (getpw)
108 (#f (reverse result)) 113 (#f (reverse result))
109 (x (loop (cons x result)))))) 114 (x (loop (cons x result))))))
110 marionette))) 115 marionette)))
111 (lset= string=? 116 (lset= string=?
112 (map passwd:name users) 117 (map passwd:name users)
113 (list 118 (list
114 #$@(map user-account-name 119 #$@(map user-account-name
115 (operating-system-user-accounts os)))))) 120 (operating-system-user-accounts os))))))
116 121
117 (test-assert "shepherd services" 122 (test-assert "shepherd services"
118 (let ((services (marionette-eval '(begin 123 (let ((services (marionette-eval '(begin
119 (use-modules (gnu services herd)) 124 (use-modules (gnu services herd))
120 (call-with-values current-services 125 (call-with-values current-services
121 append)) 126 append))
122 marionette))) 127 marionette)))
123 (lset= eq? 128 (lset= eq?
124 (pk 'services services) 129 (pk 'services services)
125 '(root #$@(operating-system-shepherd-service-names os))))) 130 '(root #$@(operating-system-shepherd-service-names os)))))
126 131
127 (test-equal "login on tty1" 132 (test-equal "login on tty1"
128 "root\n" 133 "root\n"
129 (begin 134 (begin
130 (marionette-control "sendkey ctrl-alt-f1" marionette) 135 (marionette-control "sendkey ctrl-alt-f1" marionette)
131 ;; Wait for the 'term-tty1' service to be running (using 136 ;; Wait for the 'term-tty1' service to be running (using
132 ;; 'start-service' is the simplest and most reliable way to do 137 ;; 'start-service' is the simplest and most reliable way to do
133 ;; that.) 138 ;; that.)
139 (marionette-eval
140 '(begin
141 (use-modules (gnu services herd))
142 (start-service 'term-tty1))
143 marionette)
144
145 ;; Now we can type.
146 (marionette-type "root\n\nid -un > logged-in\n" marionette)
147
148 ;; It can take a while before the shell commands are executed.
149 (let loop ((i 0))
150 (unless (or (file-exists? "/root/logged-in") (> i 15))
151 (sleep 1)
152 (loop (+ i 1))))
153 (marionette-eval '(use-modules (rnrs io ports)) marionette)
154 (marionette-eval '(call-with-input-file "/root/logged-in"
155 get-string-all)
156 marionette)))
157
158 (test-assert "host name resolution"
159 (match (marionette-eval
160 '(begin
161 ;; Wait for nscd or our requests go through it.
162 (use-modules (gnu services herd))
163 (start-service 'nscd)
164
165 (list (getaddrinfo "localhost")
166 (getaddrinfo #$(operating-system-host-name os))))
167 marionette)
168 ((((? vector?) ..1) ((? vector?) ..1))
169 #t)
170 (x
171 (pk 'failure x #f))))
172
173 (test-equal "host not found"
174 #f
134 (marionette-eval 175 (marionette-eval
135 '(begin 176 '(false-if-exception (getaddrinfo "does-not-exist"))
136 (use-modules (gnu services herd)) 177 marionette))
137 (start-service 'term-tty1)) 178
138 marionette) 179 (test-assert "screendump"
139 180 (begin
140 ;; Now we can type. 181 (marionette-control (string-append "screendump " #$output
141 (marionette-type "root\n\nid -un > logged-in\n" marionette) 182 "/tty1.ppm")
142 183 marionette)
143 ;; It can take a while before the shell commands are executed. 184 (file-exists? "tty1.ppm")))
144 (let loop ((i 0)) 185
145 (unless (or (file-exists? "/root/logged-in") (> i 15)) 186 (test-end)
146 (sleep 1) 187 (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
147 (loop (+ i 1)))) 188
148 (marionette-eval '(use-modules (rnrs io ports)) marionette) 189 (gexp->derivation name test))
149 (marionette-eval '(call-with-input-file "/root/logged-in"
150 get-string-all)
151 marionette)))
152
153 (test-assert "screendump"
154 (begin
155 (marionette-control (string-append "screendump " #$output
156 "/tty1.ppm")
157 marionette)
158 (file-exists? "tty1.ppm")))
159
160 (test-end)
161 (exit (= (test-runner-fail-count (test-runner-current)) 0))))
162
163 (gexp->derivation name test
164 #:modules '((gnu build marionette))))
165 190
166(define %test-basic-os 191(define %test-basic-os
167 (system-test 192 (system-test
@@ -216,70 +241,207 @@ functionality tests.")
216 (command (system-qemu-image/shared-store-script 241 (command (system-qemu-image/shared-store-script
217 os #:graphic? #f))) 242 os #:graphic? #f)))
218 (define test 243 (define test
219 #~(begin 244 (with-imported-modules '((gnu build marionette))
220 (use-modules (gnu build marionette) 245 #~(begin
221 (srfi srfi-64) 246 (use-modules (gnu build marionette)
222 (ice-9 match)) 247 (srfi srfi-64)
223 248 (ice-9 match))
224 (define marionette 249
225 (make-marionette (list #$command))) 250 (define marionette
226 251 (make-marionette (list #$command)))
227 (define (wait-for-file file) 252
228 ;; Wait until FILE exists in the guest; 'read' its content and 253 (define (wait-for-file file)
229 ;; return it. 254 ;; Wait until FILE exists in the guest; 'read' its content and
230 (marionette-eval 255 ;; return it.
231 `(let loop ((i 10)) 256 (marionette-eval
232 (cond ((file-exists? ,file) 257 `(let loop ((i 10))
233 (call-with-input-file ,file read)) 258 (cond ((file-exists? ,file)
234 ((> i 0) 259 (call-with-input-file ,file read))
235 (sleep 1) 260 ((> i 0)
236 (loop (- i 1))) 261 (sleep 1)
237 (else 262 (loop (- i 1)))
238 (error "file didn't show up" ,file)))) 263 (else
239 marionette)) 264 (error "file didn't show up" ,file))))
240 265 marionette))
241 (mkdir #$output) 266
242 (chdir #$output) 267 (mkdir #$output)
243 268 (chdir #$output)
244 (test-begin "mcron") 269
245 270 (test-begin "mcron")
246 (test-eq "service running" 271
247 'running! 272 (test-eq "service running"
248 (marionette-eval 273 'running!
249 '(begin 274 (marionette-eval
250 (use-modules (gnu services herd)) 275 '(begin
251 (start-service 'mcron) 276 (use-modules (gnu services herd))
252 'running!) 277 (start-service 'mcron)
253 marionette)) 278 'running!)
254 279 marionette))
255 ;; Make sure root's mcron job runs, has its cwd set to "/root", and 280
256 ;; runs with the right UID/GID. 281 ;; Make sure root's mcron job runs, has its cwd set to "/root", and
257 (test-equal "root's job" 282 ;; runs with the right UID/GID.
258 '(0 0) 283 (test-equal "root's job"
259 (wait-for-file "/root/witness")) 284 '(0 0)
260 285 (wait-for-file "/root/witness"))
261 ;; Likewise for Alice's job. We cannot know what its GID is since 286
262 ;; it's chosen by 'groupadd', but it's strictly positive. 287 ;; Likewise for Alice's job. We cannot know what its GID is since
263 (test-assert "alice's job" 288 ;; it's chosen by 'groupadd', but it's strictly positive.
264 (match (wait-for-file "/home/alice/witness") 289 (test-assert "alice's job"
265 ((1000 gid) 290 (match (wait-for-file "/home/alice/witness")
266 (>= gid 100)))) 291 ((1000 gid)
267 292 (>= gid 100))))
268 ;; Last, the job that uses a command; allows us to test whether 293
269 ;; $PATH is sane. (Note that 'marionette-eval' stringifies objects 294 ;; Last, the job that uses a command; allows us to test whether
270 ;; that don't have a read syntax, hence the string.) 295 ;; $PATH is sane. (Note that 'marionette-eval' stringifies objects
271 (test-equal "root's job with command" 296 ;; that don't have a read syntax, hence the string.)
272 "#<eof>" 297 (test-equal "root's job with command"
273 (wait-for-file "/root/witness-touch")) 298 "#<eof>"
274 299 (wait-for-file "/root/witness-touch"))
275 (test-end) 300
276 (exit (= (test-runner-fail-count (test-runner-current)) 0)))) 301 (test-end)
277 302 (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
278 (gexp->derivation name test 303
279 #:modules '((gnu build marionette))))) 304 (gexp->derivation name test)))
280 305
281(define %test-mcron 306(define %test-mcron
282 (system-test 307 (system-test
283 (name "mcron") 308 (name "mcron")
284 (description "Make sure the mcron service works as advertised.") 309 (description "Make sure the mcron service works as advertised.")
285 (value (run-mcron-test name)))) 310 (value (run-mcron-test name))))
311
312
313;;;
314;;; Avahi and NSS-mDNS.
315;;;
316
317(define %avahi-os
318 (operating-system
319 (inherit %simple-os)
320 (name-service-switch %mdns-host-lookup-nss)
321 (services (cons* (avahi-service #:debug? #t)
322 (dbus-service)
323 (dhcp-client-service) ;needed for multicast
324
325 ;; Enable heavyweight debugging output.
326 (modify-services (operating-system-user-services
327 %simple-os)
328 (nscd-service-type config
329 => (nscd-configuration
330 (inherit config)
331 (debug-level 3)
332 (log-file "/dev/console")))
333 (syslog-service-type config
334 =>
335 (plain-file
336 "syslog.conf"
337 "*.* /dev/console\n")))))))
338
339(define (run-nss-mdns-test)
340 ;; Test resolution of '.local' names via libc. Start the marionette service
341 ;; *after* nscd. Failing to do that, libc will try to connect to nscd,
342 ;; fail, then never try again (see '__nss_not_use_nscd_hosts' in libc),
343 ;; leading to '.local' resolution failures.
344 (mlet* %store-monad ((os -> (marionette-operating-system
345 %avahi-os
346 #:requirements '(nscd)
347 #:imported-modules '((gnu services herd)
348 (guix combinators))))
349 (run (system-qemu-image/shared-store-script
350 os #:graphic? #f)))
351 (define mdns-host-name
352 (string-append (operating-system-host-name os)
353 ".local"))
354
355 (define test
356 (with-imported-modules '((gnu build marionette))
357 #~(begin
358 (use-modules (gnu build marionette)
359 (srfi srfi-1)
360 (srfi srfi-64)
361 (ice-9 match))
362
363 (define marionette
364 (make-marionette (list #$run)))
365
366 (mkdir #$output)
367 (chdir #$output)
368
369 (test-begin "avahi")
370
371 (test-assert "wait for services"
372 (marionette-eval
373 '(begin
374 (use-modules (gnu services herd))
375
376 (start-service 'nscd)
377
378 ;; XXX: Work around a race condition in nscd: nscd creates its
379 ;; PID file before it is listening on its socket.
380 (let ((sock (socket PF_UNIX SOCK_STREAM 0)))
381 (let try ()
382 (catch 'system-error
383 (lambda ()
384 (connect sock AF_UNIX "/var/run/nscd/socket")
385 (close-port sock)
386 (format #t "nscd is ready~%"))
387 (lambda args
388 (format #t "waiting for nscd...~%")
389 (usleep 500000)
390 (try)))))
391
392 ;; Wait for the other useful things.
393 (start-service 'avahi-daemon)
394 (start-service 'networking)
395
396 #t)
397 marionette))
398
399 (test-equal "avahi-resolve-host-name"
400 0
401 (marionette-eval
402 '(system*
403 "/run/current-system/profile/bin/avahi-resolve-host-name"
404 "-v" #$mdns-host-name)
405 marionette))
406
407 (test-equal "avahi-browse"
408 0
409 (marionette-eval
410 '(system* "avahi-browse" "-avt")
411 marionette))
412
413 (test-assert "getaddrinfo .local"
414 ;; Wait for the 'avahi-daemon' service and perform a resolution.
415 (match (marionette-eval
416 '(getaddrinfo #$mdns-host-name)
417 marionette)
418 (((? vector? addrinfos) ..1)
419 (pk 'getaddrinfo addrinfos)
420 (and (any (lambda (ai)
421 (= AF_INET (addrinfo:fam ai)))
422 addrinfos)
423 (any (lambda (ai)
424 (= AF_INET6 (addrinfo:fam ai)))
425 addrinfos)))))
426
427 (test-assert "gethostbyname .local"
428 (match (pk 'gethostbyname
429 (marionette-eval '(gethostbyname #$mdns-host-name)
430 marionette))
431 ((? vector? result)
432 (and (string=? (hostent:name result) #$mdns-host-name)
433 (= (hostent:addrtype result) AF_INET)))))
434
435
436 (test-end)
437 (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
438
439 (gexp->derivation "nss-mdns" test)))
440
441(define %test-nss-mdns
442 (system-test
443 (name "nss-mdns")
444 (description
445 "Test Avahi's multicast-DNS implementation, and in particular, test its
446glibc name service switch (NSS) module.")
447 (value (run-nss-mdns-test))))
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm
index 5d893deb4c1..4e79fdb2942 100644
--- a/gnu/tests/install.scm
+++ b/gnu/tests/install.scm
@@ -32,7 +32,8 @@
32 #:use-module (guix grafts) 32 #:use-module (guix grafts)
33 #:use-module (guix gexp) 33 #:use-module (guix gexp)
34 #:use-module (guix utils) 34 #:use-module (guix utils)
35 #:export (%test-installed-os)) 35 #:export (%test-installed-os
36 %test-encrypted-os))
36 37
37;;; Commentary: 38;;; Commentary:
38;;; 39;;;
@@ -66,8 +67,9 @@
66 (home-directory "/home/alice")) 67 (home-directory "/home/alice"))
67 %base-user-accounts)) 68 %base-user-accounts))
68 (services (cons (service marionette-service-type 69 (services (cons (service marionette-service-type
69 '((gnu services herd) 70 (marionette-configuration
70 (guix combinators))) 71 (imported-modules '((gnu services herd)
72 (guix combinators)))))
71 %base-services)))) 73 %base-services))))
72 74
73(define (operating-system-with-current-guix os) 75(define (operating-system-with-current-guix os)
@@ -90,7 +92,33 @@
90 92
91(define MiB (expt 2 20)) 93(define MiB (expt 2 20))
92 94
93(define* (run-install #:key 95(define %simple-installation-script
96 ;; Shell script of a simple installation.
97 "\
98. /etc/profile
99set -e -x
100guix --version
101
102export GUIX_BUILD_OPTIONS=--no-grafts
103guix build isc-dhcp
104parted --script /dev/vdb mklabel gpt \\
105 mkpart primary ext2 1M 3M \\
106 mkpart primary ext2 3M 1G \\
107 set 1 boot on \\
108 set 1 bios_grub on
109mkfs.ext4 -L my-root /dev/vdb2
110mount /dev/vdb2 /mnt
111df -h /mnt
112herd start cow-store /mnt
113mkdir /mnt/etc
114cp /etc/target-config.scm /mnt/etc/config.scm
115guix system init /mnt/etc/config.scm /mnt --no-substitutes
116sync
117reboot\n")
118
119(define* (run-install target-os target-os-source
120 #:key
121 (script %simple-installation-script)
94 (os (marionette-operating-system 122 (os (marionette-operating-system
95 ;; Since the image has no network access, use the 123 ;; Since the image has no network access, use the
96 ;; current Guix so the store items we need are in 124 ;; current Guix so the store items we need are in
@@ -102,12 +130,13 @@
102 #:imported-modules '((gnu services herd) 130 #:imported-modules '((gnu services herd)
103 (guix combinators)))) 131 (guix combinators))))
104 (target-size (* 1200 MiB))) 132 (target-size (* 1200 MiB)))
105 "Run the GuixSD installation procedure from OS and return a VM image of 133 "Run SCRIPT (a shell script following the GuixSD installation procedure) in
106TARGET-SIZE bytes containing the installed system." 134OS to install TARGET-OS. Return a VM image of TARGET-SIZE bytes containing
135the installed system."
107 136
108 (mlet* %store-monad ((_ (set-grafting #f)) 137 (mlet* %store-monad ((_ (set-grafting #f))
109 (system (current-system)) 138 (system (current-system))
110 (target (operating-system-derivation %minimal-os)) 139 (target (operating-system-derivation target-os))
111 140
112 ;; Since the installation system has no network access, 141 ;; Since the installation system has no network access,
113 ;; we cheat a little bit by adding TARGET to its GC 142 ;; we cheat a little bit by adding TARGET to its GC
@@ -118,95 +147,158 @@ TARGET-SIZE bytes containing the installed system."
118 os (list target)) 147 os (list target))
119 #:disk-image-size (* 1500 MiB)))) 148 #:disk-image-size (* 1500 MiB))))
120 (define install 149 (define install
121 #~(begin 150 (with-imported-modules '((guix build utils)
122 (use-modules (guix build utils) 151 (gnu build marionette))
123 (gnu build marionette)) 152 #~(begin
124 153 (use-modules (guix build utils)
125 (set-path-environment-variable "PATH" '("bin") 154 (gnu build marionette))
126 (list #$qemu-minimal)) 155
127 156 (set-path-environment-variable "PATH" '("bin")
128 (system* "qemu-img" "create" "-f" "qcow2" 157 (list #$qemu-minimal))
129 #$output #$(number->string target-size)) 158
130 159 (system* "qemu-img" "create" "-f" "qcow2"
131 (define marionette 160 #$output #$(number->string target-size))
132 (make-marionette 161
133 (cons (which #$(qemu-command system)) 162 (define marionette
134 (cons* "-no-reboot" "-m" "800" 163 (make-marionette
135 "-drive" 164 (cons (which #$(qemu-command system))
136 (string-append "file=" #$image 165 (cons* "-no-reboot" "-m" "800"
137 ",if=virtio,readonly") 166 "-drive"
138 "-drive" 167 (string-append "file=" #$image
139 (string-append "file=" #$output ",if=virtio") 168 ",if=virtio,readonly")
140 (if (file-exists? "/dev/kvm") 169 "-drive"
141 '("-enable-kvm") 170 (string-append "file=" #$output ",if=virtio")
142 '()))))) 171 (if (file-exists? "/dev/kvm")
143 172 '("-enable-kvm")
144 (pk 'uname (marionette-eval '(uname) marionette)) 173 '())))))
145 174
146 ;; Wait for tty1. 175 (pk 'uname (marionette-eval '(uname) marionette))
147 (marionette-eval '(begin 176
148 (use-modules (gnu services herd)) 177 ;; Wait for tty1.
149 (start 'term-tty1)) 178 (marionette-eval '(begin
150 marionette) 179 (use-modules (gnu services herd))
151 180 (start 'term-tty1))
152 (marionette-eval '(call-with-output-file "/etc/litl-config.scm" 181 marionette)
153 (lambda (port) 182
154 (write '#$%minimal-os-source port))) 183 (marionette-eval '(call-with-output-file "/etc/target-config.scm"
155 marionette) 184 (lambda (port)
156 185 (write '#$target-os-source port)))
157 (exit (marionette-eval '(zero? (system " 186 marionette)
187
188 (exit (marionette-eval '(zero? (system #$script))
189 marionette)))))
190
191 (gexp->derivation "installation" install)))
192
193(define (qemu-command/writable-image image)
194 "Return as a monadic value the command to run QEMU on a writable copy of
195IMAGE, a disk image."
196 (mlet %store-monad ((system (current-system)))
197 (return #~(let ((image #$image))
198 ;; First we need a writable copy of the image.
199 (format #t "copying image '~a'...~%" image)
200 (copy-file image "disk.img")
201 (chmod "disk.img" #o644)
202 `(,(string-append #$qemu-minimal "/bin/"
203 #$(qemu-command system))
204 ,@(if (file-exists? "/dev/kvm")
205 '("-enable-kvm")
206 '())
207 "-no-reboot" "-m" "256"
208 "-drive" "file=disk.img,if=virtio")))))
209
210
211(define %test-installed-os
212 (system-test
213 (name "installed-os")
214 (description
215 "Test basic functionality of an OS installed like one would do by hand.
216This test is expensive in terms of CPU and storage usage since we need to
217build (current-guix) and then store a couple of full system images.")
218 (value
219 (mlet* %store-monad ((image (run-install %minimal-os %minimal-os-source))
220 (command (qemu-command/writable-image image)))
221 (run-basic-test %minimal-os command
222 "installed-os")))))
223
224
225(define-os-with-source (%encrypted-root-os %encrypted-root-os-source)
226 ;; The OS we want to install.
227 (use-modules (gnu) (gnu tests) (srfi srfi-1))
228
229 (operating-system
230 (host-name "liberigilo")
231 (timezone "Europe/Paris")
232 (locale "en_US.UTF-8")
233
234 (bootloader (grub-configuration (device "/dev/vdb")))
235 (kernel-arguments '("console=ttyS0"))
236 (file-systems (cons (file-system
237 (device "/dev/mapper/the-root-device")
238 (title 'device)
239 (mount-point "/")
240 (type "ext4"))
241 %base-file-systems))
242 (mapped-devices (list (mapped-device
243 (source "REPLACE-WITH-LUKS-UUID")
244 (target "the-root-device")
245 (type luks-device-mapping))))
246 (users (cons (user-account
247 (name "charlie")
248 (group "users")
249 (home-directory "/home/charlie")
250 (supplementary-groups '("wheel" "audio" "video")))
251 %base-user-accounts))
252 (services (cons (service marionette-service-type
253 (marionette-configuration
254 (imported-modules '((gnu services herd)
255 (guix combinators)))))
256 %base-services))))
257
258(define %encrypted-root-installation-script
259 ;; Shell script of a simple installation.
260 "\
158. /etc/profile 261. /etc/profile
159set -e -x; 262set -e -x
160guix --version 263guix --version
161guix gc --list-live | grep isc-dhcp
162 264
163export GUIX_BUILD_OPTIONS=--no-grafts 265export GUIX_BUILD_OPTIONS=--no-grafts
164guix build isc-dhcp 266ls -l /run/current-system/gc-roots
165parted --script /dev/vdb mklabel gpt \\ 267parted --script /dev/vdb mklabel gpt \\
166 mkpart primary ext2 1M 3M \\ 268 mkpart primary ext2 1M 3M \\
167 mkpart primary ext2 3M 1G \\ 269 mkpart primary ext2 3M 1G \\
168 set 1 boot on \\ 270 set 1 boot on \\
169 set 1 bios_grub on 271 set 1 bios_grub on
170mkfs.ext4 -L my-root /dev/vdb2 272echo -n thepassphrase | cryptsetup luksFormat -q /dev/vdb2 -
171ls -l /dev/vdb 273echo -n thepassphrase | \\
172mount /dev/vdb2 /mnt 274 cryptsetup open --type luks --key-file - /dev/vdb2 the-root-device
173df -h /mnt 275mkfs.ext4 -L my-root /dev/mapper/the-root-device
276mount LABEL=my-root /mnt
174herd start cow-store /mnt 277herd start cow-store /mnt
175mkdir /mnt/etc 278mkdir /mnt/etc
176cp /etc/litl-config.scm /mnt/etc/config.scm 279cp /etc/target-config.scm /mnt/etc/config.scm
280cat /mnt/etc/config
281luks_uuid=`cryptsetup luksUUID /dev/vdb2`
282sed -i /mnt/etc/config.scm \\
283 -e \"s/\\\"REPLACE-WITH-LUKS-UUID\\\"/(uuid \\\"$luks_uuid\\\")/g\"
284guix system build /mnt/etc/config.scm
177guix system init /mnt/etc/config.scm /mnt --no-substitutes 285guix system init /mnt/etc/config.scm /mnt --no-substitutes
178sync 286sync
179reboot\n")) 287reboot\n")
180 marionette))))
181
182 (gexp->derivation "installation" install
183 #:modules '((guix build utils)
184 (gnu build marionette)))))
185 288
186 289(define %test-encrypted-os
187(define %test-installed-os
188 (system-test 290 (system-test
189 (name "installed-os") 291 (name "encrypted-root-os")
190 (description 292 (description
191 "Test basic functionality of an OS installed like one would do by hand. 293 "Test basic functionality of an OS installed like one would do by hand.
192This test is expensive in terms of CPU and storage usage since we need to 294This test is expensive in terms of CPU and storage usage since we need to
193build (current-guix) and then store a couple of full system images.") 295build (current-guix) and then store a couple of full system images.")
194 (value 296 (value
195 (mlet %store-monad ((image (run-install)) 297 (mlet* %store-monad ((image (run-install %encrypted-root-os
196 (system (current-system))) 298 %encrypted-root-os-source
197 (run-basic-test %minimal-os 299 #:script
198 #~(let ((image #$image)) 300 %encrypted-root-installation-script))
199 ;; First we need a writable copy of the image. 301 (command (qemu-command/writable-image image)))
200 (format #t "copying image '~a'...~%" image) 302 (run-basic-test %encrypted-root-os command "encrypted-root-os")))))
201 (copy-file image "disk.img")
202 (chmod "disk.img" #o644)
203 `(,(string-append #$qemu-minimal "/bin/"
204 #$(qemu-command system))
205 ,@(if (file-exists? "/dev/kvm")
206 '("-enable-kvm")
207 '())
208 "-no-reboot" "-m" "256"
209 "-drive" "file=disk.img,if=virtio"))
210 "installed-os")))))
211 303
212;;; install.scm ends here 304;;; install.scm ends here
diff --git a/guix/build/download.scm b/guix/build/download.scm
index bd011ce8784..103e784bb13 100644
--- a/guix/build/download.scm
+++ b/guix/build/download.scm
@@ -23,9 +23,11 @@
23 #:use-module (web http) 23 #:use-module (web http)
24 #:use-module ((web client) #:hide (open-socket-for-uri)) 24 #:use-module ((web client) #:hide (open-socket-for-uri))
25 #:use-module (web response) 25 #:use-module (web response)
26 #:use-module (guix base64)
26 #:use-module (guix ftp-client) 27 #:use-module (guix ftp-client)
27 #:use-module (guix build utils) 28 #:use-module (guix build utils)
28 #:use-module (rnrs io ports) 29 #:use-module (rnrs io ports)
30 #:use-module (rnrs bytevectors)
29 #:use-module (srfi srfi-1) 31 #:use-module (srfi srfi-1)
30 #:use-module (srfi srfi-11) 32 #:use-module (srfi srfi-11)
31 #:use-module (srfi srfi-19) 33 #:use-module (srfi srfi-19)
@@ -598,14 +600,22 @@ FILE on success."
598 (string>? (version) "2.0.7"))) 600 (string>? (version) "2.0.7")))
599 601
600 (define headers 602 (define headers
601 '(;; Some web sites, such as http://dist.schmorp.de, would block you if 603 `(;; Some web sites, such as http://dist.schmorp.de, would block you if
602 ;; there's no 'User-Agent' header, presumably on the assumption that 604 ;; there's no 'User-Agent' header, presumably on the assumption that
603 ;; you're a spammer. So work around that. 605 ;; you're a spammer. So work around that.
604 (User-Agent . "GNU Guile") 606 (User-Agent . "GNU Guile")
605 607
606 ;; Some servers, such as https://alioth.debian.org, return "406 Not 608 ;; Some servers, such as https://alioth.debian.org, return "406 Not
607 ;; Acceptable" when not explicitly told that everything is accepted. 609 ;; Acceptable" when not explicitly told that everything is accepted.
608 (Accept . "*/*"))) 610 (Accept . "*/*")
611
612 ;; Basic authentication, if needed.
613 ,@(match (uri-userinfo uri)
614 ((? string? str)
615 `((Authorization . ,(string-append "Basic "
616 (base64-encode
617 (string->utf8 str))))))
618 (_ '()))))
609 619
610 (let*-values (((connection) 620 (let*-values (((connection)
611 (open-connection-for-uri uri #:timeout timeout)) 621 (open-connection-for-uri uri #:timeout timeout))
diff --git a/guix/build/svn.scm b/guix/build/svn.scm
index 74fe084da5c..31c30edaf58 100644
--- a/guix/build/svn.scm
+++ b/guix/build/svn.scm
@@ -29,15 +29,22 @@
29;;; Code: 29;;; Code:
30 30
31(define* (svn-fetch url revision directory 31(define* (svn-fetch url revision directory
32 #:key (svn-command "svn")) 32 #:key (svn-command "svn")
33 (user-name #f)
34 (password #f))
33 "Fetch REVISION from URL into DIRECTORY. REVISION must be an integer, and a 35 "Fetch REVISION from URL into DIRECTORY. REVISION must be an integer, and a
34valid Subversion revision. Return #t on success, #f otherwise." 36valid Subversion revision. Return #t on success, #f otherwise."
35 (and (zero? (system* svn-command "checkout" "--non-interactive" 37 (and (zero? (apply system* svn-command
36 ;; Trust the server certificate. This is OK as we 38 "checkout" "--non-interactive"
37 ;; verify the checksum later. This can be removed when 39 ;; Trust the server certificate. This is OK as we
38 ;; ca-certificates package is added. 40 ;; verify the checksum later. This can be removed when
39 "--trust-server-cert" "-r" (number->string revision) 41 ;; ca-certificates package is added.
40 url directory)) 42 "--trust-server-cert" "-r" (number->string revision)
43 `(,@(if (and user-name password)
44 (list (string-append "--username=" user-name)
45 (string-append "--password=" password))
46 '())
47 ,url ,directory)))
41 (with-directory-excursion directory 48 (with-directory-excursion directory
42 (begin 49 (begin
43 ;; The contents of '.svn' vary as a function of the current status 50 ;; The contents of '.svn' vary as a function of the current status
diff --git a/guix/config.scm.in b/guix/config.scm.in
index adffa0cfec6..6d42cf233c3 100644
--- a/guix/config.scm.in
+++ b/guix/config.scm.in
@@ -1,5 +1,5 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
3;;; 3;;;
4;;; This file is part of GNU Guix. 4;;; This file is part of GNU Guix.
5;;; 5;;;
@@ -27,6 +27,7 @@
27 %guix-register-program 27 %guix-register-program
28 %system 28 %system
29 %libgcrypt 29 %libgcrypt
30 %libz
30 %nix-instantiate 31 %nix-instantiate
31 %gzip 32 %gzip
32 %bzip2 33 %bzip2
@@ -72,6 +73,9 @@
72(define %libgcrypt 73(define %libgcrypt
73 "@LIBGCRYPT@") 74 "@LIBGCRYPT@")
74 75
76(define %libz
77 "@LIBZ@")
78
75(define %nix-instantiate 79(define %nix-instantiate
76 "@NIX_INSTANTIATE@") 80 "@NIX_INSTANTIATE@")
77 81
diff --git a/guix/cvs-download.scm b/guix/cvs-download.scm
index 72478dd2c24..85744c5b557 100644
--- a/guix/cvs-download.scm
+++ b/guix/cvs-download.scm
@@ -1,5 +1,5 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in> 3;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> 4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
5;;; 5;;;
@@ -60,13 +60,15 @@
60object. The output is expected to have recursive hash HASH of type 60object. The output is expected to have recursive hash HASH of type
61HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." 61HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f."
62 (define build 62 (define build
63 #~(begin 63 (with-imported-modules '((guix build cvs)
64 (use-modules (guix build cvs)) 64 (guix build utils))
65 (cvs-fetch '#$(cvs-reference-root-directory ref) 65 #~(begin
66 '#$(cvs-reference-module ref) 66 (use-modules (guix build cvs))
67 '#$(cvs-reference-revision ref) 67 (cvs-fetch '#$(cvs-reference-root-directory ref)
68 #$output 68 '#$(cvs-reference-module ref)
69 #:cvs-command (string-append #+cvs "/bin/cvs")))) 69 '#$(cvs-reference-revision ref)
70 #$output
71 #:cvs-command (string-append #+cvs "/bin/cvs")))))
70 72
71 (mlet %store-monad ((guile (package->derivation guile system))) 73 (mlet %store-monad ((guile (package->derivation guile system)))
72 (gexp->derivation (or name "cvs-checkout") build 74 (gexp->derivation (or name "cvs-checkout") build
@@ -74,8 +76,6 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f."
74 #:hash-algo hash-algo 76 #:hash-algo hash-algo
75 #:hash hash 77 #:hash hash
76 #:recursive? #t 78 #:recursive? #t
77 #:modules '((guix build cvs)
78 (guix build utils))
79 #:guile-for-build guile 79 #:guile-for-build guile
80 #:local-build? #t))) 80 #:local-build? #t)))
81 81
diff --git a/guix/download.scm b/guix/download.scm
index 9b238dcbdfd..bcb043ba805 100644
--- a/guix/download.scm
+++ b/guix/download.scm
@@ -99,27 +99,23 @@
99 "http://www.centervenus.com/mirrors/nongnu/" 99 "http://www.centervenus.com/mirrors/nongnu/"
100 "http://download.savannah.gnu.org/releases-noredirect/") 100 "http://download.savannah.gnu.org/releases-noredirect/")
101 (sourceforge ; https://sourceforge.net/p/forge/documentation/Mirrors/ 101 (sourceforge ; https://sourceforge.net/p/forge/documentation/Mirrors/
102 "http://prdownloads.sourceforge.net/" 102 "http://ufpr.dl.sourceforge.net/project/"
103 "http://heanet.dl.sourceforge.net/sourceforge/" 103 "http://heanet.dl.sourceforge.net/project/"
104 "http://dfn.dl.sourceforge.net/sourceforge/" 104 "http://freefr.dl.sourceforge.net/project/"
105 "http://freefr.dl.sourceforge.net/sourceforge/" 105 "http://internode.dl.sourceforge.net/project/"
106 "http://internode.dl.sourceforge.net/sourceforge/" 106 "http://jaist.dl.sourceforge.net/project/"
107 "http://iweb.dl.sourceforge.net/sourceforge/" 107 "http://kent.dl.sourceforge.net/project/"
108 "http://jaist.dl.sourceforge.net/sourceforge/" 108 "http://liquidtelecom.dl.sourceforge.net/project/"
109 "http://kaz.dl.sourceforge.net/sourceforge/" 109 "http://nbtelecom.dl.sourceforge.net/project/"
110 "http://kent.dl.sourceforge.net/sourceforge/" 110 "http://nchc.dl.sourceforge.net/project/"
111 "http://liquidtelecom.dl.sourceforge.net/sourceforge/" 111 "http://ncu.dl.sourceforge.net/project/"
112 "http://nbtelecom.dl.sourceforge.net/sourceforge/" 112 "http://netcologne.dl.sourceforge.net/project/"
113 "http://nchc.dl.sourceforge.net/sourceforge/" 113 "http://netix.dl.sourceforge.net/project/"
114 "http://ncu.dl.sourceforge.net/sourceforge/" 114 "http://pilotfiber.dl.sourceforge.net/project/"
115 "http://netcologne.dl.sourceforge.net/sourceforge/" 115 "http://superb-sea2.dl.sourceforge.net/project/"
116 "http://netix.dl.sourceforge.net/sourceforge/" 116 "http://tenet.dl.sourceforge.net/project/"
117 "http://pilotfiber.dl.sourceforge.net/sourceforge/" 117 "http://vorboss.dl.sourceforge.net/project/"
118 "http://superb-sea2.dl.sourceforge.net/sourceforge/" 118 "http://netassist.dl.sourceforge.net/project/")
119 "http://tenet.dl.sourceforge.net/sourceforge/"
120 "http://ufpr.dl.sourceforge.net/sourceforge/"
121 "http://vorboss.dl.sourceforge.net/sourceforge/"
122 "http://netassist.dl.sourceforge.net/sourceforge/")
123 (kernel.org 119 (kernel.org
124 "http://www.all.kernel.org/pub/" 120 "http://www.all.kernel.org/pub/"
125 "http://ramses.wh2.tu-dresden.de/pub/mirrors/kernel.org/" 121 "http://ramses.wh2.tu-dresden.de/pub/mirrors/kernel.org/"
@@ -168,7 +164,7 @@
168 "http://x.cs.pu.edu.tw/" 164 "http://x.cs.pu.edu.tw/"
169 "ftp://ftp.is.co.za/pub/x.org") ; South Africa 165 "ftp://ftp.is.co.za/pub/x.org") ; South Africa
170 (cpan ; from http://www.cpan.org/SITES.html 166 (cpan ; from http://www.cpan.org/SITES.html
171 "http://cpan.enstimac.fr/" 167 "http://mirror.ibcp.fr/pub/CPAN/"
172 "ftp://ftp.ciril.fr/pub/cpan/" 168 "ftp://ftp.ciril.fr/pub/cpan/"
173 "ftp://artfiles.org/cpan.org/" 169 "ftp://artfiles.org/cpan.org/"
174 "http://www.cpan.org/" 170 "http://www.cpan.org/"
@@ -286,33 +282,39 @@ in the store."
286 (any https? url))))) 282 (any https? url)))))
287 283
288 (define builder 284 (define builder
289 #~(begin 285 (with-imported-modules '((guix build download)
290 #+(if need-gnutls? 286 (guix build utils)
287 (guix ftp-client)
288 (guix base32)
289 (guix base64))
290 #~(begin
291 #+(if need-gnutls?
291 292
292 ;; Add GnuTLS to the inputs and to the load path. 293 ;; Add GnuTLS to the inputs and to the load path.
293 #~(eval-when (load expand eval) 294 #~(eval-when (load expand eval)
294 (set! %load-path 295 (set! %load-path
295 (cons (string-append #+(gnutls-package) 296 (cons (string-append #+(gnutls-package)
296 "/share/guile/site/" 297 "/share/guile/site/"
297 (effective-version)) 298 (effective-version))
298 %load-path))) 299 %load-path)))
299 #~#t) 300 #~#t)
300 301
301 (use-modules (guix build download) 302 (use-modules (guix build download)
302 (guix base32)) 303 (guix base32))
303 304
304 (let ((value-from-environment (lambda (variable) 305 (let ((value-from-environment (lambda (variable)
305 (call-with-input-string 306 (call-with-input-string
306 (getenv variable) 307 (getenv variable)
307 read)))) 308 read))))
308 (url-fetch (value-from-environment "guix download url") 309 (url-fetch (value-from-environment "guix download url")
309 #$output 310 #$output
310 #:mirrors (call-with-input-file #$%mirror-file read) 311 #:mirrors (call-with-input-file #$%mirror-file read)
311 312
312 ;; Content-addressed mirrors. 313 ;; Content-addressed mirrors.
313 #:hashes (value-from-environment "guix download hashes") 314 #:hashes
314 #:content-addressed-mirrors 315 (value-from-environment "guix download hashes")
315 (primitive-load #$%content-addressed-mirror-file))))) 316 #:content-addressed-mirrors
317 (primitive-load #$%content-addressed-mirror-file))))))
316 318
317 (let ((uri (and (string? url) (string->uri url)))) 319 (let ((uri (and (string? url) (string->uri url))))
318 (if (or (and (string? url) (not uri)) 320 (if (or (and (string? url) (not uri))
@@ -325,10 +327,6 @@ in the store."
325 #:system system 327 #:system system
326 #:hash-algo hash-algo 328 #:hash-algo hash-algo
327 #:hash hash 329 #:hash hash
328 #:modules '((guix build download)
329 (guix build utils)
330 (guix ftp-client)
331 (guix base32))
332 330
333 ;; Use environment variables and a fixed script 331 ;; Use environment variables and a fixed script
334 ;; name so there's only one script in store for 332 ;; name so there's only one script in store for
diff --git a/guix/gexp.scm b/guix/gexp.scm
index b929b79c26c..302879fb427 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -29,6 +29,7 @@
29 #:use-module (ice-9 match) 29 #:use-module (ice-9 match)
30 #:export (gexp 30 #:export (gexp
31 gexp? 31 gexp?
32 with-imported-modules
32 33
33 gexp-input 34 gexp-input
34 gexp-input? 35 gexp-input?
@@ -49,14 +50,12 @@
49 computed-file? 50 computed-file?
50 computed-file-name 51 computed-file-name
51 computed-file-gexp 52 computed-file-gexp
52 computed-file-modules
53 computed-file-options 53 computed-file-options
54 54
55 program-file 55 program-file
56 program-file? 56 program-file?
57 program-file-name 57 program-file-name
58 program-file-gexp 58 program-file-gexp
59 program-file-modules
60 program-file-guile 59 program-file-guile
61 60
62 scheme-file 61 scheme-file
@@ -98,11 +97,11 @@
98 97
99;; "G expressions". 98;; "G expressions".
100(define-record-type <gexp> 99(define-record-type <gexp>
101 (make-gexp references natives proc) 100 (make-gexp references modules proc)
102 gexp? 101 gexp?
103 (references gexp-references) ; ((DRV-OR-PKG OUTPUT) ...) 102 (references gexp-references) ;list of <gexp-input>
104 (natives gexp-native-references) ; ((DRV-OR-PKG OUTPUT) ...) 103 (modules gexp-self-modules) ;list of module names
105 (proc gexp-proc)) ; procedure 104 (proc gexp-proc)) ;procedure
106 105
107(define (write-gexp gexp port) 106(define (write-gexp gexp port)
108 "Write GEXP on PORT." 107 "Write GEXP on PORT."
@@ -113,8 +112,7 @@
113 ;; tries to use 'append' on that, which fails with wrong-type-arg. 112 ;; tries to use 'append' on that, which fails with wrong-type-arg.
114 (false-if-exception 113 (false-if-exception
115 (write (apply (gexp-proc gexp) 114 (write (apply (gexp-proc gexp)
116 (append (gexp-references gexp) 115 (gexp-references gexp))
117 (gexp-native-references gexp)))
118 port)) 116 port))
119 (format port " ~a>" 117 (format port " ~a>"
120 (number->string (object-address gexp) 16))) 118 (number->string (object-address gexp) 16)))
@@ -273,55 +271,49 @@ This is the declarative counterpart of 'text-file'."
273 (text-file name content references)))) 271 (text-file name content references))))
274 272
275(define-record-type <computed-file> 273(define-record-type <computed-file>
276 (%computed-file name gexp modules options) 274 (%computed-file name gexp options)
277 computed-file? 275 computed-file?
278 (name computed-file-name) ;string 276 (name computed-file-name) ;string
279 (gexp computed-file-gexp) ;gexp 277 (gexp computed-file-gexp) ;gexp
280 (modules computed-file-modules) ;list of module names
281 (options computed-file-options)) ;list of arguments 278 (options computed-file-options)) ;list of arguments
282 279
283(define* (computed-file name gexp 280(define* (computed-file name gexp
284 #:key (modules '()) (options '(#:local-build? #t))) 281 #:key (options '(#:local-build? #t)))
285 "Return an object representing the store item NAME, a file or directory 282 "Return an object representing the store item NAME, a file or directory
286computed by GEXP. MODULES specifies the set of modules visible in the 283computed by GEXP. OPTIONS is a list of additional arguments to pass
287execution context of GEXP. OPTIONS is a list of additional arguments to pass
288to 'gexp->derivation'. 284to 'gexp->derivation'.
289 285
290This is the declarative counterpart of 'gexp->derivation'." 286This is the declarative counterpart of 'gexp->derivation'."
291 (%computed-file name gexp modules options)) 287 (%computed-file name gexp options))
292 288
293(define-gexp-compiler (computed-file-compiler (file computed-file?) 289(define-gexp-compiler (computed-file-compiler (file computed-file?)
294 system target) 290 system target)
295 ;; Compile FILE by returning a derivation whose build expression is its 291 ;; Compile FILE by returning a derivation whose build expression is its
296 ;; gexp. 292 ;; gexp.
297 (match file 293 (match file
298 (($ <computed-file> name gexp modules options) 294 (($ <computed-file> name gexp options)
299 (apply gexp->derivation name gexp #:modules modules options)))) 295 (apply gexp->derivation name gexp options))))
300 296
301(define-record-type <program-file> 297(define-record-type <program-file>
302 (%program-file name gexp modules guile) 298 (%program-file name gexp guile)
303 program-file? 299 program-file?
304 (name program-file-name) ;string 300 (name program-file-name) ;string
305 (gexp program-file-gexp) ;gexp 301 (gexp program-file-gexp) ;gexp
306 (modules program-file-modules) ;list of module names
307 (guile program-file-guile)) ;package 302 (guile program-file-guile)) ;package
308 303
309(define* (program-file name gexp 304(define* (program-file name gexp #:key (guile #f))
310 #:key (modules '()) (guile #f))
311 "Return an object representing the executable store item NAME that runs 305 "Return an object representing the executable store item NAME that runs
312GEXP. GUILE is the Guile package used to execute that script, and MODULES is 306GEXP. GUILE is the Guile package used to execute that script.
313the list of modules visible to that script.
314 307
315This is the declarative counterpart of 'gexp->script'." 308This is the declarative counterpart of 'gexp->script'."
316 (%program-file name gexp modules guile)) 309 (%program-file name gexp guile))
317 310
318(define-gexp-compiler (program-file-compiler (file program-file?) 311(define-gexp-compiler (program-file-compiler (file program-file?)
319 system target) 312 system target)
320 ;; Compile FILE by returning a derivation that builds the script. 313 ;; Compile FILE by returning a derivation that builds the script.
321 (match file 314 (match file
322 (($ <program-file> name gexp modules guile) 315 (($ <program-file> name gexp guile)
323 (gexp->script name gexp 316 (gexp->script name gexp
324 #:modules modules
325 #:guile (or guile (default-guile)))))) 317 #:guile (or guile (default-guile))))))
326 318
327(define-record-type <scheme-file> 319(define-record-type <scheme-file>
@@ -386,6 +378,23 @@ whether this should be considered a \"native\" input or not."
386 378
387(set-record-type-printer! <gexp-output> write-gexp-output) 379(set-record-type-printer! <gexp-output> write-gexp-output)
388 380
381(define (gexp-modules gexp)
382 "Return the list of Guile module names GEXP relies on."
383 (delete-duplicates
384 (append (gexp-self-modules gexp)
385 (append-map (match-lambda
386 (($ <gexp-input> (? gexp? exp))
387 (gexp-modules exp))
388 (($ <gexp-input> (lst ...))
389 (append-map (lambda (item)
390 (if (gexp? item)
391 (gexp-modules item)
392 '()))
393 lst))
394 (_
395 '()))
396 (gexp-references gexp)))))
397
389(define raw-derivation 398(define raw-derivation
390 (store-lift derivation)) 399 (store-lift derivation))
391 400
@@ -467,7 +476,8 @@ derivation) on SYSTEM; EXP is stored in a file called SCRIPT-NAME. When
467TARGET is true, it is used as the cross-compilation target triplet for 476TARGET is true, it is used as the cross-compilation target triplet for
468packages referred to by EXP. 477packages referred to by EXP.
469 478
470Make MODULES available in the evaluation context of EXP; MODULES is a list of 479MODULES is deprecated in favor of 'with-imported-modules'. Its meaning is to
480make MODULES available in the evaluation context of EXP; MODULES is a list of
471names of Guile modules searched in MODULE-PATH to be copied in the store, 481names of Guile modules searched in MODULE-PATH to be copied in the store,
472compiled, and made available in the load path during the execution of 482compiled, and made available in the load path during the execution of
473EXP---e.g., '((guix build utils) (guix build gnu-build-system)). 483EXP---e.g., '((guix build utils) (guix build gnu-build-system)).
@@ -496,7 +506,9 @@ Similarly for DISALLOWED-REFERENCES, which can list items that must not be
496referenced by the outputs. 506referenced by the outputs.
497 507
498The other arguments are as for 'derivation'." 508The other arguments are as for 'derivation'."
499 (define %modules modules) 509 (define %modules
510 (delete-duplicates
511 (append modules (gexp-modules exp))))
500 (define outputs (gexp-outputs exp)) 512 (define outputs (gexp-outputs exp))
501 513
502 (define (graphs-file-names graphs) 514 (define (graphs-file-names graphs)
@@ -630,11 +642,15 @@ references; otherwise, return only non-native references."
630 ;; Ignore references to other kinds of objects. 642 ;; Ignore references to other kinds of objects.
631 result))) 643 result)))
632 644
645 (define (native-input? x)
646 (and (gexp-input? x)
647 (gexp-input-native? x)))
648
633 (fold-right add-reference-inputs 649 (fold-right add-reference-inputs
634 '() 650 '()
635 (if native? 651 (if native?
636 (gexp-native-references exp) 652 (filter native-input? (gexp-references exp))
637 (gexp-references exp)))) 653 (remove native-input? (gexp-references exp)))))
638 654
639(define gexp-native-inputs 655(define gexp-native-inputs
640 (cut gexp-inputs <> #:native? #t)) 656 (cut gexp-inputs <> #:native? #t))
@@ -687,7 +703,7 @@ and in the current monad setting (system type, etc.)"
687 (if (gexp-input? ref) 703 (if (gexp-input? ref)
688 ref 704 ref
689 (%gexp-input ref "out" n?)) 705 (%gexp-input ref "out" n?))
690 native?)) 706 (or n? native?)))
691 refs))) 707 refs)))
692 (($ <gexp-input> (? struct? thing) output n?) 708 (($ <gexp-input> (? struct? thing) output n?)
693 (let ((target (if (or n? native?) #f target))) 709 (let ((target (if (or n? native?) #f target)))
@@ -706,9 +722,7 @@ and in the current monad setting (system type, etc.)"
706 722
707 (mlet %store-monad 723 (mlet %store-monad
708 ((args (sequence %store-monad 724 ((args (sequence %store-monad
709 (append (map reference->sexp (gexp-references exp)) 725 (map reference->sexp (gexp-references exp)))))
710 (map (cut reference->sexp <> #t)
711 (gexp-native-references exp))))))
712 (return (apply (gexp-proc exp) args)))) 726 (return (apply (gexp-proc exp) args))))
713 727
714(define (syntax-location-string s) 728(define (syntax-location-string s)
@@ -724,6 +738,17 @@ and in the current monad setting (system type, etc.)"
724 (simple-format #f "~a:~a" line column))) 738 (simple-format #f "~a:~a" line column)))
725 "<unknown location>"))) 739 "<unknown location>")))
726 740
741(define-syntax-parameter current-imported-modules
742 ;; Current list of imported modules.
743 (identifier-syntax '()))
744
745(define-syntax-rule (with-imported-modules modules body ...)
746 "Mark the gexps defined in BODY... as requiring MODULES in their execution
747environment."
748 (syntax-parameterize ((current-imported-modules
749 (identifier-syntax modules)))
750 body ...))
751
727(define-syntax gexp 752(define-syntax gexp
728 (lambda (s) 753 (lambda (s)
729 (define (collect-escapes exp) 754 (define (collect-escapes exp)
@@ -741,33 +766,9 @@ and in the current monad setting (system type, etc.)"
741 ((ungexp-splicing _ ...) 766 ((ungexp-splicing _ ...)
742 (cons exp result)) 767 (cons exp result))
743 ((ungexp-native _ ...) 768 ((ungexp-native _ ...)
744 result)
745 ((ungexp-native-splicing _ ...)
746 result)
747 ((exp0 exp ...)
748 (let ((result (loop #'exp0 result)))
749 (fold loop result #'(exp ...))))
750 (_
751 result))))
752
753 (define (collect-native-escapes exp)
754 ;; Return all the 'ungexp-native' forms present in EXP.
755 (let loop ((exp exp)
756 (result '()))
757 (syntax-case exp (ungexp
758 ungexp-splicing
759 ungexp-native
760 ungexp-native-splicing)
761 ((ungexp-native _)
762 (cons exp result))
763 ((ungexp-native _ _)
764 (cons exp result)) 769 (cons exp result))
765 ((ungexp-native-splicing _ ...) 770 ((ungexp-native-splicing _ ...)
766 (cons exp result)) 771 (cons exp result))
767 ((ungexp _ ...)
768 result)
769 ((ungexp-splicing _ ...)
770 result)
771 ((exp0 exp ...) 772 ((exp0 exp ...)
772 (let ((result (loop #'exp0 result))) 773 (let ((result (loop #'exp0 result)))
773 (fold loop result #'(exp ...)))) 774 (fold loop result #'(exp ...))))
@@ -838,14 +839,12 @@ and in the current monad setting (system type, etc.)"
838 839
839 (syntax-case s (ungexp output) 840 (syntax-case s (ungexp output)
840 ((_ exp) 841 ((_ exp)
841 (let* ((normals (delete-duplicates (collect-escapes #'exp))) 842 (let* ((escapes (delete-duplicates (collect-escapes #'exp)))
842 (natives (delete-duplicates (collect-native-escapes #'exp)))
843 (escapes (append normals natives))
844 (formals (generate-temporaries escapes)) 843 (formals (generate-temporaries escapes))
845 (sexp (substitute-references #'exp (zip escapes formals))) 844 (sexp (substitute-references #'exp (zip escapes formals)))
846 (refs (map escape->ref normals)) 845 (refs (map escape->ref escapes)))
847 (nrefs (map escape->ref natives))) 846 #`(make-gexp (list #,@refs)
848 #`(make-gexp (list #,@refs) (list #,@nrefs) 847 current-imported-modules
849 (lambda #,formals 848 (lambda #,formals
850 #,sexp))))))) 849 #,sexp)))))))
851 850
@@ -983,12 +982,24 @@ they can refer to each other."
983 (module-ref (resolve-interface '(gnu packages commencement)) 982 (module-ref (resolve-interface '(gnu packages commencement))
984 'guile-final)) 983 'guile-final))
985 984
986(define* (gexp->script name exp 985(define (load-path-expression modules)
987 #:key (modules '()) (guile (default-guile))) 986 "Return as a monadic value a gexp that sets '%load-path' and
988 "Return an executable script NAME that runs EXP using GUILE with MODULES in 987'%load-compiled-path' to point to MODULES, a list of module names."
989its search path."
990 (mlet %store-monad ((modules (imported-modules modules)) 988 (mlet %store-monad ((modules (imported-modules modules))
991 (compiled (compiled-modules modules))) 989 (compiled (compiled-modules modules)))
990 (return (gexp (eval-when (expand load eval)
991 (set! %load-path
992 (cons (ungexp modules) %load-path))
993 (set! %load-compiled-path
994 (cons (ungexp compiled)
995 %load-compiled-path)))))))
996
997(define* (gexp->script name exp
998 #:key (guile (default-guile)))
999 "Return an executable script NAME that runs EXP using GUILE, with EXP's
1000imported modules in its search path."
1001 (mlet %store-monad ((set-load-path
1002 (load-path-expression (gexp-modules exp))))
992 (gexp->derivation name 1003 (gexp->derivation name
993 (gexp 1004 (gexp
994 (call-with-output-file (ungexp output) 1005 (call-with-output-file (ungexp output)
@@ -1001,28 +1012,33 @@ its search path."
1001 "#!~a/bin/guile --no-auto-compile~%!#~%" 1012 "#!~a/bin/guile --no-auto-compile~%!#~%"
1002 (ungexp guile)) 1013 (ungexp guile))
1003 1014
1004 ;; Write the 'eval-when' form so that it can be 1015 (write '(ungexp set-load-path) port)
1005 ;; compiled.
1006 (write
1007 '(eval-when (expand load eval)
1008 (set! %load-path
1009 (cons (ungexp modules) %load-path))
1010 (set! %load-compiled-path
1011 (cons (ungexp compiled)
1012 %load-compiled-path)))
1013 port)
1014 (write '(ungexp exp) port) 1016 (write '(ungexp exp) port)
1015 (chmod port #o555))))))) 1017 (chmod port #o555)))))))
1016 1018
1017(define (gexp->file name exp) 1019(define* (gexp->file name exp #:key (set-load-path? #t))
1018 "Return a derivation that builds a file NAME containing EXP." 1020 "Return a derivation that builds a file NAME containing EXP. When
1019 (gexp->derivation name 1021SET-LOAD-PATH? is true, emit code in the resulting file to set '%load-path'
1020 (gexp 1022and '%load-compiled-path' to honor EXP's imported modules."
1021 (call-with-output-file (ungexp output) 1023 (match (if set-load-path? (gexp-modules exp) '())
1022 (lambda (port) 1024 (() ;zero modules
1023 (write '(ungexp exp) port)))) 1025 (gexp->derivation name
1024 #:local-build? #t 1026 (gexp
1025 #:substitutable? #f)) 1027 (call-with-output-file (ungexp output)
1028 (lambda (port)
1029 (write '(ungexp exp) port))))
1030 #:local-build? #t
1031 #:substitutable? #f))
1032 ((modules ...)
1033 (mlet %store-monad ((set-load-path (load-path-expression modules)))
1034 (gexp->derivation name
1035 (gexp
1036 (call-with-output-file (ungexp output)
1037 (lambda (port)
1038 (write '(ungexp set-load-path) port)
1039 (write '(ungexp exp) port))))
1040 #:local-build? #t
1041 #:substitutable? #f)))))
1026 1042
1027(define* (text-file* name #:rest text) 1043(define* (text-file* name #:rest text)
1028 "Return as a monadic value a derivation that builds a text file containing 1044 "Return as a monadic value a derivation that builds a text file containing
diff --git a/guix/git-download.scm b/guix/git-download.scm
index 1e5c845e346..9cc6dd3d947 100644
--- a/guix/git-download.scm
+++ b/guix/git-download.scm
@@ -1,5 +1,5 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
3;;; 3;;;
4;;; This file is part of GNU Guix. 4;;; This file is part of GNU Guix.
5;;; 5;;;
@@ -68,23 +68,25 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f."
68 '())) 68 '()))
69 69
70 (define build 70 (define build
71 #~(begin 71 (with-imported-modules '((guix build git)
72 (use-modules (guix build git) 72 (guix build utils))
73 (guix build utils) 73 #~(begin
74 (ice-9 match)) 74 (use-modules (guix build git)
75 (guix build utils)
76 (ice-9 match))
75 77
76 ;; The 'git submodule' commands expects Coreutils, sed, 78 ;; The 'git submodule' commands expects Coreutils, sed,
77 ;; grep, etc. to be in $PATH. 79 ;; grep, etc. to be in $PATH.
78 (set-path-environment-variable "PATH" '("bin") 80 (set-path-environment-variable "PATH" '("bin")
79 (match '#+inputs 81 (match '#+inputs
80 (((names dirs) ...) 82 (((names dirs) ...)
81 dirs))) 83 dirs)))
82 84
83 (git-fetch '#$(git-reference-url ref) 85 (git-fetch '#$(git-reference-url ref)
84 '#$(git-reference-commit ref) 86 '#$(git-reference-commit ref)
85 #$output 87 #$output
86 #:recursive? '#$(git-reference-recursive? ref) 88 #:recursive? '#$(git-reference-recursive? ref)
87 #:git-command (string-append #+git "/bin/git")))) 89 #:git-command (string-append #+git "/bin/git")))))
88 90
89 (mlet %store-monad ((guile (package->derivation guile system))) 91 (mlet %store-monad ((guile (package->derivation guile system)))
90 (gexp->derivation (or name "git-checkout") build 92 (gexp->derivation (or name "git-checkout") build
@@ -93,8 +95,6 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f."
93 #:hash-algo hash-algo 95 #:hash-algo hash-algo
94 #:hash hash 96 #:hash hash
95 #:recursive? #t 97 #:recursive? #t
96 #:modules '((guix build git)
97 (guix build utils))
98 #:guile-for-build guile 98 #:guile-for-build guile
99 #:local-build? #t))) 99 #:local-build? #t)))
100 100
diff --git a/guix/hg-download.scm b/guix/hg-download.scm
index f3e1d2906af..84209809058 100644
--- a/guix/hg-download.scm
+++ b/guix/hg-download.scm
@@ -1,5 +1,5 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> 3;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
4;;; 4;;;
5;;; This file is part of GNU Guix. 5;;; This file is part of GNU Guix.
@@ -60,15 +60,17 @@
60object. The output is expected to have recursive hash HASH of type 60object. The output is expected to have recursive hash HASH of type
61HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." 61HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f."
62 (define build 62 (define build
63 #~(begin 63 (with-imported-modules '((guix build hg)
64 (use-modules (guix build hg) 64 (guix build utils))
65 (guix build utils) 65 #~(begin
66 (ice-9 match)) 66 (use-modules (guix build hg)
67 (guix build utils)
68 (ice-9 match))
67 69
68 (hg-fetch '#$(hg-reference-url ref) 70 (hg-fetch '#$(hg-reference-url ref)
69 '#$(hg-reference-changeset ref) 71 '#$(hg-reference-changeset ref)
70 #$output 72 #$output
71 #:hg-command (string-append #+hg "/bin/hg")))) 73 #:hg-command (string-append #+hg "/bin/hg")))))
72 74
73 (mlet %store-monad ((guile (package->derivation guile system))) 75 (mlet %store-monad ((guile (package->derivation guile system)))
74 (gexp->derivation (or name "hg-checkout") build 76 (gexp->derivation (or name "hg-checkout") build
@@ -77,8 +79,6 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f."
77 #:hash-algo hash-algo 79 #:hash-algo hash-algo
78 #:hash hash 80 #:hash hash
79 #:recursive? #t 81 #:recursive? #t
80 #:modules '((guix build hg)
81 (guix build utils))
82 #:guile-for-build guile))) 82 #:guile-for-build guile)))
83 83
84;;; hg-download.scm ends here 84;;; hg-download.scm ends here
diff --git a/guix/import/cpan.scm b/guix/import/cpan.scm
index ad61ee7916e..213a155fd64 100644
--- a/guix/import/cpan.scm
+++ b/guix/import/cpan.scm
@@ -1,6 +1,7 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> 2;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
3;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> 3;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
4;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
4;;; 5;;;
5;;; This file is part of GNU Guix. 6;;; This file is part of GNU Guix.
6;;; 7;;;
@@ -99,6 +100,13 @@ or #f on failure. MODULE should be e.g. \"Test::Script\""
99(define (cpan-home name) 100(define (cpan-home name)
100 (string-append "http://search.cpan.org/dist/" name)) 101 (string-append "http://search.cpan.org/dist/" name))
101 102
103(define (fix-source-url download-url)
104 "Return a new download URL based on DOWNLOAD-URL which now uses our mirrors,
105if the original's domain was metacpan."
106 (regexp-substitute/global #f "http[s]?://cpan.metacpan.org" download-url
107 'pre "mirror://cpan" 'post))
108
109
102(define %corelist 110(define %corelist
103 (delay 111 (delay
104 (let* ((perl (with-store store 112 (let* ((perl (with-store store
@@ -183,10 +191,7 @@ META."
183 (list (list guix-name 191 (list (list guix-name
184 (list 'quasiquote inputs)))))) 192 (list 'quasiquote inputs))))))
185 193
186 (define source-url 194 (define source-url (fix-source-url (assoc-ref meta "download_url")))
187 (regexp-substitute/global #f "http://cpan.metacpan.org"
188 (assoc-ref meta "download_url")
189 'pre "mirror://cpan" 'post))
190 195
191 (let ((tarball (with-store store 196 (let ((tarball (with-store store
192 (download-to-store store source-url)))) 197 (download-to-store store source-url))))
diff --git a/guix/packages.scm b/guix/packages.scm
index acb8f34417e..bfb4c557ab7 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -56,7 +56,6 @@
56 origin-patch-guile 56 origin-patch-guile
57 origin-snippet 57 origin-snippet
58 origin-modules 58 origin-modules
59 origin-imported-modules
60 base32 59 base32
61 60
62 package 61 package
@@ -164,8 +163,7 @@
164 (default #f)) 163 (default #f))
165 (modules origin-modules ; list of module names 164 (modules origin-modules ; list of module names
166 (default '())) 165 (default '()))
167 (imported-modules origin-imported-modules ; list of module names 166
168 (default '()))
169 (patch-guile origin-patch-guile ; package or #f 167 (patch-guile origin-patch-guile ; package or #f
170 (default #f))) 168 (default #f)))
171 169
@@ -381,14 +379,13 @@ the build code of derivation."
381 (snippet #f) 379 (snippet #f)
382 (flags '("-p1")) 380 (flags '("-p1"))
383 (modules '()) 381 (modules '())
384 (imported-modules '())
385 (guile-for-build (%guile-for-build)) 382 (guile-for-build (%guile-for-build))
386 (system (%current-system))) 383 (system (%current-system)))
387 "Unpack SOURCE (a derivation or store path), apply all of PATCHES, and 384 "Unpack SOURCE (a derivation or store path), apply all of PATCHES, and
388repack the tarball using the tools listed in INPUTS. When SNIPPET is true, 385repack the tarball using the tools listed in INPUTS. When SNIPPET is true,
389it must be an s-expression that will run from within the directory where 386it must be an s-expression that will run from within the directory where
390SOURCE was unpacked, after all of PATCHES have been applied. MODULES and 387SOURCE was unpacked, after all of PATCHES have been applied. MODULES
391IMPORTED-MODULES specify modules to use/import for use by SNIPPET." 388specifies modules in scope when evaluating SNIPPET."
392 (define source-file-name 389 (define source-file-name
393 ;; SOURCE is usually a derivation, but it could be a store file. 390 ;; SOURCE is usually a derivation, but it could be a store file.
394 (if (derivation? source) 391 (if (derivation? source)
@@ -449,107 +446,107 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET."
449 (patches (sequence %store-monad 446 (patches (sequence %store-monad
450 (map instantiate-patch patches)))) 447 (map instantiate-patch patches))))
451 (define build 448 (define build
452 #~(begin 449 (with-imported-modules '((guix build utils))
453 (use-modules (ice-9 ftw) 450 #~(begin
454 (srfi srfi-1) 451 (use-modules (ice-9 ftw)
455 (guix build utils)) 452 (srfi srfi-1)
456 453 (guix build utils))
457 ;; The --sort option was added to GNU tar in version 1.28, released 454
458 ;; 2014-07-28. During bootstrap we must cope with older versions. 455 ;; The --sort option was added to GNU tar in version 1.28, released
459 (define tar-supports-sort? 456 ;; 2014-07-28. During bootstrap we must cope with older versions.
460 (zero? (system* (string-append #+tar "/bin/tar") 457 (define tar-supports-sort?
461 "cf" "/dev/null" "--files-from=/dev/null" 458 (zero? (system* (string-append #+tar "/bin/tar")
462 "--sort=name"))) 459 "cf" "/dev/null" "--files-from=/dev/null"
463 460 "--sort=name")))
464 (define (apply-patch patch) 461
465 (format (current-error-port) "applying '~a'...~%" patch) 462 (define (apply-patch patch)
466 463 (format (current-error-port) "applying '~a'...~%" patch)
467 ;; Use '--force' so that patches that do not apply perfectly are 464
468 ;; rejected. 465 ;; Use '--force' so that patches that do not apply perfectly are
469 (zero? (system* (string-append #+patch "/bin/patch") 466 ;; rejected.
470 "--force" #+@flags "--input" patch))) 467 (zero? (system* (string-append #+patch "/bin/patch")
471 468 "--force" #+@flags "--input" patch)))
472 (define (first-file directory) 469
473 ;; Return the name of the first file in DIRECTORY. 470 (define (first-file directory)
474 (car (scandir directory 471 ;; Return the name of the first file in DIRECTORY.
475 (lambda (name) 472 (car (scandir directory
476 (not (member name '("." ".."))))))) 473 (lambda (name)
477 474 (not (member name '("." "..")))))))
478 ;; Encoding/decoding errors shouldn't be silent. 475
479 (fluid-set! %default-port-conversion-strategy 'error) 476 ;; Encoding/decoding errors shouldn't be silent.
480 477 (fluid-set! %default-port-conversion-strategy 'error)
481 (when #+locales 478
482 ;; First of all, install a UTF-8 locale so that UTF-8 file names 479 (when #+locales
483 ;; are correctly interpreted. During bootstrap, LOCALES is #f. 480 ;; First of all, install a UTF-8 locale so that UTF-8 file names
484 (setenv "LOCPATH" 481 ;; are correctly interpreted. During bootstrap, LOCALES is #f.
485 (string-append #+locales "/lib/locale/" 482 (setenv "LOCPATH"
486 #+(and locales 483 (string-append #+locales "/lib/locale/"
487 (package-version locales)))) 484 #+(and locales
488 (setlocale LC_ALL "en_US.utf8")) 485 (package-version locales))))
489 486 (setlocale LC_ALL "en_US.utf8"))
490 (setenv "PATH" (string-append #+xz "/bin" ":" 487
491 #+decomp "/bin")) 488 (setenv "PATH" (string-append #+xz "/bin" ":"
492 489 #+decomp "/bin"))
493 ;; SOURCE may be either a directory or a tarball. 490
494 (and (if (file-is-directory? #+source) 491 ;; SOURCE may be either a directory or a tarball.
495 (let* ((store (%store-directory)) 492 (and (if (file-is-directory? #+source)
496 (len (+ 1 (string-length store))) 493 (let* ((store (%store-directory))
497 (base (string-drop #+source len)) 494 (len (+ 1 (string-length store)))
498 (dash (string-index base #\-)) 495 (base (string-drop #+source len))
499 (directory (string-drop base (+ 1 dash)))) 496 (dash (string-index base #\-))
500 (mkdir directory) 497 (directory (string-drop base (+ 1 dash))))
501 (copy-recursively #+source directory) 498 (mkdir directory)
502 #t) 499 (copy-recursively #+source directory)
503 #+(if (string=? decompression-type "unzip") 500 #t)
504 #~(zero? (system* "unzip" #+source)) 501 #+(if (string=? decompression-type "unzip")
505 #~(zero? (system* (string-append #+tar "/bin/tar") 502 #~(zero? (system* "unzip" #+source))
506 "xvf" #+source)))) 503 #~(zero? (system* (string-append #+tar "/bin/tar")
507 (let ((directory (first-file "."))) 504 "xvf" #+source))))
508 (format (current-error-port) 505 (let ((directory (first-file ".")))
509 "source is under '~a'~%" directory) 506 (format (current-error-port)
510 (chdir directory) 507 "source is under '~a'~%" directory)
511 508 (chdir directory)
512 (and (every apply-patch '#+patches) 509
513 #+@(if snippet 510 (and (every apply-patch '#+patches)
514 #~((let ((module (make-fresh-user-module))) 511 #+@(if snippet
515 (module-use-interfaces! module 512 #~((let ((module (make-fresh-user-module)))
516 (map resolve-interface 513 (module-use-interfaces!
517 '#+modules)) 514 module
518 ((@ (system base compile) compile) 515 (map resolve-interface '#+modules))
519 '#+snippet 516 ((@ (system base compile) compile)
520 #:to 'value 517 '#+snippet
521 #:opts %auto-compilation-options 518 #:to 'value
522 #:env module))) 519 #:opts %auto-compilation-options
523 #~()) 520 #:env module)))
524 521 #~())
525 (begin (chdir "..") #t) 522
526 523 (begin (chdir "..") #t)
527 (unless tar-supports-sort? 524
528 (call-with-output-file ".file_list" 525 (unless tar-supports-sort?
529 (lambda (port) 526 (call-with-output-file ".file_list"
530 (for-each (lambda (name) (format port "~a~%" name)) 527 (lambda (port)
531 (find-files directory 528 (for-each (lambda (name)
532 #:directories? #t 529 (format port "~a~%" name))
533 #:fail-on-error? #t))))) 530 (find-files directory
534 (zero? (apply system* (string-append #+tar "/bin/tar") 531 #:directories? #t
535 "cvfa" #$output 532 #:fail-on-error? #t)))))
536 ;; avoid non-determinism in the archive 533 (zero? (apply system*
537 "--mtime=@0" 534 (string-append #+tar "/bin/tar")
538 "--owner=root:0" 535 "cvfa" #$output
539 "--group=root:0" 536 ;; avoid non-determinism in the archive
540 (if tar-supports-sort? 537 "--mtime=@0"
541 `("--sort=name" 538 "--owner=root:0"
542 ,directory) 539 "--group=root:0"
543 '("--no-recursion" 540 (if tar-supports-sort?
544 "--files-from=.file_list"))))))))) 541 `("--sort=name"
545 542 ,directory)
546 (let ((name (tarxz-name original-file-name)) 543 '("--no-recursion"
547 (modules (delete-duplicates (cons '(guix build utils) 544 "--files-from=.file_list"))))))))))
548 imported-modules)))) 545
546 (let ((name (tarxz-name original-file-name)))
549 (gexp->derivation name build 547 (gexp->derivation name build
550 #:graft? #f 548 #:graft? #f
551 #:system system 549 #:system system
552 #:modules modules
553 #:guile-for-build guile-for-build)))) 550 #:guile-for-build guile-for-build))))
554 551
555(define (transitive-inputs inputs) 552(define (transitive-inputs inputs)
@@ -1138,8 +1135,7 @@ cross-compilation target triplet."
1138 ;; No patches, no snippet: this is a fixed-output derivation. 1135 ;; No patches, no snippet: this is a fixed-output derivation.
1139 (method uri 'sha256 sha256 name #:system system)) 1136 (method uri 'sha256 sha256 name #:system system))
1140 (($ <origin> uri method sha256 name (= force (patches ...)) snippet 1137 (($ <origin> uri method sha256 name (= force (patches ...)) snippet
1141 (flags ...) inputs (modules ...) (imported-modules ...) 1138 (flags ...) inputs (modules ...) guile-for-build)
1142 guile-for-build)
1143 ;; Patches and/or a snippet. 1139 ;; Patches and/or a snippet.
1144 (mlet %store-monad ((source (method uri 'sha256 sha256 name 1140 (mlet %store-monad ((source (method uri 'sha256 sha256 name
1145 #:system system)) 1141 #:system system))
@@ -1153,7 +1149,6 @@ cross-compilation target triplet."
1153 #:flags flags 1149 #:flags flags
1154 #:system system 1150 #:system system
1155 #:modules modules 1151 #:modules modules
1156 #:imported-modules imported-modules
1157 #:guile-for-build guile))))) 1152 #:guile-for-build guile)))))
1158 1153
1159(define-gexp-compiler (origin-compiler (origin origin?) system target) 1154(define-gexp-compiler (origin-compiler (origin origin?) system target)
diff --git a/guix/profiles.scm b/guix/profiles.scm
index 90c43325a02..77df6ad1857 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -489,87 +489,87 @@ MANIFEST."
489 (module-ref (resolve-interface '(gnu packages compression)) 'gzip)) 489 (module-ref (resolve-interface '(gnu packages compression)) 'gzip))
490 490
491 (define build 491 (define build
492 #~(begin 492 (with-imported-modules '((guix build utils))
493 (use-modules (guix build utils) 493 #~(begin
494 (srfi srfi-1) (srfi srfi-26) 494 (use-modules (guix build utils)
495 (ice-9 ftw)) 495 (srfi srfi-1) (srfi srfi-26)
496 496 (ice-9 ftw))
497 (define (info-file? file) 497
498 (or (string-suffix? ".info" file) 498 (define (info-file? file)
499 (string-suffix? ".info.gz" file))) 499 (or (string-suffix? ".info" file)
500 500 (string-suffix? ".info.gz" file)))
501 (define (info-files top) 501
502 (let ((infodir (string-append top "/share/info"))) 502 (define (info-files top)
503 (map (cut string-append infodir "/" <>) 503 (let ((infodir (string-append top "/share/info")))
504 (or (scandir infodir info-file?) '())))) 504 (map (cut string-append infodir "/" <>)
505 505 (or (scandir infodir info-file?) '()))))
506 (define (install-info info) 506
507 (setenv "PATH" (string-append #+gzip "/bin")) ;for info.gz files 507 (define (install-info info)
508 (zero? 508 (setenv "PATH" (string-append #+gzip "/bin")) ;for info.gz files
509 (system* (string-append #+texinfo "/bin/install-info") "--silent" 509 (zero?
510 info (string-append #$output "/share/info/dir")))) 510 (system* (string-append #+texinfo "/bin/install-info") "--silent"
511 511 info (string-append #$output "/share/info/dir"))))
512 (mkdir-p (string-append #$output "/share/info")) 512
513 (exit (every install-info 513 (mkdir-p (string-append #$output "/share/info"))
514 (append-map info-files 514 (exit (every install-info
515 '#$(manifest-inputs manifest)))))) 515 (append-map info-files
516 '#$(manifest-inputs manifest)))))))
516 517
517 (gexp->derivation "info-dir" build 518 (gexp->derivation "info-dir" build
518 #:modules '((guix build utils))
519 #:local-build? #t 519 #:local-build? #t
520 #:substitutable? #f)) 520 #:substitutable? #f))
521 521
522(define (ghc-package-cache-file manifest) 522(define (ghc-package-cache-file manifest)
523 "Return a derivation that builds the GHC 'package.cache' file for all the 523 "Return a derivation that builds the GHC 'package.cache' file for all the
524entries of MANIFEST, or #f if MANIFEST does not have any GHC packages." 524entries of MANIFEST, or #f if MANIFEST does not have any GHC packages."
525 (define ghc ;lazy reference 525 (define ghc ;lazy reference
526 (module-ref (resolve-interface '(gnu packages haskell)) 'ghc)) 526 (module-ref (resolve-interface '(gnu packages haskell)) 'ghc))
527 527
528 (define build 528 (define build
529 #~(begin 529 (with-imported-modules '((guix build utils))
530 (use-modules (guix build utils) 530 #~(begin
531 (srfi srfi-1) (srfi srfi-26) 531 (use-modules (guix build utils)
532 (ice-9 ftw)) 532 (srfi srfi-1) (srfi srfi-26)
533 533 (ice-9 ftw))
534 (define ghc-name-version 534
535 (let* ((base (basename #+ghc))) 535 (define ghc-name-version
536 (string-drop base 536 (let* ((base (basename #+ghc)))
537 (+ 1 (string-index base #\-))))) 537 (string-drop base
538 538 (+ 1 (string-index base #\-)))))
539 (define db-subdir 539
540 (string-append "lib/" ghc-name-version "/package.conf.d")) 540 (define db-subdir
541 541 (string-append "lib/" ghc-name-version "/package.conf.d"))
542 (define db-dir 542
543 (string-append #$output "/" db-subdir)) 543 (define db-dir
544 544 (string-append #$output "/" db-subdir))
545 (define (conf-files top) 545
546 (let ((db (string-append top "/" db-subdir))) 546 (define (conf-files top)
547 (if (file-exists? db) 547 (let ((db (string-append top "/" db-subdir)))
548 (find-files db "\\.conf$") 548 (if (file-exists? db)
549 '()))) 549 (find-files db "\\.conf$")
550 550 '())))
551 (define (copy-conf-file conf) 551
552 (let ((base (basename conf))) 552 (define (copy-conf-file conf)
553 (copy-file conf (string-append db-dir "/" base)))) 553 (let ((base (basename conf)))
554 554 (copy-file conf (string-append db-dir "/" base))))
555 (system* (string-append #+ghc "/bin/ghc-pkg") "init" db-dir) 555
556 (for-each copy-conf-file 556 (system* (string-append #+ghc "/bin/ghc-pkg") "init" db-dir)
557 (append-map conf-files 557 (for-each copy-conf-file
558 (delete-duplicates 558 (append-map conf-files
559 '#$(manifest-inputs manifest)))) 559 (delete-duplicates
560 (let ((success 560 '#$(manifest-inputs manifest))))
561 (zero? 561 (let ((success
562 (system* (string-append #+ghc "/bin/ghc-pkg") "recache" 562 (zero?
563 (string-append "--package-db=" db-dir))))) 563 (system* (string-append #+ghc "/bin/ghc-pkg") "recache"
564 (for-each delete-file (find-files db-dir "\\.conf$")) 564 (string-append "--package-db=" db-dir)))))
565 (exit success)))) 565 (for-each delete-file (find-files db-dir "\\.conf$"))
566 (exit success)))))
566 567
567 (with-monad %store-monad 568 (with-monad %store-monad
568 ;; Don't depend on GHC when there's nothing to do. 569 ;; Don't depend on GHC when there's nothing to do.
569 (if (any (cut string-prefix? "ghc" <>) 570 (if (any (cut string-prefix? "ghc" <>)
570 (map manifest-entry-name (manifest-entries manifest))) 571 (map manifest-entry-name (manifest-entries manifest)))
571 (gexp->derivation "ghc-package-cache" build 572 (gexp->derivation "ghc-package-cache" build
572 #:modules '((guix build utils))
573 #:local-build? #t 573 #:local-build? #t
574 #:substitutable? #f) 574 #:substitutable? #f)
575 (return #f)))) 575 (return #f))))
@@ -585,58 +585,58 @@ MANIFEST. Single-file bundles are required by programs such as Git and Lynx."
585 (module-ref (resolve-interface '(gnu packages base)) 'glibc-utf8-locales)) 585 (module-ref (resolve-interface '(gnu packages base)) 'glibc-utf8-locales))
586 586
587 (define build 587 (define build
588 #~(begin 588 (with-imported-modules '((guix build utils))
589 (use-modules (guix build utils) 589 #~(begin
590 (rnrs io ports) 590 (use-modules (guix build utils)
591 (srfi srfi-1) 591 (rnrs io ports)
592 (srfi srfi-26) 592 (srfi srfi-1)
593 (ice-9 ftw) 593 (srfi srfi-26)
594 (ice-9 match)) 594 (ice-9 ftw)
595 595 (ice-9 match))
596 (define (pem-file? file) 596
597 (string-suffix? ".pem" file)) 597 (define (pem-file? file)
598 598 (string-suffix? ".pem" file))
599 (define (ca-files top) 599
600 (let ((cert-dir (string-append top "/etc/ssl/certs"))) 600 (define (ca-files top)
601 (map (cut string-append cert-dir "/" <>) 601 (let ((cert-dir (string-append top "/etc/ssl/certs")))
602 (or (scandir cert-dir pem-file?) '())))) 602 (map (cut string-append cert-dir "/" <>)
603 603 (or (scandir cert-dir pem-file?) '()))))
604 (define (concatenate-files files result) 604
605 "Make RESULT the concatenation of all of FILES." 605 (define (concatenate-files files result)
606 (define (dump file port) 606 "Make RESULT the concatenation of all of FILES."
607 (display (call-with-input-file file get-string-all) 607 (define (dump file port)
608 port) 608 (display (call-with-input-file file get-string-all)
609 (newline port)) ;required, see <https://bugs.debian.org/635570> 609 port)
610 610 (newline port)) ;required, see <https://bugs.debian.org/635570>
611 (call-with-output-file result 611
612 (lambda (port) 612 (call-with-output-file result
613 (for-each (cut dump <> port) files)))) 613 (lambda (port)
614 614 (for-each (cut dump <> port) files))))
615 ;; Some file names in the NSS certificates are UTF-8 encoded so 615
616 ;; install a UTF-8 locale. 616 ;; Some file names in the NSS certificates are UTF-8 encoded so
617 (setenv "LOCPATH" 617 ;; install a UTF-8 locale.
618 (string-append #+glibc-utf8-locales "/lib/locale/" 618 (setenv "LOCPATH"
619 #+(package-version glibc-utf8-locales))) 619 (string-append #+glibc-utf8-locales "/lib/locale/"
620 (setlocale LC_ALL "en_US.utf8") 620 #+(package-version glibc-utf8-locales)))
621 621 (setlocale LC_ALL "en_US.utf8")
622 (match (append-map ca-files '#$(manifest-inputs manifest)) 622
623 (() 623 (match (append-map ca-files '#$(manifest-inputs manifest))
624 ;; Since there are no CA files, just create an empty directory. Do 624 (()
625 ;; not create the etc/ssl/certs sub-directory, since that would 625 ;; Since there are no CA files, just create an empty directory. Do
626 ;; wrongfully lead to a message about 'SSL_CERT_DIR' needing to be 626 ;; not create the etc/ssl/certs sub-directory, since that would
627 ;; defined. 627 ;; wrongfully lead to a message about 'SSL_CERT_DIR' needing to be
628 (mkdir #$output) 628 ;; defined.
629 #t) 629 (mkdir #$output)
630 ((ca-files ...) 630 #t)
631 (let ((result (string-append #$output "/etc/ssl/certs"))) 631 ((ca-files ...)
632 (mkdir-p result) 632 (let ((result (string-append #$output "/etc/ssl/certs")))
633 (concatenate-files ca-files 633 (mkdir-p result)
634 (string-append result 634 (concatenate-files ca-files
635 "/ca-certificates.crt")) 635 (string-append result
636 #t))))) 636 "/ca-certificates.crt"))
637 #t))))))
637 638
638 (gexp->derivation "ca-certificate-bundle" build 639 (gexp->derivation "ca-certificate-bundle" build
639 #:modules '((guix build utils))
640 #:local-build? #t 640 #:local-build? #t
641 #:substitutable? #f)) 641 #:substitutable? #f))
642 642
@@ -645,44 +645,44 @@ MANIFEST. Single-file bundles are required by programs such as Git and Lynx."
645creates the GTK+ 'icon-theme.cache' file for each theme." 645creates the GTK+ 'icon-theme.cache' file for each theme."
646 (mlet %store-monad ((gtk+ (manifest-lookup-package manifest "gtk+"))) 646 (mlet %store-monad ((gtk+ (manifest-lookup-package manifest "gtk+")))
647 (define build 647 (define build
648 #~(begin 648 (with-imported-modules '((guix build utils)
649 (use-modules (guix build utils) 649 (guix build union)
650 (guix build union) 650 (guix build profiles)
651 (guix build profiles) 651 (guix search-paths)
652 (srfi srfi-26) 652 (guix records))
653 (ice-9 ftw)) 653 #~(begin
654 654 (use-modules (guix build utils)
655 (let* ((destdir (string-append #$output "/share/icons")) 655 (guix build union)
656 (icondirs (filter file-exists? 656 (guix build profiles)
657 (map (cut string-append <> "/share/icons") 657 (srfi srfi-26)
658 '#$(manifest-inputs manifest)))) 658 (ice-9 ftw))
659 (update-icon-cache (string-append 659
660 #+gtk+ "/bin/gtk-update-icon-cache"))) 660 (let* ((destdir (string-append #$output "/share/icons"))
661 661 (icondirs (filter file-exists?
662 ;; Union all the icons. 662 (map (cut string-append <> "/share/icons")
663 (mkdir-p (string-append #$output "/share")) 663 '#$(manifest-inputs manifest))))
664 (union-build destdir icondirs 664 (update-icon-cache (string-append
665 #:log-port (%make-void-port "w")) 665 #+gtk+ "/bin/gtk-update-icon-cache")))
666 666
667 ;; Update the 'icon-theme.cache' file for each icon theme. 667 ;; Union all the icons.
668 (for-each 668 (mkdir-p (string-append #$output "/share"))
669 (lambda (theme) 669 (union-build destdir icondirs
670 (let ((dir (string-append destdir "/" theme))) 670 #:log-port (%make-void-port "w"))
671 ;; Occasionally DESTDIR contains plain files, such as 671
672 ;; "abiword_48.png". Ignore these. 672 ;; Update the 'icon-theme.cache' file for each icon theme.
673 (when (file-is-directory? dir) 673 (for-each
674 (ensure-writable-directory dir) 674 (lambda (theme)
675 (system* update-icon-cache "-t" dir "--quiet")))) 675 (let ((dir (string-append destdir "/" theme)))
676 (scandir destdir (negate (cut member <> '("." "..")))))))) 676 ;; Occasionally DESTDIR contains plain files, such as
677 ;; "abiword_48.png". Ignore these.
678 (when (file-is-directory? dir)
679 (ensure-writable-directory dir)
680 (system* update-icon-cache "-t" dir "--quiet"))))
681 (scandir destdir (negate (cut member <> '("." "..")))))))))
677 682
678 ;; Don't run the hook when there's nothing to do. 683 ;; Don't run the hook when there's nothing to do.
679 (if gtk+ 684 (if gtk+
680 (gexp->derivation "gtk-icon-themes" build 685 (gexp->derivation "gtk-icon-themes" build
681 #:modules '((guix build utils)
682 (guix build union)
683 (guix build profiles)
684 (guix search-paths)
685 (guix records))
686 #:local-build? #t 686 #:local-build? #t
687 #:substitutable? #f) 687 #:substitutable? #f)
688 (return #f)))) 688 (return #f))))
@@ -695,28 +695,28 @@ MIME type."
695 (manifest-lookup-package 695 (manifest-lookup-package
696 manifest "desktop-file-utils"))) 696 manifest "desktop-file-utils")))
697 (define build 697 (define build
698 #~(begin 698 (with-imported-modules '((guix build utils)
699 (use-modules (srfi srfi-26) 699 (guix build union))
700 (guix build utils) 700 #~(begin
701 (guix build union)) 701 (use-modules (srfi srfi-26)
702 (let* ((destdir (string-append #$output "/share/applications")) 702 (guix build utils)
703 (appdirs (filter file-exists? 703 (guix build union))
704 (map (cut string-append <> 704 (let* ((destdir (string-append #$output "/share/applications"))
705 "/share/applications") 705 (appdirs (filter file-exists?
706 '#$(manifest-inputs manifest)))) 706 (map (cut string-append <>
707 (update-desktop-database (string-append 707 "/share/applications")
708 #+desktop-file-utils 708 '#$(manifest-inputs manifest))))
709 "/bin/update-desktop-database"))) 709 (update-desktop-database (string-append
710 (mkdir-p (string-append #$output "/share")) 710 #+desktop-file-utils
711 (union-build destdir appdirs 711 "/bin/update-desktop-database")))
712 #:log-port (%make-void-port "w")) 712 (mkdir-p (string-append #$output "/share"))
713 (exit (zero? (system* update-desktop-database destdir)))))) 713 (union-build destdir appdirs
714 #:log-port (%make-void-port "w"))
715 (exit (zero? (system* update-desktop-database destdir)))))))
714 716
715 ;; Don't run the hook when 'desktop-file-utils' is not referenced. 717 ;; Don't run the hook when 'desktop-file-utils' is not referenced.
716 (if desktop-file-utils 718 (if desktop-file-utils
717 (gexp->derivation "xdg-desktop-database" build 719 (gexp->derivation "xdg-desktop-database" build
718 #:modules '((guix build utils)
719 (guix build union))
720 #:local-build? #t 720 #:local-build? #t
721 #:substitutable? #f) 721 #:substitutable? #f)
722 (return #f)))) 722 (return #f))))
@@ -728,30 +728,30 @@ entries. It's used to query the MIME type of a given file."
728 (manifest-lookup-package 728 (manifest-lookup-package
729 manifest "shared-mime-info"))) 729 manifest "shared-mime-info")))
730 (define build 730 (define build
731 #~(begin 731 (with-imported-modules '((guix build utils)
732 (use-modules (srfi srfi-26) 732 (guix build union))
733 (guix build utils) 733 #~(begin
734 (guix build union)) 734 (use-modules (srfi srfi-26)
735 (let* ((datadir (string-append #$output "/share")) 735 (guix build utils)
736 (destdir (string-append datadir "/mime")) 736 (guix build union))
737 (pkgdirs (filter file-exists? 737 (let* ((datadir (string-append #$output "/share"))
738 (map (cut string-append <> 738 (destdir (string-append datadir "/mime"))
739 "/share/mime/packages") 739 (pkgdirs (filter file-exists?
740 '#$(manifest-inputs manifest)))) 740 (map (cut string-append <>
741 (update-mime-database (string-append 741 "/share/mime/packages")
742 #+shared-mime-info 742 '#$(manifest-inputs manifest))))
743 "/bin/update-mime-database"))) 743 (update-mime-database (string-append
744 (mkdir-p destdir) 744 #+shared-mime-info
745 (union-build (string-append destdir "/packages") pkgdirs 745 "/bin/update-mime-database")))
746 #:log-port (%make-void-port "w")) 746 (mkdir-p destdir)
747 (setenv "XDG_DATA_HOME" datadir) 747 (union-build (string-append destdir "/packages") pkgdirs
748 (exit (zero? (system* update-mime-database destdir)))))) 748 #:log-port (%make-void-port "w"))
749 (setenv "XDG_DATA_HOME" datadir)
750 (exit (zero? (system* update-mime-database destdir)))))))
749 751
750 ;; Don't run the hook when 'shared-mime-info' is referenced. 752 ;; Don't run the hook when 'shared-mime-info' is referenced.
751 (if shared-mime-info 753 (if shared-mime-info
752 (gexp->derivation "xdg-mime-database" build 754 (gexp->derivation "xdg-mime-database" build
753 #:modules '((guix build utils)
754 (guix build union))
755 #:local-build? #t 755 #:local-build? #t
756 #:substitutable? #f) 756 #:substitutable? #f)
757 (return #f)))) 757 (return #f))))
@@ -790,34 +790,34 @@ the monadic procedures listed in HOOKS--such as an Info 'dir' file, etc."
790 (manifest-inputs manifest))) 790 (manifest-inputs manifest)))
791 791
792 (define builder 792 (define builder
793 #~(begin 793 (with-imported-modules '((guix build profiles)
794 (use-modules (guix build profiles) 794 (guix build union)
795 (guix search-paths) 795 (guix build utils)
796 (srfi srfi-1)) 796 (guix search-paths)
797 797 (guix records))
798 (setvbuf (current-output-port) _IOLBF) 798 #~(begin
799 (setvbuf (current-error-port) _IOLBF) 799 (use-modules (guix build profiles)
800 800 (guix search-paths)
801 (define search-paths 801 (srfi srfi-1))
802 ;; Search paths of MANIFEST's packages, converted back to their 802
803 ;; record form. 803 (setvbuf (current-output-port) _IOLBF)
804 (map sexp->search-path-specification 804 (setvbuf (current-error-port) _IOLBF)
805 (delete-duplicates 805
806 '#$(map search-path-specification->sexp 806 (define search-paths
807 (append-map manifest-entry-search-paths 807 ;; Search paths of MANIFEST's packages, converted back to their
808 (manifest-entries manifest)))))) 808 ;; record form.
809 809 (map sexp->search-path-specification
810 (build-profile #$output '#$inputs 810 (delete-duplicates
811 #:manifest '#$(manifest->gexp manifest) 811 '#$(map search-path-specification->sexp
812 #:search-paths search-paths))) 812 (append-map manifest-entry-search-paths
813 (manifest-entries manifest))))))
814
815 (build-profile #$output '#$inputs
816 #:manifest '#$(manifest->gexp manifest)
817 #:search-paths search-paths))))
813 818
814 (gexp->derivation "profile" builder 819 (gexp->derivation "profile" builder
815 #:system system 820 #:system system
816 #:modules '((guix build profiles)
817 (guix build union)
818 (guix build utils)
819 (guix search-paths)
820 (guix records))
821 821
822 ;; Not worth offloading. 822 ;; Not worth offloading.
823 #:local-build? #t 823 #:local-build? #t
diff --git a/guix/records.scm b/guix/records.scm
index 0d35a747b00..f3f3aafb045 100644
--- a/guix/records.scm
+++ b/guix/records.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, 2014, 2015 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
3;;; 3;;;
4;;; This file is part of GNU Guix. 4;;; This file is part of GNU Guix.
5;;; 5;;;
@@ -42,6 +42,15 @@
42 (format #f fmt args ...) 42 (format #f fmt args ...)
43 form)))) 43 form))))
44 44
45(define (report-invalid-field-specifier name bindings)
46 "Report the first invalid binding among BINDINGS."
47 (let loop ((bindings bindings))
48 (syntax-case bindings ()
49 (((field value) rest ...) ;good
50 (loop #'(rest ...)))
51 ((weird _ ...) ;weird!
52 (syntax-violation name "invalid field specifier" #'weird)))))
53
45(define-syntax make-syntactic-constructor 54(define-syntax make-syntactic-constructor
46 (syntax-rules () 55 (syntax-rules ()
47 "Make the syntactic constructor NAME for TYPE, that calls CTOR, and 56 "Make the syntactic constructor NAME for TYPE, that calls CTOR, and
@@ -147,7 +156,13 @@ fields, and DELAYED is the list of identifiers of delayed fields."
147 "missing field initializers ~a" 156 "missing field initializers ~a"
148 (lset-difference eq? 157 (lset-difference eq?
149 '(expected ...) 158 '(expected ...)
150 fields))))))))))))) 159 fields)))))))
160 ((_ bindings (... ...))
161 ;; One of BINDINGS doesn't match the (field value) pattern.
162 ;; Report precisely which one is faulty, instead of letting the
163 ;; "source expression failed to match any pattern" error.
164 (report-invalid-field-specifier 'name
165 #'(bindings (... ...))))))))))
151 166
152(define-syntax-rule (define-field-property-predicate predicate property) 167(define-syntax-rule (define-field-property-predicate predicate property)
153 "Define PREDICATE as a procedure that takes a syntax object and, when passed 168 "Define PREDICATE as a procedure that takes a syntax object and, when passed
diff --git a/guix/scripts/challenge.scm b/guix/scripts/challenge.scm
index 149647cfdf7..590d8f10993 100644
--- a/guix/scripts/challenge.scm
+++ b/guix/scripts/challenge.scm
@@ -21,6 +21,7 @@
21 #:use-module (guix scripts) 21 #:use-module (guix scripts)
22 #:use-module (guix store) 22 #:use-module (guix store)
23 #:use-module (guix utils) 23 #:use-module (guix utils)
24 #:use-module (guix grafts)
24 #:use-module (guix monads) 25 #:use-module (guix monads)
25 #:use-module (guix base32) 26 #:use-module (guix base32)
26 #:use-module (guix packages) 27 #:use-module (guix packages)
@@ -222,23 +223,26 @@ Challenge the substitutes for PACKAGE... provided by one or more servers.\n"))
222 (urls (assoc-ref opts 'substitute-urls))) 223 (urls (assoc-ref opts 'substitute-urls)))
223 (leave-on-EPIPE 224 (leave-on-EPIPE
224 (with-store store 225 (with-store store
225 (let ((files (match files 226 ;; Disable grafts since substitute servers normally provide only
226 (() 227 ;; ungrafted stuff.
227 (filter (cut locally-built? store <>) 228 (parameterize ((%graft? #f))
228 (live-paths store))) 229 (let ((files (match files
229 (x 230 (()
230 files)))) 231 (filter (cut locally-built? store <>)
231 (set-build-options store 232 (live-paths store)))
232 #:use-substitutes? #f) 233 (x
233 234 files))))
234 (run-with-store store 235 (set-build-options store
235 (mlet* %store-monad ((items (mapm %store-monad 236 #:use-substitutes? #f)
236 ensure-store-item files)) 237
237 (issues (discrepancies items urls))) 238 (run-with-store store
238 (for-each summarize-discrepancy issues) 239 (mlet* %store-monad ((items (mapm %store-monad
239 (unless (null? issues) 240 ensure-store-item files))
240 (exit 2)) 241 (issues (discrepancies items urls)))
241 (return (null? issues))) 242 (for-each summarize-discrepancy issues)
242 #:system system))))))) 243 (unless (null? issues)
244 (exit 2))
245 (return (null? issues)))
246 #:system system))))))))
243 247
244;;; challenge.scm ends here 248;;; challenge.scm ends here
diff --git a/guix/scripts/gc.scm b/guix/scripts/gc.scm
index 8db28138c84..bdfee4308cb 100644
--- a/guix/scripts/gc.scm
+++ b/guix/scripts/gc.scm
@@ -24,6 +24,7 @@
24 #:use-module (ice-9 match) 24 #:use-module (ice-9 match)
25 #:use-module (ice-9 regex) 25 #:use-module (ice-9 regex)
26 #:use-module (srfi srfi-1) 26 #:use-module (srfi srfi-1)
27 #:use-module (srfi srfi-11)
27 #:use-module (srfi srfi-26) 28 #:use-module (srfi srfi-26)
28 #:use-module (srfi srfi-37) 29 #:use-module (srfi srfi-37)
29 #:export (guix-gc)) 30 #:export (guix-gc))
@@ -221,9 +222,11 @@ Invoke the garbage collector.\n"))
221 (free-space 222 (free-space
222 (ensure-free-space store free-space)) 223 (ensure-free-space store free-space))
223 (min-freed 224 (min-freed
224 (collect-garbage store min-freed)) 225 (let-values (((paths freed) (collect-garbage store min-freed)))
226 (info (_ "freed ~h bytes~%") freed)))
225 (else 227 (else
226 (collect-garbage store))))) 228 (let-values (((paths freed) (collect-garbage store)))
229 (info (_ "freed ~h bytes~%") freed))))))
227 ((delete) 230 ((delete)
228 (delete-paths store (map direct-store-path paths))) 231 (delete-paths store (map direct-store-path paths)))
229 ((list-references) 232 ((list-references)
diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm
index b4fdb6f9050..d5e9197cc95 100644
--- a/guix/scripts/lint.scm
+++ b/guix/scripts/lint.scm
@@ -359,7 +359,22 @@ warning for PACKAGE mentionning the FIELD."
359 (probe-uri uri #:timeout 3))) ;wait at most 3 seconds 359 (probe-uri uri #:timeout 3))) ;wait at most 3 seconds
360 (case status 360 (case status
361 ((http-response) 361 ((http-response)
362 (or (= 200 (response-code argument)) 362 (if (= 200 (response-code argument))
363 (match (response-content-length argument)
364 ((? number? length)
365 ;; As of July 2016, SourceForge returns 200 (instead of 404)
366 ;; with a small HTML page upon failure. Attempt to detect such
367 ;; malicious behavior.
368 (or (> length 1000)
369 (begin
370 (emit-warning package
371 (format #f
372 (_ "URI ~a returned \
373suspiciously small file (~a bytes)")
374 (uri->string uri)
375 length))
376 #f)))
377 (_ #t))
363 (begin 378 (begin
364 (emit-warning package 379 (emit-warning package
365 (format #f 380 (format #f
diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm
index 4c0aa8e4199..3baceaf6455 100644
--- a/guix/scripts/publish.scm
+++ b/guix/scripts/publish.scm
@@ -27,6 +27,7 @@
27 #:use-module (rnrs bytevectors) 27 #:use-module (rnrs bytevectors)
28 #:use-module (srfi srfi-1) 28 #:use-module (srfi srfi-1)
29 #:use-module (srfi srfi-2) 29 #:use-module (srfi srfi-2)
30 #:use-module (srfi srfi-9)
30 #:use-module (srfi srfi-9 gnu) 31 #:use-module (srfi srfi-9 gnu)
31 #:use-module (srfi srfi-19) 32 #:use-module (srfi srfi-19)
32 #:use-module (srfi srfi-26) 33 #:use-module (srfi srfi-26)
@@ -45,6 +46,7 @@
45 #:use-module (guix pk-crypto) 46 #:use-module (guix pk-crypto)
46 #:use-module (guix store) 47 #:use-module (guix store)
47 #:use-module (guix serialization) 48 #:use-module (guix serialization)
49 #:use-module (guix zlib)
48 #:use-module (guix ui) 50 #:use-module (guix ui)
49 #:use-module (guix scripts) 51 #:use-module (guix scripts)
50 #:export (guix-publish)) 52 #:export (guix-publish))
@@ -59,6 +61,9 @@ Publish ~a over HTTP.\n") %store-directory)
59 (display (_ " 61 (display (_ "
60 -u, --user=USER change privileges to USER as soon as possible")) 62 -u, --user=USER change privileges to USER as soon as possible"))
61 (display (_ " 63 (display (_ "
64 -C, --compression[=LEVEL]
65 compress archives at LEVEL"))
66 (display (_ "
62 --ttl=TTL announce narinfos can be cached for TTL seconds")) 67 --ttl=TTL announce narinfos can be cached for TTL seconds"))
63 (display (_ " 68 (display (_ "
64 -r, --repl[=PORT] spawn REPL server on PORT")) 69 -r, --repl[=PORT] spawn REPL server on PORT"))
@@ -79,6 +84,20 @@ Publish ~a over HTTP.\n") %store-directory)
79 (leave (_ "lookup of host '~a' failed: ~a~%") 84 (leave (_ "lookup of host '~a' failed: ~a~%")
80 host (gai-strerror error))))) 85 host (gai-strerror error)))))
81 86
87;; Nar compression parameters.
88(define-record-type <compression>
89 (compression type level)
90 compression?
91 (type compression-type)
92 (level compression-level))
93
94(define %no-compression
95 (compression 'none 0))
96
97(define %default-gzip-compression
98 ;; Since we compress on the fly, default to fast compression.
99 (compression 'gzip 3))
100
82(define %options 101(define %options
83 (list (option '(#\h "help") #f #f 102 (list (option '(#\h "help") #f #f
84 (lambda _ 103 (lambda _
@@ -102,6 +121,20 @@ Publish ~a over HTTP.\n") %store-directory)
102 (() 121 (()
103 (leave (_ "lookup of host '~a' returned nothing") 122 (leave (_ "lookup of host '~a' returned nothing")
104 name))))) 123 name)))))
124 (option '(#\C "compression") #f #t
125 (lambda (opt name arg result)
126 (match (if arg (string->number* arg) 3)
127 (0
128 (alist-cons 'compression %no-compression result))
129 (level
130 (if (zlib-available?)
131 (alist-cons 'compression
132 (compression 'gzip level)
133 result)
134 (begin
135 (warning (_ "zlib support is missing; \
136compression disabled~%"))
137 result))))))
105 (option '("ttl") #t #f 138 (option '("ttl") #t #f
106 (lambda (opt name arg result) 139 (lambda (opt name arg result)
107 (let ((duration (string->duration arg))) 140 (let ((duration (string->duration arg)))
@@ -117,6 +150,12 @@ Publish ~a over HTTP.\n") %store-directory)
117 150
118(define %default-options 151(define %default-options
119 `((port . 8080) 152 `((port . 8080)
153
154 ;; Default to fast & low compression.
155 (compression . ,(if (zlib-available?)
156 %default-gzip-compression
157 %no-compression))
158
120 (address . ,(make-socket-address AF_INET INADDR_ANY 0)) 159 (address . ,(make-socket-address AF_INET INADDR_ANY 0))
121 (repl . #f))) 160 (repl . #f)))
122 161
@@ -152,12 +191,20 @@ Publish ~a over HTTP.\n") %store-directory)
152(define base64-encode-string 191(define base64-encode-string
153 (compose base64-encode string->utf8)) 192 (compose base64-encode string->utf8))
154 193
155(define (narinfo-string store store-path key) 194(define* (narinfo-string store store-path key
195 #:key (compression %no-compression))
156 "Generate a narinfo key/value string for STORE-PATH; an exception is raised 196 "Generate a narinfo key/value string for STORE-PATH; an exception is raised
157if STORE-PATH is invalid. The narinfo is signed with KEY." 197if STORE-PATH is invalid. Produce a URL that corresponds to COMPRESSION. The
198narinfo is signed with KEY."
158 (let* ((path-info (query-path-info store store-path)) 199 (let* ((path-info (query-path-info store store-path))
159 (url (encode-and-join-uri-path (list "nar" 200 (url (encode-and-join-uri-path
160 (basename store-path)))) 201 `("nar"
202 ,@(match compression
203 (($ <compression> 'none)
204 '())
205 (($ <compression> type)
206 (list (symbol->string type))))
207 ,(basename store-path))))
161 (hash (bytevector->nix-base32-string 208 (hash (bytevector->nix-base32-string
162 (path-info-hash path-info))) 209 (path-info-hash path-info)))
163 (size (path-info-nar-size path-info)) 210 (size (path-info-nar-size path-info))
@@ -166,13 +213,16 @@ if STORE-PATH is invalid. The narinfo is signed with KEY."
166 " ")) 213 " "))
167 (deriver (path-info-deriver path-info)) 214 (deriver (path-info-deriver path-info))
168 (base-info (format #f 215 (base-info (format #f
169 "StorePath: ~a 216 "\
217StorePath: ~a
170URL: ~a 218URL: ~a
171Compression: none 219Compression: ~a
172NarHash: sha256:~a 220NarHash: sha256:~a
173NarSize: ~d 221NarSize: ~d
174References: ~a~%" 222References: ~a~%"
175 store-path url hash size references)) 223 store-path url
224 (compression-type compression)
225 hash size references))
176 ;; Do not render a "Deriver" or "System" line if we are rendering 226 ;; Do not render a "Deriver" or "System" line if we are rendering
177 ;; info for a derivation. 227 ;; info for a derivation.
178 (info (if (not deriver) 228 (info (if (not deriver)
@@ -209,7 +259,8 @@ References: ~a~%"
209 (format port "~a: ~a~%" key value))) 259 (format port "~a: ~a~%" key value)))
210 %nix-cache-info)))) 260 %nix-cache-info))))
211 261
212(define* (render-narinfo store request hash #:key ttl) 262(define* (render-narinfo store request hash
263 #:key ttl (compression %no-compression))
213 "Render metadata for the store path corresponding to HASH. If TTL is true, 264 "Render metadata for the store path corresponding to HASH. If TTL is true,
214advertise it as the maximum validity period (in seconds) via the 265advertise it as the maximum validity period (in seconds) via the
215'Cache-Control' header. This allows 'guix substitute' to cache it for an 266'Cache-Control' header. This allows 'guix substitute' to cache it for an
@@ -222,18 +273,35 @@ appropriate duration."
222 `((cache-control (max-age . ,ttl))) 273 `((cache-control (max-age . ,ttl)))
223 '())) 274 '()))
224 (cut display 275 (cut display
225 (narinfo-string store store-path (force %private-key)) 276 (narinfo-string store store-path (force %private-key)
226 <>))))) 277 #:compression compression)
227 278 <>)))))
228(define (render-nar store request store-item) 279
280;; XXX: Declare the 'Guix-Compression' HTTP header, which is in fact for
281;; internal consumption: it allows us to pass the compression info to
282;; 'http-write', as part of the workaround to <http://bugs.gnu.org/21093>.
283(declare-header! "Guix-Nar-Compression"
284 (lambda (str)
285 (match (call-with-input-string str read)
286 (('compression type level)
287 (compression type level))))
288 compression?
289 (lambda (compression port)
290 (match compression
291 (($ <compression> type level)
292 (write `(compression ,type ,level) port)))))
293
294(define* (render-nar store request store-item
295 #:key (compression %no-compression))
229 "Render archive of the store path corresponding to STORE-ITEM." 296 "Render archive of the store path corresponding to STORE-ITEM."
230 (let ((store-path (string-append %store-directory "/" store-item))) 297 (let ((store-path (string-append %store-directory "/" store-item)))
231 ;; The ISO-8859-1 charset *must* be used otherwise HTTP clients will 298 ;; The ISO-8859-1 charset *must* be used otherwise HTTP clients will
232 ;; interpret the byte stream as UTF-8 and arbitrarily change invalid byte 299 ;; interpret the byte stream as UTF-8 and arbitrarily change invalid byte
233 ;; sequences. 300 ;; sequences.
234 (if (valid-path? store store-path) 301 (if (valid-path? store store-path)
235 (values '((content-type . (application/x-nix-archive 302 (values `((content-type . (application/x-nix-archive
236 (charset . "ISO-8859-1")))) 303 (charset . "ISO-8859-1")))
304 (guix-nar-compression . ,compression))
237 ;; XXX: We're not returning the actual contents, deferring 305 ;; XXX: We're not returning the actual contents, deferring
238 ;; instead to 'http-write'. This is a hack to work around 306 ;; instead to 'http-write'. This is a hack to work around
239 ;; <http://bugs.gnu.org/21093>. 307 ;; <http://bugs.gnu.org/21093>.
@@ -282,6 +350,28 @@ example: \"/foo/bar\" yields '(\"foo\" \"bar\")."
282 (values) 350 (values)
283 (apply throw args))))) 351 (apply throw args)))))
284 352
353(define-syntax-rule (swallow-zlib-error exp ...)
354 "Swallow 'zlib-error' exceptions raised by EXP..."
355 (catch 'zlib-error
356 (lambda ()
357 exp ...)
358 (const #f)))
359
360(define (nar-response-port response)
361 "Return a port on which to write the body of RESPONSE, the response of a
362/nar request, according to COMPRESSION."
363 (match (assoc-ref (response-headers response) 'guix-nar-compression)
364 (($ <compression> 'gzip level)
365 ;; Note: We cannot used chunked encoding here because
366 ;; 'make-gzip-output-port' wants a file port.
367 (make-gzip-output-port (response-port response)
368 #:level level
369 #:buffer-size (* 64 1024)))
370 (($ <compression> 'none)
371 (response-port response))
372 (#f
373 (response-port response))))
374
285(define (http-write server client response body) 375(define (http-write server client response body)
286 "Write RESPONSE and BODY to CLIENT, possibly in a separate thread to avoid 376 "Write RESPONSE and BODY to CLIENT, possibly in a separate thread to avoid
287blocking." 377blocking."
@@ -293,16 +383,20 @@ blocking."
293 (lambda () 383 (lambda ()
294 (let* ((response (write-response (sans-content-length response) 384 (let* ((response (write-response (sans-content-length response)
295 client)) 385 client))
296 (port (response-port response))) 386 (port (begin
387 (force-output client)
388 (nar-response-port response))))
297 ;; XXX: Given our ugly workaround for <http://bugs.gnu.org/21093> in 389 ;; XXX: Given our ugly workaround for <http://bugs.gnu.org/21093> in
298 ;; 'render-nar', BODY here is just the file name of the store item. 390 ;; 'render-nar', BODY here is just the file name of the store item.
299 ;; We call 'write-file' from here because we know that's the only 391 ;; We call 'write-file' from here because we know that's the only
300 ;; way to avoid building the whole nar in memory, which could 392 ;; way to avoid building the whole nar in memory, which could
301 ;; quickly become a real problem. As a bonus, we even do 393 ;; quickly become a real problem. As a bonus, we even do
302 ;; sendfile(2) directly from the store files to the socket. 394 ;; sendfile(2) directly from the store files to the socket.
303 (swallow-EPIPE 395 (swallow-zlib-error
304 (write-file (utf8->string body) port)) 396 (swallow-EPIPE
305 (close-port port) 397 (write-file (utf8->string body) port)))
398 (swallow-zlib-error
399 (close-port port))
306 (values))))) 400 (values)))))
307 (_ 401 (_
308 ;; Handle other responses sequentially. 402 ;; Handle other responses sequentially.
@@ -316,7 +410,10 @@ blocking."
316 http-write 410 http-write
317 (@@ (web server http) http-close)) 411 (@@ (web server http) http-close))
318 412
319(define* (make-request-handler store #:key narinfo-ttl) 413(define* (make-request-handler store
414 #:key
415 narinfo-ttl
416 (compression %no-compression))
320 (lambda (request body) 417 (lambda (request body)
321 (format #t "~a ~a~%" 418 (format #t "~a ~a~%"
322 (request-method request) 419 (request-method request)
@@ -330,16 +427,37 @@ blocking."
330 (((= extract-narinfo-hash (? string? hash))) 427 (((= extract-narinfo-hash (? string? hash)))
331 ;; TODO: Register roots for HASH that will somehow remain for 428 ;; TODO: Register roots for HASH that will somehow remain for
332 ;; NARINFO-TTL. 429 ;; NARINFO-TTL.
333 (render-narinfo store request hash #:ttl narinfo-ttl)) 430 (render-narinfo store request hash
431 #:ttl narinfo-ttl
432 #:compression compression))
433
434 ;; Use different URLs depending on the compression type. This
435 ;; guarantees that /nar URLs remain valid even when 'guix publish'
436 ;; is restarted with different compression parameters.
437
334 ;; /nar/<store-item> 438 ;; /nar/<store-item>
335 (("nar" store-item) 439 (("nar" store-item)
336 (render-nar store request store-item)) 440 (render-nar store request store-item
441 #:compression %no-compression))
442 ;; /nar/gzip/<store-item>
443 (("nar" "gzip" store-item)
444 (if (zlib-available?)
445 (render-nar store request store-item
446 #:compression
447 (match compression
448 (($ <compression> 'gzip)
449 compression)
450 (_
451 %default-gzip-compression)))
452 (not-found request)))
337 (_ (not-found request))) 453 (_ (not-found request)))
338 (not-found request)))) 454 (not-found request))))
339 455
340(define* (run-publish-server socket store 456(define* (run-publish-server socket store
341 #:key narinfo-ttl) 457 #:key (compression %no-compression) narinfo-ttl)
342 (run-server (make-request-handler store #:narinfo-ttl narinfo-ttl) 458 (run-server (make-request-handler store
459 #:narinfo-ttl narinfo-ttl
460 #:compression compression)
343 concurrent-http-server 461 concurrent-http-server
344 `(#:socket ,socket))) 462 `(#:socket ,socket)))
345 463
@@ -378,6 +496,7 @@ blocking."
378 (user (assoc-ref opts 'user)) 496 (user (assoc-ref opts 'user))
379 (port (assoc-ref opts 'port)) 497 (port (assoc-ref opts 'port))
380 (ttl (assoc-ref opts 'narinfo-ttl)) 498 (ttl (assoc-ref opts 'narinfo-ttl))
499 (compression (assoc-ref opts 'compression))
381 (address (let ((addr (assoc-ref opts 'address))) 500 (address (let ((addr (assoc-ref opts 'address)))
382 (make-socket-address (sockaddr:fam addr) 501 (make-socket-address (sockaddr:fam addr)
383 (sockaddr:addr addr) 502 (sockaddr:addr addr)
@@ -404,4 +523,6 @@ consider using the '--user' option!~%")))
404 (when repl-port 523 (when repl-port
405 (repl:spawn-server (repl:make-tcp-server-socket #:port repl-port))) 524 (repl:spawn-server (repl:make-tcp-server-socket #:port repl-port)))
406 (with-store store 525 (with-store store
407 (run-publish-server socket store #:narinfo-ttl ttl))))) 526 (run-publish-server socket store
527 #:compression compression
528 #:narinfo-ttl ttl)))))
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 5722aa821d7..8827c45fb81 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -610,7 +610,8 @@ if file doesn't exist, and the narinfo otherwise."
610 (update-progress!) 610 (update-progress!)
611 (cons narinfo result)) 611 (cons narinfo result))
612 (let* ((path (uri-path (request-uri request))) 612 (let* ((path (uri-path (request-uri request)))
613 (hash-part (string-drop-right path 8))) ; drop ".narinfo" 613 (hash-part (basename
614 (string-drop-right path 8)))) ;drop ".narinfo"
614 (if len 615 (if len
615 (get-bytevector-n port len) 616 (get-bytevector-n port len)
616 (read-to-eof port)) 617 (read-to-eof port))
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index dd1e534c9b3..e2c6b2efee5 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -362,7 +362,7 @@ it atomically, and then run OS's activation script."
362 ;; The activation script may modify '%load-path' & co., so protect 362 ;; The activation script may modify '%load-path' & co., so protect
363 ;; against that. This is necessary to ensure that 363 ;; against that. This is necessary to ensure that
364 ;; 'upgrade-shepherd-services' gets to see the right modules when it 364 ;; 'upgrade-shepherd-services' gets to see the right modules when it
365 ;; computes derivations with (gexp->derivation #:modules …). 365 ;; computes derivations with 'gexp->derivation'.
366 (save-load-path-excursion 366 (save-load-path-excursion
367 (primitive-load (derivation->output-path script)))) 367 (primitive-load (derivation->output-path script))))
368 368
diff --git a/guix/store.scm b/guix/store.scm
index 276684e2fbe..9f409b42097 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -510,7 +510,7 @@ encoding conversion errors."
510 (map (if (false-if-exception (resolve-interface '(gnutls))) 510 (map (if (false-if-exception (resolve-interface '(gnutls)))
511 (cut string-append "https://" <>) 511 (cut string-append "https://" <>)
512 (cut string-append "http://" <>)) 512 (cut string-append "http://" <>))
513 '("mirror.hydra.gnu.org" "hydra.gnu.org"))) 513 '("mirror.hydra.gnu.org")))
514 514
515(define* (set-build-options server 515(define* (set-build-options server
516 #:key keep-failed? keep-going? fallback? 516 #:key keep-failed? keep-going? fallback?
diff --git a/guix/svn-download.scm b/guix/svn-download.scm
index d6853ca861b..c1200fa0c5f 100644
--- a/guix/svn-download.scm
+++ b/guix/svn-download.scm
@@ -1,5 +1,5 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in> 3;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
4;;; 4;;;
5;;; This file is part of GNU Guix. 5;;; This file is part of GNU Guix.
@@ -41,8 +41,10 @@
41(define-record-type* <svn-reference> 41(define-record-type* <svn-reference>
42 svn-reference make-svn-reference 42 svn-reference make-svn-reference
43 svn-reference? 43 svn-reference?
44 (url svn-reference-url) ; string 44 (url svn-reference-url) ; string
45 (revision svn-reference-revision)) ; number 45 (revision svn-reference-revision) ; number
46 (user-name svn-reference-user-name (default #f))
47 (password svn-reference-password (default #f)))
46 48
47(define (subversion-package) 49(define (subversion-package)
48 "Return the default Subversion package." 50 "Return the default Subversion package."
@@ -57,12 +59,16 @@
57object. The output is expected to have recursive hash HASH of type 59object. The output is expected to have recursive hash HASH of type
58HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." 60HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f."
59 (define build 61 (define build
60 #~(begin 62 (with-imported-modules '((guix build svn)
61 (use-modules (guix build svn)) 63 (guix build utils))
62 (svn-fetch '#$(svn-reference-url ref) 64 #~(begin
63 '#$(svn-reference-revision ref) 65 (use-modules (guix build svn))
64 #$output 66 (svn-fetch '#$(svn-reference-url ref)
65 #:svn-command (string-append #+svn "/bin/svn")))) 67 '#$(svn-reference-revision ref)
68 #$output
69 #:svn-command (string-append #+svn "/bin/svn")
70 #:user-name #$(svn-reference-user-name ref)
71 #:password #$(svn-reference-password ref)))))
66 72
67 (mlet %store-monad ((guile (package->derivation guile system))) 73 (mlet %store-monad ((guile (package->derivation guile system)))
68 (gexp->derivation (or name "svn-checkout") build 74 (gexp->derivation (or name "svn-checkout") build
@@ -70,8 +76,6 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f."
70 #:hash-algo hash-algo 76 #:hash-algo hash-algo
71 #:hash hash 77 #:hash hash
72 #:recursive? #t 78 #:recursive? #t
73 #:modules '((guix build svn)
74 (guix build utils))
75 #:guile-for-build guile 79 #:guile-for-build guile
76 #:local-build? #t))) 80 #:local-build? #t)))
77 81
diff --git a/guix/zlib.scm b/guix/zlib.scm
new file mode 100644
index 00000000000..51e5e9e4263
--- /dev/null
+++ b/guix/zlib.scm
@@ -0,0 +1,234 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2016 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 (guix zlib)
20 #:use-module (rnrs bytevectors)
21 #:use-module (ice-9 binary-ports)
22 #:use-module (ice-9 match)
23 #:use-module (system foreign)
24 #:use-module (guix config)
25 #:export (zlib-available?
26 make-gzip-input-port
27 make-gzip-output-port
28 call-with-gzip-input-port
29 call-with-gzip-output-port
30 %default-buffer-size
31 %default-compression-level))
32
33;;; Commentary:
34;;;
35;;; Bindings to the gzip-related part of zlib's API. The main limitation of
36;;; this API is that it requires a file descriptor as the source or sink.
37;;;
38;;; Code:
39
40(define %zlib
41 ;; File name of zlib's shared library. When updating via 'guix pull',
42 ;; '%libz' might be undefined so protect against it.
43 (delay (dynamic-link (if (defined? '%libz)
44 %libz
45 "libz"))))
46
47(define (zlib-available?)
48 "Return true if zlib is available, #f otherwise."
49 (false-if-exception (force %zlib)))
50
51(define (zlib-procedure ret name parameters)
52 "Return a procedure corresponding to C function NAME in libz, or #f if
53either zlib or the function could not be found."
54 (match (false-if-exception (dynamic-func name (force %zlib)))
55 ((? pointer? ptr)
56 (pointer->procedure ret ptr parameters))
57 (#f
58 #f)))
59
60(define-wrapped-pointer-type <gzip-file>
61 ;; Scheme counterpart of the 'gzFile' opaque type.
62 gzip-file?
63 pointer->gzip-file
64 gzip-file->pointer
65 (lambda (obj port)
66 (format port "#<gzip-file ~a>"
67 (number->string (object-address obj) 16))))
68
69(define gzerror
70 (let ((proc (zlib-procedure '* "gzerror" '(* *))))
71 (lambda (gzfile)
72 (let* ((errnum* (make-bytevector (sizeof int)))
73 (ptr (proc (gzip-file->pointer gzfile)
74 (bytevector->pointer errnum*))))
75 (values (bytevector-sint-ref errnum* 0
76 (native-endianness) (sizeof int))
77 (pointer->string ptr))))))
78
79(define gzdopen
80 (let ((proc (zlib-procedure '* "gzdopen" (list int '*))))
81 (lambda (fd mode)
82 "Open file descriptor FD as a gzip stream with the given MODE. MODE must
83be a string denoting the how FD is to be opened, such as \"r\" for reading or
84\"w9\" for writing data compressed at level 9 to FD. Calling 'gzclose' also
85closes FD."
86 (let ((result (proc fd (string->pointer mode))))
87 (if (null-pointer? result)
88 (throw 'zlib-error 'gzdopen)
89 (pointer->gzip-file result))))))
90
91(define gzread!
92 (let ((proc (zlib-procedure int "gzread" (list '* '* unsigned-int))))
93 (lambda* (gzfile bv #:optional (start 0) (count (bytevector-length bv)))
94 "Read up to COUNT bytes from GZFILE into BV at offset START. Return the
95number of uncompressed bytes actually read."
96 (let ((ret (proc (gzip-file->pointer gzfile)
97 (bytevector->pointer bv start)
98 count)))
99 (if (< ret 0)
100 (throw 'zlib-error 'gzread! ret)
101 ret)))))
102
103(define gzwrite
104 (let ((proc (zlib-procedure int "gzwrite" (list '* '* unsigned-int))))
105 (lambda* (gzfile bv #:optional (start 0) (count (bytevector-length bv)))
106 "Write up to COUNT bytes from BV at offset START into GZFILE. Return
107the number of uncompressed bytes written, a strictly positive integer."
108 (let ((ret (proc (gzip-file->pointer gzfile)
109 (bytevector->pointer bv start)
110 count)))
111 (if (<= ret 0)
112 (throw 'zlib-error 'gzwrite ret)
113 ret)))))
114
115(define gzbuffer!
116 (let ((proc (zlib-procedure int "gzbuffer" (list '* unsigned-int))))
117 (lambda (gzfile size)
118 "Change the internal buffer size of GZFILE to SIZE bytes."
119 (let ((ret (proc (gzip-file->pointer gzfile) size)))
120 (unless (zero? ret)
121 (throw 'zlib-error 'gzbuffer! ret))))))
122
123(define gzeof?
124 (let ((proc (zlib-procedure int "gzeof" '(*))))
125 (lambda (gzfile)
126 "Return true if the end-of-file has been reached on GZFILE."
127 (not (zero? (proc (gzip-file->pointer gzfile)))))))
128
129(define gzclose
130 (let ((proc (zlib-procedure int "gzclose" '(*))))
131 (lambda (gzfile)
132 "Close GZFILE."
133 (let ((ret (proc (gzip-file->pointer gzfile))))
134 (unless (zero? ret)
135 (throw 'zlib-error 'gzclose ret (gzerror gzfile)))))))
136
137
138
139;;;
140;;; Port interface.
141;;;
142
143(define %default-buffer-size
144 ;; Default buffer size, as documented in <zlib.h>.
145 8192)
146
147(define %default-compression-level
148 ;; Z_DEFAULT_COMPRESSION.
149 -1)
150
151(define (close-procedure gzfile port)
152 "Return a procedure that closes GZFILE, ensuring its underlying PORT is
153closed even if closing GZFILE triggers an exception."
154 (lambda ()
155 (catch 'zlib-error
156 (lambda ()
157 ;; 'gzclose' closes the underlying file descriptor. 'close-port'
158 ;; calls close(2), gets EBADF, which is ignores.
159 (gzclose gzfile)
160 (close-port port))
161 (lambda args
162 ;; Make sure PORT is closed despite the zlib error.
163 (close-port port)
164 (apply throw args)))))
165
166(define* (make-gzip-input-port port #:key (buffer-size %default-buffer-size))
167 "Return an input port that decompresses data read from PORT, a file port.
168PORT is automatically closed when the resulting port is closed. BUFFER-SIZE
169is the size in bytes of the internal buffer, 8 KiB by default; using a larger
170buffer increases decompression speed."
171 (define gzfile
172 (gzdopen (fileno port) "r"))
173
174 (define (read! bv start count)
175 ;; XXX: Can 'gzread!' return zero even though we haven't reached the EOF?
176 (gzread! gzfile bv start count))
177
178 (unless (= buffer-size %default-buffer-size)
179 (gzbuffer! gzfile buffer-size))
180
181 (make-custom-binary-input-port "gzip-input" read! #f #f
182 (close-procedure gzfile port)))
183
184(define* (make-gzip-output-port port
185 #:key
186 (level %default-compression-level)
187 (buffer-size %default-buffer-size))
188 "Return an output port that compresses data at the given LEVEL, using PORT,
189a file port, as its sink. PORT is automatically closed when the resulting
190port is closed."
191 (define gzfile
192 (gzdopen (fileno port)
193 (string-append "w" (number->string level))))
194
195 (define (write! bv start count)
196 (gzwrite gzfile bv start count))
197
198 (unless (= buffer-size %default-buffer-size)
199 (gzbuffer! gzfile buffer-size))
200
201 (make-custom-binary-output-port "gzip-output" write! #f #f
202 (close-procedure gzfile port)))
203
204(define* (call-with-gzip-input-port port proc
205 #:key (buffer-size %default-buffer-size))
206 "Call PROC with a port that wraps PORT and decompresses data read from it.
207PORT is closed upon completion. The gzip internal buffer size is set to
208BUFFER-SIZE bytes."
209 (let ((gzip (make-gzip-input-port port #:buffer-size buffer-size)))
210 (dynamic-wind
211 (const #t)
212 (lambda ()
213 (proc gzip))
214 (lambda ()
215 (close-port gzip)))))
216
217(define* (call-with-gzip-output-port port proc
218 #:key
219 (level %default-compression-level)
220 (buffer-size %default-buffer-size))
221 "Call PROC with an output port that wraps PORT and compresses data. PORT is
222close upon completion. The gzip internal buffer size is set to BUFFER-SIZE
223bytes."
224 (let ((gzip (make-gzip-output-port port
225 #:level level
226 #:buffer-size buffer-size)))
227 (dynamic-wind
228 (const #t)
229 (lambda ()
230 (proc gzip))
231 (lambda ()
232 (close-port gzip)))))
233
234;;; zlib.scm ends here
diff --git a/m4/guix.m4 b/m4/guix.m4
index 654789e1d9b..949ae4ca7c6 100644
--- a/m4/guix.m4
+++ b/m4/guix.m4
@@ -295,6 +295,17 @@ AC_DEFUN([GUIX_LIBGCRYPT_LIBDIR], [
295 $1="$guix_cv_libgcrypt_libdir" 295 $1="$guix_cv_libgcrypt_libdir"
296]) 296])
297 297
298dnl GUIX_LIBZ_LIBDIR VAR
299dnl
300dnl Attempt to determine libz's LIBDIR; store the result in VAR.
301AC_DEFUN([GUIX_LIBZ_LIBDIR], [
302 AC_REQUIRE([PKG_PROG_PKG_CONFIG])
303 AC_CACHE_CHECK([zlib's library directory],
304 [guix_cv_libz_libdir],
305 [guix_cv_libz_libdir="`$PKG_CONFIG zlib --variable=libdir 2> /dev/null`"])
306 $1="$guix_cv_libz_libdir"
307])
308
298dnl GUIX_CURRENT_LOCALSTATEDIR 309dnl GUIX_CURRENT_LOCALSTATEDIR
299dnl 310dnl
300dnl Determine the localstatedir of an existing Guix installation and set 311dnl Determine the localstatedir of an existing Guix installation and set
diff --git a/tests/cpan.scm b/tests/cpan.scm
index 5d56f0bd2b4..898081b3e5a 100644
--- a/tests/cpan.scm
+++ b/tests/cpan.scm
@@ -1,5 +1,6 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> 2;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
3;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
3;;; 4;;;
4;;; This file is part of GNU Guix. 5;;; This file is part of GNU Guix.
5;;; 6;;;
@@ -97,4 +98,14 @@
97 (x 98 (x
98 (pk 'fail x #f))))) 99 (pk 'fail x #f)))))
99 100
101(test-equal "source-url-http"
102 ((@@ (guix import cpan) fix-source-url)
103 "http://cpan.metacpan.org/authors/id/T/TE/TEST/Foo-Bar-0.1.tar.gz")
104 "mirror://cpan/authors/id/T/TE/TEST/Foo-Bar-0.1.tar.gz")
105
106(test-equal "source-url-https"
107 ((@@ (guix import cpan) fix-source-url)
108 "https://cpan.metacpan.org/authors/id/T/TE/TEST/Foo-Bar-0.1.tar.gz")
109 "mirror://cpan/authors/id/T/TE/TEST/Foo-Bar-0.1.tar.gz")
110
100(test-end "cpan") 111(test-end "cpan")
diff --git a/tests/gexp.scm b/tests/gexp.scm
index f44f0eaf9ad..03a64fa6bb5 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -526,6 +526,18 @@
526 get-bytevector-all)))) 526 get-bytevector-all))))
527 files)))))) 527 files))))))
528 528
529(test-equal "gexp-modules & ungexp"
530 '((bar) (foo))
531 ((@@ (guix gexp) gexp-modules)
532 #~(foo #$(with-imported-modules '((foo)) #~+)
533 #+(with-imported-modules '((bar)) #~-))))
534
535(test-equal "gexp-modules & ungexp-splicing"
536 '((foo) (bar))
537 ((@@ (guix gexp) gexp-modules)
538 #~(foo #$@(list (with-imported-modules '((foo)) #~+)
539 (with-imported-modules '((bar)) #~-)))))
540
529(test-assertm "gexp->derivation #:modules" 541(test-assertm "gexp->derivation #:modules"
530 (mlet* %store-monad 542 (mlet* %store-monad
531 ((build -> #~(begin 543 ((build -> #~(begin
@@ -540,31 +552,75 @@
540 (s (stat (string-append p "/guile/guix/nix")))) 552 (s (stat (string-append p "/guile/guix/nix"))))
541 (return (eq? (stat:type s) 'directory)))))) 553 (return (eq? (stat:type s) 'directory))))))
542 554
555(test-assertm "gexp->derivation & with-imported-modules"
556 ;; Same test as above, but using 'with-imported-modules'.
557 (mlet* %store-monad
558 ((build -> (with-imported-modules '((guix build utils))
559 #~(begin
560 (use-modules (guix build utils))
561 (mkdir-p (string-append #$output "/guile/guix/nix"))
562 #t)))
563 (drv (gexp->derivation "test-with-modules" build)))
564 (mbegin %store-monad
565 (built-derivations (list drv))
566 (let* ((p (derivation->output-path drv))
567 (s (stat (string-append p "/guile/guix/nix"))))
568 (return (eq? (stat:type s) 'directory))))))
569
570(test-assertm "gexp->derivation & nested with-imported-modules"
571 (mlet* %store-monad
572 ((build1 -> (with-imported-modules '((guix build utils))
573 #~(begin
574 (use-modules (guix build utils))
575 (mkdir-p (string-append #$output "/guile/guix/nix"))
576 #t)))
577 (build2 -> (with-imported-modules '((guix build bournish))
578 #~(begin
579 (use-modules (guix build bournish)
580 (system base compile))
581 #+build1
582 (call-with-output-file (string-append #$output "/b")
583 (lambda (port)
584 (write
585 (read-and-compile (open-input-string "cd /foo")
586 #:from %bournish-language
587 #:to 'scheme)
588 port))))))
589 (drv (gexp->derivation "test-with-modules" build2)))
590 (mbegin %store-monad
591 (built-derivations (list drv))
592 (let* ((p (derivation->output-path drv))
593 (s (stat (string-append p "/guile/guix/nix")))
594 (b (string-append p "/b")))
595 (return (and (eq? (stat:type s) 'directory)
596 (equal? '(chdir "/foo")
597 (call-with-input-file b read))))))))
598
543(test-assertm "gexp->derivation #:references-graphs" 599(test-assertm "gexp->derivation #:references-graphs"
544 (mlet* %store-monad 600 (mlet* %store-monad
545 ((one (text-file "one" (random-text))) 601 ((one (text-file "one" (random-text)))
546 (two (gexp->derivation "two" 602 (two (gexp->derivation "two"
547 #~(symlink #$one #$output:chbouib))) 603 #~(symlink #$one #$output:chbouib)))
548 (drv (gexp->derivation "ref-graphs" 604 (build -> (with-imported-modules '((guix build store-copy)
549 #~(begin 605 (guix build utils))
550 (use-modules (guix build store-copy)) 606 #~(begin
551 (with-output-to-file #$output 607 (use-modules (guix build store-copy))
552 (lambda () 608 (with-output-to-file #$output
553 (write (call-with-input-file "guile" 609 (lambda ()
554 read-reference-graph)))) 610 (write (call-with-input-file "guile"
555 (with-output-to-file #$output:one 611 read-reference-graph))))
556 (lambda () 612 (with-output-to-file #$output:one
557 (write (call-with-input-file "one" 613 (lambda ()
558 read-reference-graph)))) 614 (write (call-with-input-file "one"
559 (with-output-to-file #$output:two 615 read-reference-graph))))
560 (lambda () 616 (with-output-to-file #$output:two
561 (write (call-with-input-file "two" 617 (lambda ()
562 read-reference-graph))))) 618 (write (call-with-input-file "two"
619 read-reference-graph)))))))
620 (drv (gexp->derivation "ref-graphs" build
563 #:references-graphs `(("one" ,one) 621 #:references-graphs `(("one" ,one)
564 ("two" ,two "chbouib") 622 ("two" ,two "chbouib")
565 ("guile" ,%bootstrap-guile)) 623 ("guile" ,%bootstrap-guile))))
566 #:modules '((guix build store-copy)
567 (guix build utils))))
568 (ok? (built-derivations (list drv))) 624 (ok? (built-derivations (list drv)))
569 (guile-drv (package->derivation %bootstrap-guile)) 625 (guile-drv (package->derivation %bootstrap-guile))
570 (bash (interned-file (search-bootstrap-binary "bash" 626 (bash (interned-file (search-bootstrap-binary "bash"
@@ -676,11 +732,11 @@
676 732
677(test-assertm "program-file" 733(test-assertm "program-file"
678 (let* ((n (random (expt 2 50))) 734 (let* ((n (random (expt 2 50)))
679 (exp (gexp (begin 735 (exp (with-imported-modules '((guix build utils))
680 (use-modules (guix build utils)) 736 (gexp (begin
681 (display (ungexp n))))) 737 (use-modules (guix build utils))
738 (display (ungexp n))))))
682 (file (program-file "program" exp 739 (file (program-file "program" exp
683 #:modules '((guix build utils))
684 #:guile %bootstrap-guile))) 740 #:guile %bootstrap-guile)))
685 (mlet* %store-monad ((drv (lower-object file)) 741 (mlet* %store-monad ((drv (lower-object file))
686 (out -> (derivation->output-path drv))) 742 (out -> (derivation->output-path drv)))
diff --git a/tests/grafts.scm b/tests/grafts.scm
index 8cd048552c7..13c56750ed8 100644
--- a/tests/grafts.scm
+++ b/tests/grafts.scm
@@ -135,14 +135,14 @@
135 (replacement fake))) 135 (replacement fake)))
136 (drv (gexp->derivation 136 (drv (gexp->derivation
137 "to-graft" 137 "to-graft"
138 #~(begin 138 (with-imported-modules '((guix build utils))
139 (use-modules (guix build utils)) 139 #~(begin
140 (mkdir-p (string-append #$output 140 (use-modules (guix build utils))
141 "/a/b/c/d")) 141 (mkdir-p (string-append #$output
142 (symlink #$%bash 142 "/a/b/c/d"))
143 (string-append #$output 143 (symlink #$%bash
144 "/bash"))) 144 (string-append #$output
145 #:modules '((guix build utils)))) 145 "/bash"))))))
146 (grafted ((store-lift graft-derivation) drv 146 (grafted ((store-lift graft-derivation) drv
147 (list graft))) 147 (list graft)))
148 (_ (built-derivations (list grafted))) 148 (_ (built-derivations (list grafted)))
diff --git a/tests/lint.scm b/tests/lint.scm
index 1f1b0c95e99..ce751c42c9f 100644
--- a/tests/lint.scm
+++ b/tests/lint.scm
@@ -102,14 +102,14 @@
102 http-write 102 http-write
103 (@@ (web server http) http-close)) 103 (@@ (web server http) http-close))
104 104
105(define (call-with-http-server code thunk) 105(define (call-with-http-server code data thunk)
106 "Call THUNK with an HTTP server running and returning CODE on HTTP 106 "Call THUNK with an HTTP server running and returning CODE and DATA (a
107requests." 107string) on HTTP requests."
108 (define (server-body) 108 (define (server-body)
109 (define (handle request body) 109 (define (handle request body)
110 (values (build-response #:code code 110 (values (build-response #:code code
111 #:reason-phrase "Such is life") 111 #:reason-phrase "Such is life")
112 "Hello, world.")) 112 data))
113 113
114 (catch 'quit 114 (catch 'quit
115 (lambda () 115 (lambda ()
@@ -123,8 +123,11 @@ requests."
123 ;; Normally SERVER exits automatically once it has received a request. 123 ;; Normally SERVER exits automatically once it has received a request.
124 (thunk)))) 124 (thunk))))
125 125
126(define-syntax-rule (with-http-server code body ...) 126(define-syntax-rule (with-http-server code data body ...)
127 (call-with-http-server code (lambda () body ...))) 127 (call-with-http-server code data (lambda () body ...)))
128
129(define %long-string
130 (make-string 2000 #\a))
128 131
129 132
130(test-begin "lint") 133(test-begin "lint")
@@ -402,18 +405,30 @@ requests."
402(test-equal "home-page: 200" 405(test-equal "home-page: 200"
403 "" 406 ""
404 (with-warnings 407 (with-warnings
405 (with-http-server 200 408 (with-http-server 200 %long-string
406 (let ((pkg (package 409 (let ((pkg (package
407 (inherit (dummy-package "x")) 410 (inherit (dummy-package "x"))
408 (home-page %local-url)))) 411 (home-page %local-url))))
409 (check-home-page pkg))))) 412 (check-home-page pkg)))))
410 413
411(test-skip (if %http-server-socket 0 1)) 414(test-skip (if %http-server-socket 0 1))
415(test-assert "home-page: 200 but short length"
416 (->bool
417 (string-contains
418 (with-warnings
419 (with-http-server 200 "This is too small."
420 (let ((pkg (package
421 (inherit (dummy-package "x"))
422 (home-page %local-url))))
423 (check-home-page pkg))))
424 "suspiciously small")))
425
426(test-skip (if %http-server-socket 0 1))
412(test-assert "home-page: 404" 427(test-assert "home-page: 404"
413 (->bool 428 (->bool
414 (string-contains 429 (string-contains
415 (with-warnings 430 (with-warnings
416 (with-http-server 404 431 (with-http-server 404 %long-string
417 (let ((pkg (package 432 (let ((pkg (package
418 (inherit (dummy-package "x")) 433 (inherit (dummy-package "x"))
419 (home-page %local-url)))) 434 (home-page %local-url))))
@@ -501,7 +516,7 @@ requests."
501(test-equal "source: 200" 516(test-equal "source: 200"
502 "" 517 ""
503 (with-warnings 518 (with-warnings
504 (with-http-server 200 519 (with-http-server 200 %long-string
505 (let ((pkg (package 520 (let ((pkg (package
506 (inherit (dummy-package "x")) 521 (inherit (dummy-package "x"))
507 (source (origin 522 (source (origin
@@ -511,11 +526,26 @@ requests."
511 (check-source pkg))))) 526 (check-source pkg)))))
512 527
513(test-skip (if %http-server-socket 0 1)) 528(test-skip (if %http-server-socket 0 1))
529(test-assert "source: 200 but short length"
530 (->bool
531 (string-contains
532 (with-warnings
533 (with-http-server 200 "This is too small."
534 (let ((pkg (package
535 (inherit (dummy-package "x"))
536 (source (origin
537 (method url-fetch)
538 (uri %local-url)
539 (sha256 %null-sha256))))))
540 (check-source pkg))))
541 "suspiciously small")))
542
543(test-skip (if %http-server-socket 0 1))
514(test-assert "source: 404" 544(test-assert "source: 404"
515 (->bool 545 (->bool
516 (string-contains 546 (string-contains
517 (with-warnings 547 (with-warnings
518 (with-http-server 404 548 (with-http-server 404 %long-string
519 (let ((pkg (package 549 (let ((pkg (package
520 (inherit (dummy-package "x")) 550 (inherit (dummy-package "x"))
521 (source (origin 551 (source (origin
@@ -617,6 +647,6 @@ requests."
617(test-end "lint") 647(test-end "lint")
618 648
619;; Local Variables: 649;; Local Variables:
620;; eval: (put 'with-http-server 'scheme-indent-function 1) 650;; eval: (put 'with-http-server 'scheme-indent-function 2)
621;; eval: (put 'with-warnings 'scheme-indent-function 0) 651;; eval: (put 'with-warnings 'scheme-indent-function 0)
622;; End: 652;; End:
diff --git a/tests/packages.scm b/tests/packages.scm
index 94f5ea71a52..fc75e38730a 100644
--- a/tests/packages.scm
+++ b/tests/packages.scm
@@ -335,7 +335,6 @@
335 ("patch" ,%bootstrap-coreutils&co))) 335 ("patch" ,%bootstrap-coreutils&co)))
336 (patch-guile %bootstrap-guile) 336 (patch-guile %bootstrap-guile)
337 (modules '((guix build utils))) 337 (modules '((guix build utils)))
338 (imported-modules modules)
339 (snippet '(begin 338 (snippet '(begin
340 ;; We end up in 'bin', because it's the first 339 ;; We end up in 'bin', because it's the first
341 ;; directory, alphabetically. Not a very good 340 ;; directory, alphabetically. Not a very good
diff --git a/tests/publish.scm b/tests/publish.scm
index d6d537c58a6..9bf181f1fc5 100644
--- a/tests/publish.scm
+++ b/tests/publish.scm
@@ -28,12 +28,15 @@
28 #:use-module (guix store) 28 #:use-module (guix store)
29 #:use-module (guix base32) 29 #:use-module (guix base32)
30 #:use-module (guix base64) 30 #:use-module (guix base64)
31 #:use-module ((guix records) #:select (recutils->alist))
31 #:use-module ((guix serialization) #:select (restore-file)) 32 #:use-module ((guix serialization) #:select (restore-file))
32 #:use-module (guix pk-crypto) 33 #:use-module (guix pk-crypto)
34 #:use-module (guix zlib)
33 #:use-module (web uri) 35 #:use-module (web uri)
34 #:use-module (web client) 36 #:use-module (web client)
35 #:use-module (web response) 37 #:use-module (web response)
36 #:use-module (rnrs bytevectors) 38 #:use-module (rnrs bytevectors)
39 #:use-module (ice-9 binary-ports)
37 #:use-module (srfi srfi-1) 40 #:use-module (srfi srfi-1)
38 #:use-module (srfi srfi-26) 41 #:use-module (srfi srfi-26)
39 #:use-module (srfi srfi-64) 42 #:use-module (srfi srfi-64)
@@ -52,20 +55,28 @@
52 (call-with-values (lambda () (http-get uri)) 55 (call-with-values (lambda () (http-get uri))
53 (lambda (response body) body))) 56 (lambda (response body) body)))
54 57
58(define (http-get-port uri)
59 (call-with-values (lambda () (http-get uri #:streaming? #t))
60 (lambda (response port) port)))
61
55(define (publish-uri route) 62(define (publish-uri route)
56 (string-append "http://localhost:6789" route)) 63 (string-append "http://localhost:6789" route))
57 64
58;; Run a local publishing server in a separate thread. 65;; Run a local publishing server in a separate thread.
59(call-with-new-thread 66(call-with-new-thread
60 (lambda () 67 (lambda ()
61 (guix-publish "--port=6789"))) ; attempt to avoid port collision 68 (guix-publish "--port=6789" "-C0"))) ;attempt to avoid port collision
69
70(define (wait-until-ready port)
71 ;; Wait until the server is accepting connections.
72 (let ((conn (socket PF_INET SOCK_STREAM 0)))
73 (let loop ()
74 (unless (false-if-exception
75 (connect conn AF_INET (inet-pton AF_INET "127.0.0.1") port))
76 (loop)))))
62 77
63;; Wait until the server is accepting connections. 78;; Wait until the two servers are ready.
64(let ((conn (socket PF_INET SOCK_STREAM 0))) 79(wait-until-ready 6789)
65 (let loop ()
66 (unless (false-if-exception
67 (connect conn AF_INET (inet-pton AF_INET "127.0.0.1") 6789))
68 (loop))))
69 80
70 81
71(test-begin "publish") 82(test-begin "publish")
@@ -145,6 +156,40 @@ References: ~%"
145 (call-with-input-string nar (cut restore-file <> temp))) 156 (call-with-input-string nar (cut restore-file <> temp)))
146 (call-with-input-file temp read-string)))) 157 (call-with-input-file temp read-string))))
147 158
159(unless (zlib-available?)
160 (test-skip 1))
161(test-equal "/nar/gzip/*"
162 "bar"
163 (call-with-temporary-output-file
164 (lambda (temp port)
165 (let ((nar (http-get-port
166 (publish-uri
167 (string-append "/nar/gzip/" (basename %item))))))
168 (call-with-gzip-input-port nar
169 (cut restore-file <> temp)))
170 (call-with-input-file temp read-string))))
171
172(unless (zlib-available?)
173 (test-skip 1))
174(test-equal "/*.narinfo with compression"
175 `(("StorePath" . ,%item)
176 ("URL" . ,(string-append "nar/gzip/" (basename %item)))
177 ("Compression" . "gzip"))
178 (let ((thread (call-with-new-thread
179 (lambda ()
180 (guix-publish "--port=6799" "-C5")))))
181 (wait-until-ready 6799)
182 (let* ((url (string-append "http://localhost:6799/"
183 (store-path-hash-part %item) ".narinfo"))
184 (body (http-get-port url)))
185 (filter (lambda (item)
186 (match item
187 (("Compression" . _) #t)
188 (("StorePath" . _) #t)
189 (("URL" . _) #t)
190 (_ #f)))
191 (recutils->alist body)))))
192
148(test-equal "/nar/ with properly encoded '+' sign" 193(test-equal "/nar/ with properly encoded '+' sign"
149 "Congrats!" 194 "Congrats!"
150 (let ((item (add-text-to-store %store "fake-gtk+" "Congrats!"))) 195 (let ((item (add-text-to-store %store "fake-gtk+" "Congrats!")))
diff --git a/tests/records.scm b/tests/records.scm
index c6f85d4a81d..d6d27bb96a6 100644
--- a/tests/records.scm
+++ b/tests/records.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, 2014, 2015 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
3;;; 3;;;
4;;; This file is part of GNU Guix. 4;;; This file is part of GNU Guix.
5;;; 5;;;
@@ -17,6 +17,7 @@
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 (test-records) 19(define-module (test-records)
20 #:use-module (srfi srfi-1)
20 #:use-module (srfi srfi-64) 21 #:use-module (srfi srfi-64)
21 #:use-module (ice-9 match) 22 #:use-module (ice-9 match)
22 #:use-module (ice-9 regex) 23 #:use-module (ice-9 regex)
@@ -214,6 +215,32 @@
214 (equal? (foo-bar y) 1)) ;promise was already forced 215 (equal? (foo-bar y) 1)) ;promise was already forced
215 (eq? (foo-baz y) 'b))))) 216 (eq? (foo-baz y) 'b)))))
216 217
218(test-assert "define-record-type* & wrong field specifier"
219 (let ((exp '(begin
220 (define-record-type* <foo> foo make-foo
221 foo?
222 (bar foo-bar (default 42))
223 (baz foo-baz))
224
225 (foo (baz 1 2 3 4 5)))) ;syntax error
226 (loc (current-source-location))) ;keep this alignment!
227 (catch 'syntax-error
228 (lambda ()
229 (eval exp (test-module))
230 #f)
231 (lambda (key proc message location form . args)
232 (and (eq? proc 'foo)
233 (string-match "invalid field" message)
234 (equal? form '(baz 1 2 3 4 5))
235
236 ;; Make sure the location is that of the field specifier.
237 ;; See <http://bugs.gnu.org/23969>.
238 (lset= equal?
239 (pk 'expected-loc
240 `((line . ,(- (assq-ref loc 'line) 1))
241 ,@(alist-delete 'line loc)))
242 (pk 'actual-loc location)))))))
243
217(test-assert "define-record-type* & missing initializers" 244(test-assert "define-record-type* & missing initializers"
218 (catch 'syntax-error 245 (catch 'syntax-error
219 (lambda () 246 (lambda ()
diff --git a/tests/system.scm b/tests/system.scm
index b935bd07ebc..b5bb9af016d 100644
--- a/tests/system.scm
+++ b/tests/system.scm
@@ -41,6 +41,25 @@
41 41
42 (users %base-user-accounts))) 42 (users %base-user-accounts)))
43 43
44(define %luks-device
45 (mapped-device
46 (source "/dev/foo") (target "my-luks-device")
47 (type luks-device-mapping)))
48
49(define %os-with-mapped-device
50 (operating-system
51 (host-name "komputilo")
52 (timezone "Europe/Berlin")
53 (locale "en_US.utf8")
54 (bootloader (grub-configuration (device "/dev/sdX")))
55 (mapped-devices (list %luks-device))
56 (file-systems (cons (file-system
57 (inherit %root-fs)
58 (dependencies (list %luks-device)))
59 %base-file-systems))
60 (users %base-user-accounts)))
61
62
44(test-begin "system") 63(test-begin "system")
45 64
46(test-assert "operating-system-store-file-system" 65(test-assert "operating-system-store-file-system"
@@ -71,4 +90,28 @@
71 %base-file-systems))))) 90 %base-file-systems)))))
72 (eq? gnu (operating-system-store-file-system os)))) 91 (eq? gnu (operating-system-store-file-system os))))
73 92
93(test-equal "operating-system-user-mapped-devices"
94 '()
95 (operating-system-user-mapped-devices %os-with-mapped-device))
96
97(test-equal "operating-system-boot-mapped-devices"
98 (list %luks-device)
99 (operating-system-boot-mapped-devices %os-with-mapped-device))
100
101(test-equal "operating-system-boot-mapped-devices, implicit dependency"
102 (list %luks-device)
103
104 ;; Here we expect the implicit dependency between "/" and
105 ;; "/dev/mapper/my-luks-device" to be found, in spite of the lack of a
106 ;; 'dependencies' field in the root file system.
107 (operating-system-boot-mapped-devices
108 (operating-system
109 (inherit %os-with-mapped-device)
110 (file-systems (cons (file-system
111 (device "/dev/mapper/my-luks-device")
112 (title 'device)
113 (mount-point "/")
114 (type "ext4"))
115 %base-file-systems)))))
116
74(test-end) 117(test-end)
diff --git a/tests/zlib.scm b/tests/zlib.scm
new file mode 100644
index 00000000000..5455240a719
--- /dev/null
+++ b/tests/zlib.scm
@@ -0,0 +1,63 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2016 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 (test-zlib)
20 #:use-module (guix zlib)
21 #:use-module (guix tests)
22 #:use-module (srfi srfi-64)
23 #:use-module (rnrs bytevectors)
24 #:use-module (rnrs io ports)
25 #:use-module (ice-9 match))
26
27;; Test the (guix zlib) module.
28
29(unless (zlib-available?)
30 (exit 77))
31
32(test-begin "zlib")
33
34(test-assert "compression/decompression pipe"
35 (let ((data (random-bytevector (+ (random 10000)
36 (* 20 1024)))))
37 (match (pipe)
38 ((parent . child)
39 (match (primitive-fork)
40 (0 ;compress
41 (dynamic-wind
42 (const #t)
43 (lambda ()
44 (close-port parent)
45 (call-with-gzip-output-port child
46 (lambda (port)
47 (put-bytevector port data))))
48 (lambda ()
49 (primitive-exit 0))))
50 (pid ;decompress
51 (begin
52 (close-port child)
53 (let ((received (call-with-gzip-input-port parent
54 (lambda (port)
55 (get-bytevector-all port))
56 #:buffer-size (* 64 1024))))
57 (match (waitpid pid)
58 ((_ . status)
59 (and (zero? status)
60 (port-closed? parent)
61 (bytevector=? received data))))))))))))
62
63(test-end)