aboutsummaryrefslogtreecommitdiff
# -*- mode: snippet -*-
# name: guix-commit-message-rename-package
# key: rename
# condition: git-commit-mode
# --
gnu: ${1:`(with-temp-buffer
           (magit-git-wash #'magit-diff-wash-diffs
             "diff" "--staged")
           (beginning-of-buffer)
           (when (search-forward "-(define-public " nil 'noerror)
             (thing-at-point 'sexp 'no-properties)))`}: Rename package to ${2:`(with-temp-buffer
           (magit-git-wash #'magit-diff-wash-diffs
             "diff" "--staged")
           (beginning-of-buffer)
           (when (search-forward "+(define-public " nil 'noerror)
             (thing-at-point 'sexp 'no-properties)))`}.

* `(car (magit-staged-files))` ($1): Define in terms of
'deprecated-package'.
($2): New variable, formerly known as "$1".
bmit' value='reload'/>
authorMarius Bakke <mbakke@fastmail.com>2020-03-10 20:50:02 +0100
committerMarius Bakke <mbakke@fastmail.com>2020-03-10 20:50:02 +0100
commit50b99c90c87642f664f9c9523a6e40fc8542ddcf (patch)
tree9fc8845e93ba913730e5fb92bbad158716d84e74
parentbda4b5e0453e4c8feda24306b4aa76ad5406eb7d (diff)
parent21656ffa3b6d78a610f0befced20cc9b4b3baab6 (diff)
downloadguix-50b99c90c87642f664f9c9523a6e40fc8542ddcf.tar.gz
guix-50b99c90c87642f664f9c9523a6e40fc8542ddcf.zip
Merge branch 'master' into core-updates
Diffstat
-rw-r--r--Makefile.am8
-rw-r--r--build-aux/git-authenticate.scm6
-rw-r--r--build-aux/hydra/gnu-system.scm4
-rw-r--r--build-aux/hydra/guix-modular.scm4
-rw-r--r--build-aux/run-system-tests.scm115
-rw-r--r--doc/contributing.texi28
-rw-r--r--doc/fdl-1.3.texi4
-rw-r--r--doc/guix.texi32
-rw-r--r--etc/system-tests.scm94
-rw-r--r--gnu/ci.scm125
-rw-r--r--gnu/installer.scm21
-rw-r--r--gnu/installer/final.scm98
-rw-r--r--gnu/installer/newt/final.scm40
-rw-r--r--gnu/installer/newt/network.scm10
-rw-r--r--gnu/installer/newt/page.scm587
-rw-r--r--gnu/installer/newt/partition.scm8
-rw-r--r--gnu/installer/newt/user.scm64
-rw-r--r--gnu/installer/newt/welcome.scm44
-rw-r--r--gnu/installer/steps.scm25
-rw-r--r--gnu/installer/tests.scm340
-rw-r--r--gnu/installer/utils.scm158
-rw-r--r--gnu/local.mk13
-rw-r--r--gnu/packages/admin.scm4
-rw-r--r--gnu/packages/assembly.scm2
-rw-r--r--gnu/packages/audio.scm61
-rw-r--r--gnu/packages/bioconductor.scm24
-rw-r--r--gnu/packages/bioinformatics.scm90
-rw-r--r--gnu/packages/ccache.scm23
-rw-r--r--gnu/packages/chemistry.scm5
-rw-r--r--gnu/packages/chromium.scm4
-rw-r--r--gnu/packages/compression.scm53
-rw-r--r--gnu/packages/coq.scm3
-rw-r--r--gnu/packages/cpp.scm2
-rw-r--r--gnu/packages/cran.scm139
-rw-r--r--gnu/packages/crates-io.scm4
-rw-r--r--gnu/packages/cups.scm6
-rw-r--r--gnu/packages/databases.scm35
-rw-r--r--gnu/packages/debug.scm71
-rw-r--r--gnu/packages/dictionaries.scm2
-rw-r--r--gnu/packages/dns.scm8
-rw-r--r--gnu/packages/education.scm6
-rw-r--r--gnu/packages/emacs-xyz.scm98
-rw-r--r--gnu/packages/engineering.scm2
-rw-r--r--gnu/packages/finance.scm8
-rw-r--r--gnu/packages/fonts.scm47
-rw-r--r--gnu/packages/fontutils.scm101
-rw-r--r--gnu/packages/freedesktop.scm1
-rw-r--r--gnu/packages/game-development.scm2
-rw-r--r--gnu/packages/games.scm2
-rw-r--r--gnu/packages/geo.scm64
-rw-r--r--gnu/packages/gkrellm.scm7
-rw-r--r--gnu/packages/gnome.scm153
-rw-r--r--gnu/packages/gnuzilla.scm12
-rw-r--r--gnu/packages/golang.scm2
-rw-r--r--gnu/packages/guile-xyz.scm50
-rw-r--r--gnu/packages/guile.scm27
-rw-r--r--gnu/packages/haskell-apps.scm6
-rw-r--r--gnu/packages/idris.scm2
-rw-r--r--gnu/packages/image.scm4
-rw-r--r--gnu/packages/java.scm36
-rw-r--r--gnu/packages/kde-multimedia.scm4
-rw-r--r--gnu/packages/kde-pim.scm55
-rw-r--r--gnu/packages/kde-systemtools.scm12
-rw-r--r--gnu/packages/kerberos.scm2
-rw-r--r--gnu/packages/linux.scm35
-rw-r--r--gnu/packages/lisp-xyz.scm109
-rw-r--r--gnu/packages/machine-learning.scm10
-rw-r--r--gnu/packages/mail.scm12
-rw-r--r--gnu/packages/man.scm4
-rw-r--r--gnu/packages/maths.scm50
-rw-r--r--gnu/packages/messaging.scm2
-rw-r--r--gnu/packages/music.scm60
-rw-r--r--gnu/packages/networking.scm2
-rw-r--r--gnu/packages/ntp.scm8
-rw-r--r--gnu/packages/package-management.scm10
-rw-r--r--gnu/packages/patches/akonadi-Revert-Make-installation-properly-relo.patch (renamed from gnu/packages/patches/akonadi-Revert-Make-installation-properly-relocatabl.patch)0
-rw-r--r--gnu/packages/patches/anki-mpv-args.patch42
-rw-r--r--gnu/packages/patches/csvkit-fix-tests.patch45
-rw-r--r--gnu/packages/patches/guile-3.0-crash.patch17
-rw-r--r--gnu/packages/patches/icecat-makeicecat.patch4
-rw-r--r--gnu/packages/patches/libseccomp-open-aarch64.patch27
-rw-r--r--gnu/packages/patches/qemu-CVE-2020-8608.patch269
-rw-r--r--gnu/packages/patches/sdl-pango-fix-explicit-SDLPango_CopyFTBitmapTo.patch (renamed from gnu/packages/patches/sdl-pango-fix-explicit-SDLPango_CopyFTBitmapToSurface.patch)0
-rw-r--r--gnu/packages/patches/spice-fix-test-armhf.patch19
-rw-r--r--gnu/packages/patches/suitesparse-mongoose-cmake.patch27
-rw-r--r--gnu/packages/patches/woff2-libbrotli.patch84
-rw-r--r--gnu/packages/perl.scm93
-rw-r--r--gnu/packages/plotutils.scm2
-rw-r--r--gnu/packages/pretty-print.scm12
-rw-r--r--gnu/packages/python-web.scm6
-rw-r--r--gnu/packages/python-xyz.scm359
-rw-r--r--gnu/packages/re2c.scm2
-rw-r--r--gnu/packages/rust-apps.scm7
-rw-r--r--gnu/packages/samba.scm88
-rw-r--r--gnu/packages/scheme.scm4
-rw-r--r--gnu/packages/sdl.scm2
-rw-r--r--gnu/packages/shells.scm2
-rw-r--r--gnu/packages/skarnet.scm26
-rw-r--r--gnu/packages/slang.scm2
-rw-r--r--gnu/packages/sphinx.scm26
-rw-r--r--gnu/packages/spice.scm11
-rw-r--r--gnu/packages/statistics.scm39
-rw-r--r--gnu/packages/telephony.scm7
-rw-r--r--gnu/packages/terminals.scm8
-rw-r--r--gnu/packages/toys.scm36
-rw-r--r--gnu/packages/unicode.scm2
-rw-r--r--gnu/packages/version-control.scm41
-rw-r--r--gnu/packages/video.scm4
-rw-r--r--gnu/packages/vim.scm25
-rw-r--r--gnu/packages/virtualization.scm5
-rw-r--r--gnu/packages/web-browsers.scm12
-rw-r--r--gnu/packages/web.scm29
-rw-r--r--gnu/packages/wireservice.scm8
-rw-r--r--gnu/packages/wm.scm2
-rw-r--r--gnu/packages/xdisorg.scm2
-rw-r--r--gnu/packages/xfce.scm24
-rw-r--r--gnu/packages/xml.scm2
-rw-r--r--gnu/services/base.scm6
-rw-r--r--gnu/services/certbot.scm12
-rw-r--r--gnu/services/cuirass.scm13
-rw-r--r--gnu/services/guix.scm15
-rw-r--r--gnu/services/nfs.scm1
-rw-r--r--gnu/system.scm8
-rw-r--r--gnu/system/vm.scm5
-rw-r--r--gnu/tests.scm8
-rw-r--r--gnu/tests/base.scm23
-rw-r--r--gnu/tests/docker.scm4
-rw-r--r--gnu/tests/install.scm204
-rw-r--r--gnu/tests/mail.scm96
-rw-r--r--gnu/tests/monitoring.scm7
-rw-r--r--guix/download.scm1
-rw-r--r--guix/import/cran.scm9
-rw-r--r--guix/scripts.scm2
-rw-r--r--guix/scripts/build.scm24
-rw-r--r--guix/scripts/weather.scm41
-rw-r--r--po/doc/local.mk4
-rw-r--r--tests/guix-build.sh13
137 files changed, 3812 insertions, 1475 deletions
diff --git a/Makefile.am b/Makefile.am
index 5422172e64..f595a54fa9 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU
-# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2013 Andreas Enge <andreas@enge.fr>
# Copyright © 2015, 2017 Alex Kost <alezost@gmail.com>
# Copyright © 2016, 2018 Mathieu Lirzin <mthl@gnu.org>
@@ -511,9 +511,7 @@ endif !CAN_RUN_TESTS
check-system: $(GOBJECTS)
$(AM_V_at)$(top_builddir)/pre-inst-env \
- $(GUILE) --no-auto-compile \
- -e '(@@ (run-system-tests) run-system-tests)' \
- $(top_srcdir)/build-aux/run-system-tests.scm
+ guix build -m $(top_srcdir)/etc/system-tests.scm -K
# Public keys used to sign substitutes.
dist_pkgdata_DATA = \
@@ -544,6 +542,7 @@ EXTRA_DIST += \
scripts/guix.in \
etc/guix-install.sh \
etc/news.scm \
+ etc/system-tests.scm \
build-aux/build-self.scm \
build-aux/compile-all.scm \
build-aux/hydra/evaluate.scm \
@@ -561,7 +560,6 @@ EXTRA_DIST += \
build-aux/test-driver.scm \
build-aux/update-guix-package.scm \
build-aux/update-NEWS.scm \
- build-aux/run-system-tests.scm \
d3.v3.js \
graph.js \
tests/test.drv \
diff --git a/build-aux/git-authenticate.scm b/build-aux/git-authenticate.scm
index 640dedbff5..514d201c80 100644
--- a/build-aux/git-authenticate.scm
+++ b/build-aux/git-authenticate.scm
@@ -169,8 +169,12 @@
"BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAC")
("rhelling"
"0154 E1B9 1CC9 D9EF 7764 8DE7 F3A7 27DB 44FC CA36")
- ("roelj"
+ ("roelj (old)"
"17CB 2812 EB63 3DFF 2C7F 0452 C3EC 1DCA 8430 72E1")
+ ("roelj"
+ ;; From commit cc51c03ff867d4633505354819c6d88af88bf919 (March 2020).
+ ;; See <https://lists.gnu.org/archive/html/guix-devel/2020-03/msg00070.html>.
+ "F556 FD94 FB8F 8B87 79E3 6832 CBD0 CD51 38C1 9AFC")
("roptat (old)"
"B5FA E628 5B41 3728 B2A0 FAED 4311 1F45 2008 6A0C")
("roptat"
diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm
index f54302cf63..4afdb48903 100644
--- a/build-aux/hydra/gnu-system.scm
+++ b/build-aux/hydra/gnu-system.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018, 2019 Clément Lassieur <clement@lassieur.org>
;;;
@@ -31,7 +31,7 @@
;; XXX: Debugging hack: since `hydra-eval-guile-jobs' redirects the output
;; port to the bit bucket, let us write to the error port instead.
-(setvbuf (current-error-port) _IOLBF)
+(setvbuf (current-error-port) 'line)
(set-current-output-port (current-error-port))
(define (find-current-checkout arguments)
diff --git a/build-aux/hydra/guix-modular.scm b/build-aux/hydra/guix-modular.scm
index 9ff9e090fc..8e07e7cd01 100644
--- a/build-aux/hydra/guix-modular.scm
+++ b/build-aux/hydra/guix-modular.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017, 2018, 2020 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -33,7 +33,7 @@
;; XXX: Debugging hack: since `hydra-eval-guile-jobs' redirects the output
;; port to the bit bucket, let us write to the error port instead.
-(setvbuf (current-error-port) _IOLBF)
+(setvbuf (current-error-port) 'line)
(set-current-output-port (current-error-port))
(define* (build-job store source version system)
diff --git a/build-aux/run-system-tests.scm b/build-aux/run-system-tests.scm
deleted file mode 100644
index b0cb3bd2bf..0000000000
--- a/build-aux/run-system-tests.scm
+++ /dev/null
@@ -1,115 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016, 2018, 2019 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 (run-system-tests)
- #:use-module (gnu tests)
- #:use-module (gnu packages package-management)
- #:use-module ((gnu ci) #:select (channel-instance->package))
- #:use-module (guix store)
- #:use-module ((guix status) #:select (with-status-verbosity))
- #:use-module (guix monads)
- #:use-module (guix channels)
- #:use-module (guix derivations)
- #:use-module ((guix git-download) #:select (git-predicate))
- #:use-module (guix utils)
- #:use-module (guix ui)
- #:use-module (srfi srfi-1)
- #:use-module (srfi srfi-34)
- #:use-module (ice-9 match)
- #:export (run-system-tests))
-
-(define (built-derivations* drv)
- (lambda (store)
- (guard (c ((store-protocol-error? c)
- (values #f store)))
- (values (build-derivations store drv) store))))
-
-(define (filterm mproc lst) ;XXX: move to (guix monads)
- (with-monad %store-monad
- (>>= (foldm %store-monad
- (lambda (item result)
- (mlet %store-monad ((keep? (mproc item)))
- (return (if keep?
- (cons item result)
- result))))
- '()
- lst)
- (lift1 reverse %store-monad))))
-
-(define (tests-for-channel-instance instance)
- "Return a list of tests for perform, using Guix from INSTANCE, a channel
-instance."
- ;; Honor the 'TESTS' environment variable so that one can select a subset
- ;; of tests to run in the usual way:
- ;;
- ;; make check-system TESTS=installed-os
- (parameterize ((current-guix-package
- (channel-instance->package instance)))
- (match (getenv "TESTS")
- (#f
- (all-system-tests))
- ((= string-tokenize (tests ...))
- (filter (lambda (test)
- (member (system-test-name test) tests))
- (all-system-tests))))))
-
-
-
-(define (run-system-tests . args)
- (define source
- (string-append (current-source-directory) "/.."))
-
- (with-store store
- (with-status-verbosity 2
- (run-with-store store
- ;; Intern SOURCE so that 'build-from-source' in (guix channels) sees
- ;; "fresh" file names and thus doesn't find itself loading .go files
- ;; from ~/.cache/guile when it loads 'build-aux/build-self.scm'.
- ;; XXX: It would be best to not do it upfront because we may need it.
- (mlet* %store-monad ((source (interned-file source "guix-source"
- #:recursive? #t
- #:select?
- (or (git-predicate source)
- (const #t))))
- (instance -> (checkout->channel-instance source))
- (tests -> (tests-for-channel-instance instance))
- (drv (mapm %store-monad system-test-value tests))
- (out -> (map derivation->output-path drv)))
- (format (current-error-port) "Running ~a system tests...~%"
- (length tests))
-
- (mbegin %store-monad
- (show-what-to-build* drv)
- (set-build-options* #:keep-going? #t #:keep-failed? #t
- #:print-build-trace #t
- #:print-extended-build-trace? #t
- #:fallback? #t)
- (built-derivations* drv)
- (mlet %store-monad ((valid (filterm (store-lift valid-path?)
- out))
- (failed (filterm (store-lift
- (negate valid-path?))
- out)))
- (format #t "TOTAL: ~a\n" (length drv))
- (for-each (lambda (item)
- (format #t "PASS: ~a~%" item))
- valid)
- (for-each (lambda (item)
- (format #t "FAIL: ~a~%" item))
- failed)
- (exit (null? failed)))))))))
diff --git a/doc/contributing.texi b/doc/contributing.texi
index 9d45becf86..afcc030b4f 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -12,7 +12,7 @@ particularly welcome help on packaging (@pxref{Packaging Guidelines}).
We want to provide a warm, friendly, and harassment-free environment, so
that anyone can contribute to the best of their abilities. To this end
our project uses a ``Contributor Covenant'', which was adapted from
-@url{http://contributor-covenant.org/}. You can find a local version in
+@url{https://contributor-covenant.org/}. You can find a local version in
the @file{CODE-OF-CONDUCT} file in the source tree.
Contributors are not required to use their legal name in patches and
@@ -98,12 +98,12 @@ following are the required packages in addition to those mentioned in the
installation instructions (@pxref{Requirements}).
@itemize
-@item @url{http://gnu.org/software/autoconf/, GNU Autoconf};
-@item @url{http://gnu.org/software/automake/, GNU Automake};
-@item @url{http://gnu.org/software/gettext/, GNU Gettext};
-@item @url{http://gnu.org/software/texinfo/, GNU Texinfo};
-@item @url{http://www.graphviz.org/, Graphviz};
-@item @url{http://www.gnu.org/software/help2man/, GNU Help2man (optional)}.
+@item @url{https://gnu.org/software/autoconf/, GNU Autoconf};
+@item @url{https://gnu.org/software/automake/, GNU Automake};
+@item @url{https://gnu.org/software/gettext/, GNU Gettext};
+@item @url{https://gnu.org/software/texinfo/, GNU Texinfo};
+@item @url{https://www.graphviz.org/, Graphviz};
+@item @url{https://www.gnu.org/software/help2man/, GNU Help2man (optional)}.
@end itemize
On Guix, extra dependencies can be added by instead running @command{guix
@@ -217,8 +217,8 @@ you want to upgrade your local source tree.
The Perfect Setup to hack on Guix is basically the perfect setup used
for Guile hacking (@pxref{Using Guile in Emacs,,, guile, Guile Reference
Manual}). First, you need more than an editor, you need
-@url{http://www.gnu.org/software/emacs, Emacs}, empowered by the
-wonderful @url{http://nongnu.org/geiser/, Geiser}. To set that up, run:
+@url{https://www.gnu.org/software/emacs, Emacs}, empowered by the
+wonderful @url{https://nongnu.org/geiser/, Geiser}. To set that up, run:
@example
guix package -i emacs guile emacs-geiser
@@ -250,7 +250,7 @@ s-expression, etc.
@cindex reducing boilerplate
We also provide templates for common git commit messages and package
definitions in the @file{etc/snippets} directory. These templates can
-be used with @url{http://joaotavora.github.io/yasnippet/, YASnippet} to
+be used with @url{https://joaotavora.github.io/yasnippet/, YASnippet} to
expand short trigger strings to interactive text snippets. You may want
to add the snippets directory to the @var{yas-snippet-dirs} variable in
Emacs.
@@ -385,14 +385,14 @@ needed is to review and apply the patch.
@cindex free software
The GNU operating system has been developed so that users can have
freedom in their computing. GNU is @dfn{free software}, meaning that
-users have the @url{http://www.gnu.org/philosophy/free-sw.html,four
+users have the @url{https://www.gnu.org/philosophy/free-sw.html,four
essential freedoms}: to run the program, to study and change the program
in source code form, to redistribute exact copies, and to distribute
modified versions. Packages found in the GNU distribution provide only
software that conveys these four freedoms.
In addition, the GNU distribution follow the
-@url{http://www.gnu.org/distros/free-system-distribution-guidelines.html,free
+@url{https://www.gnu.org/distros/free-system-distribution-guidelines.html,free
software distribution guidelines}. Among other things, these guidelines
reject non-free firmware, recommendations of non-free software, and
discuss ways to deal with trademarks and patents.
@@ -571,7 +571,7 @@ such as @command{guix package --show} take care of rendering it
appropriately.
Synopses and descriptions are translated by volunteers
-@uref{http://translationproject.org/domain/guix-packages.html, at the
+@uref{https://translationproject.org/domain/guix-packages.html, at the
Translation Project} so that as many users as possible can read them in
their native language. User interfaces search them and display them in
the language specified by the current locale.
@@ -838,7 +838,7 @@ especially when matching lists.
@cindex coding style
When writing Scheme code, we follow common wisdom among Scheme
programmers. In general, we follow the
-@url{http://mumble.net/~campbell/scheme/style.txt, Riastradh's Lisp
+@url{https://mumble.net/~campbell/scheme/style.txt, Riastradh's Lisp
Style Rules}. This document happens to describe the conventions mostly
used in Guile’s code too. It is very thoughtful and well written, so
please do read it.
diff --git a/doc/fdl-1.3.texi b/doc/fdl-1.3.texi
index cb71f05a17..11dc812753 100644
--- a/doc/fdl-1.3.texi
+++ b/doc/fdl-1.3.texi
@@ -6,7 +6,7 @@
@display
Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-@uref{http://fsf.org/}
+@uref{https://fsf.org/}
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -414,7 +414,7 @@ The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
-@uref{http://www.gnu.org/copyleft/}.
+@uref{https://www.gnu.org/copyleft/}.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
diff --git a/doc/guix.texi b/doc/guix.texi
index fab9159530..eb6eb99361 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -74,6 +74,7 @@ Copyright @copyright{} 2019, 2020 Simon Tournier@*
Copyright @copyright{} 2020 Wiktor Żelazny@*
Copyright @copyright{} 2020 Damien Cassou@*
Copyright @copyright{} 2020 Jakub Kądziołka@*
+Copyright @copyright{} 2020 Jack Hill@*
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -6777,7 +6778,7 @@ linux-module-build-system, use the key #:linux to specify it).
@defvr {Scheme Variable} node-build-system
This variable is exported by @code{(guix build-system node)}. It
-implements the build procedure used by @uref{http://nodejs.org,
+implements the build procedure used by @uref{https://nodejs.org,
Node.js}, which implements an approximation of the @code{npm install}
command, followed by an @code{npm test} command.
@@ -13350,7 +13351,7 @@ The ModemManager package to use.
@defvr {Scheme Variable} usb-modeswitch-service-type
This is the service type for the
-@uref{http://www.draisberghof.de/usb_modeswitch/, USB_ModeSwitch} service. The
+@uref{https://www.draisberghof.de/usb_modeswitch/, USB_ModeSwitch} service. The
value for this service type is a @code{usb-modeswitch-configuration} record.
When plugged in, some USB modems (and other USB devices) initially present
@@ -13595,7 +13596,7 @@ The nftables ruleset to use. This may be any ``file-like'' object
@cindex ntpd, service for the Network Time Protocol daemon
@cindex real time clock
@defvr {Scheme Variable} ntp-service-type
-This is the type of the service running the @uref{http://www.ntp.org,
+This is the type of the service running the @uref{https://www.ntp.org,
Network Time Protocol (NTP)} daemon, @command{ntpd}. The daemon will keep the
system clock synchronized with that of the specified NTP servers.
@@ -14233,7 +14234,7 @@ Its value must be a @code{zero-configuration} record---see below.
This service extends the name service cache daemon (nscd) so that it can
resolve @code{.local} host names using
-@uref{http://0pointer.de/lennart/projects/nss-mdns/, nss-mdns}. @xref{Name
+@uref{https://0pointer.de/lennart/projects/nss-mdns/, nss-mdns}. @xref{Name
Service Switch}, for information on host name resolution.
Additionally, add the @var{avahi} package to the system profile so that
@@ -16052,7 +16053,7 @@ Data type representing the configuration for @code{alsa-service}.
@item @code{pulseaudio?} (default: @var{#t})
Whether ALSA applications should transparently be made to use the
-@uref{http://www.pulseaudio.org/, PulseAudio} sound server.
+@uref{https://www.pulseaudio.org/, PulseAudio} sound server.
Using PulseAudio allows you to run several sound-producing applications
at the same time and to individual control them @i{via}
@@ -16100,7 +16101,7 @@ See @uref{https://www.alsa-project.org/main/index.php/Asoundrc} for the
details.
@deffn {Scheme Variable} pulseaudio-service-type
-This is the type for the @uref{http://www.pulseaudio.org/, PulseAudio}
+This is the type for the @uref{https://www.pulseaudio.org/, PulseAudio}
sound server. It exists to allow system overrides of the default settings
via @code{pulseaudio-configuration}, see below.
@@ -20398,7 +20399,7 @@ configuration. Otherwise this must be a file-like object with valid
VCL syntax.
@c Varnish does not support HTTPS, so keep this URL to avoid confusion.
-For example, to mirror @url{http://www.gnu.org,www.gnu.org} with VCL you
+For example, to mirror @url{https://www.gnu.org,www.gnu.org} with VCL you
can do something along these lines:
@lisp
@@ -21008,6 +21009,10 @@ and several @code{domains}.
Mandatory email used for registration, recovery contact, and important
account notifications.
+@item @code{server} (default: @code{#f})
+Optional URL of ACME server. Setting this overrides certbot's default,
+which is the Let's Encrypt server.
+
@item @code{rsa-key-size} (default: @code{2048})
Size of the RSA key.
@@ -22445,6 +22450,9 @@ Only evaluate specifications and build derivations once.
When substituting a pre-built binary fails, fall back to building
packages locally.
+@item @code{extra-options} (default: @code{'()})
+Extra options to pass when running the Cuirass processes.
+
@item @code{cuirass} (default: @code{cuirass})
The Cuirass package to use.
@end table
@@ -25245,6 +25253,12 @@ If set, this is the @code{getmail-retriever-configuration} object with
which to configure getmail to fetch mail from the guix-commits mailing
list.
+@item @code{extra-options} (default: @var{'()})
+Extra command line options for @code{guix-data-service}.
+
+@item @code{extra-process-jobs-options} (default: @var{'()})
+Extra command line options for @code{guix-data-service-process-jobs}.
+
@end table
@end deftp
@@ -25814,7 +25828,7 @@ next method in the list. The NSS configuration is given in the
@cindex nss-mdns
@cindex .local, host name lookup
As an example, the declaration below configures the NSS to use the
-@uref{http://0pointer.de/lennart/projects/nss-mdns/, @code{nss-mdns}
+@uref{https://0pointer.de/lennart/projects/nss-mdns/, @code{nss-mdns}
back-end}, which supports host name lookups over multicast DNS (mDNS)
for host names ending in @code{.local}:
@@ -28286,7 +28300,7 @@ transparency that we get in the rest of the package dependency graph,
where Guix always gives us a source-to-binary mapping. Thus, our goal
is to reduce the set of bootstrap binaries to the bare minimum.
-The @uref{http://bootstrappable.org, Bootstrappable.org web site} lists
+The @uref{https://bootstrappable.org, Bootstrappable.org web site} lists
on-going projects to do that. One of these is about replacing the
bootstrap GCC with a sequence of assemblers, interpreters, and compilers
of increasing complexity, which could be built from source starting from
diff --git a/etc/system-tests.scm b/etc/system-tests.scm
new file mode 100644
index 0000000000..ab2827e70a
--- /dev/null
+++ b/etc/system-tests.scm
@@ -0,0 +1,94 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016, 2018, 2019, 2020 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/>.
+
+(use-modules (gnu tests)
+ (gnu packages package-management)
+ ((gnu ci) #:select (channel-source->package))
+ ((guix git-download) #:select (git-predicate))
+ ((guix utils) #:select (current-source-directory))
+ (git)
+ (ice-9 match))
+
+(define (source-commit directory)
+ "Return the commit of the head of DIRECTORY or #f if it could not be
+determined."
+ (let ((repository #f))
+ (catch 'git-error
+ (lambda ()
+ (set! repository (repository-open directory))
+ (let* ((head (repository-head repository))
+ (target (reference-target head))
+ (commit (oid->string target)))
+ (repository-close! repository)
+ commit))
+ (lambda _
+ (when repository
+ (repository-close! repository))
+ #f))))
+
+(define (tests-for-current-guix source commit)
+ "Return a list of tests for perform, using Guix built from SOURCE, a channel
+instance."
+ ;; Honor the 'TESTS' environment variable so that one can select a subset
+ ;; of tests to run in the usual way:
+ ;;
+ ;; make check-system TESTS=installed-os
+ (parameterize ((current-guix-package
+ (channel-source->package source #:commit commit)))
+ (match (getenv "TESTS")
+ (#f
+ (all-system-tests))
+ ((= string-tokenize (tests ...))
+ (filter (lambda (test)
+ (member (system-test-name test) tests))
+ (all-system-tests))))))
+
+(define (system-test->manifest-entry test)
+ "Return a manifest entry for TEST, a system test."
+ (manifest-entry
+ (name (string-append "test." (system-test-name test)))
+ (version "0")
+ (item test)))
+
+(define (system-test-manifest)
+ "Return a manifest containing all the system tests, or all those selected by
+the 'TESTS' environment variable."
+ (define source
+ (string-append (current-source-directory) "/.."))
+
+ (define commit
+ ;; Fetch the current commit ID so we can potentially build the same
+ ;; derivation as ci.guix.gnu.org.
+ (source-commit source))
+
+ ;; Intern SOURCE so that 'build-from-source' in (guix channels) sees
+ ;; "fresh" file names and thus doesn't find itself loading .go files
+ ;; from ~/.cache/guile when it loads 'build-aux/build-self.scm'.
+ (let* ((source (local-file source "guix-source"
+ #:recursive? #t
+ #:select?
+ (or (git-predicate source)
+ (const #t))))
+ (tests (tests-for-current-guix source commit)))
+ (format (current-error-port) "Selected ~a system tests...~%"
+ (length tests))
+
+ (manifest (map system-test->manifest-entry tests))))
+
+;; Return the manifest.
+(system-test-manifest)
diff --git a/gnu/ci.scm b/gnu/ci.scm
index 33c2e84b27..70e86b993e 100644
--- a/gnu/ci.scm
+++ b/gnu/ci.scm
@@ -28,6 +28,7 @@
#:use-module (guix derivations)
#:use-module (guix build-system)
#:use-module (guix monads)
+ #:use-module (guix gexp)
#:use-module (guix ui)
#:use-module ((guix licenses)
#:select (gpl3+ license? license-name))
@@ -54,7 +55,7 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (ice-9 match)
- #:export (channel-instance->package
+ #:export (channel-source->package
hydra-jobs))
;;; Commentary:
@@ -139,6 +140,49 @@ SYSTEM."
"i686-w64-mingw32"
"x86_64-w64-mingw32"))
+(define (cross-jobs store system)
+ "Return a list of cross-compilation jobs for SYSTEM."
+ (define (from-32-to-64? target)
+ ;; Return true if SYSTEM is 32-bit and TARGET is 64-bit. This hack
+ ;; prevents known-to-fail cross-builds from i686-linux or armhf-linux to
+ ;; mips64el-linux-gnuabi64.
+ (and (or (string-prefix? "i686-" system)
+ (string-prefix? "i586-" system)
+ (string-prefix? "armhf-" system))
+ (string-contains target "64"))) ;x86_64, mips64el, aarch64, etc.
+
+ (define (same? target)
+ ;; Return true if SYSTEM and TARGET are the same thing. This is so we
+ ;; don't try to cross-compile to 'mips64el-linux-gnu' from
+ ;; 'mips64el-linux'.
+ (or (string-contains target system)
+ (and (string-prefix? "armhf" system) ;armhf-linux
+ (string-prefix? "arm" target)))) ;arm-linux-gnueabihf
+
+ (define (pointless? target)
+ ;; Return #t if it makes no sense to cross-build to TARGET from SYSTEM.
+ (match system
+ ((or "x86_64-linux" "i686-linux")
+ (if (string-contains target "mingw")
+ (not (string=? "x86_64-linux" system))
+ #f))
+ (_
+ ;; Don't try to cross-compile from non-Intel platforms: this isn't
+ ;; very useful and these are often brittle configurations.
+ #t)))
+
+ (define (either proc1 proc2 proc3)
+ (lambda (x)
+ (or (proc1 x) (proc2 x) (proc3 x))))
+
+ (append-map (lambda (target)
+ (map (lambda (package)
+ (package-cross-job store (job-name package)
+ package target system))
+ (packages-to-cross-build target)))
+ (remove (either from-32-to-64? same? pointless?)
+ %cross-targets)))
+
(define %guixsd-supported-systems
'("x86_64-linux" "i686-linux" "armhf-linux"))
@@ -200,29 +244,39 @@ system.")
(define channel-build-system
;; Build system used to "convert" a channel instance to a package.
(let* ((build (lambda* (store name inputs
- #:key instance system
+ #:key source commit system
#:allow-other-keys)
(run-with-store store
- (channel-instances->derivation (list instance))
+ ;; SOURCE can be a lowerable object such as <local-file>
+ ;; or a file name. Adjust accordingly.
+ (mlet* %store-monad ((source (if (string? source)
+ (return source)
+ (lower-object source)))
+ (instance
+ -> (checkout->channel-instance
+ source #:commit commit)))
+ (channel-instances->derivation (list instance)))
#:system system)))
- (lower (lambda* (name #:key system instance #:allow-other-keys)
+ (lower (lambda* (name #:key system source commit
+ #:allow-other-keys)
(bag
(name name)
(system system)
(build build)
- (arguments `(#:instance ,instance))))))
+ (arguments `(#:source ,source
+ #:commit ,commit))))))
(build-system (name 'channel)
(description "Turn a channel instance into a package.")
(lower lower))))
-(define (channel-instance->package instance)
- "Return a package for the given channel INSTANCE."
+(define* (channel-source->package source #:key commit)
+ "Return a package for the given channel SOURCE, a lowerable object."
(package
(inherit guix)
- (version (or (string-take (channel-instance-commit instance) 7)
- (string-append (package-version guix) "+")))
+ (version (string-append (package-version guix) "+"))
(build-system channel-build-system)
- (arguments `(#:instance ,instance))
+ (arguments `(#:source ,source
+ #:commit ,commit))
(inputs '())
(native-inputs '())
(propagated-inputs '())))
@@ -230,9 +284,6 @@ system.")
(define* (system-test-jobs store system
#:key source commit)
"Return a list of jobs for the system tests."
- (define instance
- (checkout->channel-instance source #:commit commit))
-
(define (test->thunk test)
(lambda ()
(define drv
@@ -269,7 +320,7 @@ system.")
;; expensive. It also makes sure we get a valid Guix package when this
;; code is not running from a checkout.
(parameterize ((current-guix-package
- (channel-instance->package instance)))
+ (channel-source->package source #:commit commit)))
(map ->job (all-system-tests)))
'()))
@@ -421,48 +472,6 @@ Return #f if no such checkout is found."
(define source
(assq-ref checkout 'file-name))
- (define (cross-jobs system)
- (define (from-32-to-64? target)
- ;; Return true if SYSTEM is 32-bit and TARGET is 64-bit. This hack
- ;; prevents known-to-fail cross-builds from i686-linux or armhf-linux to
- ;; mips64el-linux-gnuabi64.
- (and (or (string-prefix? "i686-" system)
- (string-prefix? "i586-" system)
- (string-prefix? "armhf-" system))
- (string-contains target "64"))) ;x86_64, mips64el, aarch64, etc.
-
- (define (same? target)
- ;; Return true if SYSTEM and TARGET are the same thing. This is so we
- ;; don't try to cross-compile to 'mips64el-linux-gnu' from
- ;; 'mips64el-linux'.
- (or (string-contains target system)
- (and (string-prefix? "armhf" system) ;armhf-linux
- (string-prefix? "arm" target)))) ;arm-linux-gnueabihf
-
- (define (pointless? target)
- ;; Return #t if it makes no sense to cross-build to TARGET from SYSTEM.
- (match system
- ((or "x86_64-linux" "i686-linux")
- (if (string-contains target "mingw")
- (not (string=? "x86_64-linux" system))
- #f))
- (_
- ;; Don't try to cross-compile from non-Intel platforms: this isn't
- ;; very useful and these are often brittle configurations.
- #t)))
-
- (define (either proc1 proc2 proc3)
- (lambda (x)
- (or (proc1 x) (proc2 x) (proc3 x))))
-
- (append-map (lambda (target)
- (map (lambda (package)
- (package-cross-job store (job-name package)
- package target system))
- (packages-to-cross-build target)))
- (remove (either from-32-to-64? same? pointless?)
- %cross-targets)))
-
;; Turn off grafts. Grafting is meant to happen on the user's machines.
(parameterize ((%graft? #f))
;; Return one job for each package, except bootstrap packages.
@@ -487,14 +496,14 @@ Return #f if no such checkout is found."
#:source source
#:commit commit)
(tarball-jobs store system)
- (cross-jobs system))))
+ (cross-jobs store system))))
((core)
;; Build core packages only.
(append (map (lambda (package)
(package-job store (job-name package)
package system))
%core-packages)
- (cross-jobs system)))
+ (cross-jobs store system)))
((hello)
;; Build hello package only.
(if (string=? system (%current-system))
diff --git a/gnu/installer.scm b/gnu/installer.scm
index 04f3dd5f26..e195d4f84b 100644
--- a/gnu/installer.scm
+++ b/gnu/installer.scm
@@ -26,6 +26,8 @@
#:use-module (guix utils)
#:use-module (guix ui)
#:use-module ((guix self) #:select (make-config.scm))
+ #:use-module (guix packages)
+ #:use-module (guix git-download)
#:use-module (gnu installer utils)
#:use-module (gnu packages admin)
#:use-module (gnu packages base)
@@ -280,6 +282,25 @@ selected keymap."
((installer-final-page current-installer)
result prev-steps))))))))
+(define guile-newt
+ ;; Guile-Newt with 'form-watch-fd'.
+ ;; TODO: Remove once a new release is out.
+ (let ((commit "b3c885d42cfac327d3531c9d064939514ce6bf12")
+ (revision "1"))
+ (package
+ (inherit (@ (gnu packages guile-xyz) guile-newt))
+ (name "guile-newt")
+ (version (git-version "0.0.1" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/mothacehe/guile-newt")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "02p0bi6c05699idgx6gfkljhqgi8zf09clhzx81i8wa064s70r1y")))))))
+
(define (installer-program)
"Return a file-like object that runs the given INSTALLER."
(define init-gettext
diff --git a/gnu/installer/final.scm b/gnu/installer/final.scm
index 8c2185e36f..3c170e5d0f 100644
--- a/gnu/installer/final.scm
+++ b/gnu/installer/final.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -28,6 +28,12 @@
#:use-module (gnu build accounts)
#:use-module ((gnu system shadow) #:prefix sys:)
#:use-module (rnrs io ports)
+ #:use-module (srfi srfi-1)
+ #:use-module (ice-9 ftw)
+ #:use-module (ice-9 popen)
+ #:use-module (ice-9 match)
+ #:use-module (ice-9 format)
+ #:use-module (ice-9 rdelim)
#:export (install-system))
(define %seed
@@ -97,24 +103,92 @@ USERS."
(write-passwd password (string-append etc "/passwd"))
(write-shadow shadow (string-append etc "/shadow")))
+(define* (kill-cow-users cow-path #:key (spare '("udevd")))
+ "Kill all processes that have references to the given COW-PATH in their
+'maps' file. The process whose names are in SPARE list are spared."
+ (define %not-nul
+ (char-set-complement (char-set #\nul)))
+
+ (let ((pids
+ (filter-map (lambda (pid)
+ (call-with-input-file
+ (string-append "/proc/" pid "/maps")
+ (lambda (port)
+ (and (string-contains (get-string-all port)
+ cow-path)
+ (string->number pid)))))
+ (scandir "/proc" string->number))))
+ (for-each (lambda (pid)
+ ;; cmdline does not always exist.
+ (false-if-exception
+ (call-with-input-file
+ (string-append "/proc/" (number->string pid) "/cmdline")
+ (lambda (port)
+ (match (string-tokenize (read-string port) %not-nul)
+ ((argv0 _ ...)
+ (unless (member (pk (basename argv0)) spare)
+ (syslog "Killing process ~a~%" pid)
+ (kill pid SIGKILL)))
+ (_ #f))))))
+ pids)))
+
(define (umount-cow-store)
"Remove the store overlay and the bind-mount on /tmp created by the
-cow-store service."
- (let ((tmp-dir "/remove"))
- (mkdir-p tmp-dir)
- (mount (%store-directory) tmp-dir "" MS_MOVE)
- (umount tmp-dir)
- (umount "/tmp")))
+cow-store service. This procedure is very fragile and a better approach would
+be much appreciated."
+
+ ;; Remove when integrated in (gnu services herd).
+ (define (restart-service name)
+ (with-shepherd-action name ('restart) result
+ result))
+
+ (catch #t
+ (lambda ()
+ (let ((tmp-dir "/remove"))
+ (mkdir-p tmp-dir)
+ (mount (%store-directory) tmp-dir "" MS_MOVE)
+
+ ;; The guix-daemon has possibly opened files from the cow-store,
+ ;; restart it.
+ (restart-service 'guix-daemon)
+
+ ;; Kill all processes started while the cow-store was active (logins
+ ;; on other TTYs for instance).
+ (kill-cow-users tmp-dir)
+
+ ;; Try to umount the store overlay. Some process such as udevd
+ ;; workers might still be active, so do some retries.
+ (let loop ((try 5))
+ (sleep 1)
+ (let ((umounted? (false-if-exception (umount tmp-dir))))
+ (if (and (not umounted?) (> try 0))
+ (loop (- try 1))
+ (if umounted?
+ (syslog "Umounted ~a successfully.~%" tmp-dir)
+ (syslog "Failed to umount ~a.~%" tmp-dir)))))
+
+ (umount "/tmp")))
+ (lambda args
+ (syslog "~a~%" args))))
(define* (install-system locale #:key (users '()))
"Create /etc/shadow and /etc/passwd on the installation target for USERS.
Start COW-STORE service on target directory and launch guix install command in
a subshell. LOCALE must be the locale name under which that command will run,
or #f. Return #t on success and #f on failure."
- (let ((install-command
- (format #f "guix system init --fallback ~a ~a"
- (%installer-configuration-file)
- (%installer-target-dir))))
+ (let* ((options (catch 'system-error
+ (lambda ()
+ ;; If this file exists, it can provide
+ ;; additional command-line options.
+ (call-with-input-file
+ "/tmp/installer-system-init-options"
+ read))
+ (const '())))
+ (install-command (append (list "guix" "system" "init"
+ "--fallback")
+ options
+ (list (%installer-configuration-file)
+ (%installer-target-dir)))))
(mkdir-p (%installer-target-dir))
;; We want to initialize user passwords but we don't want to store them in
@@ -128,7 +202,7 @@ or #f. Return #t on success and #f on failure."
(lambda ()
(start-service 'cow-store (list (%installer-target-dir))))
(lambda ()
- (run-shell-command install-command #:locale locale))
+ (run-command install-command #:locale locale))
(lambda ()
(stop-service 'cow-store)
;; Remove the store overlay created at cow-store service start.
diff --git a/gnu/installer/newt/final.scm b/gnu/installer/newt/final.scm
index 405eee2540..5cb4f6816d 100644
--- a/gnu/installer/newt/final.scm
+++ b/gnu/installer/newt/final.scm
@@ -63,28 +63,38 @@ This will take a few minutes.")
(&installer-step-abort)))))))
(define (run-install-success-page)
- (message-window
- (G_ "Installation complete")
- (G_ "Reboot")
- (G_ "Congratulations! Installation is now complete. \
+ (match (current-clients)
+ (()
+ (message-window
+ (G_ "Installation complete")
+ (G_ "Reboot")
+ (G_ "Congratulations! Installation is now complete. \
You may remove the device containing the installation image and \
-press the button to reboot."))
+press the button to reboot.")))
+ (_
+ ;; When there are clients connected, send them a message and keep going.
+ (send-to-clients '(installation-complete))))
;; Return success so that the installer happily reboots.
'success)
(define (run-install-failed-page)
- (match (choice-window
- (G_ "Installation failed")
- (G_ "Resume")
- (G_ "Restart the installer")
- (G_ "The final system installation step failed. You can resume from \
+ (match (current-clients)
+ (()
+ (match (choice-window
+ (G_ "Installation failed")
+ (G_ "Resume")
+ (G_ "Restart the installer")
+ (G_ "The final system installation step failed. You can resume from \
a specific step, or restart the installer."))
- (1 (raise
- (condition
- (&installer-step-abort))))
- (2
- ;; Keep going, the installer will be restarted later on.
+ (1 (raise
+ (condition
+ (&installer-step-abort))))
+ (2
+ ;; Keep going, the installer will be restarted later on.
+ #t)))
+ (_
+ (send-to-clients '(installation-failure))
#t)))
(define* (run-install-shell locale
diff --git a/gnu/installer/newt/network.scm b/gnu/installer/newt/network.scm
index 40d85817b6..461d5d99c0 100644
--- a/gnu/installer/newt/network.scm
+++ b/gnu/installer/newt/network.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -119,6 +119,10 @@ network devices were found. Do you want to continue anyway?"))
(define (wait-service-online)
"Display a newt scale until connman detects an Internet access. Do
FULL-VALUE tentatives, spaced by 1 second."
+ (define (online?)
+ (or (connman-online?)
+ (file-exists? "/tmp/installer-assume-online")))
+
(let* ((full-value 5))
(run-scale-page
#:title (G_ "Checking connectivity")
@@ -127,10 +131,10 @@ FULL-VALUE tentatives, spaced by 1 second."
#:scale-update-proc
(lambda (value)
(sleep 1)
- (if (connman-online?)
+ (if (online?)
full-value
(+ value 1))))
- (unless (connman-online?)
+ (unless (online?)
(run-error-page
(G_ "The selected network does not provide access to the \
Internet, please try again.")
diff --git a/gnu/installer/newt/page.scm b/gnu/installer/newt/page.scm
index 8aea5a1109..9031c7d4ba 100644
--- a/gnu/installer/newt/page.scm
+++ b/gnu/installer/newt/page.scm
@@ -19,6 +19,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu installer newt page)
+ #:use-module (gnu installer steps)
#:use-module (gnu installer utils)
#:use-module (gnu installer newt utils)
#:use-module (guix i18n)
@@ -26,7 +27,10 @@
#:use-module (ice-9 match)
#:use-module (ice-9 receive)
#:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
+ #:use-module (srfi srfi-34)
+ #:use-module (srfi srfi-35)
#:use-module (newt)
#:export (draw-info-page
draw-connecting-page
@@ -36,7 +40,9 @@
run-listbox-selection-page
run-scale-page
run-checkbox-tree-page
- run-file-textbox-page))
+ run-file-textbox-page
+
+ run-form-with-clients))
;;; Commentary:
;;;
@@ -49,9 +55,123 @@
;;;
;;; Code:
+(define* (watch-clients! form #:optional (clients (current-clients)))
+ "Have FORM watch the file descriptors corresponding to current client
+connections. Consequently, FORM may exit with the 'exit-fd-ready' reason."
+ (when (current-server-socket)
+ (form-watch-fd form (fileno (current-server-socket))
+ FD-READ))
+
+ (for-each (lambda (client)
+ (form-watch-fd form (fileno client)
+ (logior FD-READ FD-EXCEPT)))
+ clients))
+
+(define close-port-and-reuse-fd
+ (let ((bit-bucket #f))
+ (lambda (port)
+ "Close PORT and redirect its underlying FD to point to a valid open file
+descriptor."
+ (let ((fd (fileno port)))
+ (unless bit-bucket
+ (set! bit-bucket (car (pipe))))
+ (close-port port)
+
+ ;; FIXME: We're leaking FD.
+ (dup2 (fileno bit-bucket) fd)))))
+
+(define* (run-form-with-clients form exp)
+ "Run FORM such as it watches the file descriptors beneath CLIENTS after
+sending EXP to all the clients.
+
+Automatically restart the form when it exits with 'exit-fd-ready but without
+an actual client reply--e.g., it got a connection request or a client
+disconnect.
+
+Like 'run-form', return two values: the exit reason, and an \"argument\"."
+ (define* (discard-client! port #:optional errno)
+ (if errno
+ (syslog "removing client ~d due to ~s~%"
+ (fileno port) (strerror errno))
+ (syslog "removing client ~d due to EOF~%"
+ (fileno port)))
+
+ ;; XXX: Watch out! There's no 'form-unwatch-fd' procedure in Newt so we
+ ;; cheat: we keep PORT's file descriptor open, but make it a duplicate of
+ ;; a valid but inactive FD. Failing to do that, 'run-form' would
+ ;; select(2) on the now-closed port and keep spinning as select(2) returns
+ ;; EBADF.
+ (close-port-and-reuse-fd port)
+
+ (current-clients (delq port (current-clients)))
+ (close-port port))
+
+ (define title
+ ;; Title of FORM.
+ (match exp
+ (((? symbol? tag) alist ...)
+ (match (assq 'title alist)
+ ((_ title) title)
+ (_ tag)))
+ (((? symbol? tag) _ ...)
+ tag)
+ (_
+ 'unknown)))
+
+ ;; Send EXP to all the currently-connected clients.
+ (send-to-clients exp)
+
+ (let loop ()
+ (syslog "running form ~s (~s) with ~d clients~%"
+ form title (length (current-clients)))
+
+ ;; Call 'watch-clients!' within the loop because there might be new
+ ;; clients.
+ (watch-clients! form)
+
+ (let-values (((reason argument) (run-form form)))
+ (match reason
+ ('exit-fd-ready
+ (match (fdes->ports argument)
+ ((port _ ...)
+ (if (memq port (current-clients))
+
+ ;; Read a reply from a client or handle its departure.
+ (catch 'system-error
+ (lambda ()
+ (match (read port)
+ ((? eof-object? eof)
+ (discard-client! port)
+ (loop))
+ (obj
+ (syslog "form ~s (~s): client ~d replied ~s~%"
+ form title (fileno port) obj)
+ (values 'exit-fd-ready obj))))
+ (lambda args
+ (discard-client! port (system-error-errno args))
+ (loop)))
+
+ ;; Accept a new client and send it EXP.
+ (match (accept port)
+ ((client . _)
+ (syslog "accepting new client ~d while on form ~s~%"
+ (fileno client) form)
+ (catch 'system-error
+ (lambda ()
+ (write exp client)
+ (newline client)
+ (force-output client)
+ (current-clients (cons client (current-clients))))
+ (lambda _
+ (close-port client)))
+ (loop)))))))
+ (_
+ (values reason argument))))))
+
(define (draw-info-page text title)
"Draw an informative page with the given TEXT as content. Set the title of
this page to TITLE."
+ (send-to-clients `(info (title ,title) (text ,text)))
(let* ((text-box
(make-reflowed-textbox -1 -1 text 40
#:flags FLAG-BORDER))
@@ -126,20 +246,25 @@ input box, such as FLAG-PASSWORD."
(G_ "Empty input")))))
(let loop ()
(receive (exit-reason argument)
- (run-form form)
- (let ((input (entry-value input-entry)))
- (if (and (not allow-empty-input?)
- (eq? exit-reason 'exit-component)
- (string=? input ""))
- (begin
- ;; Display the error page.
- (error-page)
- ;; Set the focus back to the input input field.
- (set-current-component form input-entry)
- (loop))
- (begin
- (destroy-form-and-pop form)
- input))))))))
+ (run-form-with-clients form
+ `(input (title ,title) (text ,text)
+ (default ,default-text)))
+ (let ((input (if (eq? exit-reason 'exit-fd-ready)
+ argument
+ (entry-value input-entry))))
+ (cond ((not input) ;client disconnect or something
+ (loop))
+ ((and (not allow-empty-input?)
+ (eq? exit-reason 'exit-component)
+ (string=? input ""))
+ ;; Display the error page.
+ (error-page)
+ ;; Set the focus back to the input input field.
+ (set-current-component form input-entry)
+ (loop))
+ (else
+ (destroy-form-and-pop form)
+ input))))))))
(define (run-error-page text title)
"Run a page to inform the user of an error. The page contains the given TEXT
@@ -160,7 +285,8 @@ of the page is set to TITLE."
(newt-set-color COLORSET-ROOT "white" "red")
(add-components-to-form form text-box ok-button)
(make-wrapped-grid-window grid title)
- (run-form form)
+ (run-form-with-clients form
+ `(error (title ,title) (text ,text)))
;; Restore the background to its original color.
(newt-set-color COLORSET-ROOT "white" "blue")
(destroy-form-and-pop form)))
@@ -187,17 +313,23 @@ of the page is set to TITLE."
(make-wrapped-grid-window grid title)
(receive (exit-reason argument)
- (run-form form)
+ (run-form-with-clients form
+ `(confirmation (title ,title)
+ (text ,text)))
(dynamic-wind
(const #t)
(lambda ()
- (case exit-reason
- ((exit-component)
+ (match exit-reason
+ ('exit-component
(cond
((components=? argument ok-button)
#t)
((components=? argument exit-button)
- (exit-button-procedure))))))
+ (exit-button-procedure))))
+ ('exit-fd-ready
+ (if argument
+ #t
+ (exit-button-procedure)))))
(lambda ()
(destroy-form-and-pop form))))))
@@ -222,6 +354,8 @@ of the page is set to TITLE."
(const #t))
(listbox-callback-procedure
identity)
+ (client-callback-procedure
+ listbox-callback-procedure)
(hotkey-callback-procedure
(const #t)))
"Run a page asking the user to select an item in a listbox. The page
@@ -254,9 +388,9 @@ Each time the listbox current item changes, call SKIP-ITEM-PROCEDURE? with the
current listbox item as argument. If it returns #t, skip the element and jump
to the next/previous one depending on the previous item, otherwise do
nothing."
-
- (define (fill-listbox listbox items)
- "Append the given ITEMS to LISTBOX, once they have been converted to text
+ (let loop ()
+ (define (fill-listbox listbox items)
+ "Append the given ITEMS to LISTBOX, once they have been converted to text
with LISTBOX-ITEM->TEXT. Each item appended to the LISTBOX is given a key by
newt. Save this key by returning an association list under the form:
@@ -264,144 +398,165 @@ newt. Save this key by returning an association list under the form:
where NEWT-LISTBOX-KEY is the key returned by APPEND-ENTRY-TO-LISTBOX, when
ITEM was inserted into LISTBOX."
- (map (lambda (item)
- (let* ((text (listbox-item->text item))
- (key (append-entry-to-listbox listbox text)))
- (cons key item)))
- items))
-
- (define (sort-listbox-items listbox-items)
- "Return LISTBOX-ITEMS sorted using the 'string-locale<?' procedure on the text
+ (map (lambda (item)
+ (let* ((text (listbox-item->text item))
+ (key (append-entry-to-listbox listbox text)))
+ (cons key item)))
+ items))
+
+ (define (sort-listbox-items listbox-items)
+ "Return LISTBOX-ITEMS sorted using the 'string-locale<?' procedure on the text
corresponding to each item in the list."
- (let* ((items (map (lambda (item)
- (cons item (listbox-item->text item)))
- listbox-items))
- (sorted-items
- (sort items (lambda (a b)
- (let ((text-a (cdr a))
- (text-b (cdr b)))
- (string-locale<? text-a text-b))))))
- (map car sorted-items)))
-
- ;; Store the last selected listbox item's key.
- (define last-listbox-key (make-parameter #f))
-
- (define (previous-key keys key)
- (let ((index (list-index (cut eq? key <>) keys)))
- (and index
- (> index 0)
- (list-ref keys (- index 1)))))
-
- (define (next-key keys key)
- (let ((index (list-index (cut eq? key <>) keys)))
- (and index
- (< index (- (length keys) 1))
- (list-ref keys (+ index 1)))))
-
- (define (set-default-item listbox listbox-keys default-item)
- "Set the default item of LISTBOX to DEFAULT-ITEM. LISTBOX-KEYS is the
+ (let* ((items (map (lambda (item)
+ (cons item (listbox-item->text item)))
+ listbox-items))
+ (sorted-items
+ (sort items (lambda (a b)
+ (let ((text-a (cdr a))
+ (text-b (cdr b)))
+ (string-locale<? text-a text-b))))))
+ (map car sorted-items)))
+
+ ;; Store the last selected listbox item's key.
+ (define last-listbox-key (make-parameter #f))
+
+ (define (previous-key keys key)
+ (let ((index (list-index (cut eq? key <>) keys)))
+ (and index
+ (> index 0)
+ (list-ref keys (- index 1)))))
+
+ (define (next-key keys key)
+ (let ((index (list-index (cut eq? key <>) keys)))
+ (and index
+ (< index (- (length keys) 1))
+ (list-ref keys (+ index 1)))))
+
+ (define (set-default-item listbox listbox-keys default-item)
+ "Set the default item of LISTBOX to DEFAULT-ITEM. LISTBOX-KEYS is the
association list returned by the FILL-LISTBOX procedure. It is used because
the current listbox item has to be selected by key."
- (for-each (match-lambda
- ((key . item)
- (when (equal? item default-item)
- (set-current-listbox-entry-by-key listbox key))))
- listbox-keys))
-
- (let* ((listbox (make-listbox
- -1 -1
- listbox-height
- (logior FLAG-SCROLL FLAG-BORDER FLAG-RETURNEXIT
- (if listbox-allow-multiple?
- FLAG-MULTIPLE
- 0))))
- (form (make-form #:flags FLAG-NOF12))
- (info-textbox
- (make-reflowed-textbox -1 -1 info-text
- info-textbox-width
- #:flags FLAG-BORDER))
- (button (make-button -1 -1 button-text))
- (button2 (and button2-text
- (make-button -1 -1 button2-text)))
- (grid (vertically-stacked-grid
- GRID-ELEMENT-COMPONENT info-textbox
- GRID-ELEMENT-COMPONENT listbox
- GRID-ELEMENT-SUBGRID
- (apply
- horizontal-stacked-grid
- GRID-ELEMENT-COMPONENT button
- `(,@(if button2
- (list GRID-ELEMENT-COMPONENT button2)
- '())))))
- (sorted-items (if sort-listbox-items?
- (sort-listbox-items listbox-items)
- listbox-items))
- (keys (fill-listbox listbox sorted-items)))
-
- ;; On every listbox element change, check if we need to skip it. If yes,
- ;; depending on the 'last-listbox-key', jump forward or backward. If no,
- ;; do nothing.
- (add-component-callback
- listbox
- (lambda (component)
- (let* ((current-key (current-listbox-entry listbox))
- (listbox-keys (map car keys))
- (last-key (last-listbox-key))
- (item (assoc-ref keys current-key))
- (prev-key (previous-key listbox-keys current-key))
- (next-key (next-key listbox-keys current-key)))
- ;; Update last-listbox-key before a potential call to
- ;; set-current-listbox-entry-by-key, because it will immediately
- ;; cause this callback to be called for the new entry.
- (last-listbox-key current-key)
- (when (skip-item-procedure? item)
- (when (eq? prev-key last-key)
- (if next-key
- (set-current-listbox-entry-by-key listbox next-key)
- (set-current-listbox-entry-by-key listbox prev-key)))
- (when (eq? next-key last-key)
- (if prev-key
- (set-current-listbox-entry-by-key listbox prev-key)
- (set-current-listbox-entry-by-key listbox next-key)))))))
-
- (when listbox-default-item
- (set-default-item listbox keys listbox-default-item))
-
- (when allow-delete?
- (form-add-hotkey form KEY-DELETE))
+ (for-each (match-lambda
+ ((key . item)
+ (when (equal? item default-item)
+ (set-current-listbox-entry-by-key listbox key))))
+ listbox-keys))
+
+ (let* ((listbox (make-listbox
+ -1 -1
+ listbox-height
+ (logior FLAG-SCROLL FLAG-BORDER FLAG-RETURNEXIT
+ (if listbox-allow-multiple?
+ FLAG-MULTIPLE
+ 0))))
+ (form (make-form #:flags FLAG-NOF12))
+ (info-textbox
+ (make-reflowed-textbox -1 -1 info-text
+ info-textbox-width
+ #:flags FLAG-BORDER))
+ (button (make-button -1 -1 button-text))
+ (button2 (and button2-text
+ (make-button -1 -1 button2-text)))
+ (grid (vertically-stacked-grid
+ GRID-ELEMENT-COMPONENT info-textbox
+ GRID-ELEMENT-COMPONENT listbox
+ GRID-ELEMENT-SUBGRID
+ (apply
+ horizontal-stacked-grid
+ GRID-ELEMENT-COMPONENT button
+ `(,@(if button2
+ (list GRID-ELEMENT-COMPONENT button2)
+ '())))))
+ (sorted-items (if sort-listbox-items?
+ (sort-listbox-items listbox-items)
+ listbox-items))
+ (keys (fill-listbox listbox sorted-items)))
+
+ (define (choice->item str)
+ ;; Return the item that corresponds to STR.
+ (match (find (match-lambda
+ ((key . item)
+ (string=? str (listbox-item->text item))))
+ keys)
+ ((key . item) item)
+ (#f (raise (condition (&installer-step-abort))))))
+
+ ;; On every listbox element change, check if we need to skip it. If yes,
+ ;; depending on the 'last-listbox-key', jump forward or backward. If no,
+ ;; do nothing.
+ (add-component-callback
+ listbox
+ (lambda (component)
+ (let* ((current-key (current-listbox-entry listbox))
+ (listbox-keys (map car keys))
+ (last-key (last-listbox-key))
+ (item (assoc-ref keys current-key))
+ (prev-key (previous-key listbox-keys current-key))
+ (next-key (next-key listbox-keys current-key)))
+ ;; Update last-listbox-key before a potential call to
+ ;; set-current-listbox-entry-by-key, because it will immediately
+ ;; cause this callback to be called for the new entry.
+ (last-listbox-key current-key)
+ (when (skip-item-procedure? item)
+ (when (eq? prev-key last-key)
+ (if next-key
+ (set-current-listbox-entry-by-key listbox next-key)
+ (set-current-listbox-entry-by-key listbox prev-key)))
+ (when (eq? next-key last-key)
+ (if prev-key
+ (set-current-listbox-entry-by-key listbox prev-key)
+ (set-current-listbox-entry-by-key listbox next-key)))))))
+
+ (when listbox-default-item
+ (set-default-item listbox keys listbox-default-item))
+
+ (when allow-delete?
+ (form-add-hotkey form KEY-DELETE))
- (add-form-to-grid grid form #t)
- (make-wrapped-grid-window grid title)
+ (add-form-to-grid grid form #t)
+ (make-wrapped-grid-window grid title)
- (receive (exit-reason argument)
- (run-form form)
- (dynamic-wind
- (const #t)
- (lambda ()
- (case exit-reason
- ((exit-component)
- (cond
- ((components=? argument button)
- (button-callback-procedure))
- ((and button2
- (components=? argument button2))
- (button2-callback-procedure))
- ((components=? argument listbox)
- (if listbox-allow-multiple?
- (let* ((entries (listbox-selection listbox))
- (items (map (lambda (entry)
- (assoc-ref keys entry))
- entries)))
- (listbox-callback-procedure items))
- (let* ((entry (current-listbox-entry listbox))
- (item (assoc-ref keys entry)))
- (listbox-callback-procedure item))))))
- ((exit-hotkey)
- (let* ((entry (current-listbox-entry listbox))
- (item (assoc-ref keys entry)))
- (hotkey-callback-procedure argument item)))))
- (lambda ()
- (destroy-form-and-pop form))))))
+ (receive (exit-reason argument)
+ (run-form-with-clients form
+ `(list-selection (title ,title)
+ (multiple-choices?
+ ,listbox-allow-multiple?)
+ (items
+ ,(map listbox-item->text
+ listbox-items))))
+ (dynamic-wind
+ (const #t)
+ (lambda ()
+ (match exit-reason
+ ('exit-component
+ (cond
+ ((components=? argument button)
+ (button-callback-procedure))
+ ((and button2
+ (components=? argument button2))
+ (button2-callback-procedure))
+ ((components=? argument listbox)
+ (if listbox-allow-multiple?
+ (let* ((entries (listbox-selection listbox))
+ (items (map (lambda (entry)
+ (assoc-ref keys entry))
+ entries)))
+ (listbox-callback-procedure items))
+ (let* ((entry (current-listbox-entry listbox))
+ (item (assoc-ref keys entry)))
+ (listbox-callback-procedure item))))))
+ ('exit-fd-ready
+ (let* ((choice argument)
+ (item (if listbox-allow-multiple?
+ (map choice->item choice)
+ (choice->item choice))))
+ (client-callback-procedure item)))
+ ('exit-hotkey
+ (let* ((entry (current-listbox-entry listbox))
+ (item (assoc-ref keys entry)))
+ (hotkey-callback-procedure argument item)))))
+ (lambda ()
+ (destroy-form-and-pop form)))))))
(define* (run-scale-page #:key
title
@@ -498,48 +653,65 @@ ITEMS when 'Ok' is pressed."
items
selection))
- (let* ((checkbox-tree
- (make-checkboxtree -1 -1
- checkbox-tree-height
- FLAG-BORDER))
- (info-textbox
- (make-reflowed-textbox -1 -1 info-text
- info-textbox-width
- #:flags FLAG-BORDER))
- (ok-button (make-button -1 -1 (G_ "OK")))
- (exit-button (make-button -1 -1 (G_ "Exit")))
- (grid (vertically-stacked-grid
- GRID-ELEMENT-COMPONENT info-textbox
- GRID-ELEMENT-COMPONENT checkbox-tree
- GRID-ELEMENT-SUBGRID
- (horizontal-stacked-grid
- GRID-ELEMENT-COMPONENT ok-button
- GRID-ELEMENT-COMPONENT exit-button)))
- (keys (fill-checkbox-tree checkbox-tree items))
- (form (make-form #:flags FLAG-NOF12)))
+ (let loop ()
+ (let* ((checkbox-tree
+ (make-checkboxtree -1 -1
+ checkbox-tree-height
+ FLAG-BORDER))
+ (info-textbox
+ (make-reflowed-textbox -1 -1 info-text
+ info-textbox-width
+ #:flags FLAG-BORDER))
+ (ok-button (make-button -1 -1 (G_ "OK")))
+ (exit-button (make-button -1 -1 (G_ "Exit")))
+ (grid (vertically-stacked-grid
+ GRID-ELEMENT-COMPONENT info-textbox
+ GRID-ELEMENT-COMPONENT checkbox-tree
+ GRID-ELEMENT-SUBGRID
+ (horizontal-stacked-grid
+ GRID-ELEMENT-COMPONENT ok-button
+ GRID-ELEMENT-COMPONENT exit-button)))
+ (keys (fill-checkbox-tree checkbox-tree items))
+ (form (make-form #:flags FLAG-NOF12)))
- (add-form-to-grid grid form #t)
- (make-wrapped-grid-window grid title)
+ (define (choice->item str)
+ ;; Return the item that corresponds to STR.
+ (match (find (match-lambda
+ ((key . item)
+ (string=? str (item->text item))))
+ keys)
+ ((key . item) item)
+ (#f (raise (condition (&installer-step-abort))))))
- (receive (exit-reason argument)
- (run-form form)
- (dynamic-wind
- (const #t)
- (lambda ()
- (case exit-reason
- ((exit-component)
- (cond
- ((components=? argument ok-button)
- (let* ((entries (current-checkbox-selection checkbox-tree))
- (current-items (map (lambda (entry)
- (assoc-ref keys entry))
- entries)))
- (ok-button-callback-procedure)
- current-items))
- ((components=? argument exit-button)
- (exit-button-callback-procedure))))))
- (lambda ()
- (destroy-form-and-pop form))))))
+ (add-form-to-grid grid form #t)
+ (make-wrapped-grid-window grid title)
+
+ (receive (exit-reason argument)
+ (run-form-with-clients form
+ `(checkbox-list (title ,title)
+ (text ,info-text)
+ (items
+ ,(map item->text items))))
+ (dynamic-wind
+ (const #t)
+
+ (lambda ()
+ (match exit-reason
+ ('exit-component
+ (cond
+ ((components=? argument ok-button)
+ (let* ((entries (current-checkbox-selection checkbox-tree))
+ (current-items (map (lambda (entry)
+ (assoc-ref keys entry))
+ entries)))
+ (ok-button-callback-procedure)
+ current-items))
+ ((components=? argument exit-button)
+ (exit-button-callback-procedure))))
+ ('exit-fd-ready
+ (map choice->item argument))))
+ (lambda ()
+ (destroy-form-and-pop form)))))))
(define* (edit-file file #:key locale)
"Spawn an editor for FILE."
@@ -547,9 +719,8 @@ ITEMS when 'Ok' is pressed."
(newt-suspend)
;; Use Nano because it syntax-highlights Scheme by default.
;; TODO: Add a menu to choose an editor?
- (run-shell-command (string-append "/run/current-system/profile/bin/nano "
- file)
- #:locale locale)
+ (run-command (list "/run/current-system/profile/bin/nano" file)
+ #:locale locale)
(newt-resume))
(define* (run-file-textbox-page #:key
@@ -606,13 +777,16 @@ ITEMS when 'Ok' is pressed."
text))
(receive (exit-reason argument)
- (run-form form)
+ (run-form-with-clients form
+ `(file-dialog (title ,title)
+ (text ,info-text)
+ (file ,file)))
(define result
(dynamic-wind
(const #t)
(lambda ()
- (case exit-reason
- ((exit-component)
+ (match exit-reason
+ ('exit-component
(cond
((components=? argument ok-button)
(ok-button-callback-procedure))
@@ -621,10 +795,15 @@ ITEMS when 'Ok' is pressed."
(exit-button-callback-procedure))
((and edit-button?
(components=? argument edit-button))
- (edit-file file))))))
+ (edit-file file))))
+ ('exit-fd-ready
+ (if argument
+ (ok-button-callback-procedure)
+ (exit-button-callback-procedure)))))
(lambda ()
(destroy-form-and-pop form))))
- (if (components=? argument edit-button)
+ (if (and (eq? exit-reason 'exit-component)
+ (components=? argument edit-button))
(loop) ;recurse in tail position
result)))))
diff --git a/gnu/installer/newt/partition.scm b/gnu/installer/newt/partition.scm
index 3cba7f77dd..c925e410a9 100644
--- a/gnu/installer/newt/partition.scm
+++ b/gnu/installer/newt/partition.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
@@ -682,6 +682,12 @@ by pressing the Exit button.~%~%")))
#:allow-delete? #t
#:button-text (G_ "OK")
#:button-callback-procedure button-ok-action
+
+ ;; Consider client replies equivalent to hitting the "OK" button.
+ ;; XXX: In practice this means that clients cannot do anything but
+ ;; approve the predefined list of partitions.
+ #:client-callback-procedure (lambda (_) (button-ok-action))
+
#:button2-text (G_ "Exit")
#:button2-callback-procedure button-exit-action
#:listbox-callback-procedure listbox-action
diff --git a/gnu/installer/newt/user.scm b/gnu/installer/newt/user.scm
index b01d52172b..ad711d665a 100644
--- a/gnu/installer/newt/user.scm
+++ b/gnu/installer/newt/user.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
@@ -23,6 +23,7 @@
#:use-module ((gnu installer steps) #:select (&installer-step-abort))
#:use-module (gnu installer newt page)
#:use-module (gnu installer newt utils)
+ #:use-module (gnu installer utils)
#:use-module (guix i18n)
#:use-module (newt)
#:use-module (ice-9 match)
@@ -115,6 +116,7 @@ REAL-NAME, and HOME-DIRECTORY as the initial values in the form."
GRID-ELEMENT-SUBGRID entry-grid
GRID-ELEMENT-SUBGRID button-grid)
title)
+
(let ((error-page
(lambda ()
(run-error-page (G_ "Empty inputs are not allowed.")
@@ -230,33 +232,45 @@ administrator (\"root\").")
(set-current-component form ok-button))
(receive (exit-reason argument)
- (run-form form)
+ (run-form-with-clients form '(add-users))
(dynamic-wind
(const #t)
(lambda ()
- (when (eq? exit-reason 'exit-component)
- (cond
- ((components=? argument add-button)
- (run (cons (run-user-add-page) users)))
- ((components=? argument del-button)
- (let* ((current-user-key (current-listbox-entry listbox))
- (users
- (map (cut assoc-ref <> 'user)
- (remove (lambda (element)
- (equal? (assoc-ref element 'key)
- current-user-key))
- listbox-elements))))
- (run users)))
- ((components=? argument ok-button)
- (when (null? users)
- (run-error-page (G_ "Please create at least one user.")
- (G_ "No user"))
- (run users))
- (reverse users))
- ((components=? argument exit-button)
- (raise
- (condition
- (&installer-step-abort)))))))
+ (match exit-reason
+ ('exit-component
+ (cond
+ ((components=? argument add-button)
+ (run (cons (run-user-add-page) users)))
+ ((components=? argument del-button)
+ (let* ((current-user-key (current-listbox-entry listbox))
+ (users
+ (map (cut assoc-ref <> 'user)
+ (remove (lambda (element)
+ (equal? (assoc-ref element 'key)
+ current-user-key))
+ listbox-elements))))
+ (run users)))
+ ((components=? argument ok-button)
+ (when (null? users)
+ (run-error-page (G_ "Please create at least one user.")
+ (G_ "No user"))
+ (run users))
+ (reverse users))
+ ((components=? argument exit-button)
+ (raise
+ (condition
+ (&installer-step-abort))))))
+ ('exit-fd-ready
+ ;; Read the complete user list at once.
+ (match argument
+ ((('user ('name names) ('real-name real-names)
+ ('home-directory homes) ('password passwords))
+ ..1)
+ (map (lambda (name real-name home password)
+ (user (name name) (real-name real-name)
+ (home-directory home)
+ (password password)))
+ names real-names homes passwords))))))
(lambda ()
(destroy-form-and-pop form))))))
diff --git a/gnu/installer/newt/welcome.scm b/gnu/installer/newt/welcome.scm
index aec3e7a612..1b4b2df816 100644
--- a/gnu/installer/newt/welcome.scm
+++ b/gnu/installer/newt/welcome.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -11,16 +12,20 @@
;;; 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
-
;;;
;;; 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 (gnu installer newt welcome)
+ #:use-module (gnu installer steps)
#:use-module (gnu installer utils)
+ #:use-module (gnu installer newt page)
#:use-module (gnu installer newt utils)
#:use-module (guix build syscalls)
#:use-module (guix i18n)
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-34)
+ #:use-module (srfi srfi-35)
#:use-module (ice-9 match)
#:use-module (ice-9 receive)
#:use-module (newt)
@@ -66,24 +71,43 @@ we want this page to occupy all the screen space available."
GRID-ELEMENT-COMPONENT options-listbox))
(form (make-form)))
+ (define (choice->item str)
+ ;; Return the item that corresponds to STR.
+ (match (find (match-lambda
+ ((key . item)
+ (string=? str (listbox-item->text item))))
+ keys)
+ ((key . item) item)
+ (#f (raise (condition (&installer-step-abort))))))
+
(set-textbox-text logo-textbox (read-all logo))
(add-form-to-grid grid form #t)
(make-wrapped-grid-window grid title)
(receive (exit-reason argument)
- (run-form form)
+ (run-form-with-clients form
+ `(menu (title ,title)
+ (text ,info-text)
+ (items
+ ,(map listbox-item->text
+ listbox-items))))
(dynamic-wind
(const #t)
(lambda ()
- (when (eq? exit-reason 'exit-component)
- (cond
- ((components=? argument options-listbox)
- (let* ((entry (current-listbox-entry options-listbox))
- (item (assoc-ref keys entry)))
- (match item
- ((text . proc)
- (proc))))))))
+ (match exit-reason
+ ('exit-component
+ (let* ((entry (current-listbox-entry options-listbox))
+ (item (assoc-ref keys entry)))
+ (match item
+ ((text . proc)
+ (proc)))))
+ ('exit-fd-ready
+ (let* ((choice argument)
+ (item (choice->item choice)))
+ (match item
+ ((text . proc)
+ (proc)))))))
(lambda ()
(destroy-form-and-pop form))))))
diff --git a/gnu/installer/steps.scm b/gnu/installer/steps.scm
index b2fc819d89..0b6d8e4649 100644
--- a/gnu/installer/steps.scm
+++ b/gnu/installer/steps.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -19,6 +20,7 @@
(define-module (gnu installer steps)
#:use-module (guix records)
#:use-module (guix build utils)
+ #:use-module (gnu installer utils)
#:use-module (ice-9 match)
#:use-module (ice-9 pretty-print)
#:use-module (srfi srfi-1)
@@ -185,13 +187,18 @@ return the accumalated result so far."
#:todo-steps rest-steps
#:done-steps (append done-steps (list step))))))))
- (call-with-prompt 'raise-above
- (lambda ()
- (run '()
- #:todo-steps steps
- #:done-steps '()))
- (lambda (k condition)
- (raise condition))))
+ ;; Ignore SIGPIPE so that we don't die if a client closes the connection
+ ;; prematurely.
+ (sigaction SIGPIPE SIG_IGN)
+
+ (with-server-socket
+ (call-with-prompt 'raise-above
+ (lambda ()
+ (run '()
+ #:todo-steps steps
+ #:done-steps '()))
+ (lambda (k condition)
+ (raise condition)))))
(define (find-step-by-id steps id)
"Find and return the step in STEPS whose id is equal to ID."
@@ -249,3 +256,7 @@ found in RESULTS."
(pretty-print part port)))
configuration)
(flush-output-port port))))
+
+;;; Local Variables:
+;;; eval: (put 'with-server-socket 'scheme-indent-function 0)
+;;; End:
diff --git a/gnu/installer/tests.scm b/gnu/installer/tests.scm
new file mode 100644
index 0000000000..6f5393e3ab
--- /dev/null
+++ b/gnu/installer/tests.scm
@@ -0,0 +1,340 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 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 (gnu installer tests)
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-34)
+ #:use-module (srfi srfi-35)
+ #:use-module (ice-9 match)
+ #:use-module (ice-9 regex)
+ #:use-module (ice-9 pretty-print)
+ #:export (&pattern-not-matched
+ pattern-not-matched?
+
+ %installer-socket-file
+ open-installer-socket
+
+ converse
+ conversation-log-port
+
+ choose-locale+keyboard
+ enter-host-name+passwords
+ choose-services
+ choose-partitioning
+ conclude-installation
+
+ edit-configuration-file))
+
+;;; Commentary:
+;;;
+;;; This module provides tools to test the guided "graphical" installer in a
+;;; non-interactive fashion. The core of it is 'converse': it allows you to
+;;; state Expect-style dialogues, which happen over the Unix-domain socket the
+;;; installer listens to. Higher-level procedures such as
+;;; 'choose-locale+keyboard' are provided to perform specific parts of the
+;;; dialogue.
+;;;
+;;; Code:
+
+(define %installer-socket-file
+ ;; Socket the installer listens to.
+ "/var/guix/installer-socket")
+
+(define* (open-installer-socket #:optional (file %installer-socket-file))
+ "Return a socket connected to the installer."
+ (let ((sock (socket AF_UNIX SOCK_STREAM 0)))
+ (connect sock AF_UNIX file)
+ sock))
+
+(define-condition-type &pattern-not-matched &error
+ pattern-not-matched?
+ (pattern pattern-not-matched-pattern)
+ (sexp pattern-not-matched-sexp))
+
+(define (pattern-error pattern sexp)
+ (raise (condition
+ (&pattern-not-matched
+ (pattern pattern) (sexp sexp)))))
+
+(define conversation-log-port
+ ;; Port where debugging info is logged
+ (make-parameter (current-error-port)))
+
+(define (converse-debug pattern)
+ (format (conversation-log-port)
+ "conversation expecting pattern ~s~%"
+ pattern))
+
+(define-syntax converse
+ (lambda (s)
+ "Convert over PORT: read sexps from there, match them against each
+PATTERN, and send the corresponding REPLY. Raise to '&pattern-not-matched'
+when one of the PATTERNs is not matched."
+
+ ;; XXX: Strings that appear in PATTERNs must be in the language the
+ ;; installer is running in. In the future, we should add support to allow
+ ;; writing English strings in PATTERNs and have the pattern matcher
+ ;; automatically translate them.
+
+ ;; Here we emulate 'pmatch' syntax on top of 'match'. This is ridiculous
+ ;; but that's because 'pmatch' compares objects with 'eq?', making it
+ ;; pretty useless, and it doesn't support ellipses and such.
+
+ (define (quote-pattern s)
+ ;; Rewrite the pattern S from pmatch style (a ,b) to match style like
+ ;; ('a b).
+ (with-ellipsis :::
+ (syntax-case s (unquote _ ...)
+ ((unquote id) #'id)
+ (_ #'_)
+ (... #'...)
+ (id
+ (identifier? #'id)
+ #''id)
+ ((lst :::) (map quote-pattern #'(lst :::)))
+ (pattern #'pattern))))
+
+ (define (match-pattern s)
+ ;; Match one pattern without a guard.
+ (syntax-case s ()
+ ((port (pattern reply) continuation)
+ (with-syntax ((pattern (quote-pattern #'pattern)))
+ #'(let ((pat 'pattern))
+ (converse-debug pat)
+ (match (read port)
+ (pattern
+ (let ((data (call-with-values (lambda () reply)
+ list)))
+ (for-each (lambda (obj)
+ (write obj port)
+ (newline port))
+ data)
+ (force-output port)
+ (continuation port)))
+ (sexp
+ (pattern-error pat sexp))))))))
+
+ (syntax-case s ()
+ ((_ port (pattern reply) rest ...)
+ (match-pattern #'(port (pattern reply)
+ (lambda (port)
+ (converse port rest ...)))))
+ ((_ port (pattern guard reply) rest ...)
+ #`(let ((skip? (not guard))
+ (next (lambda (p)
+ (converse p rest ...))))
+ (if skip?
+ (next port)
+ #,(match-pattern #'(port (pattern reply) next)))))
+ ((_ port)
+ #t))))
+
+(define* (choose-locale+keyboard port
+ #:key
+ (language "English")
+ (location "Hong Kong")
+ (timezone '("Europe" "Zagreb"))
+ (keyboard
+ '("English (US)"
+ "English (intl., with AltGr dead keys)")))
+ "Converse over PORT with the guided installer to choose the specified
+LANGUAGE, LOCATION, TIMEZONE, and KEYBOARD."
+ (converse port
+ ((list-selection (title "Locale language")
+ (multiple-choices? #f)
+ (items _))
+ language)
+ ((list-selection (title "Locale location")
+ (multiple-choices? #f)
+ (items _))
+ location)
+ ((menu (title "GNU Guix install")
+ (text _)
+ (items (,guided _ ...))) ;"Guided graphical installation"
+ guided)
+ ((list-selection (title "Timezone")
+ (multiple-choices? #f)
+ (items _))
+ (first timezone))
+ ((list-selection (title "Timezone")
+ (multiple-choices? #f)
+ (items _))
+ (second timezone))
+ ((list-selection (title "Layout")
+ (multiple-choices? #f)
+ (items _))
+ (first keyboard))
+ ((list-selection (title "Variant")
+ (multiple-choices? #f)
+ (items _))
+ (second keyboard))))
+
+(define* (enter-host-name+passwords port
+ #:key
+ (host-name "guix")
+ (root-password "foo")
+ (users '(("alice" "pass1")
+ ("bob" "pass2")
+ ("charlie" "pass3"))))
+ "Converse over PORT with the guided installer to choose HOST-NAME,
+ROOT-PASSWORD, and USERS."
+ (converse port
+ ((input (title "Hostname") (text _) (default _))
+ host-name)
+ ((input (title "System administrator password") (text _) (default _))
+ root-password)
+ ((input (title "Password confirmation required") (text _) (default _))
+ root-password)
+ ((add-users)
+ (match users
+ (((names passwords) ...)
+ (map (lambda (name password)
+ `(user (name ,name) (real-name ,(string-titlecase name))
+ (home-directory ,(string-append "/home/" name))
+ (password ,password)))
+ names passwords))))))
+
+(define* (choose-services port
+ #:key
+ (desktop-environments '("GNOME"))
+ (choose-network-service?
+ (lambda (service)
+ (or (string-contains service "SSH")
+ (string-contains service "NSS"))))
+ (choose-network-management-tool?
+ (lambda (service)
+ (string-contains service "DHCP"))))
+ "Converse over PORT to choose networking services."
+ (converse port
+ ((checkbox-list (title "Desktop environment") (text _)
+ (items _))
+ desktop-environments)
+ ((checkbox-list (title "Network service") (text _)
+ (items ,services))
+ (filter choose-network-service? services))
+
+ ;; The "Network management" dialog shows up only when no desktop
+ ;; environments have been selected, hence the guard.
+ ((list-selection (title "Network management")
+ (multiple-choices? #f)
+ (items ,services))
+ (null? desktop-environments)
+ (find choose-network-management-tool? services))))
+
+(define (edit-configuration-file file)
+ "Edit FILE, an operating system configuration file generated by the
+installer, by adding a marionette service such that the installed OS is
+instrumented for further testing."
+ (define (read-expressions port)
+ (let loop ((result '()))
+ (match (read port)
+ ((? eof-object?)
+ (reverse result))
+ (exp
+ (loop (cons exp result))))))
+
+ (define (edit exp)
+ (match exp
+ (('operating-system _ ...)
+ `(marionette-operating-system ,exp
+ #:imported-modules
+ '((gnu services herd)
+ (guix build utils)
+ (guix combinators))))
+ (_
+ exp)))
+
+ (let ((content (call-with-input-file file read-expressions)))
+ (call-with-output-file file
+ (lambda (port)
+ (format port "\
+;; Operating system configuration edited for automated testing.~%~%")
+
+ (pretty-print '(use-modules (gnu tests)) port)
+ (for-each (lambda (exp)
+ (pretty-print (edit exp) port)
+ (newline port))
+ content)))
+
+ #t))
+
+(define* (choose-partitioning port
+ #:key
+ (encrypted? #t)
+ (passphrase "thepassphrase")
+ (edit-configuration-file
+ edit-configuration-file))
+ "Converse over PORT to choose the partitioning method. When ENCRYPTED? is
+true, choose full-disk encryption with PASSPHRASE as the LUKS passphrase.
+This conversation goes past the final dialog box that shows the configuration
+file, actually starting the installation process."
+ (converse port
+ ((list-selection (title "Partitioning method")
+ (multiple-choices? #f)
+ (items (,not-encrypted ,encrypted _ ...)))
+ (if encrypted?
+ encrypted
+ not-encrypted))
+ ((list-selection (title "Disk") (multiple-choices? #f)
+ (items (,disk _ ...)))
+ disk)
+
+ ;; The "Partition table" dialog pops up only if there's not already a
+ ;; partition table.
+ ((list-selection (title "Partition table")
+ (multiple-choices? #f)
+ (items _))
+ "gpt")
+ ((list-selection (title "Partition scheme")
+ (multiple-choices? #f)
+ (items (,one-partition _ ...)))
+ one-partition)
+ ((list-selection (title "Guided partitioning")
+ (multiple-choices? #f)
+ (items (,disk _ ...)))
+ disk)
+ ((input (title "Password required")
+ (text _) (default #f))
+ encrypted? ;only when ENCRYPTED?
+ passphrase)
+ ((input (title "Password confirmation required")
+ (text _) (default #f))
+ encrypted?
+ passphrase)
+ ((confirmation (title "Format disk?") (text _))
+ #t)
+ ((info (title "Preparing partitions") _ ...)
+ (values)) ;nothing to return
+ ((file-dialog (title "Configuration file")
+ (text _)
+ (file ,configuration-file))
+ (edit-configuration-file configuration-file))))
+
+(define (conclude-installation port)
+ "Conclude the installation by checking over PORT that we get the final
+messages once the 'guix system init' process has completed."
+ (converse port
+ ((pause) ;"Press Enter to continue."
+ #t)
+ ((installation-complete) ;congratulations!
+ (values))))
+
+;;; Local Variables:
+;;; eval: (put 'converse 'scheme-indent-function 1)
+;;; eval: (put 'with-ellipsis 'scheme-indent-function 1)
+;;; End:
diff --git a/gnu/installer/utils.scm b/gnu/installer/utils.scm
index 842bd02ced..0a91ae1e4a 100644
--- a/gnu/installer/utils.scm
+++ b/gnu/installer/utils.scm
@@ -21,7 +21,9 @@
#:use-module (guix utils)
#:use-module (guix build utils)
#:use-module (guix i18n)
+ #:use-module (srfi srfi-1)
#:use-module (srfi srfi-34)
+ #:use-module (ice-9 match)
#:use-module (ice-9 rdelim)
#:use-module (ice-9 regex)
#:use-module (ice-9 format)
@@ -30,10 +32,15 @@
read-all
nearest-exact-integer
read-percentage
- run-shell-command
+ run-command
syslog-port
- syslog))
+ syslog
+
+ with-server-socket
+ current-server-socket
+ current-clients
+ send-to-clients))
(define* (read-lines #:optional (port (current-input-port)))
"Read lines from PORT and return them as a list."
@@ -61,44 +68,48 @@ number. If no percentage is found, return #f"
(and result
(string->number (match:substring result 1)))))
-(define* (run-shell-command command #:key locale)
- "Run COMMAND, a string, with Bash, and in the given LOCALE. Return true if
+(define* (run-command command #:key locale)
+ "Run COMMAND, a list of strings, in the given LOCALE. Return true if
COMMAND exited successfully, #f otherwise."
+ (define env (environ))
+
(define (pause)
(format #t (G_ "Press Enter to continue.~%"))
- (read-line (current-input-port)))
-
- (call-with-temporary-output-file
- (lambda (file port)
- (when locale
- (let ((supported? (false-if-exception
- (setlocale LC_ALL locale))))
- ;; If LOCALE is not supported, then set LANGUAGE, which might at
- ;; least give us translated messages.
- (if supported?
- (format port "export LC_ALL=\"~a\"~%" locale)
- (format port "export LANGUAGE=\"~a\"~%"
- (string-take locale
- (string-index locale #\_))))))
-
- (format port "exec ~a~%" command)
- (close port)
-
- (guard (c ((invoke-error? c)
- (newline)
- (format (current-error-port)
- (G_ "Command failed with exit code ~a.~%")
- (invoke-error-exit-status c))
- (syslog "command ~s failed with exit code ~a"
- command (invoke-error-exit-status c))
- (pause)
- #f))
- (syslog "running command ~s~%" command)
- (invoke "bash" "--init-file" file)
- (syslog "command ~s succeeded~%" command)
- (newline)
- (pause)
- #t))))
+ (send-to-clients '(pause))
+ (environ env) ;restore environment variables
+ (match (select (cons (current-input-port) (current-clients))
+ '() '())
+ (((port _ ...) _ _)
+ (read-line port))))
+
+ (setenv "PATH" "/run/current-system/profile/bin")
+
+ (when locale
+ (let ((supported? (false-if-exception
+ (setlocale LC_ALL locale))))
+ ;; If LOCALE is not supported, then set LANGUAGE, which might at
+ ;; least give us translated messages.
+ (if supported?
+ (setenv "LC_ALL" locale)
+ (setenv "LANGUAGE"
+ (string-take locale
+ (string-index locale #\_))))))
+
+ (guard (c ((invoke-error? c)
+ (newline)
+ (format (current-error-port)
+ (G_ "Command failed with exit code ~a.~%")
+ (invoke-error-exit-status c))
+ (syslog "command ~s failed with exit code ~a"
+ command (invoke-error-exit-status c))
+ (pause)
+ #f))
+ (syslog "running command ~s~%" command)
+ (apply invoke command)
+ (syslog "command ~s succeeded~%" command)
+ (newline)
+ (pause)
+ #t))
;;;
@@ -134,3 +145,76 @@ COMMAND exited successfully, #f otherwise."
(with-syntax ((fmt (string-append "installer[~d]: "
(syntax->datum #'fmt))))
#'(format (syslog-port) fmt (getpid) args ...))))))
+
+
+;;;
+;;; Client protocol.
+;;;
+
+(define %client-socket-file
+ ;; Unix-domain socket where the installer accepts connections.
+ "/var/guix/installer-socket")
+
+(define current-server-socket
+ ;; Socket on which the installer is currently accepting connections, or #f.
+ (make-parameter #f))
+
+(define current-clients
+ ;; List of currently connected clients.
+ (make-parameter '()))
+
+(define* (open-server-socket
+ #:optional (socket-file %client-socket-file))
+ "Open SOCKET-FILE as a Unix-domain socket to accept incoming connections and
+return it."
+ (mkdir-p (dirname socket-file))
+ (when (file-exists? socket-file)
+ (delete-file socket-file))
+ (let ((sock (socket AF_UNIX SOCK_STREAM 0)))
+ (bind sock AF_UNIX socket-file)
+ (listen sock 0)
+ sock))
+
+(define (call-with-server-socket thunk)
+ (if (current-server-socket)
+ (thunk)
+ (let ((socket (open-server-socket)))
+ (dynamic-wind
+ (const #t)
+ (lambda ()
+ (parameterize ((current-server-socket socket))
+ (thunk)))
+ (lambda ()
+ (close-port socket))))))
+
+(define-syntax-rule (with-server-socket exp ...)
+ "Evaluate EXP with 'current-server-socket' parameterized to a currently
+accepting socket."
+ (call-with-server-socket (lambda () exp ...)))
+
+(define* (send-to-clients exp)
+ "Send EXP to all the current clients."
+ (define remainder
+ (fold (lambda (client remainder)
+ (catch 'system-error
+ (lambda ()
+ (write exp client)
+ (newline client)
+ (force-output client)
+ (cons client remainder))
+ (lambda args
+ ;; We might get EPIPE if the client disconnects; when that
+ ;; happens, remove CLIENT from the set of available clients.
+ (let ((errno (system-error-errno args)))
+ (if (memv errno (list EPIPE ECONNRESET ECONNABORTED))
+ (begin
+ (syslog "removing client ~s due to ~s while replying~%"
+ (fileno client) (strerror errno))
+ (false-if-exception (close-port client))
+ remainder)
+ (cons client remainder))))))
+ '()
+ (current-clients)))
+
+ (current-clients (reverse remainder))
+ exp)
diff --git a/gnu/local.mk b/gnu/local.mk
index 7c3e2648e9..cc219b42df 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -656,6 +656,7 @@ INSTALLER_MODULES = \
%D%/installer/record.scm \
%D%/installer/services.scm \
%D%/installer/steps.scm \
+ %D%/installer/tests.scm \
%D%/installer/timezone.scm \
%D%/installer/user.scm \
%D%/installer/utils.scm \
@@ -713,10 +714,11 @@ dist_patch_DATA = \
%D%/packages/patches/aegisub-boost68.patch \
%D%/packages/patches/agg-am_c_prototype.patch \
%D%/packages/patches/akonadi-paths.patch \
- %D%/packages/patches/akonadi-Revert-Make-installation-properly-relocatabl.patch \
+ %D%/packages/patches/akonadi-Revert-Make-installation-properly-relo.patch \
%D%/packages/patches/akonadi-timestamps.patch \
%D%/packages/patches/allegro-mesa-18.2.5-and-later.patch \
%D%/packages/patches/amule-crypto-6.patch \
+ %D%/packages/patches/anki-mpv-args.patch \
%D%/packages/patches/antiword-CVE-2014-8123.patch \
%D%/packages/patches/antlr3-3_1-fix-java8-compilation.patch \
%D%/packages/patches/antlr3-3_3-fix-java8-compilation.patch \
@@ -801,7 +803,6 @@ dist_patch_DATA = \
%D%/packages/patches/cpufrequtils-fix-aclocal.patch \
%D%/packages/patches/crawl-upgrade-saves.patch \
%D%/packages/patches/crda-optional-gcrypt.patch \
- %D%/packages/patches/csvkit-fix-tests.patch \
%D%/packages/patches/clucene-contribs-lib.patch \
%D%/packages/patches/cube-nocheck.patch \
%D%/packages/patches/curl-use-ssl-cert-env.patch \
@@ -988,6 +989,7 @@ dist_patch_DATA = \
%D%/packages/patches/guile-1.8-cpp-4.5.patch \
%D%/packages/patches/guile-2.2-default-utf8.patch \
%D%/packages/patches/guile-2.2-skip-oom-test.patch \
+ %D%/packages/patches/guile-3.0-crash.patch \
%D%/packages/patches/guile-default-utf8.patch \
%D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch \
%D%/packages/patches/guile-finalization-crash.patch \
@@ -1123,7 +1125,6 @@ dist_patch_DATA = \
%D%/packages/patches/libmpeg2-global-symbol-test.patch \
%D%/packages/patches/libmygpo-qt-fix-qt-5.11.patch \
%D%/packages/patches/libmygpo-qt-missing-qt5-modules.patch \
- %D%/packages/patches/libseccomp-open-aarch64.patch \
%D%/packages/patches/libsndfile-armhf-type-checks.patch \
%D%/packages/patches/libsndfile-CVE-2017-8361-8363-8365.patch \
%D%/packages/patches/libsndfile-CVE-2017-8362.patch \
@@ -1265,7 +1266,7 @@ dist_patch_DATA = \
%D%/packages/patches/sdl-pango-api_additions.patch \
%D%/packages/patches/sdl-pango-blit_overflow.patch \
%D%/packages/patches/sdl-pango-fillrect_crash.patch \
- %D%/packages/patches/sdl-pango-fix-explicit-SDLPango_CopyFTBitmapToSurface.patch \
+ %D%/packages/patches/sdl-pango-fix-explicit-SDLPango_CopyFTBitmapTo.patch \
%D%/packages/patches/sdl-pango-matrix_declarations.patch \
%D%/packages/patches/sdl-pango-sans-serif.patch \
%D%/packages/patches/patchutils-test-perms.patch \
@@ -1357,6 +1358,7 @@ dist_patch_DATA = \
%D%/packages/patches/qemu-CVE-2020-1711.patch \
%D%/packages/patches/qemu-CVE-2020-7039.patch \
%D%/packages/patches/qemu-CVE-2020-7211.patch \
+ %D%/packages/patches/qemu-CVE-2020-8608.patch \
%D%/packages/patches/qemu-fix-documentation-build-failure.patch \
%D%/packages/patches/qrcodegen-cpp-make-install.patch \
%D%/packages/patches/qt4-ldflags.patch \
@@ -1415,8 +1417,8 @@ dist_patch_DATA = \
%D%/packages/patches/snappy-add-O2-flag-in-CmakeLists.txt.patch \
%D%/packages/patches/sooperlooper-build-with-wx-30.patch \
%D%/packages/patches/soundconverter-remove-gconf-dependency.patch \
- %D%/packages/patches/spice-fix-test-armhf.patch \
%D%/packages/patches/steghide-fixes.patch \
+ %D%/packages/patches/suitesparse-mongoose-cmake.patch \
%D%/packages/patches/superlu-dist-awpm-grid.patch \
%D%/packages/patches/superlu-dist-scotchmetis.patch \
%D%/packages/patches/supertux-unbundle-squirrel.patch \
@@ -1497,7 +1499,6 @@ dist_patch_DATA = \
%D%/packages/patches/wicd-wpa2-ttls.patch \
%D%/packages/patches/wmctrl-64-fix.patch \
%D%/packages/patches/wmfire-update-for-new-gdk-versions.patch \
- %D%/packages/patches/woff2-libbrotli.patch \
%D%/packages/patches/wordnet-CVE-2008-2149.patch \
%D%/packages/patches/wordnet-CVE-2008-3908-pt1.patch \
%D%/packages/patches/wordnet-CVE-2008-3908-pt2.patch \
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 6fb342dfee..af29dc30fe 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -211,10 +211,10 @@ and provides a \"top-like\" mode (monitoring).")
`(("pkg-config" ,pkg-config)
;; This is the Guile we use as a cross-compiler...
- ("guile" ,guile-2.2)))
+ ("guile" ,guile-2.2.7)))
(inputs
;; ... and this is the one that appears in shebangs when cross-compiling.
- `(("guile" ,guile-2.2) ;for <https://bugs.gnu.org/37757>
+ `(("guile" ,guile-2.2.7) ;for <https://bugs.gnu.org/37757>
;; The 'shepherd' command uses Readline when used interactively. It's
;; an unusual use case though, so we don't propagate it.
diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm
index 1ad49baf8e..0fdddc88e9 100644
--- a/gnu/packages/assembly.scm
+++ b/gnu/packages/assembly.scm
@@ -111,7 +111,7 @@ has strong support for macros.")
(inputs
`(("python" ,python-wrapper)
("xmlto" ,xmlto)))
- (home-page "http://yasm.tortall.net/")
+ (home-page "https://yasm.tortall.net/")
(synopsis "Rewrite of the NASM assembler")
(description
"Yasm is a complete rewrite of the NASM assembler.
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index d0f55a96b8..8be5c9c9af 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -45,26 +45,14 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages audio)
- #:use-module (guix packages)
- #:use-module (guix download)
- #:use-module (guix git-download)
- #:use-module (guix utils)
- #:use-module ((guix licenses) #:prefix license:)
- #:use-module (guix build-system gnu)
- #:use-module (guix build-system waf)
- #:use-module (guix build-system trivial)
- #:use-module (guix build-system cmake)
- #:use-module (guix build-system meson)
- #:use-module (guix build-system python)
- #:use-module (guix build-system glib-or-gtk)
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages autotools)
#:use-module (gnu packages avahi)
- #:use-module (gnu packages boost)
#:use-module (gnu packages backup)
#:use-module (gnu packages base)
#:use-module (gnu packages bison)
+ #:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
@@ -78,25 +66,29 @@
#:use-module (gnu packages gcc)
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
- #:use-module (gnu packages gtk)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gnunet) ; libmicrohttpd
#:use-module (gnu packages gperf)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages guile)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
- #:use-module (gnu packages ncurses)
- #:use-module (gnu packages onc-rpc)
- #:use-module (gnu packages qt)
#:use-module (gnu packages libbsd)
- #:use-module (gnu packages linux)
#:use-module (gnu packages libusb)
+ #:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
+ #:use-module (gnu packages maths)
#:use-module (gnu packages mp3) ;taglib
+ #:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages music)
+ #:use-module (gnu packages ncurses)
+ #:use-module (gnu packages onc-rpc)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages qt)
#:use-module (gnu packages rdf)
#:use-module (gnu packages readline)
#:use-module (gnu packages sdl)
@@ -110,9 +102,18 @@
#:use-module (gnu packages xiph)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
- #:use-module (gnu packages maths)
- #:use-module (gnu packages multiprecision)
- #:use-module (gnu packages music)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix build-system glib-or-gtk)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system meson)
+ #:use-module (guix build-system python)
+ #:use-module (guix build-system trivial)
+ #:use-module (guix build-system waf)
+ #:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix utils)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26))
@@ -3923,11 +3924,22 @@ as is the case with audio plugins.")
(list (string-append "PREFIX=" (assoc-ref %outputs "out")))
#:phases
(modify-phases %standard-phases
+ (delete 'configure) ; no configure script
(add-before 'build 'set-CC-variable-and-show-features
(lambda _
(setenv "CC" "gcc")
(invoke "make" "features")))
- (delete 'configure))))
+ (add-after 'install 'make-carla-executable
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (chmod (string-append out "/share/carla/carla") #o555)
+ #t)))
+ (add-after 'install 'wrap-executables
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (wrap-script (string-append out "/bin/carla")
+ `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))))
+ #t))))))
(inputs
`(("alsa-lib" ,alsa-lib)
("ffmpeg" ,ffmpeg)
@@ -3945,7 +3957,10 @@ as is the case with audio plugins.")
("python-wrapper" ,python-wrapper)
("libx11" ,libx11)
("qtbase" ,qtbase)
- ("zlib" ,zlib)))
+ ("zlib" ,zlib)
+
+ ;; For WRAP-SCRIPT above.
+ ("guile" ,guile-2.2)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(home-page "https://kx.studio/Applications:Carla")
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 63687036fc..167cb00ece 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -4026,14 +4026,14 @@ position-specific scores within R and Bioconductor.")
(define-public r-atacseqqc
(package
(name "r-atacseqqc")
- (version "1.10.2")
+ (version "1.10.3")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "ATACseqQC" version))
(sha256
(base32
- "0dzrizacy3br8fiy1vnsl5zf242lg1hqv9dyv5ayqh2n480is57f"))))
+ "18zf90iksglbs13cwr4jjwsv332a19lf4bpdmy69jz8bpwrklv22"))))
(properties `((upstream-name . "ATACseqQC")))
(build-system r-build-system)
(propagated-inputs
@@ -4055,6 +4055,8 @@ position-specific scores within R and Bioconductor.")
("r-rsamtools" ,r-rsamtools)
("r-rtracklayer" ,r-rtracklayer)
("r-s4vectors" ,r-s4vectors)))
+ (native-inputs
+ `(("r-knitr" ,r-knitr)))
(home-page "https://bioconductor.org/packages/ATACseqQC/")
(synopsis "ATAC-seq quality control")
(description
@@ -4315,14 +4317,14 @@ visualization with image data.")
(define-public r-yamss
(package
(name "r-yamss")
- (version "1.12.0")
+ (version "1.12.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "yamss" version))
(sha256
(base32
- "1n49a2vg1667wycrjww29xfafngllvpb5nq5wy6pgn0akva91nky"))))
+ "12jr7hbrwhb1gfjadj1024hv80ra22miy46dn40nmsrbklkfn3rw"))))
(build-system r-build-system)
(propagated-inputs
`(("r-biocgenerics" ,r-biocgenerics)
@@ -4693,14 +4695,14 @@ based on @dfn{Continuous Wavelet Transform} (CWT).")
(define-public r-xcms
(package
(name "r-xcms")
- (version "3.8.1")
+ (version "3.8.2")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "xcms" version))
(sha256
(base32
- "18iglvlvlxrdwn2apdvihj9jxmx0kwm5z37rml67xcj9sfdi3bjb"))))
+ "0bfl56v3l6k31i11l09nx1yqfjy6z5yragm6k83z4w0mpgk18y7g"))))
(build-system r-build-system)
(propagated-inputs
`(("r-biobase" ,r-biobase)
@@ -5943,14 +5945,14 @@ delete entire rows with missing data.")
(define-public r-depecher
(package
(name "r-depecher")
- (version "1.2.1")
+ (version "1.2.2")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "DepecheR" version))
(sha256
(base32
- "08ja6ayvbax9m3x9w3xzi72z97miiha2nbsild1gp77n6sgn5i35"))))
+ "199j2kw0xnw7y4v1gakm2jgyc7zzlj8xh0570f2yjq55gp1kggbm"))))
(properties `((upstream-name . "DepecheR")))
(build-system r-build-system)
(propagated-inputs
@@ -5970,6 +5972,8 @@ delete entire rows with missing data.")
("r-reshape2" ,r-reshape2)
("r-robustbase" ,r-robustbase)
("r-viridis" ,r-viridis)))
+ (native-inputs
+ `(("r-knitr" ,r-knitr)))
(home-page "https://bioconductor.org/packages/DepecheR/")
(synopsis "Identify traits of clusters in high-dimensional entities")
(description
@@ -7290,14 +7294,14 @@ access.")
(define-public r-multiassayexperiment
(package
(name "r-multiassayexperiment")
- (version "1.12.3")
+ (version "1.12.4")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "MultiAssayExperiment" version))
(sha256
(base32
- "1vf6l88j3n6109j6sd08wfqxqpj2k20dvr8ll9zl1szsn18b4gny"))))
+ "01cnp00y5bk551c8gqgqp5468dvccg72i0rvh5cxgbx1c42zy6xn"))))
(properties
`((upstream-name . "MultiAssayExperiment")))
(build-system r-build-system)
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 0c12e7c874..035a7bb808 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -6536,31 +6536,56 @@ Cuffdiff or Ballgown programs.")
(define-public taxtastic
(package
(name "taxtastic")
- (version "0.8.5")
+ (version "0.8.11")
(source (origin
- (method url-fetch)
- (uri (pypi-uri "taxtastic" version))
+ ;; The Pypi version does not include tests.
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/fhcrc/taxtastic.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "03pysw79lsrvz4lwzis88j15067ffqbi4cid5pqhrlxmd6bh8rrk"))))
+ "1sv8mkg64jn7zdwf1jj71c16686yrwxk0apb1l8sjszy9p166g0p"))))
(build-system python-build-system)
(arguments
- `(#:python ,python-2
- #:phases
+ `(#:phases
(modify-phases %standard-phases
+ (add-after 'unpack 'prepare-directory
+ (lambda _
+ ;; The git checkout must be writable for tests.
+ (for-each make-file-writable (find-files "."))
+ ;; This test fails, but the error is not caught by the test
+ ;; framework, so the tests fail...
+ (substitute* "tests/test_taxit.py"
+ (("self.cmd_fails\\(''\\)")
+ "self.cmd_fails('nothing')"))
+ ;; This version file is expected to be created with git describe.
+ (mkdir-p "taxtastic/data")
+ (with-output-to-file "taxtastic/data/ver"
+ (lambda () (display ,version)))
+ #t))
+ (add-after 'unpack 'python37-compatibility
+ (lambda _
+ (substitute* "taxtastic/utils.py"
+ (("import csv") "import csv, errno")
+ (("os.errno") "errno"))
+ #t))
(replace 'check
- (lambda _ (invoke "python" "-m" "unittest" "discover" "-v") #t)))))
+ ;; Note, this fails to run with "-v" as it tries to write to a
+ ;; closed output stream.
+ (lambda _ (invoke "python" "-m" "unittest") #t)))))
(propagated-inputs
- `(("python-sqlalchemy" ,python2-sqlalchemy)
- ("python-decorator" ,python2-decorator)
- ("python-biopython" ,python2-biopython)
- ("python-pandas" ,python2-pandas)
- ("python-psycopg2" ,python2-psycopg2)
- ("python-fastalite" ,python2-fastalite)
- ("python-pyyaml" ,python2-pyyaml)
- ("python-six" ,python2-six)
- ("python-jinja2" ,python2-jinja2)
- ("python-dendropy" ,python2-dendropy)))
+ `(("python-sqlalchemy" ,python-sqlalchemy)
+ ("python-decorator" ,python-decorator)
+ ("python-biopython" ,python-biopython)
+ ("python-pandas" ,python-pandas)
+ ("python-psycopg2" ,python-psycopg2)
+ ("python-fastalite" ,python-fastalite)
+ ("python-pyyaml" ,python-pyyaml)
+ ("python-six" ,python-six)
+ ("python-jinja2" ,python-jinja2)
+ ("python-dendropy" ,python-dendropy)))
(home-page "https://github.com/fhcrc/taxtastic")
(synopsis "Tools for taxonomic naming and annotation")
(description
@@ -9091,6 +9116,8 @@ number detection tools.")
("r-rtracklayer" ,r-rtracklayer)
("r-s4vectors" ,r-s4vectors)
("r-zlibbioc" ,r-zlibbioc)))
+ (native-inputs
+ `(("r-knitr" ,r-knitr))) ; for vignettes
(inputs
`(("zlib" ,zlib)))
(home-page "https://github.com/al2na/methylKit")
@@ -9360,6 +9387,8 @@ analysis.")
("r-ggplot2" ,r-ggplot2)
("r-lattice" ,r-lattice)
("r-limma" ,r-limma)))
+ (native-inputs
+ `(("r-knitr" ,r-knitr))) ; for vignettes
(home-page "https://bioconductor.org/packages/release/bioc/html/vsn.html")
(synopsis "Variance stabilization and calibration for microarray data")
(description
@@ -13238,18 +13267,14 @@ in RNA-seq data.")
(define-public python-scanpy
(package
(name "python-scanpy")
- (version "1.4")
- ;; Fetch from git because the pypi tarball does not include tests.
+ (version "1.4.5.1")
(source
(origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/theislab/scanpy.git")
- (commit version)))
- (file-name (git-file-name name version))
+ (method url-fetch)
+ (uri (pypi-uri "scanpy" version))
(sha256
(base32
- "0zn6x6c0cnm1a20i6isigwb51g3pr9zpjk8r1minjqnxi5yc9pm4"))))
+ "14kh1ji70xxhmri5q8sgcibsidhr6f221wxrcw8a5xvibj5da17j"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -13276,18 +13301,23 @@ in RNA-seq data.")
("python-igraph" ,python-igraph)
("python-joblib" ,python-joblib)
("python-louvain" ,python-louvain)
+ ("python-legacy-api-wrap" ,python-legacy-api-wrap)
("python-matplotlib" ,python-matplotlib)
("python-natsort" ,python-natsort)
("python-networkx" ,python-networkx)
("python-numba" ,python-numba)
+ ("python-packaging" ,python-packaging)
("python-pandas" ,python-pandas)
+ ("python-patsy" ,python-patsy)
("python-scikit-learn" ,python-scikit-learn)
("python-scipy" ,python-scipy)
("python-seaborn" ,python-seaborn)
("python-statsmodels" ,python-statsmodels)
- ("python-tables" ,python-tables)))
+ ("python-tables" ,python-tables)
+ ("python-umap-learn" ,python-umap-learn)))
(native-inputs
- `(("python-pytest" ,python-pytest)))
+ `(("python-pytest" ,python-pytest)
+ ("python-setuptools-scm" ,python-setuptools-scm)))
(home-page "https://github.com/theislab/scanpy")
(synopsis "Single-Cell Analysis in Python.")
(description "Scanpy is a scalable toolkit for analyzing single-cell gene
@@ -13953,7 +13983,7 @@ datasets.")
(define-public ngless
(package
(name "ngless")
- (version "1.0.1")
+ (version "1.1.0")
(source
(origin
(method git-fetch)
@@ -13963,7 +13993,7 @@ datasets.")
(file-name (git-file-name name version))
(sha256
(base32
- "06ygv8q2zjqsnrid1302yrlhhvb8ik48nq6n0higk3i1mdc8r0dg"))))
+ "1wim8wpqyff080dfcazynrmjwqas38m24m0v350w245mmhrapdma"))))
(build-system haskell-build-system)
(arguments
`(#:haddock? #f ; The haddock phase fails with: NGLess/CmdArgs.hs:20:1:
@@ -14423,6 +14453,8 @@ repeated areas between contigs.")
(base32
"0fgygyzqgrq32dv6a00biq1p1cwi6kbl5iqblxq1kklj6b2mzmhs"))))
(build-system python-build-system)
+ (native-inputs
+ `(("python-joblib" ,python-joblib)))
(propagated-inputs
`(("python-click" ,python-click)
("python-cython" ,python-cython)
diff --git a/gnu/packages/ccache.scm b/gnu/packages/ccache.scm
index b3f0cbbd95..529742403e 100644
--- a/gnu/packages/ccache.scm
+++ b/gnu/packages/ccache.scm
@@ -30,30 +30,29 @@
(define-public ccache
(package
(name "ccache")
- (version "3.6")
+ (version "3.7.7")
(source
(origin
(method url-fetch)
- (uri (string-append "https://www.samba.org/ftp/ccache/ccache-"
- version ".tar.xz"))
+ (uri (string-append "https://github.com/ccache/ccache/releases/download/v"
+ version "/ccache-" version ".tar.xz"))
(sha256
- (base32 "07wv75xdcxpdkfsz9h5ffrm8pjbvr1dh6wnb02nyzz18cdbjkcd6"))))
+ (base32 "1kcqii3hr1008gj6jgfsjibwh2ryhsplc9z99m18xwa2zvbddhdp"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl) ; for test/run
("which" ,(@ (gnu packages base) which))))
(inputs `(("zlib" ,zlib)))
(arguments
'(#:phases (modify-phases %standard-phases
- (add-before 'check 'setup-tests
- (lambda _
- (substitute* '("unittest/test_hashutil.c" "test/suites/base.bash")
- (("#!/bin/sh") (string-append "#!" (which "sh"))))
- #t)))))
- (home-page "https://ccache.samba.org/")
+ (add-before 'check 'setup-tests
+ (lambda _
+ (substitute* '("unittest/test_hashutil.c" "test/suites/base.bash")
+ (("#!/bin/sh") (string-append "#!" (which "sh"))))
+ #t)))))
+ (home-page "https://ccache.dev/")
(synopsis "Compiler cache")
(description
"Ccache is a compiler cache. It speeds up recompilation by caching
previous compilations and detecting when the same compilation is being done
-again. Supported languages are C, C++, Objective-C, Objective-C++, and
-Fortran 77.")
+again. Supported languages are C, C++, Objective-C and Objective-C++.")
(license gpl3+)))
diff --git a/gnu/packages/chemistry.scm b/gnu/packages/chemistry.scm
index 3bdd406a47..2b3b5d7df6 100644
--- a/gnu/packages/chemistry.scm
+++ b/gnu/packages/chemistry.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -147,7 +148,7 @@ powerful plugin architecture.")
`(#:python ,python-2
;; No test suite
#:tests? #f))
- (home-page "http://dirac.cnrs-orleans.fr/DomainFinder")
+ (home-page "http://dirac.cnrs-orleans.fr/DomainFinder.html")
(synopsis "Analysis of dynamical domains in proteins")
(description "DomainFinder is an interactive program for the determination
and characterization of dynamical domains in proteins. It can infer dynamical
@@ -290,7 +291,7 @@ analogy is that InChI is the bar-code for chemistry and chemical structures.")
;; Show documentation as PDF
(("PREFERENCES\\['documentation_style'\\] = 'html'")
"PREFERENCES['documentation_style'] = 'pdf'") ))))))
- (home-page "http://dirac.cnrs-orleans.fr/nMOLDYN/")
+ (home-page "http://dirac.cnrs-orleans.fr/nMOLDYN.html")
(synopsis "Analysis software for Molecular Dynamics trajectories")
(description "nMOLDYN is an interactive analysis program for Molecular Dynamics
simulations. It is especially designed for the computation and decomposition of
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index 275eb0588b..f73c76b827 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -826,7 +826,9 @@ from forcing GEXP-PROMISE."
;; Building Chromium takes ... a very long time. On a single core, a busy
;; mid-end x86 system may need more than 24 hours to complete the build.
- (properties '((timeout . 144000))) ;40 hours
+ (properties '((timeout . 144000) ;40 hours
+ ;; The linking step may take more than an hour on some hardware.
+ (max-silent-time . 7200)))
(home-page "https://github.com/Eloston/ungoogled-chromium")
(description
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 9ccb34ad4b..c3b5632cba 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -25,6 +25,7 @@
;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -424,7 +425,8 @@ compatible with bzip2 – both at file format and command line level.")
#:phases (modify-phases %standard-phases
(delete 'configure)) ; no configure script
#:make-flags (list (string-append "PREFIX=" %output))))
- (home-page "http://compression.ca/pbzip2/")
+ (home-page (string-append "https://web.archive.org/web/20180412020219/"
+ "http://compression.ca/pbzip2/"))
(synopsis "Parallel bzip2 implementation")
(description
"Pbzip2 is a parallel implementation of the bzip2 block-sorting file
@@ -822,7 +824,7 @@ time for compression ratio.")
("lzo" ,lzo)
("xz" ,xz)
("zlib" ,zlib)))
- (home-page "http://squashfs.sourceforge.net/")
+ (home-page "https://github.com/plougher/squashfs-tools")
(synopsis "Tools to create and extract squashfs file systems")
(description
"Squashfs is a highly compressed read-only file system for Linux. It uses
@@ -897,49 +899,6 @@ possible and can compress in parallel. This is especially useful for large
tarballs.")
(license license:bsd-2)))
-(define-public brotli
- (let ((commit "e992cce7a174d6e2b3486616499d26bb0bad6448")
- (revision "1"))
- (package
- (name "brotli")
- (version (string-append "0.1-" revision "."
- (string-take commit 7)))
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/bagder/libbrotli.git")
- (commit commit)
- (recursive? #t)))
- (file-name (string-append name "-" version ".tar.xz"))
- (sha256
- (base32
- "1qxxsasvwbbbh6dl3138y9h3fg0q2v7xdk5jjc690bdg7g1wrj6n"))
- (modules '((guix build utils)))
- (snippet '(begin
- ;; This is a recursive submodule that is
- ;; unnecessary for this package, so delete it.
- (delete-file-recursively "brotli/terryfy")
- #t))))
- (build-system gnu-build-system)
- (native-inputs
- `(("autoconf" ,autoconf)
- ("automake" ,automake)
- ("libtool" ,libtool)))
- (arguments
- `(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'autogen
- (lambda _
- (mkdir "m4")
- (invoke "autoreconf" "-vfi"))))))
- (home-page "https://github.com/bagder/libbrotli/")
- (synopsis "Implementation of the Brotli compression algorithm")
- (description
- "Brotli is a general-purpose lossless compression algorithm. It is
-similar in speed to deflate but offers denser compression. This package
-provides encoder and a decoder libraries: libbrotlienc and libbrotlidec,
-respectively, based on the reference implementation from Google.")
- (license license:expat))))
-
(define-public bsdiff
(package
(name "bsdiff")
@@ -1888,6 +1847,10 @@ with @code{deflate} but offers more dense compression.
The specification of the Brotli Compressed Data Format is defined in RFC 7932.")
(license license:expat)))
+(define-public brotli
+ ;; We used to provide an older version under the name "brotli".
+ (deprecated-package "brotli" google-brotli))
+
(define-public ucl
(package
(name "ucl")
diff --git a/gnu/packages/coq.scm b/gnu/packages/coq.scm
index 3eba39e5d0..f883c2f690 100644
--- a/gnu/packages/coq.scm
+++ b/gnu/packages/coq.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Dan Frumin <dfrumin@cs.ru.nl>
;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
+;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -353,7 +354,7 @@ assistant.")
(string-append "COQLIB=" (assoc-ref outputs "out")
"/lib/coq/")
"install"))))))
- (home-page "https://math-comp.github.io/math-comp/")
+ (home-page "https://math-comp.github.io/")
(synopsis "Mathematical Components for Coq")
(description "Mathematical Components for Coq has its origins in the formal
proof of the Four Colour Theorem. Since then it has grown to cover many areas
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index dba9ec75f6..0c5692b125 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -462,7 +462,7 @@ point and then, after each tween step, plugging back the result.")
;;
;; ld: CMakeFiles/absl_periodic_sampler_test.dir/internal/periodic_sampler_test.cc.o:
;; undefined reference to symbol '_ZN7testing4Mock16UnregisterLockedEPNS_8internal25UntypedFunctionMockerBaseE'
- ;; ld: /gnu/store/bxapb1f1l8frjpbjckk3zdxhmcig3xzk-googletest-1.10.0/lib/libgmock.so:
+ ;; ld: /gnu/store/...-googletest-1.10.0/lib/libgmock.so:
;; error adding symbols: DSO missing from command line
;; collect2: error: ld returned 1 exit status
"-DCMAKE_EXE_LINKER_FLAGS=-lgtest -lpthread -lgmock")
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 6ca47c8755..ee4ad98d44 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -977,7 +977,7 @@ supports interactive trees, to enable rich, editable trees in Shiny.")
("r-shiny" ,r-shiny)))
(native-inputs
`(("uglify-js" ,uglify-js)))
- (home-page "http://rstudio.github.io/shinydashboard/")
+ (home-page "https://rstudio.github.io/shinydashboard/")
(synopsis "Create dashboards with shiny")
(description "This package provides an extension to the Shiny web
application framework for R, making it easy to create attractive dashboards.")
@@ -1028,7 +1028,7 @@ well as file saving is available.")
(properties `((upstream-name . "shinythemes")))
(build-system r-build-system)
(propagated-inputs `(("r-shiny" ,r-shiny)))
- (home-page "http://rstudio.github.io/shinythemes/")
+ (home-page "https://rstudio.github.io/shinythemes/")
(synopsis "Themes for Shiny")
(description
"This package provides themes for use with Shiny. It includes several
@@ -2660,14 +2660,14 @@ available in a vignette.")
(define-public r-lava
(package
(name "r-lava")
- (version "1.6.6")
+ (version "1.6.7")
(source
(origin
(method url-fetch)
(uri (cran-uri "lava" version))
(sha256
(base32
- "0nfab5fgnmxh8cplg8rd8cp34fny5j0k5wn4baj51r6ck7fq9g3s"))))
+ "0ffzxbb8pvfh1m6j61az4ga37snyhylq2941fyc76w7w9i2sixv3"))))
(build-system r-build-system)
(propagated-inputs
`(("r-numderiv" ,r-numderiv)
@@ -3165,19 +3165,21 @@ for certain use cases.")
(define-public r-ggrepel
(package
(name "r-ggrepel")
- (version "0.8.1")
+ (version "0.8.2")
(source
(origin
(method url-fetch)
(uri (cran-uri "ggrepel" version))
(sha256
(base32
- "10vjrcmx8yknfbx93d9a4y3z8gafri0fhimw6hcq733dmdvkml6m"))))
+ "1qaifn3dazdqbqlii210xhw7yf142iw7g9p2axmmxbz90p0by08d"))))
(build-system r-build-system)
(propagated-inputs
`(("r-ggplot2" ,r-ggplot2)
("r-rcpp" ,r-rcpp)
("r-scales" ,r-scales)))
+ (native-inputs
+ `(("r-knitr" ,r-knitr))) ; for vignettes
(home-page "http://github.com/slowkow/ggrepel")
(synopsis "Repulsive text and label geometries for ggplot2")
(description
@@ -3634,14 +3636,14 @@ modeling for empirical income distributions.")
(define-public r-vcd
(package
(name "r-vcd")
- (version "1.4-5")
+ (version "1.4-6")
(source
(origin
(method url-fetch)
(uri (cran-uri "vcd" version))
(sha256
(base32
- "0pqf1sdp0d60aqc7721hy2zfcp57902by0i28jqbn683dd50c21a"))))
+ "0rjz49py5l6wnaimw6k8rcyzlvs8cyz5g2xwqj2qis92ly0l103z"))))
(build-system r-build-system)
(propagated-inputs
`(("r-colorspace" ,r-colorspace)
@@ -4422,14 +4424,14 @@ Fisher's method), and Sidak correction.")
(define-public r-quantmod
(package
(name "r-quantmod")
- (version "0.4-15")
+ (version "0.4-16")
(source
(origin
(method url-fetch)
(uri (cran-uri "quantmod" version))
(sha256
(base32
- "0lyzaf5ypk93v6zj9gdghy05cc7cxgn9yasv1apx5r6qsjcfgwky"))))
+ "12l5br8abr1yagxqjnjvqzp79sqsv5vx56cxs37gk73r474f4vc2"))))
(build-system r-build-system)
(propagated-inputs
`(("r-curl" ,r-curl)
@@ -4812,6 +4814,8 @@ functions to enforce symmetric scales or add tags to facetted plots.")
("r-seriation" ,r-seriation)
("r-viridis" ,r-viridis)
("r-webshot" ,r-webshot)))
+ (native-inputs
+ `(("r-knitr" ,r-knitr)))
(home-page "https://cran.r-project.org/package=heatmaply")
(synopsis "Interactive cluster heat maps using plotly")
(description
@@ -6375,15 +6379,17 @@ other add-on packages.")
(define-public r-insight
(package
(name "r-insight")
- (version "0.8.1")
+ (version "0.8.2")
(source
(origin
(method url-fetch)
(uri (cran-uri "insight" version))
(sha256
(base32
- "1y889bydmji3pcq2bdf6xl6ikmd45wbwl53ssvsk05b5ahkyxi76"))))
+ "0fjf7dwpv1a7qfbzixppg348z1ksq19kdjm08vcb2am7w0k3plcj"))))
(build-system r-build-system)
+ (native-inputs
+ `(("r-knitr" ,r-knitr)))
(home-page "https://easystats.github.io/insight/")
(synopsis "Easy access to model information for various model objects")
(description
@@ -6504,14 +6510,14 @@ functions.")
(define-public r-flextable
(package
(name "r-flextable")
- (version "0.5.8")
+ (version "0.5.9")
(source
(origin
(method url-fetch)
(uri (cran-uri "flextable" version))
(sha256
(base32
- "1x24rz1r5xin122czg85d7nrkwpaabb60p50m3yrd3dh81vfp0hk"))))
+ "1rkz0nhwjy1l8sb0kmna5v492n2ydnk7gydswnmf88r8vfyjczhw"))))
(build-system r-build-system)
(propagated-inputs
`(("r-base64enc" ,r-base64enc)
@@ -7277,6 +7283,8 @@ Processing of very large files is supported.")
("r-mosaicdata" ,r-mosaicdata)
("r-readr" ,r-readr)
("r-tidyr" ,r-tidyr)))
+ (native-inputs
+ `(("r-knitr" ,r-knitr)))
(home-page "https://github.com/ProjectMOSAIC/mosaic/")
(synopsis "Mathematics, statistics, and computation teaching utilities")
(description
@@ -7590,13 +7598,13 @@ for the reconstruction of gene regulatory networks.")
(define-public r-pscl
(package
(name "r-pscl")
- (version "1.5.2")
+ (version "1.5.5")
(source
(origin
(method url-fetch)
(uri (cran-uri "pscl" version))
(sha256
- (base32 "1phf3awsfr4ncqfqzin5m1pz0g7y1zhbcm2sz7358ssw914fd7rc"))))
+ (base32 "0vzf5wazs92bhqhqd66v3vwmbfmnh67gb2466g1xxawim649nk05"))))
(build-system r-build-system)
(propagated-inputs
`(("r-mass" ,r-mass)))
@@ -8663,14 +8671,14 @@ back to file after modifications.")
(define-public r-fs
(package
(name "r-fs")
- (version "1.3.1")
+ (version "1.3.2")
(source
(origin
(method url-fetch)
(uri (cran-uri "fs" version))
(sha256
(base32
- "1g26rgx13dzigp2vrlld6h28q33lwbax97zvwdrq2pc3iz54v4yn"))))
+ "1w30bflx4d7a6f3dn96bf7s7v6aqpvz2yzzxal6qz9jyhb16bxaz"))))
(build-system r-build-system)
(propagated-inputs
`(("r-rcpp" ,r-rcpp)))
@@ -9183,20 +9191,18 @@ address a bug.")
(define-public r-rcppannoy
(package
(name "r-rcppannoy")
- (version "0.0.15")
+ (version "0.0.16")
(source
(origin
(method url-fetch)
(uri (cran-uri "RcppAnnoy" version))
(sha256
(base32
- "1rlw6npwwcp066midvkhnzf0xmmfkkdf6f581j3j1s2naqss3fvl"))))
+ "0bfa35lp6vc4b0h3ymvdx50br233q8vvyjml34ngi81rj0imz3fr"))))
(properties `((upstream-name . "RcppAnnoy")))
(build-system r-build-system)
(propagated-inputs
`(("r-rcpp" ,r-rcpp)))
- (native-inputs
- `(("r-knitr" ,r-knitr))) ; for vignettes
(home-page "https://cran.r-project.org/web/packages/RcppAnnoy/")
(synopsis "Rcpp bindings for Annoy, a library for Approximate Nearest Neighbors")
(description
@@ -9528,7 +9534,7 @@ circular variables).")
"0ddf9bw5lhj8vb0ja78jf99i0smq4rgmm842k4a4ygap41vdyn2b"))))
(build-system r-build-system)
(propagated-inputs `(("r-subplex" ,r-subplex)))
- (home-page "http://kingaa.github.io/ouch/")
+ (home-page "https://kingaa.github.io/ouch/")
(synopsis "Ornstein-Uhlenbeck models for phylogenetic comparative hypotheses")
(description
"This package provides tools to fit and compare Ornstein-Uhlenbeck models
@@ -10545,14 +10551,14 @@ other manipulations of bitmapped images.")
(define-public r-rapidjsonr
(package
(name "r-rapidjsonr")
- (version "1.1")
+ (version "1.2.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "rapidjsonr" version))
(sha256
(base32
- "0h4phjjhykbb45rg5b1xn48vqxdcvcngbm0416ds8in7j469wbwd"))))
+ "07zdirhbzmvq3cp4xn8ngk1lgxbbabzays315zxbs3sxrz6lzjb2"))))
(build-system r-build-system)
(home-page "https://cran.r-project.org/web/packages/rapidjsonr")
(synopsis "JSON parser")
@@ -11578,7 +11584,7 @@ lasso, adaptive lasso and Ridge regression based on cross-validation.")
(base32
"1i1nhdapyijvm58zx38q28zk01ndmi6smjivxk5xs2cx9b6v2av9"))))
(build-system r-build-system)
- (home-page "http://www.stat.umn.edu/geyer/mcmc/")
+ (home-page "https://www.stat.umn.edu/geyer/mcmc/")
(synopsis "Markov chain Monte Carlo")
(description
"This package simulates continuous distributions of random vectors using
@@ -13599,13 +13605,13 @@ SELECT or UPDATE queries to an end-point.")
(define-public r-bookdown
(package
(name "r-bookdown")
- (version "0.17")
+ (version "0.18")
(source (origin
(method url-fetch)
(uri (cran-uri "bookdown" version))
(sha256
(base32
- "10b4gnd6z3w13pysqqan43blxcbk7bgbzc7wr83b23ag1lh2n40j"))))
+ "1my6g16phx21v5cvfqcnjibh3zcv02xkix347aafd6a7r3hnxpq5"))))
(build-system r-build-system)
(propagated-inputs
`(("r-htmltools" ,r-htmltools)
@@ -14313,7 +14319,7 @@ layer by layer.")
(build-system r-build-system)
(propagated-inputs
`(("r-randomforest" ,r-randomforest)))
- (home-page "http://ligarto.org/rdiaz/Software/Software.html")
+ (home-page "https://www.ligarto.org/rdiaz/software/software")
(synopsis "Variable selection using random forests")
(description
"This package provides tools for the variable selection from random
@@ -15328,20 +15334,22 @@ easily.")
(define-public r-umap
(package
(name "r-umap")
- (version "0.2.4.1")
+ (version "0.2.5.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "umap" version))
(sha256
(base32
- "1pnh3hv8ihiz2nszqp797lkrdhhna2a6mzpizbsk0s9m8cj4wxva"))))
+ "0qp8zbh6fn8kn6q2h2lyjgmq3pr6gqwsd8ymqx25px13zjhxch9d"))))
(build-system r-build-system)
(propagated-inputs
`(("r-openssl" ,r-openssl)
("r-rcpp" ,r-rcpp)
("r-reticulate" ,r-reticulate)
("r-rspectra" ,r-rspectra)))
+ (native-inputs
+ `(("r-knitr" ,r-knitr)))
(home-page "https://github.com/tkonopka/umap")
(synopsis "Uniform manifold approximation and projection")
(description
@@ -15682,13 +15690,13 @@ function and interfaces to external frameworks.")
(define-public r-covr
(package
(name "r-covr")
- (version "3.4.0")
+ (version "3.5.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "covr" version))
(sha256
- (base32 "0p44kr6yz5sqza5zvq6divqglzkpv0if9pjpjmzhmdaaddjrqzg5"))))
+ (base32 "1pvr95h7jg9hqq1qq1cccy323pkxldrwafl08151cc410499k4fb"))))
(properties `((upstream-name . "covr")))
(build-system r-build-system)
(propagated-inputs
@@ -15699,6 +15707,8 @@ function and interfaces to external frameworks.")
("r-rex" ,r-rex)
("r-withr" ,r-withr)
("r-yaml" ,r-yaml)))
+ (native-inputs
+ `(("r-knitr" ,r-knitr))) ; for vignettes
(home-page "https://github.com/r-lib/covr")
(synopsis "Test coverage for R packages")
(description
@@ -15941,19 +15951,21 @@ atmospheric physics.")
(define-public r-lifecycle
(package
(name "r-lifecycle")
- (version "0.1.0")
+ (version "0.2.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "lifecycle" version))
(sha256
(base32
- "11rk7hkw63rfrf4aqmb4xrb88kg95xh8hajpjvjfwjym2v02h74n"))))
+ "0912865c6675fsblrfdk6s568krsj1x8qbk1kipy7m05xs6nwx19"))))
(properties `((upstream-name . "lifecycle")))
(build-system r-build-system)
(propagated-inputs
`(("r-glue" ,r-glue)
("r-rlang" ,r-rlang)))
+ (native-inputs
+ `(("r-knitr" ,r-knitr))) ; for vignettes
(home-page "https://github.com/r-lib/lifecycle")
(synopsis "Manage the life cycle of your package functions")
(description
@@ -16016,13 +16028,13 @@ programming problems.")
(define-public r-desolve
(package
(name "r-desolve")
- (version "1.27.1")
+ (version "1.28")
(source
(origin
(method url-fetch)
(uri (cran-uri "deSolve" version))
(sha256
- (base32 "05sax045qrk550gsn2i7krb9rbg51rx88x4v190acsigqknxffrv"))))
+ (base32 "0jasvdzig0pzhzspmy20089az19r91xjfb9q6h8gj7c4mr6fymac"))))
(properties `((upstream-name . "deSolve")))
(build-system r-build-system)
(native-inputs
@@ -16880,7 +16892,7 @@ Components. The Lasso solution paths can be computed by the same function.")
`(("r-elasticnet" ,r-elasticnet)
("r-mass" ,r-mass)
("r-mda" ,r-mda)))
- (home-page "http://www.imm.dtu.dk/~lhc")
+ (home-page "https://www.imm.dtu.dk/~lkhc/")
(synopsis "Sparse discriminant analysis")
(description
"This package performs sparse linear discriminant analysis for Gaussians
@@ -17991,7 +18003,7 @@ actigraphy-measured activity counts data.")
(build-system r-build-system)
(propagated-inputs
`(("r-matrix" ,r-matrix)))
- (home-page "http://www.functionaldata.org")
+ (home-page "https://www.functionaldata.org")
(synopsis "Functional data analysis")
(description
"These functions were developed to support functional data analysis as
@@ -19978,7 +19990,7 @@ on a continuous-time birth-death process.")
(home-page "http://christophergandrud.github.io/d3Network/")
(synopsis "Create D3 JavaScript network, tree, dendrogram, and Sankey graphs")
(description
- "This packages is intended to make it easy to create D3 JavaScript
+ "This package is intended to make it easy to create D3 JavaScript
network, tree, dendrogram, and Sankey graphs from R using data frames.")
(license license:gpl3+)))
@@ -20691,3 +20703,50 @@ package is adopted for computing with arbitrarily large numbers. Every
function has a hyperlink to its corresponding item in the @dfn{On-Line
Encyclopedia of Integer Sequences} (OEIS) in the function help page.")
(license license:gpl3+)))
+
+(define-public r-isoband
+ (package
+ (name "r-isoband")
+ (version "0.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "isoband" version))
+ (sha256
+ (base32
+ "1r023s73qypnvpx18znr9ymylr022m90v65mz2jasn0a1kjrfcbq"))))
+ (properties `((upstream-name . "isoband")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-rcpp" ,r-rcpp)
+ ("r-testthat" ,r-testthat)))
+ (home-page "https://github.com/wilkelab/isoband")
+ (synopsis "Generate isolines and isobands from regularly spaced elevation grids")
+ (description
+ "This package provides a fast C++ implementation to generate contour
+lines (isolines) and contour polygons (isobands) from regularly spaced grids
+containing elevation data.")
+ (license license:expat)))
+
+(define-public r-ppcor
+ (package
+ (name "r-ppcor")
+ (version "1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "ppcor" version))
+ (sha256
+ (base32
+ "1x9b2kb8s0bp92b17gby0jwzzr3i4cf3ap9c4nq7m8fav72g0y3a"))))
+ (properties `((upstream-name . "ppcor")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-mass" ,r-mass)))
+ (home-page "https://cran.r-project.org/web/packages/ppcor/")
+ (synopsis "Partial and semi-partial correlation")
+ (description
+ "This package provides users not only with a function to readily
+calculate the higher-order partial and semi-partial correlations but also with
+statistics and p-values of the correlation coefficients.")
+ (license license:gpl2)))
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index a5272156ab..87493cff05 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -10004,8 +10004,8 @@ checking.")
`(#:skip-build? #t ; Only builds on Windows.
#:cargo-inputs (("rust-winapi" ,rust-winapi-0.3))))
(home-page "https://github.com/blackbeam/named_pipe")
- (synopsis "Wrapper for overlapped (asyncronous) IO of Windows's named pipes")
- (description "This package provides a wrapper for overlapped (asyncronous)
+ (synopsis "Wrapper for overlapped (asynchronous) IO of Windows's named pipes")
+ (description "This package provides a wrapper for overlapped (asynchronous)
IO of Windows's named pipes.")
(license (list license:expat license:asl2.0))))
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index b7213f73b3..cc5a410301 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -5,7 +5,7 @@
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -420,14 +420,14 @@ should only be used as part of the Guix cups-pk-helper service.")
(define-public hplip
(package
(name "hplip")
- (version "3.19.12")
+ (version "3.20.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/hplip/hplip/" version
"/hplip-" version ".tar.gz"))
(sha256
(base32
- "0mdj0sqgfxjqa550adiw1gn4z9n6wcvn55slivgf0ndn5x89iwxp"))
+ "1hkiyj29vzmz14cy68g94i617ymxinzvjvcsfdd78kcbd1s9vi4h"))
(modules '((guix build utils)))
(patches (search-patches "hplip-remove-imageprocessor.patch"))
(snippet
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index a1ed48ecf3..679c409a7a 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -3368,3 +3368,38 @@ The drivers officially supported by @code{libdbi} are:
@end itemize")
(home-page "http://libdbi-drivers.sourceforge.net/")
(license license:lgpl2.1+)))
+
+(define-public soci
+ (package
+ (name "soci")
+ (version "4.0.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/SOCI/soci/")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "06faswdxd2frqr9xnx6bxc7zwarlzsbdi3bqpz7kwdxsjvq41rnb"))))
+ (build-system cmake-build-system)
+ (inputs
+ `(("postgresql" ,postgresql)
+ ("sqlite" ,sqlite)
+ ("odbc" ,unixodbc)
+ ("boost" ,boost)
+ ("mysql" ,mysql)))
+ (arguments
+ `(#:tests? #f ; Tests may require running database management systems.
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-lib-path
+ (lambda _
+ (substitute* "CMakeLists.txt"
+ (("set\\(SOCI_LIBDIR \"lib64\"\\)") "")))))))
+ (synopsis "C++ Database Access Library")
+ (description
+ "SOCI is an abstraction layer for several database backends, including
+PostreSQL, SQLite, ODBC and MySQL.")
+ (home-page "http://soci.sourceforge.net/")
+ (license license:boost1.0)))
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 82a57d4eaa..34cc479589 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -27,19 +27,25 @@
#:use-module (guix git-download)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system cmake)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
+ #:use-module (gnu packages code)
#:use-module (gnu packages flex)
+ #:use-module (gnu packages gdb)
#:use-module (gnu packages glib)
#:use-module (gnu packages gtk)
#:use-module (gnu packages golang)
- #:use-module (gnu packages code)
#:use-module (gnu packages llvm)
+ #:use-module (gnu packages ninja)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages pkg-config)
#:use-module (gnu packages pretty-print)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-xyz)
#:use-module (gnu packages readline)
+ #:use-module (gnu packages serialization)
#:use-module (gnu packages virtualization)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1))
@@ -406,3 +412,66 @@ the position of the variable and allows you to modify its value.")
;; The library is covered by LGPLv3 or later; the application is covered
;; by GPLv3 or later.
(license (list lgpl3+ gpl3+))))
+
+(define-public rr
+ (package
+ (name "rr")
+ (version "5.3.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mozilla/rr")
+ (commit version)))
+ (sha256
+ (base32
+ "1x6l1xsdksnhz9v50p4r7hhmr077cq20kaywqy1jzdklvkjqzf64"))
+ (file-name (git-file-name name version))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ ;; The 'rr_exec_stub' is a static binary, which leads CMake to fail
+ ;; with:
+ ;;
+ ;; file RPATH_CHANGE could not write new RPATH:
+ ;;
+ ;; Clear CMAKE_INSTALL_RPATH to avoid that problem.
+ (list "-DCMAKE_INSTALL_RPATH="
+ ,@(if (and (not (%current-target-system))
+ (member (%current-system)
+ '("x86_64-linux" "aarch64-linux")))
+ ;; The toolchain doesn't support '-m32'.
+ '("-Ddisable32bit=ON")
+ '()))
+
+ ;; XXX: Most tests fail with:
+ ;;
+ ;; rr needs /proc/sys/kernel/perf_event_paranoid <= 1, but it is 2.
+ ;;
+ ;; This setting cannot be changed from the build environment, so skip
+ ;; the tests.
+ #:tests? #f
+
+ #:phases (modify-phases %standard-phases
+ (add-before 'check 'set-home
+ (lambda _
+ ;; Some tests expect 'HOME' to be set.
+ (setenv "HOME" (getcwd))
+ #t)))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("ninja" ,ninja)
+ ("which" ,which)))
+ (inputs
+ `(("gdb" ,gdb)
+ ("cpanproto" ,capnproto)
+ ("python" ,python)
+ ("python-pexpect" ,python-pexpect)))
+ (home-page "https://rr-project.org/")
+ (synopsis "Record and reply debugging framework")
+ (description
+ "rr is a lightweight tool for recording, replaying and debugging
+execution of applications (trees of processes and threads). Debugging extends
+GDB with very efficient reverse-execution, which in combination with standard
+GDB/x86 features like hardware data watchpoints, makes debugging much more
+fun.")
+ (license expat)))
diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm
index 98b710ab6d..d8e30a5524 100644
--- a/gnu/packages/dictionaries.scm
+++ b/gnu/packages/dictionaries.scm
@@ -199,7 +199,7 @@ work, such as sentence length and other readability measures.")
(synopsis "Dictionary lookup program with a German-English dictionary")
(description "Ding is a dictionary lookup program for the X window system.
It comes with a German-English dictionary with approximately 270,000 entries.")
- (home-page "http://www-user.tu-chemnitz.de/~fri/ding/")
+ (home-page "https://www-user.tu-chemnitz.de/~fri/ding/")
(license license:gpl2+)))
(define-public grammalecte
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 0e3b1f4faa..a5948beb81 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -396,14 +396,14 @@ to result in system-wide compromise.")
(define-public unbound
(package
(name "unbound")
- (version "1.9.6")
+ (version "1.10.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.unbound.net/downloads/unbound-"
version ".tar.gz"))
(sha256
- (base32 "1w5aylh2gfvfvqkgrq46aw427x9c0a3hwm0f985s55wim5pgr60x"))))
+ (base32 "0mg9divpysr42sp0m693a70693dp8025v6c9dv1yabr4g1jlhbqm"))))
(build-system gnu-build-system)
(outputs '("out" "python"))
(native-inputs
@@ -600,14 +600,14 @@ Extensions} (DNSSEC).")
(define-public knot
(package
(name "knot")
- (version "2.9.2")
+ (version "2.9.3")
(source
(origin
(method url-fetch)
(uri (string-append "https://secure.nic.cz/files/knot-dns/"
"knot-" version ".tar.xz"))
(sha256
- (base32 "1vmndmbzwwrqczhygkhpdn5xxljcnaa3d0z5yw6vb2bmm8rxz319"))
+ (base32 "0zm0642hkb16sqkqpa84f89f3s0bw44m837r1nia8m89swvz3bgj"))
(modules '((guix build utils)))
(snippet
'(begin
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index b2501f2c7b..7c84d832c0 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -738,7 +738,8 @@ adjust the level of difficulty.")
(uri (string-append "https://apps.ankiweb.net/downloads/archive/anki-"
version "-source.tgz"))
(sha256
- (base32 "1gfr51rnllkyzli73p4r51h5ypzfa3m7lic3m3rzpywmqwrxs07k"))))
+ (base32 "1gfr51rnllkyzli73p4r51h5ypzfa3m7lic3m3rzpywmqwrxs07k"))
+ (patches (search-patches "anki-mpv-args.patch"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags (list (string-append "PREFIX=" %output))
@@ -779,6 +780,9 @@ adjust the level of difficulty.")
(wrap-program program
`("QTWEBENGINEPROCESS_PATH" =
(,qtwebengineprocess))
+ `("PATH" prefix (,(string-append
+ (assoc-ref inputs "mpv")
+ "/bin")))
`("PYTHONPATH" = ,site-packages)))
(find-files bin ".")))
#t)))))
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 639a61ef58..e2b067e1dc 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -60,6 +60,8 @@
;;; Copyright © 2020 Paul Garlick <pgarlick@tourbillion-technology.com>
;;; Copyright © 2020 Robert Smith <robertsmith@posteo.net>
;;; Copyright © 2020 Evan Straw <evan.straw99@gmail.com>
+;;; Copyright © 2020 Masaya Tojo <masaya@tojo.tokyo>
+;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -970,13 +972,13 @@ in certain cases. It also enables recursion for anonymous functions.")
(define-public emacs-xr
(package
(name "emacs-xr")
- (version "1.16")
+ (version "1.18")
(source
(origin
(method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/xr-" version ".tar"))
(sha256
- (base32 "1s6pkbr7gkan0r9gfmix75m587d8cg6l11722v70zzgf2z9w2xg9"))))
+ (base32 "1nq9pj47sxgpkw97c2xrkhgcwh3zsfd2a22qiqbl4i9zf2l9yy91"))))
(build-system emacs-build-system)
(home-page "https://elpa.gnu.org/packages/xr.html")
(synopsis "Convert string regexp to rx notation")
@@ -1074,14 +1076,14 @@ optional minor mode which can apply this command automatically on save.")
(define-public emacs-relint
(package
(name "emacs-relint")
- (version "1.14")
+ (version "1.15")
(source
(origin
(method url-fetch)
(uri (string-append
"https://elpa.gnu.org/packages/relint-" version ".tar"))
(sha256
- (base32 "0hjzhxcygb2r2s3g2pk3z9x3appy1y8gkw8gpg9cpkl6lpwcsh2f"))))
+ (base32 "0sxmdsacj8my942k8j76m2y68nzab7190acv7cwgflc5n4f07yxa"))))
(build-system emacs-build-system)
(propagated-inputs `(("emacs-xr" ,emacs-xr)))
(home-page "https://github.com/mattiase/relint")
@@ -4684,7 +4686,7 @@ local directories.")
(package
(name "emacs-ffap-rfc-space")
(version "12")
- (home-page "http://user42.tuxfamily.org/ffap-rfc-space/index.html")
+ (home-page "https://user42.tuxfamily.org/ffap-rfc-space/index.html")
(source (origin
(method url-fetch)
(uri "http://download.tuxfamily.org/user42/ffap-rfc-space.el")
@@ -7389,8 +7391,8 @@ CIDER).")
;; There hasn't been a tag or release since 2016, so we take the latest
;; commit.
(define-public emacs-sly
- (let ((commit "0a3b81770e46b93b9ffd8b9ac5254e0b88d1b13d")
- (revision "3"))
+ (let ((commit "86a63df73360be51529806c7ed9b775b3f02284d")
+ (revision "4"))
(package
(name "emacs-sly")
(version (git-version "1.0.0" revision commit))
@@ -7403,7 +7405,7 @@ CIDER).")
(file-name (git-file-name name version))
(sha256
(base32
- "1q5ga4mxa0ffa4zb2y0zfwmgzjggx4fn1y4bl2x7ac6ynvb32zkj"))))
+ "0sx6fdckcfcld41db0695svvlvllnfaazwx513686gnykwfd209n"))))
(build-system emacs-build-system)
(native-inputs
`(("texinfo" ,texinfo)))
@@ -17255,10 +17257,10 @@ leader key in vim), and much more.")
(license license:gpl3+))))
(define-public emacs-tldr
- (let ((commit "398b197c8d2238628b07e1b32d0f373876279f4c"))
+ (let ((commit "7203d1be3dcbf12131846ffe06601933fa874d74"))
(package
(name "emacs-tldr")
- (version (git-version "0" "0" commit))
+ (version (git-version "0" "1" commit))
(home-page "https://github.com/kuanyui/tldr.el")
(source (origin
(method git-fetch)
@@ -17267,9 +17269,11 @@ leader key in vim), and much more.")
(commit commit)))
(sha256
(base32
- "0iq7qlis6c6r2qkdpncrhh5vsihkhvy5x4y1y8cjb7zxkh62w33f"))
+ "1bw6la463l2yfm7rp76ga4makfy4kpxgwi7ni5gxk31w11g26ryk"))
(file-name (git-file-name name version))))
(build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-request" ,emacs-request)))
(synopsis "Simplified and community-driven man pages for Emacs")
(description "@code{emacs-tldr} allows the user to access tldr pages
from within emacs. The @code{tldr} pages are a community effort to simplify
@@ -21727,3 +21731,75 @@ supports generation of phonetic and numeric passwords.")
Separated Value) files. It follows the format as defined in RFC 4180 \"Common
Format and MIME Type for CSV Files\" (@url{http://tools.ietf.org/html/rfc4180}).")
(license license:gpl3+)))
+
+(define-public emacs-org-journal
+ (package
+ (name "emacs-org-journal")
+ (version "2.0.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/bastibe/org-journal.git")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "18dqd0jy2x530lk0h4fcn9cld9qh4w7b3vxa60fpiia628vsv1dg"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/bastibe/org-journal")
+ (synopsis "Simple Org mode journaling mode")
+ (description
+ "Org Journal is a set of functions to maintain a simple personal diary /
+journal using in Emacs, adapted from
+@url{https://www.emacswiki.org/emacs/PersonalDiary}. Convenient bindings
+allow the creation of journal records in the current daily, weekly, monthly or
+yearly file and search within all records or specified time intervals. All
+records can be browsed and searched from the Emacs Calendar for convenience.
+All entries in a specified TODO state will be carried over to the next day.")
+ (license license:bsd-3)))
+
+(define-public emacs-ddskk
+ ;; XXX: Upstream adds code names to their release tags, so version and code
+ ;; name below need to be updated together.
+ (let ((version "16.3")
+ (code-name "Kutomatsunai"))
+ (package
+ (name "emacs-ddskk")
+ (version version)
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/skk-dev/ddskk")
+ (commit (string-append "ddskk-" version "_" code-name))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0ln4x8f35z5y3kf9m718g223bn3lzcmw40jfjg2j5yi24ydf1wm9"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (guix build emacs-utils))
+ #:imported-modules (,@%gnu-build-system-modules
+ (guix build emacs-utils))
+ #:test-target "test"
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (make-file-writable "SKK-MK")
+ (emacs-substitute-variables "SKK-MK"
+ ("PREFIX" (assoc-ref outputs "out"))
+ ("LISPDIR" '(expand-file-name "/share/emacs/site-lisp" PREFIX))
+ ("SKK_PREFIX" "")
+ ("SKK_INFODIR" '(expand-file-name "info" PREFIX)))
+ (for-each make-file-writable (find-files "./doc"))
+ #t)))))
+ (native-inputs
+ `(("emacs-minimal" ,emacs-minimal)))
+ (home-page "https://github.com/skk-dev/ddskk")
+ (synopsis "Simple Kana to Kanji conversion program")
+ (description
+ "Daredevil SKK is a version of @acronym{SKK, Simple Kana to Kanji
+conversion program}, a Japanese input method on Emacs.")
+ (license license:gpl2+))))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index fb96a4440c..c877c20500 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -178,7 +178,7 @@
(native-inputs
`(("pkg-config" ,pkg-config)
("which" ,which)))
- (home-page "http://librecad.org/")
+ (home-page "https://librecad.org/")
(synopsis "Computer-aided design (CAD) application")
(description
"LibreCAD is a 2D Computer-aided design (CAD) application for creating
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 8e12f684e0..5143b500ee 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -495,7 +495,7 @@ other machines/servers. Electroncash does not download the Bitcoin Cash blockch
;; the system's dynamically linked library.
(package
(name "monero")
- (version "0.15.0.1")
+ (version "0.15.0.5")
(source
(origin
(method git-fetch)
@@ -516,7 +516,7 @@ other machines/servers. Electroncash does not download the Bitcoin Cash blockch
#t))
(sha256
(base32
- "0sypa235lf2bbib4b71xpaw39h9304slgsvnsz8wmy9fq1zx009m"))))
+ "06zzwa0y8ic6x3y2fy501788r51p4klanyvmm76ywrwf087njlkv"))))
(build-system cmake-build-system)
(native-inputs
`(("doxygen" ,doxygen)
@@ -614,7 +614,7 @@ the Monero command line client and daemon.")
(define-public monero-gui
(package
(name "monero-gui")
- (version "0.15.0.3")
+ (version "0.15.0.4")
(source
(origin
(method git-fetch)
@@ -624,7 +624,7 @@ the Monero command line client and daemon.")
(file-name (git-file-name name version))
(sha256
(base32
- "1v2mk6qp7dfdj4j4cilxp0s0phfwwnmjvpvjrz6jzzlpvbnavkr0"))))
+ "12m5fgnxkr11q2arx1m5ccpxqm5ljcvm6l547dwqn297zs5jim4z"))))
(build-system qt-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 186e1eecff..5fb6bbbe18 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -11,7 +11,7 @@
;;; Copyright © 2016 Jookia <166291@gmail.com>
;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com>
-;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2016 Toni Reina <areina@riseup.net>
;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -1234,22 +1234,22 @@ have been optimized for beautiful display on all common platforms and display
resolutions.")
(license license:asl2.0)))
-(define-public font-open-dyslexic
+(define-public font-opendyslexic
(package
- (name "font-open-dyslexic")
- (version "20160623")
+ (name "font-opendyslexic")
+ (version "0.91.12")
(source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/antijingoist/open-dyslexic.git")
- (commit (string-append version "-Stable"))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0nr7s92nk1kbr459154idnib977ixc70z6g9mbra3lp73nyrmyvz"))))
+ (origin
+ (method url-fetch/zipbomb)
+ (uri (string-append "https://github.com/antijingoist/opendyslexic/"
+ "releases/download/v" version
+ "/opendyslexic-0.910.12-rc2-2019.10.17.zip"))
+ (sha256
+ (base32
+ "11ml7v4iyf3hr0fbnkwz8afb8vi58wbcfnmn4gyvrwh9jk5pybdr"))))
(build-system font-build-system)
- (home-page "https://opendyslexic.org")
+ (native-inputs `(("unzip" ,unzip)))
+ (home-page "https://opendyslexic.org/")
(synopsis "Font for dyslexics and high readability")
(description "OpenDyslexic is a font designed to help readability for some
of the symptoms of dyslexia. Letters have heavy weighted bottoms to provide
@@ -1258,12 +1258,10 @@ similar letters. Consistently weighted bottoms can also help reinforce the
line of text. The unique shapes of each letter can help prevent flipping and
swapping. The italic style for OpenDyslexic has been crafted to be used for
emphasis while still being readable.")
- (license
- (license:fsdg-compatible
- "https://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts"
- "The Font Software may be sold as part of a larger software package but
-no copy of one or more of the Font Software typefaces may be sold by
-itself."))))
+ (license license:silofl1.1)))
+
+(define-public font-open-dyslexic
+ (deprecated-package "font-open-dyslexic" font-opendyslexic))
(define-public font-dosis
(package
@@ -1272,13 +1270,14 @@ itself."))))
(source
(origin
(method url-fetch/zipbomb)
- (uri (string-append "http://www.impallari.com/media/releases/dosis-"
+ (uri (string-append "https://web.archive.org/web/20180228233737/"
+ "https://www.impallari.com/media/releases/dosis-"
"v" version ".zip"))
(sha256
- (base32
- "1qhci68f68mf87jd69vjf9qjq3wydgw1q7ivn3amjb65ls1s0c4s"))))
+ (base32 "1qhci68f68mf87jd69vjf9qjq3wydgw1q7ivn3amjb65ls1s0c4s"))))
(build-system font-build-system)
- (home-page "http://www.impallari.com/dosis")
+ (home-page (string-append "https://web.archive.org/web/20180228233737/"
+ "https://www.impallari.com/dosis"))
(synopsis "Very simple, rounded, sans serif family")
(description
"Dosis is a very simple, rounded, sans serif family.
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 71d7a19e1d..ea2f509d89 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -11,6 +11,7 @@
;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -45,6 +46,7 @@
#:use-module (gnu packages glib)
#:use-module (gnu packages gperf)
#:use-module (gnu packages xorg)
+ #:use-module (gnu packages fribidi)
#:use-module (gnu packages gtk)
#:use-module (gnu packages xml)
#:use-module (gnu packages sqlite)
@@ -255,44 +257,35 @@ work with most software requiring Type 1 fonts.")
(license license:bsd-3)))
(define-public woff2
- (let ((commit "4e698b8c6c5e070d53c340db9ddf160e21070ede")
- (revision "1"))
- (package
- (name "woff2")
- (version (string-append "20160306-" revision "."
- (string-take commit 7)))
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/google/woff2.git")
- (commit commit)))
- (file-name (string-append name "-" version ".tar.xz"))
- (sha256
- (base32
- "0wka0yhf0cjmd4rv2jckxpyv6lb5ckj4nj0k1ajq5hrjy7f30lcp"))
- (patches (list (search-patch "woff2-libbrotli.patch")))))
- (build-system gnu-build-system)
- (native-inputs
- `(("pkg-config" ,pkg-config)))
- (inputs
- `(("brotli" ,brotli)))
- (arguments
- `(#:tests? #f ;no tests
- #:phases (modify-phases %standard-phases
- (delete 'configure)
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin")))
- (install-file "woff2_compress" bin)
- (install-file "woff2_decompress" bin)
- #t))))))
- (synopsis "Compress TrueType fonts to WOFF2")
- (description
- "This package provides utilities for compressing/decompressing TrueType
+ (package
+ (name "woff2")
+ (version "1.0.2")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/google/woff2.git")
+ (commit (string-append "v" version))))
+ (file-name (string-append name "-" version ".git"))
+ (sha256
+ (base32
+ "13l4g536h0pr84ww4wxs2za439s0xp1va55g6l478rfbb1spp44y"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("google-brotli" ,google-brotli)))
+ (arguments
+ ;; package has no tests
+ `(#:tests? #f
+ ;; we can’t have both, shared libraries and binaries, so turn off the
+ ;; former
+ #:configure-flags (list "-DBUILD_SHARED_LIBS=OFF")))
+ (synopsis "Compress TrueType fonts to WOFF2")
+ (description
+ "This package provides utilities for compressing/decompressing TrueType
fonts to/from the WOFF2 format.")
- (license license:asl2.0)
- (home-page "https://github.com/google/woff2"))))
+ (license license:asl2.0)
+ (home-page "https://github.com/google/woff2")))
(define-public fontconfig
(package
@@ -857,3 +850,37 @@ work well with other GTK+ desktop environments.")
samples that show coverage of the font and are similar in appearance to
Unicode Charts. It was developed for use with DejaVu Fonts project.")
(license license:gpl3+)))
+
+(define-public libraqm
+ (package
+ (name "libraqm")
+ (version "0.7.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/HOST-Oman/libraqm/"
+ "releases/download/v" version "/"
+ "raqm-" version ".tar.gz"))
+ (sha256
+ (base32 "0hgry3fj2y3qaq2fnmdgd93ixkk3ns5jds4vglkiv2jfvpn7b1g2"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags (list "--disable-static")))
+ (native-inputs
+ `(("gtk-doc" ,gtk-doc)
+ ("pkg-config" ,pkg-config)
+ ("python" ,python-wrapper)))
+ (inputs
+ `(("freetype" ,freetype)
+ ("fribidi" ,fribidi)
+ ("harfbuzz" ,harfbuzz)))
+ (home-page "https://github.com/HOST-Oman/libraqm")
+ (synopsis "Library for complex text layout")
+ (description
+ "Raqm is a small library that encapsulates the logic for complex text
+layout and provides a convenient API.
+
+It currently provides bidirectional text support (using FriBiDi),
+shaping (using HarfBuzz), and proper script itemization. As a result, Raqm
+can support most writing systems covered by Unicode.")
+ (license license:expat)))
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 0c4dde180f..92a50f94f3 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -179,6 +179,7 @@ freedesktop.org project.")
(license license:expat)))
(define-public libinput
+ ;; Updating this will rebuild over 700 packages through libinput-minimal.
(package
(name "libinput")
(version "1.15.0")
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index ca046f5bab..e59a0f6424 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -2078,7 +2078,7 @@ a.k.a. XenoCollide) as described in Game Programming Gems 7.")
`(("glu" ,glu)
("libccd" ,libccd)
("mesa" ,mesa)))
- (home-page "http://www.ode.org/")
+ (home-page "https://www.ode.org/")
(synopsis "High performance library for simulating rigid body dynamics")
(description "ODE is a high performance library for simulating
rigid body dynamics. It is fully featured, stable, mature and
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index d6fba8d44a..45d5c4697d 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -2054,7 +2054,7 @@ for common mesh file formats, and collision detection.")
("fribidi" ,fribidi)
("taglib" ,taglib)
("sfml" ,sfml)))
- (home-page "http://marsshooter.org")
+ (home-page "http://mars-game.sourceforge.net/")
(synopsis "2D space shooter")
(description
"M.A.R.S. is a 2D space shooter with pretty visual effects and
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 93b2e66714..8a4d841142 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -328,7 +328,7 @@ fully fledged Spatial SQL capabilities.")
(define-public proj
(package
(name "proj")
- (version "6.2.0")
+ (version "6.3.1")
(source
(origin
(method url-fetch)
@@ -336,7 +336,7 @@ fully fledged Spatial SQL capabilities.")
version ".tar.gz"))
(sha256
(base32
- "0l1as8f4zfg74fms6h5p5psziw0lpznja1xnirzsscpnfbwc005k"))))
+ "1y46ij32j9b4x1kjnnlykcwk3kkjwkg44sfc1ziwm3a3g0ki3q3d"))))
(build-system gnu-build-system)
(inputs
`(("sqlite" ,sqlite)))
@@ -554,6 +554,7 @@ development.")
`(("freexl" ,freexl)
("geos" ,geos)
("libgaiagraphics" ,libgaiagraphics)
+ ("libjpeg-turbo" ,libjpeg-turbo)
("libspatialite" ,libspatialite)
("libxml2" ,libxml2)
("proj.4" ,proj.4)
@@ -571,7 +572,7 @@ development.")
(define-public gdal
(package
(name "gdal")
- (version "3.0.2")
+ (version "3.0.4")
(source (origin
(method url-fetch)
(uri (string-append
@@ -579,7 +580,7 @@ development.")
version ".tar.gz"))
(sha256
(base32
- "0f80izh9wshrsw55kg9abpip74hk6frk3hgqrkqbyn3f6i8g2z3q"))
+ "10symyajj1b7j98f889lqxxbmhcyvlhq9gg0l42h69bv22wx45gw"))
(modules '((guix build utils)))
(snippet
`(begin
@@ -1451,3 +1452,58 @@ archive all the GPS recordings of your past trips. It is the successor of the
QLandkarte GT application.")
(home-page "https://github.com/Maproom/qmapshack/wiki")
(license license:gpl3+)))
+
+(define-public readosm
+ (package
+ (name "readosm")
+ (version "1.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://www.gaia-gis.it/gaia-sins/"
+ "readosm-" version ".tar.gz"))
+ (sha256
+ (base32 "1v20pnda67imjd70fn0zw30aar525xicy3d3v49md5cvqklws265"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("expat" ,expat)
+ ("zlib" ,zlib)))
+ (synopsis "Data extractor for OpenStreetMap files")
+ (description
+ "ReadOSM is a library to extract valid data from within an OpenStreetMap
+input file (in @code{.osm} or @code{.osm.pbf} format).")
+ (home-page "https://www.gaia-gis.it/fossil/readosm/index")
+ (license (list license:gpl2+
+ license:lgpl2.1+
+ license:mpl1.1))))
+
+(define-public spatialite-tools
+ (package
+ (name "spatialite-tools")
+ (version "4.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://www.gaia-gis.it/gaia-sins/"
+ "spatialite-tools-" version ".tar.gz"))
+ (sha256
+ (base32 "12fggjhi8cgwvw8f6nk76f83b8lqkc07abxyj5ap6f2gq2dqafgp"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("expat" ,expat)
+ ("freexl" ,freexl)
+ ("geos" ,geos)
+ ("libspatialite" ,libspatialite)
+ ("libxml2" ,libxml2)
+ ("proj.4" ,proj.4)
+ ("readosm" ,readosm)
+ ("sqlite" ,sqlite)
+ ("zlib" ,zlib)))
+ (synopsis "Collection of command line tools for SpatiaLite")
+ (description
+ "@code{spatialite-tools} is a collection of Command Line Interface (CLI)
+tools supporting SpatiaLite.")
+ (home-page "https://www.gaia-gis.it/fossil/spatialite-tools/index")
+ (license license:gpl3+)))
diff --git a/gnu/packages/gkrellm.scm b/gnu/packages/gkrellm.scm
index 4eb906e40d..153e27c7f0 100644
--- a/gnu/packages/gkrellm.scm
+++ b/gnu/packages/gkrellm.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -31,15 +31,14 @@
(define-public gkrellm
(package
(name "gkrellm")
- (version "2.3.10")
+ (version "2.3.11")
(source
(origin
(method url-fetch)
(uri (string-append "http://gkrellm.srcbox.net/releases/gkrellm-"
version ".tar.bz2"))
(sha256
- (base32
- "0rnpzjr0ys0ypm078y63q4aplcgdr5nshjzhmz330n6dmnxci7lb"))))
+ (base32 "01lccz4fga40isv09j8rjgr0qy10rff9vj042n6gi6gdv4z69q0y"))))
(build-system gnu-build-system)
(inputs
`(("gettext" ,gettext-minimal)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index ff077904fc..9a1085f4f6 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -46,6 +46,7 @@
;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2019 Leo Prikler <leo.prikler@student.tugraz.at>
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -4997,15 +4998,15 @@ which can read a large number of file formats.")
(define-public rhythmbox
(package
(name "rhythmbox")
- (version "3.4.3")
+ (version "3.4.4")
(source (origin
(method url-fetch)
- (uri (string-append "mirror://gnome/sources/" name "/"
+ (uri (string-append "mirror://gnome/sources/rhythmbox/"
(version-major+minor version) "/"
- name "-" version ".tar.xz"))
+ "rhythmbox-" version ".tar.xz"))
(sha256
(base32
- "1yx3n7p9vmv23jsv98fxwq95n78awdxqm8idhyhxx2d6vk4w1hgx"))))
+ "142xcvw4l19jyr5i72nbnrihs953pvrrzcbijjn9dxmxszbv03pf"))))
(build-system glib-or-gtk-build-system)
(arguments
`(#:configure-flags
@@ -7385,7 +7386,7 @@ easy, safe, and automatic.")
(define-public tracker
(package
(name "tracker")
- (version "2.2.2")
+ (version "2.3.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/tracker/"
@@ -7393,7 +7394,7 @@ easy, safe, and automatic.")
"tracker-" version ".tar.xz"))
(sha256
(base32
- "1rp2c6k7ajcm553p9kpni87zgi9aplm3s01rl7pk575az5i399y6"))))
+ "1nzbnvwwsk6kv6kqbxwlz8vk70l9ai6b4r9qypw51vp4qy72ny54"))))
(build-system meson-build-system)
(arguments
`(#:glib-or-gtk? #t
@@ -7404,64 +7405,58 @@ easy, safe, and automatic.")
(assoc-ref %outputs "out") "/lib/tracker-2.0"))
#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'disable-broken-tests
- (lambda _
- ;; These fail because the SPARQL backend could not be loaded.
- ;; That's because /etc/machine-id is missing, but
- ;; DBUS_FATAL_WARNINGS does not help here.
- (substitute* "tests/libtracker-sparql/meson.build"
- (("'sparql',") ""))
- (substitute* "tests/tracker-steroids/meson.build"
- (("test\\(.*") ""))
- #t))
- ;; Two tests fail if LANG is not set.
(add-before 'check 'pre-check
(lambda _
- (setenv "LANG" "en_US.UTF-8")
- ;; For the missing /etc/machine-id.
- (setenv "DBUS_FATAL_WARNINGS" "0")
+ ;; Some tests expect to write to $HOME.
+ (setenv "HOME" "/tmp")
#t)))))
(native-inputs
`(("glib:bin" ,glib "bin")
- ("gnome-common" ,gnome-common)
("gobject-introspection" ,gobject-introspection)
("python-pygobject" ,python-pygobject)
("intltool" ,intltool)
("pkg-config" ,pkg-config)
("vala" ,vala)))
(inputs
- `(("gtk+" ,gtk+)
- ("dbus" ,dbus)
+ `(("dbus" ,dbus)
("sqlite" ,sqlite)
- ("python" ,python)
- ("poppler" ,poppler)
- ("libpng" ,libpng)
- ("libtiff" ,libtiff)
- ("zlib" ,zlib)
("libxml2" ,libxml2)
- ("libunistring" ,libunistring)
+ ("icu4c" ,icu4c) ; libunistring gets miner-miner-fs test to fail.
("json-glib" ,json-glib)
- ("openjpeg" ,openjpeg-1)
- ("libseccomp" ,libseccomp)
- ("libsoup" ,libsoup)
- ("libuuid" ,util-linux "lib")
- ("network-manager" ,network-manager)))
+ ("libsoup" ,libsoup)))
(synopsis "Metadata database, indexer and search tool")
(home-page "https://wiki.gnome.org/Projects/Tracker")
(description
- "Tracker is an advanced framework for first class objects with associated
-metadata and tags. It provides a one stop solution for all metadata, tags,
-shared object databases, search tools and indexing.")
+ "Tracker is a search engine and triplestore for desktop, embedded and mobile.
+
+It is a middleware component aimed at desktop application developers who want
+their apps to browse and search user content. It's not designed to be used
+directly by desktop users, but it provides a commandline tool named
+@command{tracker} for the adventurous.
+
+Tracker allows your application to instantly perform full-text searches across
+all documents. This feature is used by the @{emph{search} bar in GNOME Files, for
+example. This is achieved by indexing the user's home directory in the
+background.
+
+Tracker also allows your application to query and list content that the user
+has stored. For example, GNOME Music displays all the music files that are
+found by Tracker. This means that GNOME Music doesn't need to maintain a
+database of its own.
+
+If you need to go beyond simple searches, Tracker is also a linked data
+endpoint and it understands SPARQL. ")
+ ;; https://gitlab.gnome.org/GNOME/tracker/-/blob/master/COPYING:
;; src/libtracker-*/* and src/tracker-extract/* are covered by lgpl2.1+,
- ;; src/gvdb/* are covered by lgpl2.0+, and the rest is gpl2+.
+ ;; libstemmer is bsd-3 and the rest is gpl2+.
(license (list license:gpl2+
- license:lgpl2.1+
- license:lgpl2.0+))))
+ license:bsd-3
+ license:lgpl2.1+))))
(define-public tracker-miners
(package
(name "tracker-miners")
- (version "2.2.2")
+ (version "2.3.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/tracker-miners/"
@@ -7469,7 +7464,7 @@ shared object databases, search tools and indexing.")
"/tracker-miners-" version ".tar.xz"))
(sha256
(base32
- "0kk5xaajamb8jlm6cfdbc2m3axzr6bnph84m7697xmb0pkg8hdiw"))))
+ "1kizavw9gbdjkw4wykgv0fcl2y6fj788nycx9p4byn6ylb1277h6"))))
(build-system meson-build-system)
(arguments
`(#:glib-or-gtk? #t
@@ -8696,15 +8691,14 @@ only know by its Unicode name or code point.")
(define-public bluefish
(package
(name "bluefish")
- (version "2.2.10")
+ (version "2.2.11")
(source
(origin
(method url-fetch)
(uri (string-append "http://www.bennewitz.com/bluefish/stable/source/"
- name "-" version ".tar.gz"))
+ "bluefish-" version ".tar.gz"))
(sha256
- (base32
- "1jw4has7lbp77lqmzvnnjmqcf0lacjfnka873lkkwdyrpzc4c1q4"))))
+ (base32 "0a7kf78q4cj2ap4igjks9kbmmr74brsrl4y2f9wbxpl0b0v2ck2x"))))
(build-system gnu-build-system)
(native-inputs
`(("desktop-file-utils" ,desktop-file-utils)
@@ -8713,7 +8707,7 @@ only know by its Unicode name or code point.")
(inputs
`(("enchant" ,enchant)
("gtk+" ,gtk+)
- ("python" ,python-2)
+ ("python" ,python-wrapper)
("xmllint" ,libxml2)
("gucharmap" ,gucharmap)))
(home-page "http://bluefish.openoffice.nl")
@@ -9573,7 +9567,7 @@ for usage on small and big screens.")
(define-public libgit2-glib
(package
(name "libgit2-glib")
- (version "0.28.0.1")
+ (version "0.99.0.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@@ -9581,19 +9575,20 @@ for usage on small and big screens.")
name "-" version ".tar.xz"))
(sha256
(base32
- "0a0g7aw66rfgnqr4z7fgbk5zzcjq66m4rp8v4val3a212941h0g7"))))
+ "1pmrcnsa7qdda73c3dxf47733mwprmj5ljpw3acxbj6r8k27anp0"))))
(build-system meson-build-system)
(native-inputs
`(("glib:bin" ,glib "bin") ;; For glib-mkenums
("gobject-introspection" ,gobject-introspection)
- ("intltool" ,intltool)
- ("libssh2" ,libssh2)
("pkg-config" ,pkg-config)
("python-pygobject" ,python-pygobject)
("python-wrapper" ,python-wrapper)
("vala" ,vala)))
(inputs
`(("glib" ,glib)
+ ("libssh2" ,libssh2)))
+ (propagated-inputs
+ `(;; In Requires of libgit2-glib.pc.
("libgit2" ,libgit2)))
(synopsis "GLib wrapper around the libgit2 Git access library")
(description "libgit2-glib is a GLib wrapper library around the libgit2 Git
@@ -9647,7 +9642,6 @@ higher level porcelain stuff.")
("json-glib" ,json-glib)
("libdazzle" ,libdazzle)
("libgee" ,libgee)
- ("libgit2" ,libgit2) ; propagated by libgit2-glib
("libgit2-glib" ,libgit2-glib)
("libpeas" ,libpeas)
("libsecret" ,libsecret)
@@ -9835,3 +9829,58 @@ index files needed for Adwaita to be used outside of GNOME.")
integrate seamlessly with the GNOME desktop.")
(home-page "https://wiki.gnome.org/Apps/Polari")
(license license:gpl2+)))
+
+(define-public gnome-boxes
+ (package
+ (name "gnome-boxes")
+ (version "3.35.91")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnome/sources/gnome-boxes/"
+ (version-major+minor version) "/"
+ "gnome-boxes-" version ".tar.xz"))
+ (sha256
+ (base32
+ "0l96spz6pc8q4l5p9a58cc0kgvdr7pbc89hy6ixn72k5pl3s7fxj"))))
+ (build-system meson-build-system)
+ (arguments
+ '(#:glib-or-gtk? #t
+ #:configure-flags (list "-Drdp=false"
+ (string-append "-Dc_link_args=-Wl,-rpath="
+ (assoc-ref %outputs "out")
+ "/lib/gnome-boxes"))))
+ (native-inputs
+ `(("glib:bin" ,glib "bin") ; for glib-compile-resources
+ ("gtk+:bin" ,gtk+ "bin") ; for gtk-update-icon-cache
+ ("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database
+ ("itstool" ,itstool)
+ ("intltool" ,intltool)
+ ("vala" ,vala)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("libarchive" ,libarchive)
+ ("gtk" ,gtk+)
+ ("gtk-vnc" ,gtk-vnc)
+ ("libosinfo" ,libosinfo)
+ ("libsecret" ,libsecret)
+ ("libsoup" ,libsoup)
+ ("libusb" ,libusb)
+ ("libvirt" ,libvirt)
+ ("libvirt-glib" ,libvirt-glib)
+ ("libxml" ,libxml2)
+ ("spice-gtk" ,spice-gtk)
+ ("sparql-query" ,sparql-query)
+ ("vte" ,vte)
+ ("webkitgtk" ,webkitgtk)
+ ("tracker" ,tracker)
+ ("libgudev" ,libgudev)))
+ (home-page "https://wiki.gnome.org/Apps/Boxes")
+ (synopsis "View, access, and manage remote and virtual systems")
+ (description "GNOME Boxes is a simple application to view, access, and
+manage remote and virtual systems.")
+ (license (list
+ ;; For data/icons/empty-boxes.png.
+ license:cc-by2.0
+ ;; For all others.
+ license:lgpl2.0+))))
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index fea50625b6..c69a4e7e03 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -554,8 +554,8 @@ from forcing GEXP-PROMISE."
#:system system
#:guile-for-build guile)))
-(define %icecat-version "68.5.0-guix0-preview1")
-(define %icecat-build-id "20200211000000") ;must be of the form YYYYMMDDhhmmss
+(define %icecat-version "68.6.0-guix0-preview1")
+(define %icecat-build-id "20200309000000") ;must be of the form YYYYMMDDhhmmss
;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'
@@ -577,11 +577,11 @@ from forcing GEXP-PROMISE."
"firefox-" upstream-firefox-version ".source.tar.xz"))
(sha256
(base32
- "1ld6jinnln0si6p8qy93v5nzd21ckhl266vz425lwqipibwq9rsj"))))
+ "17qwfq9hwra8jarawy8k2sqfa6hdhwa9qk84ndr6gjvmxcy22a14"))))
- (upstream-icecat-base-version "68.5.0") ; maybe older than base-version
+ (upstream-icecat-base-version "68.6.0") ; maybe older than base-version
;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version))
- (gnuzilla-commit "2dc3c0bed6f8a41a8426ae66db92729af5c27c70")
+ (gnuzilla-commit "9dcb24d885eae5973eb2245b532b158c685d707a")
(gnuzilla-source
(origin
(method git-fetch)
@@ -593,7 +593,7 @@ from forcing GEXP-PROMISE."
(string-take gnuzilla-commit 8)))
(sha256
(base32
- "1xwr1xjs4j2i6skm8hknh37gzsd6r396n0lchbwlahig7w6z506y"))))
+ "1y3jmh055vmx44gsjgwxvwv3zcyvz8pc5mhgrwkzm0ybbwpp2pqi"))))
(makeicecat-patch
(local-file (search-patch "icecat-makeicecat.patch"))))
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 630984d3c1..871b1fed2f 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -3197,7 +3197,7 @@ are semantically equal in Go (for writing tests).")
(arguments
'(#:import-path "golang.org/x/sync/errgroup"
#:unpack-path "golang.org/x/sync"))
- (synopsis "Synchronization, error propagation, and Context cancelation
+ (synopsis "Synchronization, error propagation, and Context cancellation
for groups of goroutines working on subtasks of a common task.")
(description "This package provides synchronization, error propagation,
and Context cancelation for groups of goroutines working on subtasks of a
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 1062456885..b71b0178d6 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -17,7 +17,7 @@
;;; Copyright © 2017 ng0 <ng0@n0.is>
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2018, 2019, 2020 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2019 swedebugia <swedebugia@riseup.net>
@@ -80,8 +80,10 @@
#:use-module (gnu packages python)
#:use-module (gnu packages readline)
#:use-module (gnu packages sdl)
+ #:use-module (gnu packages search)
#:use-module (gnu packages slang)
#:use-module (gnu packages sqlite)
+ #:use-module (gnu packages swig)
#:use-module (gnu packages tex)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages tls)
@@ -3096,3 +3098,49 @@ currently a re-implementation of the lentes library for Clojure. Lenses
provide composable procedures, which can be used to focus, apply functions
over, or update a value in arbitrary data structures.")
(license license:gpl3+))))
+
+(define-public guile-xapian
+ (let ((commit "ede26b808188eb4d14c6b4181c933dfc09c0a22e")
+ (revision "0"))
+ (package
+ (name "guile-xapian")
+ (version (git-version "0" revision commit))
+ (home-page "https://git.systemreboot.net/guile-xapian")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference (url home-page)
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "07a9fmqi3pm6mbbpzi01mjwrqwnljs2rnc3603sq49dz4lf663gb"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings
+ (inputs
+ `(("guile" ,guile-2.2)
+ ("xapian" ,xapian)
+ ("zlib" ,zlib)))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("autoconf-archive" ,autoconf-archive)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)
+ ("swig" ,swig)))
+ (synopsis "Guile bindings for Xapian")
+ (description "@code{guile-xapian} provides Guile bindings for Xapian, a
+search engine library. Xapian is a highly adaptable toolkit which allows
+developers to easily add advanced indexing and search facilities to their own
+applications. It has built-in support for several families of weighting
+models and also supports a rich set of boolean query operators.")
+ (license license:gpl2+))))
+
+(define-public guile3.0-xapian
+ (package
+ (inherit guile-xapian)
+ (name "guile3.0-xapian")
+ (inputs
+ `(("guile" ,guile-next)
+ ,@(alist-delete "guile" (package-inputs guile-xapian))))))
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 53d626b9d2..0ce5d71cfd 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -251,6 +251,22 @@ without requiring the source code to be rewritten.")
(variable "GUILE_LOAD_COMPILED_PATH")
(files '("lib/guile/2.2/site-ccache")))))))
+(define-public guile-2.2.7
+ ;; This version contains a bug fix for a relatively rare crash that could
+ ;; affect shepherd as PID 1: <https://bugs.gnu.org/37757>.
+ (package
+ (inherit guile-2.2)
+ (version "2.2.7")
+ (source (origin
+ (inherit (package-source guile-2.2))
+ (uri (string-append "mirror://gnu/guile/guile-" version
+ ".tar.xz"))
+ (sha256
+ (base32
+ "013mydzhfswqci6xmyc1ajzd59pfbdak15i0b090nhr9bzm7dxyd"))))))
+
+(define-deprecated guile-2.2/bug-fix guile-2.2.7)
+
(define-public guile-2.2/fixed
;; A package of Guile 2.2 that's rarely changed. It is the one used
;; in the `base' module, and thus changing it entails a full rebuild.
@@ -277,15 +293,18 @@ without requiring the source code to be rewritten.")
(package
(inherit guile-2.2)
(name "guile-next") ;to be renamed to "guile"
- (version "3.0.0")
+ (version "3.0.1")
(source (origin
(inherit (package-source guile-2.2))
- (uri (string-append "ftp://ftp.gnu.org/gnu/guile/guile-"
+ (uri (string-append "mirror://gnu/guile/guile-"
version ".tar.xz"))
(sha256
(base32
- "0x8ca6q1qdmk29lh12gj6ngvgn7kp79w42rxfgwrpxm9jmjqs4y9"))
- (patches (search-patches "guile-2.2-skip-oom-test.patch"))))
+ "1jakps3127h8g69ixgb4zwc8v2g29dmwql1vi3pwg30kzp8fm5nn"))
+ (patches
+ (append (search-patches "guile-3.0-crash.patch")
+ (origin-patches (package-source guile-2.2))))))
+
(arguments
(substitute-keyword-arguments (package-arguments guile-2.2)
;; XXX: On ARMv7, work around <https://bugs.gnu.org/39208> by disabling
diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index 662f084fad..6005816260 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -269,14 +269,14 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
(define-public git-annex
(package
(name "git-annex")
- (version "8.20200226")
+ (version "8.20200309")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
"git-annex/git-annex-" version ".tar.gz"))
(sha256
- (base32 "09v80ni1w9z1im79lzrnpz7xlivwna44zqpwq4axwyd17cffqi9m"))))
+ (base32 "1yjb01jh5rccqg44nqh4iyxmbpkcpm6m82lnw7s0s2vizj8891p5"))))
(build-system haskell-build-system)
(arguments
`(#:configure-flags
@@ -615,7 +615,7 @@ Wayland, and Linux console environments alike.")
("ghc-sdl2" ,ghc-sdl2)
("ghc-sdl2-image" ,ghc-sdl2-image)
("ghc-sdl2-mixer" ,ghc-sdl2-mixer)))
- (home-page "http://www.bysusanlin.com/raincat/")
+ (home-page "https://www.gamecreation.org/games/raincat")
(synopsis "Puzzle game with a cat in lead role")
(description "Project Raincat is a game developed by Carnegie Mellon
students through GCS during the Fall 2008 semester. Raincat features game
diff --git a/gnu/packages/idris.scm b/gnu/packages/idris.scm
index 4c6c5e1aef..14b16882f0 100644
--- a/gnu/packages/idris.scm
+++ b/gnu/packages/idris.scm
@@ -121,7 +121,7 @@
(list (search-path-specification
(variable "IDRIS_LIBRARY_PATH")
(files '("lib/idris")))))
- (home-page "http://www.idris-lang.org")
+ (home-page "https://www.idris-lang.org")
(synopsis "General purpose language with full dependent types")
(description "Idris is a general purpose language with full dependent
types. It is compiled, with eager evaluation. Dependent types allow types to
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index a6fa7319ff..36f650f23a 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -1298,7 +1298,7 @@ ISO/IEC 15444-1).")
(define-public zimg
(package
(name "zimg")
- (version "2.9.2")
+ (version "2.9.3")
(source
(origin
(method git-fetch)
@@ -1307,7 +1307,7 @@ ISO/IEC 15444-1).")
(commit (string-append "release-" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "0jlgrlfs9maixd8mx7gk2kfawz8ixnihkxi7vhyzfy1gq49vmxm2"))))
+ (base32 "12bs2rfmmy021087i10vxibdbbvd5vld0vk3h5hymhpz7rgszcmg"))))
(build-system gnu-build-system)
(native-inputs
`(("autoconf" ,autoconf)
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 769e454bbd..1a90dd71d8 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -2353,6 +2353,12 @@ new Date();"))
(string-join (string-split version #\.) "u")
"-ga"))))
(file-name (string-append name "-" version "-checkout"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Delete included gradle jar
+ (delete-file-recursively "gradle/wrapper")
+ #t))
(sha256
(base32
"0yg38mwpivswccv9n96k06x3iv82i4px1a9xg9l8dswzwmfj259f"))))
@@ -3524,7 +3530,7 @@ testing frameworks, mocking libraries and UI validation rules.")
#:jar-name "junit.jar"))
(inputs
`(("java-hamcrest-core" ,java-hamcrest-core)))
- (home-page "http://junit.org/")
+ (home-page "https://junit.org/")
(synopsis "Test framework for Java")
(description
"JUnit is a simple framework to write repeatable tests for Java projects.
@@ -4674,7 +4680,7 @@ overly clever.")
(native-inputs
`(("java-junit" ,java-junit)
("java-hamcrest-core" ,java-hamcrest-core)))
- (home-page "http://commons.apache.org/math/")
+ (home-page "https://commons.apache.org/math/")
(synopsis "Apache Commons mathematics library")
(description "Commons Math is a library of lightweight, self-contained
mathematics and statistics components addressing the most common problems not
@@ -4856,7 +4862,7 @@ are many features, including:
(native-inputs
`(("junit" ,java-junit)
("collections-test" ,java-commons-collections-test-classes)))
- (home-page "http://commons.apache.org/beanutils/")
+ (home-page "https://commons.apache.org/beanutils/")
(synopsis "Dynamically set or get properties in Java")
(description "BeanUtils provides a simplified interface to reflection and
introspection to set or get dynamically determined properties through their
@@ -4891,7 +4897,7 @@ setter and getter method.")
(native-inputs
`(("java-junit" ,java-junit)
("java-hamcrest-core" ,java-hamcrest-core)))
- (home-page "http://commons.apache.org/io/")
+ (home-page "https://commons.apache.org/io/")
(synopsis "Common useful IO related classes")
(description "Commons-IO contains utility classes, stream implementations,
file filters and endian classes.")
@@ -5007,7 +5013,7 @@ time/FastDateFormatTest.java"
(add-after 'install 'install-doc (install-javadoc "target/apidocs")))))
(native-inputs
`(("java-junit" ,java-junit)))
- (home-page "http://commons.apache.org/lang/")
+ (home-page "https://commons.apache.org/lang/")
(synopsis "Extension of the java.lang package")
(description "The Commons Lang components contains a set of Java classes
that provide helper methods for standard Java classes, especially those found
@@ -5071,7 +5077,7 @@ included:
("java-commons-io" ,java-commons-io)
("java-hamcrest-all" ,java-hamcrest-all)
("java-easymock" ,java-easymock)))
- (home-page "http://commons.apache.org/lang/")
+ (home-page "https://commons.apache.org/lang/")
(synopsis "Extension of the java.lang package")
(description "The Commons Lang components contains a set of Java classes
that provide helper methods for standard Java classes, especially those found
@@ -5179,7 +5185,7 @@ these scripting language engines.")
("java-commons-beanutils" ,java-commons-beanutils)))
(native-inputs
`(("java-junit" ,java-junit)))
- (home-page "http://commons.apache.org/jxpath/")
+ (home-page "https://commons.apache.org/jxpath/")
(synopsis "Simple interpreter of an expression language called XPath.")
(description "The org.apache.commons.jxpath package defines a simple
interpreter of an expression language called XPath. JXPath applies XPath
@@ -5438,7 +5444,7 @@ more!")
"LogKitLogger.java"))
(delete-file-recursively "src/test")
#t)))))
- (home-page "http://commons.apache.org/logging/")
+ (home-page "https://commons.apache.org/logging/")
(synopsis "Common API for logging implementations")
(description "The Logging package is a thin bridge between different
logging implementations. A library that uses the commons-logging API can be
@@ -5655,7 +5661,7 @@ standards and recommendations.")
(native-inputs
`(("java-junit" ,java-junit)
("java-hamcrest-core" ,java-hamcrest-core)))
- (home-page "http://commons.apache.org/net/")
+ (home-page "https://commons.apache.org/net/")
(synopsis "Client library for many basic Internet protocols")
(description "The Apache Commons Net library implements the client side of
many basic Internet protocols. The purpose of the library is to provide
@@ -6497,7 +6503,7 @@ JavaMail API.")
`(("java-osgi-core" ,java-osgi-core)
("java-hamcrest-core" ,java-hamcrest-core)
("java-junit" ,java-junit)))
- (home-page "http://logging.apache.org/log4j/2.x/")
+ (home-page "https://logging.apache.org/log4j/2.x/")
(synopsis "API module of the Log4j logging framework for Java")
(description
"This package provides the API module of the Log4j logging framework for
@@ -6665,7 +6671,7 @@ This is a part of the Apache Commons Project.")
(add-after 'install 'install-doc (install-javadoc "dist/docs/api")))))
(native-inputs
`(("java-junit" ,java-junit)))
- (home-page "http://commons.apache.org/daemon/")
+ (home-page "https://commons.apache.org/daemon/")
(synopsis "Library to launch Java applications as daemons")
(description "The Daemon package from Apache Commons can be used to
implement Java applications which can be launched as daemons. For example the
@@ -9161,7 +9167,7 @@ those in Perl and JavaScript.")
("cglib" ,java-cglib)
("asm" ,java-asm)
("aopalliance" ,java-aopalliance)))
- (home-page "http://testng.org")
+ (home-page "https://testng.org")
(synopsis "Testing framework")
(description "TestNG is a testing framework inspired from JUnit and NUnit
but introducing some new functionalities that make it more powerful and easier
@@ -10260,7 +10266,7 @@ Dependency Injection (CDI).")
(native-inputs
`(("java-junit" ,java-junit)
("java-hamcrest-core" ,java-hamcrest-core)))
- (home-page "http://www.joda.org/joda-convert/")
+ (home-page "https://www.joda.org/joda-convert/")
(synopsis "Conversion between Objects and Strings")
(description "Joda-Convert provides a small set of classes to aid
conversion between Objects and Strings. It is not intended to tackle the
@@ -10631,7 +10637,7 @@ against expected outcomes.")
`(("unzip" ,unzip)
("java-junit" ,java-junit)
("java-hamcrest-core" ,java-hamcrest-core)))
- (home-page "http://approximatrix.com/products/openchart2/")
+ (home-page "https://approximatrix.com/products/openchart2/")
(synopsis "Simple plotting for Java")
(description "Openchart2 provides a simple, yet powerful, interface for
Java programmers to create two-dimensional charts and plots. The library
@@ -10727,7 +10733,7 @@ authentication, HTTP state management, and HTTP connection management.")
("java-commons-logging-minimal" ,java-commons-logging-minimal)
("java-commons-net" ,java-commons-net)
("java-jsch" ,java-jsch)))
- (home-page "http://commons.apache.org/proper/commons-vfs/")
+ (home-page "https://commons.apache.org/proper/commons-vfs/")
(synopsis "Java file system library")
(description "Commons VFS provides a single API for accessing various
different file systems. It presents a uniform view of the files from various
diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
index e87df550a9..4c1d5e7244 100644
--- a/gnu/packages/kde-multimedia.scm
+++ b/gnu/packages/kde-multimedia.scm
@@ -688,6 +688,8 @@ Its features include:
("solid" ,solid)))
(home-page "https://cgit.kde.org/libkcompactdisc.git/")
(synopsis "KDE library for playing & ripping CDs")
- (description "KDE library for playing & ripping CDs.")
+ (description "The KDE Compact Disc library provides an API for
+applications using the KDE Platform to interface with the CD drives for audio
+CDs.")
(license ;; GPL for programs, LGPL for libraries
(list license:gpl2+ license:lgpl2.0+))))
diff --git a/gnu/packages/kde-pim.scm b/gnu/packages/kde-pim.scm
index 9d48475a17..07293b6bd1 100644
--- a/gnu/packages/kde-pim.scm
+++ b/gnu/packages/kde-pim.scm
@@ -52,7 +52,7 @@
(patches (search-patches
"akonadi-paths.patch"
"akonadi-timestamps.patch"
- "akonadi-Revert-Make-installation-properly-relocatabl.patch"))))
+ "akonadi-Revert-Make-installation-properly-relo.patch"))))
(build-system qt-build-system)
(native-inputs
`(("extra-cmake-modules" ,extra-cmake-modules)
@@ -329,8 +329,8 @@ wrapping notes into KMime::Message objects.")
`(#:tests? #f)) ;; TODO: needs dbus
(home-page "https://api.kde.org/stable/kdepimlibs-apidocs/akonadi/html/")
(synopsis "Akonadi search library")
- (description "Xapian-based indexing and query infrastructure for
-Akonadi.")
+ (description "This package provides a library used to search in the
+Akonadi PIM data server. It uses Xapian for indexing and querying.")
(license ;; GPL for programs, LGPL for libraries
(list license:gpl2+ license:lgpl2.0+))))
@@ -371,7 +371,8 @@ Akonadi.")
`(#:tests? #f)) ;; TODO: TZ setup
(home-page "https://api.kde.org/stable/kdepimlibs-apidocs/")
(synopsis "Library for handling kalarm calendar data")
- (description "This library provides an API for KAlarm alarms.")
+ (description "This library provides access to and handling of kalarm
+calendar data.")
(license license:lgpl2.0+)))
(define-public kcalutils
@@ -454,7 +455,8 @@ functions for accessing calendar data using the kcalcore API.")
("qtbase" ,qtbase)))
(home-page "https://cgit.kde.org/kdepim-apps-libs.git")
(synopsis "KDE PIM mail related libraries and data files")
- (description "KDE PIM mail related libraries and data files.")
+ (description "This packages provides mail related libraries and data files
+for KDE PIM.")
(license ;; GPL for programs, LGPL for libraries
(list license:gpl2+ license:lgpl2.0+))))
@@ -541,7 +543,7 @@ cryptography to the contents of the clipboard.")
#t)))))
(home-page "https://kontact.kde.org/")
(synopsis "Library for shared identities between mail applications")
- (description "Library for shared identities between mail applications.")
+ (description "This library provides an API for managing user identities.")
(license ;; GPL for programs, LGPL for libraries, FDL for documentation
(list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
@@ -601,7 +603,9 @@ easier to do so.")
("openldap" ,openldap)))
(home-page "https://api.kde.org/stable/kdepimlibs-apidocs/")
(synopsis "Library for accessing LDAP")
- (description "This library provides an API for LDAP.")
+ (description " This is a library for accessing LDAP with a convenient Qt
+style C++ API. LDAP (Lightweight Directory Access Protocol) is an application
+protocol for querying and modifying directory services running over TCP/IP. ")
(license license:lgpl2.0+)))
(define-public kleopatra
@@ -694,7 +698,8 @@ and retrieving certificates from LDAP servers.")
("qtbase" ,qtbase)))
(home-page "https://cgit.kde.org/mailimporter.git")
(synopsis "KDE mail importer library")
- (description "KDE mail importer library.")
+ (description "This package provides libraries for importing mails other
+e-mail client programs into KMail and KDE PIM.")
(license ;; GPL for programs, LGPL for libraries
(list license:gpl2+ license:lgpl2.0+))))
@@ -736,7 +741,7 @@ and retrieving certificates from LDAP servers.")
`(#:tests? #f)) ;; TODO - 3/3 tests fail, require drkonqi
(home-page "https://api.kde.org/stable/kdepimlibs-apidocs/")
(synopsis "Mail transport service library")
- (description " This library provides an API and support code for managing
+ (description "This library provides an API and support code for managing
mail transport.")
(license license:lgpl2.0+)))
@@ -760,7 +765,8 @@ mail transport.")
("qtbase" ,qtbase)))
(home-page "https://api.kde.org/stable/kdepimlibs-apidocs/")
(synopsis "Library for handling mbox mailboxes")
- (description "A library for accessing mail storages in MBox format.")
+ (description "This is a library for handling mailboxes in mbox format,
+using a Qt/KMime C++ API.")
(license license:lgpl2.0+ )))
(define-public kmime
@@ -794,7 +800,11 @@ mail transport.")
#t)))))
(home-page "https://api.kde.org/stable/kdepimlibs-apidocs/")
(synopsis "Library for handling MIME data")
- (description "A library for MIME handling.")
+ (description "This library provides an API for handling MIME
+data. MIME (Multipurpose Internet Mail Extensions) is an Internet Standard
+that extends the format of e-mail to support text in character sets other than
+US-ASCII, non-text attachments, multi-part message bodies, and header
+information in non-ASCII character sets.")
(license license:lgpl2.0+)))
(define-public kontactinterface
@@ -821,7 +831,8 @@ mail transport.")
("qtbase" ,qtbase)))
(home-page "https://api.kde.org/stable/kdepimlibs-apidocs/")
(synopsis "Kontact interface library")
- (description "Kontact Interface library.")
+ (description " This library provides the glue necessary for
+application \"Parts\" to be embedded as a Kontact component (or plugin).")
(license license:lgpl2.0+)))
(define-public kpimcommon
@@ -881,8 +892,8 @@ mail transport.")
(arguments
`(#:tests? #f)) ;; TODO tests hang
(home-page "https://cgit.kde.org/pimcommon.git")
- (synopsis "Common library for KDE PIM")
- (description "Common library for KDE PIM.")
+ (synopsis "Common libraries for KDE PIM")
+ (description "This package provides common libraries for KDE PIM.")
(license ;; GPL for programs, LGPL for libraries
(list license:gpl2+ license:lgpl2.0+))))
@@ -922,7 +933,9 @@ mail transport.")
`(#:tests? #f)) ;; TODO - test suite hangs
(home-page "https://api.kde.org/stable/kdepimlibs-apidocs/")
(synopsis "Library providing a textedit with PIM-specific features")
- (description "A library for PIM-specific text editing utilities.")
+ (description "This package provides a textedit with PIM-specific features.
+It also provides so-called rich text builders which can convert the formatted
+text in the text edit to all kinds of markup, like HTML or BBCODE.")
(license ;; GPL for programs, LGPL for libraries, FDL for documentation
(list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
@@ -990,8 +1003,12 @@ standard protocols for e-mail transmission.")
("ki18n" ,ki18n)
("qtbase" ,qtbase)))
(home-page "https://api.kde.org/stable/kdepimlibs-apidocs/ktnef/html/")
- (synopsis "Viewer for mail attachments using TNEF format")
- (description "Viewer for mail attachments using TNEF format")
+ (synopsis "Library for handling mail attachments using TNEF format")
+ (description "Ktnef is a library for handling data in the TNEF
+format (Transport Neutral Encapsulation Format, a proprietary format of e-mail
+attachment used by Microsoft Outlook and Microsoft Exchange Server). The API
+permits access to the actual attachments, the message properties (TNEF/MAPI),
+and allows one to view/extract message formatted text in Rich Text Format.")
(license license:lgpl2.0+)))
(define-public libkdepim
@@ -1037,8 +1054,8 @@ standard protocols for e-mail transmission.")
("kwidgetsaddons" ,kwidgetsaddons)
("qtbase" ,qtbase)))
(home-page "https://cgit.kde.org/libkdepim.git")
- (synopsis "Libraries for common kdepim apps")
- (description "Libraries for common kdepim apps.")
+ (synopsis "Libraries for common KDE PIM apps")
+ (description "This package provided libraries for common KDE PIM apps.")
(license ;; GPL for programs, LGPL for libraries
(list license:gpl2+ license:lgpl2.0+))))
diff --git a/gnu/packages/kde-systemtools.scm b/gnu/packages/kde-systemtools.scm
index 682a5f583c..cd1b442169 100644
--- a/gnu/packages/kde-systemtools.scm
+++ b/gnu/packages/kde-systemtools.scm
@@ -161,7 +161,15 @@ Dolphin with the version control systems: Bzr, Git, Mercurial, Subversion.")
`(#:tests? #f)) ;; 1/1 test fails
(home-page "https://kde.org/applications/system/org.kde.Help")
(synopsis "KDE documentation viewer")
- (description "KDE documentation viewer")
+ (description "KHelpCenter uses meta data files which describe the
+documentation available in the system. Each document is represented by a meta
+data file and shown as an entry in the KHelpCenter navigation tree view. The
+meta data contains information about title and short description of the
+document, the location of the document and some more information like how to
+search the document and translations of title and description. Document
+hierarchy is represented as hierarchy of the meta data files. Directories are
+also described by a meta data file which contains the same information as a
+document meta data file.")
(license license:gpl2+)))
(define-public konsole
@@ -306,7 +314,7 @@ This package is part of the KDE networking module.")
(description "This program is developed for being used by beginner users,
which don't know how to find information about their Linux system, and how the
log files are in their computer. But it is also designed for advanced users,
-who want to quickly see problems occuring on their server.
+who want to quickly see problems occurring on their server.
This package is part of the KDE administration module.")
(license license:gpl2+)))
diff --git a/gnu/packages/kerberos.scm b/gnu/packages/kerberos.scm
index 890f4bc0b2..af3a0d18b2 100644
--- a/gnu/packages/kerberos.scm
+++ b/gnu/packages/kerberos.scm
@@ -112,7 +112,7 @@ authentication for client/server applications by using secret-key
cryptography.")
(license (license:non-copyleft "file://NOTICE"
"See NOTICE in the distribution."))
- (home-page "http://web.mit.edu/kerberos/")
+ (home-page "https://web.mit.edu/kerberos/")
(properties '((cpe-name . "kerberos")))))
(define-public shishi
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 2fc4afacd3..e9f261e859 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Mark H Weaver <mhw@netris.org>
@@ -361,18 +361,18 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
"linux-" version ".tar.xz"))
(sha256 hash)))
-(define-public linux-libre-5.4-version "5.4.23")
+(define-public linux-libre-5.4-version "5.4.24")
(define-public linux-libre-5.4-pristine-source
(let ((version linux-libre-5.4-version)
- (hash (base32 "1jhyg2yc03fka92l7hwdajim6q5rk538hjdr1gwgvpfyyp6sla1z")))
+ (hash (base32 "1cvy3mxwzll4f9j8i3hfmi0i0zq75aiafq1jskp9n4kq9iwar83z")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.4)))
-(define-public linux-libre-4.19-version "4.19.107")
+(define-public linux-libre-4.19-version "4.19.108")
(define-public linux-libre-4.19-pristine-source
(let ((version linux-libre-4.19-version)
- (hash (base32 "0h02pxzzwc5w2kfqw686bpxc13a93yq449lyzxxkxq1qilcsqjv5")))
+ (hash (base32 "18shyy1z2s8r26qb4rcz7gwl43dnmycjjywp9gss5zlfn2jyrbh9")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.19)))
@@ -2909,6 +2909,26 @@ device nodes from /dev/, handles hotplug events and loads drivers at boot
time.")
(license license:gpl2+)))
+;; TODO: Merge with eudev on the next rebuild cycle.
+(define-public eudev/btrfs-fix
+ (package/inherit
+ eudev
+ (version (string-append (package-version eudev) "-1"))
+ (arguments
+ (substitute-keyword-arguments (package-arguments eudev)
+ ((#:phases phases '%standard-phases)
+ `(modify-phases ,phases
+ (add-before 'configure 'patch-bindir-in-btrfs-rules
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; The "@bindir@" substitution incorrectly expands to a literal
+ ;; "${exec_prefix}" (see <https://bugs.gnu.org/39926>). Work
+ ;; around it.
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "rules/64-btrfs.rules.in"
+ (("@bindir@")
+ (string-append out "/bin")))
+ #t)))))))))
+
(define-public eudev-with-hwdb
(deprecated-package "eudev-with-hwdb" eudev))
@@ -5076,7 +5096,7 @@ of flash storage.")
(define-public libseccomp
(package
(name "libseccomp")
- (version "2.4.2")
+ (version "2.4.3")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/seccomp/libseccomp/"
@@ -5084,8 +5104,7 @@ of flash storage.")
"/libseccomp-" version ".tar.gz"))
(sha256
(base32
- "0nsq81acrbkdr8zairxbwa33bj2a6126npp76b4srjl472sjfkxm"))
- (patches (search-patches "libseccomp-open-aarch64.patch"))))
+ "07crwxqzvl5k2b90a47ii9wgvi09s9hsy5b5jddw9ylp351d25fg"))))
(build-system gnu-build-system)
(native-inputs
`(("which" ,which)))
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 924fb19805..e6bb85eaed 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -3008,7 +3008,7 @@ is a library for creating graphical user interfaces.")
(sbcl-package->cl-source-package sbcl-cl-cffi-gtk))
(define-public sbcl-cl-webkit
- (let ((commit "cd2a9008e0c152e54755e8a7f07b050fe36bab31"))
+ (let ((commit "79ad41996a1bd7fc8e53fe8d168e8f2030603b14"))
(package
(name "sbcl-cl-webkit")
(version (git-version "2.4" "1" commit))
@@ -3016,12 +3016,12 @@ is a library for creating graphical user interfaces.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/jmercouris/cl-webkit")
+ (url "https://github.com/joachifm/cl-webkit")
(commit commit)))
(file-name (git-file-name "cl-webkit" version))
(sha256
(base32
- "0f5lyn9i7xrn3g1bddga377mcbawkbxydijpg389q4n04gqj0vwf"))))
+ "1gxvmxmss5k79v2ccigx92q46zbydxh9r7plnnqh8na348pffgcs"))))
(build-system asdf-build-system/sbcl)
(inputs
`(("cffi" ,sbcl-cffi)
@@ -3038,7 +3038,7 @@ is a library for creating graphical user interfaces.")
(("libwebkit2gtk" all)
(string-append
(assoc-ref inputs "webkitgtk") "/lib/" all))))))))
- (home-page "https://github.com/jmercouris/cl-webkit")
+ (home-page "https://github.com/joachifm/cl-webkit")
(synopsis "Binding to WebKitGTK+ for Common Lisp")
(description
"@command{cl-webkit} is a binding to WebKitGTK+ for Common Lisp,
@@ -5357,10 +5357,10 @@ and @code{kqueue(2)}), a pathname library and file-system utilities.")
#t)))))
(synopsis "CFFI Groveller for IOLib, a Common Lisp I/O library")))
-(define-public sbcl-iolib
+(define sbcl-iolib+syscalls
(package
(inherit sbcl-iolib.asdf)
- (name "sbcl-iolib")
+ (name "sbcl-iolib+syscalls")
(inputs
`(("iolib.asdf" ,sbcl-iolib.asdf)
("iolib.conf" ,sbcl-iolib.conf)
@@ -5375,7 +5375,7 @@ and @code{kqueue(2)}), a pathname library and file-system utilities.")
`(("fiveam" ,sbcl-fiveam)))
(arguments
'(#:asd-file "iolib.asd"
- #:asd-system-name "iolib"
+ #:asd-system-name "iolib/syscalls"
#:test-asd-file "iolib.tests.asd"
#:phases
(modify-phases %standard-phases
@@ -5392,41 +5392,58 @@ and @code{kqueue(2)}), a pathname library and file-system utilities.")
"")))))))
(synopsis "Common Lisp I/O library")))
-(define-public cl-iolib
- (sbcl-package->cl-source-package sbcl-iolib))
-
(define sbcl-iolib+multiplex
(package
- (inherit sbcl-iolib)
+ (inherit sbcl-iolib+syscalls)
(name "sbcl-iolib+multiplex")
+ (inputs
+ `(("iolib+syscalls" ,sbcl-iolib+syscalls)
+ ,@(package-inputs sbcl-iolib+syscalls)))
(arguments
- (substitute-keyword-arguments (package-arguments sbcl-iolib)
+ (substitute-keyword-arguments (package-arguments sbcl-iolib+syscalls)
((#:asd-system-name _) "iolib/multiplex")))))
-(define sbcl-iolib+syscalls
- (package
- (inherit sbcl-iolib)
- (name "sbcl-iolib+syscalls")
- (arguments
- (substitute-keyword-arguments (package-arguments sbcl-iolib)
- ((#:asd-system-name _) "iolib/syscalls")))))
+
(define sbcl-iolib+streams
(package
- (inherit sbcl-iolib)
+ (inherit sbcl-iolib+syscalls)
(name "sbcl-iolib+streams")
+ (inputs
+ `(("iolib+multiplex" ,sbcl-iolib+multiplex)
+ ,@(package-inputs sbcl-iolib+syscalls)))
(arguments
- (substitute-keyword-arguments (package-arguments sbcl-iolib)
+ (substitute-keyword-arguments (package-arguments sbcl-iolib+syscalls)
((#:asd-system-name _) "iolib/streams")))))
(define sbcl-iolib+sockets
(package
- (inherit sbcl-iolib)
+ (inherit sbcl-iolib+syscalls)
(name "sbcl-iolib+sockets")
+ (inputs
+ `(("iolib+syscalls" ,sbcl-iolib+syscalls)
+ ("iolib+streams" ,sbcl-iolib+streams)
+ ,@(package-inputs sbcl-iolib+syscalls)))
(arguments
- (substitute-keyword-arguments (package-arguments sbcl-iolib)
+ (substitute-keyword-arguments (package-arguments sbcl-iolib+syscalls)
((#:asd-system-name _) "iolib/sockets")))))
+(define-public sbcl-iolib
+ (package
+ (inherit sbcl-iolib+syscalls)
+ (name "sbcl-iolib")
+ (inputs
+ `(("iolib+multiplex" ,sbcl-iolib+multiplex)
+ ("iolib+streams" ,sbcl-iolib+streams)
+ ("iolib+sockets" ,sbcl-iolib+sockets)
+ ,@(package-inputs sbcl-iolib+syscalls)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments sbcl-iolib+syscalls)
+ ((#:asd-system-name _) "iolib")))))
+
+(define-public cl-iolib
+ (sbcl-package->cl-source-package sbcl-iolib))
+
(define-public sbcl-ieee-floats
(let ((commit "566b51a005e81ff618554b9b2f0b795d3b29398d")
(revision "1"))
@@ -6350,16 +6367,13 @@ power of CXML is available when necessary.")
(sha256
(base32
"0fw2q866yddbf23nk9pxphm9gsasx35vjyss82xzvndnjmzlqfl5"))))
- ;; Inputs must be propagated or else packages depending on this won't have the necessary packages.
+ ;; Inputs must be propagated or else packages depending on this won't
+ ;; have the necessary packages.
(propagated-inputs
`(("alexandria" ,sbcl-alexandria)
("trivial-garbage" ,sbcl-trivial-garbage)
("babel" ,sbcl-babel)
("iolib" ,sbcl-iolib)
- ("iolib+multiplex" ,(@@ (gnu packages lisp-xyz) sbcl-iolib+multiplex))
- ("iolib+syscalls" ,(@@ (gnu packages lisp-xyz) sbcl-iolib+syscalls))
- ("iolib+streams" ,(@@ (gnu packages lisp-xyz) sbcl-iolib+streams))
- ("iolib+sockets" ,(@@ (gnu packages lisp-xyz) sbcl-iolib+sockets))
("ieee-floats" ,sbcl-ieee-floats)
("flexi-streams" ,sbcl-flexi-streams)
("cl-xmlspam" ,sbcl-cl-xmlspam)
@@ -11197,3 +11211,42 @@ interfaces as well as a functional and an object oriented interface.")
"-o" shared-lib)
#t)))))))
(synopsis "MySQL driver for Common Lisp SQL interface library")))
+
+(define-public sbcl-sycamore
+ (let ((commit "fd2820fec165ad514493426dea209728f64e6d18"))
+ (package
+ (name "sbcl-sycamore")
+ (version "0.0.20120604")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ndantam/sycamore/")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "00bv1aj89q5vldmq92zp2364jq312zjq2mbd3iyz1s2b4widzhl7"))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ `(#:asd-file "src/sycamore.asd"))
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("cl-ppcre" ,sbcl-cl-ppcre)))
+ (synopsis "Purely functional data structure library in Common Lisp")
+ (description
+ "Sycamore is a fast, purely functional data structure library in Common Lisp.
+If features:
+
+@itemize
+@item Fast, purely functional weight-balanced binary trees.
+@item Leaf nodes are simple-vectors, greatly reducing tree height.
+@item Interfaces for tree Sets and Maps (dictionaries).
+@item Ropes.
+@item Purely functional pairing heaps.
+@item Purely functional amortized queue.
+@end itemize\n")
+ (home-page "http://ndantam.github.io/sycamore/")
+ (license license:bsd-3))))
+
+(define-public cl-sycamore
+ (sbcl-package->cl-source-package sbcl-sycamore))
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 25f9c14b6f..3ff80a76da 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -798,7 +798,7 @@ computing environments.")
(define-public python-scikit-learn
(package
(name "python-scikit-learn")
- (version "0.20.4")
+ (version "0.22.1")
(source
(origin
(method git-fetch)
@@ -808,7 +808,7 @@ computing environments.")
(file-name (git-file-name name version))
(sha256
(base32
- "08zbzi8yx5wdlxfx9jap61vg1malc9ajf576w7a0liv6jvvrxlpj"))))
+ "1xqxv210gsmjw094vc5ghq2y9lmm74qkk22pq6flcjzj51b86jxf"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -835,7 +835,8 @@ computing environments.")
(inputs
`(("openblas" ,openblas)))
(native-inputs
- `(("python-pytest" ,python-pytest)
+ `(("python-joblib" ,python-joblib)
+ ("python-pytest" ,python-pytest)
("python-pandas" ,python-pandas) ;for tests
("python-cython" ,python-cython)))
(propagated-inputs
@@ -2105,7 +2106,8 @@ These include a barrier, broadcast, and allreduce.")
"02ada2yy6km6zgk2836kg1c97yrcpalvan34p8c57446finnpki1"))))
(build-system python-build-system)
(native-inputs
- `(("python-nose" ,python-nose)))
+ `(("python-joblib" ,python-joblib)
+ ("python-nose" ,python-nose)))
(propagated-inputs
`(("python-numba" ,python-numba)
("python-numpy" ,python-numpy)
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 7d69800f42..e6c0bf1c65 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1144,7 +1144,7 @@ MailCore 2.")
(method url-fetch)
(uri (string-append "https://ftp.heanet.ie/mirrors/"
"ftp.xemacs.org/aux/"
- name "-" version ".tar.gz"))
+ "compface-" version ".tar.gz"))
(sha256
(base32
"09b89wg63hg502hsz592cd2h87wdprb1dq1k1y07n89hym2q56d6"))))
@@ -1154,13 +1154,13 @@ MailCore 2.")
(synopsis "Portrait image compressor")
(description "This package takes your 48x48x1 portrait image and
compresses it.")
- (home-page "http://www.cs.indiana.edu/pub/faces/")
+ (home-page "https://legacy.cs.indiana.edu/ftp/faces/")
(license (x11-style "file://README"))))
(define-public claws-mail
(package
(name "claws-mail")
- (version "3.17.4")
+ (version "3.17.5")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1168,7 +1168,7 @@ compresses it.")
".tar.xz"))
(sha256
(base32
- "00mfhaac16sv67rwiq98hr4nl5zmd1h2afswwwksdcsi3q9x23jr"))))
+ "1gjrmdmhc7zzilrlss9yl86ybv9sra8v0qi7mkwv7d9azidx5kns"))))
(build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs `(("bogofilter" ,bogofilter)
@@ -1374,7 +1374,7 @@ facilities for checking incoming mail.")
(define-public dovecot
(package
(name "dovecot")
- (version "2.3.9.3")
+ (version "2.3.10")
(source
(origin
(method url-fetch)
@@ -1382,7 +1382,7 @@ facilities for checking incoming mail.")
(version-major+minor version) "/"
"dovecot-" version ".tar.gz"))
(sha256
- (base32 "0lcnqib63nv32xr3nr4s3x8k77mbgrhc13swjl2xqnzw4fabd7zq"))))
+ (base32 "1ibiz3k2flablkcqbkvfzsjnq5b5kxximhcrplflsjl57mr88ca7"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index aa5fad06aa..c9207d07f3 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -60,14 +60,14 @@ a flexible and convenient way.")
(define-public man-db
(package
(name "man-db")
- (version "2.9.0")
+ (version "2.9.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://savannah/man-db/man-db-"
version ".tar.xz"))
(sha256
(base32
- "0qg2sdn8mayya0ril484iz1r7hi46l68d2d80cr6lvc7x3csqjjx"))))
+ "0ky7aq8313xa1y0zdwdbz5yvjfjb3xy0xymbimd2d9q9bky8lgds"))))
(build-system gnu-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index fcba04956e..0ff98c796b 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -11,7 +11,7 @@
;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015 Fabian Harfert <fhmgufs@web.de>
;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2016, 2018 Kei Kebreau <kkebreau@posteo.net>
+;;; Copyright © 2016, 2018, 2020 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
@@ -34,6 +34,7 @@
;;; Copyright © 2019 Steve Sprang <scs@stevesprang.com>
;;; Copyright © 2019 Robert Smith <robertsmith@posteo.net>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
+;;; Copyright © 2020 Felix Gruber <felgru@posteo.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -3028,7 +3029,7 @@ point numbers.")
(define-public wxmaxima
(package
(name "wxmaxima")
- (version "20.01.3")
+ (version "20.02.4")
(source
(origin
(method git-fetch)
@@ -3037,10 +3038,13 @@ point numbers.")
(commit (string-append "Version-" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "18fj2m1qwlbavivpixph112wq9hxy3hh7c8q07djc3bhrzf2a7v7"))))
+ (base32 "106a7jrjwfmymzj70nsv44fm3jbxngr8pmkaghhpwy0ln38lhf54"))))
(build-system cmake-build-system)
(native-inputs
- `(("gettext" ,gettext-minimal)))
+ `(("gettext" ,gettext-minimal)
+ ("xorg-server" ,xorg-server-for-tests)))
+ ;; TODO: Add libomp for multithreading support.
+ ;; As of right now, enabling libomp causes the imageCells.wxm test to fail.
(inputs
`(("wxwidgets" ,wxwidgets)
("maxima" ,maxima)
@@ -3049,9 +3053,16 @@ point numbers.")
("gtk+" ,gtk+)
("shared-mime-info" ,shared-mime-info)))
(arguments
- `(#:tests? #f ; no check target
+ `(#:test-target "test"
#:phases
(modify-phases %standard-phases
+ (add-before 'check 'pre-check
+ (lambda _
+ ;; Tests require a running X server.
+ (system "Xvfb :1 &")
+ (setenv "DISPLAY" ":1")
+ (setenv "HOME" (getcwd))
+ #t))
(add-after 'install 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys)
(wrap-program (string-append (assoc-ref outputs "out")
@@ -3220,7 +3231,7 @@ parts of it.")
`(("cunit" ,cunit)
("fortran" ,gfortran)
("perl" ,perl)))
- (home-page "http://www.openblas.net/")
+ (home-page "https://www.openblas.net/")
(synopsis "Optimized BLAS library based on GotoBLAS")
(description
"OpenBLAS is a BLAS library forked from the GotoBLAS2-1.13 BSD version.")
@@ -3404,16 +3415,18 @@ Fresnel integrals, and similar related functions as well.")
(define-public suitesparse
(package
(name "suitesparse")
- (version "4.5.5")
+ (version "5.7.1")
(source
(origin
- (method url-fetch)
- (uri (string-append
- "http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-"
- version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/DrTimothyAldenDavis/SuiteSparse.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "1dnr6pmjzc2qmbkmb4shigx1l74ilf6abn7svyd6brxgvph8vadr"))
+ "174p3l78kv9gaa0i5hflyai2ydwnjzh34k9938sl4aa3li0543s8"))
+ (patches (search-patches "suitesparse-mongoose-cmake.patch"))
(modules '((guix build utils)))
(snippet
;; Remove bundled metis source
@@ -3428,6 +3441,14 @@ Fresnel integrals, and similar related functions as well.")
"BLAS=-lblas"
"TBB=-ltbb"
"MY_METIS_LIB=-lmetis"
+ ;; Flags for cmake (required to build GraphBLAS and Mongoose)
+ (string-append "CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX="
+ (assoc-ref %outputs "out")
+ " -DCMAKE_VERBOSE_MAKEFILE=ON"
+ " -DCMAKE_C_FLAGS_RELEASE=\"$(CFLAGS) $(CPPFLAGS)\""
+ " -DCMAKE_CXX_FLAGS_RELEASE=\"$(CXXFLAGS) $(CPPFLAGS)\""
+ " -DCMAKE_SKIP_RPATH=TRUE"
+ " -DCMAKE_BUILD_TYPE=Release")
(string-append "INSTALL_LIB="
(assoc-ref %outputs "out") "/lib")
(string-append "INSTALL_INCLUDE="
@@ -3440,6 +3461,9 @@ Fresnel integrals, and similar related functions as well.")
`(("tbb" ,tbb)
("lapack" ,lapack)
("metis" ,metis)))
+ (native-inputs
+ `(("cmake" ,cmake)
+ ("m4" ,m4)))
(home-page "http://faculty.cse.tamu.edu/davis/suitesparse.html")
(synopsis "Suite of sparse matrix software")
(description
@@ -5217,7 +5241,7 @@ syntax-highlighted scrollable display and is designed to be fully used via
keyboard. Some distinctive features are auto-completion of functions and
variables, a formula book, and quick insertion of constants from various
fields of knowledge.")
- (home-page "http://speedcrunch.org/")
+ (home-page "https://speedcrunch.org/")
(license license:gpl2+)))
(define-public minisat
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm