summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am7
-rw-r--r--README3
-rw-r--r--build-aux/build-self.scm93
-rw-r--r--config-daemon.ac2
-rw-r--r--configure.ac13
-rw-r--r--doc/guix.texi120
-rw-r--r--gnu/local.mk4
-rw-r--r--gnu/packages/audio.scm4
-rw-r--r--gnu/packages/bash.scm2
-rw-r--r--gnu/packages/bioconductor.scm51
-rw-r--r--gnu/packages/bioinformatics.scm206
-rw-r--r--gnu/packages/ccache.scm11
-rw-r--r--gnu/packages/ci.scm30
-rw-r--r--gnu/packages/code.scm19
-rw-r--r--gnu/packages/cran.scm736
-rw-r--r--gnu/packages/crypto.scm4
-rw-r--r--gnu/packages/curl.scm14
-rw-r--r--gnu/packages/dns.scm4
-rw-r--r--gnu/packages/emacs.scm78
-rw-r--r--gnu/packages/emulators.scm6
-rw-r--r--gnu/packages/engineering.scm25
-rw-r--r--gnu/packages/fonts.scm4
-rw-r--r--gnu/packages/games.scm157
-rw-r--r--gnu/packages/gcc.scm22
-rw-r--r--gnu/packages/gdb.scm4
-rw-r--r--gnu/packages/ghostscript.scm44
-rw-r--r--gnu/packages/gnome.scm5
-rw-r--r--gnu/packages/graph.scm9
-rw-r--r--gnu/packages/gtk.scm9
-rw-r--r--gnu/packages/guile.scm28
-rw-r--r--gnu/packages/haskell-check.scm4
-rw-r--r--gnu/packages/haskell.scm39
-rw-r--r--gnu/packages/image.scm17
-rw-r--r--gnu/packages/julia.scm6
-rw-r--r--gnu/packages/linux.scm16
-rw-r--r--gnu/packages/machine-learning.scm12
-rw-r--r--gnu/packages/mail.scm7
-rw-r--r--gnu/packages/maths.scm129
-rw-r--r--gnu/packages/mes.scm26
-rw-r--r--gnu/packages/mp3.scm16
-rw-r--r--gnu/packages/mpd.scm4
-rw-r--r--gnu/packages/multiprecision.scm2
-rw-r--r--gnu/packages/music.scm11
-rw-r--r--gnu/packages/musl.scm6
-rw-r--r--gnu/packages/networking.scm56
-rw-r--r--gnu/packages/openldap.scm4
-rw-r--r--gnu/packages/package-management.scm16
-rw-r--r--gnu/packages/patches/ghostscript-CVE-2018-16509.patch193
-rw-r--r--gnu/packages/patches/ghostscript-bug-699708.patch160
-rw-r--r--gnu/packages/patches/mes-nyacc-0.86.0.patch197
-rw-r--r--gnu/packages/patches/nyacc-binary-literals.patch29
-rw-r--r--gnu/packages/perl.scm38
-rw-r--r--gnu/packages/plotutils.scm12
-rw-r--r--gnu/packages/python.scm4
-rw-r--r--gnu/packages/shells.scm17
-rw-r--r--gnu/packages/statistics.scm137
-rw-r--r--gnu/packages/web-browsers.scm4
-rw-r--r--gnu/packages/web.scm20
-rw-r--r--gnu/packages/xorg.scm42
-rw-r--r--gnu/services.scm24
-rw-r--r--gnu/services/web.scm19
-rw-r--r--gnu/system/vm.scm81
-rw-r--r--gnu/tests/base.scm16
-rw-r--r--guix/channels.scm30
-rw-r--r--guix/derivations.scm2
-rw-r--r--guix/describe.scm4
-rw-r--r--guix/docker.scm2
-rw-r--r--guix/gcrypt.scm49
-rw-r--r--guix/gexp.scm39
-rw-r--r--guix/git.scm19
-rw-r--r--guix/hash.scm184
-rw-r--r--guix/http-client.scm2
-rw-r--r--guix/import/cpan.scm2
-rw-r--r--guix/import/cran.scm2
-rw-r--r--guix/import/crate.scm2
-rw-r--r--guix/import/elpa.scm2
-rw-r--r--guix/import/gnu.scm2
-rw-r--r--guix/import/hackage.scm2
-rw-r--r--guix/import/texlive.scm2
-rw-r--r--guix/import/utils.scm2
-rw-r--r--guix/inferior.scm20
-rw-r--r--guix/nar.scm4
-rw-r--r--guix/pk-crypto.scm407
-rw-r--r--guix/pki.scm2
-rw-r--r--guix/profiles.scm6
-rw-r--r--guix/scripts/archive.scm2
-rw-r--r--guix/scripts/authenticate.scm2
-rw-r--r--guix/scripts/describe.scm159
-rw-r--r--guix/scripts/download.scm2
-rw-r--r--guix/scripts/hash.scm6
-rw-r--r--guix/scripts/pack.scm60
-rw-r--r--guix/scripts/package.scm57
-rw-r--r--guix/scripts/publish.scm4
-rw-r--r--guix/scripts/pull.scm22
-rw-r--r--guix/scripts/refresh.scm2
-rwxr-xr-xguix/scripts/substitute.scm4
-rw-r--r--guix/self.scm26
-rw-r--r--guix/store.scm2
-rw-r--r--guix/store/deduplication.scm2
-rw-r--r--guix/tests.scm2
-rw-r--r--m4/guix.m418
-rw-r--r--po/guix/POTFILES.in1
-rw-r--r--tests/base32.scm2
-rw-r--r--tests/builders.scm2
-rw-r--r--tests/challenge.scm2
-rw-r--r--tests/cpan.scm2
-rw-r--r--tests/crate.scm2
-rw-r--r--tests/derivations.scm2
-rw-r--r--tests/gem.scm2
-rw-r--r--tests/gexp.scm18
-rw-r--r--tests/guix-describe.sh47
-rw-r--r--tests/guix-system.sh8
-rw-r--r--tests/hash.scm128
-rw-r--r--tests/inferior.scm26
-rw-r--r--tests/nar.scm2
-rw-r--r--tests/opam.scm2
-rw-r--r--tests/packages.scm2
-rw-r--r--tests/pk-crypto.scm290
-rw-r--r--tests/pki.scm4
-rw-r--r--tests/publish.scm4
-rw-r--r--tests/pypi.scm2
-rw-r--r--tests/services.scm25
-rw-r--r--tests/store-deduplication.scm2
-rw-r--r--tests/store.scm10
-rw-r--r--tests/substitute.scm4
125 files changed, 2984 insertions, 1839 deletions
diff --git a/Makefile.am b/Makefile.am
index af6870cf67..5c8639d665 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -63,9 +63,6 @@ MODULES = \
guix/base64.scm \
guix/cpio.scm \
guix/records.scm \
- guix/gcrypt.scm \
- guix/hash.scm \
- guix/pk-crypto.scm \
guix/pki.scm \
guix/progress.scm \
guix/combinators.scm \
@@ -207,6 +204,7 @@ MODULES = \
guix/scripts/authenticate.scm \
guix/scripts/refresh.scm \
guix/scripts/repl.scm \
+ guix/scripts/describe.scm \
guix/scripts/system.scm \
guix/scripts/system/search.scm \
guix/scripts/lint.scm \
@@ -331,8 +329,6 @@ SCM_TESTS = \
tests/base32.scm \
tests/base64.scm \
tests/cpio.scm \
- tests/hash.scm \
- tests/pk-crypto.scm \
tests/pki.scm \
tests/print.scm \
tests/sets.scm \
@@ -414,6 +410,7 @@ SH_TESTS = \
tests/guix-environment.sh \
tests/guix-environment-container.sh \
tests/guix-graph.sh \
+ tests/guix-describe.sh \
tests/guix-lint.sh
TESTS = $(SCM_TESTS) $(SH_TESTS)
diff --git a/README b/README
index 348a7ada5f..4c76c4bc43 100644
--- a/README
+++ b/README
@@ -21,7 +21,7 @@ Guix is based on the [[https://nixos.org/nix/][Nix]] package manager.
GNU Guix currently depends on the following packages:
- [[https://gnu.org/software/guile/][GNU Guile 2.2.x or 2.0.x]], version 2.0.13 or later
- - [[https://gnupg.org/][GNU libgcrypt]]
+ - [[https://notabug.org/cwebber/guile-gcrypt][Guile-Gcrypt]] 0.1.0 or later
- [[https://www.gnu.org/software/make/][GNU Make]]
- [[https://www.gnutls.org][GnuTLS]] compiled with guile support enabled
- [[https://notabug.org/civodul/guile-sqlite3][Guile-SQLite3]], version 0.1.0 or later
@@ -31,6 +31,7 @@ GNU Guix currently depends on the following packages:
Unless `--disable-daemon' was passed, the following packages are needed:
+ - [[https://gnupg.org/][GNU libgcrypt]]
- [[https://sqlite.org/][SQLite 3]]
- [[https://gcc.gnu.org][GCC's g++]]
- optionally [[http://www.bzip.org][libbz2]]
diff --git a/build-aux/build-self.scm b/build-aux/build-self.scm
index edb7f5d9c5..9e8cc90067 100644
--- a/build-aux/build-self.scm
+++ b/build-aux/build-self.scm
@@ -22,6 +22,7 @@
#:use-module (guix ui)
#:use-module (guix config)
#:use-module (guix modules)
+ #:use-module (guix build-system gnu)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-19)
#:use-module (rnrs io ports)
@@ -72,7 +73,7 @@
(variables rest ...))))))
(variables %localstatedir %storedir %sysconfdir %system)))
-(define* (make-config.scm #:key libgcrypt zlib gzip xz bzip2
+(define* (make-config.scm #:key zlib gzip xz bzip2
(package-name "GNU Guix")
(package-version "0")
(bug-report-address "bug-guix@gnu.org")
@@ -92,7 +93,6 @@
%state-directory
%store-database-directory
%config-directory
- %libgcrypt
%libz
%gzip
%bzip2
@@ -137,9 +137,6 @@
(define %xz
#+(and xz (file-append xz "/bin/xz")))
- (define %libgcrypt
- #+(and libgcrypt
- (file-append libgcrypt "/lib/libgcrypt")))
(define %libz
#+(and zlib
(file-append zlib "/lib/libz")))))))
@@ -200,6 +197,54 @@ person's version identifier."
;; XXX: Replace with a Git commit id.
(date->string (current-date 0) "~Y~m~d.~H"))
+(define guile-gcrypt
+ ;; The host Guix may or may not have 'guile-gcrypt', which was introduced in
+ ;; August 2018. If it has it, it's at least version 0.1.0, which is good
+ ;; enough. If it doesn't, specify our own package because the target Guix
+ ;; requires it.
+ (match (find-best-packages-by-name "guile-gcrypt" #f)
+ (()
+ (package
+ (name "guile-gcrypt")
+ (version "0.1.0")
+ (home-page "https://notabug.org/cwebber/guile-gcrypt")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append home-page "/archive/v" version ".tar.gz"))
+ (sha256
+ (base32
+ "1gir7ifknbmbvjlql5j6wzk7bkb5lnmq80q59ngz43hhpclrk5k3"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system gnu-build-system)
+ (arguments
+ ;; The 'bootstrap' phase appeared in 'core-updates', which was merged
+ ;; into 'master' ca. June 2018.
+ '(#:phases (modify-phases %standard-phases
+ (delete 'bootstrap)
+ (add-before 'configure 'bootstrap
+ (lambda _
+ (unless (zero? (system* "autoreconf" "-vfi"))
+ (error "autoreconf failed"))
+ #t)))))
+ (native-inputs
+ `(("pkg-config" ,(specification->package "pkg-config"))
+ ("autoconf" ,(specification->package "autoconf"))
+ ("automake" ,(specification->package "automake"))
+ ("texinfo" ,(specification->package "texinfo"))))
+ (inputs
+ `(("guile" ,(specification->package "guile"))
+ ("libgcrypt" ,(specification->package "libgcrypt"))))
+ (synopsis "Cryptography library for Guile using Libgcrypt")
+ (description
+ "Guile-Gcrypt provides a Guile 2.x interface to a subset of the
+GNU Libgcrypt crytographic library. It provides modules for cryptographic
+hash functions, message authentication codes (MAC), public-key cryptography,
+strong randomness, and more. It is implemented using the foreign function
+interface (FFI) of Guile.")
+ (license #f))) ;license:gpl3+
+ ((package . _)
+ package)))
+
(define* (build-program source version
#:optional (guile-version (effective-version))
#:key (pull-version 0))
@@ -212,10 +257,21 @@ person's version identifier."
(('gnu _ ...) #t)
(_ #f)))
+ (define fake-gcrypt-hash
+ ;; Fake (gcrypt hash) module; see below.
+ (scheme-file "hash.scm"
+ #~(define-module (gcrypt hash)
+ #:export (sha1 sha256))))
+
(with-imported-modules `(((guix config)
- => ,(make-config.scm
- #:libgcrypt
- (specification->package "libgcrypt")))
+ => ,(make-config.scm))
+
+ ;; To avoid relying on 'with-extensions', which was
+ ;; introduced in 0.15.0, provide a fake (gcrypt
+ ;; hash) just so that we can build modules, and
+ ;; adjust %LOAD-PATH later on.
+ ((gcrypt hash) => ,fake-gcrypt-hash)
+
,@(source-module-closure `((guix store)
(guix self)
(guix derivations)
@@ -237,13 +293,24 @@ person's version identifier."
(match %load-path
((front _ ...)
(unless (string=? front source) ;already done?
- (set! %load-path (list source front)))))))
-
- ;; Only load our own modules or those of Guile.
+ (set! %load-path
+ (list source
+ (string-append #$guile-gcrypt
+ "/share/guile/site/"
+ (effective-version))
+ front)))))))
+
+ ;; Only load Guile-Gcrypt, our own modules, or those
+ ;; of Guile.
(match %load-compiled-path
((front _ ... sys1 sys2)
- (set! %load-compiled-path
- (list front sys1 sys2)))))
+ (unless (string-prefix? #$guile-gcrypt front)
+ (set! %load-compiled-path
+ (list (string-append #$guile-gcrypt
+ "/lib/guile/"
+ (effective-version)
+ "/site-ccache")
+ front sys1 sys2))))))
(use-modules (guix store)
(guix self)
diff --git a/config-daemon.ac b/config-daemon.ac
index 6cf65bef1d..04f0fde3b2 100644
--- a/config-daemon.ac
+++ b/config-daemon.ac
@@ -48,7 +48,7 @@ if test "x$guix_build_daemon" = "xyes"; then
esac
case "$LIBGCRYPT_LIBDIR" in
- no)
+ no | "")
LIBGCRYPT_LIBS="-lgcrypt"
;;
*)
diff --git a/configure.ac b/configure.ac
index b34f15a77b..c83d4d8a28 100644
--- a/configure.ac
+++ b/configure.ac
@@ -130,6 +130,11 @@ if test "x$guix_cv_have_recent_guile_sqlite3" != "xyes"; then
AC_MSG_ERROR([A recent Guile-SQLite3 could not be found; please install it.])
fi
+GUILE_MODULE_AVAILABLE([have_guile_gcrypt], [(gcrypt hash)])
+if test "x$have_guile_gcrypt" != "xyes"; then
+ AC_MSG_ERROR([Guile-Gcrypt could not be found; please install it.])
+fi
+
dnl Make sure we have a full-fledged Guile.
GUIX_ASSERT_GUILE_FEATURES([regex posix socket net-db threads])
@@ -213,16 +218,10 @@ AC_ARG_WITH([libgcrypt-libdir],
esac])
dnl If none of the --with-libgcrypt-* options was used, try to determine the
-dnl absolute file name of libgcrypt.so.
+dnl the library directory.
case "x$LIBGCRYPT_PREFIX$LIBGCRYPT_LIBDIR" in
xnono)
GUIX_LIBGCRYPT_LIBDIR([LIBGCRYPT_LIBDIR])
- if test "x$LIBGCRYPT_LIBDIR" != x; then
- LIBGCRYPT="$LIBGCRYPT_LIBDIR/libgcrypt"
- else
- dnl 'config-daemon.ac' expects "no" in this case.
- LIBGCRYPT_LIBDIR="no"
- fi
;;
esac
diff --git a/doc/guix.texi b/doc/guix.texi
index 307f915dbb..19a497c746 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -147,6 +147,7 @@ Package Management
* Invoking guix gc:: Running the garbage collector.
* Invoking guix pull:: Fetching the latest Guix and distribution.
* Channels:: Customizing the package collection.
+* Invoking guix describe:: Display information about your Guix revision.
* Invoking guix pack:: Creating software bundles.
* Invoking guix archive:: Exporting and importing store files.
@@ -620,7 +621,8 @@ GNU Guix depends on the following packages:
@itemize
@item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.0.13 or
later, including 2.2.x;
-@item @url{http://gnupg.org/, GNU libgcrypt};
+@item @url{https://notabug.org/cwebber/guile-gcrypt, Guile-Gcrypt}, version
+0.1.0 or later;
@item
@uref{http://gnutls.org/, GnuTLS}, specifically its Guile bindings
(@pxref{Guile Preparations, how to install the GnuTLS bindings for
@@ -662,6 +664,7 @@ Unless @code{--disable-daemon} was passed to @command{configure}, the
following packages are also needed:
@itemize
+@item @url{http://gnupg.org/, GNU libgcrypt};
@item @url{http://sqlite.org, SQLite 3};
@item @url{http://gcc.gnu.org, GCC's g++}, with support for the
C++11 standard.
@@ -1696,6 +1699,7 @@ guix package -i emacs-guix
* Invoking guix gc:: Running the garbage collector.
* Invoking guix pull:: Fetching the latest Guix and distribution.
* Channels:: Customizing the package collection.
+* Invoking guix describe:: Display information about your Guix revision.
* Invoking guix pack:: Creating software bundles.
* Invoking guix archive:: Exporting and importing store files.
@end menu
@@ -1749,7 +1753,7 @@ collected.
@cindex reproducibility
@cindex reproducible builds
-Finally, Guix takes a @dfn{purely functional} approach to package
+Guix takes a @dfn{purely functional} approach to package
management, as described in the introduction (@pxref{Introduction}).
Each @file{/gnu/store} package directory name contains a hash of all the
inputs that were used to build that package---compiler, libraries, build
@@ -1777,6 +1781,15 @@ a package to quickly set up the right development environment for their
package, without having to manually install the dependencies of the
package into their profile (@pxref{Invoking guix environment}).
+@cindex replication, of software environments
+@cindex provenance tracking, of software artifacts
+All of Guix and its package definitions is version-controlled, and
+@command{guix pull} allows you to ``travel in time'' on the history of Guix
+itself (@pxref{Invoking guix pull}). This makes it possible to replicate a
+Guix instance on a different machine or at a later point in time, which in
+turn allows you to @emph{replicate complete software environments}, while
+retaining precise @dfn{provenance tracking} of the software.
+
@node Invoking guix package
@section Invoking @command{guix package}
@@ -2804,6 +2817,9 @@ Generation 3 Jun 13 2018 23:31:07 (current)
69 packages upgraded: borg@@1.1.6, cheese@@3.28.0, @dots{}
@end example
+@ref{Invoking guix describe, @command{guix describe}}, for other ways to
+describe the current status of Guix.
+
This @code{~/.config/guix/current} profile works like any other profile
created by @command{guix package} (@pxref{Invoking guix package}). That
is, you can list generations, roll back to the previous
@@ -2849,6 +2865,13 @@ is provided, the subset of generations that match @var{pattern}.
The syntax of @var{pattern} is the same as with @code{guix package
--list-generations} (@pxref{Invoking guix package}).
+@ref{Invoking guix describe}, for a way to display information about the
+current generation only.
+
+@item --profile=@var{profile}
+@itemx -p @var{profile}
+Use @var{profile} instead of @file{~/.config/guix/current}.
+
@item --bootstrap
Use the bootstrap Guile to build the latest Guix. This option is only
useful to Guix developers.
@@ -3017,6 +3040,9 @@ say, on another machine, by providing a channel specification in
(branch "dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb")))
@end lisp
+The @command{guix describe --format=channels} command can even generate this
+list of channels directly (@pxref{Invoking guix describe}).
+
At this point the two machines run the @emph{exact same Guix}, with access to
the @emph{exact same packages}. The output of @command{guix build gimp} on
one machine will be exactly the same, bit for bit, as the output of the same
@@ -3028,6 +3054,78 @@ This gives you super powers, allowing you to track the provenance of binary
artifacts with very fine grain, and to reproduce software environments at
will---some sort of ``meta reproducibility'' capabilities, if you will.
+@node Invoking guix describe
+@section Invoking @command{guix describe}
+
+@cindex reproducibility
+@cindex replicating Guix
+Often you may want to answer questions like: ``Which revision of Guix am I
+using?'' or ``Which channels am I using?'' This is useful information in many
+situations: if you want to @emph{replicate} an environment on a different
+machine or user account, if you want to report a bug or to determine what
+change in the channels you are using caused it, or if you want to record your
+system state for reproducibility purposes. The @command{guix describe}
+command answers these questions.
+
+When run from a @command{guix pull}ed @command{guix}, @command{guix describe}
+displays the channel(s) that it was built from, including their repository URL
+and commit IDs (@pxref{Channels}):
+
+@example
+$ guix describe
+Generation 10 Sep 03 2018 17:32:44 (current)
+ guix e0fa68c
+ repository URL: https://git.savannah.gnu.org/git/guix.git
+ branch: master
+ commit: e0fa68c7718fffd33d81af415279d6ddb518f727
+@end example
+
+If you're familiar with the Git version control system, this is similar in
+spirit to @command{git describe}; the output is also similar to that of
+@command{guix pull --list-generations}, but limited to the current generation
+(@pxref{Invoking guix pull, the @option{--list-generations} option}). Because
+the Git commit ID shown above unambiguously refers to a snapshot of Guix, this
+information is all it takes to describe the revision of Guix you're using, and
+also to replicate it.
+
+To make it easier to replicate Guix, @command{guix describe} can also be asked
+to return a list of channels instead of the human-readable description above:
+
+@example
+$ guix describe -f channels
+(list (channel
+ (name 'guix)
+ (url "https://git.savannah.gnu.org/git/guix.git")
+ (commit
+ "e0fa68c7718fffd33d81af415279d6ddb518f727")))
+@end example
+
+@noindent
+You can save this to a file and feed it to @command{guix pull -C} on some
+other machine or at a later point in time, which will instantiate @emph{this
+exact Guix revision} (@pxref{Invoking guix pull, the @option{-C} option}).
+From there on, since you're able to deploy the same revision of Guix, you can
+just as well @emph{replicate a complete software environment}. We humbly
+think that this is @emph{awesome}, and we hope you'll like it too!
+
+The details of the options supported by @command{guix describe} are as
+follows:
+
+@table @code
+@item --format=@var{format}
+@itemx -f @var{format}
+Produce output in the specified @var{format}, one of:
+
+@table @code
+@item human
+produce human-readable output;
+@item channels
+produce a list of channel specifications that can be passed to @command{guix
+pull -C} or installed as @file{~/.config/guix/channels.scm} (@pxref{Invoking
+guix pull}).
+@end table
+@end table
+
@node Invoking guix pack
@section Invoking @command{guix pack}
@@ -16823,6 +16921,13 @@ Extension package for @code{hpcguix-web}.
@item @code{menu} (default: @code{'()})
Additional entry in page @code{menu}.
+
+@item @code{channels} (default: @code{%default-channels})
+List of channels from which the package list is built (@pxref{Channels}).
+
+@item @code{package-list-expiration} (default: @code{(* 12 3600)})
+The expiration time, in seconds, after which the package list is rebuilt from
+the latest instances of the given channels.
@end table
See the hpcguix-web repository for a
@@ -16846,6 +16951,17 @@ A typical hpcguix-web service declaration looks like this:
(menu '(("/about" "ABOUT"))))))))
@end example
+@quotation Note
+The hpcguix-web service periodically updates the package list it publishes by
+pulling channels from Git. To that end, it needs to access X.509 certificates
+so that it can authenticate Git servers when communicating over HTTPS, and it
+assumes that @file{/etc/ssl/certs} contains those certificates.
+
+Thus, make sure to add @code{nss-certs} or another certificate package to the
+@code{packages} field of your configuration. @ref{X.509 Certificates}, for
+more information on X.509 certificates.
+@end quotation
+
@node Certificate Services
@subsubsection Certificate Services
diff --git a/gnu/local.mk b/gnu/local.mk
index 21f0482847..c3cd1d4084 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -729,6 +729,8 @@ dist_patch_DATA = \
%D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch \
%D%/packages/patches/ghc-dont-pass-linker-flags-via-response-files.patch \
%D%/packages/patches/ghostscript-CVE-2018-10194.patch \
+ %D%/packages/patches/ghostscript-CVE-2018-16509.patch \
+ %D%/packages/patches/ghostscript-bug-699708.patch \
%D%/packages/patches/ghostscript-no-header-id.patch \
%D%/packages/patches/ghostscript-no-header-uuid.patch \
%D%/packages/patches/ghostscript-no-header-creationdate.patch \
@@ -955,6 +957,7 @@ dist_patch_DATA = \
%D%/packages/patches/mcrypt-CVE-2012-4409.patch \
%D%/packages/patches/mcrypt-CVE-2012-4426.patch \
%D%/packages/patches/mcrypt-CVE-2012-4527.patch \
+ %D%/packages/patches/mes-nyacc-0.86.0.patch \
%D%/packages/patches/mesa-skip-disk-cache-test.patch \
%D%/packages/patches/meson-for-build-rpath.patch \
%D%/packages/patches/metabat-fix-compilation.patch \
@@ -991,6 +994,7 @@ dist_patch_DATA = \
%D%/packages/patches/nvi-assume-preserve-path.patch \
%D%/packages/patches/nvi-dbpagesize-binpower.patch \
%D%/packages/patches/nvi-db4.patch \
+ %D%/packages/patches/nyacc-binary-literals.patch \
%D%/packages/patches/nyx-show-header-stats-with-python3.patch \
%D%/packages/patches/ocaml-bisect-fix-camlp4-in-another-directory.patch \
%D%/packages/patches/ocaml-bitstring-fix-configure.patch \
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index e731569ae1..3b898c024a 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -1908,7 +1908,7 @@ lv2-c++-tools.")
(define-public openal
(package
(name "openal")
- (version "1.18.2")
+ (version "1.19.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1916,7 +1916,7 @@ lv2-c++-tools.")
version ".tar.bz2"))
(sha256
(base32
- "10kydm8701a2kppiss9sdidn1820cmzhqgx1b2bsa5dsgzic32lz"))))
+ "1mhf5bsb58s1xk6hvxl7ly7rd4rpl9z8h07xl1q94brywykg7bgi"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; no check target
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index 46cb13048d..fb4e3f4be3 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -36,7 +36,7 @@
#:use-module (guix store)
#:use-module (guix build-system gnu)
#:autoload (guix gnupg) (gnupg-verify*)
- #:autoload (guix hash) (port-sha256)
+ #:autoload (gcrypt hash) (port-sha256)
#:autoload (guix base32) (bytevector->nix-base32-string)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 7e993189d6..a47a5aad05 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -360,17 +360,64 @@ cutoffs. The procedures are directly applicable to identifying differentially
expressed genes in DNA microarray experiments.")
(license license:lgpl3)))
+(define-public r-graph
+ (package
+ (name "r-graph")
+ (version "1.58.0")
+ (source (origin
+ (method url-fetch)
+ (uri (bioconductor-uri "graph" version))
+ (sha256
+ (base32
+ "1zx445lk36g1s6i5dbhhf00nzzazyklfjxxjfax6q8hnhvgm9759"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-biocgenerics" ,r-biocgenerics)))
+ (home-page "https://bioconductor.org/packages/graph")
+ (synopsis "Handle graph data structures in R")
+ (description
+ "This package implements some simple graph handling capabilities for R.")
+ (license license:artistic2.0)))
+
+(define-public r-codedepends
+ (package
+ (name "r-codedepends")
+ (version "0.6.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "CodeDepends" version))
+ (sha256
+ (base32
+ "0l7kiv3awx50glf5cs841b4zzsff1ml90f0zr868ygvwsr4ps1hq"))))
+ (properties `((upstream-name . "CodeDepends")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-codetools" ,r-codetools)
+ ("r-graph" ,r-graph)
+ ("r-xml" ,r-xml)))
+ (home-page "http://cran.r-project.org/web/packages/CodeDepends")
+ (synopsis "Analysis of R code for reproducible research and code comprehension")
+ (description
+ "This package provides tools for analyzing R expressions or blocks of
+code and determining the dependencies between them. It focuses on R scripts,
+but can be used on the bodies of functions. There are many facilities
+including the ability to summarize or get a high-level view of code,
+determining dependencies between variables, code improvement suggestions.")
+ ;; Any version of the GPL
+ (license (list license:gpl2+ license:gpl3+))))
+
(define-public r-chippeakanno
(package
(name "r-chippeakanno")
- (version "3.14.0")
+ (version "3.14.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "ChIPpeakAnno" version))
(sha256
(base32
- "1kcnc3cnmrhdk1x7q3y6zsz09pgd3xn9xy1hfbxz48cajlb18ad0"))))
+ "1cn1hfc3nvsf2n3563lkmvwjxfbiygx7f84zk683p89gy7zi1gyj"))))
(properties `((upstream-name . "ChIPpeakAnno")))
(build-system r-build-system)
(propagated-inputs
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index f60fc4c84c..2d5ec6d170 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -51,6 +51,7 @@
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages bison)
+ #:use-module (gnu packages bioconductor)
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
@@ -1887,42 +1888,33 @@ other types of unwanted sequence from high-throughput sequencing reads.")
(define-public libbigwig
(package
(name "libbigwig")
- (version "0.1.4")
+ (version "0.4.2")
(source (origin
- (method url-fetch)
- (uri (string-append "https://github.com/dpryan79/libBigWig/"
- "archive/" version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/dpryan79/libBigWig.git")
+ (commit version)))
+ (file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "098rjh35pi4a9q83n8wiwvyzykjqj6l8q189p1xgfw4ghywdlvw1"))))
+ "0h2smg24v5srdcqzrmz2g23cmlp4va465mgx8r2z571sfz8pv454"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
+ #:tests? #f ; tests require access to the web
#:make-flags
(list "CC=gcc"
(string-append "prefix=" (assoc-ref %outputs "out")))
#:phases
(modify-phases %standard-phases
- (delete 'configure)
- (add-before 'check 'disable-curl-test
- (lambda _
- (substitute* "Makefile"
- (("./test/testRemote.*") ""))
- #t))
- ;; This has been fixed with the upstream commit 4ff6959cd8a0, but
- ;; there has not yet been a release containing this change.
- (add-before 'install 'create-target-dirs
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (mkdir-p (string-append out "/lib"))
- (mkdir-p (string-append out "/include"))
- #t))))))
+ (delete 'configure))))
(inputs
`(("zlib" ,zlib)
("curl" ,curl)))
(native-inputs
- `(("doxygen" ,doxygen)))
+ `(("doxygen" ,doxygen)
+ ;; Need for tests
+ ("python" ,python-2)))
(home-page "https://github.com/dpryan79/libBigWig")
(synopsis "C library for handling bigWig files")
(description
@@ -1933,13 +1925,13 @@ files.")
(define-public python-pybigwig
(package
(name "python-pybigwig")
- (version "0.2.5")
+ (version "0.3.12")
(source (origin
(method url-fetch)
(uri (pypi-uri "pyBigWig" version))
(sha256
(base32
- "0yrpdxg3y0sny25x4w22lv1k47jzccqjmg7j4bp0hywklvp0hg7d"))
+ "00w4kfnm2c5l7wdwr2nj1z5djv8kzgf7h1zhsgv6njff1rwr26g0"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -1955,6 +1947,8 @@ files.")
(substitute* "setup.py"
(("libs=\\[") "libs=[\"BigWig\", "))
#t)))))
+ (propagated-inputs
+ `(("python-numpy" ,python-numpy)))
(inputs
`(("libbigwig" ,libbigwig)
("zlib" ,zlib)
@@ -6378,14 +6372,14 @@ exploration of the results.")
(define-public r-annotationforge
(package
(name "r-annotationforge")
- (version "1.22.0")
+ (version "1.22.2")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "AnnotationForge" version))
(sha256
(base32
- "12ffj7h95adiya5mzyjxazqn1qgr434ajpabfcyhrj5v83s4vk65"))))
+ "17kmy7nvpyyj6w5jyrjciw87rydmmmc8q6cnwqjv1j7li9bp09gr"))))
(properties
`((upstream-name . "AnnotationForge")))
(build-system r-build-system)
@@ -6964,13 +6958,13 @@ Bioconductor, CRAN, and Github.")
(define-public r-biocviews
(package
(name "r-biocviews")
- (version "1.48.2")
+ (version "1.48.3")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "biocViews" version))
(sha256
(base32
- "01yiafayl1m5704xdd2cn3zjc78rs10dqyz66lr3qkf6d8w66938"))))
+ "1rxvwikqivsgxjjcazlszy8xgz346lfh5rw4llxw6fz38fjgb0k5"))))
(properties
`((upstream-name . "biocViews")))
(build-system r-build-system)
@@ -7183,13 +7177,13 @@ utilities for sequence data management under the ACNUC system.")
(define-public r-iranges
(package
(name "r-iranges")
- (version "2.14.10")
+ (version "2.14.11")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "IRanges" version))
(sha256
(base32
- "10ccw930vfmkskkrzbps14xglqlkxf588623dr7f1a9ckx7yr2p6"))))
+ "0wz63hysspyjihqadg91dbvllc5a61zzjrsz0b9498lihqc6m1la"))))
(properties
`((upstream-name . "IRanges")))
(build-system r-build-system)
@@ -7263,13 +7257,13 @@ names in their natural, rather than lexicographic, order.")
(define-public r-edger
(package
(name "r-edger")
- (version "3.22.2")
+ (version "3.22.3")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "edgeR" version))
(sha256
(base32
- "07py2g6vg9jbflwhc1hnzr2silbinrjwxq3mkq30nzjgf0n0hrf3"))))
+ "0w3jv29n0kkaiig8dbbdqy2dkng8xfaihch82mj9ci5hphrx3nng"))))
(properties `((upstream-name . "edgeR")))
(build-system r-build-system)
(propagated-inputs
@@ -7291,13 +7285,13 @@ CAGE.")
(define-public r-variantannotation
(package
(name "r-variantannotation")
- (version "1.26.0")
+ (version "1.26.1")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "VariantAnnotation" version))
(sha256
(base32
- "06bccdf57vja7m63chmgc4539lwng3q3b8zxn285fj8524l6mcn7"))))
+ "1r55ki951dj81qvy73knfcy69ik5vzkd56wnk3f6vvf9vngqb8jr"))))
(properties
`((upstream-name . "VariantAnnotation")))
(inputs
@@ -7329,13 +7323,13 @@ coding changes and predict coding outcomes.")
(define-public r-limma
(package
(name "r-limma")
- (version "3.36.1")
+ (version "3.36.3")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "limma" version))
(sha256
(base32
- "1982g5v35ilfgxm2vkq1p3j1bbir795pjvfzx4nzam2rlqqymbqm"))))
+ "0iiifszr6hcqih6kszdsbkx3gacfg3d7v8hdx0lbjqnjqgqz7pwk"))))
(build-system r-build-system)
(home-page "http://bioinf.wehi.edu.au/limma")
(synopsis "Package for linear models for microarray and RNA-seq data")
@@ -7384,13 +7378,13 @@ different technologies, including microarrays, RNA-seq, and quantitative PCR.")
(define-public r-genomicranges
(package
(name "r-genomicranges")
- (version "1.32.3")
+ (version "1.32.6")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "GenomicRanges" version))
(sha256
(base32
- "03gmka6rlz18vd4229796l5l3l6446v5cb90sn2nb5knjbp84hni"))))
+ "0p58yk2i5gqvjlkx548mnrr49wvs0xfcl06l9rqj2hi6hkkbvnp3"))))
(properties
`((upstream-name . "GenomicRanges")))
(build-system r-build-system)
@@ -7495,13 +7489,13 @@ powerful online queries from gene annotation to database mining.")
(define-public r-biocparallel
(package
(name "r-biocparallel")
- (version "1.14.1")
+ (version "1.14.2")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "BiocParallel" version))
(sha256
(base32
- "00qg1kg2l9qqpyjaw5q910cmf84vwfiw1fhsx3ig784gwinwgj6n"))))
+ "1llb5a62hn4yxpdgqdh2l7i5zd06mjkk8hagsna69cq65wv6iifm"))))
(properties
`((upstream-name . "BiocParallel")))
(build-system r-build-system)
@@ -7546,13 +7540,13 @@ biological sequences or sets of sequences.")
(define-public r-rsamtools
(package
(name "r-rsamtools")
- (version "1.32.0")
+ (version "1.32.3")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "Rsamtools" version))
(sha256
(base32
- "1s65y5wn4d0x8zsljg2kmhcl6r9884h95kr041j7hp49bmxg3an6"))))
+ "1hpjr22h33pf4fgv0sj83rqzv6l5l7s6fpmmqvchh45ikks1mnhq"))))
(properties
`((upstream-name . "Rsamtools")))
(build-system r-build-system)
@@ -7590,13 +7584,13 @@ files.")
(define-public r-delayedarray
(package
(name "r-delayedarray")
- (version "0.6.1")
+ (version "0.6.5")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "DelayedArray" version))
(sha256
(base32
- "0sjwszxdi0vkj2i2di5i46gh9chc660yr3gs5nk9qnqp77713zds"))))
+ "10b03zrnvz5isfh4z55hasya2m71lrfx10l5lm2sdmqs0gwkanrd"))))
(properties
`((upstream-name . "DelayedArray")))
(build-system r-build-system)
@@ -7685,13 +7679,13 @@ alignments.")
(define-public r-rtracklayer
(package
(name "r-rtracklayer")
- (version "1.40.3")
+ (version "1.40.6")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "rtracklayer" version))
(sha256
(base32
- "0kvsjdaypn1jnxbnsxpycildwdyxwnjkigfq8qm8mlyfc4ahdgy3"))))
+ "1wxxxlyps19dw3i0pw4mlm3kinnswsc35rgvlnbwvpnpjbca6w4l"))))
(build-system r-build-system)
(arguments
`(#:phases
@@ -7732,13 +7726,13 @@ as well as query and modify the browser state, such as the current viewport.")
(define-public r-genomicfeatures
(package
(name "r-genomicfeatures")
- (version "1.32.0")
+ (version "1.32.2")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "GenomicFeatures" version))
(sha256
(base32
- "1cqcl72q0k5wylw1brn4g4h7xzys1v06piry19cvp0gjcvm5sp7a"))))
+ "0kfyyg1ib8fkq2hxraal10z4bx3rg8figdskw4yhn1mbh6l42q5f"))))
(properties
`((upstream-name . "GenomicFeatures")))
(build-system r-build-system)
@@ -7794,25 +7788,6 @@ extracting the desired features in a convenient format.")
information about the latest version of the Gene Ontologies.")
(license license:artistic2.0)))
-(define-public r-graph
- (package
- (name "r-graph")
- (version "1.58.0")
- (source (origin
- (method url-fetch)
- (uri (bioconductor-uri "graph" version))
- (sha256
- (base32
- "1zx445lk36g1s6i5dbhhf00nzzazyklfjxxjfax6q8hnhvgm9759"))))
- (build-system r-build-system)
- (propagated-inputs
- `(("r-biocgenerics" ,r-biocgenerics)))
- (home-page "https://bioconductor.org/packages/graph")
- (synopsis "Handle graph data structures in R")
- (description
- "This package implements some simple graph handling capabilities for R.")
- (license license:artistic2.0)))
-
(define-public r-topgo
(package
(name "r-topgo")
@@ -8544,7 +8519,7 @@ paired-end data.")
`(("r-testthat" ,r-testthat)
;; During vignette building knitr checks that "pandoc-citeproc"
;; is in the PATH.
- ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc-with-pandoc-1)))
+ ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)))
(propagated-inputs
`(("r-biocgenerics" ,r-biocgenerics)
("r-biomart" ,r-biomart)
@@ -9328,14 +9303,14 @@ unmodeled, or latent sources of noise.")
(define-public r-seqminer
(package
(name "r-seqminer")
- (version "6.0")
+ (version "6.1")
(source
(origin
(method url-fetch)
(uri (cran-uri "seqminer" version))
(sha256
(base32
- "057j1l6dip35l1aivilapl2zv9db677b3di2pb3sfgq2sxg0ps3l"))))
+ "15yhg4vfc7jg1jnqb3371j00pgbmbyc9l1xx63hq1l3p34lazq2l"))))
(build-system r-build-system)
(inputs
`(("zlib" ,zlib)))
@@ -9382,14 +9357,14 @@ trait.")
(define-public r-maldiquant
(package
(name "r-maldiquant")
- (version "1.17")
+ (version "1.18")
(source
(origin
(method url-fetch)
(uri (cran-uri "MALDIquant" version))
(sha256
(base32
- "047s6007ydc38x8wm027mlb4mngz15n0d4238fr8h43wyll5zy0z"))))
+ "18nl214xjsxkcpbg79jkmw0yznwm5szyh2qb84n7ip46mm779ha6"))))
(properties `((upstream-name . "MALDIquant")))
(build-system r-build-system)
(home-page "https://cran.r-project.org/web/packages/MALDIquant")
@@ -9626,14 +9601,14 @@ structure (pcaRes) to provide a common interface to the PCA results.")
(define-public r-msnbase
(package
(name "r-msnbase")
- (version "2.6.1")
+ (version "2.6.3")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "MSnbase" version))
(sha256
(base32
- "0zrpx9r93q5ca2zdak5rs2m9sjm0wjdra1xfj3d3sx6p5gzfyg6n"))))
+ "15jhqg02ypmznc0wxksw56yij02csy678vqy531fdv86fsmypwa0"))))
(properties `((upstream-name . "MSnbase")))
(build-system r-build-system)
(propagated-inputs
@@ -9708,58 +9683,31 @@ and irregular enzymatic cleavages, mass measurement accuracy, etc.")
(define-public r-seurat
(package
(name "r-seurat")
- (version "2.3.2")
+ (version "2.3.4")
(source (origin
(method url-fetch)
(uri (cran-uri "Seurat" version))
(sha256
(base32
- "1sjpy5rrpvlpm6hs7qy7qpglgbp7zrgfybcsalpmjb51rhxhgcg1"))
- ;; Delete pre-built jar.
- (snippet
- '(begin (delete-file "inst/java/ModularityOptimizer.jar")
- #t))))
+ "0l8bv4i9nzz26mirnva10mq6pimibj24vk7vpvfypgn7xk4942hd"))))
(properties `((upstream-name . "Seurat")))
(build-system r-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'build-jar
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((classesdir "tmp-classes"))
- (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
- (mkdir classesdir)
- (with-output-to-file "manifest"
- (lambda _
- (display "Manifest-Version: 1.0
-Main-Class: ModularityOptimizer\n")))
- (and (zero? (apply system* `("javac" "-d" ,classesdir
- ,@(find-files "java" "\\.java$"))))
- (zero? (system* "jar"
- "-cmf" "manifest"
- "inst/java/ModularityOptimizer.jar"
- "-C" classesdir ".")))))))))
- (native-inputs
- `(("jdk" ,icedtea "jdk")))
(propagated-inputs
`(("r-ape" ,r-ape)
- ("r-caret" ,r-caret)
("r-cluster" ,r-cluster)
("r-cowplot" ,r-cowplot)
- ("r-diffusionmap" ,r-diffusionmap)
("r-dosnow" ,r-dosnow)
("r-dplyr" ,r-dplyr)
("r-dtw" ,r-dtw)
("r-fitdistrplus" ,r-fitdistrplus)
- ("r-fnn" ,r-fnn)
("r-foreach" ,r-foreach)
("r-fpc" ,r-fpc)
- ("r-gdata" ,r-gdata)
("r-ggplot2" ,r-ggplot2)
("r-ggridges" ,r-ggridges)
("r-gplots" ,r-gplots)
("r-hdf5r" ,r-hdf5r)
("r-hmisc" ,r-hmisc)
+ ("r-httr" ,r-httr)
("r-ica" ,r-ica)
("r-igraph" ,r-igraph)
("r-irlba" ,r-irlba)
@@ -9772,7 +9720,6 @@ Main-Class: ModularityOptimizer\n")))
("r-pbapply" ,r-pbapply)
("r-plotly" ,r-plotly)
("r-png" ,r-png)
- ("r-ranger" ,r-ranger)
("r-rann" ,r-rann)
("r-rcolorbrewer" ,r-rcolorbrewer)
("r-rcpp" ,r-rcpp)
@@ -9783,11 +9730,8 @@ Main-Class: ModularityOptimizer\n")))
("r-rocr" ,r-rocr)
("r-rtsne" ,r-rtsne)
("r-sdmtools" ,r-sdmtools)
- ("r-stringr" ,r-stringr)
- ("r-tclust" ,r-tclust)
("r-tidyr" ,r-tidyr)
- ("r-tsne" ,r-tsne)
- ("r-vgam" ,r-vgam)))
+ ("r-tsne" ,r-tsne)))
(home-page "http://www.satijalab.org/seurat")
(synopsis "Seurat is an R toolkit for single cell genomics")
(description
@@ -9860,14 +9804,14 @@ distribution.")
(define-public r-edaseq
(package
(name "r-edaseq")
- (version "2.14.0")
+ (version "2.14.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "EDASeq" version))
(sha256
(base32
- "1832pb3jkim4vrqzb8lajwx9r482bhww5n9nz3s6crvyamlp2dj0"))))
+ "0970w9d5ddqw1qxqqafdidkxh6hmcv9j5djwgnpz3fgl05kmysg8"))))
(properties `((upstream-name . "EDASeq")))
(build-system r-build-system)
(propagated-inputs
@@ -9987,14 +9931,14 @@ microarrays or GRanges for sequencing data.")
(define-public r-keggrest
(package
(name "r-keggrest")
- (version "1.20.0")
+ (version "1.20.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "KEGGREST" version))
(sha256
(base32
- "1349vidgl9m10l1rbrp3pkwwgi2xcbsw9h9z2xqbvg97lmqc4r8j"))))
+ "1ss0xd5570x570v01r6lp64rr1apjrzp0j62520pvm3g8knjhfvs"))))
(properties `((upstream-name . "KEGGREST")))
(build-system r-build-system)
(propagated-inputs
@@ -10207,14 +10151,14 @@ the fact that each of these packages implements a select methods.")
(define-public r-biovizbase
(package
(name "r-biovizbase")
- (version "1.28.0")
+ (version "1.28.2")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "biovizBase" version))
(sha256
(base32
- "0lkiqdr3ics6hgv47lwkykcy761823bbkhffbn4ykyfzyqwl4p67"))))
+ "0wc45j3hfn01i44bkkxjj3n8b8xzbkkcdv35mrkzb1f9yprkf8gq"))))
(properties `((upstream-name . "biovizBase")))
(build-system r-build-system)
(propagated-inputs
@@ -10231,6 +10175,7 @@ the fact that each of these packages implements a select methods.")
("r-hmisc" ,r-hmisc)
("r-iranges" ,r-iranges)
("r-rcolorbrewer" ,r-rcolorbrewer)
+ ("r-rlang" ,r-rlang)
("r-rsamtools" ,r-rsamtools)
("r-s4vectors" ,r-s4vectors)
("r-scales" ,r-scales)
@@ -10248,14 +10193,14 @@ effort and encourages consistency.")
(define-public r-ggbio
(package
(name "r-ggbio")
- (version "1.28.0")
+ (version "1.28.5")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "ggbio" version))
(sha256
(base32
- "0wszh3w8yia5zw758h837i1q35k99sn444y2hahcxqbdmmlbf7in"))))
+ "19s2v40fycwf44fl3lm791y635xzw67b30sq2g0qq4a6phjik42d"))))
(build-system r-build-system)
(propagated-inputs
`(("r-annotationdbi" ,r-annotationdbi)
@@ -10278,6 +10223,7 @@ effort and encourages consistency.")
("r-iranges" ,r-iranges)
("r-organismdbi" ,r-organismdbi)
("r-reshape2" ,r-reshape2)
+ ("r-rlang" ,r-rlang)
("r-rsamtools" ,r-rsamtools)
("r-rtracklayer" ,r-rtracklayer)
("r-s4vectors" ,r-s4vectors)
@@ -10732,14 +10678,14 @@ problems in genomics, brain imaging, astrophysics, and data mining.")
(define-public r-hdf5array
(package
(name "r-hdf5array")
- (version "1.8.0")
+ (version "1.8.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "HDF5Array" version))
(sha256
(base32
- "1l0276qxkhgdxsfck3jmi8jvnsr20g10gjki53g0mqa45wnhm3ck"))))
+ "1s44zgm9jg82bk4b8k3dh7xw7mxychlfm3grs8516mxnw91zpvy5"))))
(properties `((upstream-name . "HDF5Array")))
(build-system r-build-system)
(propagated-inputs
@@ -10878,13 +10824,13 @@ libraries.")
(define-public r-scater
(package
(name "r-scater")
- (version "1.8.0")
+ (version "1.8.4")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "scater" version))
(sha256
(base32
- "0bhpikgz3b9f510dawsay4zry9rlp8vjx5n6zvwbcpwrd94p3903"))))
+ "173lfpas2fqsp4xxsw01wkxd4496c5p8himw9b4r9z4npxkfyv16"))))
(build-system r-build-system)
(propagated-inputs
`(("r-beachmat" ,r-beachmat)
@@ -10922,14 +10868,14 @@ quality control.")
(define-public r-scran
(package
(name "r-scran")
- (version "1.8.2")
+ (version "1.8.4")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "scran" version))
(sha256
(base32
- "0nbn5x75gf9d0p18w7vpkbv30cpdqvp5bz8xvila0h7jla7xdyih"))))
+ "17vq9vb9ak7n4mcqpwnm9x3z91vmr7xnsgj8f45b8dbj7m0v126j"))))
(build-system r-build-system)
(propagated-inputs
`(("r-beachmat" ,r-beachmat)
@@ -12885,8 +12831,8 @@ once. This package provides tools to perform Drop-seq analyses.")
("r-rtracklayer" ,r-rtracklayer)
("r-rjson" ,r-rjson)
("salmon" ,salmon)
- ("ghc-pandoc" ,ghc-pandoc-1)
- ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc-with-pandoc-1)
+ ("ghc-pandoc" ,ghc-pandoc)
+ ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)
("python-wrapper" ,python-wrapper)
("python-pyyaml" ,python-pyyaml)))
(home-page "http://bioinformatics.mdc-berlin.de/pigx/")
@@ -12947,8 +12893,8 @@ expression report comparing samples in an easily configurable manner.")
("macs" ,macs)
("multiqc" ,multiqc)
("perl" ,perl)
- ("ghc-pandoc" ,ghc-pandoc-1)
- ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc-with-pandoc-1)
+ ("ghc-pandoc" ,ghc-pandoc)
+ ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)
("fastqc" ,fastqc)
("bowtie" ,bowtie)
("idr" ,idr)
@@ -13009,8 +12955,8 @@ in an easily configurable manner.")
("r-bookdown" ,r-bookdown)
("r-ggplot2" ,r-ggplot2)
("r-ggbio" ,r-ggbio)
- ("ghc-pandoc" ,ghc-pandoc-1)
- ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc-with-pandoc-1)
+ ("ghc-pandoc" ,ghc-pandoc)
+ ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)
("python-wrapper" ,python-wrapper)
("python-pyyaml" ,python-pyyaml)
("snakemake" ,snakemake-4)
@@ -13060,8 +13006,8 @@ methylation and segmentation.")
("python-magic" ,python-magic)
("python-numpy" ,python-numpy)
("python-loompy" ,python-loompy)
- ("ghc-pandoc" ,ghc-pandoc-1)
- ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc-with-pandoc-1)
+ ("ghc-pandoc" ,ghc-pandoc)
+ ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)
("samtools" ,samtools)
("snakemake" ,snakemake-4)
("star" ,star)
diff --git a/gnu/packages/ccache.scm b/gnu/packages/ccache.scm
index af06b741a7..af29cee565 100644
--- a/gnu/packages/ccache.scm
+++ b/gnu/packages/ccache.scm
@@ -30,7 +30,7 @@
(define-public ccache
(package
(name "ccache")
- (version "3.4.2")
+ (version "3.4.3")
(source
(origin
(method url-fetch)
@@ -38,7 +38,7 @@
version ".tar.xz"))
(sha256
(base32
- "1qpy6k9f06kpr6bxy26ncdxcszqv1skcncvczcvksgfncx1v3a0q"))))
+ "0jjzq5340qw3jm5gkajjkkb5wd0yqqy1dyjw3mf3jy15cakmazi9"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl) ; for test.sh
("which" ,(@ (gnu packages base) which))))
@@ -49,13 +49,6 @@
(lambda _
(substitute* '("unittest/test_hashutil.c" "test/suites/base.bash")
(("#!/bin/sh") (string-append "#!" (which "sh"))))
- #t))
- (add-before 'check 'munge-failing-test
- (lambda _
- ;; XXX The new ‘Multiple -fdebug-prefix-map’ test added in
- ;; 3.3.5 fails (why?). Force it to report success instead.
- (substitute* "test/suites/debug_prefix_map.bash"
- (("grep \"name\"") "true"))
#t)))))
(home-page "https://ccache.samba.org/")
(synopsis "Compiler cache")
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index e26983da3b..067a288004 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -32,6 +32,7 @@
#:use-module (gnu packages compression)
#:use-module (gnu packages databases)
#:use-module (gnu packages guile)
+ #:use-module (gnu packages gnupg)
#:use-module (gnu packages mail)
#:use-module (gnu packages package-management)
#:use-module (gnu packages perl)
@@ -223,39 +224,42 @@ their dependencies.")
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Wrap the 'cuirass' command to refer to the right modules.
(let* ((out (assoc-ref outputs "out"))
+ (gcrypt (assoc-ref inputs "guile-gcrypt"))
(json (assoc-ref inputs "guile-json"))
(sqlite (assoc-ref inputs "guile-sqlite3"))
(git (assoc-ref inputs "guile-git"))
(bytes (assoc-ref inputs "guile-bytestructures"))
(fibers (assoc-ref inputs "guile-fibers"))
(guix (assoc-ref inputs "guix"))
+ (deps (list gcrypt json sqlite git bytes fibers guix))
(guile (assoc-ref %build-inputs "guile"))
(effective (read-line
(open-pipe* OPEN_READ
(string-append guile "/bin/guile")
"-c" "(display (effective-version))")))
- (mods (string-append json "/share/guile/site/"
- effective ":"
- git "/share/guile/site/"
- effective ":"
- bytes "/share/guile/site/"
- effective ":"
- sqlite "/share/guile/site/"
- effective ":"
- fibers "/share/guile/site/"
- effective ":"
- guix "/share/guile/site/"
- effective)))
+ (mods (string-drop-right ;drop trailing colon
+ (string-join deps
+ (string-append "/share/guile/site/"
+ effective ":")
+ 'suffix)
+ 1))
+ (objs (string-drop-right
+ (string-join deps
+ (string-append "/lib/guile/" effective
+ "/site-ccache:")
+ 'suffix)
+ 1)))
;; Make sure 'cuirass' can find the 'evaluate' command, as
;; well as the relevant Guile modules.
(wrap-program (string-append out "/bin/cuirass")
`("PATH" ":" prefix (,(string-append out "/bin")))
`("GUILE_LOAD_PATH" ":" prefix (,mods))
- `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,mods)))
+ `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,objs)))
#t))))))
(inputs
`(("guile" ,guile-2.2)
("guile-fibers" ,guile-fibers)
+ ("guile-gcrypt" ,guile-gcrypt)
("guile-json" ,guile-json)
("guile-sqlite3" ,guile-sqlite3)
("guile-git" ,guile-git)
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index be178a5f99..b3fbea0b38 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -211,16 +211,16 @@ COCOMO model or user-provided parameters.")
(define-public cloc
(package
(name "cloc")
- (version "1.76")
+ (version "1.78")
(source
(origin
(method url-fetch)
(uri (string-append
- "https://github.com/AlDanial/cloc/releases/download/v" version
+ "https://github.com/AlDanial/cloc/releases/download/" version
"/cloc-" version ".tar.gz"))
(sha256
(base32
- "05srlvzwisr7y7ymvzb5yfdsrspja27ysqdmkwhiiivy84mq2gnl"))))
+ "176xklr2qsgxh9zdb565gib6pp4gsm585rz5fvyphgjy4i679wkv"))))
(build-system gnu-build-system)
(inputs
`(("coreutils" ,coreutils)
@@ -651,6 +651,19 @@ extensions over the standard utility.")
(license license:gpl3+)
(home-page "https://www.gnu.org/software/indent/")))
+(define-public indent-2.2.12
+ (package
+ (inherit indent)
+ (version "2.2.12")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/indent/indent-" version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "12xvcd16cwilzglv9h7sgh4h1qqjd1h8s48ji2dla58m4706hzg7"))))
+ (native-inputs `(("texinfo" ,texinfo)))))
+
(define-public amalgamate
(let* ((commit "c91f07eea1133aa184f652b8f1398eaf03586208")
(revision "0")
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 016d1b1e41..8144391729 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -43,6 +43,25 @@
#:use-module (gnu packages tls)
#:use-module (gnu packages web))
+(define-public r-clipr
+ (package
+ (name "r-clipr")
+ (version "0.4.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "clipr" version))
+ (sha256
+ (base32
+ "061x84ildc7g1p91yw5iyj8lpqdf4hqv36as85lw8c6qv9ywbsqv"))))
+ (build-system r-build-system)
+ (home-page "https://github.com/mdlincoln/clipr")
+ (synopsis "Read and write from the system clipboard")
+ (description
+ "This package provides simple utility functions to read from and write to
+the system clipboards.")
+ (license license:gpl3)))
+
(define-public r-tidyverse
(package
(name "r-tidyverse")
@@ -143,20 +162,23 @@ package is a port of the Python package @code{cssselect}.")
(define-public r-reprex
(package
(name "r-reprex")
- (version "0.1.2")
+ (version "0.2.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "reprex" version))
(sha256
(base32
- "105d9vsmqfilgpw8psfb2wyiz1hvcycvh4cqhb3ab37lm3rcavvs"))))
+ "1l44pxjiz3g0jkk3v6rg5jps3llihfiah0qyv40s0bxvxa6gm8v9"))))
(build-system r-build-system)
(propagated-inputs
`(("r-callr" ,r-callr)
+ ("r-clipr" ,r-clipr)
("r-knitr" ,r-knitr)
+ ("r-rlang" ,r-rlang)
("r-rmarkdown" ,r-rmarkdown)
- ("r-whisker" ,r-whisker)))
+ ("r-whisker" ,r-whisker)
+ ("r-withr" ,r-withr)))
(home-page "https://github.com/tidyverse/reprex")
(synopsis "Prepare reproducible R code examples for sharing")
(description
@@ -171,17 +193,18 @@ such as copy/paste from an R session.")
(define-public r-callr
(package
(name "r-callr")
- (version "2.0.4")
+ (version "3.0.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "callr" version))
(sha256
(base32
- "1053qqq632z94pqq2v5dynjpgyv1b1c8zvidmcllw7zn8zha8gqf"))))
+ "1rxbxy6kn7dj90z9hpppr9cnpvnxzknba2dwrdp0lrk5dh462qz3"))))
(build-system r-build-system)
(propagated-inputs
- `(("r-r6" ,r-r6)
+ `(("r-base64enc" ,r-base64enc)
+ ("r-r6" ,r-r6)
("r-processx" ,r-processx)))
(home-page "https://github.com/r-lib/callr#readme")
(synopsis "Call R from R")
@@ -369,14 +392,14 @@ colors are provided.")
(define-public r-glue
(package
(name "r-glue")
- (version "1.2.0")
+ (version "1.3.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "glue" version))
(sha256
(base32
- "0vi9y8ix95g6hjqdz9c9y4119apbdjcypdv0ag8cl6vaxqs5n9qr"))))
+ "1vhw5497lpfr4m8lcx9bs0fgdp4ax0sycrk6n8yksp33qd25m7kq"))))
(build-system r-build-system)
(home-page "https://github.com/tidyverse/glue")
(synopsis "Interpreted string literals")
@@ -430,14 +453,14 @@ error stream.")
(define-public r-pls
(package
(name "r-pls")
- (version "2.6-0")
+ (version "2.7-0")
(source
(origin
(method url-fetch)
(uri (cran-uri "pls" version))
(sha256
(base32
- "15j59p5x0rkdrk7iqzkipsy50rsyjl31w8zxc4w3v1j5gzxhi1rx"))))
+ "0xaqqgmdvfh7g7v1m4bcwjqzph68b9cq3bn4kjisfsadl54i5p2x"))))
(build-system r-build-system)
(home-page "http://mevik.net/work/software/pls.html")
(synopsis "Partial Least Squares and Principal Component Regression")
@@ -480,6 +503,60 @@ print, summary, plot, update, etc.
processes. Most of its code is based on the @code{psutil} Python package.")
(license license:bsd-3)))
+(define-public r-pkgbuild
+ (package
+ (name "r-pkgbuild")
+ (version "1.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "pkgbuild" version))
+ (sha256
+ (base32
+ "10iz8057mixl9j73pq2cbp4ib6dadfsgi3fcsjjm7l3wwb9issd9"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-callr" ,r-callr)
+ ("r-crayon" ,r-crayon)
+ ("r-desc" ,r-desc)
+ ("r-r6" ,r-r6)
+ ("r-rprojroot" ,r-rprojroot)
+ ("r-withr" ,r-withr)))
+ (home-page "https://github.com/r-pkgs/pkgbuild")
+ (synopsis "Find tools needed to build R packages")
+ (description
+ "This package provides functions used to build R packages. It locates
+compilers needed to build R packages on various platforms and ensures the PATH
+is configured appropriately so R can use them.")
+ (license license:gpl3)))
+
+(define-public r-pkgload
+ (package
+ (name "r-pkgload")
+ (version "1.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "pkgload" version))
+ (sha256
+ (base32
+ "1rjj229nq9fsl4ki4m75ybsavjgpqqhsr1zjzapwicsrxv6212px"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-desc" ,r-desc)
+ ("r-pkgbuild" ,r-pkgbuild)
+ ("r-rlang" ,r-rlang)
+ ("r-rprojroot" ,r-rprojroot)
+ ("r-rstudioapi" ,r-rstudioapi)
+ ("r-withr" ,r-withr)))
+ (home-page "https://github.com/r-lib/pkgload")
+ (synopsis "Simulate package installation and attach")
+ (description
+ "This package simulates the process of installing a package and then
+attaching it. This is a key part of the @code{devtools} package as it allows
+you to rapidly iterate while developing a package.")
+ (license license:gpl3)))
+
(define-public r-rcpp
(package
(name "r-rcpp")
@@ -1678,14 +1755,14 @@ provided.")
(define-public r-ipred
(package
(name "r-ipred")
- (version "0.9-6")
+ (version "0.9-7")
(source
(origin
(method url-fetch)
(uri (cran-uri "ipred" version))
(sha256
(base32
- "1vrw1pqcpnc04x1r2h9grdfm6bivs358sww5gg90jwlvxcw69lxq"))))
+ "0q53cqs46501wsd4cmfsmr78l8nv1hkbamk9m0ns5qy02df5r254"))))
(build-system r-build-system)
(propagated-inputs
`(("r-class" ,r-class)
@@ -1739,22 +1816,23 @@ created using basic graphics.")
(define-public r-broom
(package
(name "r-broom")
- (version "0.4.5")
+ (version "0.5.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "broom" version))
(sha256
(base32
- "1mrrqqw1bmjf2v88ziqwb5y86g29h0a3rsx2jpw0hrzrzb8i5kcb"))))
+ "1r3831vq0fd5sh5841xr844sghg88z7ws91hg4jgnzbbkxfjp4ag"))))
(build-system r-build-system)
(propagated-inputs
- `(("r-dplyr" ,r-dplyr)
+ `(("r-backports" ,r-backports)
+ ("r-dplyr" ,r-dplyr)
("r-nlme" ,r-nlme)
- ("r-plyr" ,r-plyr)
- ("r-psych" ,r-psych)
+ ("r-purrr" ,r-purrr)
("r-reshape2" ,r-reshape2)
("r-stringr" ,r-stringr)
+ ("r-tibble" ,r-tibble)
("r-tidyr" ,r-tidyr)))
(home-page "https://github.com/tidyverse/broom")
(synopsis "Convert statistical analysis objects into tidy data frames")
@@ -1903,20 +1981,72 @@ can be computed between character vectors while taking proper care of encoding
or between integer vectors representing generic sequences.")
(license license:gpl3+)))
+(define-public r-ucminf
+ (package
+ (name "r-ucminf")
+ (version "1.1-4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "ucminf" version))
+ (sha256
+ (base32
+ "01vggwg1w71k98qs6fhb0x1843vi322mf4g3hbclks94kcpkisx2"))))
+ (build-system r-build-system)
+ (native-inputs `(("gfortran" ,gfortran)))
+ (home-page "https://cran.r-project.org/web/packages/ucminf/")
+ (synopsis "General-purpose unconstrained non-linear optimization")
+ (description
+ "This package provides an implementation of an algorithm for
+general-purpose unconstrained non-linear optimization. The algorithm is of
+quasi-Newton type with BFGS updating of the inverse Hessian and soft line
+search with a trust region type monitoring of the input to the line search
+algorithm. The interface of @code{ucminf} is designed for easy interchange
+with the package @code{optim}.")
+ (license license:gpl2+)))
+
+(define-public r-ordinal
+ (package
+ (name "r-ordinal")
+ (version "2018.8-25")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "ordinal" version))
+ (sha256
+ (base32
+ "03cv9hcrw8j3lhamzhz8sk2p3ns4cw9z41x49h301k2b3pajv43h"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-mass" ,r-mass)
+ ("r-matrix" ,r-matrix)
+ ("r-numderiv" ,r-numderiv)
+ ("r-ucminf" ,r-ucminf)))
+ (home-page "https://github.com/runehaubo/ordinal")
+ (synopsis "Regression models for ordinal data")
+ (description
+ "This package provides an implementation of cumulative link (mixed)
+models also known as ordered regression models, proportional odds models,
+proportional hazards models for grouped survival times and ordered models.
+Estimation is via maximum likelihood and mixed models are fitted with the
+Laplace approximation and adaptive Gauss-Hermite quadrature.")
+ (license license:gpl2+)))
+
(define-public r-jomo
(package
(name "r-jomo")
- (version "2.6-3")
+ (version "2.6-4")
(source
(origin
(method url-fetch)
(uri (cran-uri "jomo" version))
(sha256
(base32
- "14s8q0j5zgl1g1pfxg3a4y1jzvs0wl61ir4992wsj7safskj7zvi"))))
+ "05g2rj9g7rgyb22b0gybw042nydyqsqsb31v05hifzavri8ij01x"))))
(build-system r-build-system)
(propagated-inputs
`(("r-lme4" ,r-lme4)
+ ("r-ordinal" ,r-ordinal)
("r-survival" ,r-survival)))
(home-page "https://cran.r-project.org/web/packages/jomo/")
(synopsis "Multilevel Joint Modelling Multiple Imputation")
@@ -1932,14 +2062,14 @@ impute compatibly with the substantive model.")
(define-public r-pan
(package
(name "r-pan")
- (version "1.4")
+ (version "1.6")
(source
(origin
(method url-fetch)
(uri (cran-uri "pan" version))
(sha256
(base32
- "1p3nigmhrnlch86g89hn7l0wvkifx3k9n59g0psi95yck43kza76"))))
+ "1dk3jjj826p7xrz10qz04vyc068xnypg7bp0pj4c32z3da0xzh5d"))))
(build-system r-build-system)
(native-inputs `(("gfortran" ,gfortran)))
(home-page "https://cran.r-project.org/web/packages/pan/")
@@ -1977,14 +2107,14 @@ analysis of multiply imputed data sets.")
(define-public r-mice
(package
(name "r-mice")
- (version "3.1.0")
+ (version "3.3.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "mice" version))
(sha256
(base32
- "0xpn215yfzib4hw09cwilnyg9zbvq460njavfvm84mvgwbm25byi"))))
+ "1p0ipbqk5aqdi7iikw3qrjyvdi9sdhpnw1h5mwakwvv0yl0pzbyx"))))
(build-system r-build-system)
(propagated-inputs
`(("r-broom" ,r-broom)
@@ -2182,17 +2312,16 @@ training models for classification or ranking.")
(define-public r-xts
(package
(name "r-xts")
- (version "0.10-2")
+ (version "0.11-0")
(source
(origin
(method url-fetch)
(uri (cran-uri "xts" version))
(sha256
(base32
- "1i11fczks4lh8rpi6xbm9bm7f3jpcp6xw03kv178g3n3361qhmc1"))))
+ "1v50yn4bsjzdyk7r90isn6dxmpkapillrhpx3gqsshd180vwzqk9"))))
(build-system r-build-system)
(propagated-inputs `(("r-zoo" ,r-zoo)))
- (native-inputs `(("gfortran" ,gfortran)))
(home-page "https://github.com/joshuaulrich/xts")
(synopsis "Extensible time series")
(description
@@ -2669,18 +2798,19 @@ display.")
(define-public r-pillar
(package
(name "r-pillar")
- (version "1.2.3")
+ (version "1.3.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "pillar" version))
(sha256
(base32
- "1rzhssprqgam1nq3s0f5rzxhxsq02azcghvxf6k8kmsmddf1n7f8"))))
+ "1q6arybmfqxhp5zqj1fri5pb8v7ywcv7bmgf81rrmgl892p4bn5f"))))
(build-system r-build-system)
(propagated-inputs
`(("r-cli" ,r-cli)
("r-crayon" ,r-crayon)
+ ("r-fansi" ,r-fansi)
("r-rlang" ,r-rlang)
("r-utf8" ,r-utf8)))
(home-page "https://github.com/r-lib/pillar")
@@ -2713,14 +2843,14 @@ terminals.")
(define-public r-tinytex
(package
(name "r-tinytex")
- (version "0.6")
+ (version "0.8")
(source
(origin
(method url-fetch)
(uri (cran-uri "tinytex" version))
(sha256
(base32
- "16y9dldaff2kx1fkm92p7zlph0dcrdmlmavpdgf5y9jbhmc8g83f"))))
+ "1bgpr5i5399jf9n6pg2mm4aamisbhppg082ad0wv1j4g0rlxf1gy"))))
(build-system r-build-system)
(propagated-inputs
`(("r-xfun" ,r-xfun)))
@@ -2737,17 +2867,18 @@ automatically.")
(define-public r-metap
(package
(name "r-metap")
- (version "0.9")
+ (version "1.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "metap" version))
(sha256
(base32
- "03vg0mb6q7j2z0pkxykbak0hcp6dcak7zxs1lw9hswz9kqrq5jhz"))))
+ "18rzvqfzyk8fn54gjvy2qd21nk9w69j7ihww477ma3f3ab6i982h"))))
(build-system r-build-system)
(propagated-inputs
- `(("r-lattice" ,r-lattice)))
+ `(("r-lattice" ,r-lattice)
+ ("r-rdpack" ,r-rdpack)))
(home-page "http://www.dewey.myzen.co.uk/meta/meta.html")
(synopsis "Meta-analysis of significance values")
(description
@@ -2781,14 +2912,14 @@ supports arbitrary vertex/edge/graph attributes.")
(define-public r-statnet-common
(package
(name "r-statnet-common")
- (version "4.1.2")
+ (version "4.1.4")
(source
(origin
(method url-fetch)
(uri (cran-uri "statnet.common" version))
(sha256
(base32
- "0h3g687214rlycca0fjrpy1lqbqsrginxqhmhl2mb2jinqqxcfgd"))))
+ "14dydm4c4dzc4v6ldxpn04q551nczzfablwibrd8lzgja8x9ksic"))))
(properties
`((upstream-name . "statnet.common")))
(build-system r-build-system)
@@ -3010,21 +3141,20 @@ University Press, 2000.")
(define-public r-tsa
(package
(name "r-tsa")
- (version "1.01")
+ (version "1.2")
(source
(origin
(method url-fetch)
(uri (cran-uri "TSA" version))
(sha256
(base32
- "0cm97hwxm6vfgy9mc3kgwq6dnmn86p8a4avnfjbai048qnwrn6hx"))))
+ "0gjfqibwdznz0nka95k4fjm935svxjpnqfywwz403crn2lh30h6q"))))
(properties `((upstream-name . "TSA")))
(build-system r-build-system)
(propagated-inputs
`(("r-leaps" ,r-leaps)
("r-locfit" ,r-locfit)
- ("r-mgcv" ,r-mgcv)
- ("r-tseries" ,r-tseries)))
+ ("r-mgcv" ,r-mgcv)))
(home-page "http://www.stat.uiowa.edu/~kchan/TSA.htm")
(synopsis "Time series analysis")
(description
@@ -3277,14 +3407,14 @@ exponentiation.")
(define-public r-heatmaply
(package
(name "r-heatmaply")
- (version "0.14.1")
+ (version "0.15.2")
(source
(origin
(method url-fetch)
(uri (cran-uri "heatmaply" version))
(sha256
(base32
- "03p2caclhfgqgpx3wwck5h06jy3mxgs05gjmwkb7hmwghkjh41jc"))))
+ "0h8s5djzj4mrmaswlcaap6jbwxrkbzc43bbqik3qf8vrqz335w04"))))
(build-system r-build-system)
(propagated-inputs
`(("r-assertthat" ,r-assertthat)
@@ -3633,14 +3763,14 @@ multivariate plot methods.")
(define-public r-fnn
(package
(name "r-fnn")
- (version "1.1")
+ (version "1.1.2.1")
(source
(origin
(method url-fetch)
(uri (cran-uri "FNN" version))
(sha256
(base32
- "1kncmiaraq1mrykb9fj3fsxswabk3l71fnp1vks0x9aay5xfk8mj"))))
+ "1n61jrcmakqif8f827x4qnlhm2jqpj5fgjj65c4p0kdd8lzw8pqp"))))
(properties `((upstream-name . "FNN")))
(build-system r-build-system)
(home-page "https://cran.r-project.org/web/packages/FNN")
@@ -3925,14 +4055,14 @@ simple method for converting between file types.")
(define-public r-maptools
(package
(name "r-maptools")
- (version "0.9-2")
+ (version "0.9-3")
(source
(origin
(method url-fetch)
(uri (cran-uri "maptools" version))
(sha256
(base32
- "075lmb3b62171cw2dg8fv1vwmvfzg39r1ji7jwb8s5k9dz88ry1v"))))
+ "0hxbv01im9zk1qrwgigpc510w6x0kzdzip4gx2jzfqmmwr8m17r8"))))
(build-system r-build-system)
(propagated-inputs
`(("r-foreign" ,r-foreign)
@@ -3953,14 +4083,14 @@ exchanging spatial objects with other R packages.")
(define-public r-later
(package
(name "r-later")
- (version "0.7.3")
+ (version "0.7.4")
(source
(origin
(method url-fetch)
(uri (cran-uri "later" version))
(sha256
(base32
- "04j2phymxgkk4hv9pfa5w3s98w5d7fvm11blrdhxmray4n618msw"))))
+ "125zc499gj702x2bch95lsfzk2qb4dzv3604x9afym2i3ylrmm64"))))
(build-system r-build-system)
(propagated-inputs
`(("r-bh" ,r-bh)
@@ -4047,33 +4177,6 @@ to the cluster management tool @code{sfCluster}, but can also used without
it.")
(license license:gpl2+)))
-(define-public r-codedepends
- (package
- (name "r-codedepends")
- (version "0.5-3")
- (source
- (origin
- (method url-fetch)
- (uri (cran-uri "CodeDepends" version))
- (sha256
- (base32
- "03p82s0abca2jimzqvxdzykfzca7c7fhm5xsjxybcksr4gggr5sc"))))
- (properties `((upstream-name . "CodeDepends")))
- (build-system r-build-system)
- (propagated-inputs
- `(("r-codetools" ,r-codetools)
- ("r-xml" ,r-xml)))
- (home-page "http://cran.r-project.org/web/packages/CodeDepends")
- (synopsis "Analysis of R code for reproducible research and code comprehension")
- (description
- "This package provides tools for analyzing R expressions or blocks of
-code and determining the dependencies between them. It focuses on R scripts,
-but can be used on the bodies of functions. There are many facilities
-including the ability to summarize or get a high-level view of code,
-determining dependencies between variables, code improvement suggestions.")
- ;; Any version of the GPL
- (license (list license:gpl2+ license:gpl3+))))
-
(define-public r-rappdirs
(package
(name "r-rappdirs")
@@ -4163,14 +4266,14 @@ obtain a better initial configuration in non-metric MDS.")
(define-public r-reticulate
(package
(name "r-reticulate")
- (version "1.8")
+ (version "1.10")
(source
(origin
(method url-fetch)
(uri (cran-uri "reticulate" version))
(sha256
(base32
- "0zwb4ikf021nw7axdn7qlr6bq4xkph3anfy314idkspy1iil4nmr"))))
+ "0bz3lxbisjwn6cv23090zivpy0bxcncr82g5qja13l37i8xnvqsq"))))
(build-system r-build-system)
(inputs `(("python" ,python)))
(propagated-inputs
@@ -4280,14 +4383,14 @@ and adds the annotation to the plot.")
(define-public r-ggpubr
(package
(name "r-ggpubr")
- (version "0.1.7")
+ (version "0.1.8")
(source
(origin
(method url-fetch)
(uri (cran-uri "ggpubr" version))
(sha256
(base32
- "110ny8p41kmbz0a5rl0mv9cqpjkx6yr3ybflp1r0fmcvhwv7cr3i"))))
+ "0psl2zndm4wk6nnj1nv305islpxfvfgd87gjh2ph8yqn4mxpnfi1"))))
(build-system r-build-system)
(propagated-inputs
`(("r-cowplot" ,r-cowplot)
@@ -4296,8 +4399,10 @@ and adds the annotation to the plot.")
("r-ggrepel" ,r-ggrepel)
("r-ggsci" ,r-ggsci)
("r-ggsignif" ,r-ggsignif)
+ ("r-glue" ,r-glue)
("r-gridextra" ,r-gridextra)
("r-magrittr" ,r-magrittr)
+ ("r-polynom" ,r-polynom)
("r-purrr" ,r-purrr)
("r-scales" ,r-scales)
("r-tidyr" ,r-tidyr)))
@@ -4424,6 +4529,27 @@ packages. It contains also functions for simplifying some clustering analysis
steps and provides ggplot2-based elegant data visualization.")
(license license:gpl2)))
+(define-public r-fansi
+ (package
+ (name "r-fansi")
+ (version "0.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "fansi" version))
+ (sha256
+ (base32
+ "135qj7bcc3mwn0vg55hiiadf66lx6zaxvkicfmfw9x0zr7ah2r6x"))))
+ (build-system r-build-system)
+ (native-inputs
+ `(("r-knitr" ,r-knitr))) ; for vignettes
+ (home-page "https://github.com/brodieG/fansi")
+ (synopsis "ANSI control sequence aware string functions")
+ (description
+ "This package provides counterparts to R string manipulation functions
+that account for the effects of ANSI text formatting control sequences.")
+ (license license:gpl2+)))
+
(define-public r-nbclust
(package
(name "r-nbclust")
@@ -4495,6 +4621,303 @@ patterned after functions in the Python @code{itertools} module, and others
patterned after functions in the snow package.")
(license license:gpl2)))
+(define-public r-polynom
+ (package
+ (name "r-polynom")
+ (version "1.3-9")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "polynom" version))
+ (sha256
+ (base32
+ "1s4xxv5rvpigawknvq27v9vzvs83phfsj5h8mim2lmf5bj950nnk"))))
+ (build-system r-build-system)
+ (home-page "https://cran.r-project.org/web/packages/polynom/")
+ (synopsis "Functions for univariate polynomial manipulations")
+ (description
+ "This package provides a collection of functions to implement a class for
+univariate polynomial manipulations.")
+ (license license:gpl2)))
+
+(define-public r-gbrd
+ (package
+ (name "r-gbrd")
+ (version "0.4-11")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "gbRd" version))
+ (sha256
+ (base32
+ "06x97rw5i6v6cgjxkfhxnw4dn7lghn5q6ra7ri5ag1x9dkfzcl82"))))
+ (properties `((upstream-name . "gbRd")))
+ (build-system r-build-system)
+ (home-page "https://cran.r-project.org/web/packages/gbRd/")
+ (synopsis "Utilities for processing Rd objects and files")
+ (description
+ "This package provides utilities for processing Rd objects and files.
+Extract argument descriptions and other parts of the help pages of
+functions.")
+ (license license:gpl2+)))
+
+(define-public r-rdpack
+ (package
+ (name "r-rdpack")
+ (version "0.9-0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "Rdpack" version))
+ (sha256
+ (base32
+ "067w0w6kza0hkzcnx58danl83yfvl9yjacr47mnid2bg856gdd1b"))))
+ (properties `((upstream-name . "Rdpack")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-bibtex" ,r-bibtex)
+ ("r-gbrd" ,r-gbrd)))
+ (home-page "https://github.com/GeoBosh/Rdpack")
+ (synopsis "Update and manipulate Rd documentation objects")
+ (description
+ "This package provides functions for manipulation of R documentation
+objects, including functions @code{reprompt()} and @code{ereprompt()} for
+updating Rd documentation for functions, methods and classes; it also includes
+Rd macros for citations and import of references from bibtex files for use in
+Rd files and roxygen2 comments, as well as many functions for manipulation of
+references and Rd files.")
+ (license license:gpl2+)))
+
+(define-public r-officer
+ (package
+ (name "r-officer")
+ (version "0.3.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "officer" version))
+ (sha256
+ (base32
+ "14b6ii9h3fi5g8ja929mfhxps9r7x78flqjdy437y9aygkhmiz2i"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-base64enc" ,r-base64enc)
+ ("r-digest" ,r-digest)
+ ("r-htmltools" ,r-htmltools)
+ ("r-magrittr" ,r-magrittr)
+ ("r-r6" ,r-r6)
+ ("r-rcpp" ,r-rcpp)
+ ("r-uuid" ,r-uuid)
+ ("r-xml2" ,r-xml2)
+ ("r-zip" ,r-zip)))
+ (home-page "https://davidgohel.github.io/officer")
+ (synopsis "Manipulation of Word and PowerPoint documents")
+ (description
+ "This package provides tools to access and manipulate Word and PowerPoint
+documents from R. The package focuses on tabular and graphical reporting from
+R; it also provides two functions that let users get document content into
+data objects. A set of functions lets add and remove images, tables and
+paragraphs of text in new or existing documents. When working with PowerPoint
+presentations, slides can be added or removed; shapes inside slides can also
+be added or removed. When working with Word documents, a cursor can be used
+to help insert or delete content at a specific location in the document.")
+ (license license:gpl3)))
+
+(define-public r-snakecase
+ (package
+ (name "r-snakecase")
+ (version "0.9.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "snakecase" version))
+ (sha256
+ (base32
+ "1g6xai53dl24ws0mwhqrkcv583ziaq505cv3z8v5dhjgy98kilyj"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-stringi" ,r-stringi)
+ ("r-stringr" ,r-stringr)))
+ (home-page "https://github.com/Tazinho/snakecase")
+ (synopsis "Convert strings into any case")
+ (description
+ "This package provides a consistent, flexible and easy to use tool to
+parse and convert strings into cases like snake or camel among others.")
+ (license license:gpl3)))
+
+(define-public r-prediction
+ (package
+ (name "r-prediction")
+ (version "0.3.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "prediction" version))
+ (sha256
+ (base32
+ "19d7312f5lkqfglfvlgssnvyw7gl161s0xradcry44r1i6qp05j1"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-data-table" ,r-data-table)))
+ (home-page "https://github.com/leeper/prediction")
+ (synopsis "Tidy, type-safe prediction methods")
+ (description
+ "This package provides the @code{prediction()} function, a type-safe
+alternative to @code{predict()} that always returns a data frame. The package
+currently supports common model types (e.g., @code{\"lm\"}, @code{\"glm\"})
+from the @code{stats} package, as well as numerous other model classes from
+other add-on packages.")
+ (license license:expat)))
+
+(define-public r-sjlabelled
+ (package
+ (name "r-sjlabelled")
+ (version "1.0.13")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "sjlabelled" version))
+ (sha256
+ (base32
+ "0xizj7mrhnbn8kwjgm076si9w68a7lgrx4vj1sbqmv9jx055h8wv"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-broom" ,r-broom)
+ ("r-dplyr" ,r-dplyr)
+ ("r-haven" ,r-haven)
+ ("r-magrittr" ,r-magrittr)
+ ("r-prediction" ,r-prediction)
+ ("r-purrr" ,r-purrr)
+ ("r-rlang" ,r-rlang)
+ ("r-snakecase" ,r-snakecase)
+ ("r-tibble" ,r-tibble)
+ ("r-tidyselect" ,r-tidyselect)))
+ (home-page "https://github.com/strengejacke/sjlabelled")
+ (synopsis "Labelled data utility functions")
+ (description
+ "This package provides a collection of functions dealing with labelled
+data, like reading and writing data between R and other statistical software
+packages. This includes easy ways to get, set or change value and variable
+label attributes, to convert labelled vectors into factors or numeric (and
+vice versa), or to deal with multiple declared missing values.")
+ (license license:gpl3)))
+
+(define-public r-sjmisc
+ (package
+ (name "r-sjmisc")
+ (version "2.7.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "sjmisc" version))
+ (sha256
+ (base32
+ "11cy09k1d2y5wwqvafqxr01hzk4x68ji2pqlwj7fnpw27i3ap4q4"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-broom" ,r-broom)
+ ("r-crayon" ,r-crayon)
+ ("r-dplyr" ,r-dplyr)
+ ("r-haven" ,r-haven)
+ ("r-magrittr" ,r-magrittr)
+ ("r-pillar" ,r-pillar)
+ ("r-purrr" ,r-purrr)
+ ("r-rlang" ,r-rlang)
+ ("r-sjlabelled" ,r-sjlabelled)
+ ("r-stringdist" ,r-stringdist)
+ ("r-stringr" ,r-stringr)
+ ("r-tibble" ,r-tibble)
+ ("r-tidyr" ,r-tidyr)
+ ("r-tidyselect" ,r-tidyselect)))
+ (home-page "https://github.com/strengejacke/sjmisc")
+ (synopsis "Data and variable transformation functions")
+ (description
+ "This package is a collection of miscellaneous utility functions,
+supporting data transformation tasks like recoding, dichotomizing or grouping
+variables, setting and replacing missing values. The data transformation
+functions also support labelled data, and all integrate seamlessly into a
+tidyverse workflow.")
+ (license license:gpl3)))
+
+(define-public r-nortest
+ (package
+ (name "r-nortest")
+ (version "1.0-4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "nortest" version))
+ (sha256
+ (base32
+ "17r0wpz72z9312c70nwi1i1kp1v9fm1h6jg7q5cx1mc1h420m1d3"))))
+ (build-system r-build-system)
+ (home-page "https://cran.r-project.org/web/packages/nortest/")
+ (synopsis "Tests for normality")
+ (description
+ "This package provides five omnibus tests for testing the composite
+hypothesis of normality.")
+ (license license:gpl2+)))
+
+(define-public r-moonbook
+ (package
+ (name "r-moonbook")
+ (version "0.2.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "moonBook" version))
+ (sha256
+ (base32
+ "0hys56mwbm776ff7dibi8wzyf69qiais9rs1jazv79lk6h56s9s6"))))
+ (properties `((upstream-name . "moonBook")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-magrittr" ,r-magrittr)
+ ("r-nortest" ,r-nortest)
+ ("r-purrr" ,r-purrr)
+ ("r-sjmisc" ,r-sjmisc)
+ ("r-stringr" ,r-stringr)
+ ("r-survival" ,r-survival)))
+ (home-page "https://github.com/cardiomoon/moonBook")
+ (synopsis "Functions and datasets for the book by Keon-Woong Moon")
+ (description
+ "This package provides several analysis-related functions for the book
+entitled \"R statistics and graph for medical articles\" (written in Korean),
+version 1, by Keon-Woong Moon with Korean demographic data with several plot
+functions.")
+ (license license:gpl2)))
+
+(define-public r-flextable
+ (package
+ (name "r-flextable")
+ (version "0.4.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "flextable" version))
+ (sha256
+ (base32
+ "09j2y0z7rkc0w1cl9pp1cpk6fnzzfr6245mxa3ca42z9k2cy2jfl"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-gdtools" ,r-gdtools)
+ ("r-htmltools" ,r-htmltools)
+ ("r-knitr" ,r-knitr)
+ ("r-officer" ,r-officer)
+ ("r-r6" ,r-r6)
+ ("r-rmarkdown" ,r-rmarkdown)
+ ("r-stringr" ,r-stringr)
+ ("r-xml2" ,r-xml2)))
+ (home-page "https://davidgohel.github.io/flextable")
+ (synopsis "Functions for tabular reporting")
+ (description
+ "This package provides tools to create pretty tables for HTML documents
+and other formats. Functions are provided to let users create tables, modify
+and format their content. It extends the @code{officer} package and can be
+used within R markdown documents when rendering to HTML and to Word
+documents.")
+ (license license:gpl3)))
+
(define-public r-writexl
(package
(name "r-writexl")
@@ -4688,14 +5111,14 @@ Group (Non-)Overlap considerations.")
(define-public r-doby
(package
(name "r-doby")
- (version "4.6-1")
+ (version "4.6-2")
(source
(origin
(method url-fetch)
(uri (cran-uri "doBy" version))
(sha256
(base32
- "1y02awzid23bxz8hx6j8pxd6i7jaq8pdw3k60rag8y6m69incrw5"))))
+ "02vbv9nfgywg6lsiialkmfnax5z3rkyb9nr8j9l2cp8xi6ml95mb"))))
(properties `((upstream-name . "doBy")))
(build-system r-build-system)
(propagated-inputs
@@ -4988,3 +5411,156 @@ maximum cycle number. The @code{r-abcoptim} implements the Artificial bee
colony optimization algorithm @url{http://mf.erciyes.edu.tr/abc/pub/tr06_2005.pdf}.
This version is a work-in-progress and is written in R code.")
(license license:expat)))
+
+(define-public r-abcp2
+ (package
+ (name "r-abcp2")
+ (version "1.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "ABCp2" version))
+ (sha256
+ (base32 "1s2skkxpzss7c29i8600psgrp0hl46jcrxqrmy2b4db8hc0kcnbx"))))
+ (properties `((upstream-name . "ABCp2")))
+ (build-system r-build-system)
+ (propagated-inputs `(("r-mass" ,r-mass)))
+ (home-page "https://cran.r-project.org/web/packages/ABCp2/")
+ (synopsis "Approximate Bayesian Computational Model for Estimating P2")
+ (description
+ "This package tests the goodness of fit of a distribution of offspring to the Normal,
+Poisson, and Gamma distribution and estimates the proportional paternity of the
+second male (P2) based on the best fit distribution.")
+ (license license:gpl2)))
+
+(define-public r-abcrf
+ (package
+ (name "r-abcrf")
+ (version "1.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "abcrf" version))
+ (sha256
+ (base32 "06vy3inikrr9hv36q4djhrgzi9zizdfnhz17wpra8kadmr7qj441"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-mass" ,r-mass)
+ ("r-matrixstats" ,r-matrixstats)
+ ("r-ranger" ,r-ranger)
+ ("r-rcpp" ,r-rcpp)
+ ("r-rcpparmadillo" ,r-rcpparmadillo)
+ ("r-readr" ,r-readr)
+ ("r-stringr" ,r-stringr)))
+ (home-page "https://cran.r-project.org/web/packages/abcrf/")
+ (synopsis "Approximate bayesian computation via random forests")
+ (description
+ "This package performs approximate bayesian computation (ABC) model choice and
+parameter inference via random forests. This machine learning tool named random
+forests (RF) can conduct selection among the highly complex models covered by
+ABC algorithms.")
+ (license license:gpl2+)))
+
+(define-public r-abctools
+ (package
+ (name "r-abctools")
+ (version "1.1.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "abctools" version))
+ (sha256
+ (base32 "07s9dg10i8lsxl73b4n2hynca2fjgb0ykb0dz8c3zv6cgw3cyx97"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-abc" ,r-abc)
+ ("r-abind" ,r-abind)
+ ("r-hmisc" ,r-hmisc)
+ ("r-plyr" ,r-plyr)))
+ (home-page "https://github.com/dennisprangle/abctools/")
+ (synopsis "Tools for ABC analyses")
+ (description
+ "This @code{r-abctools} package provides tools for approximate Bayesian computation
+including summary statistic selection and assessing coverage. This includes
+recent dimension reduction algorithms to tune the choice of summary statistics,
+and coverage methods to tune the choice of threshold.")
+ (license license:gpl2+)))
+
+(define-public r-ggstance
+ (package
+ (name "r-ggstance")
+ (version "0.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "ggstance" version))
+ (sha256
+ (base32 "0v7f3xdaaridw6d4jvnsfwxmpjrasvx5vl555wsrn50aah17fkvh"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-ggplot2" ,r-ggplot2)
+ ("r-plyr" ,r-plyr)
+ ("r-rlang" ,r-rlang)
+ ("r-withr" ,r-withr)))
+ (home-page "https://cran.r-project.org/web/packages/ggstance/")
+ (synopsis "Horizontal and vertical versions of @code{r-ggplot2}")
+ (description
+ "This package is a @code{r-ggplot2} extension that provides flipped components:
+@enumerate
+@item horizontal versions of @code{r-ggplot2} stats and @code{r-ggplot2} geoms;
+@item vertical versions of @code{r-ggplot2} positions.
+@end enumerate")
+ (license license:gpl3)))
+
+(define-public r-mosaiccore
+ (package
+ (name "r-mosaiccore")
+ (version "0.6.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "mosaicCore" version))
+ (sha256
+ (base32 "1klw97h6lchw1cpcl8s637ikcl428cckmjq0czi7mibh9q9mw72z"))))
+ (properties `((upstream-name . "mosaicCore")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-dplyr" ,r-dplyr)
+ ("r-lazyeval" ,r-lazyeval)
+ ("r-mass" ,r-mass)
+ ("r-rlang" ,r-rlang)
+ ("r-tidyr" ,r-tidyr)))
+ (home-page "https://github.com/ProjectMOSAIC/mosaicCore/")
+ (synopsis "Common utilities for mosaic family packages")
+ (description
+ "Common utilities used in other Mosaic family packages are collected here.")
+ (license license:gpl2+)))
+
+(define-public r-ggformula
+ (package
+ (name "r-ggformula")
+ (version "0.9.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "ggformula" version))
+ (sha256
+ (base32 "1pmpdfjfbrc6kcpq70cr1kbj2qy711hw940g2aiis6l443z706kh"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-ggplot2" ,r-ggplot2)
+ ("r-ggstance" ,r-ggstance)
+ ("r-magrittr" ,r-magrittr)
+ ("r-mosaiccore" ,r-mosaiccore)
+ ("r-rlang" ,r-rlang)
+ ("r-stringr" ,r-stringr)
+ ("r-tibble" ,r-tibble)
+ ("r-tidyr" ,r-tidyr)))
+ (home-page "https://github.com/ProjectMOSAIC/ggformula/")
+ (synopsis "Formula interface for the @code{r-ggplot2}")
+ (description
+ "The @code{r-ggformula} introduces a family of graphics functions, gf_point(),
+gf_density(), and so on, bring the formula interface to ggplot(). This captures
+and extends the excellent simplicity of the lattice-graphics formula interface,
+while providing the intuitive capabilities of @code{r-ggplot2}.")
+ (license license:expat)))
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index e070ef61ac..d9111135e8 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -126,7 +126,7 @@ communication, encryption, decryption, signatures, etc.")
(define-public signify
(package
(name "signify")
- (version "23")
+ (version "24")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/aperezdc/signify/"
@@ -134,7 +134,7 @@ communication, encryption, decryption, signatures, etc.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0c70mzawgahsvmsv4xdrass4pgyynd67ipd9lij0fgi8wkq0ns8w"))))
+ "0594vyvkq176xxzaz9xbq8qs0xdnr8s9gkd1prblwpdvnzmw0xvc"))))
(build-system gnu-build-system)
;; TODO Build with libwaive (described in README.md), to implement something
;; like OpenBSD's pledge().
diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm
index a0fbd7738a..d4a620f1b3 100644
--- a/gnu/packages/curl.scm
+++ b/gnu/packages/curl.scm
@@ -51,6 +51,7 @@
(package
(name "curl")
(version "7.61.0")
+ (replacement curl-7.61.1)
(source (origin
(method url-fetch)
(uri (string-append "https://curl.haxx.se/download/curl-"
@@ -141,6 +142,19 @@ tunneling, and so on.")
"See COPYING in the distribution."))
(home-page "https://curl.haxx.se/")))
+(define-public curl-7.61.1
+ (package
+ (inherit curl)
+ (version "7.61.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://curl.haxx.se/download/curl-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "148qv1f32290r9pwg07mccawihz4srznkzsdwdl2xllvlgb16n9x"))))))
+
(define-public kurly
(package
(name "kurly")
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 7a80e1bd9b..29c3d9b923 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -498,14 +498,14 @@ Extensions} (DNSSEC).")
(define-public knot
(package
(name "knot")
- (version "2.7.1")
+ (version "2.7.2")
(source (origin
(method url-fetch)
(uri (string-append "https://secure.nic.cz/files/knot-dns/"
name "-" version ".tar.xz"))
(sha256
(base32
- "108k6x3hjsnyf06pv5rlxqhynjbbz13pzwax1mqff3hgv85f4skx"))
+ "0cc4wgb02ch09x99a1fnr7vsdik8k920q7jafzcamjvy3kpb4w6b"))
(modules '((guix build utils)))
(snippet
'(begin
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 8f0c564f88..1f64a5e84a 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -15,7 +15,7 @@
;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2016, 2017, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
-;;; Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com>
+;;; Copyright © 2016, 2017, 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2017, 2018 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -38,6 +38,7 @@
;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
;;; Copyright © 2018 Jack Hill <jackhill@jackhill.us>
;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
+;;; Copyright © 2018 Alex Branham <alex.branham@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -4123,22 +4124,34 @@ programming language.")
(define-public emacs-ess
(package
(name "emacs-ess")
- (version "16.10")
+ (version "17.11")
(source (origin
(method url-fetch)
- (uri (string-append "http://ess.r-project.org/downloads/ess/ess-"
- version ".tgz"))
+ (uri (string-append "https://github.com/emacs-ess/ESS/archive/v"
+ version ".tar.gz"))
(sha256
(base32
- "04m8lwp3ylh2vl7k2bjjs7mxbm64j4sdckqpvnm9k0qhaqf02pjk"))
+ "0cbilbsiwvcyf6d5y24mymp57m3ana5dkzab3knfs83w4a3a4c5c"))
+ (file-name (string-append name "-" version ".tar.gz"))
(modules '((guix build utils)))
(snippet
'(begin
;; Stop ESS from trying to bundle an external julia-mode.el.
(substitute* "lisp/Makefile"
(("^\tjulia-mode.elc\\\\\n") "")
- (("^all: \\$\\(ELC\\) ess-custom.el julia-mode.el")
- "all: $(ELC) ess-custom.el"))
+ (("^dist: all julia-mode.el")
+ "dist: all"))
+ ;; No need to build docs in so many formats. Also, skipping
+ ;; pdf lets us not pull in texlive.
+ (substitute* "doc/Makefile"
+ (("all : info text html pdf")
+ "all : info")
+ (("install: install-info install-other-docs")
+ "install: install-info"))
+ ;; Test fails upstream
+ (substitute* "test/ess-r-tests.el"
+ (("ert-deftest ess-r-namespaced-eval-no-srcref-in-errors ()")
+ "ert-deftest ess-r-namespaced-eval-no-srcref-in-errors () :expected-result :failed"))
#t))))
(build-system gnu-build-system)
(arguments
@@ -4157,10 +4170,6 @@ programming language.")
(("SHELL = /bin/sh")
(string-append "SHELL = " (which "sh"))))
#t))
- ;; FIXME: the texlive-union insists on regenerating fonts. It stores
- ;; them in HOME, so it needs to be writeable.
- (add-before 'build 'set-HOME
- (lambda _ (setenv "HOME" "/tmp") #t))
(replace 'check
(lambda _
(invoke "make" "test")))))))
@@ -4169,16 +4178,14 @@ programming language.")
("r-minimal" ,r-minimal)))
(native-inputs
`(("perl" ,perl)
- ("texinfo" ,texinfo)
- ("texlive" ,(texlive-union (list texlive-latex-natbib
- texlive-latex-seminar
- texlive-latex-hyperref
- texlive-tex-texinfo)))))
+ ("texinfo" ,texinfo)))
+ (propagated-inputs
+ `(("emacs-julia-mode" ,emacs-julia-mode)))
(home-page "https://ess.r-project.org/")
(synopsis "Emacs mode for statistical analysis programs")
(description "Emacs Speaks Statistics (ESS) is an add-on package for GNU
Emacs. It is designed to support editing of scripts and interaction with
-various statistical analysis programs such as R and OpenBUGS.")
+various statistical analysis programs such as R, Julia, and JAGS.")
(license license:gpl2+)))
(define-public emacs-smex
@@ -11315,6 +11322,43 @@ e.g. the package dependencies it requires. See function
file.")
(license license:gpl3+))))
+(define-public emacs-picpocket
+ (let ((version "20180610.1059") ; taken from melpa
+ (commit "ce4b6ed088384f2414af82e8e4eae5b92c2874bf"))
+ (package
+ (name "emacs-picpocket")
+ (version version)
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/johanclaesson/picpocket")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "15vpbcv83mc4j1pvrk7xic0klh2bl9gzg2xxs7c2lmnix52hy8mv"))))
+ (build-system emacs-build-system)
+ (arguments ; needed for running tests
+ `(#:tests? #t
+ #:emacs ,emacs
+ #:test-command '("emacs" "--batch"
+ "-l" "picpocket-test.el"
+ "-f" "ert-run-tests-batch-and-exit")))
+ (home-page "https://github.com/johanclaesson/picpocket")
+ (synopsis "Image viewer for Emacs")
+ (description
+ "Picpocket is an image viewer for GNU Emacs. It has commands for:
+
+@itemize
+@item File operations on the picture files (delete, move, copy, hardlink).
+@item Scale and rotate the picture.
+@item Associate pictures with tags which are saved to disk.
+@item Filter pictures according to tags.
+@item Customizing keystrokes for quick tagging and file operations.
+@item Undo and browse history of undoable commands.
+@end itemize")
+ (license license:gpl3+))))
+
(define-public emacs-wgrep-helm
;; `emacs-wgrep-helm' was mistakenly added.
(deprecated-package "emacs-wgrep-helm" emacs-wgrep))
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 8e68c676ef..e02339af62 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -117,8 +117,8 @@
;; Building from recent Git because the official 5.0 release no longer builds.
(define-public dolphin-emu
- (let ((commit "806c1ee8f0ed824008185212bfab2658d400b576")
- (revision "2"))
+ (let ((commit "5f0d825f40b8aabe13eaef32d44ab667ff8e8c28")
+ (revision "3"))
(package
(name "dolphin-emu")
(version (git-version "5.0" revision commit))
@@ -144,7 +144,7 @@
#t))
(sha256
(base32
- "1sdc7rh6z7gjx4kxg18jrv7srfpx1vgf936zg5y43radnlscrh1j"))))
+ "0dh7mih16aif9ynbgcsn7n10f89g8d232i86xqfp2rijsdggcmzl"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index d53b25cff9..ee524ec78e 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -8,6 +8,7 @@
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2018 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -680,24 +681,19 @@ language.")
(define-public ao
(deprecated-package "ao-cad" libfive))
-;; We use kicad from a git commit, because support for boost 1.61.0 has been
-;; recently added.
(define-public kicad
- (let ((commit "5f4599fb56da4dd748845ab10abec02961d477f3")
- (revision "2"))
(package
(name "kicad")
- (version (string-append "4.0-" revision "."
- (string-take commit 7)))
+ (version "5.0.0")
(source
(origin
- (method git-fetch)
- (uri (git-reference
- (url "https://git.launchpad.net/kicad")
- (commit commit)))
+ (method url-fetch)
+ (file-name (string-append name "-" version ".tar.xz"))
+ (uri (string-append
+ "https://launchpad.net/kicad/5.0/" version "/+download/" name
+ "-" version ".tar.xz"))
(sha256
- (base32 "1833pln2975gmc5s18xf7s8m9vg834lmxxdjk0wlk3lq7bvjjnff"))
- (file-name (string-append name "-" version "-checkout"))))
+ (base32 "17nqjszyvd25wi6550j981whlnb1wxzmlanljdjihiki53j84x9p"))))
(build-system cmake-build-system)
(arguments
`(#:out-of-source? #t
@@ -706,8 +702,6 @@ language.")
#:configure-flags
(list "-DKICAD_STABLE_VERSION=ON"
"-DKICAD_REPO_NAME=stable"
- ,(string-append "-DKICAD_BUILD_VERSION=4.0-"
- (string-take commit 7))
"-DKICAD_SKIP_BOOST=ON"; Use our system's boost library.
"-DKICAD_SCRIPTING=ON"
"-DKICAD_SCRIPTING_MODULES=ON"
@@ -754,6 +748,7 @@ language.")
("libngspice" ,libngspice)
("libsm" ,libsm)
("mesa" ,mesa)
+ ("opencascade-oce" ,opencascade-oce)
("openssl" ,openssl)
("python" ,python-2)
("wxwidgets" ,wxwidgets-gtk2)
@@ -764,7 +759,7 @@ language.")
boards and electrical circuits. The software has a number of programs that
perform specific functions, for example, pcbnew (Editing PCB), eeschema (editing
electrical diagrams), gerbview (viewing Gerber files) and others.")
- (license license:gpl3+))))
+ (license license:gpl3+)))
(define-public kicad-library
(let ((version "4.0.7"))
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 4d02b4bc62..ce07d3ad4c 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -887,7 +887,7 @@ designed to work well in user interface environments.")
(define-public font-fira-code
(package
(name "font-fira-code")
- (version "1.204")
+ (version "1.205")
(source (origin
(method url-fetch/zipbomb)
(uri (string-append "https://github.com/tonsky/FiraCode/releases/"
@@ -895,7 +895,7 @@ designed to work well in user interface environments.")
"/FiraCode_" version ".zip"))
(sha256
(base32
- "17wky221b3igrqhmxgmqiyv1xdfn0nw471vzhpkrvv1w2w1w1k18"))))
+ "13bxgf59g6fw5191xclcjzn22hj8jk9k5jjwf7vz07mpjbgadcl5"))))
(build-system font-build-system)
(home-page "https://mozilla.github.io/Fira/")
(synopsis "Monospaced font with programming ligatures")
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 728f763806..2015e3ce47 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -34,6 +34,7 @@
;;; Copyright © 2018 okapi <okapi@firemail.cc>
;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
;;; Copyright © 2018 Madalin Ionel-Patrascu <madalinionel.patrascu@mdc-berlin.de>
+;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -5553,3 +5554,159 @@ open-source FPS of its kind.")
(license (list license:gpl2+
license:bsd-3 ; /source/d0_blind_id folder and others
(license:x11-style "" "See file rcon.pl.")))))
+
+(define-public frotz
+ (package
+ (name "frotz")
+ (version "2.44")
+ (source (origin
+ (method url-fetch)
+ (uri (list (string-append
+ "http://www.ifarchive.org/if-archive/infocom/interpreters/"
+ name "/" name "-" version ".tar.gz")
+ (string-append
+ "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
+ name "/" name "-" version ".tar.gz")))
+ (sha256
+ (base32
+ "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; there are no tests
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-before 'build 'curses
+ (lambda _
+ (substitute* "Makefile"
+ (("lcurses") "lncurses"))
+ #t))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (man (string-append out "/share/man/man6")))
+ (install-file "frotz" bin)
+ (mkdir-p man)
+ (install-file "doc/frotz.6" man)
+ #t))))))
+ (inputs `(("libmodplug" ,libmodplug)
+ ("libsamplerate" ,libsamplerate)
+ ("libsndfile" ,libsndfile)
+ ("libvorbis" ,libvorbis)
+ ("ncurses" ,ncurses)))
+ (synopsis "Portable Z-machine interpreter (ncurses version) for text adventure games")
+ (description "Frotz is an interpreter for Infocom games and other Z-machine
+games in the text adventure/interactive fiction genre. This version of Frotz
+complies with standard 1.0 of Graham Nelson's specification. It plays all
+Z-code games V1-V8, including V6, with sound support through libao, and uses
+ncurses for text display.")
+ (home-page "http://frotz.sourceforge.net")
+ (license license:gpl2+)))
+
+(define-public frotz-dumb-terminal
+ (package
+ (name "frotz-dumb-terminal")
+ (version "2.44")
+ (source (origin
+ (method url-fetch)
+ (uri (list (string-append
+ "http://www.ifarchive.org/if-archive/infocom/interpreters/"
+ "frotz" "/" "frotz" "-" version ".tar.gz")
+ (string-append
+ "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
+ "frotz" "/" "frotz" "-" version ".tar.gz")))
+ (sha256
+ (base32
+ "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; there are no tests
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda _
+ (invoke "make" "dumb")))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (man (string-append out "/share/man/man6")))
+ (install-file "dfrotz" bin)
+ (mkdir-p man)
+ (install-file "doc/dfrotz.6" man)
+ #t))))))
+ (synopsis "Portable Z-machine dumb interpreter for text adventure games")
+ (description "Frotz is an interpreter for Infocom games and
+other Z-machine games in the text adventure/interactive fiction genre.
+dfrotz is the dumb interface version. You get no screen control; everything
+is just printed to the terminal line by line. The terminal handles all the
+scrolling. Maybe you'd like to experience what it's like to play Adventure on
+a teletype. A much cooler use for compiling Frotz with the dumb interface is
+that it can be wrapped in CGI scripting, PHP, and the like to allow people
+to play games on webpages. It can also be made into a chat bot.")
+ (home-page "http://frotz.sourceforge.net")
+ (license license:gpl2+)))
+
+(define-public frotz-sdl
+ (let* ((commit "4de8c34f2116fff554af6216c30ec9d41bf50b24"))
+ (package
+ (name "frotz-sdl")
+ (version "2.45pre")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/DavidGriffith/frotz")
+ (commit commit)))
+ (sha256
+ (base32
+ "18ms21pcrl7ipcnyqnf8janamkryzx78frsgd9kfk67jvbj0z2k8"))
+ (file-name (git-file-name name version))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; there are no tests
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-before 'build 'patch-makefile
+ (lambda _
+ (substitute* "Makefile"
+ (("lcurses") "lncurses")
+ (("^BUILD_DATE_TIME =.*$")
+ "BUILD_DATE_TIME = \"2.45pre-20180907.00000\"\n"))
+ #t))
+ (replace 'build
+ (lambda _
+ (invoke "make" "sdl")))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (man (string-append out "/share/man/man6")))
+ (install-file "sfrotz" bin)
+ (mkdir-p man)
+ (install-file "doc/sfrotz.6" man)
+ #t))))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("which" ,which)
+ ("perl" ,perl)))
+ (inputs `(("sdl2" ,sdl2)
+ ("sdl2-mixer" ,sdl2-mixer)
+ ("libmodplug" ,libmodplug)
+ ("libsamplerate" ,libsamplerate)
+ ("libsndfile" ,libsndfile)
+ ("libvorbis" ,libvorbis)
+ ("ncurses" ,ncurses)
+ ("freetype" ,freetype)
+ ("libjpeg-turbo" ,libjpeg-turbo)))
+ (synopsis "Portable Z-machine interpreter (SDL port) for text adventure games")
+ (description "Frotz is an interpreter for Infocom games and other Z-machine
+games in the text adventure/interactive fiction genre. This version of Frotz
+using SDL fully supports all these versions of the Z-Machine including the
+graphical version 6. Graphics and sound are created through the use of the SDL
+libraries. AIFF sound effects and music in MOD and OGG formats are supported
+when packaged in Blorb container files or optionally from individual files.")
+ (home-page "http://frotz.sourceforge.net")
+ (license license:gpl2+))))
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 520f5cba0b..8207104174 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -668,6 +668,10 @@ as the 'native-search-paths' field."
(custom-gcc gcc-7 "gfortran" '("fortran")
%generic-search-paths))
+(define-public gfortran-8
+ (custom-gcc gcc-8 "gfortran" '("fortran")
+ %generic-search-paths))
+
(define-public gfortran
;; Note: Update this when GCC changes! We cannot use
;; (custom-gcc gcc "fortran" …) because that would lead to a package object
@@ -728,6 +732,15 @@ as the 'native-search-paths' field."
(variable "LIBRARY_PATH")
(files '("lib" "lib64"))))))
+(define-public gcc-objc-8
+ (custom-gcc gcc-8 "gcc-objc" '("objc")
+ (list (search-path-specification
+ (variable "OBJC_INCLUDE_PATH")
+ (files '("include")))
+ (search-path-specification
+ (variable "LIBRARY_PATH")
+ (files '("lib" "lib64"))))))
+
(define-public gcc-objc gcc-objc-5)
(define-public gcc-objc++-4.8
@@ -775,6 +788,15 @@ as the 'native-search-paths' field."
(variable "LIBRARY_PATH")
(files '("lib" "lib64"))))))
+(define-public gcc-objc++-8
+ (custom-gcc gcc-8 "gcc-objc++" '("obj-c++")
+ (list (search-path-specification
+ (variable "OBJCPLUS_INCLUDE_PATH")
+ (files '("include")))
+ (search-path-specification
+ (variable "LIBRARY_PATH")
+ (files '("lib" "lib64"))))))
+
(define-public gcc-objc++ gcc-objc++-5)
(define (make-libstdc++-doc gcc)
diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm
index f0c4c8b804..74eb0f8994 100644
--- a/gnu/packages/gdb.scm
+++ b/gnu/packages/gdb.scm
@@ -37,14 +37,14 @@
(define-public gdb
(package
(name "gdb")
- (version "8.1.1")
+ (version "8.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gdb/gdb-"
version ".tar.xz"))
(sha256
(base32
- "0g6hv9xk12aa58w77fydaldqr9a6b0a6bnwsq87jfc6lkcbc7p4p"))))
+ "0fbw6j4z7kmvywwgavn7w3knp860i5i9qnjffc5p52bwkji43963"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; FIXME "make check" fails on single-processor systems.
diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm
index cd7cd604fd..3808d81524 100644
--- a/gnu/packages/ghostscript.scm
+++ b/gnu/packages/ghostscript.scm
@@ -7,6 +7,7 @@
;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -38,8 +39,10 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix utils)
#:use-module (guix build-system gnu)
- #:use-module (guix build-system trivial))
+ #:use-module (guix build-system trivial)
+ #:use-module (srfi srfi-1))
(define-public lcms
(package
@@ -132,6 +135,7 @@ printing, and psresize, for adjusting page sizes.")
(define-public ghostscript
(package
(name "ghostscript")
+ (replacement ghostscript/fixed)
(version "9.23")
(source
(origin
@@ -251,6 +255,44 @@ output file formats and printers.")
(home-page "https://www.ghostscript.com/")
(license license:agpl3+)))
+(define-public ghostscript/fixed
+ (hidden-package
+ (package
+ (inherit ghostscript)
+ (version "9.24")
+ (source
+ (origin
+ (inherit (package-source ghostscript))
+ (uri (string-append "https://github.com/ArtifexSoftware/"
+ "ghostpdl-downloads/releases/download/gs"
+ (string-delete #\. version)
+ "/ghostscript-" version ".tar.xz"))
+ (sha256
+ (base32
+ "1mk922rnml93w2g42yxiyn8xqanc50cm65irrgh0b6lp4kgifjfl"))
+ (patches (search-patches "ghostscript-CVE-2018-16509.patch"
+ "ghostscript-bug-699708.patch"
+ "ghostscript-no-header-creationdate.patch"
+ "ghostscript-no-header-id.patch"
+ "ghostscript-no-header-uuid.patch"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments ghostscript)
+ ((#:configure-flags flags)
+ ;; Notice that we removed the 'ghostscript-runpath' patch above.
+ ;; The reason is that it conflicts with an upstream change that
+ ;; takes LDFLAGS into account.
+ `(cons (string-append "LDFLAGS=-Wl,-rpath="
+ (assoc-ref %outputs "out") "/lib")
+ ,flags))
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-before 'configure 'create-output-directory
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Unfortunately the configure script refuses to function if
+ ;; the directory specified as -rpath does not already exist.
+ (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
+ #t)))))))))
+
(define-public ghostscript/x
(package/inherit ghostscript
(name (string-append (package-name ghostscript) "-with-x"))
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 659f5dd5d4..2b723e99ee 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -2461,7 +2461,7 @@ libxml to ease remote use of the RESTful API.")
(define-public libsoup
(package
(name "libsoup")
- (version "2.62.3")
+ (version "2.64.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/libsoup/"
@@ -2469,7 +2469,7 @@ libxml to ease remote use of the RESTful API.")
name "-" version ".tar.xz"))
(sha256
(base32
- "0whi8p03kpbp68kg6fg3vb7rhykjp7wn3nlbzy9j0p298zjss4nk"))))
+ "09z7g3spww3f84y8jmicdd6lqp360mbggpg5h1fq1v4p5ihcjnyr"))))
(build-system gnu-build-system)
(outputs '("out" "doc"))
(arguments
@@ -2573,6 +2573,7 @@ libxml to ease remote use of the RESTful API.")
("libxml2" ,libxml2)))
(inputs
`(("glib-networking" ,glib-networking)
+ ("libpsl" ,libpsl)
("sqlite" ,sqlite)))
(home-page "https://live.gnome.org/LibSoup/")
(synopsis "GLib-based HTTP Library")
diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm
index b393919e66..245ee8f956 100644
--- a/gnu/packages/graph.scm
+++ b/gnu/packages/graph.scm
@@ -28,6 +28,7 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages gcc)
+ #:use-module (gnu packages bioconductor)
#:use-module (gnu packages bioinformatics)
#:use-module (gnu packages compression)
#:use-module (gnu packages cran)
@@ -98,14 +99,14 @@ more.")
(define-public r-igraph
(package
(name "r-igraph")
- (version "1.2.1")
+ (version "1.2.2")
(source
(origin
(method url-fetch)
(uri (cran-uri "igraph" version))
(sha256
(base32
- "1hcr6b1lz030lgay1bz8y8sxaf2j93ds8n8gsqr6qhssz141hd2m"))))
+ "1bggm7b8v3bh7q2589w26qvd7sgs69m4qiij7d0rbm0ykkgxm8lx"))))
(build-system r-build-system)
(native-inputs
`(("gfortran" ,gfortran)))
@@ -130,14 +131,14 @@ more.")
(define-public r-diffusionmap
(package
(name "r-diffusionmap")
- (version "1.1-0")
+ (version "1.1-0.1")
(source
(origin
(method url-fetch)
(uri (cran-uri "diffusionMap" version))
(sha256
(base32
- "1l985q2hfc8ss5afajik4p25dx628yikvhdimz5s0pql800q2yv3"))))
+ "11l4kbciawvli5nlsi4qaf8afmgk5xgqiqpdyhvaqri5mx0zhk5j"))))
(properties `((upstream-name . "diffusionMap")))
(build-system r-build-system)
(propagated-inputs
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 3322860d83..7a70239684 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -890,14 +890,7 @@ images onto Cairo surfaces.")
(sha256
(base32
"1qam447m05sxxv6x8dlzg7qnyfc4dh8apjw1idpfhpns671gfr6m"))
- (patches (search-patches "guile-present-coding.patch"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- (substitute* "Makefile.in"
- (("godir = .*$")
- "godir = $(moddir)\n"))
- #t))))
+ (patches (search-patches "guile-present-coding.patch"))))
(build-system gnu-build-system)
(arguments
'(#:phases
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 8c561b0210..7c88454300 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -866,7 +866,7 @@ for Guile\".")
(define-public guile-json
(package
(name "guile-json")
- (version "1.1.1")
+ (version "1.2.0")
(home-page "https://github.com/aconchillo/guile-json")
(source (origin
(method url-fetch)
@@ -875,7 +875,7 @@ for Guile\".")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "12jqkn9qgwdlxbasy2n25a2a7apf30dww1nnxqfam5735k3jdngv"))))
+ "02kqv0q98fmchn7i4y7ycmrjlh4b2c93ij0z7k036qwpp204w4gh"))))
(build-system gnu-build-system)
(native-inputs `(("autoconf" ,autoconf)
("automake" ,automake)
@@ -893,7 +893,9 @@ specification. These are the main features:
@item Unicode support for strings.
@item Allows JSON pretty printing.
@end itemize\n")
- (license license:lgpl3+)))
+
+ ;; Version 1.2.0 switched to GPLv3+ (from LGPLv3+).
+ (license license:gpl3+)))
(define-public guile2.2-json
(deprecated-package "guile2.2-json" guile-json))
@@ -1581,8 +1583,10 @@ you send to a FIFO file.")
(("ac_subst_vars='")
"ac_subst_vars='GUILE_EFFECTIVE_VERSION\n"))
(substitute* "Makefile.in"
- (("/site/2.0")
- "/site/@GUILE_EFFECTIVE_VERSION@"))
+ (("moddir =.*")
+ "moddir = $(datadir)/guile/site/@GUILE_EFFECTIVE_VERSION@\n")
+ (("godir =.*")
+ "godir = $(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n"))
#t))))
(build-system gnu-build-system)
(inputs
@@ -1786,6 +1790,20 @@ Note that 8sync is only available for Guile 2.2.")
(base32
"0vjkg72ghgdgphzbjz9ig8al8271rq8974viknb2r1rg4lz92ld0"))))
(build-system gnu-build-system)
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (add-after 'install 'mode-guile-objects
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; .go files are installed to "lib/guile/X.Y/cache".
+ ;; This phase moves them to "…/site-ccache".
+ (let* ((out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib/guile"))
+ (old (car (find-files lib "^ccache$"
+ #:directories? #t)))
+ (new (string-append (dirname old)
+ "/site-ccache")))
+ (rename-file old new)
+ #t))))))
(native-inputs
`(("texinfo" ,texinfo)
("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm
index c3ef85f3f0..31407ca259 100644
--- a/gnu/packages/haskell-check.scm
+++ b/gnu/packages/haskell-check.scm
@@ -39,7 +39,7 @@
(define-public ghc-tasty-ant-xml
(package
(name "ghc-tasty-ant-xml")
- (version "1.0.2")
+ (version "1.1.4")
(source
(origin
(method url-fetch)
@@ -49,7 +49,7 @@
".tar.gz"))
(sha256
(base32
- "0pgz2lclg2hp72ykljcbxd88pjanfdfk8m5vb2qzcyjr85kwrhxv"))))
+ "0v0gsb90kh6hwlgxbclzawsskywc6yf7n8xhiifia97l4y0yx2m8"))))
(build-system haskell-build-system)
(inputs
`(("ghc-generic-deriving" ,ghc-generic-deriving)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index a07bb049a2..eb629cf138 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -2078,9 +2078,13 @@ literals.")
(base32
"1vbzf0awb6zb456xf48za1kl22018646cfzq4frvxgb9ay97vk0d"))))
(build-system haskell-build-system)
- ;; Tests require older versions of testy.
- (arguments `(#:tests? #f))
+ (arguments `(#:configure-flags (list "--allow-newer=tasty")))
(inputs `(("zlib" ,zlib)))
+ (native-inputs
+ `(("ghc-quickcheck" ,ghc-quickcheck)
+ ("ghc-tasty" ,ghc-tasty)
+ ("ghc-tasty-hunit" ,ghc-tasty-hunit)
+ ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)))
(home-page "https://hackage.haskell.org/package/zlib")
(synopsis
"Compression and decompression in the gzip and zlib formats")
@@ -4220,7 +4224,7 @@ system.")
(define-public ghc-base-compat
(package
(name "ghc-base-compat")
- (version "0.10.4")
+ (version "0.9.3")
(source
(origin
(method url-fetch)
@@ -4230,7 +4234,7 @@ system.")
".tar.gz"))
(sha256
(base32
- "0ksp990gxs731mq19rzbxrbs43nazfljjc8krlx5bjqblw3kfs8d"))))
+ "0452l6zf6fjhy4kxqwv6i6hhg6yfx4wcg450k3axpyj30l7jnq3x"))))
(build-system haskell-build-system)
(native-inputs
`(("ghc-quickcheck" ,ghc-quickcheck)
@@ -5190,6 +5194,8 @@ occurrences of a substring (the first in case of overlaps) with another.")
(base32
"1wj8kgjg5bn2yrs4zh9qfjv85cx6w998j9pi39yrbv305944mb9j"))))
(build-system haskell-build-system)
+ (arguments
+ `(#:configure-flags (list "--allow-newer=tasty")))
(native-inputs
`(("ghc-quickcheck" ,ghc-quickcheck)
("ghc-smallcheck" ,ghc-smallcheck)
@@ -10152,4 +10158,29 @@ tools are not needed to actually run Gtk2Hs programs.")
backends provided by the @code{Cairo} and @code{Diagrams} libraries.")
(license license:bsd-3)))
+(define-public ghc-wcwidth
+ (package
+ (name "ghc-wcwidth")
+ (version "0.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hackage.haskell.org/package/wcwidth/wcwidth-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1n1fq7v64b59ajf5g50iqj9sa34wm7s2j3viay0kxpmvlcv8gipz"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-setlocale" ,ghc-setlocale)
+ ("ghc-utf8-string" ,ghc-utf8-string)
+ ("ghc-attoparsec" ,ghc-attoparsec)))
+ (home-page "https://github.com/solidsnack/wcwidth/")
+ (synopsis "Haskell bindings to wcwidth")
+ (description "This package provides Haskell bindings to your system's
+native wcwidth and a command line tool to examine the widths assigned by it.
+The command line tool can compile a width table to Haskell code that assigns
+widths to the Char type.")
+ (license license:bsd-3)))
+
;;; haskell.scm ends here
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index c6010f1f56..03f08a614f 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -19,6 +19,7 @@
;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -485,6 +486,7 @@ arithmetic ops.")
(package
(name "jbig2dec")
(version "0.14")
+ (replacement jbig2dec-0.15)
(source
(origin
(method url-fetch)
@@ -509,6 +511,21 @@ work.")
(home-page "https://jbig2dec.com")
(license license:gpl2+)))
+;; This is a bugfix release from an ongoing Ghostscript security audit.
+;; It was released alongside Ghostscript 9.24.
+(define-public jbig2dec-0.15
+ (package
+ (inherit jbig2dec)
+ (version "0.15")
+ (source (origin
+ (inherit (package-source jbig2dec))
+ (uri (string-append "https://github.com/ArtifexSoftware"
+ "/ghostpdl-downloads/releases/download/gs924/"
+ "jbig2dec-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0m1qwpbjbirgw2fqznbajdhdhh35d6xa2csr64lpjz735pvimykb"))))))
+
(define-public openjpeg
(package
(name "openjpeg")
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 39e2322739..fb9b0eeedf 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -355,10 +355,12 @@
("objconv"
,(origin
(method url-fetch)
- (uri "http://www.agner.org/optimize/objconv.zip")
+ ;; No versioned URL, see <https://www.agner.org/optimize/> for updates.
+ (uri "https://www.agner.org/optimize/objconv.zip")
+ (file-name "objconv-2018-08-15.zip")
(sha256
(base32
- "1fi7qa2sd9vb35dvkgripjf0fayzg2qmff215f8agfqfiwd1g8qs"))))
+ "09y4pwxfs6fl47cyingbf95i2rxx74wmycl9fd4ldcgvpx9bzdrx"))))
("dsfmt"
,(origin
(method url-fetch)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 14f23db888..fc071a1338 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -399,8 +399,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.18.5")
-(define %linux-libre-hash "1y52ns34vh9p4pfj08xsycv8p0xywm6dbpdi0wwpkll1xgpqikvf")
+(define %linux-libre-version "4.18.6")
+(define %linux-libre-hash "1l5caid77vbfb54zrfxkk7qj7lrf9ck9kpn96kr45spkwl51wm8m")
(define %linux-libre-4.18-patches
(list %boot-logo-patch
@@ -430,8 +430,8 @@ It has been modified to remove all non-free binary blobs.")
#:patches %linux-libre-4.18-patches
#:configuration-file kernel-config))
-(define %linux-libre-4.14-version "4.14.67")
-(define %linux-libre-4.14-hash "050zvdxjy6sc64q75pr1gxsmh49chwav2pwxz8xlif39bvahnrpg")
+(define %linux-libre-4.14-version "4.14.68")
+(define %linux-libre-4.14-hash "05l5y0vbbl60jxdbqglqr9c99a8g8lfsp4mcqfpcx1pkh5br7i3l")
(define-public linux-libre-4.14
(make-linux-libre %linux-libre-4.14-version
@@ -440,14 +440,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.124"
- "0p78gx5jiqvaf2cadf5jp40lzgarrg0m0ybf9w2499v28vjsp30q"
+ (make-linux-libre "4.9.125"
+ "1saihk61l1kk42jf8yfsfkm77zalq31f0bdlam3c1g7yw702wj9g"
%intel-compatible-systems
#:configuration-file kernel-config))
(define-public linux-libre-4.4
- (make-linux-libre "4.4.153"
- "195vzkkmjiicqfzd38hgf381rlz665rl06abzf8cww0gbnzvrf72"
+ (make-linux-libre "4.4.154"
+ "08i9fvrmswkydj538wg6c7ggxmhll0ff0bjkw8rnyslqwilfwr1i"
%intel-compatible-systems
#:configuration-file kernel-config))
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index a86bdcb5ed..7790e78779 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -560,13 +560,13 @@ I/O.")
(define-public r-adaptivesparsity
(package
(name "r-adaptivesparsity")
- (version "1.4")
+ (version "1.6")
(source (origin
(method url-fetch)
(uri (cran-uri "AdaptiveSparsity" version))
(sha256
(base32
- "1az7isvalf3kmdiycrfl6s9k9xqk22k1mc6rh8v0jmcz402qyq8z"))))
+ "0imr5m8mll9j6n4icsv6z9rl5kbnwsp9wvzrg7n90nnmcxq2cz91"))))
(properties
`((upstream-name . "AdaptiveSparsity")))
(build-system r-build-system)
@@ -579,7 +579,9 @@ I/O.")
(("PKG_LIBS=" prefix)
(string-append prefix "-larmadillo"))))))))
(propagated-inputs
- `(("r-rcpp" ,r-rcpp)
+ `(("r-mass" ,r-mass)
+ ("r-matrix" ,r-matrix)
+ ("r-rcpp" ,r-rcpp)
("r-rcpparmadillo" ,r-rcpparmadillo)))
(inputs
`(("armadillo" ,armadillo)))
@@ -594,14 +596,14 @@ geometric models.")
(define-public r-kernlab
(package
(name "r-kernlab")
- (version "0.9-26")
+ (version "0.9-27")
(source
(origin
(method url-fetch)
(uri (cran-uri "kernlab" version))
(sha256
(base32
- "0xv0slf3ggw3sswsi34416lb1g3h1pqkrr2h7r1n1kvgii3l0jcm"))))
+ "1m0xqf6gyvwayz7w3c83y32ayvnlz0jicj8ijk808zq9sh7dbbgn"))))
(build-system r-build-system)
(home-page "https://cran.r-project.org/web/packages/kernlab")
(synopsis "Kernel-based machine learning tools")
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 4944dd7622..024e75aaa1 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1071,7 +1071,7 @@ which can add many functionalities to the base client.")
(define-public msmtp
(package
(name "msmtp")
- (version "1.6.8")
+ (version "1.8.0")
(source
(origin
(method url-fetch)
@@ -1079,11 +1079,10 @@ which can add many functionalities to the base client.")
"/msmtp-" version ".tar.xz"))
(sha256
(base32
- "1ysrnshvwhzwmvb2walw5i9jdzlvmckj7inr0xnvb26q0jirbzsm"))))
+ "1k9wwlapkxk9ql3xq05y6vwn6ziqk9b1v8lyhj1866qd02zhqwxx"))))
(build-system gnu-build-system)
(inputs
- `(("libidn" ,libidn)
- ("libsecret" ,libsecret)
+ `(("libsecret" ,libsecret)
("gnutls" ,gnutls)
("zlib" ,zlib)
("gsasl" ,gsasl)))
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 50c0a320e0..01bd03c600 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -15,7 +15,7 @@
;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
-;;; Copyright © 2017 Paul Garlick <pgarlick@tourbillion-technology.com>
+;;; Copyright © 2017, 2018 Paul Garlick <pgarlick@tourbillion-technology.com>
;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
@@ -1580,7 +1580,7 @@ September 2004}")
(define-public petsc
(package
(name "petsc")
- (version "3.8.0")
+ (version "3.9.3")
(source
(origin
(method url-fetch)
@@ -1588,7 +1588,9 @@ September 2004}")
(uri (string-append "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/"
"petsc-lite-" version ".tar.gz"))
(sha256
- (base32 "1lajbk3c29hnh83v6cbmm3a8wv6bdykh0p70kwrr4vrnizalk88s"))))
+ (base32 "1fwkbwv4g7zf2lc8fw865xd0bl9anb6jaczfis5dff7h449gwa48"))))
+ (outputs '("out" ;libraries and headers
+ "examples")) ;~30MiB of examples
(build-system gnu-build-system)
(native-inputs
`(("python" ,python-2)))
@@ -1605,11 +1607,7 @@ September 2004}")
#:configure-flags
`("--with-mpi=0"
"--with-openmp=1"
- "--with-superlu=1"
- ,(string-append "--with-superlu-include="
- (assoc-ref %build-inputs "superlu") "/include")
- ,(string-append "--with-superlu-lib="
- (assoc-ref %build-inputs "superlu") "/lib/libsuperlu.a"))
+ "--with-superlu=1")
#:make-flags
;; Honor (parallel-job-count) for build. Do not use --with-make-np,
;; whose value is dumped to $out/lib/petsc/conf/petscvariables.
@@ -1662,6 +1660,15 @@ September 2004}")
"PETScBuildInternal.cmake"
;; Once installed, should uninstall with Guix
"uninstall.py"))
+ #t)))
+ (add-after 'install 'move-examples
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (examples (assoc-ref outputs "examples"))
+ (exdir (string-append out "/share/petsc/examples"))
+ (exdir' (string-append examples "/share/petsc/examples")))
+ (copy-recursively exdir exdir')
+ (delete-file-recursively exdir)
#t))))))
(home-page "http://www.mcs.anl.gov/petsc")
(synopsis "Library to solve PDEs")
@@ -1685,6 +1692,7 @@ scientific applications modeled by partial differential equations.")
(name "petsc-openmpi")
(inputs
`(("openmpi" ,openmpi)
+ ("hdf5" ,hdf5-parallel-openmpi)
,@(package-inputs petsc)))
(arguments
(substitute-keyword-arguments (package-arguments petsc)
@@ -1692,7 +1700,21 @@ scientific applications modeled by partial differential equations.")
``("--with-mpiexec=mpirun"
,(string-append "--with-mpi-dir="
(assoc-ref %build-inputs "openmpi"))
- ,@(delete "--with-mpi=0" ,cf)))))
+ ,(string-append "--with-hdf5-include="
+ (assoc-ref %build-inputs "hdf5") "/include")
+ ,(string-append "--with-hdf5-lib="
+ (assoc-ref %build-inputs "hdf5") "/lib/libhdf5.a")
+ ,@(delete "--with-mpi=0" ,cf)))
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-before 'check 'set-test-environment
+ (lambda _
+ ;; By default, running the test suite would fail because 'ssh'
+ ;; could not be found in $PATH. Define this variable to
+ ;; placate Open MPI without adding a dependency on OpenSSH (the
+ ;; agent isn't used anyway.)
+ (setenv "OMPI_MCA_plm_rsh_agent" (which "cat"))
+ #t))))))
(synopsis "Library to solve PDEs (with MPI support)")))
(define-public petsc-complex-openmpi
@@ -1738,7 +1760,7 @@ savings are consistently > 5x.")
(define-public slepc
(package
(name "slepc")
- (version "3.8.2")
+ (version "3.9.2")
(source
(origin
(method url-fetch)
@@ -1746,7 +1768,7 @@ savings are consistently > 5x.")
version ".tar.gz"))
(sha256
(base32
- "04zd48p43rnvg68p6cp28zll0px5whglc5v0sc3s6vdj1v920z8y"))))
+ "0gmhdqac8zm3jx43h935z7bflazjnpvqxjv4jh5za2y1z2rqax94"))))
(build-system gnu-build-system)
(native-inputs
`(("python" ,python-2)))
@@ -2824,8 +2846,8 @@ parts of it.")
(source
(origin
(method url-fetch)
- (uri (string-append "https://github.com/xianyi/OpenBLAS/tarball/v"
- version))
+ (uri (string-append "mirror://sourceforge/openblas/v" version "/OpenBLAS%20"
+ version "%20version.tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
@@ -3231,7 +3253,7 @@ Failure to do so will result in a library with poor performance.")
(define-public glm
(package
(name "glm")
- (version "0.9.9.0")
+ (version "0.9.9.1")
(source
(origin
(method url-fetch)
@@ -3239,7 +3261,7 @@ Failure to do so will result in a library with poor performance.")
version "/glm-" version ".zip"))
(sha256
(base32
- "0ihjadp2sb8w312a276skfjsljm3y41bjscbxf79wn23gi00giz1"))))
+ "042a23hmxfs429czkmlg5ixf28aikzfbw18780prj2gcd4flgw8h"))))
(build-system cmake-build-system)
(native-inputs
`(("unzip" ,unzip)))
@@ -4027,3 +4049,80 @@ terminal do calculations simply and quickly. The formula to be calculated can
be fed to @command{tcalc} through the command line.")
(home-page "https://sites.google.com/site/mohammedisam2000/tcalc")
(license license:gpl3+)))
+
+(define-public sundials
+ (package
+ (name "sundials")
+ (version "3.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://computation.llnl.gov/projects/sundials/download/"
+ "sundials-" version ".tar.gz"))
+ (sha256
+ (base32
+ "090s8ymhd0g1s1d44fa73r5yi32hb4biwahhbfi327zd64yn8kd2"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("python" ,python-2))) ;for tests; syntax incompatible with python 3
+ (inputs
+ `(("fortran" ,gfortran) ;for fcmix
+ ("blas" ,openblas)
+ ("suitesparse" ,suitesparse))) ;TODO: Add hypre
+ (arguments
+ `(#:configure-flags `("-DEXAMPLES_ENABLE_C:BOOL=ON"
+ "-DEXAMPLES_ENABLE_CXX:BOOL=ON"
+ "-DEXAMPLES_ENABLE_F77:BOOL=ON"
+ "-DEXAMPLES_ENABLE_F90:BOOL=ON"
+ "-DEXAMPLES_INSTALL:BOOL=OFF"
+
+ "-DFCMIX_ENABLE:BOOL=ON"
+
+ "-DKLU_ENABLE:BOOL=ON"
+ ,(string-append "-DKLU_INCLUDE_DIR="
+ (assoc-ref %build-inputs "suitesparse")
+ "/include")
+ ,(string-append "-DKLU_LIBRARY_DIR="
+ (assoc-ref %build-inputs "suitesparse")
+ "/lib"))))
+ (home-page "https://computation.llnl.gov/projects/sundials")
+ (synopsis "Suite of nonlinear and differential/algebraic equation solvers")
+ (description "SUNDIALS is a family of software packages implemented with
+the goal of providing robust time integrators and nonlinear solvers that can
+easily be incorporated into existing simulation codes.")
+ (license license:bsd-3)))
+
+(define-public sundials-openmpi
+ (package (inherit sundials)
+ (name "sundials-openmpi")
+ (inputs
+ `(("mpi" ,openmpi)
+ ("petsc" ,petsc-openmpi) ;support in SUNDIALS requires MPI
+ ,@(package-inputs sundials)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments sundials)
+ ((#:configure-flags flags '())
+ `(cons* "-DMPI_ENABLE:BOOL=ON"
+ "-DPETSC_ENABLE:BOOL=ON"
+ (string-append "-DPETSC_INCLUDE_DIR="
+ (assoc-ref %build-inputs "petsc")
+ "/include")
+ (string-append "-DPETSC_LIBRARY_DIR="
+ (assoc-ref %build-inputs "petsc")
+ "/lib")
+ ,flags))
+ ((#:phases phases '%standard-phases)
+ `(modify-phases ,phases
+ (add-before 'check 'set-test-environment
+ (lambda _
+ ;; By default, running the test suite would fail because 'ssh'
+ ;; could not be found in $PATH. Define this variable to
+ ;; placate Open MPI without adding a dependency on OpenSSH (the
+ ;; agent isn't used anyway.)
+ (setenv "OMPI_MCA_plm_rsh_agent" (which "cat"))
+ ;; Allow oversubscription in case there are less
+ ;; physical cores available in the build environment
+ ;; than SUNDIALS wants while testing.
+ (setenv "OMPI_MCA_rmaps_base_oversubscribe" "yes")
+ #t))))))
+ (synopsis "SUNDIALS with OpenMPI support")))
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index 81d4145439..63a8db449a 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -39,15 +39,15 @@
(define-public nyacc
(package
(name "nyacc")
- (version "0.83.3")
+ (version "0.86.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://savannah/nyacc/"
name "-" version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (patches (search-patches "nyacc-binary-literals.patch"))
(sha256
(base32
- "0120n0mdb6r58c4jc024dhwqy5s8a20waknijfhqjc59a884lrd6"))))
+ "0lkd9lyspvhxlfs0496gsllwinh62jk9wij6gpadvx9gwz6yavd9"))))
(build-system gnu-build-system)
(native-inputs
`(("guile" ,guile-2.2)))
@@ -59,36 +59,24 @@ extensive examples, including parsers for the Javascript and C99 languages.")
(home-page "https://savannah.nongnu.org/projects/nyacc")
(license (list gpl3+ lgpl3+))))
-(define-public nyacc-for-mes
- (package
- (inherit nyacc)
- (version "0.80.42")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://gitlab.com/janneke/nyacc"
- "/-/archive/v" version
- "/nyacc-" version ".tar.gz"))
- (sha256
- (base32
- "0c8c8kxir0h2d4nxr131xbkfs7c80haipmkp2g6677sh14wn0b3y"))))))
-
(define-public mes
(let ((triplet "i686-unknown-linux-gnu"))
(package
(name "mes")
- (version "0.17")
+ (version "0.17.1")
(source (origin
(method url-fetch)
(uri (string-append "http://alpha.gnu.org/gnu/mes/"
"mes-" version ".tar.gz"))
+ (patches (search-patches "mes-nyacc-0.86.0.patch"))
(sha256
(base32
- "1j32x4zqy2cqjlg9m35f2411mwac2b0p5ch4hm99gddmfbxzgyhg"))))
+ "02g8zig53ffd0ai8kqhv2zj7bj2366a8hr6ydkwakmi2d1amyrna"))))
(build-system gnu-build-system)
(supported-systems '("i686-linux" "x86_64-linux"))
(propagated-inputs
`(("mescc-tools" ,mescc-tools)
- ("nyacc" ,nyacc-for-mes)))
+ ("nyacc" ,nyacc)))
(native-inputs
`(("guile" ,guile-2.2)
,@(if (not (string-prefix? "i686-linux" (or (%current-target-system)
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index 579127d06e..c9effbafa3 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -84,7 +84,7 @@ fully implemented.
This package contains the library.")
(license license:gpl2+)
- (home-page "http://www.underbit.com/products/mad/")))
+ (home-page "https://www.underbit.com/products/mad/")))
(define-public libid3tag
(package
@@ -105,7 +105,7 @@ This package contains the library.")
"Libid3tag is a library for reading ID3 tags, both ID3v1 and the various
versions of ID3v2.")
(license license:gpl2+)
- (home-page "http://www.underbit.com/products/mad/")))
+ (home-page "https://www.underbit.com/products/mad/")))
(define-public id3lib
(package
@@ -184,7 +184,7 @@ Speex, WavPack TrueAudio, WAV, AIFF, MP4 and ASF files.")
(source (origin
(method url-fetch)
(uri (string-append
- "http://ibiblio.org"
+ "https://ibiblio.org"
"/pub/linux/apps/sound/mp3-utils/mp3info/mp3info-"
version ".tgz"))
(sha256
@@ -231,7 +231,7 @@ Speex, WavPack TrueAudio, WAV, AIFF, MP4 and ASF files.")
(inputs
`(("gtk+" ,gtk+-2)
("ncurses" ,ncurses)))
- (home-page "http://www.ibiblio.org/mp3info/")
+ (home-page "https://www.ibiblio.org/mp3info/")
(synopsis "MP3 technical info viewer and ID3 1.x tag editor")
(description
"MP3Info is a little utility used to read and modify the ID3 tags of MP3
@@ -309,7 +309,7 @@ This package contains the binary.")
(uri (list (string-append "mirror://sourceforge/mpg123/mpg123/"
version "/mpg123-" version ".tar.bz2")
(string-append
- "http://www.mpg123.org/download/mpg123-"
+ "https://www.mpg123.org/download/mpg123-"
version ".tar.bz2")))
(sha256
(base32
@@ -413,7 +413,7 @@ for album and track information.")
(source (origin
(method url-fetch)
(uri (string-append
- "http://files.musepack.net/source/libmpcdec-"
+ "https://files.musepack.net/source/libmpcdec-"
version ".tar.bz2"))
(sha256
(base32
@@ -424,7 +424,7 @@ for album and track information.")
"This library supports decoding of the Musepack (MPC) audio compression
format.")
(license license:bsd-3)
- (home-page "http://musepack.net")))
+ (home-page "https://musepack.net")))
(define-public mpc123
(package
@@ -491,7 +491,7 @@ specifically mp3 files containing ID3 metadata (i.e. song info). It provides a
command-line tool (eyeD3) and a Python library (import eyed3) that can be used
to write your own applications or plugins that are callable from the
command-line tool.")
- (home-page "http://eyed3.nicfit.net/")
+ (home-page "https://eyed3.readthedocs.io/en/latest/")
(license license:gpl2+)))
(define-public chromaprint
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 2554ec9efd..5c82bf9ba1 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -56,7 +56,7 @@
(define-public libmpdclient
(package
(name "libmpdclient")
- (version "2.14")
+ (version "2.15")
(source (origin
(method url-fetch)
(uri
@@ -65,7 +65,7 @@
"/libmpdclient-" version ".tar.xz"))
(sha256
(base32
- "0whk0qw0lsd3kaimdznz0c45bfym0p4885zf4b7pfc7y3dwy510a"))))
+ "1la60ar6i4ghpscrlgm45kci9b74bvkpsfybhg0ygs4rzpwzdnxl"))))
(build-system meson-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
diff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scm
index e185a98359..4f5eac16b9 100644
--- a/gnu/packages/multiprecision.scm
+++ b/gnu/packages/multiprecision.scm
@@ -108,7 +108,7 @@ algebra.")
library for performing multiple-precision, floating-point computations with
correct rounding.")
(license lgpl3+)
- (home-page "http://www.mpfr.org/")))
+ (home-page "https://www.mpfr.org/")))
(define-public mpc
(package
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index ba21e5da2b..e39478e794 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -786,18 +786,23 @@ interface. It is implemented as a frontend to @code{klick}.")
(define-public libgme
(package
(name "libgme")
- (version "0.6.1")
+ (version "0.6.2")
(source (origin
(method url-fetch)
(uri (string-append "https://bitbucket.org/mpyne/game-music-emu/"
"downloads/game-music-emu-" version
- ".tar.bz2"))
+ ".tar.xz"))
(sha256
(base32
- "08fk7zddpn7v93d0fa7fcypx7hvgwx9b5psj9l6m8b87k2hbw4fw"))))
+ "0hkkmxbaas2sirlb5i4r10mgbbiaapjx8pazifabwba23m3wnijh"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f)) ; no check target
+ (native-inputs
+ `(;; Use gcc-4.9 to work around an internal compiler error that happens
+ ;; when using gcc-5.5.0. FIXME: Try removing this when the default
+ ;; compiler is no longer gcc-5.5.0.
+ ("gcc" ,gcc-4.9)))
(home-page "https://bitbucket.org/mpyne/game-music-emu")
(synopsis "Video game music file playback library")
(description
diff --git a/gnu/packages/musl.scm b/gnu/packages/musl.scm
index ff789b8c6f..357372becd 100644
--- a/gnu/packages/musl.scm
+++ b/gnu/packages/musl.scm
@@ -28,17 +28,17 @@
(define-public musl
(package
(name "musl")
- (version "1.1.19")
+ (version "1.1.20")
(source (origin
(method url-fetch)
(uri (string-append "http://www.musl-libc.org/releases/"
name "-" version ".tar.gz"))
(sha256
(base32
- "1nf1wh44bhm8gdcfr75ayib29b99vpq62zmjymrq7f96h9bshnfv"))))
+ "0q8dsjxl41dccscv9a0r78bs7jap57mn4mni5pwbbip6s1qqggj4"))))
(build-system gnu-build-system)
(arguments
- `(#:tests? #f ; Musl has no tests
+ `(#:tests? #f ; Musl has no tests
#:configure-flags
(list "--disable-gcc-wrapper")))
(synopsis "Small C standard library")
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 61c0ad7fba..abc616de3c 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -580,7 +580,7 @@ of the same name.")
(define-public wireshark
(package
(name "wireshark")
- (version "2.6.2")
+ (version "2.6.3")
(source
(origin
(method url-fetch)
@@ -588,7 +588,7 @@ of the same name.")
version ".tar.xz"))
(sha256
(base32
- "153h6prxamv5a62f3pfadkry0y57696xrgxfy2gfy5xswdg8kcj9"))))
+ "1v538h02y8avwy3cr11xz6wkyf9xd8qva4ng4sl9f2fw4skahn6i"))))
(build-system gnu-build-system)
(inputs `(("c-ares" ,c-ares)
("glib" ,glib)
@@ -762,52 +762,58 @@ live network and disk I/O bandwidth monitor.")
(define-public aircrack-ng
(package
(name "aircrack-ng")
- (version "1.2-rc4")
+ (version "1.3")
(source
(origin
(method url-fetch)
- (uri (string-append "http://download.aircrack-ng.org/aircrack-ng-"
+ (uri (string-append "https://download.aircrack-ng.org/aircrack-ng-"
version ".tar.gz"))
(sha256
(base32
- "0dpzx9kddxpgzmgvdpl3rxn0jdaqhm5wxxndp1xd7d75mmmc2fnr"))))
+ "1jl30d0kibc82447fr3lgw75arik0l9729k94z76l7vl51y8mq4a"))))
(build-system gnu-build-system)
(native-inputs
- `(("pkg-config" ,pkg-config)))
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)
+ ("which" ,which)))
(inputs
`(("libgcrypt" ,libgcrypt)
("libnl" ,libnl)
+ ("libpcap" ,libpcap)
("ethtool" ,ethtool)
("pcre" ,pcre)
("sqlite" ,sqlite)
("zlib" ,zlib)))
(arguments
- `(#:make-flags `("sqlite=true"
- "gcrypt=true"
- "libnl=true"
- "pcre=true"
- "experimental=true" ;build wesside-ng, etc.
- "AVX2FLAG=N" "AVX1FLAG=N"
- ,,@(match (%current-system)
- ((or "x86_64-linux" "i686-linux")
- `("SSEFLAG=Y"))
- (_
- `("NEWSSE=false")))
- ,(string-append "prefix=" %output))
+ `(#:configure-flags
+ (list "--with-experimental=yes" ; build wesside-ng, etc.
+ "--with-gcrypt") ; openssl's the default
#:phases (modify-phases %standard-phases
- (delete 'configure) ;no configure phase
+ (add-before 'bootstrap 'patch-evalrev
+ (lambda _
+ ;; Called by ./autogen.sh below, before the default
+ ;; ‘patch-shebangs’ phase has had a chance to run.
+ (substitute* "evalrev"
+ (("/bin/sh")
+ (which "sh")))
+ #t))
+ (replace 'bootstrap
+ (lambda _
+ ;; Patch shebangs in generated files before running
+ ;; ./configure.
+ (setenv "NOCONFIGURE" "please")
+ (invoke "bash" "./autogen.sh")))
(add-after 'build 'absolutize-tools
(lambda* (#:key inputs #:allow-other-keys)
(let ((ethtool (string-append (assoc-ref inputs "ethtool")
"/sbin/ethtool")))
(substitute* "scripts/airmon-ng"
- (("\\[ ! -x \"\\$\\(command -v ethtool 2>&1)\" \\]")
- (string-append "! " ethtool " --version "
- ">/dev/null 2>&1"))
- (("\\$\\(ethtool")
- (string-append "$(" ethtool)))
+ (("ethtool ")
+ (string-append ethtool " ")))
#t))))))
- (home-page "http://www.aircrack-ng.org")
+ (home-page "https://www.aircrack-ng.org")
(synopsis "Assess WiFi network security")
(description
"Aircrack-ng is a complete suite of tools to assess WiFi network
diff --git a/gnu/packages/openldap.scm b/gnu/packages/openldap.scm
index 1cdce999b3..ae39870dd4 100644
--- a/gnu/packages/openldap.scm
+++ b/gnu/packages/openldap.scm
@@ -106,14 +106,14 @@
(define-public nss-pam-ldapd
(package
(name "nss-pam-ldapd")
- (version "0.9.9")
+ (version "0.9.10")
(source (origin
(method url-fetch)
(uri (string-append "https://arthurdejong.org/nss-pam-ldapd/"
"nss-pam-ldapd-" version ".tar.gz"))
(sha256
(base32
- "1lj7qkjlg3bshwdc5x5r1ny37rly4wgm1c8b6w6b5f4wa11nmji0"))))
+ "1cqamcr6qpgwxijlr6kg7jspjamjra8w0haan0qssn0yxn95d7c0"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 6c3d245058..06c344e7af 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -101,8 +101,8 @@
;; Note: the 'update-guix-package.scm' script expects this definition to
;; start precisely like this.
(let ((version "0.15.0")
- (commit "8bbb79cf95a07a40950448a8a09d888254404ed4")
- (revision 2))
+ (commit "3d43017026f9995ad128915db8ca5eafe061bf75")
+ (revision 3))
(package
(name "guix")
@@ -118,7 +118,7 @@
(commit commit)))
(sha256
(base32
- "0h83l91v2cg9bb78c7vqx9wj71ckz22jbjmm2fy4vqs9216jnvc0"))
+ "167rzz2h33xmmchkplwzfq94s5jwdn5nabsq2lb84s54ps0sm89m"))
(file-name (string-append "guix-" version "-checkout"))))
(build-system gnu-build-system)
(arguments
@@ -213,6 +213,7 @@
;; Guile-JSON, and Guile-Git automatically.
(let* ((out (assoc-ref outputs "out"))
(guile (assoc-ref inputs "guile"))
+ (gcrypt (assoc-ref inputs "guile-gcrypt"))
(json (assoc-ref inputs "guile-json"))
(sqlite (assoc-ref inputs "guile-sqlite3"))
(git (assoc-ref inputs "guile-git"))
@@ -220,7 +221,8 @@
"guile-bytestructures"))
(ssh (assoc-ref inputs "guile-ssh"))
(gnutls (assoc-ref inputs "gnutls"))
- (deps (list json sqlite gnutls git bs ssh))
+ (deps (list gcrypt json sqlite gnutls
+ git bs ssh))
(effective
(read-line
(open-pipe* OPEN_READ
@@ -277,6 +279,7 @@
'())))
(propagated-inputs
`(("gnutls" ,gnutls)
+ ("guile-gcrypt" ,guile-gcrypt)
("guile-json" ,guile-json)
("guile-sqlite3" ,guile-sqlite3)
("guile-ssh" ,guile-ssh)
@@ -312,6 +315,7 @@ the Nix package manager.")
(inputs
`(("gnutls" ,gnutls)
("guile-git" ,guile-git)
+ ("guile-gcrypt" ,guile-gcrypt)
,@(fold alist-delete (package-inputs guix)
'("boot-guile" "boot-guile/i686" "util-linux"))))
@@ -562,13 +566,13 @@ transactions from C or Python.")
(define-public diffoscope
(package
(name "diffoscope")
- (version "96")
+ (version "100")
(source (origin
(method url-fetch)
(uri (pypi-uri name version))
(sha256
(base32
- "1x66f2x8miy3giff14higpcs70c0zb5d3gj6yn8ac6p183sngl72"))))
+ "0sh7g26i5ndpa8l7xq6rnijbi3jz5izjn0b98zcnm6wpgghszw48"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/patches/ghostscript-CVE-2018-16509.patch b/gnu/packages/patches/ghostscript-CVE-2018-16509.patch
new file mode 100644
index 0000000000..50ffa3cb98
--- /dev/null
+++ b/gnu/packages/patches/ghostscript-CVE-2018-16509.patch
@@ -0,0 +1,193 @@
+Ghostscript 9.24 was released with an incomplete fix for CVE-2018-16509:
+https://nvd.nist.gov/vuln/detail/CVE-2018-16509
+https://bugs.chromium.org/p/project-zero/issues/detail?id=1640#c19
+https://bugs.ghostscript.com/show_bug.cgi?id=699718
+
+The reproducers no longer work after applying these commits:
+
+https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5812b1b78fc4d36fdc293b7859de69241140d590
+https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=e914f1da46e33decc534486598dc3eadf69e6efb
+https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=3e5d316b72e3965b7968bb1d96baa137cd063ac6
+https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=643b24dbd002fb9c131313253c307cf3951b3d47
+
+This patch is a "squashed" version of those.
+
+diff --git a/Resource/Init/gs_setpd.ps b/Resource/Init/gs_setpd.ps
+index bba3c8c0e..8fa7c51df 100644
+--- a/Resource/Init/gs_setpd.ps
++++ b/Resource/Init/gs_setpd.ps
+@@ -95,27 +95,41 @@ level2dict begin
+ { % Since setpagedevice doesn't create new device objects,
+ % we must (carefully) reinstall the old parameters in
+ % the same device.
+- .currentpagedevice pop //null currentdevice //null .trysetparams
++ .currentpagedevice pop //null currentdevice //null
++ { .trysetparams } .internalstopped
++ {
++ //null
++ } if
+ dup type /booleantype eq
+ { pop pop }
+- { % This should never happen!
++ {
+ SETPDDEBUG { (Error in .trysetparams!) = pstack flush } if
+- cleartomark pop pop pop
++ {cleartomark pop pop pop} .internalstopped pop
++ % if resetting the entire device state failed, at least put back the
++ % security related key
++ currentdevice //null //false mark /.LockSafetyParams
++ currentpagedevice /.LockSafetyParams .knownget not
++ {systemdict /SAFER .knownget not {//false} } if
++ .putdeviceparamsonly
+ /.installpagedevice cvx /rangecheck signalerror
+ }
+ ifelse pop pop
+ % A careful reading of the Red Book reveals that an erasepage
+ % should occur, but *not* an initgraphics.
+ erasepage .beginpage
+- } bind def
++ } bind executeonly def
+
+ /.uninstallpagedevice
+- { 2 .endpage { .currentnumcopies //false .outputpage } if
++ {
++ {2 .endpage { .currentnumcopies //false .outputpage } if} .internalstopped pop
+ nulldevice
+ } bind def
+
+ (%grestorepagedevice) cvn
+- { .uninstallpagedevice grestore .installpagedevice
++ {
++ .uninstallpagedevice
++ grestore
++ .installpagedevice
+ } bind def
+
+ (%grestoreallpagedevice) cvn
+diff --git a/psi/zdevice2.c b/psi/zdevice2.c
+index 0c7080d57..159a0c0d9 100644
+--- a/psi/zdevice2.c
++++ b/psi/zdevice2.c
+@@ -251,8 +251,8 @@ z2currentgstate(i_ctx_t *i_ctx_p)
+ /* ------ Wrappers for operators that reset the graphics state. ------ */
+
+ /* Check whether we need to call out to restore the page device. */
+-static bool
+-restore_page_device(const gs_gstate * pgs_old, const gs_gstate * pgs_new)
++static int
++restore_page_device(i_ctx_t *i_ctx_p, const gs_gstate * pgs_old, const gs_gstate * pgs_new)
+ {
+ gx_device *dev_old = gs_currentdevice(pgs_old);
+ gx_device *dev_new;
+@@ -260,9 +260,10 @@ restore_page_device(const gs_gstate * pgs_old, const gs_gstate * pgs_new)
+ gx_device *dev_t2;
+ bool samepagedevice = obj_eq(dev_old->memory, &gs_int_gstate(pgs_old)->pagedevice,
+ &gs_int_gstate(pgs_new)->pagedevice);
++ bool LockSafetyParams = dev_old->LockSafetyParams;
+
+ if ((dev_t1 = (*dev_proc(dev_old, get_page_device)) (dev_old)) == 0)
+- return false;
++ return 0;
+ /* If we are going to putdeviceparams in a callout, we need to */
+ /* unlock temporarily. The device will be re-locked as needed */
+ /* by putdeviceparams from the pgs_old->pagedevice dict state. */
+@@ -271,23 +272,51 @@ restore_page_device(const gs_gstate * pgs_old, const gs_gstate * pgs_new)
+ dev_new = gs_currentdevice(pgs_new);
+ if (dev_old != dev_new) {
+ if ((dev_t2 = (*dev_proc(dev_new, get_page_device)) (dev_new)) == 0)
+- return false;
+- if (dev_t1 != dev_t2)
+- return true;
++ samepagedevice = true;
++ else if (dev_t1 != dev_t2)
++ samepagedevice = false;
++ }
++
++ if (LockSafetyParams && !samepagedevice) {
++ const int required_ops = 512;
++ const int required_es = 32;
++
++ /* The %grestorepagedevice must complete: the biggest danger
++ is operand stack overflow. As we use get/putdeviceparams
++ that means pushing all the device params onto the stack,
++ pdfwrite having by far the largest number of parameters
++ at (currently) 212 key/value pairs - thus needing (currently)
++ 424 entries on the op stack. Allowing for working stack
++ space, and safety margin.....
++ */
++ if (required_ops + ref_stack_count(&o_stack) >= ref_stack_max_count(&o_stack)) {
++ gs_currentdevice(pgs_old)->LockSafetyParams = LockSafetyParams;
++ return_error(gs_error_stackoverflow);
++ }
++ /* We also want enough exec stack space - 32 is an overestimate of
++ what we need to complete the Postscript call out.
++ */
++ if (required_es + ref_stack_count(&e_stack) >= ref_stack_max_count(&e_stack)) {
++ gs_currentdevice(pgs_old)->LockSafetyParams = LockSafetyParams;
++ return_error(gs_error_execstackoverflow);
++ }
+ }
+ /*
+ * The current implementation of setpagedevice just sets new
+ * parameters in the same device object, so we have to check
+ * whether the page device dictionaries are the same.
+ */
+- return !samepagedevice;
++ return samepagedevice ? 0 : 1;
+ }
+
+ /* - grestore - */
+ static int
+ z2grestore(i_ctx_t *i_ctx_p)
+ {
+- if (!restore_page_device(igs, gs_gstate_saved(igs)))
++ int code = restore_page_device(i_ctx_p, igs, gs_gstate_saved(igs));
++ if (code < 0) return code;
++
++ if (code == 0)
+ return gs_grestore(igs);
+ return push_callout(i_ctx_p, "%grestorepagedevice");
+ }
+@@ -297,7 +326,9 @@ static int
+ z2grestoreall(i_ctx_t *i_ctx_p)
+ {
+ for (;;) {
+- if (!restore_page_device(igs, gs_gstate_saved(igs))) {
++ int code = restore_page_device(i_ctx_p, igs, gs_gstate_saved(igs));
++ if (code < 0) return code;
++ if (code == 0) {
+ bool done = !gs_gstate_saved(gs_gstate_saved(igs));
+
+ gs_grestore(igs);
+@@ -328,11 +359,15 @@ z2restore(i_ctx_t *i_ctx_p)
+ if (code < 0) return code;
+
+ while (gs_gstate_saved(gs_gstate_saved(igs))) {
+- if (restore_page_device(igs, gs_gstate_saved(igs)))
++ code = restore_page_device(i_ctx_p, igs, gs_gstate_saved(igs));
++ if (code < 0) return code;
++ if (code > 0)
+ return push_callout(i_ctx_p, "%restore1pagedevice");
+ gs_grestore(igs);
+ }
+- if (restore_page_device(igs, gs_gstate_saved(igs)))
++ code = restore_page_device(i_ctx_p, igs, gs_gstate_saved(igs));
++ if (code < 0) return code;
++ if (code > 0)
+ return push_callout(i_ctx_p, "%restorepagedevice");
+
+ code = dorestore(i_ctx_p, asave);
+@@ -355,9 +390,12 @@ static int
+ z2setgstate(i_ctx_t *i_ctx_p)
+ {
+ os_ptr op = osp;
++ int code;
+
+ check_stype(*op, st_igstate_obj);
+- if (!restore_page_device(igs, igstate_ptr(op)))
++ code = restore_page_device(i_ctx_p, igs, igstate_ptr(op));
++ if (code < 0) return code;
++ if (code == 0)
+ return zsetgstate(i_ctx_p);
+ return push_callout(i_ctx_p, "%setgstatepagedevice");
+ }
diff --git a/gnu/packages/patches/ghostscript-bug-699708.patch b/gnu/packages/patches/ghostscript-bug-699708.patch
new file mode 100644
index 0000000000..1567be1c6f
--- /dev/null
+++ b/gnu/packages/patches/ghostscript-bug-699708.patch
@@ -0,0 +1,160 @@
+Additional security fix that missed 9.24.
+
+Taken from upstream:
+http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=fb713b3818b52d8a6cf62c951eba2e1795ff9624
+
+From fb713b3818b52d8a6cf62c951eba2e1795ff9624 Mon Sep 17 00:00:00 2001
+From: Chris Liddell <chris.liddell@artifex.com>
+Date: Thu, 6 Sep 2018 09:16:22 +0100
+Subject: [PATCH] Bug 699708 (part 1): 'Hide' non-replaceable error handlers
+ for SAFER
+
+We already had a 'private' dictionary for non-standard errors: gserrordict.
+
+This now includes all the default error handlers, the dictionary is made
+noaccess and all the prodedures are bound and executeonly.
+
+When running with -dSAFER, in the event of a Postscript error, instead of
+pulling the handler from errordict, we'll pull it from gserrordict - thus
+malicious input cannot trigger problems by the use of custom error handlers.
+
+errordict remains open and writeable, so files such as the Quality Logic tests
+that install their own handlers will still 'work', with the exception that the
+custom error handlers will not be called.
+
+This is a 'first pass', 'sledgehammer' approach: a nice addition would to allow
+an integrator to specify a list of errors that are not to be replaced (for
+example, embedded applications would probably want to ensure that VMerror is
+always handled as they intend).
+---
+ Resource/Init/gs_init.ps | 29 ++++++++++++++++++-----------
+ psi/interp.c | 30 +++++++++++++++++++++---------
+ 2 files changed, 39 insertions(+), 20 deletions(-)
+
+diff --git a/Resource/Init/gs_init.ps b/Resource/Init/gs_init.ps
+index 071c39205..bc8b7951c 100644
+--- a/Resource/Init/gs_init.ps
++++ b/Resource/Init/gs_init.ps
+@@ -881,7 +881,7 @@ userdict /.currentresourcefile //null put
+ { not exch pop exit } { pop } ifelse
+ }
+ for exch pop .quit
+- } bind def
++ } bind executeonly def
+ /.errorhandler % <command> <errorname> .errorhandler -
+ { % Detect an internal 'stopped'.
+ 1 .instopped { //null eq { pop pop stop } if } if
+@@ -926,7 +926,7 @@ userdict /.currentresourcefile //null put
+ $error /globalmode get $error /.nosetlocal get and .setglobal
+ $error /.inerror //false put
+ stop
+- } bind def
++ } bind executeonly def
+ % Define the standard handleerror. We break out the printing procedure
+ % (.printerror) so that it can be extended for binary output
+ % if the Level 2 facilities are present.
+@@ -976,7 +976,7 @@ userdict /.currentresourcefile //null put
+ ifelse % newerror
+ end
+ flush
+- } bind def
++ } bind executeonly def
+ /.printerror_long % long error printout,
+ % $error is on the dict stack
+ { % Push the (anonymous) stack printing procedure.
+@@ -1053,14 +1053,14 @@ userdict /.currentresourcefile //null put
+ { (Current file position is ) print position = }
+ if
+
+- } bind def
++ } bind executeonly def
+ % Define a procedure for clearing the error indication.
+ /.clearerror
+ { $error /newerror //false put
+ $error /errorname //null put
+ $error /errorinfo //null put
+ 0 .setoserrno
+- } bind def
++ } bind executeonly def
+
+ % Define $error. This must be in local VM.
+ .currentglobal //false .setglobal
+@@ -1086,11 +1086,15 @@ end
+ /errordict ErrorNames length 3 add dict
+ .forcedef % errordict is local, systemdict is global
+ .setglobal % back to global VM
+-% For greater Adobe compatibility, we put all non-standard errors in a
+-% separate dictionary, gserrordict. It does not need to be in local VM,
+-% because PostScript programs do not access it.
++% gserrordict contains all the default error handling methods, but unlike
++% errordict it is noaccess after creation (also it is in global VM).
++% When running 'SAFER', we'll ignore the contents of errordict, which
++% may have been tampered with by the running job, and always use gserrordict
++% gserrordict also contains any non-standard errors, for better compatibility
++% with Adobe.
++%
+ % NOTE: the name gserrordict is known to the interpreter.
+-/gserrordict 5 dict def
++/gserrordict ErrorNames length 3 add dict def
+ % Register an error in errordict. We make this a procedure because we only
+ % register the Level 1 errors here: the rest are registered by "feature"
+ % files. However, ErrorNames contains all of the error names regardless of
+@@ -1119,8 +1123,11 @@ errordict begin
+ } bind def
+ end % errordict
+
+-% Put non-standard errors in gserrordict.
+-gserrordict /unknownerror errordict /unknownerror get put
++% Put all the default handlers in gserrordict
++gserrordict
++errordict {2 index 3 1 roll put} forall
++noaccess pop
++% remove the non-standard errors from errordict
+ errordict /unknownerror .undef
+ % Define a stable private copy of handleerror that we will always use under
+ % JOBSERVER mode.
+diff --git a/psi/interp.c b/psi/interp.c
+index c27b70dca..d41a9d3f5 100644
+--- a/psi/interp.c
++++ b/psi/interp.c
+@@ -661,16 +661,28 @@ again:
+ return code;
+ if (gs_errorname(i_ctx_p, code, &error_name) < 0)
+ return code; /* out-of-range error code! */
+- /*
+- * For greater Adobe compatibility, only the standard PostScript errors
+- * are defined in errordict; the rest are in gserrordict.
++
++ /* If LockFilePermissions is true, we only refer to gserrordict, which
++ * is not accessible to Postcript jobs
+ */
+- if (dict_find_string(systemdict, "errordict", &perrordict) <= 0 ||
+- (dict_find(perrordict, &error_name, &epref) <= 0 &&
+- (dict_find_string(systemdict, "gserrordict", &perrordict) <= 0 ||
+- dict_find(perrordict, &error_name, &epref) <= 0))
+- )
+- return code; /* error name not in errordict??? */
++ if (i_ctx_p->LockFilePermissions) {
++ if (((dict_find_string(systemdict, "gserrordict", &perrordict) <= 0 ||
++ dict_find(perrordict, &error_name, &epref) <= 0))
++ )
++ return code; /* error name not in errordict??? */
++ }
++ else {
++ /*
++ * For greater Adobe compatibility, only the standard PostScript errors
++ * are defined in errordict; the rest are in gserrordict.
++ */
++ if (dict_find_string(systemdict, "errordict", &perrordict) <= 0 ||
++ (dict_find(perrordict, &error_name, &epref) <= 0 &&
++ (dict_find_string(systemdict, "gserrordict", &perrordict) <= 0 ||
++ dict_find(perrordict, &error_name, &epref) <= 0))
++ )
++ return code; /* error name not in errordict??? */
++ }
+ doref = *epref;
+ epref = &doref;
+ /* Push the error object on the operand stack if appropriate. */
+--
+2.18.0
+
diff --git a/gnu/packages/patches/mes-nyacc-0.86.0.patch b/gnu/packages/patches/mes-nyacc-0.86.0.patch
new file mode 100644
index 0000000000..58dfc5a46b
--- /dev/null
+++ b/gnu/packages/patches/mes-nyacc-0.86.0.patch
@@ -0,0 +1,197 @@
+From 9e610736bf779f3295c1192e748cd19cbbe3be28 Mon Sep 17 00:00:00 2001
+From: Jan Nieuwenhuizen <janneke@gnu.org>
+Date: Wed, 5 Sep 2018 20:28:06 +0200
+Subject: [PATCH 1/2] mes: Support Nyacc 0.85.3: Add char-set-copy.
+
+* mes/module/srfi/srfi-14.mes (char-set-copy): New function>
+---
+ mes/module/srfi/srfi-14.mes | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/mes/module/srfi/srfi-14.mes b/mes/module/srfi/srfi-14.mes
+index 0be39b1e..a16d16ce 100644
+--- a/mes/module/srfi/srfi-14.mes
++++ b/mes/module/srfi/srfi-14.mes
+@@ -52,3 +52,6 @@
+
+ (define (char-whitespace? c)
+ (char-set-contains? char-set:whitespace c))
++
++(define (char-set-copy cs)
++ (map identity cs))
+--
+2.18.0
+
+From b952bdf44f11edbfc277600dc35236aae1769b54 Mon Sep 17 00:00:00 2001
+From: Jan Nieuwenhuizen <janneke@gnu.org>
+Date: Wed, 5 Sep 2018 22:14:34 +0200
+Subject: [PATCH 2/2] mes: Support Nyacc 0.85.3: Integrate progress.
+
+* mes/module/nyacc/lang/sx-util.mes: New file.
+* mes/module/nyacc/version.mes: New file.
+* mes/module/nyacc/lang/c99/cpp.mes (nyacc): Include them.
+* mes/module/nyacc/lang/c99/parser.mes (nyacc): Include them.
+* module/mescc/preprocess.scm (need-progress): New function.
+(progress): New function.
+(insert-progress-monitors): Use them to Integrate progress.
+---
+ mes/module/mescc/preprocess.mes | 1 +
+ mes/module/nyacc/lang/c99/cpp.mes | 1 +
+ mes/module/nyacc/lang/c99/parser.mes | 1 +
+ mes/module/nyacc/lang/sx-util.mes | 27 +++++++++++++++++++++
+ mes/module/nyacc/version.mes | 26 +++++++++++++++++++++
+ module/mescc/preprocess.scm | 35 ++++++++++++++++++++++++++++
+ 6 files changed, 91 insertions(+)
+ create mode 100644 mes/module/nyacc/lang/sx-util.mes
+ create mode 100644 mes/module/nyacc/version.mes
+
+diff --git a/mes/module/mescc/preprocess.mes b/mes/module/mescc/preprocess.mes
+index c7c5fcaa..022a372c 100644
+--- a/mes/module/mescc/preprocess.mes
++++ b/mes/module/mescc/preprocess.mes
+@@ -24,4 +24,5 @@
+ (mes-use-module (srfi srfi-13))
+ (mes-use-module (srfi srfi-26))
+ (mes-use-module (nyacc lang c99 parser))
++(mes-use-module (nyacc version))
+ (include-from-path "mescc/preprocess.scm")
+diff --git a/mes/module/nyacc/lang/c99/cpp.mes b/mes/module/nyacc/lang/c99/cpp.mes
+index fad1dc55..b25c4a93 100644
+--- a/mes/module/nyacc/lang/c99/cpp.mes
++++ b/mes/module/nyacc/lang/c99/cpp.mes
+@@ -28,5 +28,6 @@
+
+ (mes-use-module (nyacc parse))
+ (mes-use-module (nyacc lex))
++(mes-use-module (nyacc lang sx-util))
+ (mes-use-module (nyacc lang util))
+ (include-from-path "nyacc/lang/c99/cpp.scm")
+diff --git a/mes/module/nyacc/lang/c99/parser.mes b/mes/module/nyacc/lang/c99/parser.mes
+index c51552d6..1a9aaf73 100644
+--- a/mes/module/nyacc/lang/c99/parser.mes
++++ b/mes/module/nyacc/lang/c99/parser.mes
+@@ -32,6 +32,7 @@
+
+ (mes-use-module (nyacc lex))
+ (mes-use-module (nyacc parse))
++(mes-use-module (nyacc lang sx-util))
+ (mes-use-module (nyacc lang util))
+ (mes-use-module (nyacc lang c99 cpp))
+
+diff --git a/mes/module/nyacc/lang/sx-util.mes b/mes/module/nyacc/lang/sx-util.mes
+new file mode 100644
+index 00000000..41ac5b4a
+--- /dev/null
++++ b/mes/module/nyacc/lang/sx-util.mes
+@@ -0,0 +1,27 @@
++;;; -*-scheme-*-
++
++;;; GNU Mes --- Maxwell Equations of Software
++;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
++;;;
++;;; This file is part of GNU Mes.
++;;;
++;;; GNU Mes 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 Mes 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 Mes. If not, see <http://www.gnu.org/licenses/>.
++
++;;; Commentary:
++
++;;; Code:
++
++(mes-use-module (srfi srfi-1))
++(mes-use-module (srfi srfi-16))
++(include-from-path "nyacc/lang/sx-util.scm")
+diff --git a/mes/module/nyacc/version.mes b/mes/module/nyacc/version.mes
+new file mode 100644
+index 00000000..b9db628e
+--- /dev/null
++++ b/mes/module/nyacc/version.mes
+@@ -0,0 +1,26 @@
++;;; -*-scheme-*-
++
++;;; GNU Mes --- Maxwell Equations of Software
++;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
++;;;
++;;; This file is part of GNU Mes.
++;;;
++;;; GNU Mes 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 Mes 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 Mes. If not, see <http://www.gnu.org/licenses/>.
++
++;;; Commentary:
++
++;;; Code:
++
++(include-from-path "nyacc/version.scm")
++(display "nyacc version\n")
+diff --git a/module/mescc/preprocess.scm b/module/mescc/preprocess.scm
+index 9e341cba..c2efb32c 100644
+--- a/module/mescc/preprocess.scm
++++ b/module/mescc/preprocess.scm
+@@ -26,9 +26,44 @@
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-26)
+ #:use-module (nyacc lang c99 parser)
++ #:use-module (nyacc lang c99 parser)
++ #:use-module (nyacc version)
+ #:use-module (mes guile)
+ #:export (c99-input->ast))
+
++(format (current-error-port) "*nyacc-version*=~a\n" *nyacc-version*)
++;; list of which rules you want progress reported
++(define need-progress
++ (assoc-ref
++ '(("0.85.3" (1 2 3))
++ ("0.86.0" (1 2 3)))
++ *nyacc-version*))
++
++(define (progress o)
++ (when (and o (getenv "NYACC_DEBUG"))
++ (display " :" (current-error-port))
++ (display o (current-error-port))
++ (display "\n" (current-error-port))))
++
++(define (insert-progress-monitors act-v len-v)
++ (let ((n (vector-length act-v)))
++ (let loop ((ix 0))
++ (when (< ix n)
++ (if (memq ix need-progress)
++ (vector-set
++ act-v ix
++ (lambda args
++ (progress (list-ref args (1- (vector-ref len-v ix))))
++ (apply (vector-ref act-v ix) args))))
++ (loop (1+ ix))))))
++
++(cond-expand
++ (guile
++ (insert-progress-monitors (@@ (nyacc lang c99 parser) c99-act-v)
++ (@@ (nyacc lang c99 parser) c99-len-v)))
++ (mes
++ (insert-progress-monitors c99-act-v c99-len-v)))
++
+ (define (logf port string . rest)
+ (apply format (cons* port string rest))
+ (force-output port)
+--
+2.18.0
+
diff --git a/gnu/packages/patches/nyacc-binary-literals.patch b/gnu/packages/patches/nyacc-binary-literals.patch
new file mode 100644
index 0000000000..8159d74032
--- /dev/null
+++ b/gnu/packages/patches/nyacc-binary-literals.patch
@@ -0,0 +1,29 @@
+From 6a08014b77bf435f025ecdac08396580b85f159a Mon Sep 17 00:00:00 2001
+From: Jan Nieuwenhuizen <janneke@gnu.org>
+Date: Sat, 8 Sep 2018 20:22:45 +0200
+Subject: [PATCH] fix binary literals.
+
+---
+ module/nyacc/lex.scm | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/module/nyacc/lex.scm b/module/nyacc/lex.scm
+index 2ec9895..b205212 100644
+--- a/module/nyacc/lex.scm
++++ b/module/nyacc/lex.scm
+@@ -345,10 +345,11 @@
+ ((char-numeric? ch) (iter chl '$fixed ba 1 ch))
+ ((char=? #\. ch) (iter (cons ch chl) #f ba 15 (read-char)))
+ (else #f)))
+- ((10) ;; allow x after 0
++ ((10) ;; allow x, b after 0
+ (cond
+ ((eof-object? ch) (iter chl ty ba 5 ch))
+ ((char=? #\x ch) (iter (cons ch chl) ty 16 1 (read-char)))
++ ((char=? #\b ch) (iter (cons ch chl) ty 2 1 (read-char)))
+ (else (iter chl ty ba 1 ch))))
+ ((15) ;; got `.' only
+ (cond
+--
+2.18.0
+
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 761c5987b0..4792b6fb49 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -153,8 +153,10 @@
(files '("lib/perl5/site_perl")))))
(synopsis "Implementation of the Perl programming language")
(description
- "Perl 5 is a highly capable, feature-rich programming language with over
-24 years of development.")
+ "Perl is a general-purpose programming language originally developed for
+text manipulation and now used for a wide range of tasks including system
+administration, web development, network programming, GUI development, and
+more.")
(home-page "http://www.perl.org/")
(license gpl1+))) ; or "Artistic"
@@ -1369,7 +1371,7 @@ supports XML, YAML, JSON, Apache-style configuration, and Perl code.")
(define-public perl-config-autoconf
(package
(name "perl-config-autoconf")
- (version "0.315")
+ (version "0.317")
(source
(origin
(method url-fetch)
@@ -1377,7 +1379,7 @@ supports XML, YAML, JSON, Apache-style configuration, and Perl code.")
"Config-AutoConf-" version ".tar.gz"))
(sha256
(base32
- "0h39x9rzrhhilpg8yxlzpka269qrzsjg0iy0c1b9xflqlvhx2g2b"))))
+ "1qcwib4yaml5z2283qy5khjcydyibklsnk8zrk9wzdzc5wnv5r01"))))
(build-system perl-build-system)
(propagated-inputs
`(("perl-capture-tiny" ,perl-capture-tiny)))
@@ -2140,7 +2142,7 @@ hours, minutes, seconds, and time zones.")
(define-public perl-datetime
(package
(name "perl-datetime")
- (version "1.49")
+ (version "1.50")
(source
(origin
(method url-fetch)
@@ -2148,7 +2150,7 @@ hours, minutes, seconds, and time zones.")
"DateTime-" version ".tar.gz"))
(sha256
(base32
- "0hbw4zq1562slnz7g7hyhfhyq98dzkk3i5g21x3xra5cvfix93kh"))))
+ "165iqk1xvhs5j0kzsipa7aqycx3h37wqsl2r4jl104yqvmqhqszd"))))
(build-system perl-build-system)
(native-inputs
`(("perl-cpan-meta-check" ,perl-cpan-meta-check)
@@ -3128,7 +3130,7 @@ only about 40% as many lines of code and with zero non-core dependencies.")
(define-public perl-extutils-installpaths
(package
(name "perl-extutils-installpaths")
- (version "0.011")
+ (version "0.012")
(source
(origin
(method url-fetch)
@@ -3136,7 +3138,7 @@ only about 40% as many lines of code and with zero non-core dependencies.")
"ExtUtils-InstallPaths-" version ".tar.gz"))
(sha256
(base32
- "0z06y0fhx9hy9x01abb7s2xdbqrh9x4ps7avmlf4bwfwih2gl2bn"))))
+ "1v9lshfhm9ck4p0v77arj5f7haj1mmkqal62lgzzvcds6wq5www4"))))
(build-system perl-build-system)
(propagated-inputs
`(("perl-extutils-config" ,perl-extutils-config)))
@@ -3192,7 +3194,7 @@ XS interface besides the perl one.")
(define-public perl-extutils-helpers
(package
(name "perl-extutils-helpers")
- (version "0.022")
+ (version "0.026")
(source
(origin
(method url-fetch)
@@ -3200,7 +3202,7 @@ XS interface besides the perl one.")
"ExtUtils-Helpers-" version ".tar.gz"))
(sha256
(base32
- "15dalfwmpfmifw312i5pwiai8134pxf7b2804shlqhdk1xqczy6k"))))
+ "05ilqcj1rg5izr09dsqmy5di4fvq6ph4k0chxks7qmd4j1kip46y"))))
(build-system perl-build-system)
(home-page "https://metacpan.org/release/ExtUtils-Helpers")
(synopsis "Various portability utilities for module builders")
@@ -3772,7 +3774,7 @@ single-letter approach, is provided but not enabled by default.")
(define-public perl-getopt-long-descriptive
(package
(name "perl-getopt-long-descriptive")
- (version "0.102")
+ (version "0.103")
(source
(origin
(method url-fetch)
@@ -3780,7 +3782,7 @@ single-letter approach, is provided but not enabled by default.")
"Getopt-Long-Descriptive-" version ".tar.gz"))
(sha256
(base32
- "0ii8xafvlph5vzcqp3dpc83lg7nkg3l1l2hmqdf5382a567vkm4s"))))
+ "1cpl240qxmh7jf85ai9sfkp3nzm99syya4jxidizp7aa83kvmqbh"))))
(build-system perl-build-system)
(native-inputs
`(("perl-cpan-meta-check" ,perl-cpan-meta-check)
@@ -6324,7 +6326,7 @@ anything that looks like a method.")
(define-public perl-namespace-clean
(package
(name "perl-namespace-clean")
- (version "0.25")
+ (version "0.27")
(source
(origin
(method url-fetch)
@@ -6332,7 +6334,7 @@ anything that looks like a method.")
"namespace-clean-" version ".tar.gz"))
(sha256
(base32
- "016dds70ql1mp18b07chkxiy4drn976ibnbshqc2hmhrh9xjnsll"))))
+ "17dg64pd4bwi2ad3p8ykwys1zha7kg8a8ykvks7wfg8q7qyah44a"))))
(build-system perl-build-system)
(propagated-inputs
`(("perl-package-stash" ,perl-package-stash)
@@ -6704,7 +6706,7 @@ checking parameters easier.")
(define-public perl-params-validate
(package
(name "perl-params-validate")
- (version "1.26")
+ (version "1.29")
(source
(origin
(method url-fetch)
@@ -6712,7 +6714,7 @@ checking parameters easier.")
"Params-Validate-" version ".tar.gz"))
(sha256
(base32
- "1vbj78qd46ip09i06dsbb62jfwpzp4bg7yi617v98nvim77w66l2"))))
+ "0cwpf8yxwyxbnwhf6rx4wnaq1q38j38i34a78a005shb8gxqv9j9"))))
(build-system perl-build-system)
(native-inputs
`(("perl-module-build" ,perl-module-build)
@@ -6897,7 +6899,7 @@ for correctness.")
(define-public perl-pegex
(package
(name "perl-pegex")
- (version "0.64")
+ (version "0.67")
(source
(origin
(method url-fetch)
@@ -6906,7 +6908,7 @@ for correctness.")
version ".tar.gz"))
(sha256
(base32
- "1kb7y2cc3nibbn8i8y3vrzz1f9h3892nbf8jj88c5fdgpmj05q17"))))
+ "149015ra2figalxrnj72fz02qc5cm96xg6x8d6kmyanfmrrxzf9w"))))
(build-system perl-build-system)
(native-inputs
`(("perl-file-sharedir-install" ,perl-file-sharedir-install)
diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm
index 0e65cb319f..2a330695c6 100644
--- a/gnu/packages/plotutils.scm
+++ b/gnu/packages/plotutils.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016, 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -93,15 +93,7 @@ scientific data.")
"guile-charting-" version ".tar.gz"))
(sha256
(base32
- "0w5qiyv9v0ip5li22x762bm48g8xnw281w66iyw094zdw611pb2m"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; Use the standard location for modules.
- (substitute* "Makefile.in"
- (("godir = .*$")
- "godir = $(moddir)\n"))
- #t))))
+ "0w5qiyv9v0ip5li22x762bm48g8xnw281w66iyw094zdw611pb2m"))))
(build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs `(("guile" ,guile-2.2)))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index ed04de7547..56176529c9 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -6186,14 +6186,14 @@ printing of sub-tables by specifying a row range.")
(define-public python-tables
(package
(name "python-tables")
- (version "3.2.2")
+ (version "3.4.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "tables" version))
(sha256
(base32
- "117s6w7s3yxafpmf3zz3svana7xfrsviw01va1xp7h8ylx8v6r1m"))
+ "0affz7k8babh8wdmsgrz5jxrd569by2w8ffimcxs9wiaf5rw1idx"))
(modules '((guix build utils)))
(snippet
'(begin
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index 6dbe1c4db7..900c8ec686 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -292,7 +292,7 @@ history mechanism, job control and a C-like syntax.")
(define-public zsh
(package
(name "zsh")
- (version "5.5.1")
+ (version "5.6")
(source (origin
(method url-fetch)
(uri (list (string-append
@@ -303,7 +303,7 @@ history mechanism, job control and a C-like syntax.")
".tar.xz")))
(sha256
(base32
- "105aqkdfsdxc4531anrj2zis2ywz6icagjam9lsc235yzh48ihz1"))))
+ "1mp6h2452z2029n12mxipjv4b0cc8i8sb72g8p8jklg8275iysvl"))))
(build-system gnu-build-system)
(arguments `(#:configure-flags '("--with-tcsetpgrp" "--enable-pcre")
#:phases
@@ -336,6 +336,19 @@ history mechanism, job control and a C-like syntax.")
(("command -pv") "command -v")
(("command -p") "command ")
(("'command' -p") "'command' "))
+ ;; This file is ISO-8859-1 encoded.
+ (with-fluids ((%default-port-encoding #f))
+ (substitute* "Test/A05execution.ztst"
+ ;; Help it find `sh`
+ (("PATH=/bin:\\$\\{ZTST_testdir\\}/command.tmp/ tstcmd-slashless")
+ (string-append "PATH=/bin:"
+ (assoc-ref %build-inputs "bash") "/bin:"
+ "${ZTST_testdir}/command.tmp/ tstcmd-slashless"))
+ ;; Help it find `echo`
+ (("PATH=/bin:\\$\\{ZTST_testdir\\}/command.tmp tstcmd-arg")
+ (string-append "PATH=/bin:"
+ (assoc-ref %build-inputs "coreutils") "/bin:"
+ "PATH=/bin:${ZTST_testdir}/command.tmp tstcmd-arg"))))
#t)))))
(native-inputs `(("autoconf" ,autoconf)))
(inputs `(("ncurses" ,ncurses)
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 64c331d28c..6e915aa437 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -960,14 +960,14 @@ solution for sending email, including attachments, from within R.")
(define-public r-stringi
(package
(name "r-stringi")
- (version "1.2.3")
+ (version "1.2.4")
(source
(origin
(method url-fetch)
(uri (cran-uri "stringi" version))
(sha256
(base32
- "1sgg4krw03qkz1n4dwiya0djggk7giwd0w21qlp0pfjqi0rxq6qx"))))
+ "1y46xab7g1lsjmilp4hbl7pjad6pcxp66hdj8wnfdg9518h0lmq1"))))
(build-system r-build-system)
(inputs `(("icu4c" ,icu4c)))
(native-inputs `(("pkg-config" ,pkg-config)))
@@ -1033,19 +1033,17 @@ using just two functions: melt and dcast (or acast).")
(define-public r-scales
(package
(name "r-scales")
- (version "0.5.0")
+ (version "1.0.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "scales" version))
(sha256
- (base32 "0zg9wfzmsdjxpbld0nzv7hcpq5r0wazqxmn7grvvif2agj0w1z6v"))))
+ (base32 "0353dkh3d7x78463c6ds80hcml59lrqwr8rlv82a8dnkxla4l7qc"))))
(build-system r-build-system)
(propagated-inputs
- `(("r-dichromat" ,r-dichromat)
- ("r-labeling" ,r-labeling)
+ `(("r-labeling" ,r-labeling)
("r-munsell" ,r-munsell)
- ("r-plyr" ,r-plyr)
("r-rcolorbrewer" ,r-rcolorbrewer)
("r-rcpp" ,r-rcpp)
("r-r6" ,r-r6)
@@ -1251,13 +1249,13 @@ for template use among CRAN packages.")
(define-public r-evaluate
(package
(name "r-evaluate")
- (version "0.10.1")
+ (version "0.11")
(source (origin
(method url-fetch)
(uri (cran-uri "evaluate" version))
(sha256
(base32
- "070vvmnbdlp7sz2zhza7fhd2a6mlwiln8fn4hyzhsiizbn4n79y9"))))
+ "1k8vcd4vsgg0hf7kdz8rlqp1dx4ygvg35aj4n3ay50kdnpzhaj5h"))))
(build-system r-build-system)
(propagated-inputs
`(("r-stringr" ,r-stringr)))
@@ -1356,13 +1354,13 @@ syntax that can be converted to XHTML or other formats.")
(define-public r-yaml
(package
(name "r-yaml")
- (version "2.1.19")
+ (version "2.2.0")
(source (origin
(method url-fetch)
(uri (cran-uri "yaml" version))
(sha256
(base32
- "04bzrnfgbpk0rhkvzwp3k3ip7jpq26bjxz71bx5mwxmcjdb07nz5"))))
+ "0in562nd0i23cg91a8kdbqgim656fgscykwi0icsnq53xj3srg2m"))))
(build-system r-build-system)
(home-page "https://cran.r-project.org/web/packages/yaml/")
(synopsis "Methods to convert R data to YAML and back")
@@ -1656,14 +1654,14 @@ database.")
(define-public r-dbplyr
(package
(name "r-dbplyr")
- (version "1.2.1")
+ (version "1.2.2")
(source
(origin
(method url-fetch)
(uri (cran-uri "dbplyr" version))
(sha256
(base32
- "1nwrls9c3kc9q7405jp6b9sh23642sz13yw55iikgw134shffj5k"))))
+ "0j5w6a1qim972kv4vmvinp3j50yr4idmm9cd3w7y3zsz0nq0nhcx"))))
(build-system r-build-system)
(propagated-inputs
`(("r-assertthat" ,r-assertthat)
@@ -1789,17 +1787,17 @@ and fast file reading.")
(define-public r-xtable
(package
(name "r-xtable")
- (version "1.8-2")
+ (version "1.8-3")
(source
(origin
(method url-fetch)
(uri (cran-uri "xtable" version))
(sha256
(base32
- "0398qkpvlw3dv0myz4mjcyqwpwc2m31l127r8vdzwc71wb6s28qn"))))
+ "09f311gq9g7dzf8jdvcx72j11xb7p00jlg066jjbpa6pz3zv1cjk"))))
(build-system r-build-system)
(native-inputs
- `(("r-knitr" ,r-knitr)))
+ `(("r-knitr" ,r-knitr))) ; for vignettes
(home-page "http://xtable.r-forge.r-project.org/")
(synopsis "Export R tables to LaTeX or HTML")
(description
@@ -1936,14 +1934,14 @@ chain.")
(define-public r-ade4
(package
(name "r-ade4")
- (version "1.7-11")
+ (version "1.7-13")
(source
(origin
(method url-fetch)
(uri (cran-uri "ade4" version))
(sha256
(base32
- "0wm54wcpn87rdh6vyw04cr8vgba899y6jsl61f22bmlvx6d7kkac"))))
+ "16z9jk4qj35ghsk4lwmq241dgc770y8a70dlmp9q4gz6d8ssgl7m"))))
(build-system r-build-system)
(propagated-inputs
`(("r-mass" ,r-mass)))
@@ -2237,24 +2235,28 @@ tables, autolinks and strikethrough text.")
(define-public r-roxygen2
(package
(name "r-roxygen2")
- (version "6.0.1")
+ (version "6.1.0")
(source (origin
(method url-fetch)
(uri (cran-uri "roxygen2" version))
(sha256
(base32
- "0xpzziminf225kjwhyl51kgkzhplyzhk5farhf5s822krl2xqbfj"))))
+ "0ji9k4s1bvfbl8wimfqj1lqr33h1claaz30vb5pgksxyg77j5xaa"))))
(build-system r-build-system)
(propagated-inputs
`(("r-brew" ,r-brew)
("r-commonmark" ,r-commonmark)
("r-desc" ,r-desc)
("r-digest" ,r-digest)
+ ("r-pkgload" ,r-pkgload)
+ ("r-purrr" ,r-purrr)
("r-r6" ,r-r6)
("r-rcpp" ,r-rcpp)
("r-stringi" ,r-stringi)
("r-stringr" ,r-stringr)
("r-xml2" ,r-xml2)))
+ (native-inputs
+ `(("r-knitr" ,r-knitr))) ; for vignettes
(home-page "https://github.com/klutometis/roxygen")
(synopsis "In-source documentation system for R")
(description
@@ -2320,13 +2322,13 @@ functions make it easy to control additional request components.")
(define-public r-git2r
(package
(name "r-git2r")
- (version "0.21.0")
+ (version "0.23.0")
(source (origin
(method url-fetch)
(uri (cran-uri "git2r" version))
(sha256
(base32
- "11xgddmxzh9cy85k8fb90il43qswpvryz0h9r0j1gbclfg2f9004"))))
+ "01250jz255fnyy2ap90nskvzhd8nhlmbhwgpvb43mk1fax077lrz"))))
(build-system r-build-system)
;; This R package contains modified sources of libgit2. This modified
;; version of libgit2 is built as the package is built. Hence libgit2 is
@@ -2335,6 +2337,8 @@ functions make it easy to control additional request components.")
`(("libssh2" ,libssh2)
("openssl" ,openssl)
("zlib" ,zlib)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
(home-page "https://github.com/ropensci/git2r")
(synopsis "Access Git repositories with R")
(description
@@ -2514,13 +2518,13 @@ well as additional utilities such as panel and axis annotation functions.")
(define-public r-rcpparmadillo
(package
(name "r-rcpparmadillo")
- (version "0.8.500.0")
+ (version "0.9.100.5.0")
(source (origin
(method url-fetch)
(uri (cran-uri "RcppArmadillo" version))
(sha256
(base32
- "1sh36dx6inmb56m40nigy94gxlgjva816qnlmjwg7y2bdvqj8vsi"))))
+ "1iyjqhfjip1nxrkllzh7r1m01jjnx7cahqkf3s557w34p987f2l1"))))
(properties `((upstream-name . "RcppArmadillo")))
(build-system r-build-system)
(native-inputs
@@ -2629,11 +2633,7 @@ certain criterion, e.g., it contains a certain regular file.")
("r-stringr" ,r-stringr)
("r-tinytex" ,r-tinytex)
("r-yaml" ,r-yaml)
- ;; rmarkdown works with the 2.x release of Pandoc, but with degraded
- ;; functionality. For example, tabbed plots do not currently work with
- ;; Pandoc 2. The authors of rmarkdown recommend the use of Pandoc 1
- ;; for the time being.
- ("ghc-pandoc" ,ghc-pandoc-1)))
+ ("ghc-pandoc" ,ghc-pandoc)))
(home-page "http://rmarkdown.rstudio.com")
(synopsis "Convert R Markdown documents into a variety of formats")
(description
@@ -2799,13 +2799,13 @@ ldap, and also supports cookies, redirects, authentication, etc.")
(define-public r-xml
(package
(name "r-xml")
- (version "3.98-1.11")
+ (version "3.98-1.16")
(source (origin
(method url-fetch)
(uri (cran-uri "XML" version))
(sha256
(base32
- "18izvlg2x9mzr6yb3yf02ghwbyn00frki3av4lpc44r22m4djnsh"))))
+ "0nl1kk354r8snhj6p9mc74m7awvqc6akmd4y3a46y78yv3g15njp"))))
(properties
`((upstream-name . "XML")))
(build-system r-build-system)
@@ -3281,14 +3281,14 @@ Stochastic Neighbor Embedding using a Barnes-Hut implementation.")
(define-public r-e1071
(package
(name "r-e1071")
- (version "1.6-8")
+ (version "1.7-0")
(source
(origin
(method url-fetch)
(uri (cran-uri "e1071" version))
(sha256
(base32
- "08n6i26nfckjpxjkzi8phhanc3ahsrirkv5rz38y2jcv7ds031pn"))))
+ "0fk4pw67cw1663d0n9rf1qfdqzz8k5nqkjgp3hi5jr422qp9lsck"))))
(build-system r-build-system)
(propagated-inputs
`(("r-class" ,r-class)))
@@ -3459,13 +3459,13 @@ maintenance for package developers.")
(define-public r-r-utils
(package
(name "r-r-utils")
- (version "2.6.0")
+ (version "2.7.0")
(source (origin
(method url-fetch)
(uri (cran-uri "R.utils" version))
(sha256
(base32
- "03j7hrs03kyj9qrjxyp5kqv4lpqqpk6xwbkzx6j15d8928yrjr2x"))))
+ "0cxhn14a57x4gcyrwpfz1d6dw4xh0jcpqkb33hx8imnr340blh7n"))))
(properties `((upstream-name . "R.utils")))
(build-system r-build-system)
(propagated-inputs
@@ -3507,13 +3507,13 @@ persistent (on the file system).")
(define-public r-r-rsp
(package
(name "r-r-rsp")
- (version "0.42.0")
+ (version "0.43.0")
(source (origin
(method url-fetch)
(uri (cran-uri "R.rsp" version))
(sha256
(base32
- "1zcq0hzi0j7fvj2rs796a1i120wbr0387vck17rrd644awwbsbm0"))))
+ "0ax6781kfylx0acz0i3sqnpkxmrq73x29wwfic59ng7vj0ws0gyd"))))
(properties `((upstream-name . "R.rsp")))
(build-system r-build-system)
(propagated-inputs
@@ -3558,13 +3558,13 @@ t-probabilities, quantiles, random deviates and densities.")
(define-public r-matrixstats
(package
(name "r-matrixstats")
- (version "0.53.1")
+ (version "0.54.0")
(source (origin
(method url-fetch)
(uri (cran-uri "matrixStats" version))
(sha256
(base32
- "0bkiz5fm09d3512mfr2ymj9qsb1b8aic5l5m6fkaf5j7nsgvqw6z"))))
+ "0vx00ldsg2zvdrjn49jxczk2c9iaabgvzgpdka5j02ihh7hv83cg"))))
(properties `((upstream-name . "matrixStats")))
(build-system r-build-system)
(native-inputs
@@ -3739,13 +3739,13 @@ features present in other programming languages.")
(define-public r-plotly
(package
(name "r-plotly")
- (version "4.7.1")
+ (version "4.8.0")
(source (origin
(method url-fetch)
(uri (cran-uri "plotly" version))
(sha256
(base32
- "0wj9lw7w28z8w9ip9vadv6sydjhqyg65kfiai9m3bndzz50b1m3w"))))
+ "19p8pa03q9mw5vaan7r56xgd13d90ssiz0flbrkvpfrir2105ybq"))))
(build-system r-build-system)
(propagated-inputs
`(("r-base64enc" ,r-base64enc)
@@ -3761,8 +3761,10 @@ features present in other programming languages.")
("r-jsonlite" ,r-jsonlite)
("r-lazyeval" ,r-lazyeval)
("r-magrittr" ,r-magrittr)
+ ("r-promises" ,r-promises)
("r-purrr" ,r-purrr)
("r-rcolorbrewer" ,r-rcolorbrewer)
+ ("r-rlang" ,r-rlang)
("r-scales" ,r-scales)
("r-tibble" ,r-tibble)
("r-tidyr" ,r-tidyr)
@@ -3844,14 +3846,14 @@ character vector.")
(define-public r-googlesheets
(package
(name "r-googlesheets")
- (version "0.2.2")
+ (version "0.3.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "googlesheets" version))
(sha256
(base32
- "18q0xmxn09b52rmky7gr5flp0awndcnsgb7zcvkzvkrkvmwad52b"))))
+ "11q07nxys72wkxx9mawmjyf20gvwvrb7h3gpa73h6lgh2vgrwnv8"))))
(build-system r-build-system)
(propagated-inputs
`(("r-cellranger" ,r-cellranger)
@@ -3861,6 +3863,7 @@ character vector.")
("r-purrr" ,r-purrr)
("r-readr" ,r-readr)
("r-stringr" ,r-stringr)
+ ("r-tibble" ,r-tibble)
("r-tidyr" ,r-tidyr)
("r-xml2" ,r-xml2)))
(home-page "https://github.com/jennybc/googlesheets")
@@ -4088,14 +4091,14 @@ Zurich, including many that are related to graphics.")
(define-public r-gtools
(package
(name "r-gtools")
- (version "3.5.0")
+ (version "3.8.1")
(source
(origin
(method url-fetch)
(uri (cran-uri "gtools" version))
(sha256
(base32
- "1xknwk9xlsj027pg0nwiizigcrsc84hdrig0jn0cgcyxj8dabdl6"))))
+ "0f5syk1qq6cjq6hwymvkiyhzwa389z94722v881ipbfqkd2q8505"))))
(build-system r-build-system)
(arguments
`(#:phases
@@ -4228,13 +4231,13 @@ mechanism.")
(define-public r-zoo
(package
(name "r-zoo")
- (version "1.8-2")
+ (version "1.8-3")
(source (origin
(method url-fetch)
(uri (cran-uri "zoo" version))
(sha256
(base32
- "1lpwigxmi5sc23xrha4gcsccsm4yfsg0sa97y6vac3pg1lliblvx"))))
+ "15jmkgwvq2mm9f09vijgx7sff8pszh90fndcwhk2vw9i0p183di0"))))
(build-system r-build-system)
(propagated-inputs
`(("r-lattice" ,r-lattice)))
@@ -4248,14 +4251,22 @@ series of numeric vectors/matrices and factors.")
(define-public r-ztable
(package
(name "r-ztable")
- (version "0.1.8")
+ (version "0.2.0")
(source (origin
(method url-fetch)
(uri (cran-uri "ztable" version))
(sha256
(base32
- "1hk5k9614n52dpfrhdws06w4gvwhnz8q47x4cwxx88qmrzm8z2m3"))))
+ "0g7khk5ifsdh9p31wlwh2l5mn1hzxzpv6qcn1wh34vsfjdmijjwy"))))
(build-system r-build-system)
+ (propagated-inputs
+ `(("r-flextable" ,r-flextable)
+ ("r-magrittr" ,r-magrittr)
+ ("r-moonbook" ,r-moonbook)
+ ("r-officer" ,r-officer)
+ ("r-rcolorbrewer" ,r-rcolorbrewer)
+ ("r-scales" ,r-scales)
+ ("r-stringr" ,r-stringr)))
(home-page "https://cran.r-project.org/web/packages/ztable")
(synopsis "Zebra-striped tables in LaTeX and HTML formats for R")
(description
@@ -4350,19 +4361,20 @@ data at that region, and avoids over-plotting.")
(define-public r-ggthemes
(package
(name "r-ggthemes")
- (version "3.5.0")
+ (version "4.0.1")
(source (origin
(method url-fetch)
(uri (cran-uri "ggthemes" version))
(sha256
(base32
- "0drbzzb4i5jq1579fx1wmgh87ybnswjn7srak2l8g771ip49xwb8"))))
+ "0y6570wv135sf7pv57l7bqilzw47rziaqx4vsk45pf1w4lmj0w8b"))))
(build-system r-build-system)
(propagated-inputs
- `(("r-assertthat" ,r-assertthat)
- ("r-colorspace" ,r-colorspace)
- ("r-ggplot2" ,r-ggplot2)
- ("r-scales" ,r-scales)))
+ `(("r-ggplot2" ,r-ggplot2)
+ ("r-purrr" ,r-purrr)
+ ("r-scales" ,r-scales)
+ ("r-stringr" ,r-stringr)
+ ("r-tibble" ,r-tibble)))
(home-page "https://cran.rstudio.com/web/packages/ggthemes")
(synopsis "Extra themes, scales and geoms for @code{ggplot2}")
(description "This package provides extra themes and scales for
@@ -4401,13 +4413,13 @@ dispersion modeling and Tweedie power-law families.")
(define-public r-rann
(package
(name "r-rann")
- (version "2.5.1")
+ (version "2.6")
(source (origin
(method url-fetch)
(uri (cran-uri "RANN" version))
(sha256
(base32
- "0il5i99vbcagnxvb15af5n37g04a4q1x96bz73zh3jhki9fpw9vm"))))
+ "1r6rivh9ba4gwnzryip0aiwsbm46zma7nvd9z5y456p2dgzp9lii"))))
(properties
`((upstream-name . "RANN")))
(build-system r-build-system)
@@ -4723,14 +4735,14 @@ can be efficiently implemented directly in the R language.")
(define-public r-robustbase
(package
(name "r-robustbase")
- (version "0.93-0")
+ (version "0.93-2")
(source
(origin
(method url-fetch)
(uri (cran-uri "robustbase" version))
(sha256
(base32
- "130pzibn5cb8mycv8byc6npzcpddghz8m7jqwk15qmx4g3cj8zgy"))))
+ "1632p73iv9iqqm0v3k9rfv9way0him3fl35si1nly9wi5kpq5ci7"))))
(build-system r-build-system)
(inputs
`(("gfortran" ,gfortran)))
@@ -4999,18 +5011,19 @@ decompositions of such matrices, and solutions of linear systems.")
(define-public r-modelmetrics
(package
(name "r-modelmetrics")
- (version "1.1.0")
+ (version "1.2.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "ModelMetrics" version))
(sha256
(base32
- "119xxmzb5biq7k1yxqsf0jmmarmfn6lds9x9hfgv593xlpym6za8"))))
+ "1sgdyrf6fbsn18gk8slir4a1yhv133kfhyg2crfs759nff4aw89h"))))
(properties `((upstream-name . "ModelMetrics")))
(build-system r-build-system)
(propagated-inputs
- `(("r-rcpp" ,r-rcpp)))
+ `(("r-rcpp" ,r-rcpp)
+ ("r-data-table" ,r-data-table)))
(home-page "https://cran.r-project.org/web/packages/ModelMetrics")
(synopsis "Rapid calculation of model metrics")
(description
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index 45252c933d..2c2767dbbc 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -86,14 +86,14 @@ older or slower computers and embedded systems.")
(define-public links
(package
(name "links")
- (version "2.16")
+ (version "2.17")
(source (origin
(method url-fetch)
(uri (string-append "http://links.twibright.com/download/"
name "-" version ".tar.bz2"))
(sha256
(base32
- "0gsa2gpb1grhssl5jzpc5pa0zi21mxi8g25rh5bacl70slw31w42"))))
+ "0dh2gbzcw8kxy81z4ggsynibnqs56b83vy8qgz7illsag1irff6q"))))
(build-system gnu-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 001644c195..53d886cf0d 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -3823,15 +3823,17 @@ CDF, Atom 0.3, and Atom 1.0 feeds.")
(define-public r-httpuv
(package
(name "r-httpuv")
- (version "1.4.4.1")
+ (version "1.4.5")
(source (origin
(method url-fetch)
(uri (cran-uri "httpuv" version))
(sha256
(base32
- "12kwq10xa8glrip7rai9xb4hnpysng00g2l0rw7swfzq5lk4z966"))))
+ "1ddpcarzf694h0gy5pdz7l5glqfv4hr9dmxb4vw7yqd0bga174gi"))))
(build-system r-build-system)
- (native-inputs `(("r-rcpp" ,r-rcpp)))
+ (native-inputs
+ `(("r-rcpp" ,r-rcpp)
+ ("pkg-config" ,pkg-config)))
(propagated-inputs
`(("r-bh" ,r-bh)
("r-later" ,r-later)
@@ -6706,10 +6708,11 @@ compressed JSON header blocks.
(license l:expat)))
(define-public hpcguix-web
- (let ((commit "87cb51611c0f1fd3863b830614ab1364599cf1ca"))
+ (let ((commit "9ff40fcc77f248901d861756dbbddc80270c380c")
+ (revision "2"))
(package
(name "hpcguix-web")
- (version (git-version "0.0.1" "1" commit))
+ (version (git-version "0.0.1" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
@@ -6718,7 +6721,7 @@ compressed JSON header blocks.
(file-name (git-file-name name version))
(sha256
(base32
- "0p66fl8r3v73v13fqg9rbqbzbdzvyznchxbq2s1jwq6qfsn2w3gr"))))
+ "0lxcj9s3wxrv1l7lrxxx374jwzx7h60gxwkbgr46lzcbgvb3k26s"))))
(build-system gnu-build-system)
(arguments
`(#:modules ((guix build gnu-build-system)
@@ -6739,10 +6742,13 @@ compressed JSON header blocks.
(let* ((out (assoc-ref outputs "out"))
(guix (assoc-ref inputs "guix"))
(guile (assoc-ref inputs "guile"))
+ (gcrypt (assoc-ref inputs "guile-gcrypt"))
+ (git (assoc-ref inputs "guile-git"))
+ (bs (assoc-ref inputs "guile-bytestructures"))
(json (assoc-ref inputs "guile-json"))
(guile-cm (assoc-ref inputs
"guile-commonmark"))
- (deps (list guile guile-cm guix json))
+ (deps (list guile gcrypt git bs guile-cm guix json))
(effective
(read-line
(open-pipe* OPEN_READ
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 6b99a3a8a8..aa24811695 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -17,6 +17,7 @@
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -6170,3 +6171,44 @@ and embedded platforms.")
cursor to any point on the screen with a few key strokes. It also simulates
mouse click. You can do everything mouse can do with a keyboard.")
(license license:bsd-3)))
+
+(define-public transset-df
+ (package
+ (name "transset-df")
+ (version "6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://forchheimer.se/" name "/" name "-" version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "1vnykwwrv75miigbhmcwxniw8xnhsdyzhqydip2m9crxi2lwhqs5"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'setenv
+ (lambda _
+ (setenv "CC" (which "gcc"))
+ #t))
+ (delete 'configure)
+ (delete 'check)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin")))
+ (install-file "transset-df" bin)
+ #t))))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs `(("libxcomposite" ,libxcomposite)
+ ("libxdamager" ,libxdamage)
+ ("libxrender" ,libxrender)))
+ (synopsis "Set the transparency of X11 windows")
+ (description "The @command{transset-df} command allows you to set the
+opacity of X11 windows. This patched version of X.Org's @command{transset}
+adds functionality, including: selecting window by clicking (as transset),
+selecting windows by pointing select actual focused X11 window, selecting by
+window name or id, forcing toggle, increase or decrease opacity.")
+ (home-page "http://forchheimer.se/transset-df/")
+ (license license:x11)))
diff --git a/gnu/services.scm b/gnu/services.scm
index 49cf01a4f8..f151bbaa9d 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -732,13 +732,23 @@ instantiated; other missing services lead to a
instances
(service-type-extensions (service-kind svc))))
- (let ((instances (fold (lambda (service result)
- (vhash-consq (service-kind service) service
- result))
- vlist-null services)))
- (fold2 adjust-service-list
- services instances
- services)))
+ (let loop ((services services))
+ (define instances
+ (fold (lambda (service result)
+ (vhash-consq (service-kind service) service
+ result))
+ vlist-null services))
+
+ (define adjusted
+ (fold2 adjust-service-list
+ services instances
+ services))
+
+ ;; If we instantiated services, they might in turn depend on missing
+ ;; services. Loop until we've reached fixed point.
+ (if (= (length adjusted) (vlist-length instances))
+ adjusted
+ (loop adjusted))))
(define* (fold-services services
#:key (target-type system-service-type))
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index 467656444e..df82a6de61 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -608,16 +608,14 @@ of index files."
(default-nginx-config config))
#$@args)
(match '#$args
- (("-s" . _) #t)
+ (("-s" . _) #f)
(_
- (let loop ((duration 0))
- ;; https://bugs.launchpad.net/ubuntu/+source/nginx/+bug/1581864/comments/7
- (sleep duration)
- (if (file-exists? #$pid-file)
- (let ((pid (call-with-input-file #$pid-file read)))
- ;; it could be #<eof>
- (if (integer? pid) pid (loop 1)))
- (loop 1)))))))))
+ ;; When FILE is true, we cannot be sure that PID-FILE will
+ ;; be created, so assume it won't show up. When FILE is
+ ;; false, read PID-FILE.
+ #$(if file
+ #~#t
+ #~(read-pid-file #$pid-file))))))))
;; TODO: Add 'reload' action.
(list (shepherd-service
@@ -967,7 +965,8 @@ a webserver.")
#:user "hpcguix-web"
#:group "hpcguix-web"
#:environment-variables
- (list "XDG_CACHE_HOME=/var/cache")))
+ (list "XDG_CACHE_HOME=/var/cache"
+ "SSL_CERT_DIR=/etc/ssl/certs")))
(stop #~(make-kill-destructor))))))
(define hpcguix-web-service-type
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index b505b0cf6b..91e117b9f3 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -32,7 +32,7 @@
#:use-module (guix modules)
#:use-module (guix scripts pack)
#:use-module (guix utils)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix base32)
#:use-module ((guix self) #:select (make-config.scm))
@@ -43,7 +43,7 @@
#:use-module (gnu packages cdrom)
#:use-module (gnu packages compression)
#:use-module (gnu packages guile)
- #:autoload (gnu packages gnupg) (libgcrypt)
+ #:autoload (gnu packages gnupg) (guile-gcrypt)
#:use-module (gnu packages gawk)
#:use-module (gnu packages bash)
#:use-module (gnu packages less)
@@ -124,10 +124,12 @@
(('gnu rest ...) #t)
(rest #f)))
-(define guile-sqlite3&co
- ;; Guile-SQLite3 and its propagated inputs.
- (cons guile-sqlite3
- (package-transitive-propagated-inputs guile-sqlite3)))
+(define gcrypt-sqlite3&co
+ ;; Guile-Gcrypt, Guile-SQLite3, and their propagated inputs.
+ (append-map (lambda (package)
+ (cons package
+ (package-transitive-propagated-inputs package)))
+ (list guile-gcrypt guile-sqlite3)))
(define* (expression->derivation-in-linux-vm name exp
#:key
@@ -164,10 +166,6 @@ based on the size of the closure of REFERENCES-GRAPHS.
When REFERENCES-GRAPHS is true, it must be a list of file name/store path
pairs, as for `derivation'. The files containing the reference graphs are
made available under the /xchg CIFS share."
- (define config
- ;; (guix config) module for consumption by (guix gcrypt).
- (make-config.scm #:libgcrypt libgcrypt))
-
(define user-builder
(program-file "builder-in-linux-vm" exp))
@@ -195,12 +193,14 @@ made available under the /xchg CIFS share."
(define builder
;; Code that launches the VM that evaluates EXP.
- (with-extensions guile-sqlite3&co
+ (with-extensions gcrypt-sqlite3&co
(with-imported-modules `(,@(source-module-closure
'((guix build utils)
(gnu build vm))
#:select? not-config?)
- ((guix config) => ,config))
+
+ ;; For consumption by (gnu store database).
+ ((guix config) => ,(make-config.scm)))
#~(begin
(use-modules (guix build utils)
(gnu build vm))
@@ -255,9 +255,6 @@ made available under the /xchg CIFS share."
"Return a bootable, stand-alone iso9660 image.
INPUTS is a list of inputs (as for packages)."
- (define config
- (make-config.scm #:libgcrypt libgcrypt))
-
(define schema
(and register-closures?
(local-file (search-path %load-path
@@ -265,12 +262,12 @@ INPUTS is a list of inputs (as for packages)."
(expression->derivation-in-linux-vm
name
- (with-extensions guile-sqlite3&co
+ (with-extensions gcrypt-sqlite3&co
(with-imported-modules `(,@(source-module-closure '((gnu build vm)
(guix store database)
(guix build utils))
#:select? not-config?)
- ((guix config) => ,config))
+ ((guix config) => ,(make-config.scm)))
#~(begin
(use-modules (gnu build vm)
(guix store database)
@@ -347,9 +344,6 @@ INPUTS is a list of inputs (as for packages). When COPY-INPUTS? is true, copy
all of INPUTS into the image being built. When REGISTER-CLOSURES? is true,
register INPUTS in the store database of the image so that Guix can be used in
the image."
- (define config
- (make-config.scm #:libgcrypt libgcrypt))
-
(define schema
(and register-closures?
(local-file (search-path %load-path
@@ -357,13 +351,13 @@ the image."
(expression->derivation-in-linux-vm
name
- (with-extensions guile-sqlite3&co
+ (with-extensions gcrypt-sqlite3&co
(with-imported-modules `(,@(source-module-closure '((gnu build vm)
(gnu build bootloader)
(guix store database)
(guix build utils))
#:select? not-config?)
- ((guix config) => ,config))
+ ((guix config) => ,(make-config.scm)))
#~(begin
(use-modules (gnu build bootloader)
(gnu build vm)
@@ -462,10 +456,6 @@ makes sense when you want to build a GuixSD Docker image that has Guix
installed inside of it. If you don't need Guix (e.g., your GuixSD Docker
image just contains a web server that is started by the Shepherd), then you
should set REGISTER-CLOSURES? to #f."
- (define config
- ;; (guix config) module for consumption by (guix gcrypt).
- (make-config.scm #:libgcrypt libgcrypt))
-
(define schema
(and register-closures?
(local-file (search-path %load-path
@@ -475,8 +465,8 @@ should set REGISTER-CLOSURES? to #f."
(name -> (string-append name ".tar.gz"))
(graph -> "system-graph"))
(define build
- (with-extensions (cons guile-json ;for (guix docker)
- guile-sqlite3&co) ;for (guix store database)
+ (with-extensions (cons guile-json ;for (guix docker)
+ gcrypt-sqlite3&co) ;for (guix store database)
(with-imported-modules `(,@(source-module-closure
'((guix docker)
(guix store database)
@@ -484,7 +474,7 @@ should set REGISTER-CLOSURES? to #f."
(guix build store-copy)
(gnu build vm))
#:select? not-config?)
- ((guix config) => ,config))
+ ((guix config) => ,(make-config.scm)))
#~(begin
(use-modules (guix docker)
(guix build utils)
@@ -539,17 +529,42 @@ should set REGISTER-CLOSURES? to #f."
(define* (operating-system-uuid os #:optional (type 'dce))
"Compute UUID object with a deterministic \"UUID\" for OS, of the given
TYPE (one of 'iso9660 or 'dce). Return a UUID object."
+ ;; Note: For this to be deterministic, we must not hash things that contains
+ ;; (directly or indirectly) procedures, for example. That rules out
+ ;; anything that contains gexps, thunk or delayed record fields, etc.
+
+ (define service-name
+ (compose service-type-name service-kind))
+
+ (define (file-system-digest fs)
+ ;; Return a hashable digest that does not contain 'dependencies' since
+ ;; this field can contain procedures.
+ (let ((device (file-system-device fs)))
+ (list (file-system-mount-point fs)
+ (file-system-type fs)
+ (cond ((file-system-label? device)
+ (file-system-label->string device))
+ ((uuid? device)
+ (uuid->string device))
+ ((string? device)
+ device)
+ (else #f))
+ (file-system-options fs))))
+
(if (eq? type 'iso9660)
(let ((pad (compose (cut string-pad <> 2 #\0)
number->string))
- (h (hash (operating-system-services os) 3600)))
+ (h (hash (map service-name (operating-system-services os))
+ 3600)))
(bytevector->uuid
(string->iso9660-uuid
(string-append "1970-01-01-"
(pad (hash (operating-system-host-name os) 24)) "-"
(pad (quotient h 60)) "-"
(pad (modulo h 60)) "-"
- (pad (hash (operating-system-file-systems os) 100))))
+ (pad (hash (map file-system-digest
+ (operating-system-file-systems os))
+ 100))))
'iso9660))
(bytevector->uuid
(uint-list->bytevector
@@ -557,9 +572,9 @@ TYPE (one of 'iso9660 or 'dce). Return a UUID object."
(- (expt 2 32) 1))
(hash (operating-system-host-name os)
(- (expt 2 32) 1))
- (hash (operating-system-services os)
+ (hash (map service-name (operating-system-services os))
(- (expt 2 32) 1))
- (hash (operating-system-file-systems os)
+ (hash (map file-system-digest (operating-system-file-systems os))
(- (expt 2 32) 1)))
(endianness little)
4)
diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm
index f27064af85..f97581de33 100644
--- a/gnu/tests/base.scm
+++ b/gnu/tests/base.scm
@@ -42,6 +42,7 @@
#:use-module (guix monads)
#:use-module (guix packages)
#:use-module (srfi srfi-1)
+ #:use-module (ice-9 match)
#:export (run-basic-test
%test-basic-os
%test-halt
@@ -68,6 +69,11 @@ initialization step, such as entering a LUKS passphrase."
(fold-services (operating-system-services os)
#:target-type special-files-service-type)))
+ (define guix&co
+ (match (package-transitive-propagated-inputs guix)
+ (((labels packages) ...)
+ (cons guix packages))))
+
(define test
(with-imported-modules '((gnu build marionette)
(guix build syscalls))
@@ -345,8 +351,14 @@ info --version")
'success!
(marionette-eval '(begin
;; Make sure the (guix …) modules are found.
- (add-to-load-path
- #+(file-append guix "/share/guile/site/2.2"))
+ (eval-when (expand load eval)
+ (set! %load-path
+ (append (map (lambda (package)
+ (string-append package
+ "/share/guile/site/"
+ (effective-version)))
+ '#$guix&co)
+ %load-path)))
(use-modules (srfi srfi-34) (guix store))
diff --git a/guix/channels.scm b/guix/channels.scm
index ec3e05eaf5..cf833db8b9 100644
--- a/guix/channels.scm
+++ b/guix/channels.scm
@@ -48,7 +48,7 @@
latest-channel-instances
channel-instance-derivations
- latest-channel-derivations
+ latest-channel-derivation
channel-instances->manifest))
;;; Commentary:
@@ -78,7 +78,7 @@
;; Default list of channels.
(list (channel
(name 'guix)
- (branch "origin/master")
+ (branch "master")
(url "https://git.savannah.gnu.org/git/guix.git"))))
(define (guix-channel? channel)
@@ -207,23 +207,20 @@ INSTANCES."
(guix-channel? (channel-instance-channel instance)))
instances))
+ ;; Guile-Gcrypt is a dependency of CORE-INSTANCE.
+ (define guile-gcrypt
+ (module-ref (resolve-interface '(gnu packages gnupg))
+ 'guile-gcrypt))
+
(mlet %store-monad ((core (build-channel-instance core-instance)))
(mapm %store-monad
(lambda (instance)
(if (eq? instance core-instance)
(return core)
(build-channel-instance instance
- (list core))))
+ (list core guile-gcrypt))))
instances)))
-(define latest-channel-derivations
- (let ((latest-channel-instances (store-lift latest-channel-instances)))
- (lambda (channels)
- "Return, as a monadic value, the list of derivations for the latest
-instances of CHANNELS."
- (mlet %store-monad ((instances (latest-channel-instances channels)))
- (channel-instance-derivations instances)))))
-
(define (whole-package-for-legacy name modules)
"Return a full-blown Guix package for MODULES, a derivation that builds Guix
modules in the old ~/.config/guix/latest style."
@@ -290,3 +287,14 @@ channel instances."
(entries (mapm %store-monad instance->entry
(zip instances derivations))))
(return (manifest entries))))
+
+(define latest-channel-instances*
+ (store-lift latest-channel-instances))
+
+(define* (latest-channel-derivation #:optional (channels %default-channels))
+ "Return as a monadic value the derivation that builds the profile for the
+latest instances of CHANNELS."
+ (mlet* %store-monad ((instances ((store-lift latest-channel-instances)
+ channels))
+ (manifest (channel-instances->manifest instances)))
+ (profile-derivation manifest)))
diff --git a/guix/derivations.scm b/guix/derivations.scm
index da686e89e2..7afecb10cc 100644
--- a/guix/derivations.scm
+++ b/guix/derivations.scm
@@ -35,7 +35,7 @@
#:use-module (guix memoization)
#:use-module (guix combinators)
#:use-module (guix monads)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix base32)
#:use-module (guix records)
#:use-module (guix sets)
diff --git a/guix/describe.scm b/guix/describe.scm
index 3122a762fe..670db63ce7 100644
--- a/guix/describe.scm
+++ b/guix/describe.scm
@@ -21,7 +21,9 @@
#:use-module (guix profiles)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match)
- #:export (package-path-entries))
+ #:export (current-profile
+ current-profile-entries
+ package-path-entries))
;;; Commentary:
;;;
diff --git a/guix/docker.scm b/guix/docker.scm
index b869901599..0757d3356f 100644
--- a/guix/docker.scm
+++ b/guix/docker.scm
@@ -19,7 +19,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix docker)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix base16)
#:use-module ((guix build utils)
#:select (mkdir-p
diff --git a/guix/gcrypt.scm b/guix/gcrypt.scm
deleted file mode 100644
index 1517501751..0000000000
--- a/guix/gcrypt.scm
+++ /dev/null
@@ -1,49 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015 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 gcrypt)
- #:use-module (guix config)
- #:use-module (system foreign)
- #:export (gcrypt-version
- libgcrypt-func))
-
-;;; Commentary:
-;;;
-;;; Common code for the GNU Libgcrypt bindings. Loading this module
-;;; initializes Libgcrypt as a side effect.
-;;;
-;;; Code:
-
-(define libgcrypt-func
- (let ((lib (dynamic-link %libgcrypt)))
- (lambda (func)
- "Return a pointer to symbol FUNC in libgcrypt."
- (dynamic-func func lib))))
-
-(define gcrypt-version
- ;; According to the manual, this function must be called before any other,
- ;; and it's not clear whether it can be called more than once. So call it
- ;; right here from the top level.
- (let* ((ptr (libgcrypt-func "gcry_check_version"))
- (proc (pointer->procedure '* ptr '(*)))
- (version (pointer->string (proc %null-pointer))))
- (lambda ()
- "Return the version number of libgcrypt as a string."
- version)))
-
-;;; gcrypt.scm ends here
diff --git a/guix/gexp.scm b/guix/gexp.scm
index 3a600c3830..770b79e012 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -1417,26 +1417,31 @@ denoting the target file. Here's an example:
`((\"hosts\" ,(plain-file \"hosts\"
\"127.0.0.1 localhost\"))
(\"bashrc\" ,(plain-file \"bashrc\"
- \"alias ls='ls --color'\"))))
+ \"alias ls='ls --color'\"))
+ (\"libvirt/qemu.conf\" ,(plain-file \"qemu.conf\" \"\"))))
This yields an 'etc' directory containing these two files."
(computed-file name
- (gexp
- (begin
- (mkdir (ungexp output))
- (chdir (ungexp output))
- (ungexp-splicing
- (map (match-lambda
- ((target source)
- (gexp
- (begin
- ;; Stat the source to abort early if it does
- ;; not exist.
- (stat (ungexp source))
-
- (symlink (ungexp source)
- (ungexp target))))))
- files))))))
+ (with-imported-modules '((guix build utils))
+ (gexp
+ (begin
+ (use-modules (guix build utils))
+
+ (mkdir (ungexp output))
+ (chdir (ungexp output))
+ (ungexp-splicing
+ (map (match-lambda
+ ((target source)
+ (gexp
+ (begin
+ ;; Stat the source to abort early if it does
+ ;; not exist.
+ (stat (ungexp source))
+
+ (mkdir-p (dirname (ungexp target)))
+ (symlink (ungexp source)
+ (ungexp target))))))
+ files)))))))
(define* (directory-union name things
#:key (copy? #f) (quiet? #f)
diff --git a/guix/git.scm b/guix/git.scm
index 193e2df111..3d0eb93d9b 100644
--- a/guix/git.scm
+++ b/guix/git.scm
@@ -21,7 +21,7 @@
#:use-module (git)
#:use-module (git object)
#:use-module (guix base32)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module ((guix build utils) #:select (mkdir-p))
#:use-module (guix store)
#:use-module (guix utils)
@@ -112,7 +112,7 @@ OID (roughly the commit hash) corresponding to REF."
(define* (update-cached-checkout url
#:key
- (ref '(branch . "origin/master"))
+ (ref '(branch . "master"))
(cache-directory
(url-cache-directory
url (%repository-cache-directory))))
@@ -122,6 +122,17 @@ to REF.
REF is pair whose key is [branch | commit | tag] and value the associated
data, respectively [<branch name> | <sha1> | <tag name>]."
+ (define canonical-ref
+ ;; We used to require callers to specify "origin/" for each branch, which
+ ;; made little sense since the cache should be transparent to them. So
+ ;; here we append "origin/" if it's missing and otherwise keep it.
+ (match ref
+ (('branch . branch)
+ `(branch . ,(if (string-prefix? "origin/" branch)
+ branch
+ (string-append "origin/" branch))))
+ (_ ref)))
+
(with-libgit2
(let* ((cache-exists? (openable-repository? cache-directory))
(repository (if cache-exists?
@@ -130,7 +141,7 @@ data, respectively [<branch name> | <sha1> | <tag name>]."
;; Only fetch remote if it has not been cloned just before.
(when cache-exists?
(remote-fetch (remote-lookup repository "origin")))
- (let ((oid (switch-to-ref repository ref)))
+ (let ((oid (switch-to-ref repository canonical-ref)))
;; Reclaim file descriptors and memory mappings associated with
;; REPOSITORY as soon as possible.
@@ -144,7 +155,7 @@ data, respectively [<branch name> | <sha1> | <tag name>]."
#:key
(cache-directory
(%repository-cache-directory))
- (ref '(branch . "origin/master")))
+ (ref '(branch . "master")))
"Return two values: the content of the git repository at URL copied into a
store directory and the sha1 of the top level commit in this directory. The
reference to be checkout, once the repository is fetched, is specified by REF.
diff --git a/guix/hash.scm b/guix/hash.scm
deleted file mode 100644
index 8d7ba21425..0000000000
--- a/guix/hash.scm
+++ /dev/null
@@ -1,184 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 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 hash)
- #:use-module (guix gcrypt)
- #:use-module (rnrs bytevectors)
- #:use-module (ice-9 binary-ports)
- #:use-module (system foreign)
- #:use-module ((guix build utils) #:select (dump-port))
- #:use-module (srfi srfi-11)
- #:use-module (srfi srfi-26)
- #:export (sha1
- sha256
- open-sha256-port
- port-sha256
- file-sha256
- open-sha256-input-port))
-
-;;; Commentary:
-;;;
-;;; Cryptographic hashes.
-;;;
-;;; Code:
-
-
-;;;
-;;; Hash.
-;;;
-
-(define-syntax GCRY_MD_SHA256
- ;; Value as of Libgcrypt 1.5.2.
- (identifier-syntax 8))
-
-(define-syntax GCRY_MD_SHA1
- (identifier-syntax 2))
-
-(define bytevector-hash
- (let ((hash (pointer->procedure void
- (libgcrypt-func "gcry_md_hash_buffer")
- `(,int * * ,size_t))))
- (lambda (bv type size)
- "Return the hash TYPE, of SIZE bytes, of BV as a bytevector."
- (let ((digest (make-bytevector size)))
- (hash type (bytevector->pointer digest)
- (bytevector->pointer bv) (bytevector-length bv))
- digest))))
-
-(define sha1
- (cut bytevector-hash <> GCRY_MD_SHA1 20))
-
-(define sha256
- (cut bytevector-hash <> GCRY_MD_SHA256 (/ 256 8)))
-
-(define open-sha256-md
- (let ((open (pointer->procedure int
- (libgcrypt-func "gcry_md_open")
- `(* ,int ,unsigned-int))))
- (lambda ()
- (let* ((md (bytevector->pointer (make-bytevector (sizeof '*))))
- (err (open md GCRY_MD_SHA256 0)))
- (if (zero? err)
- (dereference-pointer md)
- (throw 'gcrypt-error err))))))
-
-(define md-write
- (pointer->procedure void
- (libgcrypt-func "gcry_md_write")
- `(* * ,size_t)))
-
-(define md-read
- (pointer->procedure '*
- (libgcrypt-func "gcry_md_read")
- `(* ,int)))
-
-(define md-close
- (pointer->procedure void
- (libgcrypt-func "gcry_md_close")
- '(*)))
-
-
-(define (open-sha256-port)
- "Return two values: an output port, and a thunk. When the thunk is called,
-it returns the SHA256 hash (a bytevector) of all the data written to the
-output port."
- (define sha256-md
- (open-sha256-md))
-
- (define digest #f)
- (define position 0)
-
- (define (finalize!)
- (let ((ptr (md-read sha256-md 0)))
- (set! digest (bytevector-copy (pointer->bytevector ptr 32)))
- (md-close sha256-md)))
-
- (define (write! bv offset len)
- (if (zero? len)
- (begin
- (finalize!)
- 0)
- (let ((ptr (bytevector->pointer bv offset)))
- (md-write sha256-md ptr len)
- (set! position (+ position len))
- len)))
-
- (define (get-position)
- position)
-
- (define (close)
- (unless digest
- (finalize!)))
-
- (values (make-custom-binary-output-port "sha256"
- write! get-position #f
- close)
- (lambda ()
- (unless digest
- (finalize!))
- digest)))
-
-(define (port-sha256 port)
- "Return the SHA256 hash (a bytevector) of all the data drained from PORT."
- (let-values (((out get)
- (open-sha256-port)))
- (dump-port port out)
- (close-port out)
- (get)))
-
-(define (file-sha256 file)
- "Return the SHA256 hash (a bytevector) of FILE."
- (call-with-input-file file port-sha256))
-
-(define (open-sha256-input-port port)
- "Return an input port that wraps PORT and a thunk to get the hash of all the
-data read from PORT. The thunk always returns the same value."
- (define md
- (open-sha256-md))
-
- (define (read! bv start count)
- (let ((n (get-bytevector-n! port bv start count)))
- (if (eof-object? n)
- 0
- (begin
- (unless digest
- (let ((ptr (bytevector->pointer bv start)))
- (md-write md ptr n)))
- n))))
-
- (define digest #f)
-
- (define (finalize!)
- (let ((ptr (md-read md 0)))
- (set! digest (bytevector-copy (pointer->bytevector ptr 32)))
- (md-close md)))
-
- (define (get-hash)
- (unless digest
- (finalize!))
- digest)
-
- (define (unbuffered port)
- ;; Guile <= 2.0.9 does not support 'setvbuf' on custom binary input ports.
- (setvbuf port _IONBF)
- port)
-
- (values (unbuffered (make-custom-binary-input-port "sha256" read! #f #f #f))
- get-hash))
-
-;;; hash.scm ends here
diff --git a/guix/http-client.scm b/guix/http-client.scm
index 3b34d4ffba..07360e6108 100644
--- a/guix/http-client.scm
+++ b/guix/http-client.scm
@@ -34,7 +34,7 @@
#:use-module (guix ui)
#:use-module (guix utils)
#:use-module (guix base64)
- #:autoload (guix hash) (sha256)
+ #:autoload (gcrypt hash) (sha256)
#:use-module ((guix build utils)
#:select (mkdir-p dump-port))
#:use-module ((guix build download)
diff --git a/guix/import/cpan.scm b/guix/import/cpan.scm
index d0ff64ed05..d4bea84353 100644
--- a/guix/import/cpan.scm
+++ b/guix/import/cpan.scm
@@ -27,7 +27,7 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (json)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix store)
#:use-module (guix utils)
#:use-module (guix base32)
diff --git a/guix/import/cran.scm b/guix/import/cran.scm
index a5203fe78d..89c84f7037 100644
--- a/guix/import/cran.scm
+++ b/guix/import/cran.scm
@@ -29,7 +29,7 @@
#:use-module (web uri)
#:use-module (guix memoization)
#:use-module (guix http-client)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix store)
#:use-module (guix base32)
#:use-module ((guix download) #:select (download-to-store))
diff --git a/guix/import/crate.scm b/guix/import/crate.scm
index 3724a457a4..e0b400d054 100644
--- a/guix/import/crate.scm
+++ b/guix/import/crate.scm
@@ -20,7 +20,7 @@
#:use-module (guix base32)
#:use-module (guix build-system cargo)
#:use-module ((guix download) #:prefix download:)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix http-client)
#:use-module (guix import json)
#:use-module (guix import utils)
diff --git a/guix/import/elpa.scm b/guix/import/elpa.scm
index c37afaf8e6..83354d3f04 100644
--- a/guix/import/elpa.scm
+++ b/guix/import/elpa.scm
@@ -32,7 +32,7 @@
#:use-module (guix http-client)
#:use-module (guix store)
#:use-module (guix ui)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix base32)
#:use-module (guix upstream)
#:use-module (guix packages)
diff --git a/guix/import/gnu.scm b/guix/import/gnu.scm
index bbb17047f0..29324d7554 100644
--- a/guix/import/gnu.scm
+++ b/guix/import/gnu.scm
@@ -21,7 +21,7 @@
#:use-module (guix import utils)
#:use-module (guix utils)
#:use-module (guix store)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix base32)
#:use-module (guix upstream)
#:use-module (srfi srfi-1)
diff --git a/guix/import/hackage.scm b/guix/import/hackage.scm
index 54301de2e8..766a0b53f1 100644
--- a/guix/import/hackage.scm
+++ b/guix/import/hackage.scm
@@ -33,7 +33,7 @@
#:use-module ((guix import utils) #:select (factorize-uri recursive-import))
#:use-module (guix import cabal)
#:use-module (guix store)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix base32)
#:use-module (guix memoization)
#:use-module (guix upstream)
diff --git a/guix/import/texlive.scm b/guix/import/texlive.scm
index d4c3714364..791b514485 100644
--- a/guix/import/texlive.scm
+++ b/guix/import/texlive.scm
@@ -26,7 +26,7 @@
#:use-module (srfi srfi-34)
#:use-module (web uri)
#:use-module (guix http-client)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix memoization)
#:use-module (guix store)
#:use-module (guix base32)
diff --git a/guix/import/utils.scm b/guix/import/utils.scm
index 0dc8fd5857..516c0cfaa2 100644
--- a/guix/import/utils.scm
+++ b/guix/import/utils.scm
@@ -23,7 +23,7 @@
(define-module (guix import utils)
#:use-module (guix base32)
#:use-module ((guix build download) #:prefix build:)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix http-client)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix utils)
diff --git a/guix/inferior.scm b/guix/inferior.scm
index 05c8d65deb..af37233a03 100644
--- a/guix/inferior.scm
+++ b/guix/inferior.scm
@@ -19,6 +19,7 @@
(define-module (guix inferior)
#:use-module (srfi srfi-9)
#:use-module (srfi srfi-9 gnu)
+ #:use-module ((guix utils) #:select (source-properties->location))
#:use-module (ice-9 match)
#:use-module (ice-9 popen)
#:export (inferior?
@@ -33,7 +34,9 @@
inferior-packages
inferior-package-synopsis
- inferior-package-description))
+ inferior-package-description
+ inferior-package-home-page
+ inferior-package-location))
;;; Commentary:
;;;
@@ -198,3 +201,18 @@ TRANSLATE? is true, translate it to the current locale's language."
(if translate?
'(compose (@ (guix ui) P_) package-description)
'package-description)))
+
+(define (inferior-package-home-page package)
+ "Return the home page of PACKAGE."
+ (inferior-package-field package 'package-home-page))
+
+(define (inferior-package-location package)
+ "Return the source code location of PACKAGE, either #f or a <location>
+record."
+ (source-properties->location
+ (inferior-package-field package
+ '(compose (lambda (loc)
+ (and loc
+ (location->source-properties
+ loc)))
+ package-location))))
diff --git a/guix/nar.scm b/guix/nar.scm
index 3556de1379..0495b4a40c 100644
--- a/guix/nar.scm
+++ b/guix/nar.scm
@@ -25,9 +25,9 @@
#:use-module (guix store)
#:use-module (guix store database)
#:use-module (guix ui) ; for '_'
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix pki)
- #:use-module (guix pk-crypto)
+ #:use-module (gcrypt pk-crypto)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
diff --git a/guix/pk-crypto.scm b/guix/pk-crypto.scm
deleted file mode 100644
index 55ba7b1bb8..0000000000
--- a/guix/pk-crypto.scm
+++ /dev/null
@@ -1,407 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2017 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 pk-crypto)
- #:use-module (guix base16)
- #:use-module (guix gcrypt)
-
- #:use-module (system foreign)
- #:use-module (rnrs bytevectors)
- #:use-module (ice-9 match)
- #:use-module (ice-9 rdelim)
- #:export (canonical-sexp?
- error-source
- error-string
- string->canonical-sexp
- canonical-sexp->string
- read-file-sexp
- number->canonical-sexp
- canonical-sexp-car
- canonical-sexp-cdr
- canonical-sexp-nth
- canonical-sexp-nth-data
- canonical-sexp-length
- canonical-sexp-null?
- canonical-sexp-list?
- bytevector->hash-data
- hash-data->bytevector
- key-type
- sign
- verify
- generate-key
- find-sexp-token
- canonical-sexp->sexp
- sexp->canonical-sexp)
- #:re-export (gcrypt-version))
-
-
-;;; Commentary:
-;;;
-;;; Public key cryptographic routines from GNU Libgcrypt.
-;;;;
-;;; Libgcrypt uses "canonical s-expressions" to represent key material,
-;;; parameters, and data. We keep it as an opaque object to map them to
-;;; Scheme s-expressions because (1) Libgcrypt sexps may be stored in secure
-;;; memory, and (2) the read syntax is different.
-;;;
-;;; A 'canonical-sexp->sexp' procedure is provided nevertheless, for use in
-;;; cases where it is safe to move data out of Libgcrypt---e.g., when
-;;; processing ACL entries, public keys, etc.
-;;;
-;;; Canonical sexps were defined by Rivest et al. in the IETF draft at
-;;; <http://people.csail.mit.edu/rivest/Sexp.txt> for the purposes of SPKI
-;;; (see <http://www.ietf.org/rfc/rfc2693.txt>.)
-;;;
-;;; Code:
-
-;; Libgcrypt "s-expressions".
-(define-wrapped-pointer-type <canonical-sexp>
- canonical-sexp?
- naked-pointer->canonical-sexp
- canonical-sexp->pointer
- (lambda (obj port)
- ;; Don't print OBJ's external representation: we don't want key material
- ;; to leak in backtraces and such.
- (format port "#<canonical-sexp ~a | ~a>"
- (number->string (object-address obj) 16)
- (number->string (pointer-address (canonical-sexp->pointer obj))
- 16))))
-
-(define finalize-canonical-sexp!
- (libgcrypt-func "gcry_sexp_release"))
-
-(define-inlinable (pointer->canonical-sexp ptr)
- "Return a <canonical-sexp> that wraps PTR."
- (let* ((sexp (naked-pointer->canonical-sexp ptr))
- (ptr* (canonical-sexp->pointer sexp)))
- ;; Did we already have a <canonical-sexp> object for PTR?
- (when (equal? ptr ptr*)
- ;; No, so we can safely add a finalizer (in Guile 2.0.9
- ;; 'set-pointer-finalizer!' *adds* a finalizer rather than replacing the
- ;; existing one.)
- (set-pointer-finalizer! ptr finalize-canonical-sexp!))
- sexp))
-
-(define error-source
- (let* ((ptr (libgcrypt-func "gcry_strsource"))
- (proc (pointer->procedure '* ptr (list int))))
- (lambda (err)
- "Return the error source (a string) for ERR, an error code as thrown
-along with 'gcry-error'."
- (pointer->string (proc err)))))
-
-(define error-string
- (let* ((ptr (libgcrypt-func "gcry_strerror"))
- (proc (pointer->procedure '* ptr (list int))))
- (lambda (err)
- "Return the error description (a string) for ERR, an error code as
-thrown along with 'gcry-error'."
- (pointer->string (proc err)))))
-
-(define string->canonical-sexp
- (let* ((ptr (libgcrypt-func "gcry_sexp_new"))
- (proc (pointer->procedure int ptr `(* * ,size_t ,int))))
- (lambda (str)
- "Parse STR and return the corresponding gcrypt s-expression."
-
- ;; When STR comes from 'canonical-sexp->string', it may contain
- ;; characters that are really meant to be interpreted as bytes as in a C
- ;; 'char *'. Thus, convert STR to ISO-8859-1 so the byte values of the
- ;; characters are preserved.
- (let* ((sexp (bytevector->pointer (make-bytevector (sizeof '*))))
- (err (proc sexp (string->pointer str "ISO-8859-1") 0 1)))
- (if (= 0 err)
- (pointer->canonical-sexp (dereference-pointer sexp))
- (throw 'gcry-error 'string->canonical-sexp err))))))
-
-(define-syntax GCRYSEXP_FMT_ADVANCED
- (identifier-syntax 3))
-
-(define canonical-sexp->string
- (let* ((ptr (libgcrypt-func "gcry_sexp_sprint"))
- (proc (pointer->procedure size_t ptr `(* ,int * ,size_t))))
- (lambda (sexp)
- "Return a textual representation of SEXP."
- (let loop ((len 1024))
- (let* ((buf (bytevector->pointer (make-bytevector len)))
- (size (proc (canonical-sexp->pointer sexp)
- GCRYSEXP_FMT_ADVANCED buf len)))
- (if (zero? size)
- (loop (* len 2))
- (pointer->string buf size "ISO-8859-1")))))))
-
-(define (read-file-sexp file)
- "Return the canonical sexp read from FILE."
- (call-with-input-file file
- (compose string->canonical-sexp
- read-string)))
-
-(define canonical-sexp-car
- (let* ((ptr (libgcrypt-func "gcry_sexp_car"))
- (proc (pointer->procedure '* ptr '(*))))
- (lambda (lst)
- "Return the first element of LST, an sexp, if that element is a list;
-return #f if LST or its first element is not a list (this is different from
-the usual Lisp 'car'.)"
- (let ((result (proc (canonical-sexp->pointer lst))))
- (if (null-pointer? result)
- #f
- (pointer->canonical-sexp result))))))
-
-(define canonical-sexp-cdr
- (let* ((ptr (libgcrypt-func "gcry_sexp_cdr"))
- (proc (pointer->procedure '* ptr '(*))))
- (lambda (lst)
- "Return the tail of LST, an sexp, or #f if LST is not a list."
- (let ((result (proc (canonical-sexp->pointer lst))))
- (if (null-pointer? result)
- #f
- (pointer->canonical-sexp result))))))
-
-(define canonical-sexp-nth
- (let* ((ptr (libgcrypt-func "gcry_sexp_nth"))
- (proc (pointer->procedure '* ptr `(* ,int))))
- (lambda (lst index)
- "Return the INDEXth nested element of LST, an s-expression. Return #f
-if that element does not exist, or if it's an atom. (Note: this is obviously
-different from Scheme's 'list-ref'.)"
- (let ((result (proc (canonical-sexp->pointer lst) index)))
- (if (null-pointer? result)
- #f
- (pointer->canonical-sexp result))))))
-
-(define (dereference-size_t p)
- "Return the size_t value pointed to by P."
- (bytevector-uint-ref (pointer->bytevector p (sizeof size_t))
- 0 (native-endianness)
- (sizeof size_t)))
-
-(define canonical-sexp-length
- (let* ((ptr (libgcrypt-func "gcry_sexp_length"))
- (proc (pointer->procedure int ptr '(*))))
- (lambda (sexp)
- "Return the length of SEXP if it's a list (including the empty list);
-return zero if SEXP is an atom."
- (proc (canonical-sexp->pointer sexp)))))
-
-(define token-string?
- (let ((token-cs (char-set-union char-set:digit
- char-set:letter
- (char-set #\- #\. #\/ #\_
- #\: #\* #\+ #\=))))
- (lambda (str)
- "Return #t if STR is a token as per Section 4.3 of
-<http://people.csail.mit.edu/rivest/Sexp.txt>."
- (and (not (string-null? str))
- (string-every token-cs str)
- (not (char-set-contains? char-set:digit (string-ref str 0)))))))
-
-(define canonical-sexp-nth-data
- (let* ((ptr (libgcrypt-func "gcry_sexp_nth_data"))
- (proc (pointer->procedure '* ptr `(* ,int *))))
- (lambda (lst index)
- "Return as a symbol (for \"sexp tokens\") or a bytevector (for any other
-\"octet string\") the INDEXth data element (atom) of LST, an s-expression.
-Return #f if that element does not exist, or if it's a list."
- (let* ((size* (bytevector->pointer (make-bytevector (sizeof '*))))
- (result (proc (canonical-sexp->pointer lst) index size*)))
- (if (null-pointer? result)
- #f
- (let* ((len (dereference-size_t size*))
- (str (pointer->string result len "ISO-8859-1")))
- ;; The sexp spec speaks of "tokens" and "octet strings".
- ;; Sometimes these octet strings are actual strings (text),
- ;; sometimes they're bytevectors, and sometimes they're
- ;; multi-precision integers (MPIs). Only the application knows.
- ;; However, for convenience, we return a symbol when a token is
- ;; encountered since tokens are frequent (at least in the 'car'
- ;; of each sexp.)
- (if (token-string? str)
- (string->symbol str) ; an sexp "token"
- (bytevector-copy ; application data, textual or binary
- (pointer->bytevector result len)))))))))
-
-(define (number->canonical-sexp number)
- "Return an s-expression representing NUMBER."
- (string->canonical-sexp (string-append "#" (number->string number 16) "#")))
-
-(define* (bytevector->hash-data bv
- #:optional
- (hash-algo "sha256")
- #:key (key-type 'ecc))
- "Given BV, a bytevector containing a hash of type HASH-ALGO, return an
-s-expression suitable for use as the 'data' argument for 'sign'. KEY-TYPE
-must be a symbol: 'dsa, 'ecc, or 'rsa."
- (string->canonical-sexp
- (format #f "(data (flags ~a) (hash \"~a\" #~a#))"
- (case key-type
- ((ecc dsa) "rfc6979")
- ((rsa) "pkcs1")
- (else (error "unknown key type" key-type)))
- hash-algo
- (bytevector->base16-string bv))))
-
-(define (key-type sexp)
- "Return a symbol denoting the type of public or private key represented by
-SEXP--e.g., 'rsa', 'ecc'--or #f if SEXP does not denote a valid key."
- (case (canonical-sexp-nth-data sexp 0)
- ((public-key private-key)
- (canonical-sexp-nth-data (canonical-sexp-nth sexp 1) 0))
- (else #f)))
-
-(define* (hash-data->bytevector data)
- "Return two values: the hash value (a bytevector), and the hash algorithm (a
-string) extracted from DATA, an sexp as returned by 'bytevector->hash-data'.
-Return #f if DATA does not conform."
- (let ((hash (find-sexp-token data 'hash)))
- (if hash
- (let ((algo (canonical-sexp-nth-data hash 1))
- (value (canonical-sexp-nth-data hash 2)))
- (values value (symbol->string algo)))
- (values #f #f))))
-
-(define sign
- (let* ((ptr (libgcrypt-func "gcry_pk_sign"))
- (proc (pointer->procedure int ptr '(* * *))))
- (lambda (data secret-key)
- "Sign DATA, a canonical s-expression representing a suitable hash, with
-SECRET-KEY (a canonical s-expression whose car is 'private-key'.) Note that
-DATA must be a 'data' s-expression, as returned by
-'bytevector->hash-data' (info \"(gcrypt) Cryptographic Functions\")."
- (let* ((sig (bytevector->pointer (make-bytevector (sizeof '*))))
- (err (proc sig (canonical-sexp->pointer data)
- (canonical-sexp->pointer secret-key))))
- (if (= 0 err)
- (pointer->canonical-sexp (dereference-pointer sig))
- (throw 'gcry-error 'sign err))))))
-
-(define verify
- (let* ((ptr (libgcrypt-func "gcry_pk_verify"))
- (proc (pointer->procedure int ptr '(* * *))))
- (lambda (signature data public-key)
- "Verify that SIGNATURE is a signature of DATA with PUBLIC-KEY, all of
-which are gcrypt s-expressions."
- (zero? (proc (canonical-sexp->pointer signature)
- (canonical-sexp->pointer data)
- (canonical-sexp->pointer public-key))))))
-
-(define generate-key
- (let* ((ptr (libgcrypt-func "gcry_pk_genkey"))
- (proc (pointer->procedure int ptr '(* *))))
- (lambda (params)
- "Return as an s-expression a new key pair for PARAMS. PARAMS must be an
-s-expression like: (genkey (rsa (nbits 4:2048)))."
- (let* ((key (bytevector->pointer (make-bytevector (sizeof '*))))
- (err (proc key (canonical-sexp->pointer params))))
- (if (zero? err)
- (pointer->canonical-sexp (dereference-pointer key))
- (throw 'gcry-error 'generate-key err))))))
-
-(define find-sexp-token
- (let* ((ptr (libgcrypt-func "gcry_sexp_find_token"))
- (proc (pointer->procedure '* ptr `(* * ,size_t))))
- (lambda (sexp token)
- "Find in SEXP the first element whose 'car' is TOKEN and return it;
-return #f if not found."
- (let* ((token (string->pointer (symbol->string token)))
- (res (proc (canonical-sexp->pointer sexp) token 0)))
- (if (null-pointer? res)
- #f
- (pointer->canonical-sexp res))))))
-
-(define-inlinable (canonical-sexp-null? sexp)
- "Return #t if SEXP is the empty-list sexp."
- (null-pointer? (canonical-sexp->pointer sexp)))
-
-(define (canonical-sexp-list? sexp)
- "Return #t if SEXP is a list."
- (or (canonical-sexp-null? sexp)
- (> (canonical-sexp-length sexp) 0)))
-
-(define (canonical-sexp-fold proc seed sexp)
- "Fold PROC (as per SRFI-1) over SEXP, a canonical sexp."
- (if (canonical-sexp-list? sexp)
- (let ((len (canonical-sexp-length sexp)))
- (let loop ((index 0)
- (result seed))
- (if (= index len)
- result
- (loop (+ 1 index)
- ;; XXX: Call 'nth-data' *before* 'nth' to work around
- ;; <https://bugs.g10code.com/gnupg/issue1594>, which
- ;; affects 1.6.0 and earlier versions.
- (proc (or (canonical-sexp-nth-data sexp index)
- (canonical-sexp-nth sexp index))
- result)))))
- (error "sexp is not a list" sexp)))
-
-(define (canonical-sexp->sexp sexp)
- "Return a Scheme sexp corresponding to SEXP. This is particularly useful to
-compare sexps (since Libgcrypt does not provide an 'equal?' procedure), or to
-use pattern matching."
- (if (canonical-sexp-list? sexp)
- (reverse
- (canonical-sexp-fold (lambda (item result)
- (cons (if (canonical-sexp? item)
- (canonical-sexp->sexp item)
- item)
- result))
- '()
- sexp))
-
- ;; As of Libgcrypt 1.6.0, there's no function to extract the buffer of a
- ;; non-list sexp (!), so we first enlist SEXP, then get at its buffer.
- (let ((sexp (string->canonical-sexp
- (string-append "(" (canonical-sexp->string sexp)
- ")"))))
- (or (canonical-sexp-nth-data sexp 0)
- (canonical-sexp-nth sexp 0)))))
-
-(define (sexp->canonical-sexp sexp)
- "Return a canonical sexp equivalent to SEXP, a Scheme sexp as returned by
-'canonical-sexp->sexp'."
- ;; XXX: This is inefficient, but the Libgcrypt API doesn't allow us to do
- ;; much better.
- (string->canonical-sexp
- (call-with-output-string
- (lambda (port)
- (define (write item)
- (cond ((list? item)
- (display "(" port)
- (for-each write item)
- (display ")" port))
- ((symbol? item)
- (format port " ~a" item))
- ((bytevector? item)
- (format port " #~a#"
- (bytevector->base16-string item)))
- (else
- (error "unsupported sexp item type" item))))
-
- (write sexp)))))
-
-(define (gcrypt-error-printer port key args default-printer)
- "Print the gcrypt error specified by ARGS."
- (match args
- ((proc err)
- (format port "In procedure ~a: ~a: ~a"
- proc (error-source err) (error-string err)))))
-
-(set-exception-printer! 'gcry-error gcrypt-error-printer)
-
-;;; pk-crypto.scm ends here
diff --git a/guix/pki.scm b/guix/pki.scm
index 1551425c33..6326e065e9 100644
--- a/guix/pki.scm
+++ b/guix/pki.scm
@@ -18,7 +18,7 @@
(define-module (guix pki)
#:use-module (guix config)
- #:use-module (guix pk-crypto)
+ #:use-module (gcrypt pk-crypto)
#:use-module ((guix utils) #:select (with-atomic-file-output))
#:use-module ((guix build utils) #:select (mkdir-p))
#:use-module (ice-9 match)
diff --git a/guix/profiles.scm b/guix/profiles.scm
index f34f4fcff6..8acfcff8c1 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -286,7 +286,8 @@ file name."
(manifest-transitive-entries manifest))))
(define* (package->manifest-entry package #:optional (output "out")
- #:key (parent (delay #f)))
+ #:key (parent (delay #f))
+ (properties '()))
"Return a manifest entry for the OUTPUT of package PACKAGE."
;; For each dependency, keep a promise pointing to its "parent" entry.
(letrec* ((deps (map (match-lambda
@@ -305,7 +306,8 @@ file name."
(dependencies (delete-duplicates deps))
(search-paths
(package-transitive-native-search-paths package))
- (parent parent))))
+ (parent parent)
+ (properties properties))))
entry))
(define (packages->manifest packages)
diff --git a/guix/scripts/archive.scm b/guix/scripts/archive.scm
index a359f405fe..fb2f61ce30 100644
--- a/guix/scripts/archive.scm
+++ b/guix/scripts/archive.scm
@@ -29,7 +29,7 @@
#:use-module (guix monads)
#:use-module (guix ui)
#:use-module (guix pki)
- #:use-module (guix pk-crypto)
+ #:use-module (gcrypt pk-crypto)
#:use-module (guix scripts)
#:use-module (guix scripts build)
#:use-module (gnu packages)
diff --git a/guix/scripts/authenticate.scm b/guix/scripts/authenticate.scm
index 8b19dc871b..f1fd8ee895 100644
--- a/guix/scripts/authenticate.scm
+++ b/guix/scripts/authenticate.scm
@@ -19,7 +19,7 @@
(define-module (guix scripts authenticate)
#:use-module (guix config)
#:use-module (guix base16)
- #:use-module (guix pk-crypto)
+ #:use-module (gcrypt pk-crypto)
#:use-module (guix pki)
#:use-module (guix ui)
#:use-module (ice-9 binary-ports)
diff --git a/guix/scripts/describe.scm b/guix/scripts/describe.scm
new file mode 100644
index 0000000000..fdff07d0e3
--- /dev/null
+++ b/guix/scripts/describe.scm
@@ -0,0 +1,159 @@
+;;; 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 describe)
+ #:use-module ((guix ui) #:hide (display-profile-content))
+ #:use-module (guix scripts)
+ #:use-module (guix describe)
+ #:use-module (guix profiles)
+ #:use-module ((guix scripts pull) #:select (display-profile-content))
+ #:use-module (git)
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-37)
+ #:use-module (ice-9 match)
+ #:autoload (ice-9 pretty-print) (pretty-print)
+ #:export (guix-describe))
+
+
+;;;
+;;; Command-line options.
+;;;
+
+(define %options
+ ;; Specifications of the command-line options.
+ (list (option '(#\f "format") #t #f
+ (lambda (opt name arg result)
+ (unless (member arg '("human" "channels"))
+ (leave (G_ "~a: unsupported output format~%") arg))
+ (alist-cons 'format 'channels result)))
+ (option '(#\h "help") #f #f
+ (lambda args
+ (show-help)
+ (exit 0)))
+ (option '(#\V "version") #f #f
+ (lambda args
+ (show-version-and-exit "guix describe")))))
+
+(define %default-options
+ ;; Alist of default option values.
+ '((format . human)))
+
+(define (show-help)
+ (display (G_ "Usage: guix describe [OPTION]...
+Display information about the channels currently in use.\n"))
+ (display (G_ "
+ -f, --format=FORMAT display information in the given FORMAT"))
+ (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 (display-package-search-path fmt)
+ "Display GUIX_PACKAGE_PATH, if it is set, according to FMT."
+ (match (getenv "GUIX_PACKAGE_PATH")
+ (#f #t)
+ (string
+ (match fmt
+ ('human
+ (format #t "~%GUIX_PACKAGE_PATH=\"~a\"~%" string))
+ ('channels
+ (format #t (G_ "~%;; warning: GUIX_PACKAGE_PATH=\"~a\"~%")
+ string))))))
+
+(define (display-checkout-info fmt)
+ "Display information about the current checkout according to FMT, a symbol
+denoting the requested format. Exit if the current directory does not lie
+within a Git checkout."
+ (let* ((program (car (command-line)))
+ (directory (catch 'git-error
+ (lambda ()
+ (repository-discover (dirname program)))
+ (lambda (key err)
+ (leave (G_ "failed to determine origin~%")))))
+ (repository (repository-open directory))
+ (head (repository-head repository))
+ (commit (oid->string (reference-target head))))
+ (match fmt
+ ('human
+ (format #t (G_ "Git checkout:~%"))
+ (format #t (G_ " repository: ~a~%") (dirname directory))
+ (format #t (G_ " branch: ~a~%") (reference-shorthand head))
+ (format #t (G_ " commit: ~a~%") commit))
+ ('channels
+ (pretty-print `(list (channel
+ (name 'guix)
+ (url ,(dirname directory))
+ (commit ,commit))))))
+ (display-package-search-path fmt)))
+
+(define (display-profile-info profile fmt)
+ "Display information about PROFILE, a profile as created by (guix channels),
+in the format specified by FMT."
+ (define number
+ (generation-number profile))
+
+ (match fmt
+ ('human
+ (display-profile-content profile number))
+ ('channels
+ (pretty-print
+ `(list ,@(map (lambda (entry)
+ (match (assq 'source (manifest-entry-properties entry))
+ (('source ('repository ('version 0)
+ ('url url)
+ ('branch branch)
+ ('commit commit)
+ _ ...))
+ `(channel (name ',(string->symbol
+ (manifest-entry-name entry)))
+ (url ,url)
+ (commit ,commit)))
+
+ ;; Pre-0.15.0 Guix does not provide that information,
+ ;; so there's not much we can do in that case.
+ (_ '???)))
+
+ ;; Show most recently installed packages last.
+ (reverse
+ (manifest-entries
+ (profile-manifest (generation-file-name profile
+ number)))))))))
+ (display-package-search-path fmt))
+
+
+;;;
+;;; Entry point.
+;;;
+
+(define (guix-describe . args)
+ (let* ((opts (args-fold* args %options
+ (lambda (opt name arg result)
+ (leave (G_ "~A: unrecognized option~%")
+ name))
+ cons
+ %default-options))
+ (format (assq-ref opts 'format)))
+ (with-error-handling
+ (match (current-profile)
+ (#f
+ (display-checkout-info format))
+ (profile
+ (display-profile-info profile format))))))
diff --git a/guix/scripts/download.scm b/guix/scripts/download.scm
index 1b99bc62cf..b9162d3449 100644
--- a/guix/scripts/download.scm
+++ b/guix/scripts/download.scm
@@ -20,7 +20,7 @@
#:use-module (guix ui)
#:use-module (guix scripts)
#:use-module (guix store)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix base16)
#:use-module (guix base32)
#:use-module ((guix download) #:hide (url-fetch))
diff --git a/guix/scripts/hash.scm b/guix/scripts/hash.scm
index cae5d6bcdf..2bd2ac4a06 100644
--- a/guix/scripts/hash.scm
+++ b/guix/scripts/hash.scm
@@ -20,7 +20,7 @@
(define-module (guix scripts hash)
#:use-module (guix base32)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix serialization)
#:use-module (guix ui)
#:use-module (guix scripts)
@@ -44,7 +44,7 @@
`((format . ,bytevector->nix-base32-string)))
(define (show-help)
- (display (G_ "Usage: guix hash [OPTION] FILE
+ (display (G_ "Usage: gcrypt hash [OPTION] FILE
Return the cryptographic hash of FILE.
Supported formats: 'nix-base32' (default), 'base32', and 'base16' ('hex'
@@ -93,7 +93,7 @@ and 'hexadecimal' can be used as well).\n"))
(exit 0)))
(option '(#\V "version") #f #f
(lambda args
- (show-version-and-exit "guix hash")))))
+ (show-version-and-exit "gcrypt hash")))))
diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm
index fb0677de28..1916f3b9d7 100644
--- a/guix/scripts/pack.scm
+++ b/guix/scripts/pack.scm
@@ -41,7 +41,7 @@
#:use-module (gnu packages guile)
#:use-module (gnu packages base)
#:autoload (gnu packages package-management) (guix)
- #:autoload (gnu packages gnupg) (libgcrypt)
+ #:autoload (gnu packages gnupg) (guile-gcrypt)
#:autoload (gnu packages guile) (guile2.0-json guile-json)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
@@ -95,10 +95,12 @@ found."
(('gnu _ ...) #t)
(_ #f)))
-(define guile-sqlite3&co
- ;; Guile-SQLite3 and its propagated inputs.
- (cons guile-sqlite3
- (package-transitive-propagated-inputs guile-sqlite3)))
+(define gcrypt-sqlite3&co
+ ;; Guile-Gcrypt, Guile-SQLite3, and their propagated inputs.
+ (append-map (lambda (package)
+ (cons package
+ (package-transitive-propagated-inputs package)))
+ (list guile-gcrypt guile-sqlite3)))
(define* (self-contained-tarball name profile
#:key target
@@ -124,16 +126,14 @@ added to the pack."
"guix/store/schema.sql"))))
(define build
- (with-imported-modules `(((guix config)
- => ,(make-config.scm
- #:libgcrypt libgcrypt))
+ (with-imported-modules `(((guix config) => ,(make-config.scm))
,@(source-module-closure
`((guix build utils)
(guix build union)
(guix build store-copy)
(gnu build install))
#:select? not-config?))
- (with-extensions guile-sqlite3&co
+ (with-extensions gcrypt-sqlite3&co
#~(begin
(use-modules (guix build utils)
((guix build union) #:select (relative-file-name))
@@ -251,22 +251,14 @@ points for virtual file systems (like procfs), and optional symlinks.
SYMLINKS must be a list of (SOURCE -> TARGET) tuples denoting symlinks to be
added to the pack."
- (define libgcrypt
- ;; XXX: Not strictly needed, but pulled by (guix store database).
- (module-ref (resolve-interface '(gnu packages gnupg))
- 'libgcrypt))
-
-
(define build
- (with-imported-modules `(((guix config)
- => ,(make-config.scm
- #:libgcrypt libgcrypt))
+ (with-imported-modules `(((guix config) => ,(make-config.scm))
,@(source-module-closure
'((guix build utils)
(guix build store-copy)
(gnu build install))
#:select? not-config?))
- (with-extensions guile-sqlite3&co
+ (with-extensions gcrypt-sqlite3&co
#~(begin
(use-modules (guix build utils)
(gnu build install)
@@ -349,32 +341,12 @@ must a be a GNU triplet and it is used to derive the architecture metadata in
the image."
(define defmod 'define-module) ;trick Geiser
- (define config
- ;; (guix config) module for consumption by (guix gcrypt).
- (scheme-file "gcrypt-config.scm"
- #~(begin
- (#$defmod (guix config)
- #:export (%libgcrypt))
-
- ;; XXX: Work around <http://bugs.gnu.org/15602>.
- (eval-when (expand load eval)
- (define %libgcrypt
- #+(file-append libgcrypt "/lib/libgcrypt"))))))
-
- (define json
- ;; Pick the guile-json package that corresponds to the Guile used to build
- ;; derivations.
- (if (string-prefix? "2.0" (package-version (default-guile)))
- guile2.0-json
- guile-json))
-
(define build
- ;; Guile-JSON is required by (guix docker).
- (with-extensions (list json)
- (with-imported-modules `(,@(source-module-closure '((guix docker)
- (guix build store-copy))
- #:select? not-config?)
- ((guix config) => ,config))
+ ;; Guile-JSON and Guile-Gcrypt are required by (guix docker).
+ (with-extensions (list guile-json guile-gcrypt)
+ (with-imported-modules (source-module-closure '((guix docker)
+ (guix build store-copy))
+ #:select? not-config?)
#~(begin
(use-modules (guix docker) (srfi srfi-19) (guix build store-copy))
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index b38a55d01c..97bcc699d9 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -35,6 +35,7 @@
#:use-module (guix config)
#:use-module (guix scripts)
#:use-module (guix scripts build)
+ #:autoload (guix describe) (current-profile-entries)
#:use-module ((guix build utils)
#:select (directory-exists? mkdir-p))
#:use-module (ice-9 format)
@@ -238,7 +239,7 @@ of relevance scores."
(info (G_ "package '~a' has been superseded by '~a'~%")
(manifest-entry-name old) (package-name new))
(manifest-transaction-install-entry
- (package->manifest-entry new (manifest-entry-output old))
+ (package->manifest-entry* new (manifest-entry-output old))
(manifest-transaction-remove-pattern
(manifest-pattern
(name (manifest-entry-name old))
@@ -261,7 +262,7 @@ of relevance scores."
(case (version-compare candidate-version version)
((>)
(manifest-transaction-install-entry
- (package->manifest-entry pkg output)
+ (package->manifest-entry* pkg output)
transaction))
((<)
transaction)
@@ -274,7 +275,7 @@ of relevance scores."
(null? (package-propagated-inputs pkg)))
transaction
(manifest-transaction-install-entry
- (package->manifest-entry pkg output)
+ (package->manifest-entry* pkg output)
transaction))))))))
(#f
(warning (G_ "package '~a' no longer exists~%") name)
@@ -570,6 +571,52 @@ upgrading, #f otherwise."
(output "out") ;XXX: wild guess
(item item))))
+(define (package-provenance package)
+ "Return the provenance of PACKAGE as an sexp for use as the 'provenance'
+property of manifest entries, or #f if it could not be determined."
+ (define (entry-source entry)
+ (match (assq 'source
+ (manifest-entry-properties entry))
+ (('source value) value)
+ (_ #f)))
+
+ (match (and=> (package-location package) location-file)
+ (#f #f)
+ (file
+ (let ((file (if (string-prefix? "/" file)
+ file
+ (search-path %load-path file))))
+ (and file
+ (string-prefix? (%store-prefix) file)
+
+ ;; Always store information about the 'guix' channel and
+ ;; optionally about the specific channel FILE comes from.
+ (or (let ((main (and=> (find (lambda (entry)
+ (string=? "guix"
+ (manifest-entry-name entry)))
+ (current-profile-entries))
+ entry-source))
+ (extra (any (lambda (entry)
+ (let ((item (manifest-entry-item entry)))
+ (and (string-prefix? item file)
+ (entry-source entry))))
+ (current-profile-entries))))
+ (and main
+ `(,main
+ ,@(if extra (list extra) '()))))))))))
+
+(define (package->manifest-entry* package output)
+ "Like 'package->manifest-entry', but attach PACKAGE provenance meta-data to
+the resulting manifest entry."
+ (define (provenance-properties package)
+ (match (package-provenance package)
+ (#f '())
+ (sexp `((provenance ,@sexp)))))
+
+ (package->manifest-entry package output
+ #:properties (provenance-properties package)))
+
+
(define (options->installable opts manifest transaction)
"Given MANIFEST, the current manifest, and OPTS, the result of 'args-fold',
return an variant of TRANSACTION that accounts for the specified installations
@@ -590,13 +637,13 @@ and upgrades."
(('install . (? package? p))
;; When given a package via `-e', install the first of its
;; outputs (XXX).
- (package->manifest-entry p "out"))
+ (package->manifest-entry* p "out"))
(('install . (? string? spec))
(if (store-path? spec)
(store-item->manifest-entry spec)
(let-values (((package output)
(specification->package+output spec)))
- (package->manifest-entry package output))))
+ (package->manifest-entry* package output))))
(_ #f))
opts))
diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm
index b5dfdab32f..c5326b33da 100644
--- a/guix/scripts/publish.scm
+++ b/guix/scripts/publish.scm
@@ -44,9 +44,9 @@
#:use-module (guix base64)
#:use-module (guix config)
#:use-module (guix derivations)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix pki)
- #:use-module (guix pk-crypto)
+ #:use-module (gcrypt pk-crypto)
#:use-module (guix workers)
#:use-module (guix store)
#:use-module ((guix serialization) #:select (write-file))
diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm
index 18c04f05dd..976e054a84 100644
--- a/guix/scripts/pull.scm
+++ b/guix/scripts/pull.scm
@@ -48,7 +48,8 @@
#:use-module (srfi srfi-37)
#:use-module (ice-9 match)
#:use-module (ice-9 vlist)
- #:export (guix-pull))
+ #:export (display-profile-content
+ guix-pull))
;;;
@@ -80,6 +81,8 @@ Download and deploy the latest version of Guix.\n"))
-l, --list-generations[=PATTERN]
list generations matching PATTERN"))
(display (G_ "
+ -p, --profile=PROFILE use PROFILE instead of ~/.config/guix/current"))
+ (display (G_ "
--bootstrap use the bootstrap Guile to build the new Guix"))
(newline)
(show-build-options-help)
@@ -113,6 +116,10 @@ Download and deploy the latest version of Guix.\n"))
(lambda (opt name arg result)
(alist-cons 'ref `(branch . ,(string-append "origin/" arg))
result)))
+ (option '(#\p "profile") #t #f
+ (lambda (opt name arg result)
+ (alist-cons 'profile (canonicalize-profile arg)
+ result)))
(option '(#\n "dry-run") #f #f
(lambda (opt name arg result)
(alist-cons 'dry-run? #t (alist-cons 'graft? #f result))))
@@ -152,15 +159,12 @@ Download and deploy the latest version of Guix.\n"))
#:heading (G_ "New in this revision:\n"))))
(_ #t)))
-(define* (build-and-install instances config-dir
+(define* (build-and-install instances profile
#:key verbose?)
- "Build the tool from SOURCE, and install it in CONFIG-DIR."
+ "Build the tool from SOURCE, and install it in PROFILE."
(define update-profile
(store-lift build-and-use-profile))
- (define profile
- (string-append config-dir "/current"))
-
(mlet %store-monad ((manifest (channel-instances->manifest instances)))
(mbegin %store-monad
(update-profile profile manifest)
@@ -414,7 +418,9 @@ Use '~/.config/guix/channels.scm' instead."))
(let* ((opts (parse-command-line args %options
(list %default-options)))
(cache (string-append (cache-directory) "/pull"))
- (channels (channel-list opts)))
+ (channels (channel-list opts))
+ (profile (or (assoc-ref opts 'profile)
+ (string-append (config-directory) "/current"))))
(cond ((assoc-ref opts 'query)
(process-query opts))
@@ -456,7 +462,7 @@ Use '~/.config/guix/channels.scm' instead."))
%bootstrap-guile
(canonical-package guile-2.2)))))
(run-with-store store
- (build-and-install instances (config-directory)
+ (build-and-install instances profile
#:verbose?
(assoc-ref opts 'verbose?)))))))))))))
diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm
index a8fe993e33..bcc23bd39c 100644
--- a/guix/scripts/refresh.scm
+++ b/guix/scripts/refresh.scm
@@ -23,7 +23,7 @@
(define-module (guix scripts refresh)
#:use-module (guix ui)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix scripts)
#:use-module (guix store)
#:use-module (guix utils)
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 7634bb37f6..cd300195d8 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -26,11 +26,11 @@
#:use-module (guix config)
#:use-module (guix records)
#:use-module ((guix serialization) #:select (restore-file))
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix base32)
#:use-module (guix base64)
#:use-module (guix cache)
- #:use-module (guix pk-crypto)
+ #:use-module (gcrypt pk-crypto)
#:use-module (guix pki)
#:use-module ((guix build utils) #:select (mkdir-p dump-port))
#:use-module ((guix build download)
diff --git a/guix/self.scm b/guix/self.scm
index c5da6130bb..733c4a2cc9 100644
--- a/guix/self.scm
+++ b/guix/self.scm
@@ -83,8 +83,8 @@ GUILE-VERSION (\"2.0\" or \"2.2\"), or #f if none of the packages matches."
("guile-ssh" (ref '(gnu packages ssh) 'guile-ssh))
("guile-git" (ref '(gnu packages guile) 'guile-git))
("guile-sqlite3" (ref '(gnu packages guile) 'guile-sqlite3))
+ ("guile-gcrypt" (ref '(gnu packages gnupg) 'guile-gcrypt))
("gnutls" (ref '(gnu packages tls) 'gnutls))
- ("libgcrypt" (ref '(gnu packages gnupg) 'libgcrypt))
("zlib" (ref '(gnu packages compression) 'zlib))
("gzip" (ref '(gnu packages compression) 'gzip))
("bzip2" (ref '(gnu packages compression) 'bzip2))
@@ -454,7 +454,6 @@ assumed to be part of MODULES."
(name (string-append "guix-" version))
(guile-version (effective-version))
(guile-for-build (guile-for-build guile-version))
- (libgcrypt (specification->package "libgcrypt"))
(zlib (specification->package "zlib"))
(gzip (specification->package "gzip"))
(bzip2 (specification->package "bzip2"))
@@ -481,6 +480,10 @@ assumed to be part of MODULES."
"guile-sqlite3"
"guile2.0-sqlite3"))
+ (define guile-gcrypt
+ (package-for-guile guile-version
+ "guile-gcrypt"))
+
(define gnutls
(package-for-guile guile-version
"gnutls" "guile2.0-gnutls"))
@@ -489,7 +492,7 @@ assumed to be part of MODULES."
(match (append-map (lambda (package)
(cons (list "x" package)
(package-transitive-propagated-inputs package)))
- (list gnutls guile-git guile-json
+ (list guile-gcrypt gnutls guile-git guile-json
guile-ssh guile-sqlite3))
(((labels packages _ ...) ...)
packages)))
@@ -513,10 +516,7 @@ assumed to be part of MODULES."
;; rebuilt when the version changes, which in turn means we
;; can have substitutes for it.
#:extra-modules
- `(((guix config)
- => ,(make-config.scm #:libgcrypt
- (specification->package
- "libgcrypt"))))
+ `(((guix config) => ,(make-config.scm)))
;; (guix man-db) is needed at build-time by (guix profiles)
;; but we don't need to compile it; not compiling it allows
@@ -526,6 +526,7 @@ assumed to be part of MODULES."
("guix/store/schema.sql"
,(local-file "../guix/store/schema.sql")))
+ #:extensions (list guile-gcrypt)
#:guile-for-build guile-for-build))
(define *extra-modules*
@@ -600,8 +601,7 @@ assumed to be part of MODULES."
'()
#:extra-modules
`(((guix config)
- => ,(make-config.scm #:libgcrypt libgcrypt
- #:zlib zlib
+ => ,(make-config.scm #:zlib zlib
#:gzip gzip
#:bzip2 bzip2
#:xz xz
@@ -684,7 +684,7 @@ assumed to be part of MODULES."
(define %dependency-variables
;; (guix config) variables corresponding to dependencies.
- '(%libgcrypt %libz %xz %gzip %bzip2))
+ '(%libz %xz %gzip %bzip2))
(define %persona-variables
;; (guix config) variables that define Guix's persona.
@@ -703,7 +703,7 @@ assumed to be part of MODULES."
(variables rest ...))))))
(variables %localstatedir %storedir %sysconfdir %system)))
-(define* (make-config.scm #:key libgcrypt zlib gzip xz bzip2
+(define* (make-config.scm #:key zlib gzip xz bzip2
(package-name "GNU Guix")
(package-version "0")
(bug-report-address "bug-guix@gnu.org")
@@ -723,7 +723,6 @@ assumed to be part of MODULES."
%state-directory
%store-database-directory
%config-directory
- %libgcrypt
%libz
%gzip
%bzip2
@@ -766,9 +765,6 @@ assumed to be part of MODULES."
(define %xz
#+(and xz (file-append xz "/bin/xz")))
- (define %libgcrypt
- #+(and libgcrypt
- (file-append libgcrypt "/lib/libgcrypt")))
(define %libz
#+(and zlib
(file-append zlib "/lib/libz"))))
diff --git a/guix/store.scm b/guix/store.scm
index f41a1e2690..af7f6980cf 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -25,7 +25,7 @@
#:use-module (guix monads)
#:use-module (guix base16)
#:use-module (guix base32)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix profiling)
#:autoload (guix build syscalls) (terminal-columns)
#:use-module (rnrs bytevectors)
diff --git a/guix/store/deduplication.scm b/guix/store/deduplication.scm
index 8c19d7309e..53810c680f 100644
--- a/guix/store/deduplication.scm
+++ b/guix/store/deduplication.scm
@@ -21,7 +21,7 @@
;;; timestamps, deduplicating, etc.
(define-module (guix store deduplication)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix build utils)
#:use-module (guix base16)
#:use-module (srfi srfi-11)
diff --git a/guix/tests.scm b/guix/tests.scm
index 34e3e0fc2a..06e9f8da0b 100644
--- a/guix/tests.scm
+++ b/guix/tests.scm
@@ -22,7 +22,7 @@
#:use-module (guix packages)
#:use-module (guix base32)
#:use-module (guix serialization)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix build-system gnu)
#:use-module (gnu packages bootstrap)
#:use-module (srfi srfi-34)
diff --git a/m4/guix.m4 b/m4/guix.m4
index a6897be961..da3c65f8f7 100644
--- a/m4/guix.m4
+++ b/m4/guix.m4
@@ -18,24 +18,6 @@ dnl
dnl You should have received a copy of the GNU General Public License
dnl along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
-dnl GUIX_ASSERT_LIBGCRYPT_USABLE
-dnl
-dnl Assert that GNU libgcrypt is usable from Guile.
-AC_DEFUN([GUIX_ASSERT_LIBGCRYPT_USABLE],
- [AC_CACHE_CHECK([whether $LIBGCRYPT can be dynamically loaded],
- [guix_cv_libgcrypt_usable_p],
- [GUILE_CHECK([retval],
- [(dynamic-func \"gcry_md_hash_buffer\" (dynamic-link \"$LIBGCRYPT\"))])
- if test "$retval" = 0; then
- guix_cv_libgcrypt_usable_p="yes"
- else
- guix_cv_libgcrypt_usable_p="no"
- fi])
-
- if test "x$guix_cv_libgcrypt_usable_p" != "xyes"; then
- AC_MSG_ERROR([GNU libgcrypt does not appear to be usable; see `--with-libgcrypt-prefix' and `README'.])
- fi])
-
dnl GUIX_SYSTEM_TYPE
dnl
dnl Determine the Guix host system type, and store it in the
diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in
index 7f881355e7..2762ea078a 100644
--- a/po/guix/POTFILES.in
+++ b/po/guix/POTFILES.in
@@ -31,6 +31,7 @@ guix/scripts/challenge.scm
guix/scripts/copy.scm
guix/scripts/pack.scm
guix/scripts/weather.scm
+guix/scripts/describe.scm
guix/gnu-maintenance.scm
guix/scripts/container.scm
guix/scripts/container/exec.scm
diff --git a/tests/base32.scm b/tests/base32.scm
index 194f8da96b..134e578633 100644
--- a/tests/base32.scm
+++ b/tests/base32.scm
@@ -17,7 +17,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (test-base32)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix base32)
#:use-module (guix utils)
#:use-module (srfi srfi-1)
diff --git a/tests/builders.scm b/tests/builders.scm
index bb9e0fa85b..8b8ef013e7 100644
--- a/tests/builders.scm
+++ b/tests/builders.scm
@@ -25,7 +25,7 @@
#:use-module (guix utils)
#:use-module (guix base32)
#:use-module (guix derivations)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix tests)
#:use-module ((guix packages)
#:select (package-derivation package-native-search-paths))
diff --git a/tests/challenge.scm b/tests/challenge.scm
index 387d205a64..4b13ec278e 100644
--- a/tests/challenge.scm
+++ b/tests/challenge.scm
@@ -18,7 +18,7 @@
(define-module (test-challenge)
#:use-module (guix tests)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix store)
#:use-module (guix monads)
#:use-module (guix derivations)
diff --git a/tests/cpan.scm b/tests/cpan.scm
index 396744e529..189dd027e6 100644
--- a/tests/cpan.scm
+++ b/tests/cpan.scm
@@ -20,7 +20,7 @@
(define-module (test-cpan)
#:use-module (guix import cpan)
#:use-module (guix base32)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix tests)
#:use-module (guix grafts)
#:use-module (srfi srfi-64)
diff --git a/tests/crate.scm b/tests/crate.scm
index eb93822bbb..a1dcfd5e52 100644
--- a/tests/crate.scm
+++ b/tests/crate.scm
@@ -21,7 +21,7 @@
#:use-module (guix import crate)
#:use-module (guix base32)
#:use-module (guix build-system cargo)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix tests)
#:use-module (ice-9 iconv)
#:use-module (ice-9 match)
diff --git a/tests/derivations.scm b/tests/derivations.scm
index 5d83529183..159a6971b3 100644
--- a/tests/derivations.scm
+++ b/tests/derivations.scm
@@ -23,7 +23,7 @@
#:use-module (guix grafts)
#:use-module (guix store)
#:use-module (guix utils)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix base32)
#:use-module (guix tests)
#:use-module (guix tests http)
diff --git a/tests/gem.scm b/tests/gem.scm
index 4220170ff0..a12edb294c 100644
--- a/tests/gem.scm
+++ b/tests/gem.scm
@@ -21,7 +21,7 @@
(define-module (test-gem)
#:use-module (guix import gem)
#:use-module (guix base32)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix tests)
#:use-module ((guix build utils) #:select (delete-file-recursively))
#:use-module (srfi srfi-41)
diff --git a/tests/gexp.scm b/tests/gexp.scm
index a0ed34aa6d..380b83509a 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -1093,6 +1093,24 @@
(call-with-input-file out get-string-all))
(equal? refs (list guile))))))))
+(test-assertm "file-union"
+ (mlet* %store-monad ((union -> (file-union "union"
+ `(("a" ,(plain-file "a" "1"))
+ ("b/c/d" ,(plain-file "d" "2"))
+ ("e" ,(plain-file "e" "3")))))
+ (drv (lower-object union))
+ (out -> (derivation->output-path drv)))
+ (define (contents=? file str)
+ (string=? (call-with-input-file (string-append out "/" file)
+ get-string-all)
+ str))
+
+ (mbegin %store-monad
+ (built-derivations (list drv))
+ (return (and (contents=? "a" "1")
+ (contents=? "b/c/d" "2")
+ (contents=? "e" "3"))))))
+
(test-assert "gexp->derivation vs. %current-target-system"
(let ((mval (gexp->derivation "foo"
#~(begin
diff --git a/tests/guix-describe.sh b/tests/guix-describe.sh
new file mode 100644
index 0000000000..af523f0a0b
--- /dev/null
+++ b/tests/guix-describe.sh
@@ -0,0 +1,47 @@
+# 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/>.
+
+#
+# Test 'guix describe'.
+#
+
+guix describe --version
+
+tmpfile="t-guix-describe-$$"
+trap "rm -f $tmpfile" EXIT
+rm -f "$tmpfile"
+
+if [ -d "$abs_top_srcdir/.git" ]
+then
+ # Since we're in a Git checkout, we can at least check that these things
+ # work.
+ guix describe | grep -i "checkout"
+ if git --version > /dev/null 2>&1
+ then
+ result="`guix describe | grep commit: | cut -d : -f 2-`"
+ commit="`git log | head -1 | cut -c 7-`"
+ test "x$result" = "x$commit"
+ fi
+ guix describe -f channels
+ case "`guix describe -f channels | grep url`" in
+ *"(url \"$abs_top_srcdir\")") true;;
+ *) false;;
+ esac
+else
+ exit 77
+fi
diff --git a/tests/guix-system.sh b/tests/guix-system.sh
index 36ba5fbd5f..a129efdfcb 100644
--- a/tests/guix-system.sh
+++ b/tests/guix-system.sh
@@ -232,6 +232,14 @@ guix system build "$tmpfile" -d | grep '\.drv$'
guix system vm "$tmpfile" -d # succeeds
guix system vm "$tmpfile" -d | grep '\.drv$'
+# Make sure the behavior is deterministic (<https://bugs.gnu.org/32652>).
+drv1="`guix system vm "$tmpfile" -d`"
+drv2="`guix system vm "$tmpfile" -d`"
+test "$drv1" = "$drv2"
+drv1="`guix system disk-image --file-system-type=iso9660 "$tmpfile" -d`"
+drv2="`guix system disk-image --file-system-type=iso9660 "$tmpfile" -d`"
+test "$drv1" = "$drv2"
+
make_user_config "group-that-does-not-exist" "users"
if guix system build "$tmpfile" -n 2> "$errorfile"
then false
diff --git a/tests/hash.scm b/tests/hash.scm
deleted file mode 100644
index 47dff3915b..0000000000
--- a/tests/hash.scm
+++ /dev/null
@@ -1,128 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2017, 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-hash)
- #:use-module (guix hash)
- #:use-module (guix base16)
- #:use-module (srfi srfi-1)
- #:use-module (srfi srfi-11)
- #:use-module (srfi srfi-64)
- #:use-module (rnrs bytevectors)
- #:use-module (rnrs io ports))
-
-;; Test the (guix hash) module.
-
-(define %empty-sha256
- ;; SHA256 hash of the empty string.
- (base16-string->bytevector
- "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"))
-
-(define %hello-sha256
- ;; SHA256 hash of "hello world"
- (base16-string->bytevector
- "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"))
-
-
-(test-begin "hash")
-
-(test-equal "sha1, empty"
- (base16-string->bytevector "da39a3ee5e6b4b0d3255bfef95601890afd80709")
- (sha1 #vu8()))
-
-(test-equal "sha1, hello"
- (base16-string->bytevector "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed")
- (sha1 (string->utf8 "hello world")))
-
-(test-equal "sha256, empty"
- %empty-sha256
- (sha256 #vu8()))
-
-(test-equal "sha256, hello"
- %hello-sha256
- (sha256 (string->utf8 "hello world")))
-
-(test-equal "open-sha256-port, empty"
- %empty-sha256
- (let-values (((port get)
- (open-sha256-port)))
- (close-port port)
- (get)))
-
-(test-equal "open-sha256-port, hello"
- (list %hello-sha256 (string-length "hello world"))
- (let-values (((port get)
- (open-sha256-port)))
- (put-bytevector port (string->utf8 "hello world"))
- (force-output port)
- (list (get) (port-position port))))
-
-(test-assert "port-sha256"
- (let* ((file (search-path %load-path "ice-9/psyntax.scm"))
- (size (stat:size (stat file)))
- (contents (call-with-input-file file get-bytevector-all)))
- (equal? (sha256 contents)
- (call-with-input-file file port-sha256))))
-
-(test-equal "open-sha256-input-port, empty"
- `("" ,%empty-sha256)
- (let-values (((port get)
- (open-sha256-input-port (open-string-input-port ""))))
- (let ((str (get-string-all port)))
- (list str (get)))))
-
-(test-equal "open-sha256-input-port, hello"
- `("hello world" ,%hello-sha256)
- (let-values (((port get)
- (open-sha256-input-port
- (open-bytevector-input-port
- (string->utf8 "hello world")))))
- (let ((str (get-string-all port)))
- (list str (get)))))
-
-(test-equal "open-sha256-input-port, hello, one two"
- (list (string->utf8 "hel") (string->utf8 "lo")
- (base16-string->bytevector ; echo -n hello | sha256sum
- "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824")
- " world")
- (let-values (((port get)
- (open-sha256-input-port
- (open-bytevector-input-port (string->utf8 "hello world")))))
- (let* ((one (get-bytevector-n port 3))
- (two (get-bytevector-n port 2))
- (hash (get))
- (three (get-string-all port)))
- (list one two hash three))))
-
-(test-equal "open-sha256-input-port, hello, read from wrapped port"
- (list (string->utf8 "hello")
- (base16-string->bytevector ; echo -n hello | sha256sum
- "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824")
- " world")
- (let*-values (((wrapped)
- (open-bytevector-input-port (string->utf8 "hello world")))
- ((port get)
- (open-sha256-input-port wrapped)))
- (let* ((hello (get-bytevector-n port 5))
- (hash (get))
-
- ;; Now read from WRAPPED to make sure its current position is
- ;; correct.
- (world (get-string-all wrapped)))
- (list hello hash world))))
-
-(test-end)
diff --git a/tests/inferior.scm b/tests/inferior.scm
index 5e0f8ae66e..ff5cad4210 100644
--- a/tests/inferior.scm
+++ b/tests/inferior.scm
@@ -45,9 +45,11 @@
(test-equal "inferior-packages"
(take (sort (fold-packages (lambda (package lst)
- (alist-cons (package-name package)
+ (cons (list (package-name package)
(package-version package)
- lst))
+ (package-home-page package)
+ (package-location package))
+ lst))
'())
(lambda (x y)
(string<? (car x) (car y))))
@@ -56,14 +58,18 @@
#:command "scripts/guix"))
(packages (inferior-packages inferior)))
(and (every string? (map inferior-package-synopsis packages))
- (begin
+ (let ()
+ (define result
+ (take (sort (map (lambda (package)
+ (list (inferior-package-name package)
+ (inferior-package-version package)
+ (inferior-package-home-page package)
+ (inferior-package-location package)))
+ packages)
+ (lambda (x y)
+ (string<? (car x) (car y))))
+ 10))
(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)))))
+ result))))
(test-end "inferior")
diff --git a/tests/nar.scm b/tests/nar.scm
index 9b5fb984b4..d610ea53f7 100644
--- a/tests/nar.scm
+++ b/tests/nar.scm
@@ -21,7 +21,7 @@
#:use-module (guix nar)
#:use-module (guix serialization)
#:use-module (guix store)
- #:use-module ((guix hash)
+ #:use-module ((gcrypt hash)
#:select (open-sha256-port open-sha256-input-port))
#:use-module ((guix packages)
#:select (base32))
diff --git a/tests/opam.scm b/tests/opam.scm
index 26832174a8..a1320abfdc 100644
--- a/tests/opam.scm
+++ b/tests/opam.scm
@@ -19,7 +19,7 @@
(define-module (test-opam)
#:use-module (guix import opam)
#:use-module (guix base32)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix tests)
#:use-module ((guix build utils) #:select (delete-file-recursively mkdir-p which))
#:use-module (srfi srfi-64)
diff --git a/tests/packages.scm b/tests/packages.scm
index 65ccb14889..237feb7aba 100644
--- a/tests/packages.scm
+++ b/tests/packages.scm
@@ -28,7 +28,7 @@
#:renamer (lambda (name)
(cond ((eq? name 'location) 'make-location)
(else name))))
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix derivations)
#:use-module (guix packages)
#:use-module (guix grafts)
diff --git a/tests/pk-crypto.scm b/tests/pk-crypto.scm
deleted file mode 100644
index fe33a6f7b5..0000000000
--- a/tests/pk-crypto.scm
+++ /dev/null
@@ -1,290 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2017 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-pk-crypto)
- #:use-module (guix pk-crypto)
- #:use-module (guix utils)
- #:use-module (guix base16)
- #:use-module (guix hash)
- #:use-module (srfi srfi-1)
- #:use-module (srfi srfi-11)
- #:use-module (srfi srfi-26)
- #:use-module (srfi srfi-64)
- #:use-module (rnrs bytevectors)
- #:use-module (rnrs io ports)
- #:use-module (ice-9 match))
-
-;; Test the (guix pk-crypto) module.
-
-(define %key-pair
- ;; RSA key pair that was generated with:
- ;; (generate-key (string->canonical-sexp "(genkey (rsa (nbits 4:1024)))"))
- ;; which takes a bit of time.
- "(key-data
- (public-key
- (rsa
- (n #00C1F764069F54FFE93A126B02328903E984E4AE3AF6DF402B5B6B3907911B88C385F1BA76A002EC9DEA109A5228EF0E62EE31A06D1A5861CAB474F6C857AC66EB65A1905F25BBA1869579E73A3B7FED13AF5A1667326F88CDFC2FF24B03C14FD1384AA7E73CA89572880B606E3A974E15347963FC7B6378574936A47580DBCB45#)
- (e #010001#)))
- (private-key
- (rsa
- (n #00C1F764069F54FFE93A126B02328903E984E4AE3AF6DF402B5B6B3907911B88C385F1BA76A002EC9DEA109A5228EF0E62EE31A06D1A5861CAB474F6C857AC66EB65A1905F25BBA1869579E73A3B7FED13AF5A1667326F88CDFC2FF24B03C14FD1384AA7E73CA89572880B606E3A974E15347963FC7B6378574936A47580DBCB45#)
- (e #010001#)
- (d #58CAD84653D0046A8EC3F9AA82D9C829B145422109FC3F12DA01A694B92FA296E70D366FB166454D30E632CEE3A033B4C41781BA10325F69FCDC0250CA19C8EEB352FA085992494098DB133E682ED38A931701F0DED1A1E508F4341A4FB446A04F019427C7CB3C44F251EEA9D386100DA80F125E0FD5CE1B0DFEC6D21516EACD#)
- (p #00D47F185147EC39393CCDA4E7323FFC20FC8B8073E2A54DD63BA392A66975E4204CA48572496A9DFD7522436B852C07472A5AB25B7706F7C14E6F33FBC420FF3B#)
- (q #00E9AD22F158060BC9AE3601DA623AFC60FFF3058795802CA92371C00097335CF9A23D7782DE353C9DBA93D7BB99E6A24A411107605E722481C5C191F80D7EB77F#)
- (u #59B45B95AE01A7A7370FAFDB08FE73A4793CE37F228961B09B1B1E7DDAD9F8D3E28F5C5E8B4B067E6B8E0BBF3F690B42991A79E46108DDCDA2514323A66964DE#))))")
-
-(define %ecc-key-pair
- ;; Ed25519 key pair generated with:
- ;; (generate-key (string->canonical-sexp "(genkey (ecdsa (curve Ed25519) (flags rfc6979 transient)))"))
- "(key-data
- (public-key
- (ecc
- (curve Ed25519)
- (q #94869C1B9E69DB8DD910B7F7F4D6E56A63A964A59AE8F90F6703ACDDF6F50C81#)))
- (private-key
- (ecc
- (curve Ed25519)
- (q #94869C1B9E69DB8DD910B7F7F4D6E56A63A964A59AE8F90F6703ACDDF6F50C81#)
- (d #6EFB32D0B4EC6B3237B523539F1979379B82726AAA605EB2FBA6775B2B777B78#))))")
-
-(test-begin "pk-crypto")
-
-(test-assert "version"
- (gcrypt-version))
-
-(let ((sexps '("(foo bar)"
-
- ;; In Libgcrypt 1.5.3 the following integer is rendered as
- ;; binary, whereas in 1.6.0 it's rendered as is (hexadecimal.)
- ;;"#C0FFEE#"
-
- "(genkey \n (rsa \n (nbits \"1024\")\n )\n )")))
- (test-equal "string->canonical-sexp->string"
- sexps
- (let ((sexps (map string->canonical-sexp sexps)))
- (and (every canonical-sexp? sexps)
- (map (compose string-trim-both canonical-sexp->string) sexps)))))
-
-(gc) ; stress test!
-
-(let ((sexps `(("(foo bar)" foo -> "(foo bar)")
- ("(foo (bar (baz 3:123)))" baz -> "(baz \"123\")")
- ("(foo (bar 3:123))" baz -> #f))))
- (test-equal "find-sexp-token"
- (map (match-lambda
- ((_ _ '-> expected)
- expected))
- sexps)
- (map (match-lambda
- ((input token '-> _)
- (let ((sexp (find-sexp-token (string->canonical-sexp input) token)))
- (and sexp
- (string-trim-both (canonical-sexp->string sexp))))))
- sexps)))
-
-(gc)
-
-(test-equal "canonical-sexp-length"
- '(0 1 2 4 0 0)
- (map (compose canonical-sexp-length string->canonical-sexp)
- '("()" "(a)" "(a b)" "(a #616263# b #C001#)" "a" "#123456#")))
-
-(test-equal "canonical-sexp-list?"
- '(#t #f #t #f)
- (map (compose canonical-sexp-list? string->canonical-sexp)
- '("()" "\"abc\"" "(a b c)" "#123456#")))
-
-(gc)
-
-(test-equal "canonical-sexp-car + cdr"
- '("(b \n (c xyz)\n )")
- (let ((lst (string->canonical-sexp "(a (b (c xyz)))")))
- (map (lambda (sexp)
- (and sexp (string-trim-both (canonical-sexp->string sexp))))
- ;; Note: 'car' returns #f when the first element is an atom.
- (list (canonical-sexp-car (canonical-sexp-cdr lst))))))
-
-(gc)
-
-(test-equal "canonical-sexp-nth"
- '("(b pqr)" "(c \"456\")" "(d xyz)" #f #f)
-
- (let ((lst (string->canonical-sexp "(a (b 3:pqr) (c 3:456) (d 3:xyz))")))
- ;; XXX: In Libgcrypt 1.5.3, (canonical-sexp-nth lst 0) returns LST, whereas in
- ;; 1.6.0 it returns #f.
- (map (lambda (sexp)
- (and sexp (string-trim-both (canonical-sexp->string sexp))))
- (unfold (cut > <> 5)
- (cut canonical-sexp-nth lst <>)
- 1+
- 1))))
-
-(gc)
-
-(test-equal "canonical-sexp-nth-data"
- `(Name Otto Meier #f ,(base16-string->bytevector "123456") #f)
- (let ((lst (string->canonical-sexp
- "(Name Otto Meier (address Burgplatz) #123456#)")))
- (unfold (cut > <> 5)
- (cut canonical-sexp-nth-data lst <>)
- 1+
- 0)))
-
-(let ((bv (base16-string->bytevector
- "5eff0b55c9c5f5e87b4e34cd60a2d5654ca1eb78c7b3c67c3179fed1cff07b4c")))
- (test-equal "hash corrupt due to restrictive locale encoding"
- bv
-
- ;; In Guix up to 0.6 included this test would fail because at some point
- ;; the hash value would be cropped to ASCII. In practice 'guix
- ;; authenticate' would produce invalid signatures that would fail
- ;; signature verification. See <http://bugs.gnu.org/17312>.
- (let ((locale (setlocale LC_ALL)))
- (dynamic-wind
- (lambda ()
- (setlocale LC_ALL "C"))
- (lambda ()
- (hash-data->bytevector
- (string->canonical-sexp
- (canonical-sexp->string
- (bytevector->hash-data bv "sha256")))))
- (lambda ()
- (setlocale LC_ALL locale))))))
-
-(gc)
-
-;; XXX: The test below is typically too long as it needs to gather enough entropy.
-
-;; (test-assert "generate-key"
-;; (let ((key (generate-key (string->canonical-sexp
-;; "(genkey (rsa (nbits 3:128)))"))))
-;; (and (canonical-sexp? key)
-;; (find-sexp-token key 'key-data)
-;; (find-sexp-token key 'public-key)
-;; (find-sexp-token key 'private-key))))
-
-(test-assert "bytevector->hash-data->bytevector"
- (let* ((bv (sha256 (string->utf8 "Hello, world.")))
- (data (bytevector->hash-data bv "sha256")))
- (and (canonical-sexp? data)
- (let-values (((value algo) (hash-data->bytevector data)))
- (and (string=? algo "sha256")
- (bytevector=? value bv))))))
-
-(test-equal "key-type"
- '(rsa ecc)
- (map (compose key-type
- (cut find-sexp-token <> 'public-key)
- string->canonical-sexp)
- (list %key-pair %ecc-key-pair)))
-
-(test-assert "sign + verify"
- (let* ((pair (string->canonical-sexp %key-pair))
- (secret (find-sexp-token pair 'private-key))
- (public (find-sexp-token pair 'public-key))
- (data (bytevector->hash-data
- (sha256 (string->utf8 "Hello, world."))
- #:key-type (key-type public)))
- (sig (sign data secret)))
- (and (verify sig data public)
- (not (verify sig
- (bytevector->hash-data
- (sha256 (string->utf8 "Hi!"))
- #:key-type (key-type public))
- public)))))
-
-;; Ed25519 appeared in libgcrypt 1.6.0.
-(test-skip (if (version>? (gcrypt-version) "1.6.0") 0 1))
-(test-assert "sign + verify, Ed25519"
- (let* ((pair (string->canonical-sexp %ecc-key-pair))
- (secret (find-sexp-token pair 'private-key))
- (public (find-sexp-token pair 'public-key))
- (data (bytevector->hash-data
- (sha256 (string->utf8 "Hello, world."))))
- (sig (sign data secret)))
- (and (verify sig data public)
- (not (verify sig
- (bytevector->hash-data
- (sha256 (string->utf8 "Hi!")))
- public)))))
-
-(gc)
-
-(test-equal "canonical-sexp->sexp"
- `((data
- (flags pkcs1)
- (hash sha256
- ,(base16-string->bytevector
- "2749f0ea9f26c6c7be746a9cff8fa4c2f2a02b000070dba78429e9a11f87c6eb")))
-
- (public-key
- (rsa
- (n ,(base16-string->bytevector
- (string-downcase
- "00C1F764069F54FFE93A126B02328903E984E4AE3AF6DF402B5B6B3907911B88C385F1BA76A002EC9DEA109A5228EF0E62EE31A06D1A5861CAB474F6C857AC66EB65A1905F25BBA1869579E73A3B7FED13AF5A1667326F88CDFC2FF24B03C14FD1384AA7E73CA89572880B606E3A974E15347963FC7B6378574936A47580DBCB45")))
- (e ,(base16-string->bytevector
- "010001")))))
-
- (list (canonical-sexp->sexp
- (string->canonical-sexp
- "(data
- (flags pkcs1)
- (hash \"sha256\"
- #2749f0ea9f26c6c7be746a9cff8fa4c2f2a02b000070dba78429e9a11f87c6eb#))"))
-
- (canonical-sexp->sexp
- (find-sexp-token (string->canonical-sexp %key-pair)
- 'public-key))))
-
-
-(let ((lst
- `((data
- (flags pkcs1)
- (hash sha256
- ,(base16-string->bytevector
- "2749f0ea9f26c6c7be746a9cff8fa4c2f2a02b000070dba78429e9a11f87c6eb")))
-
- (public-key
- (rsa
- (n ,(base16-string->bytevector
- (string-downcase
- "00C1F764069F54FFE93A126B02328903E984E4AE3AF6DF402B5B6B3907911B88C385F1BA76A002EC9DEA109A5228EF0E62EE31A06D1A5861CAB474F6C857AC66EB65A1905F25BBA1869579E73A3B7FED13AF5A1667326F88CDFC2FF24B03C14FD1384AA7E73CA89572880B606E3A974E15347963FC7B6378574936A47580DBCB45")))
- (e ,(base16-string->bytevector
- "010001"))))
-
- ,(base16-string->bytevector
- "2749f0ea9f26c6c7be746a9cff8fa4c2f2a02b000070dba78429e9a11f87c6eb"))))
- (test-equal "sexp->canonical-sexp->sexp"
- lst
- (map (compose canonical-sexp->sexp sexp->canonical-sexp)
- lst)))
-
-(let ((sexp `(signature
- (public-key
- (rsa
- (n ,(make-bytevector 1024 1))
- (e ,(base16-string->bytevector "010001")))))))
- (test-equal "https://bugs.g10code.com/gnupg/issue1594"
- ;; The gcrypt bug above was primarily affecting our uses in
- ;; 'canonical-sexp->sexp', typically when applied to a signature sexp (in
- ;; 'guix authenticate -verify') with a "big" RSA key, such as 4096 bits.
- sexp
- (canonical-sexp->sexp (sexp->canonical-sexp sexp))))
-
-(test-end)
diff --git a/tests/pki.scm b/tests/pki.scm
index 876ad98d73..d6a6b476c7 100644
--- a/tests/pki.scm
+++ b/tests/pki.scm
@@ -18,8 +18,8 @@
(define-module (test-pki)
#:use-module (guix pki)
- #:use-module (guix pk-crypto)
- #:use-module (guix hash)
+ #:use-module (gcrypt pk-crypto)
+ #:use-module (gcrypt hash)
#:use-module (rnrs io ports)
#:use-module (srfi srfi-64))
diff --git a/tests/publish.scm b/tests/publish.scm
index 1ed8308076..0e793c1ee5 100644
--- a/tests/publish.scm
+++ b/tests/publish.scm
@@ -25,7 +25,7 @@
#:use-module (guix tests)
#:use-module (guix config)
#:use-module (guix utils)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix store)
#:use-module (guix derivations)
#:use-module (guix gexp)
@@ -33,7 +33,7 @@
#:use-module (guix base64)
#:use-module ((guix records) #:select (recutils->alist))
#:use-module ((guix serialization) #:select (restore-file))
- #:use-module (guix pk-crypto)
+ #:use-module (gcrypt pk-crypto)
#:use-module ((guix pki) #:select (%public-key-file %private-key-file))
#:use-module (guix zlib)
#:use-module (web uri)
diff --git a/tests/pypi.scm b/tests/pypi.scm
index 310c6c8f29..616ec191f5 100644
--- a/tests/pypi.scm
+++ b/tests/pypi.scm
@@ -20,7 +20,7 @@
(define-module (test-pypi)
#:use-module (guix import pypi)
#:use-module (guix base32)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix tests)
#:use-module (guix build-system python)
#:use-module ((guix build utils) #:select (delete-file-recursively which))
diff --git a/tests/services.scm b/tests/services.scm
index b146a0dec2..1ad577e601 100644
--- a/tests/services.scm
+++ b/tests/services.scm
@@ -138,6 +138,31 @@
(equal? (list s1 s2)
(instantiate-missing-services (list s1 s2))))))
+(test-assert "instantiate-missing-services, indirect"
+ (let* ((t1 (service-type (name 't1) (extensions '())
+ (default-value 'dflt)
+ (compose concatenate)
+ (extend cons)))
+ (t2 (service-type (name 't2) (extensions '())
+ (default-value 'dflt2)
+ (compose concatenate)
+ (extend cons)
+ (extensions
+ (list (service-extension t1 list)))))
+ (t3 (service-type (name 't3)
+ (extensions
+ (list (service-extension t2 list)))))
+ (s1 (service t1))
+ (s2 (service t2))
+ (s3 (service t3 42))
+ (== (cut lset= equal? <...>)))
+ (and (== (list s1 s2 s3)
+ (instantiate-missing-services (list s3)))
+ (== (list s1 s2 s3)
+ (instantiate-missing-services (list s1 s3)))
+ (== (list s1 s2 s3)
+ (instantiate-missing-services (list s2 s3))))))
+
(test-assert "instantiate-missing-services, no default value"
(let* ((t1 (service-type (name 't1) (extensions '())))
(t2 (service-type (name 't2)
diff --git a/tests/store-deduplication.scm b/tests/store-deduplication.scm
index 4ca2ec0f61..e438aa84c6 100644
--- a/tests/store-deduplication.scm
+++ b/tests/store-deduplication.scm
@@ -19,7 +19,7 @@
(define-module (test-store-deduplication)
#:use-module (guix tests)
#:use-module (guix store deduplication)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module ((guix utils) #:select (call-with-temporary-directory))
#:use-module (guix build utils)
#:use-module (rnrs bytevectors)
diff --git a/tests/store.scm b/tests/store.scm
index 47fab0df18..2858369706 100644
--- a/tests/store.scm
+++ b/tests/store.scm
@@ -21,7 +21,7 @@
#:use-module (guix store)
#:use-module (guix utils)
#:use-module (guix monads)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix base32)
#:use-module (guix packages)
#:use-module (guix derivations)
@@ -45,6 +45,9 @@
(define %store
(open-connection-for-tests))
+(define %shell
+ (or (getenv "SHELL") (getenv "CONFIG_SHELL")))
+
(test-begin "store")
@@ -220,7 +223,8 @@
("./foo/c" directory #t)
("./foo/c/p" regular "file p")
("./foo/c/q" directory #t)
- ("./foo/c/q/x" regular "#!/bin/sh\nexit 42")
+ ("./foo/c/q/x" regular
+ ,(string-append "#!" %shell "\nexit 42"))
("./foo/c/q/y" symlink "..")
("./foo/c/q/z" directory #t))
(let* ((tree `("file-tree" directory
@@ -231,7 +235,7 @@
("p" regular (data ,(string->utf8 "file p")))
("q" directory
("x" executable
- (data "#!/bin/sh\nexit 42"))
+ (data ,(string-append "#!" %shell "\nexit 42")))
("y" symlink "..")
("z" directory))))
("bar" directory)))
diff --git a/tests/substitute.scm b/tests/substitute.scm
index 0ad6247954..964a57f30b 100644
--- a/tests/substitute.scm
+++ b/tests/substitute.scm
@@ -20,9 +20,9 @@
(define-module (test-substitute)
#:use-module (guix scripts substitute)
#:use-module (guix base64)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix serialization)
- #:use-module (guix pk-crypto)
+ #:use-module (gcrypt pk-crypto)
#:use-module (guix pki)
#:use-module (guix config)
#:use-module (guix base32)