aboutsummaryrefslogtreecommitdiff
path: root/AUTHORS
blob: 1e30a74a64f51ec735dcc44ff4dfe5fa4fa13c6f (about) (plain)
1
2
3
4
5
6
7
8
9
GNU Guix consists of Scheme code that implements the deployment model
of the Nix package management tool.  In fact, it currently talks to a
build daemon whose code comes from Nix (see the manual for details.)

Nix was initially written by Eelco Dolstra; other people have been
contributing to it.  See `nix/AUTHORS' for details.

The list of GNU Guix contributors is now generated from the output of
'git log' and written to this file, as can be seen in release tarballs.
='right'>2019-08-06 10:07:36 +0200 commit378d94e51b00c30b19a39154278d01f1f3c4dbc1 (patch) tree0c9ed3a1c1b6db778b05ad03fa8edd91cfb737f4 parentd350d5e71434704d147b1252d21e46daf6bb9885 (diff)parent6a5198170ed5f10e1eee2e25fc6a39f3f33a40fd (diff)downloadguix-378d94e51b00c30b19a39154278d01f1f3c4dbc1.tar.gz
guix-378d94e51b00c30b19a39154278d01f1f3c4dbc1.zip
Merge remote-tracking branch 'origin/master' into wip-texlive
Diffstat
-rw-r--r--Makefile.am1
-rw-r--r--configure.ac4
-rw-r--r--doc/guix.texi24
-rw-r--r--gnu/installer.scm4
-rw-r--r--gnu/installer/locale.scm21
-rw-r--r--gnu/local.mk8
-rw-r--r--gnu/machine/ssh.scm189
-rw-r--r--gnu/packages/admin.scm54
-rw-r--r--gnu/packages/algebra.scm4
-rw-r--r--gnu/packages/bioconductor.scm384
-rw-r--r--gnu/packages/bioinformatics.scm14
-rw-r--r--gnu/packages/chromium.scm98
-rw-r--r--gnu/packages/ci.scm2
-rw-r--r--gnu/packages/compression.scm4
-rw-r--r--gnu/packages/cran.scm362
-rw-r--r--gnu/packages/crypto.scm11
-rw-r--r--gnu/packages/dictionaries.scm4
-rw-r--r--gnu/packages/dns.scm5
-rw-r--r--gnu/packages/docker.scm16
-rw-r--r--gnu/packages/ebook.scm27
-rw-r--r--gnu/packages/education.scm4
-rw-r--r--gnu/packages/emacs-xyz.scm710
-rw-r--r--gnu/packages/enchant.scm4
-rw-r--r--gnu/packages/finance.scm39
-rw-r--r--gnu/packages/fontutils.scm2
-rw-r--r--gnu/packages/games.scm31
-rw-r--r--gnu/packages/gnome.scm61
-rw-r--r--gnu/packages/golang.scm605
-rw-r--r--gnu/packages/graphics.scm16
-rw-r--r--gnu/packages/guile-xyz.scm6
-rw-r--r--gnu/packages/guile.scm48
-rw-r--r--gnu/packages/image-viewers.scm4
-rw-r--r--gnu/packages/image.scm8
-rw-r--r--gnu/packages/julia.scm262
-rw-r--r--gnu/packages/kde.scm4
-rw-r--r--gnu/packages/kodi.scm4
-rw-r--r--gnu/packages/libevent.scm4
-rw-r--r--gnu/packages/linux.scm70
-rw-r--r--gnu/packages/lisp.scm85
-rw-r--r--gnu/packages/llvm.scm25
-rw-r--r--gnu/packages/machine-learning.scm10
-rw-r--r--gnu/packages/mail.scm145
-rw-r--r--gnu/packages/man.scm4
-rw-r--r--gnu/packages/mp3.scm3
-rw-r--r--gnu/packages/multiprecision.scm25
-rw-r--r--gnu/packages/networking.scm28
-rw-r--r--gnu/packages/package-management.scm9
-rw-r--r--gnu/packages/patches/dkimproxy-add-ipv6-support.patch75
-rw-r--r--gnu/packages/patches/emacs-dired-toggle-sudo-emacs-26.patch49
-rw-r--r--gnu/packages/patches/libmad-frame-length.patch199
-rw-r--r--gnu/packages/patches/libmad-length-check.patch819
-rw-r--r--gnu/packages/patches/libmad-md_size.patch60
-rw-r--r--gnu/packages/patches/pcre2-fix-jit_match-crash.patch25
-rw-r--r--gnu/packages/patches/strace-ipc-tests.patch30
-rw-r--r--gnu/packages/pcre.scm12
-rw-r--r--gnu/packages/php.scm12
-rw-r--r--gnu/packages/python-xyz.scm25
-rw-r--r--gnu/packages/regex.scm4
-rw-r--r--gnu/packages/samba.scm4
-rw-r--r--gnu/packages/scanner.scm12
-rw-r--r--gnu/packages/sdl.scm4
-rw-r--r--gnu/packages/shells.scm9
-rw-r--r--gnu/packages/spice.scm21
-rw-r--r--gnu/packages/syncthing.scm155
-rw-r--r--gnu/packages/telephony.scm7
-rw-r--r--gnu/packages/terminals.scm30
-rw-r--r--gnu/packages/text-editors.scm138
-rw-r--r--gnu/packages/textutils.scm47
-rw-r--r--gnu/packages/tls.scm28
-rw-r--r--gnu/packages/video.scm101
-rw-r--r--gnu/packages/virtualization.scm48
-rw-r--r--gnu/packages/web.scm87
-rw-r--r--gnu/packages/wine.scm15
-rw-r--r--gnu/packages/wm.scm20
-rw-r--r--gnu/packages/xorg.scm4
-rw-r--r--gnu/services/herd.scm6
-rw-r--r--gnu/system/vm.scm2
-rw-r--r--gnu/tests/reconfigure.scm262
-rw-r--r--guix/build/cargo-build-system.scm48
-rw-r--r--guix/build/go-build-system.scm3
-rw-r--r--guix/discovery.scm8
-rw-r--r--guix/docker.scm19
-rw-r--r--guix/gexp.scm49
-rw-r--r--guix/git-download.scm4
-rw-r--r--guix/git.scm69
-rw-r--r--guix/import/cpan.scm14
-rw-r--r--guix/import/crate.scm6
-rw-r--r--guix/import/gem.scm10
-rw-r--r--guix/import/github.scm13
-rw-r--r--guix/import/json.scm11
-rw-r--r--guix/import/launchpad.scm13
-rw-r--r--guix/import/pypi.scm8
-rw-r--r--guix/import/stackage.scm4
-rw-r--r--guix/import/utils.scm25
-rw-r--r--guix/scripts/build.scm13
-rw-r--r--guix/scripts/deploy.scm14
-rw-r--r--guix/scripts/import/json.scm2
-rw-r--r--guix/scripts/pack.scm2
-rw-r--r--guix/scripts/system.scm181
-rw-r--r--guix/scripts/system/reconfigure.scm232
-rw-r--r--guix/self.scm2
-rw-r--r--guix/swh.scm35
-rw-r--r--m4/guix.m421
-rw-r--r--tests/gexp.scm19
-rw-r--r--tests/guix-build-branch.sh8
-rw-r--r--tests/import-utils.scm22
-rw-r--r--tests/services.scm4
107 files changed, 5177 insertions, 1444 deletions
diff --git a/Makefile.am b/Makefile.am
index 7fa51d17ac..0bd85e8fcf 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -249,6 +249,7 @@ MODULES = \
guix/scripts/describe.scm \
guix/scripts/system.scm \
guix/scripts/system/search.scm \
+ guix/scripts/system/reconfigure.scm \
guix/scripts/lint.scm \
guix/scripts/challenge.scm \
guix/scripts/import/crate.scm \
diff --git a/configure.ac b/configure.ac
index 3918550a79..689b28d984 100644
--- a/configure.ac
+++ b/configure.ac
@@ -119,8 +119,8 @@ if test "x$have_guile_git" != "xyes"; then
fi
dnl Check for Guile-JSON.
-GUILE_MODULE_AVAILABLE([have_guile_json], [(json)])
-if test "x$have_guile_json" != "xyes"; then
+GUIX_CHECK_GUILE_JSON
+if test "x$guix_cv_have_recent_guile_json" != "xyes"; then
AC_MSG_ERROR([Guile-JSON is missing; please install it.])
fi
diff --git a/doc/guix.texi b/doc/guix.texi
index 8c5fa5f741..cb60d5c7b7 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -28,7 +28,7 @@ Copyright @copyright{} 2014, 2015, 2016 Alex Kost@*
Copyright @copyright{} 2015, 2016 Mathieu Lirzin@*
Copyright @copyright{} 2014 Pierre-Antoine Rault@*
Copyright @copyright{} 2015 Taylan Ulrich Bayırlı/Kammer@*
-Copyright @copyright{} 2015, 2016, 2017 Leo Famulari@*
+Copyright @copyright{} 2015, 2016, 2017, 2019 Leo Famulari@*
Copyright @copyright{} 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus@*
Copyright @copyright{} 2016 Ben Woodcroft@*
Copyright @copyright{} 2016, 2017, 2018 Chris Marusich@*
@@ -564,6 +564,10 @@ $ wget @value{OPENPGP-SIGNING-KEY-URL} \
@noindent
and rerun the @code{gpg --verify} command.
+
+Take note that a warning like ``This key is not certified with a trusted
+signature!'' is normal.
+
@c end authentication part
@item
@@ -746,7 +750,7 @@ or later;
@c FIXME: Specify a version number once a release has been made.
@uref{https://gitlab.com/guile-git/guile-git, Guile-Git}, from August
2017 or later;
-@item @uref{https://savannah.nongnu.org/projects/guile-json/, Guile-JSON};
+@item @uref{https://savannah.nongnu.org/projects/guile-json/, Guile-JSON} 3.x;
@item @url{https://zlib.net, zlib};
@item @url{https://www.gnu.org/software/make/, GNU Make}.
@end itemize
@@ -1911,6 +1915,10 @@ $ wget @value{OPENPGP-SIGNING-KEY-URL} \
@noindent
and rerun the @code{gpg --verify} command.
+
+Take note that a warning like ``This key is not certified with a trusted
+signature!'' is normal.
+
@c end duplication
This image contains the tools necessary for an installation.
@@ -5846,8 +5854,11 @@ should be added to the package definition via the
In its @code{configure} phase, this build system will make any source inputs
specified in the @code{#:cargo-inputs} and @code{#:cargo-development-inputs}
-parameters available to cargo. The @code{install} phase installs any crate
-the binaries if they are defined by the crate.
+parameters available to cargo. The @code{update-cargo-lock} phase will,
+when there is a @code{Cargo.lock} file, update the @code{Cargo.lock} file
+with the inputs and their versions available at build time. The
+@code{install} phase installs any crate the binaries if they are defined by
+the crate.
@end defvr
@cindex Clojure (programming language)
@@ -7431,7 +7442,8 @@ This is the declarative counterpart of @code{gexp->derivation}.
@end deffn
@deffn {Monadic Procedure} gexp->script @var{name} @var{exp} @
- [#:guile (default-guile)] [#:module-path %load-path]
+ [#:guile (default-guile)] [#:module-path %load-path] @
+ [#:system (%current-system)] [#:target #f]
Return an executable script @var{name} that runs @var{exp} using
@var{guile}, with @var{exp}'s imported modules in its search path.
Look up @var{exp}'s modules in @var{module-path}.
@@ -8040,7 +8052,7 @@ guix build --with-branch=guile-sqlite3=master cuirass
@item --with-commit=@var{package}=@var{commit}
This is similar to @code{--with-branch}, except that it builds from
@var{commit} rather than the tip of a branch. @var{commit} must be a valid
-Git commit SHA1 identifier.
+Git commit SHA1 identifier or a tag.
@end table
@node Additional Build Options
diff --git a/gnu/installer.scm b/gnu/installer.scm
index 1452c4dc7e..15d971dfc4 100644
--- a/gnu/installer.scm
+++ b/gnu/installer.scm
@@ -69,7 +69,7 @@ version of this file."
(setlocale LC_ALL "en_US.utf8")))
(define builder
- (with-extensions (list guile-json)
+ (with-extensions (list guile-json-3)
(with-imported-modules (source-module-closure
'((gnu installer locale)))
#~(begin
@@ -313,7 +313,7 @@ selected keymap."
;; packages …), etc. modules.
(with-extensions (list guile-gcrypt guile-newt
guile-parted guile-bytestructures
- guile-json guile-git guix)
+ guile-json-3 guile-git guix)
(with-imported-modules `(,@(source-module-closure
`(,@modules
(gnu services herd)
diff --git a/gnu/installer/locale.scm b/gnu/installer/locale.scm
index 13f3a1e881..ccffb6d8ef 100644
--- a/gnu/installer/locale.scm
+++ b/gnu/installer/locale.scm
@@ -134,16 +134,18 @@ ISO639-3 and ISO639-5 files."
(lambda (port-iso639-5)
(filter-map
(lambda (hash)
- (let ((alpha2 (hash-ref hash "alpha_2"))
- (alpha3 (hash-ref hash "alpha_3"))
- (name (hash-ref hash "name")))
+ (let ((alpha2 (assoc-ref hash "alpha_2"))
+ (alpha3 (assoc-ref hash "alpha_3"))
+ (name (assoc-ref hash "name")))
(and (supported-locale? locales alpha2 alpha3)
`((alpha2 . ,alpha2)
(alpha3 . ,alpha3)
(name . ,name)))))
(append
- (hash-ref (json->scm port-iso639-3) "639-3")
- (hash-ref (json->scm port-iso639-5) "639-5"))))))))
+ (vector->list
+ (assoc-ref (json->scm port-iso639-3) "639-3"))
+ (vector->list
+ (assoc-ref (json->scm port-iso639-5) "639-5")))))))))
(define (language-code->language-name languages language-code)
"Using LANGUAGES as a list of ISO639 association lists, return the language
@@ -179,10 +181,11 @@ ISO3166 file."
(call-with-input-file iso3166
(lambda (port)
(map (lambda (hash)
- `((alpha2 . ,(hash-ref hash "alpha_2"))
- (alpha3 . ,(hash-ref hash "alpha_3"))
- (name . ,(hash-ref hash "name"))))
- (hash-ref (json->scm port) "3166-1")))))
+ `((alpha2 . ,(assoc-ref hash "alpha_2"))
+ (alpha3 . ,(assoc-ref hash "alpha_3"))
+ (name . ,(assoc-ref hash "name"))))
+ (vector->list
+ (assoc-ref (json->scm port) "3166-1"))))))
(define (territory-code->territory-name territories territory-code)
"Using TERRITORIES as a list of ISO3166 association lists return the
diff --git a/gnu/local.mk b/gnu/local.mk
index eb3b0dcd3b..42e79e879a 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -597,6 +597,7 @@ GNU_SYSTEM_MODULES = \
%D%/tests/mail.scm \
%D%/tests/messaging.scm \
%D%/tests/networking.scm \
+ %D%/tests/reconfigure.scm \
%D%/tests/rsync.scm \
%D%/tests/security-token.scm \
%D%/tests/singularity.scm \
@@ -756,6 +757,7 @@ dist_patch_DATA = \
%D%/packages/patches/dfu-programmer-fix-libusb.patch \
%D%/packages/patches/diffutils-gets-undeclared.patch \
%D%/packages/patches/diffutils-getopt.patch \
+ %D%/packages/patches/dkimproxy-add-ipv6-support.patch \
%D%/packages/patches/docbook-xsl-nonrecursive-string-subst.patch \
%D%/packages/patches/doc++-include-directives.patch \
%D%/packages/patches/doc++-segfault-fix.patch \
@@ -770,6 +772,7 @@ dist_patch_DATA = \
%D%/packages/patches/elfutils-tests-ptrace.patch \
%D%/packages/patches/elixir-path-length.patch \
%D%/packages/patches/einstein-build.patch \
+ %D%/packages/patches/emacs-dired-toggle-sudo-emacs-26.patch \
%D%/packages/patches/emacs-exec-path.patch \
%D%/packages/patches/emacs-fix-scheme-indent-function.patch \
%D%/packages/patches/emacs-json-reformat-fix-tests.patch \
@@ -1021,7 +1024,8 @@ dist_patch_DATA = \
%D%/packages/patches/libotr-test-auth-fix.patch \
%D%/packages/patches/libmad-armv7-thumb-pt1.patch \
%D%/packages/patches/libmad-armv7-thumb-pt2.patch \
- %D%/packages/patches/libmad-frame-length.patch \
+ %D%/packages/patches/libmad-length-check.patch \
+ %D%/packages/patches/libmad-md_size.patch \
%D%/packages/patches/libmad-mips-newgcc.patch \
%D%/packages/patches/libmygpo-qt-fix-qt-5.11.patch \
%D%/packages/patches/libmygpo-qt-missing-qt5-modules.patch \
@@ -1162,6 +1166,7 @@ dist_patch_DATA = \
%D%/packages/patches/patchelf-rework-for-arm.patch \
%D%/packages/patches/patchutils-test-perms.patch \
%D%/packages/patches/patch-hurd-path-max.patch \
+ %D%/packages/patches/pcre2-fix-jit_match-crash.patch \
%D%/packages/patches/perl-autosplit-default-time.patch \
%D%/packages/patches/perl-deterministic-ordering.patch \
%D%/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch \
@@ -1301,6 +1306,7 @@ dist_patch_DATA = \
%D%/packages/patches/soundconverter-remove-gconf-dependency.patch \
%D%/packages/patches/sssd-curl-compat.patch \
%D%/packages/patches/steghide-fixes.patch \
+ %D%/packages/patches/strace-ipc-tests.patch \
%D%/packages/patches/streamlink-update-test.patch \
%D%/packages/patches/stumpwm-fix-broken-read-one-line.patch \
%D%/packages/patches/superlu-dist-awpm-grid.patch \
diff --git a/gnu/machine/ssh.scm b/gnu/machine/ssh.scm
index 278d43c10f..552eafa9de 100644
--- a/gnu/machine/ssh.scm
+++ b/gnu/machine/ssh.scm
@@ -17,23 +17,21 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu machine ssh)
- #:use-module (gnu bootloader)
#:use-module (gnu machine)
#:autoload (gnu packages gnupg) (guile-gcrypt)
- #:use-module (gnu services)
- #:use-module (gnu services shepherd)
#:use-module (gnu system)
- #:use-module (guix derivations)
#:use-module (guix gexp)
#:use-module (guix i18n)
#:use-module (guix modules)
#:use-module (guix monads)
#:use-module (guix records)
#:use-module (guix remote)
+ #:use-module (guix scripts system reconfigure)
#:use-module (guix ssh)
#:use-module (guix store)
#:use-module (ice-9 match)
#:use-module (srfi srfi-19)
+ #:use-module (srfi srfi-26)
#:use-module (srfi srfi-35)
#:export (managed-host-environment-type
@@ -105,118 +103,6 @@ an environment type of 'managed-host."
;;; System deployment.
;;;
-(define (switch-to-system machine)
- "Monadic procedure creating a new generation on MACHINE and execute the
-activation script for the new system configuration."
- (define (remote-exp drv script)
- (with-extensions (list guile-gcrypt)
- (with-imported-modules (source-module-closure '((guix config)
- (guix profiles)
- (guix utils)))
- #~(begin
- (use-modules (guix config)
- (guix profiles)
- (guix utils))
-
- (define %system-profile
- (string-append %state-directory "/profiles/system"))
-
- (let* ((system #$drv)
- (number (1+ (generation-number %system-profile)))
- (generation (generation-file-name %system-profile number)))
- (switch-symlinks generation system)
- (switch-symlinks %system-profile generation)
- ;; The implementation of 'guix system reconfigure' saves the
- ;; load path and environment here. This is unnecessary here
- ;; because each invocation of 'remote-eval' runs in a distinct
- ;; Guile REPL.
- (setenv "GUIX_NEW_SYSTEM" system)
- ;; The activation script may write to stdout, which confuses
- ;; 'remote-eval' when it attempts to read a result from the
- ;; remote REPL. We work around this by forcing the output to a
- ;; string.
- (with-output-to-string
- (lambda ()
- (primitive-load #$script))))))))
-
- (let* ((os (machine-system machine))
- (script (operating-system-activation-script os)))
- (mlet* %store-monad ((drv (operating-system-derivation os)))
- (machine-remote-eval machine (remote-exp drv script)))))
-
-;; XXX: Currently, this does NOT attempt to restart running services. This is
-;; also the case with 'guix system reconfigure'.
-;;
-;; See <https://issues.guix.info/issue/33508>.
-(define (upgrade-shepherd-services machine)
- "Monadic procedure unloading and starting services on the remote as needed
-to realize the MACHINE's system configuration."
- (define target-services
- ;; Monadic expression evaluating to a list of (name output-path) pairs for
- ;; all of MACHINE's services.
- (mapm %store-monad
- (lambda (service)
- (mlet %store-monad ((file ((compose lower-object
- shepherd-service-file)
- service)))
- (return (list (shepherd-service-canonical-name service)
- (derivation->output-path file)))))
- (service-value
- (fold-services (operating-system-services (machine-system machine))
- #:target-type shepherd-root-service-type))))
-
- (define (remote-exp target-services)
- (with-imported-modules '((gnu services herd))
- #~(begin
- (use-modules (gnu services herd)
- (srfi srfi-1))
-
- (define running
- (filter live-service-running (current-services)))
-
- (define (essential? service)
- ;; Return #t if SERVICE is essential and should not be unloaded
- ;; under any circumstance.
- (memq (first (live-service-provision service))
- '(root shepherd)))
-
- (define (obsolete? service)
- ;; Return #t if SERVICE can be safely unloaded.
- (and (not (essential? service))
- (every (lambda (requirements)
- (not (memq (first (live-service-provision service))
- requirements)))
- (map live-service-requirement running))))
-
- (define to-unload
- (filter obsolete?
- (remove (lambda (service)
- (memq (first (live-service-provision service))
- (map first '#$target-services)))
- running)))
-
- (define to-start
- (remove (lambda (service-pair)
- (memq (first service-pair)
- (map (compose first live-service-provision)
- running)))
- '#$target-services))
-
- ;; Unload obsolete services.
- (for-each (lambda (service)
- (false-if-exception
- (unload-service service)))
- to-unload)
-
- ;; Load the service files for any new services and start them.
- (load-services/safe (map second to-start))
- (for-each start-service (map first to-start))
-
- #t)))
-
- (mlet %store-monad ((target-services target-services))
- (machine-remote-eval machine (remote-exp target-services))))
-
(define (machine-boot-parameters machine)
"Monadic procedure returning a list of 'boot-parameters' for the generations
of MACHINE's system profile, ordered from most recent to oldest."
@@ -275,71 +161,20 @@ of MACHINE's system profile, ordered from most recent to oldest."
(boot-parameters-kernel-arguments params))))))))
generations))))
-(define (install-bootloader machine)
- "Create a bootloader entry for the new system generation on MACHINE, and
-configure the bootloader to boot that generation by default."
- (define bootloader-installer-script
- (@@ (guix scripts system) bootloader-installer-script))
-
- (define (remote-exp installer bootcfg bootcfg-file)
- (with-extensions (list guile-gcrypt)
- (with-imported-modules (source-module-closure '((gnu build install)
- (guix store)
- (guix utils)))
- #~(begin
- (use-modules (gnu build install)
- (guix store)
- (guix utils))
- (let* ((gc-root (string-append "/" %gc-roots-directory "/bootcfg"))
- (temp-gc-root (string-append gc-root ".new")))
-
- (switch-symlinks temp-gc-root gc-root)
-
- (unless (false-if-exception
- (begin
- ;; The implementation of 'guix system reconfigure'
- ;; saves the load path here. This is unnecessary here
- ;; because each invocation of 'remote-eval' runs in a
- ;; distinct Guile REPL.
- (install-boot-config #$bootcfg #$bootcfg-file "/")
- ;; The installation script may write to stdout, which
- ;; confuses 'remote-eval' when it attempts to read a
- ;; result from the remote REPL. We work around this
- ;; by forcing the output to a string.
- (with-output-to-string
- (lambda ()
- (primitive-load #$installer)))))
- (delete-file temp-gc-root)
- (error "failed to install bootloader"))
-
- (rename-file temp-gc-root gc-root)
- #t)))))
-
- (mlet* %store-monad ((boot-parameters (machine-boot-parameters machine)))
- (let* ((os (machine-system machine))
- (bootloader ((compose bootloader-configuration-bootloader
- operating-system-bootloader)
- os))
- (bootloader-target (bootloader-configuration-target
- (operating-system-bootloader os)))
- (installer (bootloader-installer-script
- (bootloader-installer bootloader)
- (bootloader-package bootloader)
- bootloader-target
- "/"))
- (menu-entries (map boot-parameters->menu-entry boot-parameters))
- (bootcfg (operating-system-bootcfg os menu-entries))
- (bootcfg-file (bootloader-configuration-file bootloader)))
- (machine-remote-eval machine (remote-exp installer bootcfg bootcfg-file)))))
-
(define (deploy-managed-host machine)
"Internal implementation of 'deploy-machine' for MACHINE instances with an
environment type of 'managed-host."
(maybe-raise-unsupported-configuration-error machine)
- (mbegin %store-monad
- (switch-to-system machine)
- (upgrade-shepherd-services machine)
- (install-bootloader machine)))
+ (mlet %store-monad ((boot-parameters (machine-boot-parameters machine)))
+ (let* ((os (machine-system machine))
+ (eval (cut machine-remote-eval machine <>))
+ (menu-entries (map boot-parameters->menu-entry boot-parameters))
+ (bootloader-configuration (operating-system-bootloader os))
+ (bootcfg (operating-system-bootcfg os menu-entries)))
+ (mbegin %store-monad
+ (switch-to-system eval os)
+ (upgrade-shepherd-services eval os)
+ (install-bootloader eval bootloader-configuration bootcfg)))))
;;;
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 99f4d7aded..c3b1e04901 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -913,6 +913,51 @@ by bandwidth they use.")
(base32
"0rmk2p3f2wz1h092anidjclh212rv3gxyk0c641qk3frlrjnw6mp"))))
(build-system perl-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'refer-to-inputs
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* (list "lib/App/ClusterSSH/Config.pm"
+ "t/15config.t")
+ (("xterm")
+ (which "xterm")))
+ #t))
+ (add-before 'check 'delete-failing-tests
+ (lambda _
+ ;; This checks whether all code is nicely formatted. The above
+ ;; ‘refer-to-inputs’ phase breaks this pedantry, so disable it.
+ (delete-file "t/perltidy.t")
+ ;; Update the manifest so t/manifest.t happily passes.
+ (substitute* "MANIFEST"
+ (("t/perltidy.t\n") ""))
+ #t))
+ (add-after 'install 'augment-library-path
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin")))
+ (with-directory-excursion bin
+ (for-each
+ (lambda (program)
+ (wrap-program program
+ `("PERL5LIB" ":" prefix
+ ,(map (lambda (file-name)
+ (string-append file-name
+ "/lib/perl5/site_perl"))
+ (cons out
+ (map (lambda (input)
+ (assoc-ref inputs input))
+ ;; These may be propagated and hence
+ ;; not explicitly listed as inputs.
+ (list "perl-class-data-inheritable"
+ "perl-devel-stacktrace"
+ "perl-exception-class"
+ "perl-tk"
+ "perl-try-tiny"
+ "perl-x11-protocol"
+ "perl-x11-protocol-other")))))))
+ (find-files "." ".*")))
+ #t))))))
(native-inputs
`(("perl-cpan-changes" ,perl-cpan-changes)
("perl-file-slurp" ,perl-file-slurp)
@@ -926,13 +971,14 @@ by bandwidth they use.")
("perl-test-pod-coverage" ,perl-test-pod-coverage)
("perl-test-trap" ,perl-test-trap)
("perltidy" ,perltidy)))
- (propagated-inputs
- `(("xterm" ,xterm)
- ("perl-exception-class" ,perl-exception-class)
+ (inputs
+ `(("perl-exception-class" ,perl-exception-class)
+ ("perl-sort-naturally" ,perl-sort-naturally)
("perl-tk" ,perl-tk)
("perl-try-tiny" ,perl-try-tiny)
("perl-x11-protocol" ,perl-x11-protocol)
- ("perl-x11-protocol-other" ,perl-x11-protocol-other)))
+ ("perl-x11-protocol-other" ,perl-x11-protocol-other)
+ ("xterm" ,xterm)))
;; The clusterssh.sourceforge.net address requires login to view
(home-page "https://sourceforge.net/projects/clusterssh/")
(synopsis "Secure concurrent multi-server terminal control")
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 88fca62e4e..fb9e78bf92 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -344,7 +344,7 @@ precision.")
(define-public giac
(package
(name "giac")
- (version "1.5.0-61")
+ (version "1.5.0-63")
(source (origin
(method url-fetch)
;; "~parisse/giac" is not used because the maintainer regularly
@@ -356,7 +356,7 @@ precision.")
"source/giac_" version ".tar.gz"))
(sha256
(base32
- "050vzpqq77fhky32sbisc0ysimgp60xjv39q7y45jkaabdkmclwh"))))
+ "1jp7awyp8j8w6fhn802z8ddbq1fxhkyk9xdf0mq0mm0chpkylwqk"))))
(build-system gnu-build-system)
(arguments
`(#:modules ((ice-9 ftw)
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index e5a2d66b2d..74af02a47d 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -22,6 +22,7 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix git-download)
#:use-module (guix build-system r)
#:use-module (gnu packages)
#:use-module (gnu packages base)
@@ -37,7 +38,8 @@
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages statistics)
- #:use-module (gnu packages web))
+ #:use-module (gnu packages web)
+ #:use-module (srfi srfi-1))
;;; Annotations
@@ -865,6 +867,34 @@ which were then sequenced to a depth of ~4 million reads per library,
resulting in a complete gene expression profile for each cell.")
(license license:artistic2.0)))
+(define-public r-all
+ (package
+ (name "r-all")
+ (version "1.26.0")
+ (source (origin
+ (method url-fetch)
+ ;; We cannot use bioconductor-uri here because this tarball is
+ ;; located under "data/experiment/" instead of "bioc/".
+ (uri (string-append "https://www.bioconductor.org/packages/"
+ "release/data/experiment/src/contrib/"
+ "ALL_" version ".tar.gz"))
+ (sha256
+ (base32
+ "1z7kpjw4ndj6fkxwvhqf3gawhrn26ksrlns7j2c78qzxqmjndik9"))))
+ (properties `((upstream-name . "ALL")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-biobase" ,r-biobase)))
+ (home-page "https://bioconductor.org/packages/ALL")
+ (synopsis "Acute Lymphoblastic Leukemia data from the Ritz laboratory")
+ (description
+ "The data consist of microarrays from 128 different individuals with
+@dfn{acute lymphoblastic leukemia} (ALL). A number of additional covariates
+are available. The data have been normalized (using rma) and it is the
+jointly normalized data that are available here. The data are presented in
+the form of an @code{exprSet} object.")
+ (license license:artistic2.0)))
+
;;; Packages
@@ -2235,6 +2265,68 @@ tasks on single cell expression data. It is designed to work with RNA-Seq and
qPCR data, but could be used with other types as well.")
(license license:artistic2.0)))
+(define-public r-monocle3
+ (package
+ (name "r-monocle3")
+ (version "0.1.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/cole-trapnell-lab/monocle3.git")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1cjxqfw3qvy269hsf5v80d4kshl932wrl949iayas02saj6f70ls"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-biobase" ,r-biobase)
+ ("r-biocgenerics" ,r-biocgenerics)
+ ("r-delayedmatrixstats" ,r-delayedmatrixstats)
+ ("r-dplyr" ,r-dplyr)
+ ("r-ggplot2" ,r-ggplot2)
+ ("r-ggrepel" ,r-ggrepel)
+ ("r-grr" ,r-grr)
+ ("r-htmlwidgets" ,r-htmlwidgets)
+ ("r-igraph" ,r-igraph)
+ ("r-irlba" ,r-irlba)
+ ("r-limma" ,r-limma)
+ ("r-lmtest" ,r-lmtest)
+ ("r-mass" ,r-mass)
+ ("r-matrix" ,r-matrix)
+ ("r-matrix-utils" ,r-matrix-utils)
+ ("r-pbapply" ,r-pbapply)
+ ("r-pbmcapply" ,r-pbmcapply)
+ ("r-pheatmap" ,r-pheatmap)
+ ("r-plotly" ,r-plotly)
+ ("r-pryr" ,r-pryr)
+ ("r-proxy" ,r-proxy)
+ ("r-pscl" ,r-pscl)
+ ("r-purrr" ,r-purrr)
+ ("r-rann" ,r-rann)
+ ("r-rcpp" ,r-rcpp)
+ ("r-rcppparallel" ,r-rcppparallel)
+ ("r-reshape2" ,r-reshape2)
+ ("r-reticulate" ,r-reticulate)
+ ("r-rhpcblasctl" ,r-rhpcblasctl)
+ ("r-rtsne" ,r-rtsne)
+ ("r-shiny" ,r-shiny)
+ ("r-slam" ,r-slam)
+ ("r-spdep" ,r-spdep)
+ ("r-speedglm" ,r-speedglm)
+ ("r-stringr" ,r-stringr)
+ ("r-singlecellexperiment" ,r-singlecellexperiment)
+ ("r-tibble" ,r-tibble)
+ ("r-tidyr" ,r-tidyr)
+ ("r-uwot" ,r-uwot)
+ ("r-viridis" ,r-viridis)))
+ (home-page "https://github.com/cole-trapnell-lab/monocle3")
+ (synopsis "Analysis toolkit for single-cell RNA-Seq data")
+ (description
+ "Monocle 3 is an analysis toolkit for single-cell RNA-Seq experiments.")
+ (license license:expat)))
+
(define-public r-noiseq
(package
(name "r-noiseq")
@@ -4769,3 +4861,293 @@ read mapping, read counting, SNP calling, structural variant detection and
gene fusion discovery. It can be applied to all major sequencing techologies
and to both short and long sequence reads.")
(license license:gpl3)))
+
+(define-public r-flowutils
+ (package
+ (name "r-flowutils")
+ (version "1.48.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (bioconductor-uri "flowUtils" version))
+ (sha256
+ (base32
+ "1r7b0rszdzjq7jphh65p5m4x5ps0zbbagxl26gn2mapbjdyb47rm"))))
+ (properties `((upstream-name . "flowUtils")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-biobase" ,r-biobase)
+ ("r-corpcor" ,r-corpcor)
+ ("r-flowcore" ,r-flowcore)
+ ("r-graph" ,r-graph)
+ ("r-runit" ,r-runit)
+ ("r-xml" ,r-xml)))
+ (home-page "https://github.com/jspidlen/flowUtils")
+ (synopsis "Utilities for flow cytometry")
+ (description
+ "This package provides utilities for flow cytometry data.")
+ (license license:artistic2.0)))
+
+(define-public r-consensusclusterplus
+ (package
+ (name "r-consensusclusterplus")
+ (version "1.48.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (bioconductor-uri "ConsensusClusterPlus" version))
+ (sha256
+ (base32
+ "1mlcm3wq5n8s0gxs35j0ph9576fhbrbrrsj2xy84fy20prcfs4w8"))))
+ (properties
+ `((upstream-name . "ConsensusClusterPlus")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-all" ,r-all)
+ ("r-biobase" ,r-biobase)
+ ("r-cluster" ,r-cluster)))
+ (home-page "https://bioconductor.org/packages/ConsensusClusterPlus")
+ (synopsis "Clustering algorithm")
+ (description
+ "This package provides an implementation of an algorithm for determining
+cluster count and membership by stability evidence in unsupervised analysis.")
+ (license license:gpl2)))
+
+(define-public r-flowcore
+ (package
+ (name "r-flowcore")
+ (version "1.50.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (bioconductor-uri "flowCore" version))
+ (sha256
+ (base32
+ "0pvcyzycsmgc8iw60q9xnhllfan6ihwpz3gvk8h1n9jmhpxzylan"))))
+ (properties `((upstream-name . "flowCore")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-bh" ,r-bh)
+ ("r-biobase" ,r-biobase)
+ ("r-biocgenerics" ,r-biocgenerics)
+ ("r-corpcor" ,r-corpcor)
+ ("r-graph" ,r-graph)
+ ("r-mass" ,r-mass)
+ ("r-matrixstats" ,r-matrixstats)
+ ("r-rcpp" ,r-rcpp)
+ ("r-rrcov" ,r-rrcov)))
+ (home-page "https://bioconductor.org/packages/flowCore")
+ (synopsis "Basic structures for flow cytometry data")
+ (description
+ "This package provides S4 data structures and basic functions to deal
+with flow cytometry data.")
+ (license license:artistic2.0)))
+
+(define-public r-flowmeans
+ (package
+ (name "r-flowmeans")
+ (version "1.44.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (bioconductor-uri "flowMeans" version))
+ (sha256
+ (base32
+ "0yp6y3mq5h4nf1d7ybqnriigwfmwanrqavpj3ry482sgiaip1hp2"))))
+ (properties `((upstream-name . "flowMeans")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-biobase" ,r-biobase)
+ ("r-feature" ,r-feature)
+ ("r-flowcore" ,r-flowcore)
+ ("r-rrcov" ,r-rrcov)))
+ (home-page "https://bioconductor.org/packages/flowMeans")
+ (synopsis "Non-parametric flow cytometry data gating")
+ (description
+ "This package provides tools to identify cell populations in Flow
+Cytometry data using non-parametric clustering and segmented-regression-based
+change point detection.")
+ (license license:artistic2.0)))
+
+(define-public r-flowsom
+ (package
+ (name "r-flowsom")
+ (version "1.16.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (bioconductor-uri "FlowSOM" version))
+ (sha256
+ (base32
+ "03wl3xk7g7vajc4kkrqa0gsbjfxlqr918qi849h5nir31963398l"))))
+ (properties `((upstream-name . "FlowSOM")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-biocgenerics" ,r-biocgenerics)
+ ("r-consensusclusterplus" ,r-consensusclusterplus)
+ ("r-flowcore" ,r-flowcore)
+ ("r-flowutils" ,r-flowutils)
+ ("r-igraph" ,r-igraph)
+ ("r-tsne" ,r-tsne)
+ ("r-xml" ,r-xml)))
+ (home-page "https://bioconductor.org/packages/FlowSOM/")
+ (synopsis "Visualize and interpret cytometry data")
+ (description
+ "FlowSOM offers visualization options for cytometry data, by using
+self-organizing map clustering and minimal spanning trees.")
+ (license license:gpl2+)))
+
+(define-public r-mixomics
+ (package
+ (name "r-mixomics")
+ (version "6.8.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (bioconductor-uri "mixOmics" version))
+ (sha256
+ (base32
+ "1f08jx35amn3sfcmqb96mjxxsm6dnpzhff625z758x1992wj4zsk"))))
+ (properties `((upstream-name . "mixOmics")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-corpcor" ,r-corpcor)
+ ("r-dplyr" ,r-dplyr)
+ ("r-ellipse" ,r-ellipse)
+ ("r-ggplot2" ,r-ggplot2)
+ ("r-gridextra" ,r-gridextra)
+ ("r-igraph" ,r-igraph)
+ ("r-lattice" ,r-lattice)
+ ("r-mass" ,r-mass)
+ ("r-matrixstats" ,r-matrixstats)
+ ("r-rarpack" ,r-rarpack)
+ ("r-rcolorbrewer" ,r-rcolorbrewer)
+ ("r-reshape2" ,r-reshape2)
+ ("r-tidyr" ,r-tidyr)))
+ (home-page "http://www.mixOmics.org")
+ (synopsis "Multivariate methods for exploration of biological datasets")
+ (description
+ "mixOmics offers a wide range of multivariate methods for the exploration
+and integration of biological datasets with a particular focus on variable
+selection. The package proposes several sparse multivariate models we have
+developed to identify the key variables that are highly correlated, and/or
+explain the biological outcome of interest. The data that can be analysed
+with mixOmics may come from high throughput sequencing technologies, such as
+omics data (transcriptomics, metabolomics, proteomics, metagenomics etc) but
+also beyond the realm of omics (e.g. spectral imaging). The methods
+implemented in mixOmics can also handle missing values without having to
+delete entire rows with missing data.")
+ (license license:gpl2+)))
+
+(define-public r-depecher
+ (package
+ (name "r-depecher")
+ (version "1.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (bioconductor-uri "DepecheR" version))
+ (sha256
+ (base32
+ "0qj2h2a50fncppvi2phh0mbivxkn1mv702mqpi9mvvkf3bzq8m0h"))))
+ (properties `((upstream-name . "DepecheR")))
+ (build-system r-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-syntax-error
+ (lambda _
+ (substitute* "src/Makevars"
+ ((" & ") " && "))
+ #t)))))
+ (propagated-inputs
+ `(("r-beanplot" ,r-beanplot)
+ ("r-biocparallel" ,r-biocparallel)
+ ("r-dosnow" ,r-dosnow)
+ ("r-dplyr" ,r-dplyr)
+ ("r-foreach" ,r-foreach)
+ ("r-ggplot2" ,r-ggplot2)
+ ("r-gplots" ,r-gplots)
+ ("r-mass" ,r-mass)
+ ("r-matrixstats" ,r-matrixstats)
+ ("r-mixomics" ,r-mixomics)
+ ("r-moments" ,r-moments)
+ ("r-rcpp" ,r-rcpp)
+ ("r-rcppeigen" ,r-rcppeigen)
+ ("r-reshape2" ,r-reshape2)
+ ("r-viridis" ,r-viridis)))
+ (home-page "https://bioconductor.org/packages/DepecheR/")
+ (synopsis "Identify traits of clusters in high-dimensional entities")
+ (description
+ "The purpose of this package is to identify traits in a dataset that can
+separate groups. This is done on two levels. First, clustering is performed,
+using an implementation of sparse K-means. Secondly, the generated clusters
+are used to predict outcomes of groups of individuals based on their
+distribution of observations in the different clusters. As certain clusters
+with separating information will be identified, and these clusters are defined
+by a sparse number of variables, this method can reduce the complexity of
+data, to only emphasize the data that actually matters.")
+ (license license:expat)))
+
+(define-public r-cicero
+ (package
+ (name "r-cicero")
+ (version "1.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (bioconductor-uri "cicero" version))
+ (sha256
+ (base32
+ "0f15l8zrh7l7nnvznb66116hvfk15djb9q240vbscm2w0y5fvkcr"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-assertthat" ,r-assertthat)
+ ("r-biobase" ,r-biobase)
+ ("r-biocgenerics" ,r-biocgenerics)
+ ("r-data-table" ,r-data-table)
+ ("r-dplyr" ,r-dplyr)
+ ("r-fnn" ,r-fnn)
+ ("r-genomicranges" ,r-genomicranges)
+ ("r-ggplot2" ,r-ggplot2)
+ ("r-glasso" ,r-glasso)
+ ("r-gviz" ,r-gviz)
+ ("r-igraph" ,r-igraph)
+ ("r-iranges" ,r-iranges)
+ ("r-matrix" ,r-matrix)
+ ("r-monocle" ,r-monocle)
+ ("r-plyr" ,r-plyr)
+ ("r-reshape2" ,r-reshape2)
+ ("r-s4vectors" ,r-s4vectors)
+ ("r-stringr" ,r-stringr)
+ ("r-tibble" ,r-tibble)
+ ("r-vgam" ,r-vgam)))
+ (home-page "https://bioconductor.org/packages/cicero/")
+ (synopsis "Predict cis-co-accessibility from single-cell data")
+ (description
+ "Cicero computes putative cis-regulatory maps from single-cell chromatin
+accessibility data. It also extends the monocle package for use in chromatin
+accessibility data.")
+ (license license:expat)))
+
+;; This is the latest commit on the "monocle3" branch.
+(define-public r-cicero-monocle3
+ (let ((commit "fa2fb6515857a8cfc88bc9af044f34de1bcd2b7b")
+ (revision "1"))
+ (package (inherit r-cicero)
+ (name "r-cicero-monocle3")
+ (version (git-version "1.3.2" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/cole-trapnell-lab/cicero-release.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "077yza93wdhi08n40md20jwk55k9lw1f3y0063qkk90cpz60wi0c"))))
+ (propagated-inputs
+ `(("r-monocle3" ,r-monocle3)
+ ,@(alist-delete "r-monocle"
+ (package-propagated-inputs r-cicero)))))))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 5412440fb1..bcec9cd279 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -13,6 +13,7 @@
;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
;;; Copyright © 2018 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -4206,8 +4207,15 @@ command, or queried for specific k-mers with @code{jellyfish query}.")
(modify-phases %standard-phases
(add-after 'unpack 'set-cc
(lambda _ (setenv "CC" "gcc") #t))
- ;; FIXME: This fails with "permission denied".
- (delete 'reset-gzip-timestamps))))
+
+ (add-before 'reset-gzip-timestamps 'make-files-writable
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Make sure .gz files are writable so that the
+ ;; 'reset-gzip-timestamps' phase can do its work.
+ (let ((out (assoc-ref outputs "out")))
+ (for-each make-file-writable
+ (find-files out "\\.gz$"))
+ #t))))))
(native-inputs
`(("python-cython" ,python-cython)
("python-pytest" ,python-pytest)
@@ -8427,7 +8435,7 @@ library implementing most of the pipeline's features.")
`(("r-minimal" ,r-minimal)
("r-rcas" ,r-rcas)
("guile-next" ,guile-2.2)
- ("guile-json" ,guile-json)
+ ("guile-json" ,guile-json-1)
("guile-redis" ,guile-redis)))
(native-inputs
`(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index d072fc58ad..a014486361 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -73,7 +73,8 @@
#:use-module (srfi srfi-1))
(define %preserved-third-party-files
- '("base/third_party/dmg_fp" ;X11-style
+ '("base/third_party/cityhash" ;Expat
+ "base/third_party/dmg_fp" ;X11-style
"base/third_party/dynamic_annotations" ;BSD-2
"base/third_party/icu" ;Unicode, X11-style
"base/third_party/superfasthash" ;BSD-3
@@ -85,7 +86,7 @@
"courgette/third_party/divsufsort" ;Expat
"net/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+
"net/third_party/nss" ;MPL-2.0
- "net/third_party/quic" ;BSD-3
+ "net/third_party/quiche" ;BSD-3
"net/third_party/uri_template" ;ASL2.0
"third_party/abseil-cpp" ;ASL2.0
"third_party/adobe/flash/flapper_version.h" ;no license, trivial
@@ -105,6 +106,10 @@
"third_party/blink" ;BSD-3, LGPL2+
"third_party/boringssl" ;OpenSSL/ISC (Google additions are ISC)
"third_party/boringssl/src/third_party/fiat" ;Expat
+ "third_party/boringssl/src/third_party/sike" ;Expat
+ ;; XXX: these files are generated by fp-$arch.pl in the above directory.
+ "third_party/boringssl/linux-aarch64/crypto/third_party/sike/asm/fp-armv8.S"
+ "third_party/boringssl/linux-x86_64/crypto/third_party/sike/asm/fp-x86_64.S"
"third_party/breakpad" ;BSD-3
"third_party/brotli" ;Expat
"third_party/cacheinvalidation" ;ASL2.0
@@ -164,6 +169,7 @@
"third_party/nasm" ;BSD-2
"third_party/node" ;Expat
"third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2" ;BSD-2
+ "third_party/openscreen" ;BSD-3
"third_party/ots" ;BSD-3
"third_party/pdfium" ;BSD-3
"third_party/pdfium/third_party/agg23" ;Expat
@@ -182,9 +188,10 @@
"third_party/s2cellid" ;ASL2.0
"third_party/sfntly" ;ASL2.0
"third_party/skia" ;BSD-3
+ "third_party/skia/include/third_party/skcms" ;BSD-3
"third_party/skia/third_party/gif" ;MPL1.1/GPL2+/LGPL2.1+
"third_party/skia/third_party/skcms" ;BSD-3
- "third_party/skia/third_party/vulkan" ;BSD-3
+ "third_party/skia/third_party/vulkanmemoryallocator" ;BSD-3, Expat
"third_party/smhasher" ;Expat, public domain
"third_party/speech-dispatcher" ;GPL2+
"third_party/spirv-headers" ;ASL2.0
@@ -231,9 +238,9 @@ from forcing GEXP-PROMISE."
#:system system
#:guile-for-build guile)))
-(define %chromium-version "75.0.3770.142")
-(define %ungoogled-revision "5d8abc38b43a62f379615a0dc972b29d9aebb4b4")
-(define %debian-revision "debian/75.0.3770.90-1")
+(define %chromium-version "76.0.3809.87")
+(define %ungoogled-revision "6ea939002bae43a27910e03569d43519d07842e7")
+(define %debian-revision "debian/76.0.3809.87-2")
(define package-revision "0")
(define %package-version (string-append %chromium-version "-"
package-revision "."
@@ -247,7 +254,7 @@ from forcing GEXP-PROMISE."
%chromium-version ".tar.xz"))
(sha256
(base32
- "1b550hc9sav0qdnh4hiin2bb3jmfyrb3dhbmnc0v8662rjknq3ji"))))
+ "1521vh38mfgy7aj1lw1vpbdm8m6wyh52d5p7bz4x6kvvxsnacp11"))))
(define %ungoogled-origin
(origin
@@ -258,7 +265,7 @@ from forcing GEXP-PROMISE."
(string-take %ungoogled-revision 7)))
(sha256
(base32
- "1vk8jzzsn20ysn4nlz84mwwhfa9nnywzd1lrahlhcky9pf6xzpwa"))))
+ "1nhrh9fn1appbxf8d3dg49jrqjvha721s89i60s4m63d037cifzr"))))
(define %debian-origin
(origin
@@ -272,7 +279,29 @@ from forcing GEXP-PROMISE."
(string-take %debian-revision 7))))
(sha256
(base32
- "0sh6z2lx44zb31qrpa29vm0sw09dxi7i9h6fsq3ivfxjs7v98bbx"))))
+ "1fjhpzrxmgjr7i31li1vsfmp0qkbi0cpyc7p1zjwvf2x4da0v907"))))
+
+(define (gentoo-patch name hash revision)
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://gitweb.gentoo.org/repo/gentoo.git/plain"
+ "/www-client/chromium/files/" name "?id=" revision))
+ (file-name name)
+ (sha256 (base32 hash))))
+
+(define-syntax-rule (gentoo-patches (name hash) ...)
+ (list (gentoo-patch name hash "9fd80e7d75aa63843ec33c9d44fee32596ae8f25")
+ ...))
+
+(define %auxiliary-patches
+ ;; XXX: Debians "gcc/wrong-namespace.patch" and "fixes/inspector.patch" does
+ ;; not work for us, so we take these upstream fixes via Gentoo instead.
+ (gentoo-patches
+ ("chromium-76-quiche.patch" "1cs0y16jn7r1nxh0j36vqcsdvigl902kdcqfmyivnxgblrx66l2i")
+ ("chromium-76-gcc-blink-namespace1.patch"
+ "0k7nrn0dhvqxj4sg2gndzxih0l1f77h6pv7jhcdz7h69sm4xci2z")
+ ("chromium-76-gcc-blink-namespace2.patch"
+ "014y2d8ii9sr340sjbv1fhsjd5s3dl0vbmq5wzlkdjsp91dcn9ch")))
;; This is a "computed" origin that does the following:
;; *) Runs the Ungoogled scripts on a pristine Chromium tarball.
@@ -314,6 +343,12 @@ from forcing GEXP-PROMISE."
(force-output)
(invoke "tar" "xf" #+chromium-source)
+ ;; Ungoogled-Chromium contains a forked subset of the Debian
+ ;; patches. Disable those, as we apply newer versions later.
+ (substitute* "patches/series"
+ ((".*/debian_buster/.*")
+ ""))
+
(format #t "Ungooglifying...~%")
(force-output)
(invoke "python3" "utils/prune_binaries.py" chromium-dir
@@ -330,16 +365,7 @@ from forcing GEXP-PROMISE."
(force-output)
(let* ((debian #+debian-source)
(patches (string-append debian "/debian/patches"))
- (series (string-append patches "/series"))
- (grep-q (lambda (query file)
- (with-input-from-file file
- (lambda ()
- (let loop ((line (read-line))
- (match #f))
- (if (or match (eof-object? line))
- (if match #t #f)
- (loop (read-line)
- (string-contains line query)))))))))
+ (series (string-append patches "/series")))
(with-input-from-file series
(lambda ()
(let loop ((line (read-line)))
@@ -347,19 +373,35 @@ from forcing GEXP-PROMISE."
(when (and (> (string-length line) 1)
;; Skip the Debian-specific ones.
(not (string-prefix? "debianization/" line))
+ (not (string-prefix? "buster/" line))
;; And those that conflict with Ungoogled.
(not (any (cute string-suffix? <> line)
'("widevine-buildflag.patch"
"signin.patch"
- "third-party-cookies.patch")))
- ;; Ungoogled includes a subset of the Debian
- ;; patches. Exclude those already present.
- (not (grep-q line "../patches/series")))
+ "third-party-cookies.patch"
+
+ ;; XXX: 'fixes/inspector.patch'
+ ;; makes v8 reuse the top-level
+ ;; third_party/inspector_protocol
+ ;; instead of its own bundled copy,
+ ;; but that does not work here for
+ ;; some reason. Ignore that patch
+ ;; and those that depend on it.
+ "wrong-namespace.patch"
+ "explicit-specialization.patch"
+ "inspector.patch"))))
(invoke "patch" "--force" "-p1" "--input"
(string-append patches "/" line)
"--no-backup-if-mismatch"))
(loop (read-line)))))))
+ (format #t "Applying Guix-specific patches...~%")
+ (force-output)
+ (for-each (lambda (patch)
+ (invoke "patch" "--force" "-p1" "--input"
+ patch "--no-backup-if-mismatch"))
+ '#+%auxiliary-patches)
+
(format #t "Pruning third party files...~%")
(force-output)
(apply invoke "python"
@@ -458,7 +500,6 @@ from forcing GEXP-PROMISE."
"is_clang=false"
;; Disable debugging features to save space. These are normally
;; pulled in by "is_official_build", but that requires "is_clang".
- "blink_symbol_level=0"
"enable_iterator_debugging=false"
"exclude_unwind_tables=true"
;; Optimize for building everything at once, as opposed to
@@ -488,7 +529,7 @@ from forcing GEXP-PROMISE."
'("use_vaapi=true")
'())
- ;; Don't arbitrarily restrict formats supported by system ffmpeg.
+ ;; Do not artifically restrict formats supported by system ffmpeg.
"proprietary_codecs=true"
"ffmpeg_branding=\"Chrome\""
@@ -561,12 +602,12 @@ from forcing GEXP-PROMISE."
(substitute* "third_party/webrtc/rtc_base/strings/json.h"
(("#include \"third_party/jsoncpp/") "#include \"json/"))
- (substitute* '("ui/gfx/skia_util.h"
+ (substitute* '("components/viz/common/gpu/vulkan_context_provider.h"
"components/viz/common/resources/resource_format_utils.h")
(("third_party/vulkan/include/") ""))
(substitute* "third_party/skia/include/gpu/vk/GrVkVulkan.h"
- (("\\.\\./\\.\\./include/third_party/vulkan/") ""))
+ (("include/third_party/vulkan/") ""))
;; Building chromedriver embeds some files using the ZIP
;; format which doesn't support timestamps before
@@ -587,6 +628,9 @@ from forcing GEXP-PROMISE."
(setenv "AR" "ar") (setenv "NM" "nm")
(setenv "CC" "gcc") (setenv "CXX" "g++")
+ ;; Prevent GCC from optimizing away null pointer safety checks.
+ (setenv "CXXFLAGS" "-fno-delete-null-pointer-checks")
+
;; Work around <https://bugs.gnu.org/30756>.
(unsetenv "C_INCLUDE_PATH")
(unsetenv "CPLUS_INCLUDE_PATH")
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index eb5f665fc1..4af2cdc6ea 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -121,7 +121,7 @@
`(("guile" ,guile-2.2)
("guile-fibers" ,guile-fibers)
("guile-gcrypt" ,guile-gcrypt)
- ("guile-json" ,guile-json)
+ ("guile-json" ,guile-json-1)
("guile-sqlite3" ,guile-sqlite3)
("guile-git" ,guile-git)
;; FIXME: this is propagated by "guile-git", but it needs to be among
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index d821298e56..9834fcbe63 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm