summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEfraim Flashner <efraim@flashner.co.il>2018-07-14 20:55:36 +0300
committerEfraim Flashner <efraim@flashner.co.il>2018-07-14 20:56:03 +0300
commit0a34402b19b0563e3723f26fadb3681537e08faf (patch)
tree5ef4a8dd48b913971fbf42369448ed01712daa9d
parent8911d85b9c361c53df9a9b70ae7f8b03fbdb5b49 (diff)
parent5908818e309280b124b64f5320e4b98210093061 (diff)
downloadguix-patches-0a34402b19b0563e3723f26fadb3681537e08faf.tar
guix-patches-0a34402b19b0563e3723f26fadb3681537e08faf.tar.gz
Merge remote-tracking branch 'origin/master' into qt-updates
-rw-r--r--Makefile.am3
-rw-r--r--doc/contributing.texi3
-rw-r--r--doc/guix.texi143
-rw-r--r--etc/snippets/scheme-mode/guix-package4
-rw-r--r--etc/snippets/text-mode/guix-commit-message-use-https-home-page9
-rw-r--r--gnu/local.mk10
-rw-r--r--gnu/packages/base.scm28
-rw-r--r--gnu/packages/bootloaders.scm9
-rw-r--r--gnu/packages/build-tools.scm4
-rw-r--r--gnu/packages/certs.scm4
-rw-r--r--gnu/packages/chemistry.scm81
-rw-r--r--gnu/packages/compression.scm6
-rw-r--r--gnu/packages/curl.scm8
-rw-r--r--gnu/packages/databases.scm8
-rw-r--r--gnu/packages/dns.scm101
-rw-r--r--gnu/packages/documentation.scm4
-rw-r--r--gnu/packages/emacs.scm55
-rw-r--r--gnu/packages/freedesktop.scm8
-rw-r--r--gnu/packages/game-development.scm6
-rw-r--r--gnu/packages/gcc.scm2
-rw-r--r--gnu/packages/gl.scm29
-rw-r--r--gnu/packages/glib.scm4
-rw-r--r--gnu/packages/gnome.scm38
-rw-r--r--gnu/packages/gnupg.scm4
-rw-r--r--gnu/packages/gnuzilla.scm4
-rw-r--r--gnu/packages/golang.scm135
-rw-r--r--gnu/packages/gtk.scm21
-rw-r--r--gnu/packages/haskell.scm44
-rw-r--r--gnu/packages/iso-codes.scm2
-rw-r--r--gnu/packages/java.scm454
-rw-r--r--gnu/packages/libreoffice.scm4
-rw-r--r--gnu/packages/linux.scm57
-rw-r--r--gnu/packages/lsof.scm10
-rw-r--r--gnu/packages/mail.scm8
-rw-r--r--gnu/packages/maths.scm19
-rw-r--r--gnu/packages/mes.scm10
-rw-r--r--gnu/packages/messaging.scm75
-rw-r--r--gnu/packages/networking.scm30
-rw-r--r--gnu/packages/patches/alsa-lib-add-environment-variable.patch110
-rw-r--r--gnu/packages/patches/bind-CVE-2018-5738.patch100
-rw-r--r--gnu/packages/patches/jamvm-arm.patch1313
-rw-r--r--gnu/packages/patches/mesa-wayland-egl-symbols-check-mips.patch15
-rw-r--r--gnu/packages/patches/meson-for-build-rpath.patch7
-rw-r--r--gnu/packages/patches/openblas-fix-tests-i686.patch35
-rw-r--r--gnu/packages/patches/syncthing-fix-crash.patch72
-rw-r--r--gnu/packages/patches/xapian-revert-5489fb2f8.patch23
-rw-r--r--gnu/packages/patches/xf86-video-savage-xorg-compat.patch33
-rw-r--r--gnu/packages/patches/xf86-video-sis-xorg-compat.patch18
-rw-r--r--gnu/packages/patches/zathura-pdf-mupdf-link-to-jpeg-libraries.patch55
-rw-r--r--gnu/packages/patches/zathura-plugindir-environment-variable.patch11
-rw-r--r--gnu/packages/pdf.scm145
-rw-r--r--gnu/packages/php.scm2
-rw-r--r--gnu/packages/python.scm12
-rw-r--r--gnu/packages/samba.scm22
-rw-r--r--gnu/packages/search.scm7
-rw-r--r--gnu/packages/syncthing.scm2
-rw-r--r--gnu/packages/textutils.scm18
-rw-r--r--gnu/packages/upnp.scm46
-rw-r--r--gnu/packages/video.scm7
-rw-r--r--gnu/packages/xdisorg.scm5
-rw-r--r--gnu/packages/xorg.scm86
-rw-r--r--gnu/services/herd.scm3
-rw-r--r--gnu/services/mcron.scm76
-rw-r--r--gnu/services/shepherd.scm23
-rw-r--r--gnu/services/virtualization.scm1
-rw-r--r--gnu/tests/base.scm7
-rw-r--r--guix/build-system/meson.scm3
-rw-r--r--guix/build/ant-build-system.scm98
-rw-r--r--guix/build/java-utils.scm2
-rw-r--r--guix/build/meson-build-system.scm15
-rw-r--r--guix/gexp.scm10
-rw-r--r--guix/git.scm26
-rw-r--r--guix/gnu-maintenance.scm26
-rw-r--r--guix/import/cabal.scm70
-rw-r--r--guix/inferior.scm197
-rw-r--r--guix/profiles.scm2
-rw-r--r--guix/scripts/package.scm2
-rw-r--r--guix/scripts/pull.scm140
-rw-r--r--guix/scripts/repl.scm199
-rw-r--r--guix/store.scm15
-rw-r--r--guix/utils.scm5
-rw-r--r--tests/gexp.scm56
-rw-r--r--tests/guix-package.sh12
-rw-r--r--tests/hackage.scm71
-rw-r--r--tests/inferior.scm69
85 files changed, 3857 insertions, 859 deletions
diff --git a/Makefile.am b/Makefile.am
index 618d1653e4..134ab0f142 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -85,6 +85,7 @@ MODULES = \
guix/nar.scm \
guix/derivations.scm \
guix/grafts.scm \
+ guix/inferior.scm \
guix/gnu-maintenance.scm \
guix/self.scm \
guix/upstream.scm \
@@ -200,6 +201,7 @@ MODULES = \
guix/scripts/substitute.scm \
guix/scripts/authenticate.scm \
guix/scripts/refresh.scm \
+ guix/scripts/repl.scm \
guix/scripts/system.scm \
guix/scripts/system/search.scm \
guix/scripts/lint.scm \
@@ -357,6 +359,7 @@ SCM_TESTS = \
tests/profiles.scm \
tests/search-paths.scm \
tests/syscalls.scm \
+ tests/inferior.scm \
tests/gremlin.scm \
tests/bournish.scm \
tests/lint.scm \
diff --git a/doc/contributing.texi b/doc/contributing.texi
index 8feb519b0a..68d8e7e2fb 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -212,7 +212,8 @@ The commit message snippets depend on @url{https://magit.vc/, Magit} to
display staged files. When editing a commit message type @code{add}
followed by @kbd{TAB} to insert a commit message template for adding a
package; type @code{update} followed by @kbd{TAB} to insert a template
-for updating a package.
+for updating a package; type @code{https} followed by @kbd{TAB} to
+insert a template for changing the home page URI of a package to HTTPS.
The main snippet for @code{scheme-mode} is triggered by typing
@code{package...} followed by @kbd{TAB}. This snippet also inserts the
diff --git a/doc/guix.texi b/doc/guix.texi
index 8026bea356..c759ccb119 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -27,7 +27,7 @@ Copyright @copyright{} 2016, 2017, 2018 Chris Marusich@*
Copyright @copyright{} 2016, 2017, 2018 Efraim Flashner@*
Copyright @copyright{} 2016 John Darrington@*
Copyright @copyright{} 2016, 2017 Nils Gillmann@*
-Copyright @copyright{} 2016, 2017 Jan Nieuwenhuizen@*
+Copyright @copyright{} 2016, 2017, 2018 Jan Nieuwenhuizen@*
Copyright @copyright{} 2016 Julien Lepiller@*
Copyright @copyright{} 2016 Alex ter Weele@*
Copyright @copyright{} 2017, 2018 Clément Lassieur@*
@@ -166,6 +166,7 @@ Programming Interface
* Derivations:: Low-level interface to package derivations.
* The Store Monad:: Purely functional interface to the store.
* G-Expressions:: Manipulating build expressions.
+* Invoking guix repl:: Fiddling with Guix interactively.
Defining Packages
@@ -2785,12 +2786,18 @@ Generation 2 Jun 11 2018 11:02:49
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: origin/master
commit: e0cc7f669bec22c37481dd03a7941c7d11a64f1d
+ 2 new packages: keepalived, libnfnetlink
+ 6 packages upgraded: emacs-nix-mode@@2.0.4,
+ guile2.0-guix@@0.14.0-12.77a1aac, guix@@0.14.0-12.77a1aac,
+ heimdal@@7.5.0, milkytracker@@1.02.00, nix@@2.0.4
Generation 3 Jun 13 2018 23:31:07 (current)
guix 844cc1c
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: origin/master
commit: 844cc1c8f394f03b404c5bb3aee086922373490c
+ 28 new packages: emacs-helm-ls-git, emacs-helm-mu, @dots{}
+ 69 packages upgraded: borg@@1.1.6, cheese@@3.28.0, @dots{}
@end example
This @code{~/.config/guix/current} profile works like any other profile
@@ -3267,6 +3274,7 @@ package definitions.
* Derivations:: Low-level interface to package derivations.
* The Store Monad:: Purely functional interface to the store.
* G-Expressions:: Manipulating build expressions.
+* Invoking guix repl:: Fiddling with Guix interactively.
@end menu
@node Defining Packages
@@ -4916,6 +4924,12 @@ containing @var{text}, a string. @var{references} is a list of store items that
resulting text file refers to; it defaults to the empty list.
@end deffn
+@deffn {Monadic Procedure} binary-file @var{name} @var{data} [@var{references}]
+Return as a monadic value the absolute file name in the store of the file
+containing @var{data}, a bytevector. @var{references} is a list of store
+items that the resulting binary file refers to; it defaults to the empty list.
+@end deffn
+
@deffn {Monadic Procedure} interned-file @var{file} [@var{name}] @
[#:recursive? #t] [#:select? (const #t)]
Return the name of @var{file} once interned in the store. Use
@@ -5349,7 +5363,7 @@ procedure (@pxref{The Store Monad, @code{interned-file}}).
@deffn {Scheme Procedure} plain-file @var{name} @var{content}
Return an object representing a text file called @var{name} with the given
-@var{content} (a string) to be added to the store.
+@var{content} (a string or a bytevector) to be added to the store.
This is the declarative counterpart of @code{text-file}.
@end deffn
@@ -5538,6 +5552,57 @@ corresponding to @var{obj} for @var{system}, cross-compiling for
has an associated gexp compiler, such as a @code{<package>}.
@end deffn
+@node Invoking guix repl
+@section Invoking @command{guix repl}
+
+@cindex REPL, read-eval-print loop
+The @command{guix repl} command spawns a Guile @dfn{read-eval-print loop}
+(REPL) for interactive programming (@pxref{Using Guile Interactively,,, guile,
+GNU Guile Reference Manual}). Compared to just launching the @command{guile}
+command, @command{guix repl} guarantees that all the Guix modules and all its
+dependencies are available in the search path. You can use it this way:
+
+@example
+$ guix repl
+scheme@@(guile-user)> ,use (gnu packages base)
+scheme@@(guile-user)> coreutils
+$1 = #<package coreutils@@8.29 gnu/packages/base.scm:327 3e28300>
+@end example
+
+@cindex inferiors
+In addition, @command{guix repl} implements a simple machine-readable REPL
+protocol for use by @code{(guix inferior)}, a facility to interact with
+@dfn{inferiors}, separate processes running a potentially different revision
+of Guix.
+
+The available options are as follows:
+
+@table @code
+@item --type=@var{type}
+@itemx -t @var{type}
+Start a REPL of the given @var{TYPE}, which can be one of the following:
+
+@table @code
+@item guile
+This is default, and it spawns a standard full-featured Guile REPL.
+@item machine
+Spawn a REPL that uses the machine-readable protocol. This is the protocol
+that the @code{(guix inferior)} module speaks.
+@end table
+
+@item --listen=@var{endpoint}
+By default, @command{guix repl} reads from standard input and writes to
+standard output. When this option is passed, it will instead listen for
+connections on @var{endpoint}. Here are examples of valid options:
+
+@table @code
+@item --listen=tcp:37146
+Accept connections on localhost on port 37146.
+
+@item --listen=unix:/tmp/socket
+Accept connections on the Unix-domain socket @file{/tmp/socket}.
+@end table
+@end table
@c *********************************************************************
@node Utilities
@@ -10844,6 +10909,21 @@ gexps to introduce job definitions that are passed to mcron
for more information on mcron job specifications. Below is the
reference of the mcron service.
+On a running system, you can use the @code{schedule} action of the service to
+visualize the mcron jobs that will be executed next:
+
+@example
+# herd schedule mcron
+@end example
+
+@noindent
+The example above lists the next five tasks that will be executed, but you can
+also specify the number of tasks to display:
+
+@example
+# herd schedule mcron 10
+@end example
+
@deffn {Scheme Procedure} mcron-service @var{jobs} [#:mcron @var{mcron}]
Return an mcron service running @var{mcron} that schedules @var{jobs}, a
list of gexps denoting mcron job specifications.
@@ -21963,6 +22043,17 @@ Constructors,,, shepherd, The GNU Shepherd Manual}). They are given as
G-expressions that get expanded in the Shepherd configuration file
(@pxref{G-Expressions}).
+@item @code{actions} (default: @code{'()})
+@cindex actions, of Shepherd services
+This is a list of @code{shepherd-action} objects (see below) defining
+@dfn{actions} supported by the service, in addition to the standard
+@code{start} and @code{stop} actions. Actions listed here become available as
+@command{herd} sub-commands:
+
+@example
+herd @var{action} @var{service} [@var{arguments}@dots{}]
+@end example
+
@item @code{documentation}
A documentation string, as shown when running:
@@ -21980,6 +22071,54 @@ This is the list of modules that must be in scope when @code{start} and
@end table
@end deftp
+@deftp {Data Type} shepherd-action
+This is the data type that defines additional actions implemented by a
+Shepherd service (see above).
+
+@table @code
+@item name
+Symbol naming the action.
+
+@item documentation
+This is a documentation string for the action. It can be viewed by running:
+
+@example
+herd doc @var{service} action @var{action}
+@end example
+
+@item procedure
+This should be a gexp that evaluates to a procedure of at least one argument,
+which is the ``running value'' of the service (@pxref{Slots of services,,,
+shepherd, The GNU Shepherd Manual}).
+@end table
+
+The following example defines an action called @code{say-hello} that kindly
+greets the user:
+
+@example
+(shepherd-action
+ (name 'say-hello)
+ (documentation "Say hi!")
+ (procedure #~(lambda (running . args)
+ (format #t "Hello, friend! arguments: ~s\n"
+ args)
+ #t)))
+@end example
+
+Assuming this action is added to the @code{example} service, then you can do:
+
+@example
+# herd say-hello example
+Hello, friend! arguments: ()
+# herd say-hello example a b c
+Hello, friend! arguments: ("a" "b" "c")
+@end example
+
+This, as you can see, is a fairly sophisticated way to say hello.
+@xref{Service Convenience,,, shepherd, The GNU Shepherd Manual}, for more
+info on actions.
+@end deftp
+
@defvr {Scheme Variable} shepherd-root-service-type
The service type for the Shepherd ``root service''---i.e., PID@tie{}1.
diff --git a/etc/snippets/scheme-mode/guix-package b/etc/snippets/scheme-mode/guix-package
index d392e82093..48b87e3599 100644
--- a/etc/snippets/scheme-mode/guix-package
+++ b/etc/snippets/scheme-mode/guix-package
@@ -7,7 +7,8 @@
(name "$1")
(version "$2")
(source origin...$0)
- (build-system ${3:$$(yas-choose-value "ant-build-system"
+ (build-system ${3:$$(yas-choose-value "android-ndk-build-system"
+ "ant-build-system"
"asdf-build-system"
"cargo-build-system"
"cmake-build-system"
@@ -25,6 +26,7 @@
"python-build-system"
"r-build-system"
"ruby-build-system"
+ "scons-build-system"
"texlive-build-system"
"trivial-build-system"
"waf-build-system")})
diff --git a/etc/snippets/text-mode/guix-commit-message-use-https-home-page b/etc/snippets/text-mode/guix-commit-message-use-https-home-page
new file mode 100644
index 0000000000..df20d31a80
--- /dev/null
+++ b/etc/snippets/text-mode/guix-commit-message-use-https-home-page
@@ -0,0 +1,9 @@
+# -*- mode: snippet -*-
+# name: guix-commit-message-use-https-home-page
+# key: https
+# condition: git-commit-mode
+# --
+gnu: $1: Use HTTPS home page URI.
+
+* `(car (magit-staged-files))` ($1)[home-page]: Use HTTPS URI.
+`(mapconcat (lambda (file) (concat "* " file)) (cdr (magit-staged-files)) "\n")` \ No newline at end of file
diff --git a/gnu/local.mk b/gnu/local.mk
index 8ec1f161ed..9e875263ac 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -564,7 +564,6 @@ dist_patch_DATA = \
%D%/packages/patches/aegis-test-fixup-1.patch \
%D%/packages/patches/aegis-test-fixup-2.patch \
%D%/packages/patches/agg-am_c_prototype.patch \
- %D%/packages/patches/alsa-lib-add-environment-variable.patch \
%D%/packages/patches/amule-crypto-6.patch \
%D%/packages/patches/ansible-wrap-program-hack.patch \
%D%/packages/patches/antiword-CVE-2014-8123.patch \
@@ -585,7 +584,6 @@ dist_patch_DATA = \
%D%/packages/patches/bash-completion-directories.patch \
%D%/packages/patches/bazaar-CVE-2017-14176.patch \
%D%/packages/patches/beignet-correct-file-names.patch \
- %D%/packages/patches/bind-CVE-2018-5738.patch \
%D%/packages/patches/binutils-aarch64-symbol-relocation.patch \
%D%/packages/patches/binutils-loongson-workaround.patch \
%D%/packages/patches/blast+-fix-makefile.patch \
@@ -809,6 +807,7 @@ dist_patch_DATA = \
%D%/packages/patches/intltool-perl-compatibility.patch \
%D%/packages/patches/isl-0.11.1-aarch64-support.patch \
%D%/packages/patches/jacal-fix-texinfo.patch \
+ %D%/packages/patches/jamvm-arm.patch \
%D%/packages/patches/java-apache-ivy-port-to-latest-bouncycastle.patch \
%D%/packages/patches/java-commons-collections-fix-java8.patch \
%D%/packages/patches/java-jeromq-fix-tests.patch \
@@ -937,7 +936,6 @@ dist_patch_DATA = \
%D%/packages/patches/mcrypt-CVE-2012-4426.patch \
%D%/packages/patches/mcrypt-CVE-2012-4527.patch \
%D%/packages/patches/mesa-skip-disk-cache-test.patch \
- %D%/packages/patches/mesa-wayland-egl-symbols-check-mips.patch \
%D%/packages/patches/meson-for-build-rpath.patch \
%D%/packages/patches/metabat-fix-compilation.patch \
%D%/packages/patches/mhash-keygen-test-segfault.patch \
@@ -982,6 +980,7 @@ dist_patch_DATA = \
%D%/packages/patches/omake-fix-non-determinism.patch \
%D%/packages/patches/ola-readdir-r.patch \
%D%/packages/patches/opencascade-oce-glibc-2.26.patch \
+ %D%/packages/patches/openblas-fix-tests-i686.patch \
%D%/packages/patches/openexr-missing-samples.patch \
%D%/packages/patches/openfoam-4.1-cleanup.patch \
%D%/packages/patches/openldap-CVE-2017-9287.patch \
@@ -1138,6 +1137,7 @@ dist_patch_DATA = \
%D%/packages/patches/superlu-dist-scotchmetis.patch \
%D%/packages/patches/swish-e-search.patch \
%D%/packages/patches/swish-e-format-security.patch \
+ %D%/packages/patches/syncthing-fix-crash.patch \
%D%/packages/patches/synfigstudio-fix-ui-with-gtk3.patch \
%D%/packages/patches/t1lib-CVE-2010-2642.patch \
%D%/packages/patches/t1lib-CVE-2011-0764.patch \
@@ -1213,6 +1213,7 @@ dist_patch_DATA = \
%D%/packages/patches/wpa-supplicant-krack-followups.patch \
%D%/packages/patches/wxmaxima-do-not-use-old-gnuplot-parameters.patch \
%D%/packages/patches/x265-fix-ppc64le-build.patch \
+ %D%/packages/patches/xapian-revert-5489fb2f8.patch \
%D%/packages/patches/xboing-CVE-2004-0149.patch \
%D%/packages/patches/xdotool-fix-makefile.patch \
%D%/packages/patches/xf86-video-ark-remove-mibstore.patch \
@@ -1220,7 +1221,9 @@ dist_patch_DATA = \
%D%/packages/patches/xf86-video-geode-glibc-2.20.patch \
%D%/packages/patches/xf86-video-i128-remove-mibstore.patch \
%D%/packages/patches/xf86-video-mach64-glibc-2.20.patch \
+ %D%/packages/patches/xf86-video-savage-xorg-compat.patch \
%D%/packages/patches/xf86-video-siliconmotion-fix-ftbfs.patch \
+ %D%/packages/patches/xf86-video-sis-xorg-compat.patch \
%D%/packages/patches/xf86-video-tga-remove-mibstore.patch \
%D%/packages/patches/xfce4-panel-plugins.patch \
%D%/packages/patches/xfce4-session-fix-xflock4.patch \
@@ -1228,6 +1231,7 @@ dist_patch_DATA = \
%D%/packages/patches/xinetd-fix-fd-leak.patch \
%D%/packages/patches/xinetd-CVE-2013-4342.patch \
%D%/packages/patches/xmodmap-asprintf.patch \
+ %D%/packages/patches/zathura-pdf-mupdf-link-to-jpeg-libraries.patch \
%D%/packages/patches/zathura-plugindir-environment-variable.patch \
%D%/packages/patches/zstd-fix-stdin-list-without-tty.patch \
%D%/packages/patches/zstd-fix-stdin-list-test.patch
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index fef6002b3c..de0aa92adb 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -10,7 +10,7 @@
;;; Copyright © 2016, 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
@@ -1131,7 +1131,7 @@ command.")
(define-public tzdata
(package
(name "tzdata")
- (version "2018d")
+ (version "2018e")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1139,7 +1139,7 @@ command.")
version ".tar.gz"))
(sha256
(base32
- "0m6020dnk9r40z7k36jp13fa06xip3hn0fdx3nly66jzxgffs1ji"))))
+ "0bk97fv2i5ns42prpmlaadsswdjwv0ifi7whj2s4q6l44rcqwa3b"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f
@@ -1189,7 +1189,7 @@ command.")
version ".tar.gz"))
(sha256
(base32
- "1nd882yhsazmcfqmcqyfig3axycryl30gmizgqhqsx5dpa2lxr3x"))))))
+ "1kpb02631s58i068mwq63xlamcv1ffj4p6y4wpb9kdl01vr0qd6a"))))))
(home-page "https://www.iana.org/time-zones")
(synopsis "Database of current and historical time zones")
(description "The Time Zone Database (often called tz or zoneinfo)
@@ -1205,7 +1205,25 @@ and daylight-saving rules.")
;;; will typically be obsolete and should never be referred to by a built
;;; package.
(define-public tzdata-for-tests
- (hidden-package tzdata))
+ (hidden-package
+ (package
+ (inherit tzdata)
+ (version "2018d")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://www.iana.org/time-zones/repository"
+ "/releases/tzdata" version ".tar.gz"))
+ (sha256
+ (base32
+ "0m6020dnk9r40z7k36jp13fa06xip3hn0fdx3nly66jzxgffs1ji"))))
+ (inputs `(("tzcode" ,(origin
+ (method url-fetch)
+ (uri (string-append
+ "http://www.iana.org/time-zones/repository/releases/tzcode"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1nd882yhsazmcfqmcqyfig3axycryl30gmizgqhqsx5dpa2lxr3x")))))))))
(define-public libiconv
(package
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 73130b7312..7599f4ac25 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -425,8 +425,7 @@ def test_ctrl_c"))
(apply invoke "make" "tools_defconfig" make-flags)))
(replace 'build
(lambda* (#:key inputs make-flags #:allow-other-keys)
- (apply invoke "make" "tools-only" make-flags)
- (apply invoke "make" "envtools" make-flags)))
+ (apply invoke "make" "tools-all" make-flags)))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -443,7 +442,8 @@ def test_ctrl_c"))
"tools/mkimage"
"tools/proftool"
"tools/fdtgrep"
- "tools/env/fw_printenv"))
+ "tools/env/fw_printenv"
+ "tools/sunxi-spl-image-builder"))
#t)))
(delete 'check)
(add-after 'install 'check
@@ -519,7 +519,8 @@ board-independent tools.")))
(let ((target-file (string-append libexec "/" file)))
(mkdir-p (dirname target-file))
(copy-file file target-file)))
- uboot-files))))))))))
+ uboot-files)
+ #t)))))))))
(define-public u-boot-vexpress
(make-u-boot-package "vexpress_ca9x4" "arm-linux-gnueabihf"))
diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index a6d9fa8cfc..e693aec4ac 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -100,7 +100,7 @@ generate such a compilation database.")
(define-public meson
(package
(name "meson")
- (version "0.45.1")
+ (version "0.46.1")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/mesonbuild/meson/"
@@ -108,7 +108,7 @@ generate such a compilation database.")
version ".tar.gz"))
(sha256
(base32
- "1yqa4337nb8w92bvr91rsxmn0xkf7pmdybq9ljvnqmdvn7dv02sd"))))
+ "0y7f5hhy16q99l7x06x8sid9p9dbg6d7i60zs7c07cz5ww1plj8r"))))
(build-system python-build-system)
(arguments
`(;; FIXME: Tests require many additional inputs, a fix for the RUNPATH
diff --git a/gnu/packages/certs.scm b/gnu/packages/certs.scm
index 3f592cf17b..cb05fb83fc 100644
--- a/gnu/packages/certs.scm
+++ b/gnu/packages/certs.scm
@@ -76,7 +76,7 @@
(define-public nss-certs
(package
(name "nss-certs")
- (version "3.36.1")
+ (version "3.38")
(source (origin
(method url-fetch)
(uri (let ((version-with-underscores
@@ -87,7 +87,7 @@
"nss-" version ".tar.gz")))
(sha256
(base32
- "1zrb49mp7cy3snnday1zv8d76h1mgppbcwxnlkqsgxlga8fl89b0"))))
+ "0qigcy3d169cf67jzv3rbai0m6dn34vp8h2z696mz4yn10y3sr1c"))))
(build-system gnu-build-system)
(outputs '("out"))
(native-inputs
diff --git a/gnu/packages/chemistry.scm b/gnu/packages/chemistry.scm
index f1359b2cf6..1a5086d622 100644
--- a/gnu/packages/chemistry.scm
+++ b/gnu/packages/chemistry.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Konrad Hinsen <konrad.hinsen@fastmail.net>
+;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -20,9 +21,11 @@
#:use-module (guix packages)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix download)
+ #:use-module (gnu packages compression)
#:use-module (gnu packages gv)
#:use-module (gnu packages maths)
#:use-module (gnu packages python)
+ #:use-module (guix build-system gnu)
#:use-module (guix build-system python))
(define-public domainfinder
@@ -54,6 +57,84 @@ single structure. The software is currently not actively maintained and works
only with Python 2 and NumPy < 1.9.")
(license license:cecill-c)))
+(define-public inchi
+ (package
+ (name "inchi")
+ (version "1.05")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://www.inchi-trust.org/download/"
+ (string-join (string-split version #\.) "")
+ "/INCHI-1-SRC.zip"))
+ (sha256
+ (base32
+ "081pcjx1z5jm23fs1pl2r3bccia0ww8wfkzcjpb7byhn7b513hsa"))
+ (file-name (string-append name "-" version ".zip"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f ; no check target
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure) ; no configure script
+ (add-before 'build 'chdir-to-build-directory
+ (lambda _ (chdir "INCHI_EXE/inchi-1/gcc") #t))
+ (add-after 'build 'build-library
+ (lambda _
+ (chdir "../../../INCHI_API/libinchi/gcc")
+ (invoke "make")))
+ (replace 'install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (doc (string-append out "/share/doc/inchi"))
+ (include-dir (string-append out "/include/inchi"))
+ (lib (string-append out "/lib/inchi"))
+ (inchi-doc (assoc-ref inputs "inchi-doc"))
+ (unzip (string-append (assoc-ref inputs "unzip")
+ "/bin/unzip")))
+ (chdir "../../..")
+ ;; Install binary.
+ (with-directory-excursion "INCHI_EXE/bin/Linux"
+ (rename-file "inchi-1" "inchi")
+ (install-file "inchi" bin))
+ ;; Install libraries.
+ (with-directory-excursion "INCHI_API/bin/Linux"
+ (for-each (lambda (file)
+ (install-file file lib))
+ (find-files "." "libinchi\\.so\\.1\\.*")))
+ ;; Install header files.
+ (with-directory-excursion "INCHI_BASE/src"
+ (for-each (lambda (file)
+ (install-file file include-dir))
+ (find-files "." "\\.h$")))
+ ;; Install documentation.
+ (mkdir-p doc)
+ (invoke unzip "-j" "-d" doc inchi-doc)
+ #t))))))
+ (native-inputs
+ `(("unzip" ,unzip)
+ ("inchi-doc"
+ ,(origin
+ (method url-fetch)
+ (uri (string-append "http://www.inchi-trust.org/download/"
+ (string-join (string-split version #\.) "")
+ "/INCHI-1-DOC.zip"))
+ (sha256
+ (base32
+ "1id1qb2y4lwsiw91qr2yqpn6kxbwjwhjk0hb2rwk4fxhdqib6da6"))
+ (file-name (string-append name "-" version ".zip"))))))
+ (home-page "https://www.inchi-trust.org")
+ (synopsis "Utility for manipulating machine-readable chemical structures")
+ (description
+ "The @dfn{InChI} (IUPAC International Chemical Identifier) algorithm turns
+chemical structures into machine-readable strings of information. InChIs are
+unique to the compound they describe and can encode absolute stereochemistry
+making chemicals and chemistry machine-readable and discoverable. A simple
+analogy is that InChI is the bar-code for chemistry and chemical structures.")
+ (license (license:non-copyleft
+ "file://LICENCE"
+ "See LICENCE in the distribution."))))
+
(define with-numpy-1.8
(package-input-rewriting `((,python2-numpy . ,python2-numpy-1.8))))
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 2ca431b2c1..0d73886109 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -1889,19 +1889,19 @@ create, manipulate, read, and write Zip archive files.")
(define-public libzip
(package
(name "libzip")
- (version "1.3.2")
+ (version "1.5.1")
(source (origin
(method url-fetch)
(uri (string-append
"https://libzip.org/download/" name "-" version ".tar.xz"))
(sha256
(base32
- "11g1hvm2bxa2v5plakfzcwyk5hb5fz4kgrkp38l0xhnv21888xv2"))))
+ "0wnkkvkq90wyawj9221i77sf3nix1vj3ygzdy59k8yvcjnv3bsh4"))))
(native-inputs
`(("perl" ,perl)))
(inputs
`(("zlib" ,zlib)))
- (build-system gnu-build-system)
+ (build-system cmake-build-system)
(home-page "https://libzip.org")
(synopsis "C library for reading, creating, and modifying zip archives")
(description "Libzip is a C library for reading, creating, and modifying
diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm
index 65bc698389..e724fd147b 100644
--- a/gnu/packages/curl.scm
+++ b/gnu/packages/curl.scm
@@ -51,7 +51,7 @@
(package
(name "curl")
(version "7.59.0")
- (replacement curl-7.60.0)
+ (replacement curl-7.61.0)
(source (origin
(method url-fetch)
(uri (string-append "https://curl.haxx.se/download/curl-"
@@ -141,10 +141,10 @@ tunneling, and so on.")
"See COPYING in the distribution."))
(home-page "https://curl.haxx.se/")))
-(define-public curl-7.60.0
+(define-public curl-7.61.0
(package
(inherit curl)
- (version "7.60.0")
+ (version "7.61.0")
(source
(origin
(method url-fetch)
@@ -152,7 +152,7 @@ tunneling, and so on.")
version ".tar.xz"))
(sha256
(base32
- "1876ck0smbqz3xakm7s6q6gh4zarh9pv3izf4vlzgpc9xn6zydl7"))))))
+ "080p9r2kln8cbfj0rqfn6wqp5kdn9k5wp720nirkcw845lcmavpg"))))))
(define-public kurly
(package
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 0f1e47f485..55979834c9 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -705,14 +705,14 @@ as a drop-in replacement of MySQL.")
(define-public postgresql
(package
(name "postgresql")
- (version "10.3")
+ (version "10.4")
(source (origin
(method url-fetch)
(uri (string-append "https://ftp.postgresql.org/pub/source/v"
version "/postgresql-" version ".tar.bz2"))
(sha256
(base32
- "06lkcwsf851z49zqcws5yc77s2yrbaazf2nvbk38hpp31rw6i8kf"))))
+ "0j000bcs9w8wrllg8m7j1lxsd3n2x0yzkack5p35cmxx20iq2q0v"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--with-uuid=e2fs")
@@ -1070,14 +1070,14 @@ is in the public domain.")
(define-public tdb
(package
(name "tdb")
- (version "1.3.15")
+ (version "1.3.16")
(source (origin
(method url-fetch)
(uri (string-append "https://www.samba.org/ftp/tdb/tdb-"
version ".tar.gz"))
(sha256
(base32
- "0a37jhpij8wr4f4pjqdlwnffy2l6a2vkqdpz1bqxj6v06cwbz8dl"))))
+ "1ibcz466xwk1x6xvzlgzd5va4lyrjzm3rnjak29kkwk7cmhw4gva"))))
(build-system gnu-build-system)
(arguments
'(#:phases
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 78479b2d32..ffa442f4d6 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -9,6 +9,7 @@
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
+;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -29,7 +30,9 @@
#:use-module (gnu packages admin)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages databases)
+ #:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
#:use-module (gnu packages datastructures)
#:use-module (gnu packages flex)
@@ -55,7 +58,8 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix utils)
- #:use-module (guix build-system gnu))
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system trivial))
(define-public dnsmasq
(package
@@ -99,16 +103,15 @@ and BOOTP/TFTP for network booting of diskless machines.")
(define-public isc-bind
(package
(name "bind")
- (version "9.12.1-P2")
+ (version "9.12.2")
(source (origin
(method url-fetch)
(uri (string-append
"ftp://ftp.isc.org/isc/bind9/" version "/" name "-"
version ".tar.gz"))
- (patches (search-patches "bind-CVE-2018-5738.patch"))
(sha256
(base32
- "0a9dvyg1dk7vpqn9gz7p5jas3bz7z22bjd66b98g1qk16i2w7rqd"))))
+ "0ll46igs9xfq2qclc5wzqsnj3zv7ssga0544gm24s1m7765lqslz"))))
(build-system gnu-build-system)
(outputs `("out" "utils"))
(inputs
@@ -288,7 +291,7 @@ asynchronous fashion.")
(define-public unbound
(package
(name "unbound")
- (version "1.6.8")
+ (version "1.7.3")
(source
(origin
(method url-fetch)
@@ -296,7 +299,7 @@ asynchronous fashion.")
version ".tar.gz"))
(sha256
(base32
- "0jfxhh4gc5amhndikskz1s7da27ycn442j3l20bm992n7zijid73"))))
+ "0bb0p8nbda77ghx20yfl7hqxm9x709223q35465v99i8v4ay27f1"))))
(build-system gnu-build-system)
(outputs '("out" "python"))
(native-inputs
@@ -576,3 +579,89 @@ synthesis, and on-the-fly re-configuration.")
license:lgpl2.0+ ; parts of scr/contrib/ucw
license:public-domain ; src/contrib/fnv and possibly murmurhash3
license:gpl3+)))) ; everything else
+
+(define-public ddclient
+ (package
+ (name "ddclient")
+ (version "3.8.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/ddclient/ddclient/ddclient-"
+ version "/ddclient-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1j8zdn7fy7i0bjk3jf0hxnbnshc2yf054vxq64imxdpfd7n5zgfy"))))
+ (build-system trivial-build-system) ; no Makefile.PL
+ (native-inputs
+ `(("bash" ,bash)
+ ("gzip" ,gzip)
+ ("perl" ,perl)
+ ("tar" ,tar)))
+ (inputs
+ `(("net-tools" ,net-tools)
+ ("inetutils" ,inetutils) ;logger
+ ("perl-io-socket-ssl" ,perl-io-socket-ssl)
+ ("perl-digest-sha1" ,perl-digest-sha1)))
+ (arguments
+ `(#:modules ((guix build utils)
+ (ice-9 match)
+ (srfi srfi-26))
+ #:builder
+ (begin
+ (use-modules (guix build utils)
+ (ice-9 match)
+ (srfi srfi-26))
+ ;; bootstrap
+ (setenv "PATH" (string-append
+ (assoc-ref %build-inputs "bash") "/bin" ":"
+ (assoc-ref %build-inputs "tar") "/bin" ":"
+ (assoc-ref %build-inputs "gzip") "/bin" ":"
+ (assoc-ref %build-inputs "perl") "/bin"))
+ ;; extract source
+ (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
+ ;; package
+ (with-directory-excursion (string-append ,name "-" ,version)
+ (let* ((out (assoc-ref %outputs "out"))
+ (bin (string-append out "/bin")))
+ (let ((file "ddclient"))
+ (substitute* file
+ (("/usr/bin/perl") (which "perl"))
+ ;; Strictly use ‘/etc/ddclient/ddclient.conf’.
+ (("\\$\\{program\\}\\.conf") "/etc/ddclient/ddclient.conf")
+ (("\\$etc\\$program.conf") "/etc/ddclient/ddclient.conf")
+ ;; Strictly use ‘/var/cache/ddclient/ddclient.cache’
+ (("\\$cachedir\\$program\\.cache")
+ "/var/cache/ddclient/ddclient.cache"))
+ (install-file file bin)
+ (wrap-program (string-append bin "/" file)
+ `("PATH" ":" =
+ ("$PATH"
+ ,@(map (lambda (input)
+ (match input
+ ((name . store)
+ (string-append store "/bin"))))
+ %build-inputs)))
+ `("PERL5LIB" ":" =
+ ,(delete
+ ""
+ (map (match-lambda
+ (((? (cut string-prefix? "perl-" <>) name) . dir)
+ (string-append dir "/lib/perl5/site_perl"))
+ (_ ""))
+ %build-inputs)))))
+ (for-each (cut install-file <> (string-append out
+ "/share/ddclient"))
+ (find-files "." "sample.*$")))))))
+ (home-page "https://sourceforge.net/projects/ddclient/")
+ (synopsis "Address updating utility for dynamic DNS services")
+ (description "This package provides a client to update dynamic IP
+addresses with several dynamic DNS service providers, such as
+@uref{https://www.dyndns.com/account/login.html,DynDNS.com}.
+
+This makes it possible to use a fixed hostname (such as myhost.dyndns.org) to
+access a machine with a dynamic IP address.
+
+The client supports both dynamic and (near) static services, as well as MX
+record and alternative name management. It caches the address, and only
+attempts the update when it has changed.")
+ (license license:gpl2+)))
diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm
index 2ffe541294..f533535f03 100644
--- a/gnu/packages/documentation.scm
+++ b/gnu/packages/documentation.scm
@@ -123,14 +123,14 @@ markup) can be customized and extended by the user.")
(define-public doxygen
(package
(name "doxygen")
- (version "1.8.13")
+ (version "1.8.14")
(source (origin
(method url-fetch)
(uri (string-append "http://ftp.stack.nl/pub/users/dimitri/"
name "-" version ".src.tar.gz"))
(sha256
(base32
- "0srzawqn3apzrg8hwycwrawdylmmjrndij4spw6xr1vspn3phrmg"))
+ "0kcxymbam9jwiyjwyvwdjj0h74lbb6c467szsipzbxjyfl17wxfi"))
(patches (search-patches "doxygen-test.patch"))))
(build-system cmake-build-system)
(native-inputs
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index c6c7a1df4b..11cd244deb 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -35,6 +35,7 @@
;;; Copyright © 2018 Sohom Bhattacharjee <soham.bhattacharjee15@gmail.com>
;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2018 Pierre Neidhardt <ambrevar@gmail.com>
+;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -8516,6 +8517,10 @@ outline-mode), so there is no such thing like an outshine mode, only
(base32
"109fvivsb4r0rbqljngqrmxqvbnbkqlivczx6brrvlr7ci625lhf"))))
(build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-seq" ,emacs-seq)
+ ("emacs-dash" ,emacs-dash)
+ ("emacs-let-alist" ,emacs-let-alist)))
(home-page "https://github.com/cpitclaudel/biblio.el")
(synopsis "Browse and import bibliographic references")
(description "This package provides an extensible Emacs package for
@@ -8550,7 +8555,8 @@ automatically fetched from well-curated sources, and formatted as BibTeX.")
("emacs-s" ,emacs-s)
("emacs-dash" ,emacs-dash)
("emacs-f" ,emacs-f)
- ("emacs-biblio" ,emacs-biblio)))
+ ("emacs-biblio" ,emacs-biblio)
+ ("emacs-ivy" ,emacs-ivy)))
(home-page "https://github.com/tmalsburg/helm-bibtex")
(synopsis "Bibliography manager based on Helm")
(description "This package provides bibliography manager for Emacs,
@@ -11410,3 +11416,50 @@ siblings and friends. This visual overview can also be used to browse your
entries. You can think of entries as nodes in a mind map, or pages in a
wiki.")
(license license:expat)))
+
+(define-public emacs-recent-addresses
+ (let ((commit "d9da58db542089a1ceb5ef29e420dbfbc4a36373")
+ (revision "0"))
+ (package
+ (name "emacs-recent-addresses")
+ (home-page "http://nschum.de/src/emacs/recent-addresses/")
+ (version (git-version "0.1" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/nschum/recent-addresses.el")
+ (commit commit)))
+ (sha256
+ (base32
+ "175rvcwmkb5z7ss7q2y5178mvdvp5bhn39irz80qinlvaz8fm4nk"))
+ (file-name (git-file-name name version))))
+ (build-system emacs-build-system)
+ (synopsis "Record recently-used email addressed and auto-complete them")
+ (description
+ "@code{recent-addresses} is an Emacs allows you to quickly look up
+previously used email addresses. It can be used alongside the Gnus email
+client.")
+ (license license:gpl2+))))
+
+(define-public emacs-fold-dwim
+ (let ((commit "c46f4bb2ce91b4e307136320e72c28dd50b6cd8b")
+ (revision "0"))
+ (package
+ (name "emacs-fold-dwim")
+ (version (git-version "1.2" revision commit))
+ (home-page "https://github.com/emacsattic/fold-dwim")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference (url home-page) (commit commit)))
+ (sha256
+ (base32
+ "1yz1wis31asw6xa5maliyd1ck2q02xnnh7dc6swgj9cb4wi7k6i1"))
+ (file-name (git-file-name name version))))
+ (build-system emacs-build-system)
+ (synopsis "Unified user interface for Emacs folding modes")
+ (description
+ "DWIM stands for \"do what I mean\", as in the idea that one keystroke
+can do different things depending on the context. In this package, it means
+that, if the cursor is in a currently hidden folded construction, we want to
+show it; if it's not, we want to hide whatever fold the cursor is in.")
+ (license license:gpl2+))))
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 7775e85714..b42a27b8c8 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -147,14 +147,14 @@ freedesktop.org project.")
(define-public libinput
(package
(name "libinput")
- (version "1.10.3")
+ (version "1.11.1")
(source (origin
(method url-fetch)
(uri (string-append "https://freedesktop.org/software/libinput/"
name "-" version ".tar.xz"))
(sha256
(base32
- "0002xk9cqzpqrlhgav1wp8nimsbp9d2w8rd8mgygczq2hjar0lhd"))))
+ "1z7i8vk0i61npkdqwsk85wp9v4yjlvylqnyydikjqnbsrjp9abk4"))))
(build-system meson-build-system)
(arguments
`(#:configure-flags '("-Ddocumentation=false")))
@@ -474,7 +474,7 @@ applications, X servers (rootless or fullscreen) or other display servers.")
(define-public wayland-protocols
(package
(name "wayland-protocols")
- (version "1.13")
+ (version "1.14")
(source (origin
(method url-fetch)
(uri (string-append
@@ -482,7 +482,7 @@ applications, X servers (rootless or fullscreen) or other display servers.")
"wayland-protocols-" version ".tar.xz"))
(sha256
(base32
- "0f4gqvmz53q9d8h0ilhf4z773nb4vskzx11a3d1jycym120bqn07"))))
+ "1xknjcfhqvdi1s4iq4kk1q61fg2rar3g8q4vlqarpd324imqjj4n"))))
(build-system gnu-build-system)
(inputs
`(("wayland" ,wayland)))
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 4131c130ff..afabeb0c62 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -7,7 +7,7 @@
;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016, 2017 Julian Graham <joolean@gmail.com>
+;;; Copyright © 2016, 2017, 2018 Julian Graham <joolean@gmail.com>
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
@@ -225,14 +225,14 @@ PCM data.")
(define-public gzochi
(package
(name "gzochi")
- (version "0.11.1")
+ (version "0.12")
(source (origin
(method url-fetch)
(uri (string-append "mirror://savannah/gzochi/gzochi-"
version ".tar.gz"))
(sha256
(base32
- "13j1m92zhxwkaaja3lg5x0h0b28mrrawdzk9d3hd19031akfxwb3"))))
+ "0h8yvk7154kd8zdfa9nqy73blrjq2x19kv305jcnwlmm09vvss59"))))
(build-system gnu-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index f6e277e33d..fdca3d2ffc 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -627,7 +627,7 @@ as the 'native-search-paths' field."
(lambda* (#:key outputs #:allow-other-keys)
(for-each delete-file
(find-files (string-append (assoc-ref outputs "out") "/bin")
- ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc.*)"))
+ ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))
#t))))))))
(define %generic-search-paths
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index 503308ac16..bde6e55607 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -224,7 +224,7 @@ also known as DXTn or DXTC) for Mesa.")
(define-public mesa
(package
(name "mesa")
- (version "17.3.8")
+ (version "18.1.2")
(source
(origin
(method url-fetch)
@@ -236,10 +236,9 @@ also known as DXTn or DXTC) for Mesa.")
version "/mesa-" version ".tar.xz")))
(sha256
(base32
- "1cd6a4ll5arla3kncxnw9196ak1v4rvnb098aa7lm3n4h7r9p7cg"))
+ "1ydivzm4c2k53b65lvm11d62z140xlmd7viw63bl5cm5idjg02q7"))
(patches
- (search-patches "mesa-wayland-egl-symbols-check-mips.patch"
- "mesa-skip-disk-cache-test.patch"))))
+ (search-patches "mesa-skip-disk-cache-test.patch"))))
(build-system gnu-build-system)
(propagated-inputs
`(;; The following are in the Requires.private field of gl.pc.
@@ -260,7 +259,7 @@ also known as DXTn or DXTC) for Mesa.")
("libxvmc" ,libxvmc)
,@(match (%current-system)
((or "x86_64-linux" "i686-linux")
- `(("llvm" ,llvm-3.9.1))) ; exactly 3.9.0 or 3.9.1 for swrast
+ `(("llvm" ,llvm)))
(_
`()))
("makedepend" ,makedepend)
@@ -276,15 +275,15 @@ also known as DXTn or DXTC) for Mesa.")
'(,@(match (%current-system)
("armhf-linux"
;; TODO: Add etnaviv,imx when libdrm supports etnaviv.
- '("--with-gallium-drivers=freedreno,nouveau,r300,r600,swrast,vc4,virgl"))
+ '("--with-gallium-drivers=freedreno,nouveau,r300,r600,swrast,tegra,vc4,virgl"))
("aarch64-linux"
;; TODO: Fix svga driver for aarch64 and armhf.
- '("--with-gallium-drivers=freedreno,nouveau,pl111,r300,r600,swrast,vc4,virgl"))
+ '("--with-gallium-drivers=freedreno,nouveau,pl111,r300,r600,swrast,tegra,vc4,virgl"))
(_
'("--with-gallium-drivers=i915,nouveau,r300,r600,radeonsi,svga,swrast,virgl")))
;; Enable various optional features. TODO: opencl requires libclc,
;; omx requires libomxil-bellagio
- "--with-platforms=x11,drm,wayland,surfaceless"
+ "--with-platforms=x11,drm,surfaceless,wayland"
"--enable-glx-tls" ;Thread Local Storage, improves performance
;; "--enable-opencl"
;; "--enable-omx"
@@ -328,23 +327,15 @@ also known as DXTn or DXTC) for Mesa.")
(add-after
'unpack 'patch-create_test_cases
(lambda _
- (substitute* "src/compiler/glsl/tests/lower_jumps/create_test_cases.py"
- (("/usr/bin/env bash") (which "bash")))
(substitute* "src/intel/genxml/gen_pack_header.py"
(("/usr/bin/env python2") (which "python")))
#t))
(add-before
'build 'fix-dlopen-libnames
(lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((s2tc (assoc-ref inputs "s2tc"))
- (out (assoc-ref outputs "out")))
+ (let ((out (assoc-ref outputs "out")))
;; Remain agnostic to .so.X.Y.Z versions while doing
;; the substitutions so we're future-safe.
- (substitute*
- '("src/gallium/auxiliary/util/u_format_s3tc.c"
- "src/mesa/main/texcompress_s3tc.c")
- (("\"libtxc_dxtn\\.so")
- (string-append "\"" s2tc "/lib/libtxc_dxtn.so")))
(substitute* "src/glx/dri_common.c"
(("dlopen\\(\"libGL\\.so")
(string-append "dlopen(\"" out "/lib/libGL.so")))
@@ -559,7 +550,7 @@ OpenGL graphics API.")
(define-public libepoxy
(package
(name "libepoxy")
- (version "1.5.0")
+ (version "1.5.2")
(source (origin
(method url-fetch)
(uri (string-append
@@ -567,7 +558,7 @@ OpenGL graphics API.")
version "/libepoxy-" version ".tar.xz"))
(sha256
(base32
- "1md58amxyp34yjnw4xa185hw5jm0hnb2xnhdc28zdsx6k19rk52c"))))
+ "1n57xj5i6giw4mp5s59w1m9bm33sd6gjg7r00dzzvcwya6326mm9"))))
(arguments
`(#:phases
(modify-phases %standard-phases
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 7ea22fe88f..95d7976bf8 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -787,7 +787,7 @@ programming langauage. It also contains the utility
(define-public appstream-glib
(package
(name "appstream-glib")
- (version "0.7.5")
+ (version "0.7.10")
(source (origin
(method url-fetch)
(uri (string-append "https://people.freedesktop.org/~hughsient/"
@@ -795,7 +795,7 @@ programming langauage. It also contains the utility
"appstream-glib-" version ".tar.xz"))
(sha256
(base32
- "0ps80cbqnf3q86rvz3ajqjssdgkjc9kmynqf0wxqfir7ayc9y9ag"))))
+ "08bs0hnkvdzqv9pakv1y4c4ph77rmzjq22g760w20sv7vs63nia3"))))
(build-system meson-build-system)
(native-inputs
`(("gettext" ,gettext-minimal)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 19a216aa2a..a571d922cb 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -30,6 +30,7 @@
;;; Copyright © 2017 Brendan Tildesley <brendan.tildesley@openmailbox.org>
;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Jovany Leandro G.C <bit4bit@riseup.net>
+;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -6321,7 +6322,16 @@ fit the GNOME desktop.")
(base32
"007k2bq8iplg4psdpz074r5d4zxvn4s95qym4rw9hs6giljbrf0n"))))
(build-system meson-build-system)
- (arguments '(#:glib-or-gtk? #t))
+ (arguments '(#:glib-or-gtk? #t
+ #:phases (modify-phases %standard-phases
+ (add-after 'unpack 'patch-install-script
+ (lambda _
+ ;; This script attempts to compile glib schemas
+ ;; and create an empty MIME database. We do
+ ;; that elsewhere, so prevent it from running.
+ (substitute* "build-aux/post-install.sh"
+ (("\\[ -z \"\\$DESTDIR\" \\]") "false"))
+ #t)))))
(native-inputs
`(("glib:bin" ,glib "bin")
("gobject-introspection" ,gobject-introspection)
@@ -6467,7 +6477,7 @@ like GNOME, Unity, Budgie, Pantheon, XFCE, Mate, etc.")
(define-public faba-icon-theme
(package
(name "faba-icon-theme")
- (version "4.1.2")
+ (version "4.3")
(source
(origin
(method url-fetch)
@@ -6476,23 +6486,15 @@ like GNOME, Unity, Budgie, Pantheon, XFCE, Mate, etc.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0hi2dl627ayfnihn3v6x9xzid668m4hp098hb7hrkxvahh4h9by7"))))
- (build-system gnu-build-system)
+ "18ln06xl60qzvzz61zq9q72hdbfgjsza3flph8i2asyzx3dffz68"))))
+ (build-system meson-build-system)
(arguments
- '(#:phases
+ `(#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'patch-makefile.am
+ (add-before 'configure 'disable-post-install
(lambda _
- (substitute* '("Makefile.am")
- (("\\$\\(DESTDIR\\)/usr/share")
- "$(datadir)"))
- #t))
- (add-after 'unpack 'disable-configure-during-bootstrap
- (lambda _
- ;; Do not run configure as part of autogen.sh because references
- ;; to /bin are not fixed yet.
- (setenv "NOCONFIGURE" "y")
- #t)))))
+ (substitute* "meson.build"
+ (("meson.add_install_script.*") "")))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)))
@@ -6508,7 +6510,7 @@ Moka")
(package
(inherit faba-icon-theme)
(name "moka-icon-theme")
- (version "5.3.6")
+ (version "5.4.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/moka-project"
@@ -6517,7 +6519,7 @@ Moka")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "04axinv79qnngsxkwqzi5j9lc3hn24rjqps5ai8d42pdnfaf0x37"))))
+ "1nbwdjj268hxv9lfagd9aylily9f0hhallp841v0i3imljp84bmk"))))
(propagated-inputs
;; Moka is based on Faba by using it as a fallback icon set instead of
;; bundling it, so we need to add it as a propagated input.
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index da0c33565a..c095a966c2 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -245,14 +245,14 @@ compatible to GNU Pth.")
(define-public gnupg
(package
(name "gnupg")
- (version "2.2.8")
+ (version "2.2.9")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnupg/gnupg/gnupg-" version
".tar.bz2"))
(sha256
(base32
- "1k8dnnfs9888yp713l7kg2jg110lw47s4krx0njna6fjrsw4qyvp"))))
+ "0r11mx8nkh7ysrnshs560amha5csx8zcaggb5kxcksx1zymyly32"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 9e6061eb64..ba60d1372a 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -291,7 +291,7 @@ in the Mozilla clients.")
(define-public nss
(package
(name "nss")
- (version "3.36.1")
+ (version "3.38")
(source (origin
(method url-fetch)
(uri (let ((version-with-underscores
@@ -302,7 +302,7 @@ in the Mozilla clients.")
"nss-" version ".tar.gz")))
(sha256
(base32
- "1zrb49mp7cy3snnday1zv8d76h1mgppbcwxnlkqsgxlga8fl89b0"))
+ "0qigcy3d169cf67jzv3rbai0m6dn34vp8h2z696mz4yn10y3sr1c"))
;; Create nss.pc and nss-config.
(patches (search-patches "nss-pkgconfig.patch"
"nss-increase-test-timeout.patch"))))
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 21783f2ee6..92ce504c52 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -1840,3 +1840,138 @@ deliver content")
store, and deliver content. It's containe Docker Registry 2.0 and libraries
to interacting with distribution components.")
(license license:asl2.0))))
+
+(define-public go-github-com-docker-go-connections
+ (let ((commit "3ede32e2033de7505e6500d6c868c2b9ed9f169d")
+ (revision "0"))
+ (package
+ (name "go-github-com-docker-go-connections")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/docker/go-connections.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0v1pkr8apwmhyzbjfriwdrs1ihlk6pw7izm57r24mf9jdmg3fyb0"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/docker/go-connections"))
+ (home-page "https://github.com/docker/go-connections")
+ (synopsis "Networking library for Go")
+ (description
+ "This packages provides a library to work with network connections in
+the Go language. In particular it provides tools to deal with network address
+translation (NAT), proxies, sockets, and transport layer security (TLS).")
+ (license license:asl2.0))))
+
+(define-public go-github-com-docker-machine
+ (let ((commit "7b7a141da84480342357c51838be142bf183b095")
+ (revision "0"))
+ (package
+ (name "go-github-com-docker-machine")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/docker/machine.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0bavk0lvs462yh0lnmnxi9psi5qv1x3nvzmd2b0drsahlp1gxi8s"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/docker/machine"))
+ (home-page "https://github.com/docker/machine")
+ (synopsis "Machine management for a container-centric world")
+ (description
+ "@dfn{Machine} lets you create Docker hosts on your computer, on
+hosting providers, and inside your data center. It creates servers, installs
+Docker on them, then configures the Docker client to talk to them.")
+ (license license:asl2.0))))
+
+(define-public go-github-com-gorhill-cronexpr
+ (let ((commit "f0984319b44273e83de132089ae42b1810f4933b")
+ (revision "0"))
+ (package
+ (name "go-github-com-gorhill-cronexpr")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/gorhill/cronexpr.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0dphhhqy3i7265znv3m8n57l80dmaq6z4hsj5kgd87qd19z8x0l2"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/gorhill/cronexpr"))
+ (home-page "https://github.com/gorhill/cronexpr")
+ (synopsis "Cron expression parser in the Go language")
+ (description
+ "This package provides a cron expression parser in the Go language.
+Given a cron expression and a time stamp, you can get the next time stamp
+which satisfies the cron expression.")
+ (license (list license:gpl3+
+ license:asl2.0)))))
+
+(define-public go-gopkg-in-check-v1
+ (let ((commit "20d25e2804050c1cd24a7eea1e7a6447dd0e74ec")
+ (revision "0"))
+ (package
+ (name "go-gopkg-in-check-v1")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/go-check/check")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0k1m83ji9l1a7ng8a7v40psbymxasmssbrrhpdv2wl4rhs0nc3np"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "gopkg.in/check.v1"))
+ (home-page "https://gopkg.in/check.v1")
+ (synopsis "Test framework for the Go language")
+ (description
+ "This package provides a test library for the Go language.")
+ (license license:asl2.0))))
+
+(define-public go-gopkg-in-yaml-v2
+ (let ((commit "14227de293ca979cf205cd88769fe71ed96a97e2")
+ (revision "0"))
+ (package
+ (name "go-gopkg-in-yaml-v2")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gopkg.in/yaml.v2.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "038hnrjcnjygyi3qidfrkpkakis82qg381sr495d2s40g2dwlzah"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "gopkg.in/yaml.v2"))
+ (native-inputs
+ `(("go-gopkg-in-check-v1" ,go-gopkg-in-check-v1)))
+ (home-page "https://gopkg.in/yaml.v2")
+ (synopsis "YAML reader and writer for the Go language")
+ (description
+ "This package provides a Go library for encode and decode YAML
+values.")
+ (license license:asl2.0))))
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 83db8f6b30..3718e939d1 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -42,6 +42,7 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system meson)
#:use-module (guix build-system perl)
#:use-module (guix build-system python)
#:use-module (guix build-system waf)
@@ -670,7 +671,7 @@ application suites.")
(name "gtk+")
;; NOTE: When updating the version of 'gtk+', the hash of 'mate-themes' in
;; mate.scm will also need to be updated.
- (version "3.22.29")
+ (version "3.22.30")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@@ -678,7 +679,7 @@ application suites.")
name "-" version ".tar.xz"))
(sha256
(base32
- "1y5vzdbgww9l7xcrg13azff2rs94kggkywmpcsh39h7w76wn8zd0"))
+ "0rv5k8fyi2i19k4zncai6vf429s6zy3kncr8vb6f3m034z0sb951"))
(patches (search-patches "gtk3-respect-GUIX_GTK3_PATH.patch"
"gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch"))))
(outputs '("out" "bin" "doc"))
@@ -1362,15 +1363,15 @@ and routines to assist in editing internationalized text.")
(define-public girara
(package
(name "girara")
- (version "0.2.8")
+ (version "0.2.9")
(source (origin
(method url-fetch)
(uri
(string-append "https://pwmt.org/projects/girara/download/girara-"
- version ".tar.gz"))
+ version ".tar.xz"))
(sha256
(base32
- "18wss3sak3djip090v2vdbvq1mvkwcspfswc87zbvv3magihan98"))))
+ "0lkxrfna818wkkr2f6mdzf15y5z8xl1b9592ylmzjbqsqya3w7x8"))))
(native-inputs `(("pkg-config" ,pkg-config)
("check" ,check)
("gettext" ,gettext-minimal)
@@ -1379,13 +1380,7 @@ and routines to assist in editing internationalized text.")
;; Listed in 'Requires.private' of 'girara.pc'.
(propagated-inputs `(("gtk+" ,gtk+)))
(arguments
- `(#:make-flags
- `(,(string-append "PREFIX=" (assoc-ref %outputs "out"))
- "COLOR=0" "CC=gcc")
- #:test-target "test"
- #:disallowed-references (,xorg-server-1.19.3)
- #:phases (modify-phases %standard-phases
- (delete 'configure)
+ `(#:phases (modify-phases %standard-phases
(add-before 'check 'start-xserver
;; Tests require a running X server.
(lambda* (#:key inputs #:allow-other-keys)
@@ -1401,7 +1396,7 @@ and routines to assist in editing internationalized text.")
(setenv "DBUS_FATAL_WARNINGS" "0")
(zero? (system (string-append xorg-server "/bin/Xvfb "
display " &")))))))))
- (build-system gnu-build-system)
+ (build-system meson-build-system)
(home-page "https://pwmt.org/projects/girara/")
(synopsis "Library for minimalistic gtk+3 user interfaces")
(description "Girara is a library that implements a user interface that
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 2176f07cc4..8d2dcba208 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -2487,6 +2487,31 @@ Haskell library @code{regex-base}.")
@code{libtre} (fork by Roman Cheplyaka).")
(license license:bsd-3)))
+(define-public ghc-regex-tdfa-text
+ (package
+ (name "ghc-regex-tdfa-text")
+ (version "1.0.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/regex-tdfa-text/"
+ "regex-tdfa-text-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0090g6lgbdm9lywpqm2d3724nnnh24nx3vnlqr96qc2w486pmmrq"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-text" ,ghc-text)
+ ("ghc-regex-base" ,ghc-regex-base)
+ ("ghc-regex-tdfa" ,ghc-regex-tdfa)))
+ (home-page
+ "http://hackage.haskell.org/package/regex-tdfa-text")
+ (synopsis "Text interface for regex-tdfa")
+ (description
+ "This provides an extra text interface for regex-tdfa.")
+ (license license:bsd-3)))
+
(define-public ghc-parsers
(package
(name "ghc-parsers")
@@ -9678,4 +9703,23 @@ serialization code.")
disk space usage.")
(license license:bsd-3)))
+(define-public ghc-xdg-basedir
+ (package
+ (name "ghc-xdg-basedir")
+ (version "0.2.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/xdg-basedir/"
+ "xdg-basedir-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0azlzaxp2dn4l1nr7shsxah2magk1szf6fx0mv75az00qsjw6qg4"))))
+ (build-system haskell-build-system)
+ (home-page "http://github.com/willdonnelly/xdg-basedir")
+ (synopsis "XDG Base Directory library for Haskell")
+ (description "This package provides a library implementing the XDG Base Directory spec.")
+ (license license:bsd-3)))
+
;;; haskell.scm ends here
diff --git a/gnu/packages/iso-codes.scm b/gnu/packages/iso-codes.scm
index 9f67cf2868..67c6dc73e5 100644
--- a/gnu/packages/iso-codes.scm
+++ b/gnu/packages/iso-codes.scm
@@ -45,7 +45,7 @@
`(("gettext" ,gettext-minimal)
("perl" ,perl)
("python" ,python-wrapper)))
- (home-page "https://pkg-isocodes.alioth.debian.org/")
+ (home-page "https://salsa.debian.org/iso-codes-team/iso-codes")
(synopsis "Various ISO standards")
(description
"This package provides lists of various ISO standards (e.g. country,
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 2b72c98319..a7d5c9f445 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -9,6 +9,7 @@
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
+;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -150,7 +151,7 @@ and binary format defined in The Java Virtual Machine Specification.")
#:phases
(modify-phases %standard-phases
(add-after 'install 'install-data
- (lambda _ (zero? (system* "make" "install-data")))))))
+ (lambda _ (invoke "make" "install-data"))))))
(native-inputs
`(("jikes" ,jikes)
("fastjar" ,fastjar)
@@ -175,6 +176,7 @@ language.")
(uri (string-append "mirror://sourceforge/jamvm/jamvm/"
"JamVM%20" version "/jamvm-"
version ".tar.gz"))
+ (patches (search-patches "jamvm-arm.patch"))
(sha256
(base32
"06lhi03l3b0h48pc7x58bk9my2nrcf1flpmglvys3wyad6yraf36"))))
@@ -212,7 +214,13 @@ JNI.")
"1cg0lga887qz5iizh6mlkxp01lciymrhmp7wzxpl6zpnldxmzrjx"))))
(build-system gnu-build-system)
(arguments
- `(#:tests? #f ; no "check" target
+ `(#:imported-modules ((guix build syscalls)
+ ,@%gnu-build-system-modules)
+ #:modules ((srfi srfi-1)
+ (guix build gnu-build-system)
+ (guix build utils)
+ (guix build syscalls))
+ #:tests? #f ; no "check" target
#:phases
(modify-phases %standard-phases
(delete 'bootstrap)
@@ -245,19 +253,54 @@ JNI.")
;; Without these JamVM options the build may freeze.
(substitute* "bootstrap.sh"
(("^\"\\$\\{JAVACMD\\}\" " m)
- (string-append m "-Xnocompact -Xnoinlining ")))
+ ,@(if (string-prefix? "armhf" (or (%current-system)
+ (%current-target-system)))
+ `((string-append m "-Xnocompact "))
+ `((string-append m "-Xnocompact -Xnoinlining ")))))
;; Disable tests because we are bootstrapping and thus don't have
;; any of the dependencies required to build and run the tests.
(substitute* "build.xml"
(("depends=\"jars,test-jar\"") "depends=\"jars\""))
- (zero? (system* "bash" "bootstrap.sh"
- (string-append "-Ddist.dir="
- (assoc-ref %outputs "out"))))))
+ (invoke "bash" "bootstrap.sh"
+ (string-append "-Ddist.dir="
+ (assoc-ref %outputs "out")))))
+ (add-after 'build 'strip-jar-timestamps ;based on ant-build-system
+ (lambda* (#:key outputs #:allow-other-keys)
+ (define (repack-archive jar)
+ (let* ((dir (mkdtemp! "jar-contents.XXXXXX"))
+ (manifest (string-append dir "/META-INF/MANIFESTS.MF")))
+ (with-directory-excursion dir
+ (invoke "unzip" jar))
+ (delete-file jar)
+ ;; XXX: copied from (gnu build install)
+ (for-each (lambda (file)
+ (let ((s (lstat file)))
+ (unless (eq? (stat:type s) 'symlink)
+ (utime file 0 0 0 0))))
+ (find-files dir #:directories? #t))
+ ;; It is important that the manifest appears first.
+ (with-directory-excursion dir
+ (let* ((files (find-files "." ".*" #:directories? #t))
+ ;; To ensure that the reference scanner can
+ ;; detect all store references in the jars
+ ;; we disable compression with the "-0" option.
+ (command (if (file-exists? manifest)
+ `("zip" "-0" "-X" ,jar ,manifest
+ ,@files)
+ `("zip" "-0" "-X" ,jar ,@files))))
+ (apply invoke command)))))
+ (for-each repack-archive
+ (find-files
+ (string-append (assoc-ref %outputs "out") "/lib")
+ "\\.jar$"))
+ #t))
(delete 'install))))
(native-inputs
`(("jikes" ,jikes)
- ("jamvm" ,jamvm-1-bootstrap)))
+ ("jamvm" ,jamvm-1-bootstrap)
+ ("unzip" ,unzip)
+ ("zip", zip)))
(home-page "http://ant.apache.org")
(synopsis "Build tool for Java")
(description
@@ -316,10 +359,10 @@ build process and its dependencies, whereas Make uses Makefile format.")
Main-Class: org.eclipse.jdt.internal.compiler.batch.Main\n")))
;; Compile it all!
- (and (zero? (apply system* "jikes"
- (find-files "." "\\.java$")))
- (zero? (system* "fastjar" "cvfm"
- "ecj-bootstrap.jar" "manifest" ".")))))
+ (and (apply invoke "jikes"
+ (find-files "." "\\.java$"))
+ (invoke "fastjar" "cvfm"
+ "ecj-bootstrap.jar" "manifest" "."))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((share (string-append (assoc-ref outputs "out")
@@ -394,7 +437,6 @@ requirement for all GNU Classpath releases after version 0.93.")
args defaults))
(apply system* ,java
(append
- (list "-Xnocompact" "-Xnoinlining")
;; Remove "-J" prefix
(map (cut string-drop <> 2) vm-args)
'("org.eclipse.jdt.internal.compiler.batch.Main")
@@ -453,7 +495,7 @@ the standard javac executable.")))
#:phases
(modify-phases %standard-phases
(add-after 'install 'install-data
- (lambda _ (zero? (system* "make" "install-data")))))))
+ (lambda _ (invoke "make" "install-data"))))))
(native-inputs
`(("ecj-bootstrap" ,ecj-bootstrap)
("ecj-javac-wrapper" ,ecj-javac-wrapper)
@@ -484,12 +526,20 @@ the standard javac executable.")))
(for-each (lambda (tool)
(with-output-to-file (string-append bin tool)
(lambda _
- (format #t "#!~a/bin/sh
+ ,@(if (string-prefix? "armhf" (or (%current-system)
+ (%current-target-system)))
+ `((format #t "#!~a/bin/sh
+~a/bin/jamvm -Xnocompact -classpath ~a/share/classpath/tools.zip \
+gnu.classpath.tools.~a.~a $@"
+ bash jamvm classpath tool
+ (if (string=? "native2ascii" tool)
+ "Native2ASCII" "Main")))
+ `((format #t "#!~a/bin/sh
~a/bin/jamvm -Xnocompact -Xnoinlining -classpath ~a/share/classpath/tools.zip \
gnu.classpath.tools.~a.~a $@"
bash jamvm classpath tool
(if (string=? "native2ascii" tool)
- "Native2ASCII" "Main"))))
+ "Native2ASCII" "Main"))))))
(chmod (string-append bin tool) #o755))
(list "javah"
"rmic"
@@ -562,7 +612,7 @@ machine.")))
(("@Override") ""))
#t))
(add-after 'install 'install-data
- (lambda _ (zero? (system* "make" "install-data")))))))
+ (lambda _ (invoke "make" "install-data"))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
@@ -668,37 +718,35 @@ machine.")))
(modify-phases %standard-phases
(replace 'unpack
(lambda* (#:key source inputs #:allow-other-keys)
- (and (zero? (system* "tar" "xvf" source))
- (begin
- (chdir (string-append "icedtea6-" ,version))
- (mkdir "openjdk")
- (copy-recursively (assoc-ref inputs "openjdk-src") "openjdk")
- ;; The convenient OpenJDK source bundle is no longer
- ;; available for download, so we have to take the sources
- ;; from the Mercurial repositories and change the Makefile
- ;; to avoid tests for the OpenJDK zip archive.
- (with-directory-excursion "openjdk"
- (for-each (lambda (part)
- (mkdir part)
- (copy-recursively
- (assoc-ref inputs
- (string-append part "-src"))
- part))
- '("jdk" "corba"
- "langtools" "jaxp" "jaxws")))
- (with-directory-excursion "openjdk"
- (invoke "tar" "xvf" (assoc-ref inputs "hotspot-src"))
- (rename-file "hg-checkout" "hotspot"))
- (substitute* "Makefile.in"
- (("echo \"ERROR: No up-to-date OpenJDK zip available\"; exit -1;")
- "echo \"trust me\";")
- ;; The contents of the bootstrap directory must be
- ;; writeable but when copying from the store they are
- ;; not.
- (("mkdir -p lib/rt" line)
- (string-append line "; chmod -R u+w $(BOOT_DIR)")))
- (zero? (system* "chmod" "-R" "u+w" "openjdk"))
- #t))))
+ (invoke "tar" "xvf" source)
+ (chdir (string-append "icedtea6-" ,version))
+ (mkdir "openjdk")
+ (copy-recursively (assoc-ref inputs "openjdk-src") "openjdk")
+ ;; The convenient OpenJDK source bundle is no longer
+ ;; available for download, so we have to take the sources
+ ;; from the Mercurial repositories and change the Makefile
+ ;; to avoid tests for the OpenJDK zip archive.
+ (with-directory-excursion "openjdk"
+ (for-each (lambda (part)
+ (mkdir part)
+ (copy-recursively
+ (assoc-ref inputs
+ (string-append part "-src"))
+ part))
+ '("jdk" "corba"
+ "langtools" "jaxp" "jaxws")))
+ (with-directory-excursion "openjdk"
+ (invoke "tar" "xvf" (assoc-ref inputs "hotspot-src"))
+ (rename-file "hg-checkout" "hotspot"))
+ (substitute* "Makefile.in"
+ (("echo \"ERROR: No up-to-date OpenJDK zip available\"; exit -1;")
+ "echo \"trust me\";")
+ ;; The contents of the bootstrap directory must be
+ ;; writeable but when copying from the store they are
+ ;; not.
+ (("mkdir -p lib/rt" line)
+ (string-append line "; chmod -R u+w $(BOOT_DIR)")))
+ (invoke "chmod" "-R" "u+w" "openjdk")))
(add-after 'unpack 'use-classpath
(lambda* (#:key inputs #:allow-other-keys)
(let ((jvmlib (assoc-ref inputs "classpath"))
@@ -1036,23 +1084,22 @@ bootstrapping purposes.")
(let ((dir (or dir
(string-drop-right name 5))))
(mkdir dir)
- (zero? (system* "tar" "xvf"
- (assoc-ref inputs name)
- "-C" dir
- "--strip-components=1"))))))
+ (invoke "tar" "xvf"
+ (assoc-ref inputs name)
+ "-C" dir
+ "--strip-components=1")))))
(mkdir target)
- (and
- (zero? (system* "tar" "xvf" source
- "-C" target "--strip-components=1"))
- (chdir target)
- (unpack "openjdk-src" "openjdk.src")
- (with-directory-excursion "openjdk.src"
- (for-each unpack
- (filter (cut string-suffix? "-drop" <>)
- (map (match-lambda
- ((name . _) name))
- inputs))))
- #t))))
+ (invoke "tar" "xvf" source
+ "-C" target "--strip-components=1")
+ (chdir target)
+ (unpack "openjdk-src" "openjdk.src")
+ (with-directory-excursion "openjdk.src"
+ (for-each unpack
+ (filter (cut string-suffix? "-drop" <>)
+ (map (match-lambda
+ ((name . _) name))
+ inputs))))
+ #t)))
(add-after 'unpack 'fix-x11-extension-include-path
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "openjdk.src/jdk/make/sun/awt/mawt.gmk"
@@ -1277,17 +1324,19 @@ bootstrapping purposes.")
(let ((line (read-line port)))
(cond
((eof-object? line) #t)
- ((regexp-exec error-pattern line) #f)
+ ((regexp-exec error-pattern line)
+ (error "test failed"))
(else (loop)))))))
(run-test (lambda (test)
- (system* "make" test)
+ (invoke "make" test)
(call-with-input-file
(string-append "test/" test ".log")
checker))))
- (or #t ; skip tests
- (and (run-test "check-hotspot")
- (run-test "check-langtools")
- (run-test "check-jdk"))))))
+ (when #f ; skip tests
+ (run-test "check-hotspot")
+ (run-test "check-langtools")
+ (run-test "check-jdk"))
+ #t)))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((doc (string-append (assoc-ref outputs "doc")
@@ -1665,11 +1714,13 @@ new Date();"))
;; result in the tests to be run.
(substitute* "build.xml"
(("depends=\"jars,test-jar\"") "depends=\"jars\""))
- (zero? (system* "bash" "bootstrap.sh"
- (string-append "-Ddist.dir="
- (assoc-ref outputs "out"))))))))))
+ (invoke "bash" "bootstrap.sh"
+ (string-append "-Ddist.dir="
+ (assoc-ref outputs "out")))))))))
(native-inputs
- `(("jdk" ,icedtea-8 "jdk")))))
+ `(("jdk" ,icedtea-8 "jdk")
+ ("zip" ,zip)
+ ("unzip" ,unzip)))))
;; The 1.9.x series is the last that can be built with GCJ. The 1.10.x series
;; requires Java 8.
@@ -1684,7 +1735,9 @@ new Date();"))
(base32
"1k28mka0m3isy9yr8gz84kz1f3f879rwaxrd44vdn9xbfwvwk86n"))))
(native-inputs
- `(("jdk" ,icedtea-7 "jdk")))))
+ `(("jdk" ,icedtea-7 "jdk")
+ ("zip" ,zip)
+ ("unzip" ,unzip)))))
(define-public ant-apache-bcel
(package
@@ -1793,14 +1846,13 @@ new Date();"))
(lambda (name)
(mkdir-p name)
(with-directory-excursion name
- (or (zero? (system* "tar"
- ;; Use xz for repacked tarball.
- "--xz"
- "--extract"
- "--verbose"
- "--file" (assoc-ref inputs name)
- "--strip-components=1"))
- (error "failed to unpack tarball" name)))
+ (invoke "tar"
+ ;; Use xz for repacked tarball.
+ "--xz"
+ "--extract"
+ "--verbose"
+ "--file" (assoc-ref inputs name)
+ "--strip-components=1"))
(copy-recursively (string-append name "/src/main/clojure/")
"src/clj/"))
'("core-specs-alpha-src"
@@ -1813,7 +1865,7 @@ new Date();"))
;; The javadoc target is not built by default.
(add-after 'build 'build-doc
(lambda _
- (zero? (system* "ant" "javadoc"))))
+ (invoke "ant" "javadoc")))
;; Needed since no install target is provided.
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
@@ -1975,7 +2027,8 @@ debugging, etc.")
(lambda (in out)
(display "Manifest-Version: 1.0
Main-Class: org.eclipse.jdt.internal.compiler.batch.Main\n"
- out)))))
+ out)))
+ #t))
(replace 'install (install-jars ".")))))
(home-page "https://eclipse.org")
(synopsis "Eclipse Java development tools core batch compiler")
@@ -2008,7 +2061,8 @@ Main-Class: org.eclipse.jdt.internal.compiler.batch.Main\n"
(lambda (in out)
(dump-port in out)
(display "Main-Class: org.eclipse.jdt.internal.compiler.batch.Main\n"
- out)))))
+ out)))
+ #t))
(replace 'install (install-jars ".")))))
(native-inputs
`(("unzip" ,unzip)))))
@@ -2475,7 +2529,7 @@ HDF5 files, building on the libraries provided by the HDF Group.")
(modify-phases %standard-phases
(replace 'install
(lambda* (#:key make-flags #:allow-other-keys)
- (zero? (apply system* `("ant" "dist" ,@make-flags))))))))
+ (apply invoke `("ant" "dist" ,@make-flags)))))))
(home-page "https://www.gnu.org/software/classpathx/")
(synopsis "Java servlet API implementation")
(description "This is the GNU servlet API distribution, part of the
@@ -2517,11 +2571,11 @@ API and version 2.1 of the Java ServerPages API.")
(modify-phases %standard-phases
(replace 'unpack
(lambda* (#:key source #:allow-other-keys)
- (and (mkdir "swt")
- (zero? (system* "unzip" source "-d" "swt"))
- (chdir "swt")
- (mkdir "src")
- (zero? (system* "unzip" "src.zip" "-d" "src")))))
+ (mkdir "swt")
+ (invoke "unzip" source "-d" "swt")
+ (chdir "swt")
+ (mkdir "src")
+ (invoke "unzip" "src.zip" "-d" "src")))
;; The classpath contains invalid icecat jars. Since we don't need
;; anything other than the JDK on the classpath, we can simply unset
;; it.
@@ -2536,7 +2590,7 @@ API and version 2.1 of the Java ServerPages API.")
(mkdir-p lib)
(setenv "OUTPUT_DIR" lib)
(with-directory-excursion "src"
- (zero? (system* "bash" "build.sh"))))))
+ (invoke "bash" "build.sh")))))
(add-after 'install 'install-native
(lambda* (#:key outputs #:allow-other-keys)
(let ((lib (string-append (assoc-ref outputs "out") "/lib")))
@@ -2622,7 +2676,7 @@ decompression and random access decompression have been fully implemented.")
(lambda* (#:key source #:allow-other-keys)
(mkdir "src")
(with-directory-excursion "src"
- (zero? (system* "jar" "-xf" source)))))
+ (invoke "jar" "-xf" source))))
;; At this point we don't have junit, so we must remove the API
;; tests.
(add-after 'unpack 'delete-tests
@@ -2764,7 +2818,8 @@ private Method[] getSortedMethods() {
return _allMethods;
}
-private Method[] allMethods = getSortedMethods();")))))
+private Method[] allMethods = getSortedMethods();")))
+ #t))
(add-before 'build 'do-not-use-bundled-qdox
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "build.xml"
@@ -3055,7 +3110,8 @@ reusing it in maven.")
(lambda _
;; Requires an older version of plexus container
(delete-file
- "src/test/java/org/codehaus/plexus/archiver/DuplicateFilesTest.java")))
+ "src/test/java/org/codehaus/plexus/archiver/DuplicateFilesTest.java")
+ #t))
(add-before 'build 'copy-resources
(lambda _
(mkdir-p "build/classes/META-INF/plexus")
@@ -3248,15 +3304,15 @@ Compiler component.")))
(add-before 'build 'generate-models
(lambda* (#:key inputs #:allow-other-keys)
(define (modello-single-mode file version mode)
- (zero? (system* "java"
- "org.codehaus.modello.ModelloCli"
- file mode "src/main/java" version
- "false" "true")))
+ (invoke "java"
+ "org.codehaus.modello.ModelloCli"
+ file mode "src/main/java" version
+ "false" "true"))
(let ((file "src/main/mdo/settings-security.mdo"))
- (and
(modello-single-mode file "1.0.0" "java")
(modello-single-mode file "1.0.0" "xpp3-reader")
- (modello-single-mode file "1.0.0" "xpp3-writer")))))
+ (modello-single-mode file "1.0.0" "xpp3-writer"))
+ #t))
(add-before 'build 'generate-components.xml
(lambda _
(mkdir-p "build/classes/META-INF/plexus")
@@ -3285,10 +3341,12 @@ Compiler component.")))
</configuration>\n
</component>\n
</components>\n
-</component-set>\n")))))
+</component-set>\n")))
+ #t))
(add-before 'check 'fix-paths
(lambda _
- (copy-recursively "src/test/resources" "target"))))))
+ (copy-recursively "src/test/resources" "target")
+ #t)))))
(inputs
`(("java-plexus-cipher" ,java-plexus-cipher)))
(native-inputs
@@ -3511,7 +3569,8 @@ XSD and documentation.")
(with-directory-excursion "modello-plugins/modello-plugin-xml/src/test"
(substitute*
"java/org/codehaus/modello/plugins/xml/XmlModelloPluginTest.java"
- (("src/test") "modello-plugins/modello-plugin-xml/src/test"))))))))
+ (("src/test") "modello-plugins/modello-plugin-xml/src/test")))
+ #t)))))
(inputs
`(("java-modello-core" ,java-modello-core)
("java-modello-plugins-java" ,java-modello-plugins-java)
@@ -3606,9 +3665,9 @@ on the XPP3 API (XML Pull Parser).")))
;; We cannot use the "jar" target because it depends on a couple
;; of unpackaged, complicated tools.
(mkdir "dist")
- (zero? (system* "jar"
- "-cf" (string-append "dist/asm-" ,version ".jar")
- "-C" "output/build/tmp" "."))))
+ (invoke "jar"
+ "-cf" (string-append "dist/asm-" ,version ".jar")
+ "-C" "output/build/tmp" ".")))
(replace 'install
(install-jars "dist")))))
(native-inputs
@@ -4105,7 +4164,8 @@ are many features, including:
(mkdir-p "build/conf")
(call-with-output-file "build/conf/MANIFEST.MF"
(lambda (file)
- (format file "Manifest-Version: 1.0\n")))))
+ (format file "Manifest-Version: 1.0\n")))
+ #t))
(replace 'install
(install-jars "build"))))))))
@@ -4351,7 +4411,8 @@ in the @code{java.lang} package. The following classes are included:
(property (@ (name "tests.dir") (value "src/org/apache/bsf/test")))
(property (@ (name "build.tests") (value "build/test-classes")))
(property (@ (name "build.dest") (value "build/classes"))))
- port)))))
+ port)))
+ #t))
(replace 'install (install-jars "build")))))
(native-inputs
`(("java-junit" ,java-junit)))
@@ -5798,8 +5859,8 @@ more efficient storage-wise than an uncompressed bitmap (as implemented in the
;; pom.xml ignores these files in the jar creation process. If we don't,
;; we get the error "This code should have never made it into slf4j-api.jar"
(delete-file-recursively "build/classes/org/slf4j/impl")
- (zero? (system* "jar" "-cf" "build/jar/slf4j-api.jar" "-C"
- "build/classes" "."))))
+ (invoke "jar" "-cf" "build/jar/slf4j-api.jar" "-C"
+ "build/classes" ".")))
(add-before 'check 'dont-test-abstract-classes
(lambda _
;; abstract classes are not meant to be run with junit
@@ -5807,7 +5868,8 @@ more efficient storage-wise than an uncompressed bitmap (as implemented in the
(("<include name=\"\\*\\*/\\*Test.java\" />")
(string-append "<include name=\"**/*Test.java\" />"
"<exclude name=\"**/MultithreadedInitializationTest"
- ".java\" />"))))))))
+ ".java\" />")))
+ #t)))))
(inputs
`(("java-junit" ,java-junit)
("java-hamcrest-core" ,java-hamcrest-core)))
@@ -5848,10 +5910,9 @@ time.")
(setenv "CLASSPATH"
(string-append (getcwd) ":" (getenv "CLASSPATH")))
;; ... and build test helper classes here:
- (zero?
- (apply system*
- `("javac" "-d" "."
- ,@(find-files "slf4j-api/src/test" ".*\\.java")))))))))
+ (apply invoke
+ `("javac" "-d" "."
+ ,@(find-files "slf4j-api/src/test" ".*\\.java"))))))))
(inputs
`(("java-junit" ,java-junit)
("java-hamcrest-core" ,java-hamcrest-core)
@@ -5950,11 +6011,12 @@ tree walking, and translation.")
(add-before 'build 'generate-grammar
(lambda _
(with-directory-excursion "src/org/antlr/stringtemplate/language/"
- (every (lambda (file)
- (format #t "~a\n" file)
- (zero? (system* "antlr" file)))
- '("template.g" "angle.bracket.template.g" "action.g"
- "eval.g" "group.g" "interface.g"))))))))
+ (for-each (lambda (file)
+ (format #t "~a\n" file)
+ (invoke "antlr" file))
+ '("template.g" "angle.bracket.template.g" "action.g"
+ "eval.g" "group.g" "interface.g")))
+ #t)))))
(native-inputs
`(("antlr" ,antlr2)
("java-junit" ,java-junit)))
@@ -6012,10 +6074,11 @@ StringTemplate also powers ANTLR.")
(add-before 'build 'generate-grammar
(lambda _
(with-directory-excursion "src/org/stringtemplate/v4/compiler/"
- (every (lambda (file)
- (format #t "~a\n" file)
- (zero? (system* "antlr3" file)))
- '("STParser.g" "Group.g" "CodeGenerator.g"))))))))
+ (for-each (lambda (file)
+ (format #t "~a\n" file)
+ (invoke "antlr3" file))
+ '("STParser.g" "Group.g" "CodeGenerator.g")))
+ #t)))))
(inputs
`(("antlr3" ,antlr3-bootstrap)
("antlr2" ,antlr2)
@@ -6082,14 +6145,15 @@ StringTemplate also powers ANTLR.")
"/lib")
".*\\.jar"))
" org.antlr.Tool $*"))))
- (chmod (string-append bin "/antlr3") #o755))))
+ (chmod (string-append bin "/antlr3") #o755))
+ #t))
(add-before 'build 'generate-grammar
(lambda _
(chdir "tool/src/main/antlr3/org/antlr/grammar/v3/")
(for-each (lambda (file)
(display file)
(newline)
- (system* "antlr3" file))
+ (invoke "antlr3" file))
'("ANTLR.g" "ANTLRTreePrinter.g" "ActionAnalysis.g"
"AssignTokenTypesWalker.g"
"ActionTranslator.g" "TreeToNFAConverter.g"
@@ -6100,14 +6164,13 @@ StringTemplate also powers ANTLR.")
(substitute* "ANTLRv3Parser.java"
(("public Object getTree") "public CommonTree getTree"))
(chdir "../../../../../java")
- (system* "antlr" "-o" "org/antlr/tool"
- "org/antlr/tool/serialize.g")
(substitute* "org/antlr/tool/LeftRecursiveRuleAnalyzer.java"
(("import org.antlr.grammar.v3.\\*;") "import org.antlr.grammar.v3.*;
import org.antlr.grammar.v3.ANTLRTreePrinter;"))
(substitute* "org/antlr/tool/ErrorManager.java"
(("case NO_SUCH_ATTRIBUTE_PASS_THROUGH:") ""))
- (chdir "../../../..")))
+ (chdir "../../../..")
+ #t))
(add-before 'build 'fix-build-xml
(lambda _
(substitute* "build.xml"
@@ -6118,7 +6181,8 @@ import org.antlr.grammar.v3.ANTLRTreePrinter;"))
<include name=\"**/*.sti\"/>
<include name=\"**/STLexer.tokens\"/>
</fileset>
-</copy><exec")))))))
+</copy><exec"))
+ #t)))))
(native-inputs
`(("antlr" ,antlr2)
("antlr3" ,antlr3-bootstrap)))
@@ -6207,19 +6271,19 @@ tree walking, and translation.")
import org.antlr.grammar.v2.TreeToNFAConverter;\n
import org.antlr.grammar.v2.DefineGrammarItemsWalker;\n
import org.antlr.grammar.v2.ANTLRTreePrinter;"))
- (and
- (with-directory-excursion "tool/src/main/antlr2/org/antlr/grammar/v2/"
- (every (lambda (file)
- (format #t "~a\n" file)
- (zero? (system* "antlr" file)))
- '("antlr.g" "antlr.print.g" "assign.types.g"
- "buildnfa.g" "codegen.g" "define.g")))
- (with-directory-excursion "tool/src/main/antlr3/org/antlr/grammar/v3/"
- (every (lambda (file)
- (format #t "~a\n" file)
- (zero? (system* "antlr3" file)))
- '("ActionAnalysis.g" "ActionTranslator.g" "ANTLRv3.g"
- "ANTLRv3Tree.g"))))))
+ (with-directory-excursion "tool/src/main/antlr2/org/antlr/grammar/v2/"
+ (for-each (lambda (file)
+ (format #t "~a\n" file)
+ (invoke "antlr" file))
+ '("antlr.g" "antlr.print.g" "assign.types.g"
+ "buildnfa.g" "codegen.g" "define.g")))
+ (with-directory-excursion "tool/src/main/antlr3/org/antlr/grammar/v3/"
+ (for-each (lambda (file)
+ (format #t "~a\n" file)
+ (invoke "antlr3" file))
+ '("ActionAnalysis.g" "ActionTranslator.g" "ANTLRv3.g"
+ "ANTLRv3Tree.g")))
+ #t))
(add-before 'build 'fix-build-xml
(lambda _
(substitute* "build.xml"
@@ -6282,7 +6346,8 @@ import org.antlr.grammar.v2.ANTLRTreePrinter;"))
"/lib")
".*\\.jar"))
" org.antlr.Tool $*"))))
- (chmod (string-append bin "/antlr3") #o755))))
+ (chmod (string-append bin "/antlr3") #o755))
+ #t))
(add-before 'build 'generate-grammar
(lambda _
(let ((dir "src/org/antlr/tool/"))
@@ -6306,7 +6371,8 @@ import org.antlr.grammar.v2.ANTLRTreePrinter;"))
<include name=\"**/*.sti\"/>
<include name=\"**/STLexer.tokens\"/>
</fileset>
-</copy><exec")))))))
+</copy><exec"))
+ #t)))))
(native-inputs
`(("antlr" ,antlr2)))
(inputs
@@ -6931,7 +6997,8 @@ the packageadmin service.")
(string-append
"version=" ,version "\n"
"groupId=org.ops4j.base"
- "artifactId=ops4j-base-lang\n")))))))))
+ "artifactId=ops4j-base-lang\n"))))
+ #t)))))
(home-page "https://ops4j1.jira.com/wiki/spaces/base/overview")
(synopsis "Utility classes and extensions to be used in OPS4J projects")
(description "OPS4J stands for Open Participation Software for Java. This
@@ -7170,7 +7237,8 @@ it manages project dependencies, gives diffs jars, and much more.")
;; it with our own version.
(substitute* "src/test/java/org/ops4j/pax/tinybundles/bnd/BndTest.java"
(("[0-9][0-9]*\\.[0-9][0-9]*\\.[0-9][0-9]*\\.[0-9][0-9]*")
- ,(package-version java-aqute-bndlib))))))))
+ ,(package-version java-aqute-bndlib)))
+ #t)))))
(inputs
`(("lang" ,java-ops4j-base-lang)
("io" ,java-ops4j-base-io)
@@ -7245,7 +7313,8 @@ the system under test at the same time.")
(add-before 'configure 'chdir
(lambda _
;; Tests assume we are in this directory
- (chdir "core/pax-exam-spi")))
+ (chdir "core/pax-exam-spi")
+ #t))
(add-before 'check 'fix-tests
(lambda _
;; One test checks that this file is present.
@@ -7264,7 +7333,8 @@ the system under test at the same time.")
(("target") "build"))
;; One test is expected to fail, but it doesn't throw the expected exception
(substitute* "src/test/java/org/ops4j/pax/exam/spi/reactors/BaseStagedReactorTest.java"
- (("AssertionError") "IllegalArgumentException")))))))
+ (("AssertionError") "IllegalArgumentException"))
+ #t)))))
(inputs
`(("java-ops4j-pax-exam-core" ,java-ops4j-pax-exam-core)
("lang" ,java-ops4j-base-lang)
@@ -7364,15 +7434,18 @@ not included are ones that require dependency to the Databind package.")
(("@package@") "com.fasterxml.jackson.core.json")
(("@projectversion@") ,version)
(("@projectgroupid@") "com.fasterxml.jackson.core")
- (("@projectartifactid@") "jackson-core")))))
+ (("@projectartifactid@") "jackson-core")))
+ #t))
(add-before 'build 'copy-resources
(lambda _
(copy-recursively "src/main/resources"
- "build/classes")))
+ "build/classes")
+ #t))
(add-before 'check 'copy-test-resources
(lambda _
(copy-recursively "src/test/resources"
- "build/test-classes"))))))
+ "build/test-classes")
+ #t)))))
(native-inputs
`(("junit" ,java-junit)
("hamcrest" ,java-hamcrest-core)))
@@ -7409,10 +7482,12 @@ not included are ones that require dependency to the Databind package.")
(("@package@") "com.fasterxml.jackson.databind.cfg")
(("@projectversion@") ,version)
(("@projectgroupid@") "com.fasterxml.jackson.databind")
- (("@projectartifactid@") "jackson-databind")))))
+ (("@projectartifactid@") "jackson-databind")))
+ #t))
(add-before 'build 'copy-resources
(lambda _
- (copy-recursively "src/main/resources" "build/classes"))))))
+ (copy-recursively "src/main/resources" "build/classes")
+ #t)))))
(inputs
`(("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations)
("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core)))
@@ -7456,10 +7531,12 @@ configuration.")
(("@package@") "com.fasterxml.jackson.module.jaxb")
(("@projectversion@") ,version)
(("@projectgroupid@") "com.fasterxml.jackson.module.jaxb")
- (("@projectartifactid@") "jackson-module-jaxb")))))
+ (("@projectartifactid@") "jackson-module-jaxb")))
+ #t))
(add-before 'build 'copy-resources
(lambda _
- (copy-recursively "jaxb/src/main/resources" "build/classes"))))))
+ (copy-recursively "jaxb/src/main/resources" "build/classes")
+ #t)))))
(inputs
`(("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations)
("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core)
@@ -7524,7 +7601,8 @@ configuration.")
(("@package@") "com.fasterxml.jackson.dataformat.yaml")
(("@projectversion@") ,version)
(("@projectgroupid@") "com.fasterxml.jackson.dataformat.yaml")
- (("@projectartifactid@") "jackson-dataformat-yaml"))))))))
+ (("@projectartifactid@") "jackson-dataformat-yaml")))
+ #t)))))
(inputs
`(("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations)
("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core)
@@ -7591,10 +7669,12 @@ interface and high-performance Typed Access API.")
;; msv's latest release is from 2011 and we don't need it
(delete-file-recursively "src/main/java/com/ctc/wstx/msv")
(delete-file-recursively "src/test/java/wstxtest/osgi")
- (delete-file-recursively "src/test/java/wstxtest/msv")))
+ (delete-file-recursively "src/test/java/wstxtest/msv")
+ #t))
(add-before 'build 'copy-resources
(lambda _
- (copy-recursively "src/main/resources" "build/classes"))))))
+ (copy-recursively "src/main/resources" "build/classes")
+ #t)))))
(inputs
`(("stax2" ,java-stax2-api)))
(native-inputs
@@ -7634,10 +7714,12 @@ interface and high-performance Typed Access API.")
(("@package@") "com.fasterxml.jackson.dataformat.xml")
(("@projectversion@") ,version)
(("@projectgroupid@") "com.fasterxml.jackson.dataformat.xml")
- (("@projectartifactid@") "jackson-dataformat-xml")))))
+ (("@projectartifactid@") "jackson-dataformat-xml")))
+ #t))
(add-before 'build 'copy-resources
(lambda _
- (copy-recursively "src/main/resources" "build/classes"))))))
+ (copy-recursively "src/main/resources" "build/classes")
+ #t)))))
(inputs
`(("jackson-annotations" ,java-fasterxml-jackson-annotations)
("jackson-core" ,java-fasterxml-jackson-core)
@@ -8112,15 +8194,15 @@ those in Perl and JavaScript.")
#t))
(replace 'check
(lambda _
- (system* "ant" "compile-tests")
+ (invoke "ant" "compile-tests")
;; we don't have groovy
(substitute* "src/test/resources/testng.xml"
(("<class name=\"test.groovy.GroovyTest\" />") ""))
- (zero? (system* "java" "-cp" (string-append (getenv "CLASSPATH")
- ":build/classes"
- ":build/test-classes")
- "-Dtest.resources.dir=src/test/resources"
- "org.testng.TestNG" "src/test/resources/testng.xml")))))))
+ (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
+ ":build/classes"
+ ":build/test-classes")
+ "-Dtest.resources.dir=src/test/resources"
+ "org.testng.TestNG" "src/test/resources/testng.xml"))))))
(propagated-inputs
`(("junit" ,java-junit)
("java-jsr305" ,java-jsr305)
@@ -8184,8 +8266,7 @@ to use.")
":build/classes"
":build/test-classes")
"org.testng.TestNG" "-testclass"
- "build/test-classes/com/neilalexander/jnacl/NaClTest.class")
- #t)))))
+ "build/test-classes/com/neilalexander/jnacl/NaClTest.class"))))))
(native-inputs
`(("java-testng" ,java-testng)
("java-fest-util" ,java-fest-util)
@@ -8368,8 +8449,7 @@ algorithms and xxHash hashing algorithm.")
(replace 'build
(lambda _
(invoke "ant" "-f" "ant/jdk15+.xml" "build-provider")
- (invoke "ant" "-f" "ant/jdk15+.xml" "build")
- #t))
+ (invoke "ant" "-f" "ant/jdk15+.xml" "build")))
;; FIXME: the tests freeze.
;; (replace 'check
;; (lambda _
@@ -8547,7 +8627,8 @@ done to the IDE or continuous integration servers which simplifies adoption.")
(add-before 'build 'copy-resources
(lambda _
(copy-recursively "powermock-core/src/main/resources"
- "build/classes"))))))
+ "build/classes")
+ #t)))))
(inputs
`(("reflect" ,java-powermock-reflect)
("javassist" ,java-jboss-javassist)))
@@ -8604,7 +8685,8 @@ done to the IDE or continuous integration servers which simplifies adoption.")
;; Our junit version is 4.12-SNAPSHOT
(substitute* (find-files "powermock-modules/powermock-module-junit4"
"PowerMockJUnit4MethodValidator.java")
- (("4.12") "4.12-SNAPSHOT")))))))
+ (("4.12") "4.12-SNAPSHOT"))
+ #t)))))
(inputs
`(("core" ,java-powermock-core)
("reflect" ,java-powermock-reflect)
@@ -9069,8 +9151,7 @@ that is part of the SWT Tools project.")
(string-append "-I" (assoc-ref inputs "jdk")
"/include/linux")
"-fPIC" "-O2")
- (invoke "gcc" "-o" "libjansi.so" "-shared" "jansi_ttyname.o")
- #t)))
+ (invoke "gcc" "-o" "libjansi.so" "-shared" "jansi_ttyname.o"))))
(add-before 'build 'install-native
(lambda _
(let ((dir (string-append "build/classes/META-INF/native/"
@@ -9115,7 +9196,7 @@ console output.")
(modify-phases %standard-phases
(add-after 'check 'clear-term
(lambda _
- (zero? (system* "echo" "-e" "\\e[0m")))))))
+ (invoke "echo" "-e" "\\e[0m"))))))
(inputs
`(("java-jansi-native" ,java-jansi-native)))
(native-inputs
@@ -9579,7 +9660,8 @@ graphs, and pie charts.")
'("src/java/org/apache/commons/httpclient/HttpContentTooLargeException.java"
"src/examples/TrivialApp.java" "src/examples/ClientApp.java"
"src/test/org/apache/commons/httpclient/TestHttps.java"
- "src/test/org/apache/commons/httpclient/TestURIUtil2.java"))))
+ "src/test/org/apache/commons/httpclient/TestURIUtil2.java"))
+ #t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(invoke "ant" "dist"
@@ -9629,7 +9711,8 @@ authentication, HTTP state management, and HTTP connection management.")
(lambda _
(for-each delete-file-recursively
'("commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/webdav"
- "commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs")))))))
+ "commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs"))
+ #t)))))
(inputs
`(("java-commons-collections4" ,java-commons-collections4)
("java-commons-compress" ,java-commons-compress)
@@ -9940,7 +10023,8 @@ jsch-agent-proxy with JSch.")))
(find-files "." ".*.properties")
(find-files "." ".*.xsd")
(find-files "." ".*.xsl")
- (find-files "." ".*.xml"))))))
+ (find-files "." ".*.xml"))))
+ #t))
(add-before 'build 'fix-vfs
(lambda _
(substitute*
@@ -9955,8 +10039,7 @@ jsch-agent-proxy with JSch.")))
(add-before 'install 'repack
(lambda _
(invoke "jar" "-cmf" "build/classes/META-INF/MANIFEST.MF" "build/jar/ivy.jar"
- "-C" "build/classes" ".")
- #t))
+ "-C" "build/classes" ".")))
(add-after 'install 'install-bin
(lambda* (#:key outputs #:allow-other-keys)
(let* ((bin (string-append (assoc-ref outputs "out") "/bin"))
@@ -10169,7 +10252,8 @@ and @code{ISimpleCompiler} interfaces.")
(modify-phases %standard-phases
(add-before 'configure 'chdir
(lambda _
- (chdir "janino"))))))
+ (chdir "janino")
+ #t)))))
(inputs
`(("java-commons-compiler" ,java-commons-compiler)))
(native-inputs
@@ -10194,7 +10278,9 @@ static code analysis or code manipulation.")))
"1x6ga74yfgm94cfx98gybakbrlilx8i2gn6dx13l40kasmys06mi"))
(modules '((guix build utils)))
(snippet
- '(delete-file-recursively "logback-access/lib"))))
+ '(begin
+ (delete-file-recursively "logback-access/lib")
+ #t))))
(build-system ant-build-system)
(arguments
`(#:jar-name "logback.jar"
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index 33ecdc47f0..dc13be19d2 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -754,7 +754,7 @@ word compounding or character encoding.")
(name (match variant
("classique" "hunspell-dict-fr")
(_ (string-append "hunspell-dict-fr-" variant))))
- (version "6.1")
+ (version "6.2")
(source (origin
(uri (string-append
"http://www.dicollecte.org/download/fr/hunspell-french-dictionaries-v"
@@ -762,7 +762,7 @@ word compounding or character encoding.")
(method url-fetch)
(sha256
(base32
- "0w2hzh36wj3lsj2yd4mh7z7547dg452sywj79vnzx27csclwqshc"))))
+ "139hfrn5p87sl8hqmgkf6sgvnxrk2mm8vd8xsm8sm98qjnwlg0f9"))))
(build-system trivial-build-system)
(native-inputs `(("unzip" ,unzip)))
(arguments
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index cd3924ccee..2ce0f56b84 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -402,8 +402,8 @@ It has been modified to remove all non-free binary blobs.")
;; supports qemu "virt" machine and possibly a large number of ARM boards.
;; See : https://wiki.debian.org/DebianKernel/ARMMP.
-(define %linux-libre-version "4.17.5")
-(define %linux-libre-hash "0pldqw7f4nhziw3r73l339d79aijxhy6anf1ryiy3makip6gkib1")
+(define %linux-libre-version "4.17.6")
+(define %linux-libre-hash "0d48r5jpj71ikdalz5z756snwq54cpnwnba8bbhg8r2ri3770wcm")
(define-public linux-libre
(make-linux-libre %linux-libre-version
@@ -411,8 +411,8 @@ It has been modified to remove all non-free binary blobs.")
%linux-compatible-systems
#:configuration-file kernel-config))
-(define %linux-libre-4.14-version "4.14.54")
-(define %linux-libre-4.14-hash "027138z7p5ld1zyrxq1xjc7x3b7wbgikh7gn2xfvwm9gn8qpazki")
+(define %linux-libre-4.14-version "4.14.55")
+(define %linux-libre-4.14-hash "1rlapfwkjfmyk4ahvqwqap4w9flbw2zag0r04fwrmyqz1y5ijayf")
(define-public linux-libre-4.14
(make-linux-libre %linux-libre-4.14-version
@@ -421,14 +421,14 @@ It has been modified to remove all non-free binary blobs.")
#:configuration-file kernel-config))
(define-public linux-libre-4.9
- (make-linux-libre "4.9.111"
- "0ld57627k6mjp14x5bvndakj6lc4l31zp2yq74h7ski2g3k7ppk2"
+ (make-linux-libre "4.9.112"
+ "1zrnbvzr7z5ky79r6hpjvn15bxmwcyi8lr7yq2nx1r8ladl8lnb0"
%intel-compatible-systems
#:configuration-file kernel-config))
(define-public linux-libre-4.4
- (make-linux-libre "4.4.139"
- "0x58ykgx7vbv23q763ydifi548mz39nal7wbvrrl4i9ndk7pzfzz"
+ (make-linux-libre "4.4.140"
+ "10h4k2c2ncnc1h61kikqb618dh9lp8fmzagz2ydykrdbb5jjiy82"
%intel-compatible-systems
#:configuration-file kernel-config))
@@ -537,15 +537,15 @@ at login. Local and dynamic reconfiguration are its key features.")
(define-public psmisc
(package
(name "psmisc")
- (version "22.21")
+ (version "23.1")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/psmisc/psmisc/psmisc-"
- version ".tar.gz"))
+ version ".tar.xz"))
(sha256
(base32
- "0nhlm1vrrwn4a845p6y4nnnb4liq70n74zbdd5dq844jc6nkqclp"))))
+ "0c5s94hqpwfmyswx2f96gifa6wdbpxxpkyxcrlzbxpvmrxsd911f"))))
(build-system gnu-build-system)
(inputs `(("ncurses" ,ncurses)))
(home-page "https://gitlab.com/psmisc/psmisc")
@@ -975,15 +975,8 @@ intercept and print the system calls executed by the program.")
version ".tar.bz2"))
(sha256
(base32
- "096pwrnhj36yndldvs2pj4r871zhcgisks0is78f1jkjn9sd4b2z"))
- (patches (search-patches "alsa-lib-add-environment-variable.patch"))))
+ "096pwrnhj36yndldvs2pj4r871zhcgisks0is78f1jkjn9sd4b2z"))))
(build-system gnu-build-system)
- (native-search-paths
- (list (search-path-specification
- (variable "ALSA_PLUGIN_DIR")
- (file-type 'regular)
- (separator #f) ;single entry
- (files '("lib/alsa-lib")))))
(home-page "https://www.alsa-project.org/")
(synopsis "The Advanced Linux Sound Architecture libraries")
(description
@@ -3049,15 +3042,15 @@ Linux Device Mapper multipathing driver:
(define-public libaio
(package
(name "libaio")
- (version "0.3.110")
+ (version "0.3.111")
(source (origin
(method url-fetch)
- (uri (list
- (string-append "mirror://debian/pool/main/liba/libaio/"
- name "_" version ".orig.tar.gz")))
- (sha256
- (base32
- "0zjzfkwd1kdvq6zpawhzisv7qbq1ffs343i5fs9p498pcf7046g0"))))
+ (uri (list
+ (string-append "https://releases.pagure.org/libaio/"
+ name "-" version ".tar.gz")))
+ (sha256
+ (base32
+ "0ajhzbqjwsmz51gwccfyw6w9k4j4gmxcl2ph30sfn2gxv0d8gkv2"))))
(build-system gnu-build-system)
(arguments
'(#:make-flags
@@ -3065,7 +3058,7 @@ Linux Device Mapper multipathing driver:
#:test-target "partcheck" ; need root for a full 'check'
#:phases
(modify-phases %standard-phases (delete 'configure)))) ; no configure script
- (home-page "http://lse.sourceforge.net/io/aio.html")
+ (home-page "https://pagure.io/libaio")
(synopsis "Linux-native asynchronous I/O access library")
(description
"This library enables userspace to use Linux kernel asynchronous I/O
@@ -3099,7 +3092,7 @@ Bluetooth audio output devices like headphones or loudspeakers.")
(define-public bluez
(package
(name "bluez")
- (version "5.49")
+ (version "5.50")
(source (origin
(method url-fetch)
(uri (string-append
@@ -3107,7 +3100,7 @@ Bluetooth audio output devices like headphones or loudspeakers.")
version ".tar.xz"))
(sha256
(base32
- "15ffsaz7l3fgdg03l7g1xx9jw7xgs6pc548zxqsxawsca5x1sc1k"))))
+ "048r91vx9gs5nwwbah2s0xig04nwk14c5s0vb7qmaqdvighsmz2z"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
@@ -3290,7 +3283,7 @@ and copy/paste text in the console and in xterm.")
("which" ,which)
;; The tests need 'grep' with perl regexp support.
("grep" ,grep)))
- (home-page "https://btrfs.wiki.kernel.org/")
+ (home-page "https://btrfs.wiki.kernel.org/index.php/Main_Page")
(synopsis "Create and manage btrfs copy-on-write file systems")
(description "Btrfs is a @dfn{copy-on-write} (CoW) file system for Linux
aimed at implementing advanced features while focusing on fault tolerance,
@@ -3595,7 +3588,7 @@ The following service daemons are also provided:
(define-public rng-tools
(package
(name "rng-tools")
- (version "6.2")
+ (version "6.3")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/nhorman/rng-tools/"
@@ -3603,7 +3596,7 @@ The following service daemons are also provided:
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0xy4qmfhvkr5z4jr9j55dn5gnajr2jccdp6n0xsxkipjcgag342j"))))
+ "1lc2kqw3idwmjyjnf16sqz0f4r1w7c638n4la1j1n5c3188q26bv"))))
(build-system gnu-build-system)
(arguments
`(;; Avoid using OpenSSL, curl, and libxml2, reducing the closure by 166 MiB.
diff --git a/gnu/packages/lsof.scm b/gnu/packages/lsof.scm
index 098242dc7a..8b3ebe2945 100644
--- a/gnu/packages/lsof.scm
+++ b/gnu/packages/lsof.scm
@@ -28,7 +28,7 @@
(define-public lsof
(package
(name "lsof")
- (version "4.89")
+ (version "4.91")
(source
(origin
(method url-fetch)
@@ -53,7 +53,7 @@
(string-append "ftp://ftp.mirrorservice.org/sites/"
"lsof.itap.purdue.edu/pub/tools/unix/lsof")))))
(sha256
- (base32 "061p18v0mhzq517791xkjs8a5dfynq1418a1mwxpji69zp2jzb41"))))
+ (base32 "18sh4hbl9jw2szkf0gvgan8g13f3g4c6s2q9h3zq5gsza9m99nn9"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl)))
(arguments
@@ -73,14 +73,16 @@
(add-after 'configure 'patch-timestamps
(lambda _
(substitute* "Makefile"
- (("`date`") "`date --date=@1`"))))
+ (("`date`") "`date --date=@1`"))
+ #t))
(add-before 'check 'disable-failing-tests
(lambda _
(substitute* "tests/Makefile"
;; Fails with ‘ERROR!!! client gethostbyaddr() failure’.
(("(STDTST=.*) LTsock" _ prefix) prefix)
;; Fails without access to a remote NFS server.
- (("(OPTTST=.*) LTnfs" _ prefix) prefix))))
+ (("(OPTTST=.*) LTnfs" _ prefix) prefix))
+ #t))
(replace 'check
(lambda _
(with-directory-excursion "tests"
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index bf77b0a7fe..f127e27e3c 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1071,15 +1071,15 @@ which can add many functionalities to the base client.")
(define-public msmtp
(package
(name "msmtp")
- (version "1.6.6")
+ (version "1.6.8")
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://sourceforge/msmtp/msmtp/" version
+ (uri (string-append "https://marlam.de/msmtp/releases/"
"/msmtp-" version ".tar.xz"))
(sha256
(base32
- "0ppvww0sb09bnsrpqnvlrn8vx231r24xn2iiwpy020mxc8gxn5fs"))))
+ "1ysrnshvwhzwmvb2walw5i9jdzlvmckj7inr0xnvb26q0jirbzsm"))))
(build-system gnu-build-system)
(inputs
`(("libidn" ,libidn)
@@ -1089,7 +1089,7 @@ which can add many functionalities to the base client.")
("gsasl" ,gsasl)))
(native-inputs
`(("pkg-config" ,pkg-config)))
- (home-page "http://msmtp.sourceforge.net/")
+ (home-page "https://marlam.de/msmtp/")
(arguments
`(#:configure-flags (list "--with-libgsasl"
"--with-libidn"
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 39e2c38eb4..1e0e1998db 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -2798,7 +2798,7 @@ parts of it.")
(define-public openblas
(package
(name "openblas")
- (version "0.2.20")
+ (version "0.3.0")
(source
(origin
(method url-fetch)
@@ -2807,7 +2807,7 @@ parts of it.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1bd03c5xni0bla0wg1wba841b36b0sg13sjja955kn5xzvy4i61a"))))
+ "14a9vyvp2k5zpd0axbnqk0d3khc1v3cck10nb5fj7d2sgn8490ky"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
@@ -2846,6 +2846,16 @@ parts of it.")
#:phases
(modify-phases %standard-phases
(delete 'configure)
+ ;; Conditionally apply a patch on i686 to avoid rebuilding
+ ;; all architectures. FIXME: This should be moved to the
+ ;; (source (patches ...)) field in the next rebuild cycle.
+ ,@(if (string-prefix? "i686" (or (%current-target-system)
+ (%current-system)))
+ `((add-after 'unpack 'fix-tests
+ (lambda* (#:key inputs #:allow-other-keys)
+ (invoke "patch" "-p1"
+ "--input" (assoc-ref inputs "i686-fix-tests.patch")))))
+ '())
(add-before 'build 'set-extralib
(lambda* (#:key inputs #:allow-other-keys)
;; Get libgfortran found when building in utest.
@@ -2857,6 +2867,11 @@ parts of it.")
`(("fortran-lib" ,gfortran "lib")))
(native-inputs
`(("cunit" ,cunit)
+ ,@(if (string-prefix? "i686" (or (%current-target-system)
+ (%current-system)))
+ `(("i686-fix-tests.patch"
+ ,(search-patch "openblas-fix-tests-i686.patch")))
+ '())
("fortran" ,gfortran)
("perl" ,perl)))
(home-page "http://www.openblas.net/")
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index 52464e28d4..8bde7b1525 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -25,8 +25,10 @@
#:use-module (gnu packages cross-base)
#:use-module (gnu packages gcc)
#:use-module (gnu packages guile)
+ #:use-module (gnu packages man)
#:use-module (gnu packages package-management)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages texinfo)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module (guix git-download)
@@ -73,7 +75,7 @@ extensive examples, including parsers for the Javascript and C99 languages.")
(let ((triplet "i686-unknown-linux-gnu"))
(package
(name "mes")
- (version "0.16")
+ (version "0.16.1")
(source (origin
(method url-fetch)
(uri (string-append "https://gitlab.com/janneke/mes"
@@ -81,7 +83,7 @@ extensive examples, including parsers for the Javascript and C99 languages.")
"/mes-" version ".tar.gz"))
(sha256
(base32
- "0c4vz1qw767af5h615055hh8zjwwmwf5mwkb64l0l921zaa9hg2n"))))
+ "0qghlbx2qn674q8vckxpzsd0p845kclg457bw6r25jpmslgm0bz2"))))
(build-system gnu-build-system)
(supported-systems '("i686-linux" "x86_64-linux"))
(propagated-inputs
@@ -96,7 +98,9 @@ extensive examples, including parsers for the Javascript and C99 languages.")
`(("i686-linux-binutils" ,(cross-binutils triplet))
("i686-linux-gcc" ,(cross-gcc triplet)))
'())
- ("perl" ,perl))) ;build-aux/gitlog-to-changelog
+ ("help2man" ,help2man)
+ ("perl" ,perl) ;build-aux/gitlog-to-changelog
+ ("texinfo" ,texinfo)))
(arguments
`(#:phases
(modify-phases %standard-phases
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index cdcd1225f2..1212a06eeb 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -9,7 +9,7 @@
;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
;;; Copyright © 2016, 2017, 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
-;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
@@ -1644,4 +1644,77 @@ c-toxcore and ncurses. It provides audio calls, sound and desktop
notifications, and Python scripting support.")
(license license:gpl3+)))
+(define-public libqmatrixclient
+ (package
+ (name "libqmatrixclient")
+ (version "0.3.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/QMatrixClient/libqmatrixclient/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0yl7lw0s2z98xkxbklkb3i8xcd9af9qayl1zxl070d8ykl6ayqy3"))))
+ (build-system cmake-build-system)
+ (inputs
+ `(("qt" ,qt)))
+ (arguments
+ `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON")
+ #:tests? #f)) ; No tests
+ (home-page "https://matrix.org/docs/projects/sdk/libqmatrixclient.html")
+ (synopsis "Qt5 client library for the Matrix instant messaging protocol")
+ (description "libqmatrixclient is a Qt5 library to write clients for the
+Matrix instant messaging protocol. Quaternion is the reference client
+implementation. Quaternion and libqmatrixclient together form the
+QMatrixClient project.")
+ (license license:lgpl2.1+)))
+
+(define-public quaternion
+ (package
+ (name "quaternion")
+ (version "0.0.9.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/QMatrixClient/Quaternion/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0s2mpw11s2n21ds1spf94j1p2lj2px2bv5zxldlcx81ch0rb4ng8"))))
+ (build-system cmake-build-system)
+ (inputs
+ `(("libqmatrixclient" ,libqmatrixclient)
+ ("qt" ,qt)))
+ (arguments
+ `(#:tests? #f ; No tests
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-libqmatrixclient-dynamic-linking
+ ;; Upstream recommends statically linking with
+ ;; libqmatrixclient. Patch the source so that we can dynamically
+ ;; link instead. In a future release, when upstream moves to
+ ;; dynamic linking, remove this phase.
+ (lambda _
+ (substitute* "CMakeLists.txt"
+ (("^add_subdirectory\\(lib\\)" all)
+ (string-append "#" all)))
+ (for-each
+ (lambda (file)
+ (substitute* file
+ (("#include \"lib/([^\"]*)\"" all header)
+ (string-append "#include <" header ">"))))
+ (find-files "client" "\\.(cpp|h)$"))
+ #t)))))
+ (home-page "https://matrix.org/docs/projects/client/quaternion.html")
+ (synopsis "Graphical client for the Matrix instant messaging protocol")
+ (description "Quaternion is a Qt5 desktop client for the Matrix instant
+messaging protocol. It uses libqmatrixclient and is its reference client
+implementation. Quaternion and libqmatriclient together form the
+QMatrixClient project.")
+ (license (list license:gpl3+ ; all source code
+ license:lgpl3+)))) ; icons/breeze
+
;;; messaging.scm ends here
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index b72a4734d7..ebf0e86f12 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -22,6 +22,7 @@
;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
;;; Copyright © 2018 Tonton <tonton@riseup.net>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2018 Theodoros Foradis <theodoros@foradis.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -315,6 +316,35 @@ more.")
between different versions of ØMQ.")
(license license:mpl2.0)))
+(define-public cppzmq
+ (let ((revision "0")
+ (commit "d9f0f016c07046742738c65e1eb84722ae32d7d4"))
+ (package
+ (name "cppzmq")
+ (version (string-append "4.2.2-" revision "."
+ (string-take commit 7)))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zeromq/cppzmq")
+ (commit commit)))
+ (sha256
+ (base32
+ "1gmqlm00y6xpa5m6d4ajq3ww63n2w7h4sy997wj81vcqmqx45b1f"))
+ (file-name (string-append name "-" version "-checkout"))))
+ (build-system cmake-build-system)
+ (arguments '(#:tests? #f)) ; No tests.
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("zeromq" ,zeromq)))
+ (home-page "http://zeromq.org")
+ (synopsis "C++ bindings for the ØMQ messaging library")
+ (description
+ "This package provides header-only C++ bindings for ØMQ. The header
+files contain direct mappings of the abstractions provided by the ØMQ C API.")
+ (license license:expat))))
+
(define-public librdkafka
(package
(name "librdkafka")
diff --git a/gnu/packages/patches/alsa-lib-add-environment-variable.patch b/gnu/packages/patches/alsa-lib-add-environment-variable.patch
deleted file mode 100644
index a468a7fc4f..0000000000
--- a/gnu/packages/patches/alsa-lib-add-environment-variable.patch
+++ /dev/null
@@ -1,110 +0,0 @@
-From 1822fb453128a1b5de93b4c590cd272d6488a077 Mon Sep 17 00:00:00 2001
-From: Julien Lepiller <julien@lepiller.eu>
-Date: Fri, 25 May 2018 19:26:58 +0200
-Subject: [PATCH] Add support for a ALSA_PLUGIN_DIR environment variable.
-
-If it is not set, default to previous behavior.
----
- src/control/control.c | 6 +++++-
- src/dlmisc.c | 9 +++++++--
- src/pcm/pcm.c | 9 +++++++--
- src/pcm/pcm_rate.c | 13 +++++++++----
- 4 files changed, 28 insertions(+), 9 deletions(-)
-
-diff --git a/src/control/control.c b/src/control/control.c
-index 11f7815..9dba7dd 100644
---- a/src/control/control.c
-+++ b/src/control/control.c
-@@ -1331,7 +1331,11 @@ static int snd_ctl_open_conf(snd_ctl_t **ctlp, const char *name,
- build_in++;
- }
- if (*build_in == NULL) {
-- buf1 = malloc(strlen(str) + sizeof(ALSA_PLUGIN_DIR) + 32);
-+ char* plugdir = ALSA_PLUGIN_DIR;
-+ char* envplugdir = getenv("ALSA_PLUGIN_DIR");
-+ if(envplugdir != NULL)
-+ plugdir = envplugdir;
-+ buf1 = malloc(strlen(str) + strlen(plugdir) + 32);
- if (buf1 == NULL) {
- err = -ENOMEM;
- goto _err;
-diff --git a/src/dlmisc.c b/src/dlmisc.c
-index 3757d33..92aa864 100644
---- a/src/dlmisc.c
-+++ b/src/dlmisc.c
-@@ -82,9 +82,14 @@ void *snd_dlopen(const char *name, int mode, char *errbuf, size_t errbuflen)
- char *filename = NULL;
-
- if (name && name[0] != '/') {
-- filename = alloca(sizeof(ALSA_PLUGIN_DIR) + 1 + strlen(name) + 1);
-+ char* plugdir = ALSA_PLUGIN_DIR;
-+ char* envplugdir = getenv("ALSA_PLUGIN_DIR");
-+ if(envplugdir != NULL)
-+ plugdir = envplugdir;
-+
-+ filename = malloc(strlen(plugdir) + 1 + strlen(name) + 1);
- if (filename) {
-- strcpy(filename, ALSA_PLUGIN_DIR);
-+ strcpy(filename, plugdir);
- strcat(filename, "/");
- strcat(filename, name);
- handle = dlopen(filename, mode);
-diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c
-index 11aec80..590e8b6 100644
---- a/src/pcm/pcm.c
-+++ b/src/pcm/pcm.c
-@@ -2496,13 +2496,18 @@ static int snd_pcm_open_conf(snd_pcm_t **pcmp, const char *name,
- build_in++;
- }
- if (*build_in == NULL) {
-- buf1 = malloc(strlen(str) + sizeof(ALSA_PLUGIN_DIR) + 32);
-+ char* plugdir = ALSA_PLUGIN_DIR;
-+ char* envplugdir = getenv("ALSA_PLUGIN_DIR");
-+ if(envplugdir != NULL)
-+ plugdir = envplugdir;
-+ buf1 = malloc(strlen(str) + strlen(plugdir) + 32);
-+
- if (buf1 == NULL) {
- err = -ENOMEM;
- goto _err;
- }
- lib = buf1;
-- sprintf(buf1, "%s/libasound_module_pcm_%s.so", ALSA_PLUGIN_DIR, str);
-+ sprintf(buf1, "%s/libasound_module_pcm_%s.so", plugdir, str);
- }
- }
- #ifndef PIC
-diff --git a/src/pcm/pcm_rate.c b/src/pcm/pcm_rate.c
-index 4e0c7ca..8694a38 100644
---- a/src/pcm/pcm_rate.c
-+++ b/src/pcm/pcm_rate.c
-@@ -1260,7 +1260,8 @@ static const char *const default_rate_plugins[] = {
-
- static int rate_open_func(snd_pcm_rate_t *rate, const char *type, const snd_config_t *converter_conf, int verbose)
- {
-- char open_name[64], open_conf_name[64], lib_name[128], *lib = NULL;
-+ char open_name[64], open_conf_name[64], *lib = NULL;
-+ char *buf1;
- snd_pcm_rate_open_func_t open_func;
- snd_pcm_rate_open_conf_func_t open_conf_func;
- int err;
-@@ -1268,9 +1269,13 @@ static int rate_open_func(snd_pcm_rate_t *rate, const char *type, const snd_conf
- snprintf(open_name, sizeof(open_name), "_snd_pcm_rate_%s_open", type);
- snprintf(open_conf_name, sizeof(open_conf_name), "_snd_pcm_rate_%s_open_conf", type);
- if (!is_builtin_plugin(type)) {
-- snprintf(lib_name, sizeof(lib_name),
-- "%s/libasound_module_rate_%s.so", ALSA_PLUGIN_DIR, type);
-- lib = lib_name;
-+ char* plugdir = ALSA_PLUGIN_DIR;
-+ char* envplugdir = getenv("ALSA_PLUGIN_DIR");
-+ if(envplugdir != NULL)
-+ plugdir = envplugdir;
-+ buf1 = malloc(strlen(type) + strlen(plugdir) + 32);
-+ sprintf(buf1, "%s/libasound_module_rate_%s.so", plugdir, type);
-+ lib = buf1;
- }
-
- rate->rate_min = SND_PCM_PLUGIN_RATE_MIN;
---
-2.17.0
-
diff --git a/gnu/packages/patches/bind-CVE-2018-5738.patch b/gnu/packages/patches/bind-CVE-2018-5738.patch
deleted file mode 100644
index ddef014651..0000000000
--- a/gnu/packages/patches/bind-CVE-2018-5738.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-Fix CVE-2018-5738:
-
-https://kb.isc.org/article/AA-01616/0/CVE-2018-5738
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5738
-
-diff --git a/bin/named/server.c b/bin/named/server.c
-index f63554e..847c4ff 100644
---- a/bin/named/server.c
-+++ b/bin/named/server.c
-@@ -3725,10 +3725,6 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
- CHECKM(named_config_getport(config, &port), "port");
- dns_view_setdstport(view, port);
-
-- CHECK(configure_view_acl(vconfig, config, named_g_config,
-- "allow-query", NULL, actx,
-- named_g_mctx, &view->queryacl));
--
- /*
- * Make the list of response policy zone names for a view that
- * is used for real lookups and so cares about hints.
-@@ -4692,21 +4688,35 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
- "allow-query-cache-on", NULL, actx,
- named_g_mctx, &view->cacheonacl));
- /*
-- * Set "allow-query-cache", "allow-recursion", and
-- * "allow-recursion-on" acls if configured in named.conf.
-- * (Ignore the global defaults for now, because these ACLs
-- * can inherit from each other when only some of them set at
-- * the options/view level.)
-+ * Set the "allow-query", "allow-query-cache", "allow-recursion",
-+ * and "allow-recursion-on" ACLs if configured in named.conf, but
-+ * NOT from the global defaults. This is done by leaving the third
-+ * argument to configure_view_acl() NULL.
-+ *
-+ * We ignore the global defaults here because these ACLs
-+ * can inherit from each other. If any are still unset after
-+ * applying the inheritance rules, we'll look up the defaults at
-+ * that time.
- */
-- CHECK(configure_view_acl(vconfig, config, NULL, "allow-query-cache",
-- NULL, actx, named_g_mctx, &view->cacheacl));
-+
-+ /* named.conf only */
-+ CHECK(configure_view_acl(vconfig, config, NULL,
-+ "allow-query", NULL, actx,
-+ named_g_mctx, &view->queryacl));
-+
-+ /* named.conf only */
-+ CHECK(configure_view_acl(vconfig, config, NULL,
-+ "allow-query-cache", NULL, actx,
-+ named_g_mctx, &view->cacheacl));
-
- if (strcmp(view->name, "_bind") != 0 &&
- view->rdclass != dns_rdataclass_chaos)
- {
-+ /* named.conf only */
- CHECK(configure_view_acl(vconfig, config, NULL,
- "allow-recursion", NULL, actx,
- named_g_mctx, &view->recursionacl));
-+ /* named.conf only */
- CHECK(configure_view_acl(vconfig, config, NULL,
- "allow-recursion-on", NULL, actx,
- named_g_mctx, &view->recursiononacl));
-@@ -4744,18 +4754,21 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
- * the global config.
- */
- if (view->recursionacl == NULL) {
-+ /* global default only */
- CHECK(configure_view_acl(NULL, NULL, named_g_config,
- "allow-recursion", NULL,
- actx, named_g_mctx,
- &view->recursionacl));
- }
- if (view->recursiononacl == NULL) {
-+ /* global default only */
- CHECK(configure_view_acl(NULL, NULL, named_g_config,
- "allow-recursion-on", NULL,
- actx, named_g_mctx,
- &view->recursiononacl));
- }
- if (view->cacheacl == NULL) {
-+ /* global default only */
- CHECK(configure_view_acl(NULL, NULL, named_g_config,
- "allow-query-cache", NULL,
- actx, named_g_mctx,
-@@ -4769,6 +4782,14 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist,
- CHECK(dns_acl_none(mctx, &view->cacheacl));
- }
-
-+ if (view->queryacl == NULL) {
-+ /* global default only */
-+ CHECK(configure_view_acl(NULL, NULL, named_g_config,
-+ "allow-query", NULL,
-+ actx, named_g_mctx,
-+ &view->queryacl));
-+ }
-+
- /*
- * Ignore case when compressing responses to the specified
- * clients. This causes case not always to be preserved,
diff --git a/gnu/packages/patches/jamvm-arm.patch b/gnu/packages/patches/jamvm-arm.patch
new file mode 100644
index 0000000000..9e998e18db
--- /dev/null
+++ b/gnu/packages/patches/jamvm-arm.patch
@@ -0,0 +1,1313 @@
+From 67faeb7d58e0d25a50d36788ed49ed383b92e090 Mon Sep 17 00:00:00 2001
+From: Efraim Flashner <efraim@flashner.co.il>
+Date: Mon, 26 Mar 2018 11:08:17 +0300
+Subject: [PATCH] add ARMv7 support
+
+---
+ src/arch/arm.h | 75 +++++-
+ src/os/linux/arm/Makefile.am | 9 +-
+ src/os/linux/arm/Makefile.in | 166 ++++++++----
+ src/os/linux/arm/callNative.S | 12 +-
+ src/os/linux/arm/callNativeEABI.S | 8 +-
+ src/os/linux/arm/callNativeEABIHard.S | 315 +++++++++++++++++++++++
+ src/os/linux/arm/callNativeEABIHardARM.S | 266 +++++++++++++++++++
+ src/os/linux/arm/dll_md.c | 61 ++++-
+ 8 files changed, 843 insertions(+), 69 deletions(-)
+ create mode 100644 src/os/linux/arm/callNativeEABIHard.S
+ create mode 100644 src/os/linux/arm/callNativeEABIHardARM.S
+
+diff --git a/src/arch/arm.h b/src/arch/arm.h
+index ccf68c4..d2c0318 100644
+--- a/src/arch/arm.h
++++ b/src/arch/arm.h
+@@ -1,6 +1,6 @@
+ /*
+- * Copyright (C) 2003, 2004, 2005, 2006, 2007
+- * Robert Lougher <rob@lougher.org.uk>.
++ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
++ * 2014 Robert Lougher <rob@jamvm.org.uk>.
+ *
+ * This file is part of JamVM.
+ *
+@@ -21,10 +21,16 @@
+
+ #define OS_ARCH "arm"
+
+-/* Override default min and max heap sizes. ARM machines are
+- usually embedded, and the standard defaults are too large. */
+-#define DEFAULT_MAX_HEAP 16*MB
++/* Override minimum min heap size. The initial heap size is a ratio
++ of the physical memory, but it must be at least the minimum min
++ size. The normal setting is too large for ARM machines as they
++ are usually embedded. */
++#define MIN_MIN_HEAP 1*MB
++
++/* Likewise, override the default min/max heap sizes used when the
++ size of physical memory is not available */
+ #define DEFAULT_MIN_HEAP 1*MB
++#define DEFAULT_MAX_HEAP 64*MB
+
+ #ifdef DIRECT
+ #define HANDLER_TABLE_T static const void
+@@ -51,6 +57,36 @@
+ /* Needed for i386 -- empty here */
+ #define FPU_HACK
+
++#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__)
++#define COMPARE_AND_SWAP_32(addr, old_val, new_val) \
++({ \
++ int result, read_val; \
++ __asm__ __volatile__ (" \
++ 1: mov %0, #0; \
++ ldrex %1, [%2]; \
++ cmp %3, %1; \
++ bne 2f; \
++ strex %0, %4, [%2]; \
++ cmp %0, #1; \
++ beq 1b; \
++ mov %0, #1; \
++ 2:" \
++ : "=&r" (result), "=&r" (read_val) \
++ : "r" (addr), "r" (old_val), "r" (new_val) \
++ : "cc", "memory"); \
++ result; \
++})
++
++#define COMPARE_AND_SWAP(addr, old_val, new_val) \
++ COMPARE_AND_SWAP_32(addr, old_val, new_val)
++
++#define LOCKWORD_READ(addr) *addr
++#define LOCKWORD_WRITE(addr, value) *addr = value
++#define LOCKWORD_COMPARE_AND_SWAP(addr, old_val, new_val) \
++ COMPARE_AND_SWAP(addr, old_val, new_val)
++
++#else
++
+ #define LOCKWORD_COMPARE_AND_SWAP(addr, old_val, new_val) \
+ ({ \
+ int result, read_val; \
+@@ -94,7 +130,7 @@ do { \
+ : "r" (addr), "r" (new_val) \
+ : "cc", "memory"); \
+ } while(0)
+-
++#endif
+
+ #ifdef __ARM_EABI__
+ #define FLUSH_CACHE(addr, length) \
+@@ -124,8 +160,33 @@ do { \
+ }
+ #endif
+
++#define GEN_REL_JMP(target_addr, patch_addr, patch_size) \
++({ \
++ int patched = FALSE; \
++ \
++ if(patch_size >= 4) { \
++ /* Guard against the pointer difference being \
++ larger than the signed range */ \
++ long long offset = (uintptr_t)(target_addr) - \
++ (uintptr_t)(patch_addr) - 8; \
++ \
++ if(offset >= -1<<25 && offset < 1<<25) { \
++ *(int*)(patch_addr) = offset>>2 & 0x00ffffff \
++ | 0xea000000; \
++ patched = TRUE; \
++ } \
++ } \
++ patched; \
++})
++
++#ifdef __ARM_ARCH_7A__
++#define MBARRIER() __asm__ __volatile__ ("dmb" ::: "memory")
++#define UNLOCK_MBARRIER() __asm__ __volatile__ ("dmb" ::: "memory")
++#define JMM_LOCK_MBARRIER() __asm__ __volatile__ ("dmb" ::: "memory")
++#define JMM_UNLOCK_MBARRIER() __asm__ __volatile__ ("dmb" ::: "memory")
++#else
+ #define MBARRIER() __asm__ __volatile__ ("" ::: "memory")
+ #define UNLOCK_MBARRIER() __asm__ __volatile__ ("" ::: "memory")
+ #define JMM_LOCK_MBARRIER() __asm__ __volatile__ ("" ::: "memory")
+ #define JMM_UNLOCK_MBARRIER() __asm__ __volatile__ ("" ::: "memory")
+-
++#endif
+diff --git a/src/os/linux/arm/Makefile.am b/src/os/linux/arm/Makefile.am
+index d18ea5a..74e7786 100644
+--- a/src/os/linux/arm/Makefile.am
++++ b/src/os/linux/arm/Makefile.am
+@@ -1,6 +1,6 @@
+ ##
+-## Copyright (C) 2003, 2004, 2005, 2006, 2007
+-## Robert Lougher <rob@lougher.org.uk>.
++## Copyright (C) 2003, 2004, 2005, 2006, 2007, 2010, 2011, 2012
++## Robert Lougher <rob@jamvm.org.uk>.
+ ##
+ ## This file is part of JamVM.
+ ##
+@@ -19,10 +19,11 @@
+ ## Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ ##
+
+-EXTRA_DIST = callNativeOABI.S callNativeEABI.S
++EXTRA_DIST = callNativeOABI.S callNativeEABI.S callNativeEABIHard.S \
++ callNativeEABIHardARM.S
+
+ noinst_LTLIBRARIES = libnative.la
+ libnative_la_SOURCES = init.c dll_md.c callNative.S
+
+-AM_CPPFLAGS = -I$(top_builddir)/src
++AM_CPPFLAGS = -I$(top_builddir)/src -I$(top_srcdir)/src
+ AM_CCASFLAGS = -I$(top_builddir)/src
+diff --git a/src/os/linux/arm/Makefile.in b/src/os/linux/arm/Makefile.in
+index 63b21ad..6d44ea9 100644
+--- a/src/os/linux/arm/Makefile.in
++++ b/src/os/linux/arm/Makefile.in
+@@ -1,8 +1,9 @@
+-# Makefile.in generated by automake 1.10 from Makefile.am.
++# Makefile.in generated by automake 1.11.6 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
++# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
++# Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -15,9 +16,27 @@
+ @SET_MAKE@
+
+ VPATH = @srcdir@
++am__make_dryrun = \
++ { \
++ am__dry=no; \
++ case $$MAKEFLAGS in \
++ *\\[\ \ ]*) \
++ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
++ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
++ *) \
++ for am__flg in $$MAKEFLAGS; do \
++ case $$am__flg in \
++ *=*|--*) ;; \
++ *n*) am__dry=yes; break;; \
++ esac; \
++ done;; \
++ esac; \
++ test $$am__dry = yes; \
++ }
+ pkgdatadir = $(datadir)/@PACKAGE@
+-pkglibdir = $(libdir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
++pkglibdir = $(libdir)/@PACKAGE@
++pkglibexecdir = $(libexecdir)/@PACKAGE@
+ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+ install_sh_DATA = $(install_sh) -c -m 644
+ install_sh_PROGRAM = $(install_sh) -c
+@@ -42,13 +61,15 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+ CONFIG_HEADER = $(top_builddir)/src/config.h
+ CONFIG_CLEAN_FILES =
++CONFIG_CLEAN_VPATH_FILES =
+ LTLIBRARIES = $(noinst_LTLIBRARIES)
+ libnative_la_LIBADD =
+ am_libnative_la_OBJECTS = init.lo dll_md.lo callNative.lo
+ libnative_la_OBJECTS = $(am_libnative_la_OBJECTS)
+-DEFAULT_INCLUDES = -I. -I$(top_builddir)/src@am__isrc@
++DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src
+ depcomp = $(SHELL) $(top_srcdir)/depcomp
+ am__depfiles_maybe = depfiles
++am__mv = mv -f
+ CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
+ LTCPPASCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+@@ -65,6 +86,11 @@ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ $(LDFLAGS) -o $@
+ SOURCES = $(libnative_la_SOURCES)
+ DIST_SOURCES = $(libnative_la_SOURCES)
++am__can_run_installinfo = \
++ case $$AM_UPDATE_INFO_DIR in \
++ n|no|NO) false;; \
++ *) (install-info --version) >/dev/null 2>&1;; \
++ esac
+ ETAGS = etags
+ CTAGS = ctags
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+@@ -84,21 +110,18 @@ CCDEPMODE = @CCDEPMODE@
+ CFLAGS = @CFLAGS@
+ CPP = @CPP@
+ CPPFLAGS = @CPPFLAGS@
+-CXX = @CXX@
+-CXXCPP = @CXXCPP@
+-CXXDEPMODE = @CXXDEPMODE@
+-CXXFLAGS = @CXXFLAGS@
+ CYGPATH_W = @CYGPATH_W@
+ DEFS = @DEFS@
+ DEPDIR = @DEPDIR@
+-ECHO = @ECHO@
++DLLTOOL = @DLLTOOL@
++DSYMUTIL = @DSYMUTIL@
++DUMPBIN = @DUMPBIN@
+ ECHO_C = @ECHO_C@
+ ECHO_N = @ECHO_N@
+ ECHO_T = @ECHO_T@
+ EGREP = @EGREP@
+ EXEEXT = @EXEEXT@
+-F77 = @F77@
+-FFLAGS = @FFLAGS@
++FGREP = @FGREP@
+ GREP = @GREP@
+ INSTALL = @INSTALL@
+ INSTALL_DATA = @INSTALL_DATA@
+@@ -106,21 +129,30 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+ JAVAC = @JAVAC@
++LD = @LD@
+ LDFLAGS = @LDFLAGS@
+ LIBOBJS = @LIBOBJS@
+ LIBS = @LIBS@
+ LIBTOOL = @LIBTOOL@
++LIPO = @LIPO@
+ LN_S = @LN_S@
+ LTLIBOBJS = @LTLIBOBJS@
+ MAINT = @MAINT@
+ MAKEINFO = @MAKEINFO@
++MANIFEST_TOOL = @MANIFEST_TOOL@
+ MKDIR_P = @MKDIR_P@
++NM = @NM@
++NMEDIT = @NMEDIT@
++OBJDUMP = @OBJDUMP@
+ OBJEXT = @OBJEXT@
++OTOOL = @OTOOL@
++OTOOL64 = @OTOOL64@
+ PACKAGE = @PACKAGE@
+ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+ PACKAGE_NAME = @PACKAGE_NAME@
+ PACKAGE_STRING = @PACKAGE_STRING@
+ PACKAGE_TARNAME = @PACKAGE_TARNAME@
++PACKAGE_URL = @PACKAGE_URL@
+ PACKAGE_VERSION = @PACKAGE_VERSION@
+ PATH_SEPARATOR = @PATH_SEPARATOR@
+ RANLIB = @RANLIB@
+@@ -133,9 +165,9 @@ abs_builddir = @abs_builddir@
+ abs_srcdir = @abs_srcdir@
+ abs_top_builddir = @abs_top_builddir@
+ abs_top_srcdir = @abs_top_srcdir@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+-ac_ct_CXX = @ac_ct_CXX@
+-ac_ct_F77 = @ac_ct_F77@
++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ am__include = @am__include@
+ am__leading_dot = @am__leading_dot@
+ am__quote = @am__quote@
+@@ -149,6 +181,7 @@ build_cpu = @build_cpu@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ builddir = @builddir@
++classlib = @classlib@
+ datadir = @datadir@
+ datarootdir = @datarootdir@
+ docdir = @docdir@
+@@ -181,15 +214,18 @@ sharedstatedir = @sharedstatedir@
+ srcdir = @srcdir@
+ sysconfdir = @sysconfdir@
+ target_alias = @target_alias@
++top_build_prefix = @top_build_prefix@
+ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+ use_zip_no = @use_zip_no@
+ use_zip_yes = @use_zip_yes@
+ with_classpath_install_dir = @with_classpath_install_dir@
+-EXTRA_DIST = callNativeOABI.S callNativeEABI.S
++EXTRA_DIST = callNativeOABI.S callNativeEABI.S callNativeEABIHard.S \
++ callNativeEABIHardARM.S
++
+ noinst_LTLIBRARIES = libnative.la
+ libnative_la_SOURCES = init.c dll_md.c callNative.S
+-AM_CPPFLAGS = -I$(top_builddir)/src
++AM_CPPFLAGS = -I$(top_builddir)/src -I$(top_srcdir)/src
+ AM_CCASFLAGS = -I$(top_builddir)/src
+ all: all-am
+
+@@ -199,14 +235,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+- && exit 0; \
++ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
++ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/os/linux/arm/Makefile'; \
+- cd $(top_srcdir) && \
+- $(AUTOMAKE) --gnu src/os/linux/arm/Makefile
++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/os/linux/arm/Makefile'; \
++ $(am__cd) $(top_srcdir) && \
++ $(AUTOMAKE) --gnu src/os/linux/arm/Makefile
+ .PRECIOUS: Makefile
+ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+@@ -224,6 +260,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
++$(am__aclocal_m4_deps):
+
+ clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+@@ -233,7 +270,7 @@ clean-noinstLTLIBRARIES:
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+-libnative.la: $(libnative_la_OBJECTS) $(libnative_la_DEPENDENCIES)
++libnative.la: $(libnative_la_OBJECTS) $(libnative_la_DEPENDENCIES) $(EXTRA_libnative_la_DEPENDENCIES)
+ $(LINK) $(libnative_la_OBJECTS) $(libnative_la_LIBADD) $(LIBS)
+
+ mostlyclean-compile:
+@@ -248,42 +285,42 @@ distclean-compile:
+
+ .S.o:
+ @am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+-@am__fastdepCCAS_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
++@am__fastdepCCAS_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCCAS_FALSE@ $(CPPASCOMPILE) -c -o $@ $<
+
+ .S.obj:
+ @am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+-@am__fastdepCCAS_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
++@am__fastdepCCAS_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCCAS_FALSE@ $(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ .S.lo:
+ @am__fastdepCCAS_TRUE@ $(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+-@am__fastdepCCAS_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
++@am__fastdepCCAS_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCCAS_FALSE@ $(LTCPPASCOMPILE) -c -o $@ $<
+
+ .c.o:
+ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+ .c.obj:
+ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+ .c.lo:
+ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
++@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+@@ -299,45 +336,49 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+- $(AWK) ' { files[$$0] = 1; } \
+- END { for (i in files) print i; }'`; \
++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
++ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+ tags: TAGS
+
+ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+- tags=; \
++ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+- $(AWK) ' { files[$$0] = 1; } \
+- END { for (i in files) print i; }'`; \
+- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
++ END { if (nonempty) { for (i in files) print i; }; }'`; \
++ shift; \
++ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+- $$tags $$unique; \
++ if test $$# -gt 0; then \
++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
++ "$$@" $$unique; \
++ else \
++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
++ $$unique; \
++ fi; \
+ fi
+ ctags: CTAGS
+ CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+- tags=; \
+- here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+- $(AWK) ' { files[$$0] = 1; } \
+- END { for (i in files) print i; }'`; \
+- test -z "$(CTAGS_ARGS)$$tags$$unique" \
++ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
++ END { if (nonempty) { for (i in files) print i; }; }'`; \
++ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+- $$tags $$unique
++ $$unique
+
+ GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+- && cd $(top_srcdir) \
+- && gtags -i $(GTAGS_ARGS) $$here
++ && $(am__cd) $(top_srcdir) \
++ && gtags -i $(GTAGS_ARGS) "$$here"
+
+ distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+@@ -358,13 +399,17 @@ distdir: $(DISTFILES)
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
++ if test -d "$(distdir)/$$file"; then \
++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
++ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
++ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
++ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
++ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+- test -f $(distdir)/$$file \
+- || cp -p $$d/$$file $(distdir)/$$file \
++ test -f "$(distdir)/$$file" \
++ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+@@ -382,16 +427,22 @@ install-am: all-am
+
+ installcheck: installcheck-am
+ install-strip:
+- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+- `test -z '$(STRIP)' || \
+- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
++ if test -z '$(STRIP)'; then \
++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
++ install; \
++ else \
++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
++ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
++ fi
+ mostlyclean-generic:
+
+ clean-generic:
+
+ distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+ maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+@@ -413,6 +464,8 @@ dvi-am:
+
+ html: html-am
+
++html-am:
++
+ info: info-am
+
+ info-am:
+@@ -421,18 +474,28 @@ install-data-am:
+
+ install-dvi: install-dvi-am
+
++install-dvi-am:
++
+ install-exec-am:
+
+ install-html: install-html-am
+
++install-html-am:
++
+ install-info: install-info-am
+
++install-info-am:
++
+ install-man:
+
+ install-pdf: install-pdf-am
+
++install-pdf-am:
++
+ install-ps: install-ps-am
+
++install-ps-am:
++
+ installcheck-am:
+
+ maintainer-clean: maintainer-clean-am
+@@ -470,6 +533,7 @@ uninstall-am:
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am
+
++
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+ .NOEXPORT:
+diff --git a/src/os/linux/arm/callNative.S b/src/os/linux/arm/callNative.S
+index 39ab6d3..245afd1 100644
+--- a/src/os/linux/arm/callNative.S
++++ b/src/os/linux/arm/callNative.S
+@@ -1,6 +1,6 @@
+ /*
+- * Copyright (C) 2003, 2004, 2005, 2006, 2007
+- * Robert Lougher <rob@lougher.org.uk>.
++ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2011, 2012
++ * Robert Lougher <rob@jamvm.org.uk>.
+ *
+ * This file is part of JamVM.
+ *
+@@ -23,7 +23,15 @@
+
+ #ifndef USE_FFI
+ #ifdef __ARM_EABI__
++#ifdef __ARM_PCS_VFP
++#ifdef __ARM_ARCH_7A__
++#include "callNativeEABIHard.S"
++#else
++#include "callNativeEABIHardARM.S"
++#endif
++#else
+ #include "callNativeEABI.S"
++#endif
+ #else
+ #include "callNativeOABI.S"
+ #endif
+diff --git a/src/os/linux/arm/callNativeEABI.S b/src/os/linux/arm/callNativeEABI.S
+index 5effa57..3a7539e 100644
+--- a/src/os/linux/arm/callNativeEABI.S
++++ b/src/os/linux/arm/callNativeEABI.S
+@@ -1,6 +1,6 @@
+ /*
+- * Copyright (C) 2003, 2004, 2005, 2006, 2007
+- * Robert Lougher <rob@lougher.org.uk>.
++ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2011
++ * Robert Lougher <rob@jamvm.org.uk>.
+ *
+ * This file is part of JamVM.
+ *
+@@ -95,8 +95,12 @@ done:
+ ldmfd sp!, {r2, r3}
+
+ /* Call the function */
++#if defined(__ARM_ARCH_4__) || defined(__ARM_ARCH_4T__)
+ mov lr, pc
+ bx ip
++#else
++ blx ip
++#endif
+
+ subs r4, r4, #8 /* Pop argument area */
+ /* (minus 8 for r2/r3) */
+diff --git a/src/os/linux/arm/callNativeEABIHard.S b/src/os/linux/arm/callNativeEABIHard.S
+new file mode 100644
+index 0000000..5d5785b
+--- /dev/null
++++ b/src/os/linux/arm/callNativeEABIHard.S
+@@ -0,0 +1,315 @@
++/*
++ * Copyright (C) 2011, 2012 Robert Lougher <rob@jamvm.org.uk>.
++ *
++ * This file is part of JamVM.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++ .text
++ .syntax unified
++ .arch armv7-a
++ .thumb
++ .align 2
++ .global callJNIMethod
++ .type callJNIMethod,function
++
++/*
++ * Arguments passed in:
++ *
++ * r0 JNIEnv
++ * r1 class or NULL
++ * r2 sig
++ * r3 extra arg
++ * sp + 0 ostack
++ * sp + 4 function pntr
++ * sp + 8 args count
++ */
++
++/* Register usage :
++ *
++ * r11 function pntr
++ * lr ostack pntr
++ * ip args pntr
++ * r8 sig pntr
++ * r10 extra stack
++ * r6 fp backfill
++ * r4 fp reg
++ * r7 int reg
++ * r5 scratch
++ * r3, r2 outgoing int args
++ * r1 outgoing class or this pntr
++ * r0 outgoing JNIEnv (as passed in)
++ *
++ * s0 - s16 (d0 - d7) outgoing float args
++ */
++
++callJNIMethod:
++ stmfd sp!, {r4, r5, r6, r7, r8, r10, r11, lr}
++ ldr lr, [sp, #32] /* get ostack pntr */
++ ldr r11, [sp, #36] /* get function pntr */
++
++ cmp r1, #0 /* is method non-static? */
++ it eq
++ ldreq r1, [lr], #4 /* yes, load r1 with "this" */
++
++ mov r10, r3
++ subs sp, sp, r3 /* allocate room for stacked */
++ add r8, r2, #1 /* init sig pntr -- skipping '(' */
++
++ mov ip, sp /* init loop pntr */
++
++ mov r7, #2
++ mov r4, #16
++ mov r6, #0
++
++scan_sig:
++ ldrb r5, [r8], #1
++
++ cmp r5, #41 /* ')' */
++ beq done
++
++ cmp r5, #70 /* 'F' */
++ beq float
++
++ cmp r5, #68 /* 'D' */
++ beq double
++
++ cmp r5, #74 /* 'J' */
++ beq long
++
++skip_brackets:
++ cmp r5, #91 /* '[' */
++ itt eq
++ ldrbeq r5, [r8], #1
++ beq skip_brackets
++
++ cmp r5, #76 /* 'L' */
++ bne int
++
++skip_ref:
++ ldrb r5, [r8], #1
++ cmp r5, #59 /* ';' */
++ bne skip_ref
++
++int:
++ cbz r7, stack_int
++
++ subs r7, r7, #1
++ ite ne
++ ldrne r2, [lr], #4
++ ldreq r3, [lr], #4
++
++ b scan_sig
++
++float:
++ cbz r6, no_backfill
++
++ sub r5, r6, #1
++ mov r6, #0
++ b load_float
++
++no_backfill:
++ cbz r4, stack_int
++
++ sub r4, r4, #1
++ mov r5, r4
++
++load_float:
++ add lr, lr, #4
++ tbb [pc, r5]
++
++float_table:
++ .byte (s15-float_table)/2
++ .byte (s14-float_table)/2
++ .byte (s13-float_table)/2
++ .byte (s12-float_table)/2
++ .byte (s11-float_table)/2
++ .byte (s10-float_table)/2
++ .byte (s9-float_table)/2
++ .byte (s8-float_table)/2
++ .byte (s7-float_table)/2
++ .byte (s6-float_table)/2
++ .byte (s5-float_table)/2
++ .byte (s4-float_table)/2
++ .byte (s3-float_table)/2
++ .byte (s2-float_table)/2
++ .byte (s1-float_table)/2
++ .byte (s0-float_table)/2
++
++stack_int:
++ ldr r5, [lr], #4
++ str r5, [ip], #4
++ b scan_sig
++
++s0:
++ vldr s0, [lr, #-4]
++ b scan_sig
++s1:
++ vldr s1, [lr, #-4]
++ b scan_sig
++s2:
++ vldr s2, [lr, #-4]
++ b scan_sig
++s3:
++ vldr s3, [lr, #-4]
++ b scan_sig
++s4:
++ vldr s4, [lr, #-4]
++ b scan_sig
++s5:
++ vldr s5, [lr, #-4]
++ b scan_sig
++s6:
++ vldr s6, [lr, #-4]
++ b scan_sig
++s7:
++ vldr s7, [lr, #-4]
++ b scan_sig
++s8:
++ vldr s8, [lr, #-4]
++ b scan_sig
++s9:
++ vldr s9, [lr, #-4]
++ b scan_sig
++s10:
++ vldr s10, [lr, #-4]
++ b scan_sig
++s11:
++ vldr s11, [lr, #-4]
++ b scan_sig
++s12:
++ vldr s12, [lr, #-4]
++ b scan_sig
++s13:
++ vldr s13, [lr, #-4]
++ b scan_sig
++s14:
++ vldr s14, [lr, #-4]
++ b scan_sig
++s15:
++ vldr s15, [lr, #-4]
++ b scan_sig
++
++long:
++ cmp r7, #2
++ mov r7, #0
++ bne stack_long
++
++ ldmia lr!, {r2, r3}
++ b scan_sig
++
++double:
++ lsrs r5, r4, #1
++ it cs
++ movcs r6, r4
++
++ lsls r4, r5, #1
++ beq stack_double
++
++ sub r4, r4, #2
++ add lr, lr, #8
++ tbb [pc, r5]
++
++double_table:
++ .byte 0
++ .byte (d7-double_table)/2
++ .byte (d6-double_table)/2
++ .byte (d5-double_table)/2
++ .byte (d4-double_table)/2
++ .byte (d3-double_table)/2
++ .byte (d2-double_table)/2
++ .byte (d1-double_table)/2
++ .byte (d0-double_table)/2
++ .align 2
++d0:
++ vldr d0, [lr, #-8]
++ b scan_sig
++d1:
++ vldr d1, [lr, #-8]
++ b scan_sig
++d2:
++ vldr d2, [lr, #-8]
++ b scan_sig
++d3:
++ vldr d3, [lr, #-8]
++ b scan_sig
++d4:
++ vldr d4, [lr, #-8]
++ b scan_sig
++d5:
++ vldr d5, [lr, #-8]
++ b scan_sig
++d6:
++ vldr d6, [lr, #-8]
++ b scan_sig
++d7:
++ vldr d7, [lr, #-8]
++ b scan_sig
++
++stack_double:
++ mov r6, #0
++
++stack_long:
++ /* Ensure address is 8 byte aligned */
++ add ip, ip, #7
++ bic ip, ip, #7
++
++ ldr r5, [lr], #4
++ str r5, [ip], #4
++ ldr r5, [lr], #4
++ str r5, [ip], #4
++ b scan_sig
++
++done:
++ /* Call the function */
++ blx r11
++
++ add sp, sp, r10 /* Pop argument area */
++
++ ldr r4, [sp, #32] /* Reload ostack for */
++ /* address of return value */
++
++ ldrb r5, [r8] /* Return type */
++
++ cmp r5, #86 /* 'V' */
++ beq return
++
++ cmp r5, #68 /* 'D' */
++ beq return_double
++
++ cmp r5, #70 /* 'F' */
++ beq return_float
++
++ str r0, [r4], #4 /* Low word */
++
++ cmp r5, #74 /* 'J' */
++ it eq
++ streq r1, [r4], #4 /* High word */
++
++return:
++ mov r0, r4 /* return ostack */
++ ldmfd sp!, {r4, r5, r6, r7, r8, r10, r11, lr}
++ bx lr
++
++return_float:
++ vstr s0, [r4]
++ add r4, r4, #4
++ b return
++
++return_double:
++ vstr d0, [r4]
++ add r4, r4, #8
++ b return
+diff --git a/src/os/linux/arm/callNativeEABIHardARM.S b/src/os/linux/arm/callNativeEABIHardARM.S
+new file mode 100644
+index 0000000..3a31acd
+--- /dev/null
++++ b/src/os/linux/arm/callNativeEABIHardARM.S
+@@ -0,0 +1,266 @@
++/*
++ * Copyright (C) 2011, 2012 Robert Lougher <rob@jamvm.org.uk>.
++ *
++ * This file is part of JamVM.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++ .text
++ .align 2
++ .global callJNIMethod
++ .type callJNIMethod,function
++
++/*
++ * Arguments passed in:
++ *
++ * r0 JNIEnv
++ * r1 class or NULL
++ * r2 sig
++ * r3 extra arg
++ * sp + 0 ostack
++ * sp + 4 function pntr
++ * sp + 8 args count
++ */
++
++/* Register usage :
++ *
++ * lr ostack pntr
++ * ip scratch
++ * r11 function pntr
++ * r10 fp backfill
++ * r8 fp reg
++ * r7 int reg
++ * r6 args pntr
++ * r5 sig pntr
++ * r4 extra stack
++ * r3, r2 outgoing int args
++ * r1 outgoing class or this pntr
++ * r0 outgoing JNIEnv (as passed in)
++ *
++ * s0 - s16 (d0 - d7) outgoing float args
++ */
++
++callJNIMethod:
++ stmfd sp!, {r4, r5, r6, r7, r8, r10, r11, lr}
++ ldr lr, [sp, #32] /* get ostack pntr */
++ ldr r11, [sp, #36] /* get function pntr */
++
++ cmp r1, #0 /* is method non-static? */
++ ldreq r1, [lr], #4 /* yes, load r1 with "this" */
++
++ mov r4, r3
++ sub sp, sp, r4 /* allocate room for stacked */
++ add r5, r2, #1 /* init sig pntr -- skipping '(' */
++
++ mov r6, sp /* init loop pntr */
++
++ mov r7, #2
++ mov r8, #16
++ mov r10, #0
++
++scan_sig:
++ ldrb ip, [r5], #1
++
++ cmp ip, #41 /* ')' */
++ beq done
++
++ cmp ip, #70 /* 'F' */
++ beq float
++
++ cmp ip, #68 /* 'D' */
++ beq double
++
++ cmp ip, #74 /* 'J' */
++ beq long
++
++skip_brackets:
++ cmp ip, #91 /* '[' */
++ ldreqb ip, [r5], #1
++ beq skip_brackets
++
++ cmp ip, #76 /* 'L' */
++ bne int
++
++skip_ref:
++ ldrb ip, [r5], #1
++ cmp ip, #59 /* ';' */
++ bne skip_ref
++
++int:
++ cmp r7, #0
++ beq stack_int
++
++ subs r7, r7, #1
++
++ ldrne r2, [lr], #4
++ ldreq r3, [lr], #4
++
++ b scan_sig
++
++stack_int:
++ ldr ip, [lr], #4
++ str ip, [r6], #4
++ b scan_sig
++
++float:
++ cmp r10, #0
++ beq no_backfill
++
++ sub ip, r10, #1
++ mov r10, #0
++ b load_float
++
++no_backfill:
++ cmp r8, #0
++ beq stack_int
++
++ sub r8, r8, #1
++ mov ip, r8
++
++load_float:
++ add lr, lr, #4
++ add pc, pc, ip, lsl #3
++ nop
++
++ flds s15, [lr, #-4]
++ b scan_sig
++ flds s14, [lr, #-4]
++ b scan_sig
++ flds s13, [lr, #-4]
++ b scan_sig
++ flds s12, [lr, #-4]
++ b scan_sig
++ flds s11, [lr, #-4]
++ b scan_sig
++ flds s10, [lr, #-4]
++ b scan_sig
++ flds s9, [lr, #-4]
++ b scan_sig
++ flds s8, [lr, #-4]
++ b scan_sig
++ flds s7, [lr, #-4]
++ b scan_sig
++ flds s6, [lr, #-4]
++ b scan_sig
++ flds s5, [lr, #-4]
++ b scan_sig
++ flds s4, [lr, #-4]
++ b scan_sig
++ flds s3, [lr, #-4]
++ b scan_sig
++ flds s2, [lr, #-4]
++ b scan_sig
++ flds s1, [lr, #-4]
++ b scan_sig
++ flds s0, [lr, #-4]
++ b scan_sig
++
++long:
++ cmp r7, #2
++ mov r7, #0
++ bne stack_long
++
++ ldr r2, [lr], #4
++ ldr r3, [lr], #4
++ b scan_sig
++
++double:
++ lsrs ip, r8, #1
++ movcs r10, r8
++
++ lsls r8, ip, #1
++ beq stack_double
++
++ sub r8, r8, #2
++ add lr, lr, #8
++ add pc, pc, ip, lsl #3
++ nop
++ nop
++ nop
++
++ fldd d7, [lr, #-8]
++ b scan_sig
++ fldd d6, [lr, #-8]
++ b scan_sig
++ fldd d5, [lr, #-8]
++ b scan_sig
++ fldd d4, [lr, #-8]
++ b scan_sig
++ fldd d3, [lr, #-8]
++ b scan_sig
++ fldd d2, [lr, #-8]
++ b scan_sig
++ fldd d1, [lr, #-8]
++ b scan_sig
++ fldd d0, [lr, #-8]
++ b scan_sig
++
++stack_double:
++ mov r10, #0
++
++stack_long:
++ /* Ensure address is 8 byte aligned */
++ add r6, r6, #7
++ bic r6, r6, #7
++
++ ldr ip, [lr], #4
++ str ip, [r6], #4
++ ldr ip, [lr], #4
++ str ip, [r6], #4
++ b scan_sig
++
++done:
++ /* Call the function */
++#if defined(__ARM_ARCH_4__) || defined(__ARM_ARCH_4T__)
++ mov lr, pc
++ bx r11
++#else
++ blx r11
++#endif
++
++ add sp, sp, r4 /* Pop argument area */
++ ldr r4, [sp, #32] /* Reload ostack for */
++ /* address of return value */
++ ldrb ip, [r5] /* Return type */
++
++ cmp ip, #86 /* 'V' */
++ beq return
++
++ cmp ip, #68 /* 'D' */
++ beq return_double
++
++ cmp ip, #70 /* 'F' */
++ beq return_float
++
++ str r0, [r4], #4 /* Low word */
++
++ cmp ip, #74 /* 'J' */
++ streq r1, [r4], #4 /* High word */
++
++return:
++ mov r0, r4 /* return ostack */
++ ldmfd sp!, {r4, r5, r6, r7, r8, r10, r11, lr}
++ bx lr
++
++return_float:
++ add r4, r4, #4
++ fsts s0, [r4, #-4]
++ b return
++
++return_double:
++ add r4, r4, #8
++ fstd d0, [r4, #-8]
++ b return
+diff --git a/src/os/linux/arm/dll_md.c b/src/os/linux/arm/dll_md.c
+index f5df90e..39bdf7c 100644
+--- a/src/os/linux/arm/dll_md.c
++++ b/src/os/linux/arm/dll_md.c
+@@ -1,6 +1,6 @@
+ /*
+- * Copyright (C) 2003, 2004, 2005, 2006, 2007
+- * Robert Lougher <rob@lougher.org.uk>.
++ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2011
++ * Robert Lougher <rob@jamvm.org.uk>.
+ *
+ * This file is part of JamVM.
+ *
+@@ -31,6 +31,61 @@
+ * out stack requirements and then to push arguments. To
+ * save the first scan at call time, the signature is pre-
+ * scanned and stack requirement stored in the extra argument. */
++
++#ifdef __ARM_PCS_VFP
++int nativeExtraArg(MethodBlock *mb) {
++ char *sig = mb->type;
++ int fp_backfill = 0;
++ int stack_args = 0;
++ int int_args = 2;
++ int fp_args = 16;
++
++ while(*++sig != ')')
++ switch(*sig) {
++ case 'J':
++ if(int_args < 2)
++ stack_args = (stack_args + 15) & ~7;
++ int_args = 0;
++ break;
++
++ case 'D':
++ fp_backfill |= fp_args & 1;
++ fp_args &= ~1;
++
++ if(fp_args == 0) {
++ stack_args = (stack_args + 15) & ~7;
++ fp_backfill = 0;
++ } else
++ fp_args -= 2;
++ break;
++
++ case 'F':
++ if(fp_backfill)
++ fp_backfill = 0;
++ else {
++ if(fp_args == 0)
++ stack_args += 4;
++ else
++ fp_args--;
++ }
++ break;
++
++ default:
++ if(int_args == 0)
++ stack_args += 4;
++ else
++ int_args--;
++
++ if(*sig == '[')
++ while(*++sig == '[');
++ if(*sig == 'L')
++ while(*++sig != ';');
++ break;
++ }
++
++ return (stack_args + 7) & ~7;
++}
++#else
+ int nativeExtraArg(MethodBlock *mb) {
+ char *sig = mb->type;
+ int args = 0;
+@@ -57,7 +112,7 @@ int nativeExtraArg(MethodBlock *mb) {
+ native method, so minimum stack requirement is 8 bytes. */
+ return args < 8 ? 8 : args;
+ }
+-
++#endif
+ #else
+
+ /* Under OABI, arguments can be copied onto the stack "as is"
+--
+2.17.1
+
diff --git a/gnu/packages/patches/mesa-wayland-egl-symbols-check-mips.patch b/gnu/packages/patches/mesa-wayland-egl-symbols-check-mips.patch
deleted file mode 100644
index aa2278697e..0000000000
--- a/gnu/packages/patches/mesa-wayland-egl-symbols-check-mips.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Fix 'wayland-egl-symbols-check' on mips64el-linux, where an additional symbol
-(_ftext) is present in libwayland-egl.so.
-
-Patch by Mark H Weaver <mhw@netris.org>
-
---- mesa-12.0.1/src/egl/wayland/wayland-egl/wayland-egl-symbols-check.orig 2016-01-18 02:39:25.000000000 -0500
-+++ mesa-12.0.1/src/egl/wayland/wayland-egl/wayland-egl-symbols-check 2016-10-24 16:25:07.110721426 -0400
-@@ -7,6 +7,7 @@
- wl_egl_window_destroy
- wl_egl_window_get_attached_size
- _fini
-+_ftext
- _init
- EOF
- done)
diff --git a/gnu/packages/patches/meson-for-build-rpath.patch b/gnu/packages/patches/meson-for-build-rpath.patch
index 4e20c9aed3..2151d53565 100644
--- a/gnu/packages/patches/meson-for-build-rpath.patch
+++ b/gnu/packages/patches/meson-for-build-rpath.patch
@@ -6,14 +6,13 @@ Patch by Peter Mikkelsen <petermikkelsen10@gmail.com>
--- meson-0.42.0/mesonbuild/scripts/meson_install.py.orig 2017-09-09 01:49:39.147374148 +0200
+++ meson-0.42.0/mesonbuild/scripts/meson_install.py 2017-09-09 01:51:01.209134717 +0200
-@@ -345,15 +345,6 @@
+@@ -391,14 +391,6 @@
print("Symlink creation does not work on this platform. "
"Skipping all symlinking.")
printed_symlink_error = True
-- if is_elf_platform() and os.path.isfile(outname):
+- if os.path.isfile(outname):
- try:
-- e = depfixer.Elf(outname, False)
-- e.fix_rpath(install_rpath)
+- depfixer.fix_rpath(outname, install_rpath, False)
- except SystemExit as e:
- if isinstance(e.code, int) and e.code == 0:
- pass
diff --git a/gnu/packages/patches/openblas-fix-tests-i686.patch b/gnu/packages/patches/openblas-fix-tests-i686.patch
new file mode 100644
index 0000000000..3325546ea3
--- /dev/null
+++ b/gnu/packages/patches/openblas-fix-tests-i686.patch
@@ -0,0 +1,35 @@
+Fix a test failure on some i686 systems:
+
+https://github.com/xianyi/OpenBLAS/issues/1575
+
+This patch is a squashed version of these commits:
+
+https://github.com/xianyi/OpenBLAS/pull/1583
+
+diff --git a/kernel/x86/KERNEL.NEHALEM b/kernel/x86/KERNEL.NEHALEM
+index 835520ef..65b03ae5 100644
+--- a/kernel/x86/KERNEL.NEHALEM
++++ b/kernel/x86/KERNEL.NEHALEM
+@@ -1,3 +1 @@
+ include $(KERNELDIR)/KERNEL.PENRYN
+-SSWAPKERNEL = ../arm/swap.c
+-DSWAPKERNEL = ../arm/swap.c
+diff --git a/kernel/x86/swap.S b/kernel/x86/swap.S
+index 54b00b33..e30c2789 100644
+--- a/kernel/x86/swap.S
++++ b/kernel/x86/swap.S
+@@ -138,6 +138,14 @@
+ /* INCX != 1 or INCY != 1 */
+
+ .L14:
++ cmpl $0, %ebx
++ jne .L141
++ cmpl $0, %ecx
++ jne .L141
++/* INCX == 0 and INCY == 0 */
++ jmp .L27
++
++.L141:
+ movl %edx, %eax
+ sarl $2, %eax
+ jle .L28
diff --git a/gnu/packages/patches/syncthing-fix-crash.patch b/gnu/packages/patches/syncthing-fix-crash.patch
new file mode 100644
index 0000000000..d27e543982
--- /dev/null
+++ b/gnu/packages/patches/syncthing-fix-crash.patch
@@ -0,0 +1,72 @@
+Avoid a crash:
+
+https://github.com/syncthing/syncthing/issues/5002
+
+Patch copied from upstream source repository:
+
+https://github.com/syncthing/syncthing/commit/35a75a95dc6383b2d73ab645f1407f7907ec1a2c
+
+From 35a75a95dc6383b2d73ab645f1407f7907ec1a2c Mon Sep 17 00:00:00 2001
+From: Jakob Borg <jakob@kastelo.net>
+Date: Wed, 13 Jun 2018 19:07:52 +0200
+Subject: [PATCH] lib/model: Don't panic when rechecking file (fixes #5002)
+ (#5003)
+
+---
+ lib/model/model.go | 2 +-
+ lib/model/model_test.go | 26 ++++++++++++++++++++++++++
+ 2 files changed, 27 insertions(+), 1 deletion(-)
+
+diff --git a/lib/model/model.go b/lib/model/model.go
+index 5a9146e0..302f06c5 100644
+--- a/lib/model/model.go
++++ b/lib/model/model.go
+@@ -1373,7 +1373,7 @@ func (m *Model) recheckFile(deviceID protocol.DeviceID, folderFs fs.Filesystem,
+ return
+ }
+
+- if blockIndex > len(cf.Blocks) {
++ if blockIndex >= len(cf.Blocks) {
+ l.Debugf("%v recheckFile: %s: %q / %q i=%d: block index too far", m, deviceID, folder, name, blockIndex)
+ return
+ }
+diff --git a/lib/model/model_test.go b/lib/model/model_test.go
+index 295eafc1..456bbc4a 100644
+--- a/lib/model/model_test.go
++++ b/lib/model/model_test.go
+@@ -3608,6 +3608,32 @@ func TestIssue4903(t *testing.T) {
+ }
+ }
+
++func TestIssue5002(t *testing.T) {
++ // recheckFile should not panic when given an index equal to the number of blocks
++
++ db := db.OpenMemory()
++ m := NewModel(defaultCfgWrapper, protocol.LocalDeviceID, "syncthing", "dev", db, nil)
++ m.AddFolder(defaultFolderConfig)
++ m.StartFolder("default")
++
++ m.ServeBackground()
++ defer m.Stop()
++
++ if err := m.ScanFolder("default"); err != nil {
++ t.Error(err)
++ }
++
++ file, ok := m.CurrentFolderFile("default", "foo")
++ if !ok {
++ t.Fatal("test file should exist")
++ }
++ nBlocks := len(file.Blocks)
++
++ m.recheckFile(protocol.LocalDeviceID, defaultFolderConfig.Filesystem(), "default", "foo", nBlocks-1, []byte{1, 2, 3, 4})
++ m.recheckFile(protocol.LocalDeviceID, defaultFolderConfig.Filesystem(), "default", "foo", nBlocks, []byte{1, 2, 3, 4}) // panic
++ m.recheckFile(protocol.LocalDeviceID, defaultFolderConfig.Filesystem(), "default", "foo", nBlocks+1, []byte{1, 2, 3, 4})
++}
++
+ func addFakeConn(m *Model, dev protocol.DeviceID) *fakeConnection {
+ fc := &fakeConnection{id: dev, model: m}
+ m.AddConnection(fc, protocol.HelloResult{})
+--
+2.18.0
+
diff --git a/gnu/packages/patches/xapian-revert-5489fb2f8.patch b/gnu/packages/patches/xapian-revert-5489fb2f8.patch
new file mode 100644
index 0000000000..7b78e2abb5
--- /dev/null
+++ b/gnu/packages/patches/xapian-revert-5489fb2f8.patch
@@ -0,0 +1,23 @@
+Revert this upstream commit which breaks a test case in "notmuch":
+
+https://git.xapian.org/?p=xapian;a=commitdiff;h=5489fb2f838c0f0b0a593b4c17df282a93a1fe5a
+
+See the notmuch FAQ entry:
+
+https://notmuchmail.org/faq/#index12h2
+
+This should be fixed for later releases.
+
+diff --git a/backends/glass/glass_postlist.cc b/xapian-core/backends/glass/glass_postlist.cc
+index 80e578b85..a47f14a68 100644
+--- a/backends/glass/glass_postlist.cc
++++ b/backends/glass/glass_postlist.cc
+@@ -759,7 +759,7 @@ GlassPostList::open_nearby_postlist(const std::string & term_,
+ (void)need_pos;
+ if (term_.empty())
+ RETURN(NULL);
+- if (!this_db.get() || this_db->postlist_table.is_modified())
++ if (!this_db.get() || this_db->postlist_table.is_writable())
+ RETURN(NULL);
+ RETURN(new GlassPostList(this_db, term_, cursor->clone()));
+ }
diff --git a/gnu/packages/patches/xf86-video-savage-xorg-compat.patch b/gnu/packages/patches/xf86-video-savage-xorg-compat.patch
new file mode 100644
index 0000000000..9524032676
--- /dev/null
+++ b/gnu/packages/patches/xf86-video-savage-xorg-compat.patch
@@ -0,0 +1,33 @@
+Fix build against xorg-server >= 1.20.
+
+Patch taken from upstream:
+https://cgit.freedesktop.org/xorg/driver/xf86-video-savage/commit/?id=0ece556daa8a88771b669d8104396abd9166d2d0
+
+diff --git a/src/savage_driver.c b/src/savage_driver.c
+index 58a294d..3cda923 100644
+--- a/src/savage_driver.c
++++ b/src/savage_driver.c
+@@ -2034,8 +2034,6 @@ static Bool SavagePreInit(ScrnInfoPtr pScrn, int flags)
+ xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "Detected current MCLK value of %1.3f MHz\n",
+ mclk / 1000.0);
+
+- pScrn->maxHValue = 2048 << 3; /* 11 bits of h_total 8-pixel units */
+- pScrn->maxVValue = 2048; /* 11 bits of v_total */
+ pScrn->virtualX = pScrn->display->virtualX;
+ pScrn->virtualY = pScrn->display->virtualY;
+
+@@ -3637,6 +3635,14 @@ static ModeStatus SavageValidMode(SCRN_ARG_TYPE arg, DisplayModePtr pMode,
+ (pMode->VDisplay > psav->PanelY)))
+ return MODE_PANEL;
+
++ /* 11 bits of h_total 8-pixel units */
++ if (pMode->HTotal > (2048 << 3))
++ return MODE_BAD_HVALUE;
++
++ /* 11 bits of v_total */
++ if (pMode->VTotal > 2048)
++ return MODE_BAD_VVALUE;
++
+ if (psav->UseBIOS) {
+ refresh = SavageGetRefresh(pMode);
+ return (SavageMatchBiosMode(pScrn,pMode->HDisplay,
diff --git a/gnu/packages/patches/xf86-video-sis-xorg-compat.patch b/gnu/packages/patches/xf86-video-sis-xorg-compat.patch
new file mode 100644
index 0000000000..ebe9715d13
--- /dev/null
+++ b/gnu/packages/patches/xf86-video-sis-xorg-compat.patch
@@ -0,0 +1,18 @@
+Remove use of interface no longer provided by xorg-server.
+
+Patch taken from upstream:
+https://cgit.freedesktop.org/xorg/driver/xf86-video-sis/commit/?id=4b1356a2b7fd06e9a05d134caa4033681c939737
+
+diff --git a/src/sis_driver.c b/src/sis_driver.c
+index 8f06164..513f68b 100644
+--- a/src/sis_driver.c
++++ b/src/sis_driver.c
+@@ -2738,7 +2738,7 @@ SiSPrintModes(ScrnInfoPtr pScrn)
+ float hsync, refresh = 0.0;
+ char *desc, *desc2, *prefix, *uprefix, *output;
+
+- xf86DrvMsg(pScrn->scrnIndex, pScrn->virtualFrom, "Virtual size is %dx%d "
++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Virtual size is %dx%d "
+ "(pitch %d)\n", pScrn->virtualX, pScrn->virtualY,
+ pScrn->displayWidth);
+
diff --git a/gnu/packages/patches/zathura-pdf-mupdf-link-to-jpeg-libraries.patch b/gnu/packages/patches/zathura-pdf-mupdf-link-to-jpeg-libraries.patch
new file mode 100644
index 0000000000..63e058bbef
--- /dev/null
+++ b/gnu/packages/patches/zathura-pdf-mupdf-link-to-jpeg-libraries.patch
@@ -0,0 +1,55 @@
+From: Tobias Geerinckx-Rice <me@tobias.gr>
+Date: Mon, 18 Jun 2018 02:37:41 +0200
+Subject: zathura-pdf-mupdf: Link to JPEG libraries.
+
+As of version 0.3.3, zathura-pdf-mupdf no longer links to some required
+JPEG libraries, leading to such errors as:
+
+ $ zathura foo.pdf
+ error: Could not load plugin '/gnu/store/...-profile/lib/zathura/libpdf-mupdf.so' (/gnu/store/...-profile/lib/zathura/libpdf-mupdf.so: undefined symbol: jpeg_resync_to_restart).
+
+The patch below, copied verbatim from Arch[0], fixes that.
+Its description happens to match our reality, too.
+
+[0]: https://git.archlinux.org/svntogit/community.git/tree/trunk?h=packages/zathura-pdf-mupdf
+---
+From 3fb0ff750373d45d4f5172ce1d41b74183cd07e8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Johannes=20L=C3=B6thberg?= <johannes@kyriasis.com>
+Date: Sat, 24 Mar 2018 14:31:18 +0100
+Subject: [PATCH] Explicitly link against jbig2dec, openjp2, and jpeg
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Normally these are statically linked into libmupdfthird, but we delete
+those to make mupdf use the system libraries. Previously
+zathura-pdf-mupdf explicitly linked against them, but this is
+technically incorrect since they are supposed to be in libmupdfthird so
+that was removed. This commit essentially reverts that in the new build
+system.
+
+Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
+---
+ meson.build | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 3b0d7b7..ae2fc9c 100644
+--- a/meson.build
++++ b/meson.build
+@@ -22,7 +22,11 @@ cairo = dependency('cairo')
+ mupdf = cc.find_library('mupdf')
+ mupdfthird = cc.find_library('mupdfthird')
+
+-build_dependencies = [zathura, girara, glib, cairo, mupdf, mupdfthird]
++jbig2dec = cc.find_library('jbig2dec')
++openjp2 = cc.find_library('openjp2')
++jpeg = cc.find_library('jpeg')
++
++build_dependencies = [zathura, girara, glib, cairo, mupdf, mupdfthird, jbig2dec, openjp2, jpeg]
+
+ # defines
+ defines = [
+--
+2.16.3
+
diff --git a/gnu/packages/patches/zathura-plugindir-environment-variable.patch b/gnu/packages/patches/zathura-plugindir-environment-variable.patch
index 2e3ea527d0..a8ffff965a 100644
--- a/gnu/packages/patches/zathura-plugindir-environment-variable.patch
+++ b/gnu/packages/patches/zathura-plugindir-environment-variable.patch
@@ -8,15 +8,15 @@ different file formats) called ZATHURA_PLUGIN_PATH. Command line option
-p still takes precedence.
Patch by Paul van der Walt <paul@denknerd.org>
+Adjusted for Zathura 0.3.9 by Tobias Geerinckx-Rice <me@tobias.gr>
---
zathura/zathura.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/zathura/zathura.c b/zathura/zathura.c
-index 589dd28..375ec54 100644
--- a/zathura/zathura.c
+++ b/zathura/zathura.c
-@@ -413,6 +413,13 @@ zathura_set_plugin_dir(zathura_t* zathura, const char* dir)
+@@ -597,6 +597,13 @@ zathura_set_plugin_dir(zathura_t* zathura, const char* dir)
g_return_if_fail(zathura != NULL);
g_return_if_fail(zathura->plugins.manager != NULL);
@@ -28,8 +28,5 @@ index 589dd28..375ec54 100644
+ dir = g_getenv("ZATHURA_PLUGIN_PATH");
+
if (dir != NULL) {
- girara_list_t* paths = girara_split_path_array(dir);
- GIRARA_LIST_FOREACH(paths, char*, iter, path)
---
-2.3.1
-
+ set_plugin_dir(zathura, dir);
+ #ifdef ZATHURA_PLUGINDIR
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index e83b2c1960..66fbb20038 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -13,7 +13,7 @@
;;; Copyright © 2017, 2018 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -37,6 +37,7 @@
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (guix build-system cmake)
+ #:use-module (guix build-system meson)
#:use-module (guix build-system python)
#:use-module (guix build-system trivial)
#:use-module (gnu packages)
@@ -343,26 +344,32 @@ reading and editing of existing PDF files.")
(define-public zathura-cb
(package
(name "zathura-cb")
- (version "0.1.7")
+ (version "0.1.8")
(source (origin
(method url-fetch)
(uri
(string-append "https://pwmt.org/projects/zathura-cb/download/zathura-cb-"
- version ".tar.gz"))
+ version ".tar.xz"))
(sha256
(base32
- "0r4viisycj39kaz4281cmkr7n9w5q96dmlf7nf45n8zq8qy2npw3"))))
+ "1i6cf0vks501cggwvfsl6qb7mdaf3sszdymphimfvnspw810faj5"))))
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs `(("libarchive" ,libarchive)
("zathura" ,zathura)))
- (build-system gnu-build-system)
+ (build-system meson-build-system)
(arguments
- `(#:make-flags (list (string-append "PREFIX=" %output)
- (string-append "PLUGINDIR=" %output "/lib/zathura")
- "CC=gcc")
- #:tests? #f ; Package does not contain tests.
+ `(#:tests? #f ; package does not contain tests
#:phases
- (modify-phases %standard-phases (delete 'configure))))
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-plugin-directory
+ ;; Something of a regression in 0.1.8: the new Meson build system
+ ;; now hard-codes an incorrect plugin directory. Fix it.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "meson.build"
+ (("(install_dir:).*" _ key)
+ (string-append key
+ "'" (assoc-ref outputs "out") "/lib/zathura'\n")))
+ #t)))))
(home-page "https://pwmt.org/projects/zathura-cb/")
(synopsis "Comic book support for zathura (libarchive backend)")
(description "The zathura-cb plugin adds comic book support to zathura
@@ -372,26 +379,32 @@ using libarchive.")
(define-public zathura-ps
(package
(name "zathura-ps")
- (version "0.2.5")
+ (version "0.2.6")
(source (origin
(method url-fetch)
(uri
(string-append "https://pwmt.org/projects/zathura-ps/download/zathura-ps-"
- version ".tar.gz"))
+ version ".tar.xz"))
(sha256
(base32
- "1x4knqja8pw2a5cb3y2209nr3iddj1z8nwasy48v5nprj61fdxqj"))))
+ "0wygq89nyjrjnsq7vbpidqdsirjm6iq4w2rijzwpk2f83ys8bc3y"))))
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs `(("libspectre" ,libspectre)
("zathura" ,zathura)))
- (build-system gnu-build-system)
+ (build-system meson-build-system)
(arguments
- `(#:make-flags (list (string-append "PREFIX=" %output)
- (string-append "PLUGINDIR=" %output "/lib/zathura")
- "CC=gcc")
- #:tests? #f ; Package does not contain tests.
+ `(#:tests? #f ; package does not contain tests
#:phases
- (modify-phases %standard-phases (delete 'configure))))
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-plugin-directory
+ ;; Something of a regression in 0.2.6: the new Meson build system
+ ;; now hard-codes an incorrect plugin directory. Fix it.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "meson.build"
+ (("(install_dir:).*" _ key)
+ (string-append key
+ "'" (assoc-ref outputs "out") "/lib/zathura'\n")))
+ #t)))))
(home-page "https://pwmt.org/projects/zathura-ps/")
(synopsis "PS support for zathura (libspectre backend)")
(description "The zathura-ps plugin adds PS support to zathura
@@ -401,27 +414,33 @@ using libspectre.")
(define-public zathura-djvu
(package
(name "zathura-djvu")
- (version "0.2.7")
+ (version "0.2.8")
(source (origin
(method url-fetch)
(uri
(string-append "https://pwmt.org/projects/zathura-djvu/download/zathura-djvu-"
- version ".tar.gz"))
+ version ".tar.xz"))
(sha256
(base32
- "1sbfdsyp50qc85xc4458sn4w1rv1qbygdwmcr5kjlfpsmdq98vhd"))))
+ "0axkv1crdxn0z44whaqp2ibkdqcykhjnxk7qzms0dp1b67an9rnh"))))
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs
`(("djvulibre" ,djvulibre)
("zathura" ,zathura)))
- (build-system gnu-build-system)
+ (build-system meson-build-system)
(arguments
- `(#:make-flags (list (string-append "PREFIX=" %output)
- (string-append "PLUGINDIR=" %output "/lib/zathura")
- "CC=gcc")
- #:tests? #f ; Package does not contain tests.
+ `(#:tests? #f ; package does not contain tests
#:phases
- (modify-phases %standard-phases (delete 'configure))))
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-plugin-directory
+ ;; Something of a regression in 0.2.8: the new Meson build system
+ ;; now hard-codes an incorrect plugin directory. Fix it.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "meson.build"
+ (("(install_dir:).*" _ key)
+ (string-append key
+ "'" (assoc-ref outputs "out") "/lib/zathura'\n")))
+ #t)))))
(home-page "https://pwmt.org/projects/zathura-djvu/")
(synopsis "DjVu support for zathura (DjVuLibre backend)")
(description "The zathura-djvu plugin adds DjVu support to zathura
@@ -431,15 +450,17 @@ using the DjVuLibre library.")
(define-public zathura-pdf-mupdf
(package
(name "zathura-pdf-mupdf")
- (version "0.3.2")
+ (version "0.3.3")
(source (origin
(method url-fetch)
(uri
(string-append "https://pwmt.org/projects/zathura-pdf-mupdf"
- "/download/zathura-pdf-mupdf-" version ".tar.gz"))
+ "/download/zathura-pdf-mupdf-" version ".tar.xz"))
+ (patches
+ (search-patches "zathura-pdf-mupdf-link-to-jpeg-libraries.patch"))
(sha256
(base32
- "0xkajc3is7ncmb2fmymbzfgrran2bz12i7zsm1vvxhxds728h7ck"))))
+ "1zbdqimav4wfgimpy3nfzl10qj7vyv23rdy2z5z7z93jwbp2rc2j"))))
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs
`(("jbig2dec" ,jbig2dec)
@@ -448,13 +469,20 @@ using the DjVuLibre library.")
("openjpeg" ,openjpeg)
("openssl" ,openssl)
("zathura" ,zathura)))
- (build-system gnu-build-system)
+ (build-system meson-build-system)
(arguments
- `(#:make-flags (list (string-append "PREFIX=" %output)
- (string-append "PLUGINDIR=" %output "/lib/zathura")
- "CC=gcc")
- #:tests? #f ;No tests.
- #:phases (modify-phases %standard-phases (delete 'configure))))
+ `(#:tests? #f ; package does not contain tests
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-plugin-directory
+ ;; Something of a regression in 0.3.3: the new Meson build system
+ ;; now hard-codes an incorrect plugin directory. Fix it.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "meson.build"
+ (("(install_dir:).*" _ key)
+ (string-append key
+ "'" (assoc-ref outputs "out") "/lib/zathura'\n")))
+ #t)))))
(home-page "https://pwmt.org/projects/zathura-pdf-mupdf/")
(synopsis "PDF support for zathura (mupdf backend)")
(description "The zathura-pdf-mupdf plugin adds PDF support to zathura
@@ -464,27 +492,33 @@ by using the @code{mupdf} rendering library.")
(define-public zathura-pdf-poppler
(package
(name "zathura-pdf-poppler")
- (version "0.2.8")
+ (version "0.2.9")
(source (origin
(method url-fetch)
(uri
(string-append "https://pwmt.org/projects/zathura-pdf-poppler/download/zathura-pdf-poppler-"
- version ".tar.gz"))
+ version ".tar.xz"))
(sha256
(base32
- "1m55m7s7f8ng8a7lmcw9z4n5zv7xk4vp9n6fp9j84z6rk2imf7a2"))))
+ "1p4jcny0jniygns78mcf0nlm298dszh49qpmjmackrm6dq8hc25y"))))
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs
`(("poppler" ,poppler)
("zathura" ,zathura)))
- (build-system gnu-build-system)
+ (build-system meson-build-system)
(arguments
- `(#:make-flags (list (string-append "PREFIX=" %output)
- (string-append "PLUGINDIR=" %output "/lib/zathura")
- "CC=gcc")
- #:tests? #f ; Package does not include tests.
+ `(#:tests? #f ; package does not include tests
#:phases
- (modify-phases %standard-phases (delete 'configure))))
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-plugin-directory
+ ;; Something of a regression in 0.2.9: the new Meson build system
+ ;; now hard-codes an incorrect plugin directory. Fix it.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "meson.build"
+ (("(install_dir:).*" _ key)
+ (string-append key
+ "'" (assoc-ref outputs "out") "/lib/zathura'\n")))
+ #t)))))
(home-page "https://pwmt.org/projects/zathura-pdf-poppler/")
(synopsis "PDF support for zathura (poppler backend)")
(description "The zathura-pdf-poppler plugin adds PDF support to zathura
@@ -494,21 +528,24 @@ by using the poppler rendering engine.")
(define-public zathura
(package
(name "zathura")
- (version "0.3.8")
+ (version "0.3.9")
(source (origin
(method url-fetch)
(uri
(string-append "https://pwmt.org/projects/zathura/download/zathura-"
- version ".tar.gz"))
+ version ".tar.xz"))
(sha256
(base32
- "0dz5pky3vmf3s2cp2rv1c099gb1s49p9xlgm3ghyy4pzyxc8bgs6"))
+ "0z09kz92a2n8qqv3cy8bx5j5k612g2f9mmh4szqlc7yvi39aax1g"))
(patches (search-patches
"zathura-plugindir-environment-variable.patch"))))
(native-inputs `(("pkg-config" ,pkg-config)
("gettext" ,gettext-minimal)
("glib:bin" ,glib "bin")
+ ;; For building documentation.
+ ("python-sphinx" ,python-sphinx)
+
;; For tests.
("check" ,check)
("xorg-server" ,xorg-server-1.19.3)))
@@ -520,15 +557,9 @@ by using the poppler rendering engine.")
(list (search-path-specification
(variable "ZATHURA_PLUGIN_PATH")
(files '("lib/zathura")))))
- (build-system gnu-build-system)
+ (build-system meson-build-system)
(arguments
- `(#:make-flags
- `(,(string-append "PREFIX=" (assoc-ref %outputs "out"))
- "CC=gcc" "COLOR=0")
- #:test-target "test"
- #:disallowed-references (,xorg-server-1.19.3)
- #:phases (modify-phases %standard-phases
- (delete 'configure)
+ `(#:phases (modify-phases %standard-phases
(add-before 'check 'start-xserver
;; Tests require a running X server.
(lambda* (#:key inputs #:allow-other-keys)
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index 90e6ab1c1c..1acab0de71 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -318,7 +318,7 @@
("libxpm" ,libxpm)
("libxslt" ,libxslt)
("libx11" ,libx11)
- ("oniguruma" ,oniguruma)
+ ("oniguruma" ,oniguruma-5)
("openldap" ,openldap)
("openssl" ,openssl)
("pcre" ,pcre)
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index c9b22e87ee..d350990c67 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -782,14 +782,14 @@ NetCDF files can also be read and modified. Python-HDF4 is a fork of
(define-public python-h5py
(package
(name "python-h5py")
- (version "2.7.0")
+ (version "2.8.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "h5py" version))
(sha256
(base32
- "0433sdv6xc9p7v1xs1gvbxp7p152ywi3nplgjb258q9fvw9469br"))))
+ "0mdr6wrq02ac93m1aqx9kad0ppfzmm4imlxqgyy1x4l7hmdcc9p6"))))
(build-system python-build-system)
(arguments
`(#:tests? #f ; no test target
@@ -2218,14 +2218,14 @@ environments and back.")
(define-public python-pyyaml
(package
(name "python-pyyaml")
- (version "3.12")
+ (version "3.13")
(source
(origin
(method url-fetch)
(uri (pypi-uri "PyYAML" version))
(sha256
(base32
- "1aqjl8dk9amd4zr99n8v2qxzgmr2hdvqfma4zh7a41rj6336c9sr"))))
+ "1gx603g484z46cb74j9rzr6sjlh2vndxayicvlyhxdz98lhhkwry"))))
(build-system python-build-system)
(inputs
`(("libyaml" ,libyaml)))
@@ -7834,14 +7834,14 @@ python-xdo for newer bindings.)")
(define-public python-mako
(package
(name "python-mako")
- (version "1.0.6")
+ (version "1.0.7")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Mako" version))
(sha256
(base32
- "03dyxgjknp4ffsv7vwfd28l5bbpzi0ylp20543wpg3iahyyrwma8"))))
+ "1bi5gnr8r8dva06qpyx4kgjc6spm2k1y908183nbbaylggjzs0jf"))))
(build-system python-build-system)
(propagated-inputs
`(("python-markupsafe" ,python-markupsafe)))
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index 0ce46056f5..64017224a7 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -236,14 +236,14 @@ Desktops into Active Directory environments using the winbind daemon.")
(define-public talloc
(package
(name "talloc")
- (version "2.1.13")
+ (version "2.1.14")
(source (origin
(method url-fetch)
(uri (string-append "https://www.samba.org/ftp/talloc/talloc-"
version ".tar.gz"))
(sha256
(base32
- "0iv09iv385x69gfzvassq6m3y0rd8ncylls95dm015xdy3drkww4"))))
+ "1kk76dyav41ip7ddbbf04yfydb4jvywzi2ps0z2vla56aqkn11di"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@@ -306,14 +306,14 @@ destructors. It is the core memory allocator used in Samba.")
(define-public tevent
(package
(name "tevent")
- (version "0.9.36")
+ (version "0.9.37")
(source (origin
(method url-fetch)
(uri (string-append "https://www.samba.org/ftp/tevent/tevent-"
version ".tar.gz"))
(sha256
(base32
- "0k1v4vnlzpf7h3p4khaw8a7damrc68g136bf2xzys08nzpinnaxx"))))
+ "1q77vbjic2bb79li2a54ffscnrnwwww55fbpry2kgh7acpnlb0qn"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@@ -341,14 +341,14 @@ many event types, including timers, signals, and the classic file descriptor eve
(define-public ldb
(package
(name "ldb")
- (version "1.4.0")
+ (version "1.3.3")
(source (origin
(method url-fetch)
(uri (string-append "https://www.samba.org/ftp/ldb/ldb-"
version ".tar.gz"))
(sha256
(base32
- "1d591ny4j4s409s2afjv4fn7inqlclr0zlyclw3619rkbaixlzm8"))
+ "14gsrm7dvyjpbpnc60z75j6fz2p187abm2h353lq95kx2bv70c1b"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -361,10 +361,7 @@ many event types, including timers, signals, and the classic file descriptor eve
#t))))
(build-system gnu-build-system)
(arguments
- '(;; LMDB is only supported on 64-bit systems, yet the test suite
- ;; requires it.
- #:tests? (assoc-ref %build-inputs "lmdb")
- #:phases
+ '(#:phases
(modify-phases %standard-phases
(replace 'configure
;; ldb use a custom configuration script that runs waf.
@@ -384,10 +381,7 @@ many event types, including timers, signals, and the classic file descriptor eve
`(("talloc" ,talloc)
("tdb" ,tdb)))
(inputs
- `(,@(if (target-64bit?)
- `(("lmdb" ,lmdb))
- '())
- ("popt" ,popt)
+ `(("popt" ,popt)
("tevent" ,tevent)))
(synopsis "LDAP-like embedded database")
(home-page "https://ldb.samba.org/")
diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm
index e9e74817f2..386092b358 100644
--- a/gnu/packages/search.scm
+++ b/gnu/packages/search.scm
@@ -46,14 +46,15 @@
(define-public xapian
(package
(name "xapian")
- (version "1.4.5")
+ (version "1.4.6")
;; Note: When updating Xapian, remember to update xapian-bindings below.
(source (origin
(method url-fetch)
(uri (string-append "https://oligarchy.co.uk/xapian/" version
"/xapian-core-" version ".tar.xz"))
+ (patches (search-patches "xapian-revert-5489fb2f8.patch"))
(sha256
- (base32 "0axhqrj202hbll9mcx1qdm8gsqj19216w3z02gyjbycxvr9gkdc5"))))
+ (base32 "166qpfq7pvyrj2w2x07v31ypvqg6c2xyvds5sms9h4g2sg0z23hy"))))
(build-system gnu-build-system)
(inputs `(("zlib" ,zlib)
("util-linux" ,util-linux)))
@@ -91,7 +92,7 @@ rich set of boolean query operators.")
"/xapian-bindings-" version ".tar.xz"))
(sha256
(base32
- "0cwx39764w24xd25w271had4w78lnw1dgz36yvlw1g3i19rqcy34"))))
+ "0z5ma66n742241ys037i3k66c6lvsywviqf33vqsf4jb7j03qsbi"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--with-python3")
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index 14e83b5861..4c0bceedf6 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -24,6 +24,7 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix licenses)
+ #:use-module (gnu packages)
#:use-module (gnu packages golang))
(define-public syncthing
@@ -35,6 +36,7 @@
(uri (string-append "https://github.com/syncthing/syncthing"
"/releases/download/v" version
"/syncthing-source-v" version ".tar.gz"))
+ (patches (search-patches "syncthing-fix-crash.patch"))
(sha256
(base32
"0bxkm5jlj6l4gai23bg0y31brr80r9qllh1rdg29pahjn0c2b4ml"))
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 5dec41428b..355683df8a 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -338,7 +338,7 @@ as existing hashing techniques, with provably negligible risk of collisions.")
(define-public oniguruma
(package
(name "oniguruma")
- (version "5.9.6")
+ (version "6.8.2")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/kkos/"
@@ -346,7 +346,7 @@ as existing hashing techniques, with provably negligible risk of collisions.")
"/onig-" version ".tar.gz"))
(sha256
(base32
- "19s79vsclqn170mw0ajwv7j37qsbn4f1yjz3yavnhvva6c820r6m"))))
+ "00s9gjgb3srn5sbmx4x9bssn52mi04d868ghizssdhjlddgxmsmd"))))
(build-system gnu-build-system)
(home-page "https://github.com/kkos/oniguruma")
(synopsis "Regular expression library")
@@ -355,6 +355,20 @@ characteristic of this library is that different character encoding for every
regular expression object can be specified.")
(license license:bsd-2)))
+;; PHP < 7.3.0 requires this old version. Remove once no longer needed.
+(define-public oniguruma-5
+ (package
+ (inherit oniguruma)
+ (version "5.9.6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/kkos/"
+ "oniguruma/releases/download/v" version
+ "/onig-" version ".tar.gz"))
+ (sha256
+ (base32
+ "19s79vsclqn170mw0ajwv7j37qsbn4f1yjz3yavnhvva6c820r6m"))))))
+
(define-public antiword
(package
(name "antiword")
diff --git a/gnu/packages/upnp.scm b/gnu/packages/upnp.scm
index 475e1750a8..24b17111e9 100644
--- a/gnu/packages/upnp.scm
+++ b/gnu/packages/upnp.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Theodoros Foradis <theodoros@foradis.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -22,7 +23,9 @@
#:use-module (gnu packages)
#:use-module (gnu packages python)
#:use-module (guix build-system gnu)
+ #:use-module (guix utils)
#:use-module (guix download)
+ #:use-module (guix git-download)
#:use-module (guix licenses)
#:use-module (guix packages))
@@ -76,6 +79,49 @@ over IRC, instant messaging, network games, and most server software.")
(license
(x11-style "file://LICENSE" "See 'LICENSE' file in the distribution"))))
+(define-public monero-miniupnpc
+ ;; This package is the bundled version of miniupnpc used with monero.
+ ;; Monero-project has been maintaining its own version of the package since
+ ;; release 0.12.2.0. It includes security fixes not included in upstream
+ ;; releases.
+ (let ((revision "0")
+ (commit "6a63f9954959119568fbc4af57d7b491b9428d87"))
+ (package
+ (inherit miniupnpc)
+ (name "miniupnpc-monero")
+ (version (string-append "2.1-monero-0.12.3.0-" revision "."
+ (string-take commit 7)))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/monero-project/miniupnp/")
+ (commit commit)))
+ (sha256
+ (base32
+ "0s67zcz978iapjlq30yy9dl8qda9xhrl3jdi5f99cnbglh5gy16a"))
+ (file-name (string-append name "-" version "-checkout"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Delete miniupnp subprojects except for miniupnpc.
+ (for-each
+ delete-file-recursively
+ '("minissdpd" "miniupnpc-async" "miniupnpc-libevent"
+ "miniupnpd" ))
+ #t))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments miniupnpc)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-before 'build 'change-directory
+ (lambda _
+ (chdir "miniupnpc")
+ #t))
+ (add-after 'change-directory 'chmod-header-file
+ (lambda _
+ (chmod "miniupnpc.h" #o644)
+ #t)))))))))
+
(define-public libupnp
(package
(name "libupnp")
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 737844d8fa..1cc0d5dfde 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -2410,15 +2410,16 @@ of modern, widely supported codecs.")
(define-public openh264
(package
(name "openh264")
- (version "1.7.0")
+ (version "1.8.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/cisco/"
- name "/archive/v" version ".tar.gz"))
+ name "/releases/download/v"
+ version "/Source.Code.tar.gz.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0gv571bqkxk7ic64dmavs1q8nr7p59mcf4ibqp4lc070gn6w61ww"))))
+ "0niha3wnn1jsndvz9vfwy2wyql8mp9j6v75vjsipy0idwan5yzgf"))))
(build-system gnu-build-system)
(native-inputs
`(("nasm" ,nasm)
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 2877ff2ac1..2a8958d37f 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -22,6 +22,7 @@
;;; Copyright © 2017 Marek Benc <dusxmt@gmx.com>
;;; Copyright © 2017 Mike Gerwitz <mtg@gnu.org>
;;; Copyright © 2018 Thomas Sigurdsen <tonton@riseup.net>
+;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Pierre Neidhardt <ambrevar@gmail.com>
;;;
;;; This file is part of GNU Guix.
@@ -316,7 +317,7 @@ rasterisation.")
(define-public libdrm
(package
(name "libdrm")
- (version "2.4.91")
+ (version "2.4.92")
(source
(origin
(method url-fetch)
@@ -326,7 +327,7 @@ rasterisation.")
".tar.bz2"))
(sha256
(base32
- "0068dn47c478vm1lyyhy02gilrpsma0xmcblhvs0dzqyrk80wjk3"))
+ "1yirzx8hmlvv6r0l7lb3zxmgy5la2mri9al0k16xqfg19pdqzr79"))
(patches (search-patches "libdrm-symbol-check.patch"))))
(build-system gnu-build-system)
(arguments
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 895db8ea13..3e8f9fe4a7 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -1026,7 +1026,7 @@ of new capabilities and controls for text keyboards.")
(define-public libdmx
(package
(name "libdmx")
- (version "1.1.3")
+ (version "1.1.4")
(source
(origin
(method url-fetch)
@@ -1036,7 +1036,7 @@ of new capabilities and controls for text keyboards.")
".tar.bz2"))
(sha256
(base32
- "00djlxas38kbsrglcmwmxfbmxjdchlbj95pqwjvdg8jn5rns6zf9"))))
+ "0hvjfhrcym770cr0zpqajdy3cda30aiwbjzv16iafkqkbl090gr5"))))
(build-system gnu-build-system)
(inputs
`(("xorgproto" ,xorgproto)
@@ -2447,7 +2447,7 @@ including most mice, keyboards, tablets and touchscreens.")
(define-public xf86-input-libinput
(package
(name "xf86-input-libinput")
- (version "0.27.1")
+ (version "0.28.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -2455,7 +2455,7 @@ including most mice, keyboards, tablets and touchscreens.")
name "-" version ".tar.bz2"))
(sha256
(base32
- "1riflw6dc8fp5d74i7zfgsss0zz3z3lsj6zn2lzjm5kgmp2qvbfl"))))
+ "189h8vl0005yizwrs4d0sng6j8lwkd3xi1zwqg8qavn2bw34v691"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags
@@ -2961,7 +2961,7 @@ It supports a variety of Intel graphics chipsets.")
(define-public xf86-video-mach64
(package
(name "xf86-video-mach64")
- (version "6.9.5")
+ (version "6.9.6")
(source
(origin
(method url-fetch)
@@ -2971,7 +2971,7 @@ It supports a variety of Intel graphics chipsets.")
".tar.bz2"))
(sha256
(base32
- "07xlf5nsjm0x18ij5gyy4lf8hwpl10i8chi3skpqjh84drdri61y"))
+ "171wg8r6py1l138s58rlapin3rlpwsg9spmvhc7l68mm3g3hf1vs"))
(patches (search-patches "xf86-video-mach64-glibc-2.20.patch"))))
(build-system gnu-build-system)
(inputs `(("mesa" ,mesa)
@@ -3176,33 +3176,47 @@ This driver is intended for the spice qxl virtio device.")
(home-page "http://www.spice-space.org")
(license license:x11)))
-
(define-public xf86-video-r128
- (package
- (name "xf86-video-r128")
- (version "6.10.2")
- (source
- (origin
- (method url-fetch)
- (uri (string-append
- "mirror://xorg/individual/driver/xf86-video-r128-"
- version
- ".tar.bz2"))
- (sha256
- (base32
- "1pkpka5m4cd6iy0f8iqnmg6xci14nb6887ilvxzn3xrsgx8j3nl4"))))
- (build-system gnu-build-system)
- (inputs `(("mesa" ,mesa)
- ("xorgproto" ,xorgproto)
- ("xorg-server" ,xorg-server)))
- (native-inputs `(("pkg-config" ,pkg-config)))
- (home-page "https://www.x.org/wiki/")
- (synopsis "ATI Rage 128 video driver for X server")
- (description
- "xf86-video-r128 is a video driver for the Xorg X server.
+ ;; We need a newer version than 6.10.2 to build against the latest xorg-server.
+ ;; Remove this binding and the bootstrap inputs when >6.10.2 is released.
+ (let ((commit "c4c878d2ccb75fa75afe46e0e50ee9975c5c57fc")
+ (revision "0"))
+ (package
+ (name "xf86-video-r128")
+ (version (git-version "6.10.2" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url (string-append "https://anongit.freedesktop.org/git/xorg"
+ "/driver/" name ".git"))
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "01pff30zz4zxjhw28h8bn9x2kq7c6iswgn19b72wnfgl0arxb63j"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (add-before 'bootstrap 'prevent-configure
+ (lambda _
+ ;; Prevent autogen from calling "./configure" as part of
+ ;; the bootstrap step, which fails due to wrong shebang.
+ (setenv "NOCONFIGURE" "1")
+ #t)))))
+ (inputs `(("mesa" ,mesa)
+ ("xorgproto" ,xorgproto)
+ ("xorg-server" ,xorg-server)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)))
+ (home-page "https://www.x.org/wiki/")
+ (synopsis "ATI Rage 128 video driver for X server")
+ (description
+ "xf86-video-r128 is a video driver for the Xorg X server.
This driver is intended for ATI Rage 128 based cards.")
- (license license:x11)))
-
+ (license license:x11))))
(define-public xf86-video-savage
(package
@@ -3215,6 +3229,7 @@ This driver is intended for ATI Rage 128 based cards.")
"mirror://xorg/individual/driver/xf86-video-savage-"
version
".tar.bz2"))
+ (patches (search-patches "xf86-video-savage-xorg-compat.patch"))
(sha256
(base32
"11pcrsdpdrwk0mrgv83s5nsx8a9i4lhmivnal3fjbrvi3zdw94rc"))))
@@ -3267,6 +3282,7 @@ Xorg X server.")
"mirror://xorg/individual/driver/xf86-video-sis-"
version
".tar.bz2"))
+ (patches (search-patches "xf86-video-sis-xorg-compat.patch"))
(sha256
(base32
"03f1abjjf68y8y1iz768rn95va9d33wmbwfbsqrgl6k0gi0bf9jj"))))
@@ -3723,7 +3739,7 @@ alternative implementations like XRandR or TwinView.")
(define xkbcomp-intermediate ; used as input for xkeyboard-config
(package
(name "xkbcomp-intermediate")
- (version "1.4.1")
+ (version "1.4.2")
(source
(origin
(method url-fetch)
@@ -3733,7 +3749,7 @@ alternative implementations like XRandR or TwinView.")
".tar.bz2"))
(sha256
(base32
- "0djp7bb0ch2ddwmc1bkg4fddxdvamiiz375x0r0ni5dcb37w93bl"))))
+ "0944rrkkf0dxp07vhh9yr4prslxhqyw63qmbjirbv1bypswvrn3d"))))
(build-system gnu-build-system)
(inputs
`(("xorgproto" ,xorgproto)
@@ -5072,7 +5088,7 @@ over Xlib, including:
(define-public xorg-server
(package
(name "xorg-server")
- (version "1.19.6")
+ (version "1.20.0")
(source
(origin
(method url-fetch)
@@ -5081,7 +5097,7 @@ over Xlib, including:
name "-" version ".tar.bz2"))
(sha256
(base32
- "15y13ihgkggmly5s07vzvpn35gzx1w0hrkbnlcvcy05h3lpm0cm7"))
+ "1rnka3sp8yg2bir0bjjhwn33jikj8qd8ckqcxrs94w05bwc7v5lx"))
(patches
(list
;; See:
diff --git a/gnu/services/herd.scm b/gnu/services/herd.scm
index d882c232cf..8c96b70731 100644
--- a/gnu/services/herd.scm
+++ b/gnu/services/herd.scm
@@ -45,6 +45,7 @@
live-service-requirement
live-service-running
+ with-shepherd-action
current-services
unload-services
unload-service
@@ -168,6 +169,8 @@ return #f."
(define-syntax-rule (with-shepherd-action service (action args ...)
result body ...)
+ "Invoke ACTION on SERVICE with the given ARGS, and evaluate BODY with RESULT
+bound to the action's result."
(invoke-action service action (list args ...)
(lambda (result) body ...)))
diff --git a/gnu/services/mcron.scm b/gnu/services/mcron.scm
index 5bee02a587..5757bf8cf6 100644
--- a/gnu/services/mcron.scm
+++ b/gnu/services/mcron.scm
@@ -60,29 +60,71 @@
(define (job-file job)
(scheme-file "mcron-job" job))
+(define (shepherd-schedule-action mcron files)
+ "Return a Shepherd action that runs MCRON with '--schedule' for the given
+files."
+ (shepherd-action
+ (name 'schedule)
+ (documentation
+ "Display jobs that are going to be scheduled.")
+ (procedure
+ #~(lambda* (_ #:optional (n "5"))
+ ;; XXX: This is a global side effect.
+ (setenv "GUILE_AUTO_COMPILE" "0")
+
+ ;; Run 'mcron' in a pipe so we can explicitly redirect its output to
+ ;; 'current-output-port', which at this stage is bound to the client
+ ;; connection.
+ (let ((pipe (open-pipe* OPEN_READ
+ #$(file-append mcron "/bin/mcron")
+ (string-append "--schedule=" n)
+ #$@files)))
+ (let loop ()
+ (match (read-line pipe 'concat)
+ ((? eof-object?)
+ (catch 'system-error
+ (lambda ()
+ (zero? (close-pipe pipe)))
+ (lambda args
+ ;; There's with race between the SIGCHLD handler, which
+ ;; could call 'waitpid' before 'close-pipe' above does. If
+ ;; we get ECHILD, that means we lost the race, but that's
+ ;; fine.
+ (or (= ECHILD (system-error-errno args))
+ (apply throw args)))))
+ (line
+ (display line)
+ (loop)))))))))
+
(define mcron-shepherd-services
(match-lambda
(($ <mcron-configuration> mcron ()) ;nothing to do!
'())
(($ <mcron-configuration> mcron jobs)
- (list (shepherd-service
- (provision '(mcron))
- (requirement '(user-processes))
- (modules `((srfi srfi-1)
- (srfi srfi-26)
- ,@%default-modules))
- (start #~(make-forkexec-constructor
- (list (string-append #$mcron "/bin/mcron")
- #$@(map job-file jobs))
+ (let ((files (map job-file jobs)))
+ (list (shepherd-service
+ (provision '(mcron))
+ (requirement '(user-processes))
+ (modules `((srfi srfi-1)
+ (srfi srfi-26)
+ (ice-9 popen) ;for the 'schedule' action
+ (ice-9 rdelim)
+ (ice-9 match)
+ ,@%default-modules))
+ (start #~(make-forkexec-constructor
+ (list (string-append #$mcron "/bin/mcron") #$@files)
+
+ ;; Disable auto-compilation of the job files and set a
+ ;; sane value for 'PATH'.
+ #:environment-variables
+ (cons* "GUILE_AUTO_COMPILE=0"
+ "PATH=/run/current-system/profile/bin"
+ (remove (cut string-prefix? "PATH=" <>)
+ (environ)))))
+ (stop #~(make-kill-destructor))
- ;; Disable auto-compilation of the job files and set a
- ;; sane value for 'PATH'.
- #:environment-variables
- (cons* "GUILE_AUTO_COMPILE=0"
- "PATH=/run/current-system/profile/bin"
- (remove (cut string-prefix? "PATH=" <>)
- (environ)))))
- (stop #~(make-kill-destructor)))))))
+ (actions
+ (list (shepherd-schedule-action mcron files)))))))))
(define mcron-service-type
(service-type (name 'mcron)
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm
index 6ca53faa3d..4cd2249841 100644
--- a/gnu/services/shepherd.scm
+++ b/gnu/services/shepherd.scm
@@ -49,6 +49,12 @@
shepherd-service-auto-start?
shepherd-service-modules
+ shepherd-action
+ shepherd-action?
+ shepherd-action-name
+ shepherd-action-documentation
+ shepherd-action-procedure
+
%default-modules
shepherd-service-file
@@ -146,11 +152,20 @@ DEFAULT is given, use it as the service's default value."
(start shepherd-service-start) ;g-expression (procedure)
(stop shepherd-service-stop ;g-expression (procedure)
(default #~(const #f)))
+ (actions shepherd-service-actions ;list of <shepherd-action>
+ (default '()))
(auto-start? shepherd-service-auto-start? ;Boolean
(default #t))
(modules shepherd-service-modules ;list of module names
(default %default-modules)))
+(define-record-type* <shepherd-action>
+ shepherd-action make-shepherd-action
+ shepherd-action?
+ (name shepherd-action-name) ;symbol
+ (procedure shepherd-action-procedure) ;gexp
+ (documentation shepherd-action-documentation)) ;string
+
(define (shepherd-service-canonical-name service)
"Return the 'canonical name' of SERVICE."
(first (shepherd-service-provision service)))
@@ -223,7 +238,13 @@ stored."
#:requires '#$(shepherd-service-requirement service)
#:respawn? '#$(shepherd-service-respawn? service)
#:start #$(shepherd-service-start service)
- #:stop #$(shepherd-service-stop service))))))
+ #:stop #$(shepherd-service-stop service)
+ #:actions
+ (make-actions
+ #$@(map (match-lambda
+ (($ <shepherd-action> name proc doc)
+ #~(#$name #$doc #$proc)))
+ (shepherd-service-actions service))))))))
(define (shepherd-configuration-file services)
"Return the shepherd configuration file for SERVICES."
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index bf71e7f26a..705ed84d06 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -37,6 +37,7 @@
#:export (libvirt-configuration
libvirt-service-type
+ virtlog-configuration
virtlog-service-type
%qemu-platforms
diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm
index 0efb4a6e55..f27064af85 100644
--- a/gnu/tests/base.scm
+++ b/gnu/tests/base.scm
@@ -632,6 +632,13 @@ non-ASCII names from /tmp.")
(wait-for-file "/root/witness-touch" marionette
#:read '(@ (ice-9 rdelim) read-string)))
+ ;; Make sure the 'schedule' action is accepted.
+ (test-equal "schedule action"
+ '(#t) ;one value, #t
+ (marionette-eval '(with-shepherd-action 'mcron ('schedule) result
+ result)
+ marionette))
+
(test-end)
(exit (= (test-runner-fail-count (test-runner-current)) 0)))))
diff --git a/guix/build-system/meson.scm b/guix/build-system/meson.scm
index 529a2b8b0f..e894e1472d 100644
--- a/guix/build-system/meson.scm
+++ b/guix/build-system/meson.scm
@@ -148,8 +148,7 @@ has a 'meson.build' file."
#:search-paths ',(map search-path-specification->sexp
search-paths)
#:phases
- (if (string-prefix? "arm" ,(or (%current-target-system)
- (%current-system)))
+ (if (string-prefix? "arm" ,system)
(modify-phases build-phases (delete 'fix-runpath))
build-phases)
#:configure-flags ,configure-flags
diff --git a/guix/build/ant-build-system.scm b/guix/build/ant-build-system.scm
index d081a2b313..d79b4d503b 100644
--- a/guix/build/ant-build-system.scm
+++ b/guix/build/ant-build-system.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -68,14 +68,11 @@
(target (@ (name "manifest"))
(mkdir (@ (dir "${manifest.dir}")))
- (echo (@ (file "${manifest.file}")
- (message ,(string-append
- (if main-class
- (string-append
- "Main-Class: " main-class
- "${line.separator}")
- "")
- "")))))
+ (manifest (@ (file "${manifest.file}"))
+ ,(if main-class
+ `(attribute (@ (name "Main-Class")
+ (value ,main-class)))
+ "")))
(target (@ (name "compile"))
(mkdir (@ (dir "${classes.dir}")))
@@ -150,7 +147,8 @@ to the default GNU unpack strategy."
(begin
(mkdir "src")
(with-directory-excursion "src"
- (zero? (system* "jar" "-xf" source))))
+ (invoke "jar" "-xf" source))
+ #t)
;; Use GNU unpack strategy for things that aren't jar archives.
((assq-ref gnu:%standard-phases 'unpack) #:source source)))
@@ -171,7 +169,7 @@ to the default GNU unpack strategy."
(define* (build #:key (make-flags '()) (build-target "jar")
#:allow-other-keys)
- (zero? (apply system* `("ant" ,build-target ,@make-flags))))
+ (apply invoke `("ant" ,build-target ,@make-flags)))
(define* (generate-jar-indices #:key outputs #:allow-other-keys)
"Generate file \"META-INF/INDEX.LIST\". This file does not use word wraps
@@ -181,10 +179,11 @@ grafting works - and so that the garbage collector doesn't collect
dependencies of this jar file."
(define (generate-index jar)
(invoke "jar" "-i" jar))
- (every (match-lambda
- ((output . directory)
- (every generate-index (find-files directory "\\.jar$"))))
- outputs))
+ (for-each (match-lambda
+ ((output . directory)
+ (for-each generate-index (find-files directory "\\.jar$"))))
+ outputs)
+ #t)
(define* (strip-jar-timestamps #:key outputs
#:allow-other-keys)
@@ -194,50 +193,49 @@ repack them. This is necessary to ensure that archives are reproducible."
(format #t "repacking ~a\n" jar)
(let* ((dir (mkdtemp! "jar-contents.XXXXXX"))
(manifest (string-append dir "/META-INF/MANIFEST.MF")))
- (and (with-directory-excursion dir
- (zero? (system* "jar" "xf" jar)))
- (delete-file jar)
- ;; XXX: copied from (gnu build install)
- (for-each (lambda (file)
- (let ((s (lstat file)))
- (unless (eq? (stat:type s) 'symlink)
- (utime file 0 0 0 0))))
- (find-files dir #:directories? #t))
+ (with-directory-excursion dir
+ (invoke "jar" "xf" jar))
+ (delete-file jar)
+ ;; XXX: copied from (gnu build install)
+ (for-each (lambda (file)
+ (let ((s (lstat file)))
+ (unless (eq? (stat:type s) 'symlink)
+ (utime file 0 0 0 0))))
+ (find-files dir #:directories? #t))
- ;; The jar tool will always set the timestamp on the manifest file
- ;; and the containing directory to the current time, even when we
- ;; reuse an existing manifest file. To avoid this we use "zip"
- ;; instead of "jar". It is important that the manifest appears
- ;; first.
- (with-directory-excursion dir
- (let* ((files (find-files "." ".*" #:directories? #t))
- ;; To ensure that the reference scanner can detect all
- ;; store references in the jars we disable compression
- ;; with the "-0" option.
- (command (if (file-exists? manifest)
- `("zip" "-0" "-X" ,jar ,manifest ,@files)
- `("zip" "-0" "-X" ,jar ,@files))))
- (unless (zero? (apply system* command))
- (error "'zip' failed"))))
- (utime jar 0 0)
- #t)))
+ ;; The jar tool will always set the timestamp on the manifest file
+ ;; and the containing directory to the current time, even when we
+ ;; reuse an existing manifest file. To avoid this we use "zip"
+ ;; instead of "jar". It is important that the manifest appears
+ ;; first.
+ (with-directory-excursion dir
+ (let* ((files (find-files "." ".*" #:directories? #t))
+ ;; To ensure that the reference scanner can detect all
+ ;; store references in the jars we disable compression
+ ;; with the "-0" option.
+ (command (if (file-exists? manifest)
+ `("zip" "-0" "-X" ,jar ,manifest ,@files)
+ `("zip" "-0" "-X" ,jar ,@files))))
+ (apply invoke command)))
+ (utime jar 0 0)
+ #t))
- (every (match-lambda
- ((output . directory)
- (every repack-archive (find-files directory "\\.jar$"))))
- outputs))
+ (for-each (match-lambda
+ ((output . directory)
+ (for-each repack-archive (find-files directory "\\.jar$"))))
+ outputs)
+ #t)
(define* (check #:key target (make-flags '()) (tests? (not target))
(test-target "check")
#:allow-other-keys)
(if tests?
- (zero? (apply system* `("ant" ,test-target ,@make-flags)))
- (begin
- (format #t "test suite not run~%")
- #t)))
+ (apply invoke `("ant" ,test-target ,@make-flags))
+ (format #t "test suite not run~%"))
+ #t)
(define* (install #:key (make-flags '()) #:allow-other-keys)
- (zero? (apply system* `("ant" "install" ,@make-flags))))
+ (apply invoke `("ant" "install" ,@make-flags)))
(define %standard-phases
(modify-phases gnu:%standard-phases
diff --git a/guix/build/java-utils.scm b/guix/build/java-utils.scm
index 402d377bf8..128be1edeb 100644
--- a/guix/build/java-utils.scm
+++ b/guix/build/java-utils.scm
@@ -31,7 +31,7 @@
(define* (ant-build-javadoc #:key (target "javadoc") (make-flags '())
#:allow-other-keys)
- (zero? (apply system* `("ant" ,target ,@make-flags))))
+ (apply invoke `("ant" ,target ,@make-flags)))
(define* (install-jars jar-directory)
"Install jar files from JAR-DIRECTORY to the default target directory. This
diff --git a/guix/build/meson-build-system.scm b/guix/build/meson-build-system.scm
index e7690a4c37..e4aae8212f 100644
--- a/guix/build/meson-build-system.scm
+++ b/guix/build/meson-build-system.scm
@@ -58,15 +58,14 @@
(mkdir build-dir)
(chdir build-dir)
- (zero? (apply system* "meson" args))))
+ (apply invoke "meson" args)))
(define* (build #:key parallel-build?
#:allow-other-keys)
"Build a given meson package."
- (zero? (apply system* "ninja"
- (if parallel-build?
- `("-j" ,(number->string (parallel-job-count)))
- '("-j" "1")))))
+ (invoke "ninja" "-j" (if parallel-build?
+ (number->string (parallel-job-count))
+ "1")))
(define* (check #:key test-target parallel-tests? tests?
#:allow-other-keys)
@@ -75,13 +74,13 @@
(number->string (parallel-job-count))
"1"))
(if tests?
- (zero? (system* "ninja" test-target))
+ (invoke "ninja" test-target)
(begin
(format #t "test suite not run~%")
#t)))
(define* (install #:rest args)
- (zero? (system* "ninja" "install")))
+ (invoke "ninja" "install"))
(define* (fix-runpath #:key (elf-directories '("lib" "lib64" "libexec"
"bin" "sbin"))
@@ -135,7 +134,7 @@ for example libraries only needed for the tests."
(find-files dir elf-pred))
existing-elf-dirs))))
(for-each (lambda (elf-file)
- (system* "patchelf" "--shrink-rpath" elf-file)
+ (invoke "patchelf" "--shrink-rpath" elf-file)
(handle-file elf-file elf-list))
elf-list)))))
(for-each handle-output outputs)
diff --git a/guix/gexp.scm b/guix/gexp.scm
index 153b29bd42..cc3613f6f6 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2018 Jan Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -23,6 +24,7 @@
#:use-module (guix derivations)
#:use-module (guix grafts)
#:use-module (guix utils)
+ #:use-module (rnrs bytevectors)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
#:use-module (srfi srfi-9 gnu)
@@ -334,7 +336,7 @@ appears."
(%plain-file name content references)
plain-file?
(name plain-file-name) ;string
- (content plain-file-content) ;string
+ (content plain-file-content) ;string or bytevector
(references plain-file-references)) ;list (currently unused)
(define (plain-file name content)
@@ -349,8 +351,10 @@ This is the declarative counterpart of 'text-file'."
(define-gexp-compiler (plain-file-compiler (file <plain-file>) system target)
;; "Compile" FILE by adding it to the store.
(match file
- (($ <plain-file> name content references)
- (text-file name content references))))
+ (($ <plain-file> name (and (? string?) content) references)
+ (text-file name content references))
+ (($ <plain-file> name (and (? bytevector?) content) references)
+ (binary-file name content references))))
(define-record-type <computed-file>
(%computed-file name gexp guile options)
diff --git a/guix/git.scm b/guix/git.scm
index 9e89cc0062..193e2df111 100644
--- a/guix/git.scm
+++ b/guix/git.scm
@@ -114,7 +114,8 @@ OID (roughly the commit hash) corresponding to REF."
#:key
(ref '(branch . "origin/master"))
(cache-directory
- (%repository-cache-directory)))
+ (url-cache-directory
+ url (%repository-cache-directory))))
"Update the cached checkout of URL to REF in CACHE-DIRECTORY. Return two
values: the cache directory name, and the SHA1 commit (a string) corresponding
to REF.
@@ -122,11 +123,10 @@ to REF.
REF is pair whose key is [branch | commit | tag] and value the associated
data, respectively [<branch name> | <sha1> | <tag name>]."
(with-libgit2
- (let* ((cache-dir (url-cache-directory url cache-directory))
- (cache-exists? (openable-repository? cache-dir))
+ (let* ((cache-exists? (openable-repository? cache-directory))
(repository (if cache-exists?
- (repository-open cache-dir)
- (clone* url cache-dir))))
+ (repository-open cache-directory)
+ (clone* url cache-directory))))
;; Only fetch remote if it has not been cloned just before.
(when cache-exists?
(remote-fetch (remote-lookup repository "origin")))
@@ -138,7 +138,7 @@ data, respectively [<branch name> | <sha1> | <tag name>]."
'repository-close!)
(repository-close! repository))
- (values cache-dir (oid->string oid))))))
+ (values cache-directory (oid->string oid))))))
(define* (latest-repository-commit store url
#:key
@@ -157,12 +157,14 @@ Git repositories are kept in the cache directory specified by
(and (string=? (basename file) ".git")
(eq? 'directory (stat:type stat))))
- (let*-values (((checkout commit)
- (update-cached-checkout url
- #:ref ref
- #:cache-directory cache-directory))
- ((name)
- (url+commit->name url commit)))
+ (let*-values
+ (((checkout commit)
+ (update-cached-checkout url
+ #:ref ref
+ #:cache-directory
+ (url-cache-directory url cache-directory)))
+ ((name)
+ (url+commit->name url commit)))
(values (add-to-store store name #t "sha256" checkout
#:select? (negate dot-git?))
commit)))
diff --git a/guix/gnu-maintenance.scm b/guix/gnu-maintenance.scm
index c2a7a33b6a..3634f4bb27 100644
--- a/guix/gnu-maintenance.scm
+++ b/guix/gnu-maintenance.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;;
;;; This file is part of GNU Guix.
@@ -82,13 +82,14 @@
(define %package-list-url
(string->uri
- (string-append %gnumaint-base-url "gnupackages.txt")))
+ (string-append %gnumaint-base-url "rec/gnupackages.rec")))
(define %package-description-url
;; This file contains package descriptions in recutils format.
- ;; See <https://lists.gnu.org/archive/html/guix-devel/2013-10/msg00071.html>.
+ ;; See <https://lists.gnu.org/archive/html/guix-devel/2013-10/msg00071.html>
+ ;; and <https://lists.gnu.org/archive/html/guix-devel/2018-06/msg00362.html>.
(string->uri
- (string-append %gnumaint-base-url "pkgblurbs.txt")))
+ (string-append %gnumaint-base-url "rec/pkgblurbs.rec")))
(define-record-type* <gnu-package-descriptor>
gnu-package-descriptor
@@ -121,7 +122,12 @@ to fetch the list of GNU packages over HTTP."
(if (null? alist)
(reverse result)
(loop (recutils->alist port)
- (cons alist result)))))
+
+ ;; Ignore things like "%rec" (info "(recutils) Record
+ ;; Descriptors").
+ (if (assoc-ref alist "package")
+ (cons alist result)
+ result)))))
(define official-description
(let ((db (read-records (fetch %package-description-url #:text? #t))))
@@ -148,12 +154,12 @@ to fetch the list of GNU packages over HTTP."
(alist->record `(("description" . ,(official-description name))
,@alist)
make-gnu-package-descriptor
- (list "package" "mundane-name" "copyright-holder"
+ (list "package" "mundane_name" "copyright_holder"
"savannah" "fsd" "language" "logo"
- "doc-category" "doc-summary" "description"
- "doc-url"
- "download-url")
- '("doc-url" "language"))))
+ "doc_category" "doc_summary" "description"
+ "doc_url"
+ "download_url")
+ '("doc_url" "language"))))
(let* ((port (fetch %package-list-url #:text? #t))
(lst (read-records port)))
(close-port port)
diff --git a/guix/import/cabal.scm b/guix/import/cabal.scm
index 09130e4498..4b2bfd4a25 100644
--- a/guix/import/cabal.scm
+++ b/guix/import/cabal.scm
@@ -139,8 +139,8 @@ to the stack."
"Generate a parser for Cabal files."
(lalr-parser
;; --- token definitions
- (CCURLY VCCURLY OPAREN CPAREN TEST ID VERSION RELATION TRUE FALSE
- (right: IF FLAG EXEC TEST-SUITE SOURCE-REPO BENCHMARK LIB OCURLY)
+ (CCURLY VCCURLY OPAREN CPAREN TEST ID VERSION RELATION TRUE FALSE -ANY -NONE
+ (right: IF FLAG EXEC TEST-SUITE CUSTOM-SETUP SOURCE-REPO BENCHMARK LIB OCURLY)
(left: OR)
(left: PROPERTY AND)
(right: ELSE NOT))
@@ -150,6 +150,7 @@ to the stack."
(sections source-repo) : (append $1 (list $2))
(sections executables) : (append $1 $2)
(sections test-suites) : (append $1 $2)
+ (sections custom-setup) : (append $1 $2)
(sections benchmarks) : (append $1 $2)
(sections lib-sec) : (append $1 (list $2))
() : '())
@@ -172,6 +173,7 @@ to the stack."
(ts-sec) : (list $1))
(ts-sec (TEST-SUITE OCURLY exprs CCURLY) : `(section test-suite ,$1 ,$3)
(TEST-SUITE open exprs close) : `(section test-suite ,$1 ,$3))
+ (custom-setup (CUSTOM-SETUP exprs) : (list `(section custom-setup ,$1 ,$2)))
(benchmarks (benchmarks bm-sec) : (append $1 (list $2))
(bm-sec) : (list $1))
(bm-sec (BENCHMARK OCURLY exprs CCURLY) : `(section benchmark ,$1 ,$3)
@@ -211,6 +213,10 @@ to the stack."
(FALSE) : 'false
(TEST OPAREN ID RELATION VERSION CPAREN)
: `(,$1 ,(string-append $3 " " $4 " " $5))
+ (TEST OPAREN ID -ANY CPAREN)
+ : `(,$1 ,(string-append $3 " -any"))
+ (TEST OPAREN ID -NONE CPAREN)
+ : `(,$1 ,(string-append $3 " -none"))
(TEST OPAREN ID RELATION VERSION AND RELATION VERSION CPAREN)
: `(and (,$1 ,(string-append $3 " " $4 " " $5))
(,$1 ,(string-append $3 " " $7 " " $8)))
@@ -349,6 +355,9 @@ matching a string against the created regexp."
(define is-test-suite (make-rx-matcher "^test-suite +([a-z0-9_-]+)"
regexp/icase))
+(define is-custom-setup (make-rx-matcher "^(custom-setup)"
+ regexp/icase))
+
(define is-benchmark (make-rx-matcher "^benchmark +([a-z0-9_-]+)"
regexp/icase))
@@ -362,13 +371,17 @@ matching a string against the created regexp."
(define (is-false s) (string-ci=? s "false"))
+(define (is-any s) (string-ci=? s "-any"))
+
+(define (is-none s) (string-ci=? s "-none"))
+
(define (is-and s) (string=? s "&&"))
(define (is-or s) (string=? s "||"))
(define (is-id s port)
(let ((cabal-reserved-words
- '("if" "else" "library" "flag" "executable" "test-suite"
+ '("if" "else" "library" "flag" "executable" "test-suite" "custom-setup"
"source-repository" "benchmark"))
(spaces (read-while (cut char-set-contains? char-set:blank <>) port))
(c (peek-char port)))
@@ -392,8 +405,11 @@ matching a string against the created regexp."
(define (lex-version loc port)
(make-lexical-token 'VERSION loc
- (read-while char-numeric? port
- (cut char=? #\. <>) char-numeric?)))
+ (read-while (lambda (x)
+ (or (char-numeric? x)
+ (char=? x #\*)
+ (char=? x #\.)))
+ port)))
(define* (read-while is? port #:optional
(is-if-followed-by? (lambda (c) #f))
@@ -435,6 +451,8 @@ string with the read characters."
(define (lex-test-suite ts-rx-res loc) (lex-rx-res ts-rx-res 'TEST-SUITE loc))
+(define (lex-custom-setup ts-rx-res loc) (lex-rx-res ts-rx-res 'CUSTOM-SETUP loc))
+
(define (lex-benchmark bm-rx-res loc) (lex-rx-res bm-rx-res 'BENCHMARK loc))
(define (lex-lib loc) (make-lexical-token 'LIB loc #f))
@@ -447,6 +465,10 @@ string with the read characters."
(define (lex-false loc) (make-lexical-token 'FALSE loc #f))
+(define (lex-any loc) (make-lexical-token '-ANY loc #f))
+
+(define (lex-none loc) (make-lexical-token '-NONE loc #f))
+
(define (lex-and loc) (make-lexical-token 'AND loc #f))
(define (lex-or loc) (make-lexical-token 'OR loc #f))
@@ -514,6 +536,8 @@ LOC is the current port location."
((is-test w port) (lex-test w loc))
((is-true w) (lex-true loc))
((is-false w) (lex-false loc))
+ ((is-any w) (lex-any loc))
+ ((is-none w) (lex-none loc))
((is-and w) (lex-and loc))
((is-or w) (lex-or loc))
((is-id w port) (lex-id w loc))
@@ -529,6 +553,7 @@ the current port location."
((is-src-repo s) => (cut lex-src-repo <> loc))
((is-exec s) => (cut lex-exec <> loc))
((is-test-suite s) => (cut lex-test-suite <> loc))
+ ((is-custom-setup s) => (cut lex-custom-setup <> loc))
((is-benchmark s) => (cut lex-benchmark <> loc))
((is-lib s) (lex-lib loc))
((is-else s) (lex-else loc))
@@ -658,6 +683,12 @@ If #f use the function 'port-filename' to obtain it."
(name cabal-test-suite-name)
(dependencies cabal-test-suite-dependencies)) ; list of <cabal-dependency>
+(define-record-type <cabal-custom-setup>
+ (make-cabal-custom-setup name dependencies)
+ cabal-custom-setup?
+ (name cabal-custom-setup-name)
+ (dependencies cabal-custom-setup-dependencies)) ; list of <cabal-dependency>
+
(define (cabal-flags->alist flag-list)
"Retrun an alist associating the flag name to its default value from a
list of <cabal-flag> objects."
@@ -694,13 +725,20 @@ the ordering operation and the version."
(let* ((with-ver-matcher-fn (make-rx-matcher
"([a-zA-Z0-9_-]+) *([<>=]+) *([0-9.]+) *"))
(without-ver-matcher-fn (make-rx-matcher "([a-zA-Z0-9_-]+)"))
+ (without-ver-matcher-fn-2 (make-rx-matcher "([a-zA-Z0-9_-]+) (-any|-none)"))
(name (or (and=> (with-ver-matcher-fn spec)
(cut match:substring <> 1))
+ (and=> (without-ver-matcher-fn-2 spec)
+ (cut match:substring <> 1))
(match:substring (without-ver-matcher-fn spec) 1)))
- (operator (and=> (with-ver-matcher-fn spec)
- (cut match:substring <> 2)))
- (version (and=> (with-ver-matcher-fn spec)
- (cut match:substring <> 3))))
+ (operator (or (and=> (with-ver-matcher-fn spec)
+ (cut match:substring <> 2))
+ (and=> (without-ver-matcher-fn-2 spec)
+ (cut match:substring <> 2))))
+ (version (or (and=> (with-ver-matcher-fn spec)
+ (cut match:substring <> 3))
+ (and=> (without-ver-matcher-fn-2 spec)
+ (cut match:substring <> 2)))))
(values name operator version)))
(define (impl haskell)
@@ -716,6 +754,8 @@ the ordering operation and the version."
((string= spec-op ">") (version>? comp-ver spec-ver))
((string= spec-op "<=") (not (version>? comp-ver spec-ver)))
((string= spec-op "<") (not (version>=? comp-ver spec-ver)))
+ ((string= spec-op "-any") #t)
+ ((string= spec-op "-none") #f)
(else
(raise (condition
(&message (message "Failed to evaluate 'impl' test."))))))
@@ -728,7 +768,6 @@ the ordering operation and the version."
(let ((value (or (assoc-ref env name)
(assoc-ref (cabal-flags->alist (cabal-flags)) name))))
(if (eq? value 'false) #f #t)))
-
(define (eval sexp)
(match sexp
(() '())
@@ -755,6 +794,8 @@ the ordering operation and the version."
;; no need to evaluate flag parameters
(('section 'flag name parameters)
(list 'section 'flag name parameters))
+ (('section 'custom-setup parameters)
+ (list 'section 'custom-setup parameters))
;; library does not have a name parameter
(('section 'library parameters)
(list 'section 'library (eval parameters)))
@@ -795,12 +836,15 @@ See the manual for limitations.")))))))
(define (make-cabal-section sexp section-type)
"Given an SEXP as produced by 'read-cabal', produce a list of objects
pertaining to SECTION-TYPE sections. SECTION-TYPE must be one of:
-'executable, 'flag, 'test-suite, 'source-repository or 'library."
+'executable, 'flag, 'test-suite, 'custom-setup, 'source-repository or
+'library."
(filter-map (cut match <>
(('section (? (cut equal? <> section-type)) name parameters)
(case section-type
((test-suite) (make-cabal-test-suite
name (dependencies parameters)))
+ ((custom-setup) (make-cabal-custom-setup
+ name (dependencies parameters "setup-depends")))
((executable) (make-cabal-executable
name (dependencies parameters)))
((source-repository) (make-cabal-source-repository
@@ -843,10 +887,10 @@ to be added between the values found in different key/value pairs."
(define dependency-name-version-rx
(make-regexp "([a-zA-Z0-9_-]+) *(.*)"))
-(define (dependencies key-values-list)
+(define* (dependencies key-values-list #:optional (key "build-depends"))
"Return a list of 'cabal-dependency' objects for the dependencies found in
KEY-VALUES-LIST."
- (let ((deps (string-tokenize (lookup-join key-values-list "build-depends" ",")
+ (let ((deps (string-tokenize (lookup-join key-values-list key ",")
(char-set-complement (char-set #\,)))))
(map (lambda (d)
(let ((rx-result (regexp-exec dependency-name-version-rx d)))
diff --git a/guix/inferior.scm b/guix/inferior.scm
new file mode 100644
index 0000000000..629c2c4313
--- /dev/null
+++ b/guix/inferior.scm
@@ -0,0 +1,197 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix inferior)
+ #:use-module (srfi srfi-9)
+ #:use-module (srfi srfi-9 gnu)
+ #:use-module (ice-9 match)
+ #:use-module (ice-9 popen)
+ #:export (inferior?
+ open-inferior
+ close-inferior
+ inferior-eval
+ inferior-object?
+
+ inferior-package?
+ inferior-package-name
+ inferior-package-version
+
+ inferior-packages
+ inferior-package-synopsis
+ inferior-package-description))
+
+;;; Commentary:
+;;;
+;;; This module provides a way to spawn Guix "inferior" processes and to talk
+;;; to them. It allows us, from one instance of Guix, to interact with
+;;; another instance of Guix coming from a different commit.
+;;;
+;;; Code:
+
+;; Inferior Guix process.
+(define-record-type <inferior>
+ (inferior pid socket version)
+ inferior?
+ (pid inferior-pid)
+ (socket inferior-socket)
+ (version inferior-version)) ;REPL protocol version
+
+(define (inferior-pipe directory command)
+ "Return an input/output pipe on the Guix instance in DIRECTORY. This runs
+'DIRECTORY/COMMAND repl' if it exists, or falls back to some other method if
+it's an old Guix."
+ (let ((pipe (with-error-to-port (%make-void-port "w")
+ (lambda ()
+ (open-pipe* OPEN_BOTH
+ (string-append directory "/" command)
+ "repl" "-t" "machine")))))
+ (if (eof-object? (peek-char pipe))
+ (begin
+ (close-pipe pipe)
+
+ ;; Older versions of Guix didn't have a 'guix repl' command, so
+ ;; emulate it.
+ (open-pipe* OPEN_BOTH "guile"
+ "-L" (string-append directory "/share/guile/site/"
+ (effective-version))
+ "-C" (string-append directory "/share/guile/site/"
+ (effective-version))
+ "-C" (string-append directory "/lib/guile/"
+ (effective-version) "/site-ccache")
+ "-c"
+ (object->string
+ `(begin
+ (primitive-load ,(search-path %load-path
+ "guix/scripts/repl.scm"))
+ ((@ (guix scripts repl) machine-repl))))))
+ pipe)))
+
+(define* (open-inferior directory #:key (command "bin/guix"))
+ "Open the inferior Guix in DIRECTORY, running 'DIRECTORY/COMMAND repl' or
+equivalent. Return #f if the inferior could not be launched."
+ (define pipe
+ (inferior-pipe directory command))
+
+ (setvbuf pipe _IOLBF)
+ (match (read pipe)
+ (('repl-version 0 rest ...)
+ (let ((result (inferior 'pipe pipe (cons 0 rest))))
+ (inferior-eval '(use-modules (guix)) result)
+ (inferior-eval '(use-modules (gnu)) result)
+ (inferior-eval '(define %package-table (make-hash-table))
+ result)
+ result))
+ (_
+ #f)))
+
+(define (close-inferior inferior)
+ "Close INFERIOR."
+ (close-pipe (inferior-socket inferior)))
+
+;; Non-self-quoting object of the inferior.
+(define-record-type <inferior-object>
+ (inferior-object address appearance)
+ inferior-object?
+ (address inferior-object-address)
+ (appearance inferior-object-appearance))
+
+(define (write-inferior-object object port)
+ (match object
+ (($ <inferior-object> _ appearance)
+ (format port "#<inferior-object ~a>" appearance))))
+
+(set-record-type-printer! <inferior-object> write-inferior-object)
+
+(define (inferior-eval exp inferior)
+ "Evaluate EXP in INFERIOR."
+ (define sexp->object
+ (match-lambda
+ (('value value)
+ value)
+ (('non-self-quoting address string)
+ (inferior-object address string))))
+
+ (write exp (inferior-socket inferior))
+ (newline (inferior-socket inferior))
+ (match (read (inferior-socket inferior))
+ (('values objects ...)
+ (apply values (map sexp->object objects)))
+ (('exception key objects ...)
+ (apply throw key (map sexp->object objects)))))
+
+
+;;;
+;;; Inferior packages.
+;;;
+
+(define-record-type <inferior-package>
+ (inferior-package inferior name version id)
+ inferior-package?
+ (inferior inferior-package-inferior)
+ (name inferior-package-name)
+ (version inferior-package-version)
+ (id inferior-package-id))
+
+(define (write-inferior-package package port)
+ (match package
+ (($ <inferior-package> _ name version)
+ (format port "#<inferior-package ~a@~a ~a>"
+ name version
+ (number->string (object-address package) 16)))))
+
+(set-record-type-printer! <inferior-package> write-inferior-package)
+
+(define (inferior-packages inferior)
+ "Return the list of packages known to INFERIOR."
+ (let ((result (inferior-eval
+ '(fold-packages (lambda (package result)
+ (let ((id (object-address package)))
+ (hashv-set! %package-table id package)
+ (cons (list (package-name package)
+ (package-version package)
+ id)
+ result)))
+ '())
+ inferior)))
+ (map (match-lambda
+ ((name version id)
+ (inferior-package inferior name version id)))
+ result)))
+
+(define (inferior-package-field package getter)
+ "Return the field of PACKAGE, an inferior package, accessed with GETTER."
+ (let ((inferior (inferior-package-inferior package))
+ (id (inferior-package-id package)))
+ (inferior-eval `(,getter (hashv-ref %package-table ,id))
+ inferior)))
+
+(define* (inferior-package-synopsis package #:key (translate? #t))
+ "Return the Texinfo synopsis of PACKAGE, an inferior package. When
+TRANSLATE? is true, translate it to the current locale's language."
+ (inferior-package-field package
+ (if translate?
+ '(compose (@ (guix ui) P_) package-synopsis)
+ 'package-synopsis)))
+
+(define* (inferior-package-description package #:key (translate? #t))
+ "Return the Texinfo description of PACKAGE, an inferior package. When
+TRANSLATE? is true, translate it to the current locale's language."
+ (inferior-package-field package
+ (if translate?
+ '(compose (@ (guix ui) P_) package-description)
+ 'package-description)))
diff --git a/guix/profiles.scm b/guix/profiles.scm
index d2a794b187..f34f4fcff6 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -1521,7 +1521,7 @@ the generation that was current before switching."
(profile profile)
(generation number)))))
(else
- (switch-symlinks profile generation)
+ (switch-symlinks profile (basename generation))
current))))
(define (switch-to-previous-generation profile)
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 29829f52c8..b38a55d01c 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -190,7 +190,7 @@ do not treat collisions in MANIFEST as an error."
(let* ((entries (manifest-entries manifest))
(count (length entries)))
(switch-symlinks name prof)
- (switch-symlinks profile name)
+ (switch-symlinks profile (basename name))
(unless (string=? profile %current-profile)
(register-gc-root store name))
(format #t (N_ "~a package in profile~%"
diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm
index 7202e3cc16..433502b5de 100644
--- a/guix/scripts/pull.scm
+++ b/guix/scripts/pull.scm
@@ -28,9 +28,12 @@
#:use-module (guix profiles)
#:use-module (guix gexp)
#:use-module (guix grafts)
+ #:use-module (guix memoization)
#:use-module (guix monads)
+ #:autoload (guix inferior) (open-inferior)
#:use-module (guix scripts build)
#:autoload (guix self) (whole-package)
+ #:use-module (gnu packages)
#:autoload (gnu packages ssh) (guile-ssh)
#:autoload (gnu packages tls) (gnutls)
#:use-module ((guix scripts package) #:select (build-and-use-profile))
@@ -45,9 +48,11 @@
#:use-module ((gnu packages certs) #:select (le-certs))
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
+ #:use-module (srfi srfi-26)
#:use-module (srfi srfi-35)
#:use-module (srfi srfi-37)
#:use-module (ice-9 match)
+ #:use-module (ice-9 vlist)
#:export (guix-pull))
(module-autoload! (resolve-module '(guix scripts pull))
@@ -230,12 +235,32 @@ URL, BRANCH, and COMMIT as a property in the manifest entry."
(branch ,branch)
(commit ,commit))))))))))
+(define (display-profile-news profile)
+ "Display what's up in PROFILE--new packages, and all that."
+ (match (memv (generation-number profile)
+ (reverse (profile-generations profile)))
+ ((current previous _ ...)
+ (newline)
+ (let ((old (fold-packages (lambda (package result)
+ (alist-cons (package-name package)
+ (package-version package)
+ result))
+ '()))
+ (new (profile-package-alist
+ (generation-file-name profile current))))
+ (display-new/upgraded-packages old new
+ #:heading (G_ "New in this revision:\n"))))
+ (_ #t)))
+
(define* (build-and-install source config-dir
#:key verbose? url branch commit)
"Build the tool from SOURCE, and install it in CONFIG-DIR."
(define update-profile
(store-lift build-and-use-profile))
+ (define profile
+ (string-append config-dir "/current"))
+
(mlet* %store-monad ((drv (build-from-source source
#:commit commit
#:verbose? verbose?))
@@ -243,8 +268,9 @@ URL, BRANCH, and COMMIT as a property in the manifest entry."
#:url url
#:branch branch
#:commit commit)))
- (update-profile (string-append config-dir "/current")
- (manifest (list entry)))))
+ (mbegin %store-monad
+ (update-profile profile (manifest (list entry)))
+ (return (display-profile-news profile)))))
(define (honor-lets-encrypt-certificates! store)
"Tell Guile-Git to use the Let's Encrypt certificates."
@@ -289,6 +315,7 @@ certificates~%"))
(define (display-profile-content profile number)
"Display the packages in PROFILE, generation NUMBER, in a human-readable
way and displaying details about the channel's source code."
+ (display-generation profile number)
(for-each (lambda (entry)
(format #t " ~a ~a~%"
(manifest-entry-name entry)
@@ -310,6 +337,90 @@ way and displaying details about the channel's source code."
(manifest-entries
(profile-manifest (generation-file-name profile number))))))
+(define (indented-string str indent)
+ "Return STR with each newline preceded by IDENT spaces."
+ (define indent-string
+ (make-list indent #\space))
+
+ (list->string
+ (string-fold-right (lambda (chr result)
+ (if (eqv? chr #\newline)
+ (cons chr (append indent-string result))
+ (cons chr result)))
+ '()
+ str)))
+
+(define profile-package-alist
+ (mlambda (profile)
+ "Return a name/version alist representing the packages in PROFILE."
+ (fold (lambda (package lst)
+ (alist-cons (inferior-package-name package)
+ (inferior-package-version package)
+ lst))
+ '()
+ (let* ((inferior (open-inferior profile))
+ (packages (inferior-packages inferior)))
+ (close-inferior inferior)
+ packages))))
+
+(define* (display-new/upgraded-packages alist1 alist2
+ #:key (heading ""))
+ "Given the two package name/version alists ALIST1 and ALIST2, display the
+list of new and upgraded packages going from ALIST1 to ALIST2. When ALIST1
+and ALIST2 differ, display HEADING upfront."
+ (let* ((old (fold (match-lambda*
+ (((name . version) table)
+ (vhash-cons name version table)))
+ vlist-null
+ alist1))
+ (new (remove (match-lambda
+ ((name . _)
+ (vhash-assoc name old)))
+ alist2))
+ (upgraded (filter-map (match-lambda
+ ((name . new-version)
+ (match (vhash-fold* cons '() name old)
+ (() #f)
+ ((= (cut sort <> version>?) old-versions)
+ (and (version>? new-version
+ (first old-versions))
+ (string-append name "@"
+ new-version))))))
+ alist2)))
+ (unless (and (null? new) (null? upgraded))
+ (display heading))
+
+ (match (length new)
+ (0 #t)
+ (count
+ (format #t (N_ " ~h new package: ~a~%"
+ " ~h new packages: ~a~%" count)
+ count
+ (indented-string
+ (fill-paragraph (string-join (sort (map first new) string<?)
+ ", ")
+ (- (%text-width) 4) 30)
+ 4))))
+ (match (length upgraded)
+ (0 #t)
+ (count
+ (format #t (N_ " ~h package upgraded: ~a~%"
+ " ~h packages upgraded: ~a~%" count)
+ count
+ (indented-string
+ (fill-paragraph (string-join (sort upgraded string<?) ", ")
+ (- (%text-width) 4) 35)
+ 4))))))
+
+(define (display-profile-content-diff profile gen1 gen2)
+ "Display the changes in PROFILE GEN2 compared to generation GEN1."
+ (define (package-alist generation)
+ (profile-package-alist (generation-file-name profile generation)))
+
+ (display-profile-content profile gen2)
+ (display-new/upgraded-packages (package-alist gen1)
+ (package-alist gen2)))
+
(define (process-query opts)
"Process any query specified by OPTS."
(define profile
@@ -317,29 +428,32 @@ way and displaying details about the channel's source code."
(match (assoc-ref opts 'query)
(('list-generations pattern)
- (define (list-generation display-function number)
- (unless (zero? number)
- (display-generation profile number)
- (display-function profile number)
- (newline)))
+ (define (list-generations profile numbers)
+ (match numbers
+ ((first rest ...)
+ (display-profile-content profile first)
+ (let loop ((numbers numbers))
+ (match numbers
+ ((first second rest ...)
+ (display-profile-content-diff profile
+ first second)
+ (loop (cons second rest)))
+ ((_) #t)
+ (() #t))))))
(leave-on-EPIPE
(cond ((not (file-exists? profile)) ; XXX: race condition
(raise (condition (&profile-not-found-error
(profile profile)))))
((string-null? pattern)
- (for-each (lambda (generation)
- (list-generation display-profile-content generation))
- (profile-generations profile)))
+ (list-generations profile (profile-generations profile)))
((matching-generations pattern profile)
=>
(match-lambda
(()
(exit 1))
((numbers ...)
- (for-each (lambda (generation)
- (list-generation display-profile-content generation))
- numbers)))))))))
+ (list-generations profile numbers)))))))))
(define (guix-pull . args)
diff --git a/guix/scripts/repl.scm b/guix/scripts/repl.scm
new file mode 100644
index 0000000000..b157833a49
--- /dev/null
+++ b/guix/scripts/repl.scm
@@ -0,0 +1,199 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix scripts repl)
+ #:use-module (guix ui)
+ #:use-module (guix scripts)
+ #:use-module (guix utils)
+ #:use-module (guix packages)
+ #:use-module (gnu packages)
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-37)
+ #:use-module (ice-9 match)
+ #:use-module (rnrs bytevectors)
+ #:autoload (system repl repl) (start-repl)
+ #:autoload (system repl server)
+ (make-tcp-server-socket make-unix-domain-server-socket)
+ #:export (machine-repl
+ guix-repl))
+
+;;; Commentary:
+;;;
+;;; This command provides a Guile REPL
+
+(define %default-options
+ `((type . guile)))
+
+(define %options
+ (list (option '(#\h "help") #f #f
+ (lambda args
+ (show-help)
+ (exit 0)))
+ (option '(#\V "version") #f #f
+ (lambda args
+ (show-version-and-exit "guix repl")))
+ (option '(#\t "type") #t #f
+ (lambda (opt name arg result)
+ (alist-cons 'type (string->symbol arg) result)))
+ (option '("listen") #t #f
+ (lambda (opt name arg result)
+ (alist-cons 'listen arg result)))))
+
+
+(define (show-help)
+ (display (G_ "Usage: guix repl [OPTIONS...]
+Start a Guile REPL in the Guix execution environment.\n"))
+ (display (G_ "
+ -t, --type=TYPE start a REPL of the given TYPE"))
+ (newline)
+ (display (G_ "
+ -h, --help display this help and exit"))
+ (display (G_ "
+ -V, --version display version information and exit"))
+ (newline)
+ (show-bug-report-information))
+
+(define (self-quoting? x)
+ "Return #t if X is self-quoting."
+ (letrec-syntax ((one-of (syntax-rules ()
+ ((_) #f)
+ ((_ pred rest ...)
+ (or (pred x)
+ (one-of rest ...))))))
+ (one-of symbol? string? pair? null? vector?
+ bytevector? number? boolean?)))
+
+(define user-module
+ ;; Module where we execute user code.
+ (let ((module (resolve-module '(guix-user) #f #f #:ensure #t)))
+ (beautify-user-module! module)
+ module))
+
+(define* (machine-repl #:optional
+ (input (current-input-port))
+ (output (current-output-port)))
+ "Run a machine-usable REPL over ports INPUT and OUTPUT.
+
+The protocol of this REPL is meant to be machine-readable and provides proper
+support to represent multiple-value returns, exceptions, objects that lack a
+read syntax, and so on. As such it is more convenient and robust than parsing
+Guile's REPL prompt."
+ (define (value->sexp value)
+ (if (self-quoting? value)
+ `(value ,value)
+ `(non-self-quoting ,(object-address value)
+ ,(object->string value))))
+
+ (write `(repl-version 0 0) output)
+ (newline output)
+ (force-output output)
+
+ (let loop ()
+ (match (read input)
+ ((? eof-object?) #t)
+ (exp
+ (catch #t
+ (lambda ()
+ (let ((results (call-with-values
+ (lambda ()
+
+ (primitive-eval exp))
+ list)))
+ (write `(values ,@(map value->sexp results))
+ output)
+ (newline output)
+ (force-output output)))
+ (lambda (key . args)
+ (write `(exception ,key ,@(map value->sexp args)))
+ (newline output)
+ (force-output output)))
+ (loop)))))
+
+(define (call-with-connection spec thunk)
+ "Dynamically-bind the current input and output ports according to SPEC and
+call THUNK."
+ (if (not spec)
+ (thunk)
+
+ ;; Note: the "PROTO:" prefix in SPEC is here so that we can eventually
+ ;; parse things like "fd:123" in a non-ambiguous way.
+ (match (string-index spec #\:)
+ (#f
+ (leave (G_ "~A: invalid listen specification~%") spec))
+ (index
+ (let ((protocol (string-take spec index))
+ (address (string-drop spec (+ index 1))))
+ (define socket
+ (match protocol
+ ("tcp"
+ (make-tcp-server-socket #:port (string->number address)))
+ ("unix"
+ (make-unix-domain-server-socket #:path address))
+ (_
+ (leave (G_ "~A: unsupported protocol family~%")
+ protocol))))
+
+ (listen socket 10)
+ (let loop ()
+ (match (accept socket)
+ ((connection . address)
+ (if (= AF_UNIX (sockaddr:fam address))
+ (info (G_ "accepted connection~%"))
+ (info (G_ "accepted connection from ~a~%")
+ (inet-ntop (sockaddr:fam address)
+ (sockaddr:addr address))))
+ (dynamic-wind
+ (const #t)
+ (lambda ()
+ (parameterize ((current-input-port connection)
+ (current-output-port connection))
+ (thunk)))
+ (lambda ()
+ (false-if-exception (close-port connection))
+ (info (G_ "connection closed~%"))))))
+ (loop)))))))
+
+
+(define (guix-repl . args)
+ (define opts
+ ;; Return the list of package names.
+ (args-fold* args %options
+ (lambda (opt name arg result)
+ (leave (G_ "~A: unrecognized option~%") name))
+ (lambda (arg result)
+ (leave (G_ "~A: extraneous argument~%") arg))
+ %default-options))
+
+ (with-error-handling
+ (let ((type (assoc-ref opts 'type)))
+ (call-with-connection (assoc-ref opts 'listen)
+ (lambda ()
+ (case type
+ ((guile)
+ (save-module-excursion
+ (lambda ()
+ (set-current-module user-module)
+ (start-repl))))
+ ((machine)
+ (machine-repl))
+ (else
+ (leave (G_ "~a: unknown type of REPL~%") type))))))))
+
+;; Local Variables:
+;; eval: (put 'call-with-connection 'scheme-indent-function 1)
+;; End:
diff --git a/guix/store.scm b/guix/store.scm
index bac42f2738..cc5c24a77d 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018 Jan Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -77,6 +78,7 @@
add-data-to-store
add-text-to-store
add-to-store
+ binary-file
build-things
build
query-failed-paths
@@ -1362,7 +1364,18 @@ taking the store as its first argument."
;; Store monad operators.
;;
-(define* (text-file name text
+(define* (binary-file name
+ data ;bytevector
+ #:optional (references '()))
+ "Return as a monadic value the absolute file name in the store of the file
+containing DATA, a bytevector. REFERENCES is a list of store items that the
+resulting text file refers to; it defaults to the empty list."
+ (lambda (store)
+ (values (add-data-to-store store name data references)
+ store)))
+
+(define* (text-file name
+ text ;string
#:optional (references '()))
"Return as a monadic value the absolute file name in the store of the file
containing TEXT, a string. REFERENCES is a list of store items that the
diff --git a/guix/utils.scm b/guix/utils.scm
index f934b6ed13..200bb69e03 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -33,10 +33,11 @@
#:use-module (srfi srfi-35)
#:use-module (srfi srfi-39)
#:use-module (ice-9 binary-ports)
+ #:use-module (ice-9 ftw)
#:autoload (rnrs io ports) (make-custom-binary-input-port)
#:use-module ((rnrs bytevectors) #:select (bytevector-u8-set!))
#:use-module (guix memoization)
- #:use-module ((guix build utils) #:select (dump-port mkdir-p))
+ #:use-module ((guix build utils) #:select (dump-port mkdir-p delete-file-recursively))
#:use-module ((guix build syscalls) #:select (mkdtemp! fdatasync))
#:use-module (ice-9 format)
#:autoload (ice-9 popen) (open-pipe*)
@@ -631,7 +632,7 @@ delete it when leaving the dynamic extent of this call."
(lambda ()
(proc tmp-dir))
(lambda ()
- (false-if-exception (rmdir tmp-dir))))))
+ (false-if-exception (delete-file-recursively tmp-dir))))))
(define (with-atomic-file-output file proc)
"Call PROC with an output port for the file that is going to replace FILE.
diff --git a/tests/gexp.scm b/tests/gexp.scm
index 83fe811546..391a0f8be5 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -948,7 +948,7 @@
(return (and (zero? (close-pipe pipe))
(= (expt n 2) (string->number str)))))))
-(test-assertm "gexp->script #:module-path"
+(test-assert "gexp->script #:module-path"
(call-with-temporary-directory
(lambda (directory)
(define str
@@ -961,23 +961,24 @@
(define-public %fake! ,str))
port)))
- (mlet* %store-monad ((exp -> (with-imported-modules '((guix base32))
- (gexp (begin
- (use-modules (guix base32))
- (write (list %load-path
- %fake!))))))
- (drv (gexp->script "guile-thing" exp
- #:guile %bootstrap-guile
- #:module-path (list directory)))
- (out -> (derivation->output-path drv))
- (done (built-derivations (list drv))))
- (let* ((pipe (open-input-pipe out))
- (data (read pipe)))
- (return (and (zero? (close-pipe pipe))
- (match data
- ((load-path str*)
- (and (string=? str* str)
- (not (member directory load-path))))))))))))
+ (run-with-store %store
+ (mlet* %store-monad ((exp -> (with-imported-modules '((guix base32))
+ (gexp (begin
+ (use-modules (guix base32))
+ (write (list %load-path
+ %fake!))))))
+ (drv (gexp->script "guile-thing" exp
+ #:guile %bootstrap-guile
+ #:module-path (list directory)))
+ (out -> (derivation->output-path drv))
+ (done (built-derivations (list drv))))
+ (let* ((pipe (open-input-pipe out))
+ (data (read pipe)))
+ (return (and (zero? (close-pipe pipe))
+ (match data
+ ((load-path str*)
+ (and (string=? str* str)
+ (not (member directory load-path)))))))))))))
(test-assertm "program-file"
(let* ((n (random (expt 2 50)))
@@ -996,7 +997,7 @@
(return (and (zero? (close-pipe pipe))
(= n (string->number str)))))))))
-(test-assertm "program-file #:module-path"
+(test-assert "program-file #:module-path"
(call-with-temporary-directory
(lambda (directory)
(define text (random-text))
@@ -1014,14 +1015,15 @@
(file (program-file "program" exp
#:guile %bootstrap-guile
#:module-path (list directory))))
- (mlet* %store-monad ((drv (lower-object file))
- (out -> (derivation->output-path drv)))
- (mbegin %store-monad
- (built-derivations (list drv))
- (let* ((pipe (open-input-pipe out))
- (str (get-string-all pipe)))
- (return (and (zero? (close-pipe pipe))
- (string=? text str))))))))))
+ (run-with-store %store
+ (mlet* %store-monad ((drv (lower-object file))
+ (out -> (derivation->output-path drv)))
+ (mbegin %store-monad
+ (built-derivations (list drv))
+ (let* ((pipe (open-input-pipe out))
+ (str (get-string-all pipe)))
+ (return (and (zero? (close-pipe pipe))
+ (string=? text str)))))))))))
(test-assertm "program-file & with-extensions"
(let* ((exp (with-extensions (list %extension-package)
diff --git a/tests/guix-package.sh b/tests/guix-package.sh
index 3b3fa35cd8..cef3b3452e 100644
--- a/tests/guix-package.sh
+++ b/tests/guix-package.sh
@@ -185,6 +185,16 @@ grep -E 'emacs[[:blank:]]+42\.5\.9rc7[[:blank:]]+.*-emacs-42.5.9rc7' \
rm "$emacs_tarball" "$tmpfile"
rmdir "$module_dir"
+# Profiles with a relative file name. Make sure we don't create dangling
+# symlinks--see bug report at
+# <https://lists.gnu.org/archive/html/guix-devel/2018-07/msg00036.html>.
+mkdir -p "$module_dir/foo"
+( cd "$module_dir" ; \
+ guix package --bootstrap -i guile-bootstrap -p foo/prof )
+test -f "$module_dir/foo/prof/bin/guile"
+rm "$module_dir/foo"/*
+rmdir "$module_dir/foo"
+rmdir "$module_dir"
#
# Try with the default profile.
@@ -215,7 +225,7 @@ do
guix package --bootstrap --roll-back
! test -f "$HOME/.guix-profile/bin"
! test -f "$HOME/.guix-profile/lib"
- test "`readlink "$default_profile"`" = "$default_profile-0-link"
+ test "`readlink "$default_profile"`" = "`basename $default_profile-0-link`"
done
# Check whether '-p ~/.guix-profile' makes any difference.
diff --git a/tests/hackage.scm b/tests/hackage.scm
index a4de8be91e..e17851a213 100644
--- a/tests/hackage.scm
+++ b/tests/hackage.scm
@@ -69,6 +69,65 @@ library
mtl >= 2.0 && < 3
")
+;; Check "-any", "-none" when name is different.
+(define test-cabal-4
+ "name: foo
+version: 1.0.0
+homepage: http://test.org
+synopsis: synopsis
+description: description
+license: BSD3
+library
+ if impl(ghcjs -any)
+ Build-depends: ghc-a
+ if impl(ghc>=7.2&&<7.6)
+ Build-depends: ghc-b
+ if impl(ghc == 7.8)
+ Build-depends:
+ HTTP >= 4000.2.5 && < 4000.3,
+ mtl >= 2.0 && < 3
+")
+
+;; Check "-any", "-none".
+(define test-cabal-5
+ "name: foo
+version: 1.0.0
+homepage: http://test.org
+synopsis: synopsis
+description: description
+license: BSD3
+library
+ if impl(ghc == 7.8)
+ Build-depends:
+ HTTP >= 4000.2.5 && < 4000.3,
+ if impl(ghc -any)
+ Build-depends: mtl >= 2.0 && < 3
+ if impl(ghc>=7.2&&<7.6)
+ Build-depends: ghc-b
+")
+
+;; Check "custom-setup".
+(define test-cabal-6
+ "name: foo
+build-type: Custom
+version: 1.0.0
+homepage: http://test.org
+synopsis: synopsis
+description: description
+license: BSD3
+custom-setup
+ setup-depends: base >= 4.7 && < 5,
+ Cabal >= 1.24,
+ haskell-gi == 0.21.*
+library
+ if impl(ghc>=7.2&&<7.6)
+ Build-depends: ghc-b
+ if impl(ghc == 7.8)
+ Build-depends:
+ HTTP >= 4000.2.5 && < 4000.3,
+ mtl >= 2.0 && < 3
+")
+
;; A fragment of a real Cabal file with minor modification to check precedence
;; of 'and' over 'or', missing final newline, spaces between keywords and
;; parentheses and between key and column.
@@ -139,6 +198,18 @@ library
(eval-test-with-cabal test-cabal-3
#:cabal-environment '(("impl" . "ghc-7.8"))))
+(test-assert "hackage->guix-package test 4"
+ (eval-test-with-cabal test-cabal-4
+ #:cabal-environment '(("impl" . "ghc-7.8"))))
+
+(test-assert "hackage->guix-package test 5"
+ (eval-test-with-cabal test-cabal-5
+ #:cabal-environment '(("impl" . "ghc-7.8"))))
+
+(test-assert "hackage->guix-package test 6"
+ (eval-test-with-cabal test-cabal-6
+ #:cabal-environment '(("impl" . "ghc-7.8"))))
+
(test-assert "read-cabal test 1"
(match (call-with-input-string test-read-cabal-1 read-cabal)
((("name" ("test-me"))
diff --git a/tests/inferior.scm b/tests/inferior.scm
new file mode 100644
index 0000000000..5e0f8ae66e
--- /dev/null
+++ b/tests/inferior.scm
@@ -0,0 +1,69 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (test-inferior)
+ #:use-module (guix inferior)
+ #:use-module (guix packages)
+ #:use-module (gnu packages)
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-64))
+
+(define %top-srcdir
+ (dirname (search-path %load-path "guix.scm")))
+
+(define %top-builddir
+ (dirname (search-path %load-compiled-path "guix.go")))
+
+
+(test-begin "inferior")
+
+(test-equal "open-inferior"
+ '(42 #t)
+ (let ((inferior (open-inferior %top-builddir
+ #:command "scripts/guix")))
+ (and (inferior? inferior)
+ (let ((a (inferior-eval '(apply * '(6 7)) inferior))
+ (b (inferior-eval '(@ (gnu packages base) coreutils)
+ inferior)))
+ (close-inferior inferior)
+ (list a (inferior-object? b))))))
+
+(test-equal "inferior-packages"
+ (take (sort (fold-packages (lambda (package lst)
+ (alist-cons (package-name package)
+ (package-version package)
+ lst))
+ '())
+ (lambda (x y)
+ (string<? (car x) (car y))))
+ 10)
+ (let* ((inferior (open-inferior %top-builddir
+ #:command "scripts/guix"))
+ (packages (inferior-packages inferior)))
+ (and (every string? (map inferior-package-synopsis packages))
+ (begin
+ (close-inferior inferior)
+ (take (sort (map (lambda (package)
+ (cons (inferior-package-name package)
+ (inferior-package-version package)))
+ packages)
+ (lambda (x y)
+ (string<? (car x) (car y))))
+ 10)))))
+
+(test-end "inferior")