diff options
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 index d7cdace2ee..4ce210392e 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -1238,7 +1238,7 @@ for sending encrypted messages to one person or many subscribers.") (build-system gnu-build-system) (inputs `(("ncurses" ,ncurses))) - (home-page "http://ytalk.ourproject.org") + (home-page "https://ytalk.ourproject.org") (synopsis "Multi-user chat program") (description "Ytalk is a replacement for the BSD talk program. Its main advantage is the ability to communicate with any arbitrary number of users at diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index e26d3deaff..fa70e9d1ce 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -2353,6 +2353,64 @@ allows you to send JACK MIDI events (i.e. play) using your PC keyboard.") can connect to any JACK port and record the output into a stereo WAV file.") (license license:gpl2+))) +(define-public jack-select + (package + (name "jack-select") + (version "1.5.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "jack-select" version)) + (sha256 + (base32 + "1zijk9ly2fczxsnnrqr8s0ajmlyx1j1vd8gk0rm5dj5zyhhmia7f")))) + (build-system gnu-build-system) + (arguments + `(#:modules ((guix build gnu-build-system) + ((guix build python-build-system) #:prefix python:) + (guix build utils)) + #:imported-modules (,@%gnu-build-system-modules + (guix build python-build-system)) + #:make-flags + (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:tests? #f ; there are none + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key inputs #:allow-other-keys) + ;; python-dbus cannot be found but it's really there. See + ;; https://github.com/SpotlightKid/jack-select/issues/2 + (substitute* "setup.py" + (("'dbus-python',") "")) + ;; Fix reference to dlopened libraries. + (substitute* "jackselect/alsainfo.py" + (("libasound.so.2") + (string-append (assoc-ref inputs "alsa-lib") + "/lib/libasound.so.2"))) + #t)) + (replace 'build + (assoc-ref python:%standard-phases 'build)) + (add-after 'install 'wrap + (assoc-ref python:%standard-phases 'wrap))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("python" ,python-wrapper) + ("python-pyudev" ,python-pyudev) + ("python-pyxdg" ,python-pyxdg) + ("python-dbus" ,python-dbus) + ("python-pygobject" ,python-pygobject))) + (home-page "https://github.com/SpotlightKid/jack-select") + (synopsis "Systray application to quickly change the JACK-DBus configuration") + (description "This application displays an icon in the system tray (also +known as notification area) of your desktop, which shows the status of the +JACK audio server and when you click on it, a menu pops up, which lets you +quickly select from the JACK configuration presets you created with QjackCtl. +When you select a preset, its JACK engine and driver configuration settings +are loaded via DBus into JACK and then the server is restarted. This allows +you to switch between different audio setups with just two mouse clicks.") + (license license:expat))) + (define-public cursynth (package (name "cursynth") @@ -2870,7 +2928,7 @@ websites such as Libre.fm.") (find-files "instantmusic.egg-info" "PKG-INFO|.*\\.txt")) #t))))) - (home-page "http://iyask.me/Instant-Music-Downloader/") + (home-page "https://github.com/yask123/Instant-Music-Downloader") (synopsis "Command-line program to download a song from YouTube") (description "InstantMusic downloads a song from YouTube in MP3 format. Songs can be searched by artist, name or even by a part of the song text.") diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 67feb1f3d2..bd2481dc78 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -1510,7 +1510,7 @@ that block port 22.") supports tuning of various parameters related to timing, buffers and protocols (TCP, UDP, SCTP with IPv4 and IPv6). For each test it reports the bandwidth, loss, and other parameters.") - (home-page "http://software.es.net/iperf/") + (home-page "https://software.es.net/iperf/") (license (list license:bsd-3 ; Main distribution. license:ncsa ; src/{units,iperf_locale,tcp_window_size}.c license:expat ; src/{cjson,net}.[ch] diff --git a/gnu/packages/ntp.scm b/gnu/packages/ntp.scm index 9429778776..84790cf112 100644 --- a/gnu/packages/ntp.scm +++ b/gnu/packages/ntp.scm @@ -41,7 +41,7 @@ (define-public ntp (package (name "ntp") - (version "4.2.8p13") + (version "4.2.8p14") (source (origin (method url-fetch) @@ -54,7 +54,7 @@ (version-major+minor version) "/ntp-" version ".tar.gz"))) (sha256 - (base32 "0f1a4fya7v5s0426nim8ydvvlcashb8hicgs9xlm76ndrz7751r8")) + (base32 "1dsfbrad5adwjnm3k0y0ip8dzs7r2nmw66vjil8gvapnh7qf8q0r")) (modules '((guix build utils))) (snippet '(begin @@ -92,9 +92,9 @@ (description "NTP is a system designed to synchronize the clocks of computers over a network.") (license (l:x11-style - "http://www.eecis.udel.edu/~mills/ntp/html/copyright.html" + "https://www.eecis.udel.edu/~mills/ntp/html/copyright.html" "A non-copyleft free licence from the University of Delaware")) - (home-page "http://www.ntp.org"))) + (home-page "https://www.ntp.org"))) (define-public openntpd (package diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index c71029ef4e..19dbf2c7b8 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -111,8 +111,8 @@ ;; Note: the 'update-guix-package.scm' script expects this definition to ;; start precisely like this. (let ((version "1.0.1") - (commit "c2f9ea2b502a617bb69227d5f858eee9d4288a6a") - (revision 14)) + (commit "09844816c77caaa60f4149f99a34733966724627") + (revision 15)) (package (name "guix") @@ -128,7 +128,7 @@ (commit commit))) (sha256 (base32 - "0hg6yrqlzqiv4gmk9liqar6m9qhhn66q75jsmh86awjwq4qmvyab")) + "1fciffls6cw9zz13vig5x37r73qxc0irzyh0caimciddlksvabf7")) (file-name (string-append "guix-" version "-checkout")))) (build-system gnu-build-system) (arguments @@ -1005,7 +1005,7 @@ for packaging and deployment of cross-compiled Windows applications.") (define-public libostree (package (name "libostree") - (version "2020.1") + (version "2020.2") (source (origin (method url-fetch) (uri (string-append @@ -1013,7 +1013,7 @@ for packaging and deployment of cross-compiled Windows applications.") (version-major+minor version) "/libostree-" version ".tar.xz")) (sha256 (base32 - "0sgx81w6skiivbr2gfhljf9nvnqfwwnwfgpqqa10fjdkjrqwvpk8")))) + "0bbk0sg4m38g7j00hy358p2azxas87minpgz3avwma6jsylj1qjg")))) (build-system gnu-build-system) (arguments '(#:phases diff --git a/gnu/packages/patches/akonadi-Revert-Make-installation-properly-relocatabl.patch b/gnu/packages/patches/akonadi-Revert-Make-installation-properly-relo.patch index c3964c5c05..c3964c5c05 100644 --- a/gnu/packages/patches/akonadi-Revert-Make-installation-properly-relocatabl.patch +++ b/gnu/packages/patches/akonadi-Revert-Make-installation-properly-relo.patch diff --git a/gnu/packages/patches/anki-mpv-args.patch b/gnu/packages/patches/anki-mpv-args.patch new file mode 100644 index 0000000000..21b9bd0aba --- /dev/null +++ b/gnu/packages/patches/anki-mpv-args.patch @@ -0,0 +1,42 @@ +Modified from upstream commit: +https://github.com/ankitects/anki/commit/ccd715013609133c55e83924734efa78abc03326 +Fixes mpv argument syntax (support for old syntax removed in mpv 0.31): +https://anki.tenderapp.com/discussions/ankidesktop/38186-mpvprocesserror-unable-to-start-process +Necessary because we are currently unable to upgrade anki to the +latest version in guix (NPM dependencies currently unpackaged). +--- + anki/mpv.py | 4 ++-- + anki/sound.py | 1 - + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/anki/mpv.py b/anki/mpv.py +index f53d9d0..563fddc 100644 +--- a/anki/mpv.py ++++ b/anki/mpv.py +@@ -104,9 +104,9 @@ class MPVBase: + """ + self.argv = [self.executable] + self.argv += self.default_argv +- self.argv += ["--input-ipc-server", self._sock_filename] ++ self.argv += ["--input-ipc-server="+self._sock_filename] + if self.window_id is not None: +- self.argv += ["--wid", str(self.window_id)] ++ self.argv += ["--wid="+str(self.window_id)] + + def _start_process(self): + """Start the mpv process. +diff --git a/anki/sound.py b/anki/sound.py +index aa3431b..a5fce44 100644 +--- a/anki/sound.py ++++ b/anki/sound.py +@@ -124,7 +124,6 @@ class MpvManager(MPV): + def setMpvConfigBase(base): + mpvConfPath = os.path.join(base, "mpv.conf") + MpvManager.default_argv += [ +- "--no-config", + "--include="+mpvConfPath, + ] + +-- +2.25.1 + diff --git a/gnu/packages/patches/csvkit-fix-tests.patch b/gnu/packages/patches/csvkit-fix-tests.patch deleted file mode 100644 index cb9ec39cb0..0000000000 --- a/gnu/packages/patches/csvkit-fix-tests.patch +++ /dev/null @@ -1,45 +0,0 @@ -diff --git a/tests/test_utilities/test_csvsql.py b/tests/test_utilities/test_csvsql.py -index e6ec4af..4f47980 100644 ---- a/tests/test_utilities/test_csvsql.py -+++ b/tests/test_utilities/test_csvsql.py -@@ -197,7 +197,7 @@ class TestCSVSQL(CSVKitTestCase, EmptyFileTests): - utility.run() - output = output_file.getvalue() - output_file.close() -- self.assertEqual(output, 'a,b,c\n1,2,3\n0,5,6\n') -+ self.assertEqual(output, 'a,b,c\n1,2.0,3.0\n0,5.0,6.0\n') - - def test_no_prefix_unique_constraint(self): - self.get_output(['--db', 'sqlite:///' + self.db_file, '--insert', 'examples/dummy.csv', '--unique-constraint', 'a']) -diff --git a/tests/test_utilities/test_sql2csv.py b/tests/test_utilities/test_sql2csv.py -index a0c3d3e..babcfd6 100644 ---- a/tests/test_utilities/test_sql2csv.py -+++ b/tests/test_utilities/test_sql2csv.py -@@ -121,23 +121,23 @@ class TestSQL2CSV(CSVKitTestCase, EmptyFileTests): - input_file.close() - - def test_unicode(self): -- expected = self.csvsql('examples/test_utf8.csv') -+ self.csvsql('examples/test_utf8.csv') - csv = self.get_output(['--db', 'sqlite:///' + self.db_file, '--query', 'select * from foo']) -- self.assertEqual(csv.strip(), expected) -+ self.assertEqual(csv.strip(), 'foo,bar,baz\n1.0,2.0,3\n4.0,5.0,ʤ') - - def test_no_header_row(self): - self.csvsql('examples/dummy.csv') - csv = self.get_output(['--db', 'sqlite:///' + self.db_file, '--no-header-row', '--query', 'select * from foo']) - - self.assertTrue('a,b,c' not in csv) -- self.assertTrue('1,2,3' in csv) -+ self.assertTrue('1,2.0,3.0' in csv) - - def test_linenumbers(self): - self.csvsql('examples/dummy.csv') - csv = self.get_output(['--db', 'sqlite:///' + self.db_file, '--linenumbers', '--query', 'select * from foo']) - - self.assertTrue('line_number,a,b,c' in csv) -- self.assertTrue('1,1,2,3' in csv) -+ self.assertTrue('1,1,2.0,3.0' in csv) - - def test_wildcard_on_sqlite(self): - self.csvsql('examples/iris.csv') diff --git a/gnu/packages/patches/guile-3.0-crash.patch b/gnu/packages/patches/guile-3.0-crash.patch new file mode 100644 index 0000000000..510834ab57 --- /dev/null +++ b/gnu/packages/patches/guile-3.0-crash.patch @@ -0,0 +1,17 @@ +Fix crash due to: <https://issues.guix.gnu.org/issue/39266>. + +diff --git a/libguile/struct.c b/libguile/struct.c +index 3dbcc71d4..ddcbe46d2 100644 +--- a/libguile/struct.c ++++ b/libguile/struct.c +@@ -139,7 +139,9 @@ set_vtable_access_fields (SCM vtable) + nfields = len / 2; + + bitmask_size = (nfields + 31U) / 32U; +- unboxed_fields = scm_gc_malloc_pointerless (bitmask_size, "unboxed fields"); ++ unboxed_fields = ++ scm_gc_malloc_pointerless (bitmask_size * sizeof (*unboxed_fields), ++ "unboxed fields"); + memset (unboxed_fields, 0, bitmask_size * sizeof(*unboxed_fields)); + + /* Update FLAGS according to LAYOUT. */ diff --git a/gnu/packages/patches/icecat-makeicecat.patch b/gnu/packages/patches/icecat-makeicecat.patch index beaddf9437..a90d7fdee8 100644 --- a/gnu/packages/patches/icecat-makeicecat.patch +++ b/gnu/packages/patches/icecat-makeicecat.patch @@ -25,7 +25,7 @@ index 8be2362..48716f2 100755 -wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc -gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353 -gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc --echo -n 52e784f98a37624e8b207f1b23289c2c88f66dd923798cae891a586a6d94a6d1 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c - +-echo -n 2428213ceb75cb6772b3044d9c14870d1ae5b0161379aeb29248650e13761c9f firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c - - -echo Extracting Firefox tarball -tar -xf firefox-${FFVERSION}esr.source.tar.xz @@ -37,7 +37,7 @@ index 8be2362..48716f2 100755 +# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc +# gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353 +# gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc -+# echo -n 52e784f98a37624e8b207f1b23289c2c88f66dd923798cae891a586a6d94a6d1 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c - ++# echo -n 2428213ceb75cb6772b3044d9c14870d1ae5b0161379aeb29248650e13761c9f firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c - +# +# echo Extracting Firefox tarball +# tar -xf firefox-${FFVERSION}esr.source.tar.xz diff --git a/gnu/packages/patches/libseccomp-open-aarch64.patch b/gnu/packages/patches/libseccomp-open-aarch64.patch deleted file mode 100644 index 6e62825892..0000000000 --- a/gnu/packages/patches/libseccomp-open-aarch64.patch +++ /dev/null @@ -1,27 +0,0 @@ -This patch fixes the build failure on AArch64 reported -at <https://github.com/seccomp/libseccomp/pull/191>. - -From cc21c1b48d35f9d34ef2da0e184af3855bfeee5f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> -Date: Wed, 20 Nov 2019 14:11:12 -0500 -Subject: [PATCH] tests: use openat instead of open - -On arm64, __NR_open is not defined, openat is always used. Let's use openat -instead, which is defined for architectures currently. ---- - tests/15-basic-resolver.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tests/15-basic-resolver.c b/tests/15-basic-resolver.c -index 6badef1..4884faf 100644 ---- a/tests/15-basic-resolver.c -+++ b/tests/15-basic-resolver.c -@@ -55,7 +55,7 @@ int main(int argc, char *argv[]) - unsigned int arch; - char *name = NULL; - -- if (seccomp_syscall_resolve_name("open") != __NR_open) -+ if (seccomp_syscall_resolve_name("openat") != __NR_openat) - goto fail; - if (seccomp_syscall_resolve_name("read") != __NR_read) - goto fail; diff --git a/gnu/packages/patches/qemu-CVE-2020-8608.patch b/gnu/packages/patches/qemu-CVE-2020-8608.patch new file mode 100644 index 0000000000..4cb017c795 --- /dev/null +++ b/gnu/packages/patches/qemu-CVE-2020-8608.patch @@ -0,0 +1,269 @@ +Fix CVE-2020-8608: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-8608 +https://www.openwall.com/lists/oss-security/2020/02/06/2 + +Patches copied from upstream dependency repository: + +https://gitlab.freedesktop.org/slirp/libslirp/commit/68ccb8021a838066f0951d4b2817eb6b6f10a843 +https://gitlab.freedesktop.org/slirp/libslirp/commit/30648c03b27fb8d9611b723184216cd3174b6775 + +From 68ccb8021a838066f0951d4b2817eb6b6f10a843 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com> +Date: Mon, 27 Jan 2020 10:24:14 +0100 +Subject: [PATCH] tcp_emu: fix unsafe snprintf() usages +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Various calls to snprintf() assume that snprintf() returns "only" the +number of bytes written (excluding terminating NUL). + +https://pubs.opengroup.org/onlinepubs/9699919799/functions/snprintf.html#tag_16_159_04 + +"Upon successful completion, the snprintf() function shall return the +number of bytes that would be written to s had n been sufficiently +large excluding the terminating null byte." + +Before patch ce131029, if there isn't enough room in "m_data" for the +"DCC ..." message, we overflow "m_data". + +After the patch, if there isn't enough room for the same, we don't +overflow "m_data", but we set "m_len" out-of-bounds. The next time an +access is bounded by "m_len", we'll have a buffer overflow then. + +Use slirp_fmt*() to fix potential OOB memory access. + +Reported-by: Laszlo Ersek <lersek@redhat.com> +Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> +Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org> +Message-Id: <20200127092414.169796-7-marcandre.lureau@redhat.com> +--- + src/tcp_subr.c | 44 +++++++++++++++++++++----------------------- + 1 file changed, 21 insertions(+), 23 deletions(-) + +diff --git a/src/tcp_subr.c b/src/tcp_subr.c +index a699117..a72c86b 100644 +--- a/slirp/src/tcp_subr.c ++++ b/slirp/src/tcp_subr.c +@@ -643,8 +643,7 @@ int tcp_emu(struct socket *so, struct mbuf *m) + NTOHS(n1); + NTOHS(n2); + m_inc(m, snprintf(NULL, 0, "%d,%d\r\n", n1, n2) + 1); +- m->m_len = snprintf(m->m_data, M_ROOM(m), "%d,%d\r\n", n1, n2); +- assert(m->m_len < M_ROOM(m)); ++ m->m_len = slirp_fmt(m->m_data, M_ROOM(m), "%d,%d\r\n", n1, n2); + } else { + *eol = '\r'; + } +@@ -684,9 +683,9 @@ int tcp_emu(struct socket *so, struct mbuf *m) + n4 = (laddr & 0xff); + + m->m_len = bptr - m->m_data; /* Adjust length */ +- m->m_len += snprintf(bptr, M_FREEROOM(m), +- "ORT %d,%d,%d,%d,%d,%d\r\n%s", n1, n2, n3, n4, +- n5, n6, x == 7 ? buff : ""); ++ m->m_len += slirp_fmt(bptr, M_FREEROOM(m), ++ "ORT %d,%d,%d,%d,%d,%d\r\n%s", ++ n1, n2, n3, n4, n5, n6, x == 7 ? buff : ""); + return 1; + } else if ((bptr = (char *)strstr(m->m_data, "27 Entering")) != NULL) { + /* +@@ -719,10 +718,9 @@ int tcp_emu(struct socket *so, struct mbuf *m) + n4 = (laddr & 0xff); + + m->m_len = bptr - m->m_data; /* Adjust length */ +- m->m_len += snprintf(bptr, M_FREEROOM(m), +- "27 Entering Passive Mode (%d,%d,%d,%d,%d,%d)\r\n%s", +- n1, n2, n3, n4, n5, n6, x == 7 ? buff : ""); +- ++ m->m_len += slirp_fmt(bptr, M_FREEROOM(m), ++ "27 Entering Passive Mode (%d,%d,%d,%d,%d,%d)\r\n%s", ++ n1, n2, n3, n4, n5, n6, x == 7 ? buff : ""); + return 1; + } + +@@ -745,8 +743,8 @@ int tcp_emu(struct socket *so, struct mbuf *m) + if (m->m_data[m->m_len - 1] == '\0' && lport != 0 && + (so = tcp_listen(slirp, INADDR_ANY, 0, so->so_laddr.s_addr, + htons(lport), SS_FACCEPTONCE)) != NULL) +- m->m_len = snprintf(m->m_data, M_ROOM(m), +- "%d", ntohs(so->so_fport)) + 1; ++ m->m_len = slirp_fmt0(m->m_data, M_ROOM(m), ++ "%d", ntohs(so->so_fport)); + return 1; + + case EMU_IRC: +@@ -765,10 +763,10 @@ int tcp_emu(struct socket *so, struct mbuf *m) + return 1; + } + m->m_len = bptr - m->m_data; /* Adjust length */ +- m->m_len += snprintf(bptr, M_FREEROOM(m), +- "DCC CHAT chat %lu %u%c\n", +- (unsigned long)ntohl(so->so_faddr.s_addr), +- ntohs(so->so_fport), 1); ++ m->m_len += slirp_fmt(bptr, M_FREEROOM(m), ++ "DCC CHAT chat %lu %u%c\n", ++ (unsigned long)ntohl(so->so_faddr.s_addr), ++ ntohs(so->so_fport), 1); + } else if (sscanf(bptr, "DCC SEND %256s %u %u %u", buff, &laddr, &lport, + &n1) == 4) { + if ((so = tcp_listen(slirp, INADDR_ANY, 0, htonl(laddr), +@@ -776,10 +774,10 @@ int tcp_emu(struct socket *so, struct mbuf *m) + return 1; + } + m->m_len = bptr - m->m_data; /* Adjust length */ +- m->m_len += snprintf(bptr, M_FREEROOM(m), +- "DCC SEND %s %lu %u %u%c\n", buff, +- (unsigned long)ntohl(so->so_faddr.s_addr), +- ntohs(so->so_fport), n1, 1); ++ m->m_len += slirp_fmt(bptr, M_FREEROOM(m), ++ "DCC SEND %s %lu %u %u%c\n", buff, ++ (unsigned long)ntohl(so->so_faddr.s_addr), ++ ntohs(so->so_fport), n1, 1); + } else if (sscanf(bptr, "DCC MOVE %256s %u %u %u", buff, &laddr, &lport, + &n1) == 4) { + if ((so = tcp_listen(slirp, INADDR_ANY, 0, htonl(laddr), +@@ -787,10 +785,10 @@ int tcp_emu(struct socket *so, struct mbuf *m) + return 1; + } + m->m_len = bptr - m->m_data; /* Adjust length */ +- m->m_len += snprintf(bptr, M_FREEROOM(m), +- "DCC MOVE %s %lu %u %u%c\n", buff, +- (unsigned long)ntohl(so->so_faddr.s_addr), +- ntohs(so->so_fport), n1, 1); ++ m->m_len += slirp_fmt(bptr, M_FREEROOM(m), ++ "DCC MOVE %s %lu %u %u%c\n", buff, ++ (unsigned long)ntohl(so->so_faddr.s_addr), ++ ntohs(so->so_fport), n1, 1); + } + return 1; + +-- +2.25.1 + +From 30648c03b27fb8d9611b723184216cd3174b6775 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com> +Date: Mon, 27 Jan 2020 10:24:09 +0100 +Subject: [PATCH] util: add slirp_fmt() helpers +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Various calls to snprintf() in libslirp assume that snprintf() returns +"only" the number of bytes written (excluding terminating NUL). + +https://pubs.opengroup.org/onlinepubs/9699919799/functions/snprintf.html#tag_16_159_04 + +"Upon successful completion, the snprintf() function shall return the +number of bytes that would be written to s had n been sufficiently +large excluding the terminating null byte." + +Introduce slirp_fmt() that handles several pathological cases the +way libslirp usually expect: + +- treat error as fatal (instead of silently returning -1) + +- fmt0() will always \0 end + +- return the number of bytes actually written (instead of what would +have been written, which would usually result in OOB later), including +the ending \0 for fmt0() + +- warn if truncation happened (instead of ignoring) + +Other less common cases can still be handled with strcpy/snprintf() etc. + +Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> +Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org> +Message-Id: <20200127092414.169796-2-marcandre.lureau@redhat.com> +--- + src/util.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/util.h | 3 +++ + 2 files changed, 65 insertions(+) + +diff --git a/src/util.c b/src/util.c +index e596087..e3b6257 100644 +--- a/slirp/src/util.c ++++ b/slirp/src/util.c +@@ -364,3 +364,65 @@ void slirp_pstrcpy(char *buf, int buf_size, const char *str) + } + *q = '\0'; + } ++ ++static int slirp_vsnprintf(char *str, size_t size, ++ const char *format, va_list args) ++{ ++ int rv = vsnprintf(str, size, format, args); ++ ++ if (rv < 0) { ++ g_error("vsnprintf() failed: %s", g_strerror(errno)); ++ } ++ ++ return rv; ++} ++ ++/* ++ * A snprintf()-like function that: ++ * - returns the number of bytes written (excluding optional \0-ending) ++ * - dies on error ++ * - warn on truncation ++ */ ++int slirp_fmt(char *str, size_t size, const char *format, ...) ++{ ++ va_list args; ++ int rv; ++ ++ va_start(args, format); ++ rv = slirp_vsnprintf(str, size, format, args); ++ va_end(args); ++ ++ if (rv > size) { ++ g_critical("vsnprintf() truncation"); ++ } ++ ++ return MIN(rv, size); ++} ++ ++/* ++ * A snprintf()-like function that: ++ * - always \0-end (unless size == 0) ++ * - returns the number of bytes actually written, including \0 ending ++ * - dies on error ++ * - warn on truncation ++ */ ++int slirp_fmt0(char *str, size_t size, const char *format, ...) ++{ ++ va_list args; ++ int rv; ++ ++ va_start(args, format); ++ rv = slirp_vsnprintf(str, size, format, args); ++ va_end(args); ++ ++ if (rv >= size) { ++ g_critical("vsnprintf() truncation"); ++ if (size > 0) ++ str[size - 1] = '\0'; ++ rv = size; ++ } else { ++ rv += 1; /* include \0 */ ++ } ++ ++ return rv; ++} +diff --git a/src/util.h b/src/util.h +index e9c3073..5530c46 100644 +--- a/slirp/src/util.h ++++ b/slirp/src/util.h +@@ -181,4 +181,7 @@ static inline int slirp_socket_set_fast_reuse(int fd) + + void slirp_pstrcpy(char *buf, int buf_size, const char *str); + ++int slirp_fmt(char *str, size_t size, const char *format, ...); ++int slirp_fmt0(char *str, size_t size, const char *format, ...); ++ + #endif +-- +2.25.1 + diff --git a/gnu/packages/patches/sdl-pango-fix-explicit-SDLPango_CopyFTBitmapToSurface.patch b/gnu/packages/patches/sdl-pango-fix-explicit-SDLPango_CopyFTBitmapTo.patch index 3d4b10cc10..3d4b10cc10 100644 --- a/gnu/packages/patches/sdl-pango-fix-explicit-SDLPango_CopyFTBitmapToSurface.patch +++ b/gnu/packages/patches/sdl-pango-fix-explicit-SDLPango_CopyFTBitmapTo.patch diff --git a/gnu/packages/patches/spice-fix-test-armhf.patch b/gnu/packages/patches/spice-fix-test-armhf.patch deleted file mode 100644 index 5c51bd6ede..0000000000 --- a/gnu/packages/patches/spice-fix-test-armhf.patch +++ /dev/null @@ -1,19 +0,0 @@ -Fix test failure on armhf and ppc64el: -https://gitlab.freedesktop.org/spice/spice-server/issues/31 - -Taken from upstream: -https://gitlab.freedesktop.org/spice/spice/commit/19f9f454e0777d851f26d14df0c7984267c57015 - -diff --git a/server/tests/test-qxl-parsing.c b/server/tests/test-qxl-parsing.c -index 60ca8f88c62441e02577ced21e4f60a08ad4171a..234bdabc9ce619d0799b5136f1d72357b0b2f490 100644 ---- a/server/tests/test-qxl-parsing.c -+++ b/server/tests/test-qxl-parsing.c -@@ -96,7 +96,7 @@ static void test_memslot_invalid_slot_id(void) - RedMemSlotInfo mem_info; - init_meminfo(&mem_info); - -- memslot_get_virt(&mem_info, 1 << mem_info.memslot_id_shift, 16, 0); -+ memslot_get_virt(&mem_info, UINT64_C(1) << mem_info.memslot_id_shift, 16, 0); - } - - static void test_memslot_invalid_addresses(void) diff --git a/gnu/packages/patches/suitesparse-mongoose-cmake.patch b/gnu/packages/patches/suitesparse-mongoose-cmake.patch new file mode 100644 index 0000000000..e5062f9aaa --- /dev/null +++ b/gnu/packages/patches/suitesparse-mongoose-cmake.patch @@ -0,0 +1,27 @@ +Fix required by suitesparse to build Mongoose + +The CMakeLists.txt of Mongoose assumes that SuiteSparse_config has been +installed into the suitesparse source directory, which is not the case +for us, as we are building suitesparse out-of-tree. + +SuiteSparse_config can instead be found in the ${CMAKE_INSTALL_PREFIX} +directory. + +diff --git a/Mongoose/CMakeLists.txt b/Mongoose/CMakeLists.txt +index 7e134ab..76fa9e2 100644 +--- a/Mongoose/CMakeLists.txt ++++ b/Mongoose/CMakeLists.txt +@@ -148,10 +148,10 @@ set(CMAKE_CXX_STANDARD 11) + #set(CMAKE_CXX_STANDARD_REQUIRED ON) + + # determine which SuiteSparse_config to use +-if (EXISTS ${PROJECT_SOURCE_DIR}/../SuiteSparse_config) +- message(STATUS "External ../SuiteSparse_config" ${BoldBlue} " found" ${ColourReset} ".") ++if (EXISTS ${CMAKE_INSTALL_PREFIX}) ++ message(STATUS "External SuiteSparse_config" ${BoldBlue} " found" ${ColourReset} ".") + set ( SUITESPARSE_CONFIG_DIR ${PROJECT_SOURCE_DIR}/../SuiteSparse_config ) +- link_directories ( ${PROJECT_SOURCE_DIR}/../lib ) ++ link_directories ( ${CMAKE_INSTALL_PREFIX}/lib ) + message ( STATUS "Note: ../SuiteSparse_config must be compiled before compiling Mongoose" ) + set ( SUITESPARSE_CONFIG_LIBRARY suitesparseconfig ) + else () diff --git a/gnu/packages/patches/woff2-libbrotli.patch b/gnu/packages/patches/woff2-libbrotli.patch deleted file mode 100644 index ffa941cf92..0000000000 --- a/gnu/packages/patches/woff2-libbrotli.patch +++ /dev/null @@ -1,84 +0,0 @@ -From: Eric Bavier <bavier@member.fsf.org> -Date: Sat, 2 Apr 2016 01:31:03 -0500 -Subject: [PATCH] Build against external libbrotli. - ---- - Makefile | 20 ++++---------------- - src/woff2_dec.cc | 2 +- - src/woff2_enc.cc | 2 +- - 3 files changed, 6 insertions(+), 18 deletions(-) - -diff --git a/Makefile b/Makefile -index 92b8d54..618a751 100644 ---- a/Makefile -+++ b/Makefile -@@ -1,6 +1,6 @@ - OS := $(shell uname) - --CPPFLAGS = -I./brotli/dec/ -I./brotli/enc/ -I./src -+CPPFLAGS := -I./src $(shell pkg-config --cflags libbrotlienc libbrotlidec) - - CC ?= gcc - CXX ?= g++ -@@ -22,29 +22,17 @@ OUROBJ = font.o glyph.o normalize.o table_tags.o transform.o \ - woff2_dec.o woff2_enc.o woff2_common.o woff2_out.o \ - variable_length.o - --BROTLI = brotli --ENCOBJ = $(BROTLI)/enc/*.o --DECOBJ = $(BROTLI)/dec/*.o -+BROTLI_LIBS := $(shell pkg-config --libs libbrotlienc libbrotlidec) - - OBJS = $(patsubst %, $(SRCDIR)/%, $(OUROBJ)) - EXECUTABLES=woff2_compress woff2_decompress - - EXE_OBJS=$(patsubst %, $(SRCDIR)/%.o, $(EXECUTABLES)) - --ifeq (,$(wildcard $(BROTLI)/*)) -- $(error Brotli dependency not found : you must initialize the Git submodule) --endif -- - all : $(OBJS) $(EXECUTABLES) - --$(EXECUTABLES) : $(EXE_OBJS) deps -- $(CXX) $(LFLAGS) $(OBJS) $(ENCOBJ) $(DECOBJ) $(SRCDIR)/$@.o -o $@ -- --deps : -- $(MAKE) -C $(BROTLI)/dec -- $(MAKE) -C $(BROTLI)/enc -+$(EXECUTABLES) : $(EXE_OBJS) $(OBJS) -+ $(CXX) $(LDFLAGS) $(OBJS) $(SRCDIR)/$@.o -o $@ $(BROTLI_LIBS) $(LIBS) - - clean : - rm -f $(OBJS) $(EXE_OBJS) $(EXECUTABLES) -- $(MAKE) -C $(BROTLI)/dec clean -- $(MAKE) -C $(BROTLI)/enc clean -diff --git a/src/woff2_dec.cc b/src/woff2_dec.cc -index 837eede..98c01ce 100644 ---- a/src/woff2_dec.cc -+++ b/src/woff2_dec.cc -@@ -27,7 +27,7 @@ - #include <memory> - #include <utility> - --#include "./decode.h" -+#include "brotli/dec/decode.h" - #include "./buffer.h" - #include "./port.h" - #include "./round.h" -diff --git a/src/woff2_enc.cc b/src/woff2_enc.cc -index 920c614..00d74da 100644 ---- a/src/woff2_enc.cc -+++ b/src/woff2_enc.cc -@@ -23,7 +23,7 @@ - #include <string> - #include <vector> - --#include "./encode.h" -+#include "brotli/enc/encode.h" - #include "./buffer.h" - #include "./font.h" - #include "./normalize.h" --- -2.7.3 - diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 6b29e8ce59..8ebefa86b9 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -9,13 +9,13 @@ ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 ng0 <ng0@n0.is> ;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co> -;;; Copyright © 2016, 2018 Roel Janssen <roel@gnu.org> +;;; Copyright © 2016, 2018, 2020 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2017 Raoul J.P. Bonnal <ilpuccio.febo@gmail.com> ;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com> -;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org> ;;; Copyright © 2018, 2019 Oleg Pykhalov <go.wigust@gmail.com> @@ -325,6 +325,33 @@ signal running perl code from another thread, asynchronously, and sometimes even without using a single syscall.") (license (package-license perl)))) +(define-public perl-attribute-util + (package + (name "perl-attribute-util") + (version "1.07") + (source (origin + (method url-fetch) + (uri (string-append + "https://cpan.metacpan.org/authors/id/D/DA/DANKOGAI/" + "Attribute-Util-" version ".tar.gz")) + (sha256 + (base32 + "1z79d845dy96lg0pxw0kr2za0gniwnpn963r7ccajfpj6k7jfw07")))) + (build-system perl-build-system) + (home-page "https://metacpan.org/pod/Attribute::Util") + (synopsis "Assorted general utility attributes") + (description "This packages provides various utility functions. When used +without argument, this module provides four universally accessible attributes +of general interest as follows: +@itemize +@item Abstract +@item Alias +@item Memoize +@item Method +@item SigHandler +@end itemize") + (license (package-license perl)))) + (define-public perl-autovivification (package (name "perl-autovivification") @@ -1414,6 +1441,28 @@ libraries to load configuration data from multiple different file formats. It supports XML, YAML, JSON, Apache-style configuration, and Perl code.") (license (package-license perl)))) +(define-public perl-config-inifiles + (package + (name "perl-config-inifiles") + (version "3.000002") + (source + (origin + (method url-fetch) + (uri (string-append "https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/" + "Config-IniFiles-" version ".tar.gz")) + (sha256 + (base32 "02dsz3inh5jwgaxmbcz8qxwgin8mkhm6vj9jyzfmm3dr5pnxcbnr")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-module-build" ,perl-module-build) + ("perl-io-stringy",perl-io-stringy))) + (home-page "https://metacpan.org/pod/Config::IniFiles") + (synopsis "Package for configuration files outside your Perl script") + (description "This package provides a way to have readable configuration +files outside your Perl script. Configurations can be imported, sections +can be grouped, and settings can be accessed from a tied hash.") + (license (package-license perl)))) + (define-public perl-config-autoconf (package (name "perl-config-autoconf") @@ -2251,14 +2300,14 @@ hours, minutes, seconds, and time zones.") (define-public perl-datetime (package (name "perl-datetime") - (version "1.51") + (version "1.52") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/" "DateTime-" version ".tar.gz")) (sha256 - (base32 "1ibfq6acz1ih28vl613yygbb3r2d8ykx6di669vajhvswl6xl8ny")))) + (base32 "1z1xpifh2kpyw7rlc8ivg9rl0qmabjq979gjp0s9agdjf9hqp0k7")))) (build-system perl-build-system) (native-inputs `(("perl-cpan-meta-check" ,perl-cpan-meta-check) @@ -2491,15 +2540,14 @@ parsing logic.") (define-public perl-datetime-format-strptime (package (name "perl-datetime-format-strptime") - (version "1.76") + (version "1.77") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/" "DateTime-Format-Strptime-" version ".tar.gz")) (sha256 - (base32 - "03dmzi9n6jmnfjmf0ld5sdmi3ib6jrhz25cjzv7d58ypdr32cg2r")))) + (base32 "0jiy2yc9h9932ykb8x2l1j3ff8ms3p4426m947r5clygis1kr91g")))) (build-system perl-build-system) (propagated-inputs `(("perl-datetime" ,perl-datetime) @@ -5168,6 +5216,26 @@ Bezier Curve Drawing\".") both positive and negative, in various ways.") (license perl-license))) +(define-public perl-math-vecstat + (package + (name "perl-math-vecstat") + (version "0.08") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/A/AS/ASPINELLI/Math-VecStat-" + version ".tar.gz")) + (sha256 + (base32 + "03bdcl9pn2bc9b50c50nhnr7m9wafylnb3v21zlch98h9c78x6j0")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Math-VecStat") + (synopsis "Basic numeric stats on vectors") + (description "This package provides some basic statistics on numerical +vectors. All the subroutines can take a reference to the vector to be +operated on.") + (license (package-license perl)))) + (define-public perl-memoize (package (name "perl-memoize") @@ -9173,15 +9241,14 @@ still work as expected.") (define-public perl-timedate (package (name "perl-timedate") - (version "2.31") + (version "2.32") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/A/AT/ATOOMIC/" "TimeDate-" version ".tar.gz")) (sha256 - (base32 - "10ad6l4ii2iahdpw8h0xqwasc1jblan31h597q3js4j5nbnhywjw")))) + (base32 "1mmk9dy4a26a4d4c5rswqqhxr0295j93bjbcx91d3qkmwfcs1v1l")))) (build-system perl-build-system) (home-page "https://metacpan.org/release/TimeDate") (synopsis "Date parsing/formatting subroutines") @@ -9625,14 +9692,14 @@ attribute names.") (define-public perl-xs-object-magic (package (name "perl-xs-object-magic") - (version "0.04") + (version "0.05") (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/F/FL/FLORA/" + (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/" "XS-Object-Magic-" version ".tar.gz")) (sha256 (base32 - "03fghj7hq0fiicmfdxhmzfm4mzv7s097pgkd32ji7jnljvhm9six")))) + "0njyy4y0zax4zz55y82dlm9cly1pld1lcxb281s12bp9rrhf9j9x")))) (build-system perl-build-system) (native-inputs `(("perl-extutils-depends" ,perl-extutils-depends) diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm index ac8a6f46fc..f71e2824f1 100644 --- a/gnu/packages/plotutils.scm +++ b/gnu/packages/plotutils.scm @@ -75,7 +75,7 @@ ("libxaw" ,libxaw))) (home-page - "http://www.gnu.org/software/plotutils/") + "https://www.gnu.org/software/plotutils/") (synopsis "Plotting utilities and library") (description "GNU Plotutils is a package for plotting and working with 2D graphics. diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm index e6560696f5..18e557611e 100644 --- a/gnu/packages/pretty-print.scm +++ b/gnu/packages/pretty-print.scm @@ -25,6 +25,7 @@ (define-module (gnu packages pretty-print) #:use-module (guix packages) #:use-module (guix licenses) + #:use-module (guix git-download) #:use-module (guix download) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) @@ -166,21 +167,20 @@ different programming languages.") (define-public fmt (package (name "fmt") - (version "6.0.0") + (version "6.1.2") (source (origin (method url-fetch) - (uri (string-append - "https://github.com/fmtlib/fmt/releases/download/" - version "/fmt-" version ".zip")) + (uri (string-append "https://github.com/fmtlib/fmt/releases/download/" + version "/fmt-" version ".zip")) (sha256 (base32 - "0h148anbaqgch6n69pxsvs1c9wmykgd052wmzgdia7qpz8w6p8dl")))) + "1s1hxaby5byb07rgmrk4a0q11fxhz7b42khch7sp2qx974y0yrb3")))) (build-system cmake-build-system) (arguments '(#:configure-flags '("-DBUILD_SHARED_LIBS=ON"))) (native-inputs `(("unzip" ,unzip))) - (home-page "http://fmtlib.net/") + (home-page "https://fmt.dev") (synopsis "Small and fast C++ formatting library") (description "@code{fmt} (formerly @code{cppformat}) is a formatting library for C++. diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 08d75525be..d294e43d45 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym+a@scratchpost.org> ;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com> -;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016, 2017, 2020 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> @@ -82,14 +82,14 @@ (define-public python-aiohttp (package (name "python-aiohttp") - (version "3.5.4") + (version "3.6.2") (source (origin (method url-fetch) (uri (pypi-uri "aiohttp" version)) (sha256 (base32 - "1gy95ni8rkdwzir9zf14ivpfwp02g69xbhibldykff0rzbs86k4w")))) + "09pkw6f1790prnrq0k8cqgnf1qy57ll8lpmc6kld09q7zw4vi6i5")))) (build-system python-build-system) (arguments `(#:tests? #f)) ;missing pytest-timeout diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index de48d36748..50d1f4296f 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -476,14 +476,14 @@ NetCDF files can also be read and modified. Python-HDF4 is a fork of (define-public python-h5py (package (name "python-h5py") - (version "2.8.0") + (version "2.10.0") (source (origin (method url-fetch) (uri (pypi-uri "h5py" version)) (sha256 (base32 - "0mdr6wrq02ac93m1aqx9kad0ppfzmm4imlxqgyy1x4l7hmdcc9p6")))) + "0baipzv8n93m0dq0riyi8rfhzrjrfrfh8zqhszzp1j2xjac2fhc4")))) (build-system python-build-system) (arguments `(#:tests? #f ; no test target @@ -505,10 +505,11 @@ NetCDF files can also be read and modified. Python-HDF4 is a fork of `(("python-six" ,python-six) ("python-numpy" ,python-numpy))) (inputs - `(("hdf5" ,hdf5))) + `(("hdf5" ,hdf5-1.10))) (native-inputs `(("python-cython" ,python-cython) - ("python-pkgconfig" ,python-pkgconfig))) + ("python-pkgconfig" ,python-pkgconfig) + ("pkg-config" ,pkg-config))) (home-page "https://www.h5py.org/") (synopsis "Read and write HDF5 files from Python") (description @@ -671,6 +672,26 @@ API for locking files.") (define-public python2-lockfile (package-with-python2 python-lockfile)) +(define-public python-filelock + (package + (name "python-filelock") + (version "3.0.12") + (source + (origin + (method url-fetch) + (uri (pypi-uri "filelock" version)) + (sha256 + (base32 + "0ngzlvb5j8gqs2nxlp2b0jhzii792h66wsn694qm8kqixr225n0q")))) + (build-system python-build-system) + (home-page + "https://github.com/benediktschmitt/py-filelock") + (synopsis "Platform independent file lock") + (description "@code{filelock} contains a single module implementing +a platform independent file lock in Python, which provides a simple way of +inter-process communication.") + (license license:unlicense))) + (define-public python-semantic-version (package (name "python-semantic-version") @@ -2377,28 +2398,30 @@ e.g. filters, callbacks and errbacks can all be promises.") (define-public python-virtualenv (package (name "python-virtualenv") - (version "16.1.0") + (version "20.0.8") (source (origin (method url-fetch) (uri (pypi-uri "virtualenv" version)) (sha256 (base32 - "0242cg3hdq3qdvx5flyrki8lpwlgwf5k45c21ks5049fv7ygm6gq")))) + "096r7g5cv85vxymg9iqbn5z749613snlvd6p3rf1nxnrd386j0qz")))) (build-system python-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'disable-failing-test - (lambda _ - ;; Disable failing test. See upstream bug report - ;; https://github.com/pypa/virtualenv/issues/957 - (substitute* "tests/test_virtualenv.py" - (("skipif.*") "skipif(True, reason=\"Guix\")\n")) - #t))))) (native-inputs `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest))) + ("python-pytest" ,python-pytest) + ;; NOTE: guix lint remarks that "python-setuptools should probably not + ;; be an input at all". However, removing the input makes the build error: + ;; File "setup.py", line 4, in <module> + ;; raise RuntimeError("setuptools >= 41 required to build") + ("python-setuptools" ,python-setuptools) + ("python-setuptools-scm" ,python-setuptools-scm))) + (propagated-inputs + `(("python-appdirs" ,python-appdirs) + ("python-distlib" ,python-distlib) + ("python-filelock" ,python-filelock) + ("python-six" ,python-six) + ("python-importlib-metadata" ,python-importlib-metadata))) (home-page "https://virtualenv.pypa.io/") (synopsis "Virtual Python environment builder") (description @@ -3154,17 +3177,36 @@ used in text editing environments to provide a complete and integrated feature-set for programming Python effectively.") (license license:expat))) +(define-public python-pathspec + (package + (name "python-pathspec") + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pathspec" version)) + (sha256 + (base32 + "15lvs4awlg8xzl0l4gk9y53xx4yqmqvsv44pglv39m70y85afajn")))) + (build-system python-build-system) + (home-page "https://github.com/cpburnz/python-path-specification") + (synopsis "Utility library for gitignore style pattern matching of file paths") + (description + "This package provides a utility library for gitignore style pattern +matching of file paths.") + (license license:mpl2.0))) + (define-public python-black (package (name "python-black") - (version "18.6b4") + (version "19.10b0") (source (origin (method url-fetch) (uri (pypi-uri "black" version)) (sha256 (base32 - "0i4sfqgz6w15vd50kbhi7g7rifgqlf8yfr8y78rypd56q64qn592")))) + "0f8mr0yzj78q1dx7v6ggbgfir2wv0n5z2shfbbvfdq7910xbgvf2")))) (build-system python-build-system) (arguments `(#:phases @@ -3174,16 +3216,39 @@ feature-set for programming Python effectively.") (let ((python3 (which "python3"))) (substitute* '("tests/data/fmtonoff.py" "tests/data/string_prefixes.py" - "tests/data/function.py") + "tests/data/function.py" + "tests/data/python37.py") (("#!/usr/bin/env python3(\\.[0-9]+)?" _ minor-version) (string-append "#!" python3 (if (string? minor-version) minor-version - "")))))))))) + ""))))) + #t)) + (add-after 'unpack 'disable-broken-tests + (lambda _ + ;; These tests are supposed to be skipped when the blackd + ;; dependencies are missing, but this doesn't quite work. + (substitute* "tests/test_black.py" + (("( *)class BlackDTestCase.*" match indent) + (string-append indent "@unittest.skip(\"no blackd deps\")\n" + indent "class BlackDTestCase(unittest.TestCase):\n")) + (("web.Application") "False") + (("@unittest_run_loop") "")) + + ;; Patching the above file breaks the self test + (substitute* "tests/test_black.py" + (("( *)def test_self" match indent) + (string-append indent "@unittest.skip(\"guix\")\n" match))) + #t))))) (propagated-inputs `(("python-click" ,python-click) ("python-attrs" ,python-attrs) ("python-appdirs" ,python-appdirs) - ("python-toml" ,python-toml))) + ("python-pathspec" ,python-pathspec) + ("python-regex" ,python-regex) + ("python-toml" ,python-toml) + ("python-typed-ast" ,python-typed-ast))) + (native-inputs + `(("python-setuptools-scm" ,python-setuptools-scm))) (home-page "https://github.com/ambv/black") (synopsis "The uncompromising code formatter") (description "Black is the uncompromising Python code formatter.") @@ -3740,21 +3805,20 @@ color scales, and color space conversion easy. It has support for: (define-public python-pygit2 (package (name "python-pygit2") - (version "0.28.2") + (version "1.1.0") (source (origin (method url-fetch) (uri (pypi-uri "pygit2" version)) (sha256 - (base32 "11kzj5mjkspvplnpdb6bj8dcj6rgmkk986k8hjcklyg5yaxkz32d")))) + (base32 "1hs0pqqzn1yjxqk86nq7p0lvsklwnlyi5xwyzr7d5nrs19dmsjbg")))) (build-system python-build-system) (arguments '(#:tests? #f)) ; tests don't run correctly in our environment (propagated-inputs - `(("python-six" ,python-six) + `(("python-cached-property" ,python-cached-property) ("python-cffi" ,python-cffi) - ("libgit2" ,libgit2) - ("python-tox" ,python-tox))) + ("libgit2" ,libgit2))) (native-inputs `(("python-pytest" ,python-pytest))) (home-page "https://github.com/libgit2/pygit2") @@ -3764,9 +3828,6 @@ library, libgit2 implements Git plumbing.") ;; GPL2.0 only, with linking exception. (license license:gpl2))) -(define-public python2-pygit2 - (package-with-python2 python-pygit2)) - (define-public python-pyparsing (package (name "python-pyparsing") @@ -4410,6 +4471,40 @@ by pycodestyle.") (define-public python2-autopep8 (package-with-python2 python-autopep8)) +(define-public python-distlib + (package + (name "python-distlib") + (version "0.3.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "distlib" version ".zip")) + (sha256 + (base32 + "08fyi2r246733vharl2yckw20rilci28r91mzrnnvcr638inw5if")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'build 'no-/bin/sh + (lambda _ + (substitute* '("distlib/scripts.py" "tests/test_scripts.py") + (("/bin/sh") (which "sh"))) + #t)) + (add-before 'check 'prepare-test-env + (lambda _ + (setenv "HOME" "/tmp") + ;; NOTE: Any value works, the variable just has to be present. + (setenv "SKIP_ONLINE" "1") + #t))))) + (native-inputs `(("unzip" ,unzip))) + (home-page "https://bitbucket.org/pypa/distlib") + (synopsis "Distribution utilities") + (description "Distlib is a library which implements low-level functions that +relate to packaging and distribution of Python software. It is intended to be +used as the basis for third-party packaging tools.") + (license license:psfl))) + (define-public python-distutils-extra (package (name "python-distutils-extra") @@ -7271,6 +7366,12 @@ printing of sub-tables by specifying a row range.") "linker_exe='gcc'," "linker_so='gcc -shared')"))) #t)) + (add-after 'unpack 'disable-tuning + (lambda _ + (substitute* "setup.py" + (("cpu_flags = .*") + "cpu_flags = ['sse2']\n")) + #t)) (replace 'build (lambda* (#:key inputs #:allow-other-keys) (invoke "python" "setup.py" "build" @@ -7288,7 +7389,7 @@ printing of sub-tables by specifying a row range.") `(("python-cython" ,python-cython) ("pkg-config" ,pkg-config))) (inputs - `(("hdf5" ,hdf5) + `(("hdf5" ,hdf5-1.10) ("bzip2" ,bzip2) ("zlib" ,zlib))) (home-page "http://www.pytables.org/") @@ -7300,6 +7401,84 @@ designed to efficiently cope with extremely large amounts of data.") (define-public python2-tables (package-with-python2 python-tables)) +(define-public python-pytest-black + (package + (name "python-pytest-black") + (version "0.3.8") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pytest-black" version)) + (sha256 + (base32 + "04lppqydxm0f3f3x0l8hj7v0j6d8syj34jc37yzqwqcyqsnaga81")))) + (build-system python-build-system) + (propagated-inputs + `(("python-pytest" ,python-pytest) + ("python-black" ,python-black) + ("python-toml" ,python-toml))) + (native-inputs + `(("python-setuptools-scm" ,python-setuptools-scm))) + (home-page "https://github.com/shopkeep/pytest-black") + (synopsis "Pytest plugin to enable format checking with black") + (description + "This package provides a pytest plugin to enable format checking with the +Python code formatter \"black\".") + (license license:expat))) + +(define-public python-get-version + (package + (name "python-get-version") + (version "2.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "get_version" version)) + (sha256 + (base32 + "1g15jyx33vkxavv9hwv275cs4g9bp2i1y942raw3fxamq8kbaml1")))) + (build-system python-build-system) + (propagated-inputs + `(("python-pygments" ,python-pygments) + ("python-pytest" ,python-pytest) + ("python-pytest-black" ,python-pytest-black) + ("python-pytest-cov" ,python-pytest-cov) + ("python-setuptools" ,python-setuptools) + ("python-testpath" ,python-testpath))) + (home-page "https://github.com/flying-sheep/get_version") + (synopsis "Version helper in the spirit of versioneer") + (description + "This package provides a version helper that lets you automatically use +the latest @code{vX.X.X} Git tag as the version in your Python package. It +also supports getting the version from Python source distributions or, once +your package is installed, via @code{pkg_resources} (part of +@code{setuptools}).") + (license license:gpl3+))) + +(define-public python-legacy-api-wrap + (package + (name "python-legacy-api-wrap") + (version "1.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "legacy-api-wrap" version)) + (sha256 + (base32 + "06qhp0g543dy98vpa41hwdalvdbsjfc3ldk474yr9sd75mhl8jh3")))) + (build-system python-build-system) + (propagated-inputs + `(("python-get-version" ,python-get-version) + ("python-pytest" ,python-pytest) + ("python-pytest-black" ,python-pytest-black) + ("python-pytest-cov" ,python-pytest-cov) + ("python-setuptools" ,python-setuptools))) + (home-page "https://github.com/flying-sheep/legacy-api-wrap") + (synopsis "Legacy API wrapper") + (description "This module defines a decorator to wrap legacy APIs. The +primary use case is APIs defined before keyword-only parameters existed.") + (license license:gpl3+))) + (define-public python-pyasn1 (package (name "python-pyasn1") @@ -8526,7 +8705,7 @@ minimal and fast API targeting the following uses: @item write and deploy hybrid multi-process applications @item write scripts to administer multiple environments @end enumerate") - (home-page "http://codespeak.net/execnet/") + (home-page "https://codespeak.net/execnet/") (license license:expat))) (define-public python2-execnet @@ -14520,7 +14699,12 @@ such as figshare or Zenodo.") "183kg1rhzz3hqizvphkd8hlbf1zxfx8737zhfkmqzxi71jmdw7pd")))) (build-system python-build-system) (native-inputs - `(("python-tox" ,python-tox) + `(("python-appdirs" ,python-appdirs) + ("python-distlib" ,python-distlib) + ("python-importlib-metadata" ,python-importlib-metadata) + ("python-filelock" ,python-filelock) + ("python-six" ,python-six) + ("python-tox" ,python-tox) ("python-virtualenv" ,python-virtualenv))) (home-page "https://github.com/k-bx/python-semver") (synopsis "Python helper for Semantic Versioning") @@ -15835,23 +16019,126 @@ infrastructure at import time, runtime, or statically (using the included pycc tool).") (license license:bsd-3))) +(define-public python-numcodecs + (package + (name "python-numcodecs") + (version "0.6.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "numcodecs" version)) + (sha256 + (base32 + "0kbfr8pl3x9glsypbq8hzim003f16ml1b1cvgrh4w1sdvgal6j7g")))) + (build-system python-build-system) + (propagated-inputs + `(("python-numpy" ,python-numpy) + ("python-msgpack" ,python-msgpack))) + (native-inputs + `(("python-pytest" ,python-pytest) + ("python-setuptools-scm" ,python-setuptools-scm))) + (home-page "https://github.com/zarr-developers/numcodecs") + (synopsis "Buffer compression and transformation codecs") + (description + "This Python package provides buffer compression and transformation +codecs for use in data storage and communication applications.") + (license license:expat))) + +(define-public python-asciitree + (package + (name "python-asciitree") + (version "0.3.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "asciitree" version)) + (sha256 + (base32 + "0vhgri2m2xlnibhz4xwn4hpbc7xacisxjqrk6k5kyppq96vbk92a")))) + (build-system python-build-system) + (home-page "https://github.com/mbr/asciitree") + (synopsis "Draws ASCII trees") + (description "This package draws tree structures using characters.") + (license license:expat))) + +(define-public python-zarr + (package + (name "python-zarr") + (version "2.4.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "zarr" version)) + (sha256 + (base32 + "026n3sjzjv2gmwx6y72b8ij0hk42bc8zdbvfj5gdqzd4i6wj3ajk")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-service-tests + (lambda _ + (setenv "ZARR_TEST_ABS" "0") + (setenv "ZARR_TEST_MONGO" "0") + (setenv "ZARR_TEST_REDIS" "0") + #t)) + (replace 'check + (lambda _ + (invoke "pytest" "-vv" "-k" "not lmdb") + #t))))) + (propagated-inputs + `(("python-asciitree" ,python-asciitree) + ("python-fasteners" ,python-fasteners) + ("python-numcodecs" ,python-numcodecs) + ("python-numpy" ,python-numpy))) + (native-inputs + `(("python-pytest" ,python-pytest) + ("python-setuptools-scm" ,python-setuptools-scm))) + (home-page "https://github.com/zarr-developers/zarr-python") + (synopsis "Chunked, compressed, N-dimensional arrays for Python") + (description + "This package provides an implementation of chunked, compressed, +N-dimensional arrays for Python.") + (license license:expat))) + (define-public python-anndata (package (name "python-anndata") - (version "0.6.18") + (version "0.7.1") (source (origin (method url-fetch) (uri (pypi-uri "anndata" version)) (sha256 (base32 - "03x83yjaccbqszj7x4fwwmpil0ai59yx64d1zmf2691za3j03w73")))) + "0rnfbpr55j1a1bi2kd4mz444741hrn74kz90h5rnjr59jmpfnh09")))) (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'delete-inconvenient-tests + (lambda _ + ;; This test depends on python-scikit-learn. + (delete-file "anndata/tests/test_inplace_subset.py") + #t)) + (delete 'check) + (add-after 'install 'check + (lambda* (#:key inputs outputs #:allow-other-keys) + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "-vv")))))) (propagated-inputs `(("python-h5py" ,python-h5py) + ("python-importlib-metadata" ,python-importlib-metadata) ("python-natsort" ,python-natsort) + ("python-numcodecs" ,python-numcodecs) + ("python-packaging" ,python-packaging) ("python-pandas" ,python-pandas) - ("python-scipy" ,python-scipy))) + ("python-scipy" ,python-scipy) + ("python-zarr" ,python-zarr))) + (native-inputs + `(("python-joblib" ,python-joblib) + ("python-pytest" ,python-pytest) + ("python-setuptools-scm" ,python-setuptools-scm))) (home-page "https://github.com/theislab/anndata") (synopsis "Annotated data for data analysis pipelines") (description "Anndata is a package for simple (functional) high-level APIs diff --git a/gnu/packages/re2c.scm b/gnu/packages/re2c.scm index f81d4f67f7..427195fd5f 100644 --- a/gnu/packages/re2c.scm +++ b/gnu/packages/re2c.scm @@ -36,7 +36,7 @@ (base32 "05xq0571mkgr20v827jm63nhsirr8arghg4fszzswrmrnl3dfk0s")))) (build-system gnu-build-system) - (home-page "http://re2c.org/") + (home-page "https://re2c.org/") (synopsis "Lexer generator for C/C++") (description "@code{re2c} generates minimalistic hard-coded state machine (as opposed diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm index 72c982f23c..af51c0fcfc 100644 --- a/gnu/packages/rust-apps.scm +++ b/gnu/packages/rust-apps.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2019, 2020 John Soo <jsoo1@asu.edu> ;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> +;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -184,11 +185,11 @@ also knows about symlinks, extended attributes, and Git.") ;; Manpages (install-file "doc/fd.1" (string-append out "/share/man/man1")) ;; Completions - (install-completion "^fd.bash$" "/etc/bash-completion.d") + (install-completion "^fd.bash$" "/etc/bash_completion.d") (install-completion "^fd.fish$" "/share/fish/vendor_completions.d") (install-completion "^_fd$" "/share/zsh/site-functions") - (rename-file (string-append out "/etc/bash-completion.d/fd.bash") - (string-append out "/etc/bash-completion.d/fd")) + (rename-file (string-append out "/etc/bash_completion.d/fd.bash") + (string-append out "/etc/bash_completion.d/fd")) #t)))))) (inputs `(("jemalloc" ,jemalloc))) (home-page "https://github.com/sharkdp/fd") diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index 4eef7de5d7..2fec3c2a43 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -421,47 +421,51 @@ key-value pair databases and a real LDAP database.") (license lgpl3+))) (define-public ppp - (package - (name "ppp") - (version "2.4.8") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/paulusmack/ppp") - (commit (string-append "ppp-" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1i88m79h6g3fzsb4yw3k8bq1grsx3hsyawm7id2vcaab0gfqzjjv")))) - (build-system gnu-build-system) - (arguments - '(#:tests? #f ; no check target - #:make-flags '("CC=gcc") - #:phases - (modify-phases %standard-phases - (add-before 'configure 'patch-Makefile - (lambda* (#:key inputs #:allow-other-keys) - (let ((libc (assoc-ref inputs "libc")) - (openssl (assoc-ref inputs "openssl")) - (libpcap (assoc-ref inputs "libpcap"))) - (substitute* "pppd/Makefile.linux" - (("/usr/include/crypt\\.h") - (string-append libc "/include/crypt.h")) - (("/usr/include/openssl") - (string-append openssl "/include/openssl")) - (("/usr/include/pcap-bpf.h") - (string-append libpcap "/include/pcap-bpf.h"))) - #t)))))) - (inputs - `(("libpcap" ,libpcap) - ("openssl" ,(@ (gnu packages tls) openssl)))) - (synopsis "Implementation of the Point-to-Point Protocol") - (home-page "https://ppp.samba.org/") - (description - "The Point-to-Point Protocol (PPP) provides a standard way to establish + ;; This git commit contains unreleased fixes for CVE-2020-8597. + (let ((revision "1") + (commit "8d45443bb5c9372b4c6a362ba2f443d41c5636af")) + (package + (name "ppp") + (version (git-version "2.4.8" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/paulusmack/ppp") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "06cf8fb84l3h2zy5da4j7k2j1qjv2gfqn986sf43xgj75605aks2")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; no check target + #:make-flags '("CC=gcc") + #:phases + (modify-phases %standard-phases + (add-before 'configure 'patch-Makefile + (lambda* (#:key inputs #:allow-other-keys) + (let ((libc (assoc-ref inputs "libc")) + (openssl (assoc-ref inputs "openssl")) + (libpcap (assoc-ref inputs "libpcap"))) + (substitute* "pppd/Makefile.linux" + (("/usr/include/crypt\\.h") + (string-append libc "/include/crypt.h")) + (("/usr/include/openssl") + (string-append openssl "/include/openssl")) + (("/usr/include/pcap-bpf.h") + (string-append libpcap "/include/pcap-bpf.h"))) + #t)))))) + (inputs + `(("libpcap" ,libpcap) + ("openssl" ,(@ (gnu packages tls) openssl)))) + (synopsis "Implementation of the Point-to-Point Protocol") + (home-page "https://ppp.samba.org/") + (description + "The Point-to-Point Protocol (PPP) provides a standard way to establish a network connection over a serial link. At present, this package supports IP and IPV6 and the protocols layered above them, such as TCP and UDP.") - ;; pppd, pppstats and pppdump are under BSD-style notices. - ;; some of the pppd plugins are GPL'd. - ;; chat is public domain. - (license (list bsd-3 bsd-4 gpl2+ public-domain)))) + ;; pppd, pppstats and pppdump are under BSD-style notices. + ;; some of the pppd plugins are GPL'd. + ;; chat is public domain. + (license (list bsd-3 bsd-4 gpl2+ public-domain))))) + diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index d292d1eeea..90fbabdabb 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -755,7 +755,7 @@ utility functions for all standard Scheme implementations.") (define-public scm (package (name "scm") - (version "5f2") + (version "5f3") (source (origin (method url-fetch) (uri (string-append @@ -763,7 +763,7 @@ utility functions for all standard Scheme implementations.") version ".zip")) (sha256 (base32 - "050ijb51jm1cij9g3r89zl9rawsrikhbb5y8zb7lspb7bsxq5w99")))) + "1jxxlhmgal26mpcl97kz37djkn97rfy9h5pvw0hah6f3f6w49j97")))) (build-system gnu-build-system) (arguments `(#:phases diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index 8ac9213db3..7bf85bf53e 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -336,7 +336,7 @@ SDL.") "sdl-pango-api_additions.patch" "sdl-pango-blit_overflow.patch" "sdl-pango-fillrect_crash.patch" - "sdl-pango-fix-explicit-SDLPango_CopyFTBitmapToSurface.patch" + "sdl-pango-fix-explicit-SDLPango_CopyFTBitmapTo.patch" "sdl-pango-matrix_declarations.patch" "sdl-pango-sans-serif.patch")))) (build-system gnu-build-system) diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm index 791468c94f..4ab8329fcd 100644 --- a/gnu/packages/shells.scm +++ b/gnu/packages/shells.scm @@ -391,7 +391,7 @@ written by Paul Haahr and Byron Rakitzis.") (with-directory-excursion bin (symlink "tcsh" "csh")) #t)))))) - (home-page "http://www.tcsh.org/") + (home-page "https://www.tcsh.org/") (synopsis "Unix shell based on csh") (description "Tcsh is an enhanced, but completely compatible version of the Berkeley diff --git a/gnu/packages/skarnet.scm b/gnu/packages/skarnet.scm index 2db42240af..829af9d000 100644 --- a/gnu/packages/skarnet.scm +++ b/gnu/packages/skarnet.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2015 Claes Wallin <claes.wallin@greatsinodevelopment.com> ;;; Copyright © 2016 Eric Le Bihan <eric.le.bihan.dev@free.fr> ;;; Copyright © 2017 Z. Ren <zren@dlut.edu.cn> -;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com> ;;; ;;; This file is part of GNU Guix. @@ -104,14 +104,14 @@ complexity."))) (define-public s6 (package (name "s6") - (version "2.8.0.1") + (version "2.9.0.1") (source (origin (method url-fetch) (uri (string-append "http://skarnet.org/software/s6/s6-" version ".tar.gz")) (sha256 - (base32 "1n1i3jm3kp9ii54cxj1sgh89m6nyna7vhy8714ma6py1frdqzq6v")))) + (base32 "0mvcjrz8nlj9p2zclmcv22b4y6bqzd2iz38arhgc989vdvrbmkg0")))) (build-system gnu-build-system) (inputs `(("skalibs" ,skalibs) ("execline" ,execline))) @@ -179,14 +179,14 @@ as an alternative to the BIND, djbdns or other DNS clients."))) (define-public s6-networking (package (name "s6-networking") - (version "2.3.1.1") + (version "2.3.1.2") (source (origin (method url-fetch) (uri (string-append "http://skarnet.org/software/s6-networking/s6-networking-" version ".tar.gz")) (sha256 - (base32 "127i7ig5wdgjbkjf0py0g96llc6cbxij22ns2j7bwa95figinhcx")))) + (base32 "1029bgwfmv903y5ji93j75m7p2jgchdxya1khxzb42q2z7yxnlyr")))) (build-system gnu-build-system) (inputs `(("skalibs" ,skalibs) ("execline" ,execline) @@ -222,14 +222,14 @@ clock synchronization."))) (define-public s6-rc (package (name "s6-rc") - (version "0.5.1.1") + (version "0.5.1.2") (source (origin (method url-fetch) (uri (string-append "http://skarnet.org/software/s6-rc/s6-rc-" version ".tar.gz")) (sha256 - (base32 "0lmg517l8inn7bi57q35rjd7b4jmqlmkhrbvs5ybbhinhd12qzi5")))) + (base32 "18m8jsx3bkj566p6xwwnsvdckk10n8wqnhp0na2k88i295h4rnjp")))) (build-system gnu-build-system) (inputs `(("skalibs" ,skalibs) ("execline" ,execline) @@ -263,7 +263,7 @@ environment."))) (define-public s6-portable-utils (package (name "s6-portable-utils") - (version "2.2.2.1") + (version "2.2.2.2") (source (origin (method url-fetch) @@ -271,7 +271,7 @@ environment."))) "http://skarnet.org/software/s6-portable-utils/s6-portable-utils-" version ".tar.gz")) (sha256 - (base32 "074kizkxjwvmxspxg69fr8r0lbiy61l2n5nzgbfvwvhc6lj34iqy")))) + (base32 "1k3la37q46n93vjwk9wm9ym4w87z6lqzv43f03qd0vqj9k94mpv3")))) (build-system gnu-build-system) (inputs `(("skalibs" ,skalibs))) (arguments @@ -295,7 +295,7 @@ systems and other constrained environments, but they work everywhere."))) (define-public s6-linux-init (package (name "s6-linux-init") - (version "1.0.3.1") + (version "1.0.4.0") (source (origin (method url-fetch) @@ -303,7 +303,7 @@ systems and other constrained environments, but they work everywhere."))) "http://skarnet.org/software/s6-linux-init/s6-linux-init-" version ".tar.gz")) (sha256 - (base32 "1yq2xnp41a1lqpjzvq5jawgy64jwaxalvjdnlvgdpi9bkicgasi1")))) + (base32 "176mgkqxlp6gb6my66dv73xsp7adfxbjp5hjyh35sykqkr4kfyfy")))) (build-system gnu-build-system) (inputs `(("execline" ,execline) @@ -340,7 +340,7 @@ all the details."))) (define-public s6-linux-utils (package (name "s6-linux-utils") - (version "2.5.1.1") + (version "2.5.1.2") (source (origin (method url-fetch) @@ -348,7 +348,7 @@ all the details."))) "http://skarnet.org/software/s6-linux-utils/s6-linux-utils-" version ".tar.gz")) (sha256 - (base32 "00nw2phd9prgv29hzqzwjnh4y0ivkzhx3srn6n1rlyr4ydhikxi5")))) + (base32 "0w4jms9qyb5kx9zcyd3gzri60rrii2rbmh08s59ckg4awy27py86")))) (build-system gnu-build-system) (inputs `(("skalibs" ,skalibs))) (arguments diff --git a/gnu/packages/slang.scm b/gnu/packages/slang.scm index 5a37480f67..404a4535ca 100644 --- a/gnu/packages/slang.scm +++ b/gnu/packages/slang.scm @@ -71,7 +71,7 @@ ("libpng" ,libpng) ("pcre" ,pcre) ("ncurses" ,ncurses))) - (home-page "http://www.jedsoft.org/slang/") + (home-page "https://www.jedsoft.org/slang/") (synopsis "Library for interactive applications and extensibility") (description "S-Lang is a multi-platform programmer's library designed to allow a diff --git a/gnu/packages/sphinx.scm b/gnu/packages/sphinx.scm index 1940b36a33..323d5b4457 100644 --- a/gnu/packages/sphinx.scm +++ b/gnu/packages/sphinx.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Danny Milosavljevic <dannym+a@scratchpost.org> -;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com> ;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org> ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> @@ -149,13 +149,13 @@ sources.") (define-public python-sphinxcontrib-applehelp (package (name "python-sphinxcontrib-applehelp") - (version "1.0.1") + (version "1.0.2") (source (origin (method url-fetch) (uri (pypi-uri "sphinxcontrib-applehelp" version)) (sha256 (base32 - "15rqmgphj4wqf4m5wnzxgmwxx5jwfzb0j0nb94ql0x5wnar0mapd")))) + "0n5wrn4l7x6gxvi1g7c6y72hkxgc223axz1jykipaxhfr1g76wm0")))) (build-system python-build-system) (arguments `(#:tests? #f)) ;XXX: circular dependency on Sphinx @@ -195,13 +195,13 @@ to code blocks.") (define-public python-sphinxcontrib-devhelp (package (name "python-sphinxcontrib-devhelp") - (version "1.0.1") + (version "1.0.2") (source (origin (method url-fetch) (uri (pypi-uri "sphinxcontrib-devhelp" version)) (sha256 (base32 - "0d2a57kqxl72i55rns0ly1i044y2x234b9sdi89ajc3kjdvv0r3c")))) + "1r1qngsbjqbg4rj93kpj44qqy7n4x5khldkr0c3ffhlnggx1lzzz")))) (build-system python-build-system) (arguments `(#:tests? #f)) ;XXX: circular dependency on Sphinx @@ -215,13 +215,13 @@ to code blocks.") (define-public python-sphinxcontrib-htmlhelp (package (name "python-sphinxcontrib-htmlhelp") - (version "1.0.2") + (version "1.0.3") (source (origin (method url-fetch) (uri (pypi-uri "sphinxcontrib-htmlhelp" version)) (sha256 (base32 - "08l4x8a2l4xjqdd5rhvmfsqihmlgg4prdayj9b6pigaii6gzjw26")))) + "16v5jdnibwrqjdr5aqchgyzpwy3rgamwhdf4kidv5nxj65zbpxg8")))) (build-system python-build-system) (arguments `(#:tests? #f)) ;XXX: circular dependency on Sphinx @@ -300,13 +300,13 @@ commands into documents, helping you to keep your command examples up to date.") (define-public python-sphinxcontrib-qthelp (package (name "python-sphinxcontrib-qthelp") - (version "1.0.2") + (version "1.0.3") (source (origin (method url-fetch) (uri (pypi-uri "sphinxcontrib-qthelp" version)) (sha256 (base32 - "0vs09m6kf5vhiivpi5s5pks59iq0lqlsbkdycpqlysg53bhmqikr")))) + "0wjsp96d262shzkx7pb7pra7mmf0j8c5rz56i6x0vdsqw1z7ccsc")))) (build-system python-build-system) (arguments `(#:tests? #f)) ;XXX: circular dependency on Sphinx @@ -320,13 +320,13 @@ documents.") (define-public python-sphinxcontrib-serializinghtml (package (name "python-sphinxcontrib-serializinghtml") - (version "1.1.3") + (version "1.1.4") (source (origin (method url-fetch) (uri (pypi-uri "sphinxcontrib-serializinghtml" version)) (sha256 (base32 - "09sj3nwahwr4iymg86gczbh151cfczqhf2kclbblzh2jh0zv7vy0")))) + "1g3pbx0g88zd9xzcrbaypa2k60axrh92vf5j76wsk0p9hv6fr87a")))) (build-system python-build-system) (arguments `(#:tests? #f)) ;XXX: circular dependency on Sphinx @@ -359,13 +359,13 @@ builder does not support SVG images natively (e.g. LaTeX).") (define-public python-sphinxcontrib-websupport (package (name "python-sphinxcontrib-websupport") - (version "1.1.0") + (version "1.2.0") (source (origin (method url-fetch) (uri (pypi-uri "sphinxcontrib-websupport" version)) (sha256 (base32 - "1ff3ix76xi1y6m99qxhaq5161ix9swwzydilvdya07mgbcvpzr4x")))) + "1smma7r0rhwcmbfvvkfs5djfz1qm8wbpcvp084ca6dmw2b9zplxs")))) (build-system python-build-system) (arguments ;; FIXME: Tests depend on Sphinx, which depends on this. diff --git a/gnu/packages/spice.scm b/gnu/packages/spice.scm index 12461914bc..8b688ea9ef 100644 --- a/gnu/packages/spice.scm +++ b/gnu/packages/spice.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 David Craven <david@craven.ch> -;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> ;;; @@ -98,7 +98,7 @@ system to use the host GPU to accelerate 3D rendering.") (define-public spice-protocol (package (name "spice-protocol") - (version "0.14.0") + (version "0.14.1") (source (origin (method url-fetch) (uri (string-append @@ -106,7 +106,7 @@ system to use the host GPU to accelerate 3D rendering.") "spice-protocol-" version ".tar.bz2")) (sha256 (base32 - "1b3f44c13pqsp7aabmcinfbmgl79038bp5548l5pjs16lcfam95n")))) + "0ahk5hlanwhbc64r80xmchdav3ls156cvh9l68a0l22bhdhxmrkr")))) (build-system gnu-build-system) (synopsis "Protocol headers for the SPICE protocol") (description "SPICE (the Simple Protocol for Independent Computing @@ -191,16 +191,15 @@ which allows users to view a desktop computing environment.") (define-public spice (package (name "spice") - (version "0.14.2") + (version "0.14.3") (source (origin (method url-fetch) (uri (string-append "https://www.spice-space.org/download/releases/" "spice-server/spice-" version ".tar.bz2")) - (patches (search-patches "spice-fix-test-armhf.patch")) (sha256 (base32 - "19r999py9v9c7md2bb8ysj809ag1hh6djl1ik8jcgx065s4b60xj")))) + "05512vkfayw18ypg4acqbbpr72nsnsz9bj7k8c2wyrvnl3j4n7am")))) (build-system gnu-build-system) (propagated-inputs `(("openssl" ,openssl) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 0fc6a912ca..ef95a5612e 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -693,14 +693,14 @@ analysis.") (define-public r-survival (package (name "r-survival") - (version "3.1-8") + (version "3.1-11") (source (origin (method url-fetch) (uri (cran-uri "survival" version)) (sha256 (base32 - "15fj4y8c107bwq22amx88r5hw7qndlcbr9sapzrpkpr7iqz3kkyf")))) + "1fbhbm3bnpg1nmj37h1d76x813ggvwk0cp51ixmmgb3pz47i5xj4")))) (build-system r-build-system) (propagated-inputs `(("r-matrix" ,r-matrix))) @@ -1088,26 +1088,25 @@ using just two functions: melt and dcast (or acast).") (define-public r-ggplot2 (package (name "r-ggplot2") - (version "3.2.1") + (version "3.3.0") (source (origin (method url-fetch) (uri (cran-uri "ggplot2" version)) (sha256 - (base32 "0mjswqiqcwm0aqxll16bx2kwa6c9km3aql87bdj4347n1ali94g3")))) + (base32 "0j21am605kqqzlwhm45kaj0m2irnmy2vz0j7kzi9f0qdzrv3q3ij")))) (build-system r-build-system) (propagated-inputs `(("r-digest" ,r-digest) + ("r-glue" ,r-glue) ("r-gtable" ,r-gtable) - ("r-lazyeval" ,r-lazyeval) + ("r-isoband" ,r-isoband) ("r-mass" ,r-mass) ("r-mgcv" ,r-mgcv) ("r-tibble" ,r-tibble) - ("r-reshape2" ,r-reshape2) ("r-rlang" ,r-rlang) ("r-scales" ,r-scales) ("r-svglite" ,r-svglite) ; Needed for 'ggsave' - ("r-viridislite" ,r-viridislite) ("r-withr" ,r-withr))) (home-page "https://ggplot2.tidyverse.org") (synopsis "An implementation of the grammar of graphics") @@ -1415,7 +1414,7 @@ emitter (http://pyyaml.org/wiki/LibYAML) for R.") ("r-stringr" ,r-stringr) ("r-xfun" ,r-xfun) ("r-yaml" ,r-yaml))) - (home-page "http://yihui.name/knitr/") + (home-page "https://yihui.org/knitr/") (synopsis "General-purpose package for dynamic report generation in R") (description "This package provides a general-purpose tool for dynamic report @@ -1651,13 +1650,13 @@ and printing capabilities than traditional data frames.") (define-public r-dplyr (package (name "r-dplyr") - (version "0.8.4") + (version "0.8.5") (source (origin (method url-fetch) (uri (cran-uri "dplyr" version)) (sha256 (base32 - "1nd0mmvqjbzbknawa520f64p9zlj9lwdlq0hh7c1mciyy7ah6641")))) + "0602b4a9nffxx67q57csqp87nkrv33nn9wlaw1458yys9fzx6l2p")))) (build-system r-build-system) (propagated-inputs `(("r-assertthat" ,r-assertthat) @@ -1672,6 +1671,8 @@ and printing capabilities than traditional data frames.") ("r-rlang" ,r-rlang) ("r-tibble" ,r-tibble) ("r-tidyselect" ,r-tidyselect))) + (native-inputs + `(("r-knitr" ,r-knitr))) (home-page "https://github.com/hadley/dplyr") (synopsis "Tools for working with data frames in R") (description @@ -1879,14 +1880,14 @@ building design matrices.") (define-public python-statsmodels (package (name "python-statsmodels") - (version "0.9.0") + (version "0.11.1") (source (origin (method url-fetch) (uri (pypi-uri "statsmodels" version)) (sha256 (base32 - "0fxs8a7sp4d7jvqlm36yi45i2d28kjfvraf9q8i9jr1chhxgjqb4")))) + "1w6mf8b86vizi2895j11szqryr2v1ckjig3wp9fv94aslfh3zpjv")))) (build-system python-build-system) (arguments `(;; The test suite is very large and rather brittle. Tests often fail @@ -3150,7 +3151,7 @@ using the multicore functionality of the parallel package.") ("r-jsonlite" ,r-jsonlite) ("r-magrittr" ,r-magrittr) ("r-promises" ,r-promises))) - (home-page "http://rstudio.github.io/DT") + (home-page "https://rstudio.github.io/DT") (synopsis "R wrapper of the DataTables JavaScript library") (description "This package allows for data objects in R to be rendered as HTML tables @@ -3608,6 +3609,8 @@ memory usage.") `(("r-ggplot2" ,r-ggplot2) ("r-gridextra" ,r-gridextra) ("r-viridislite" ,r-viridislite))) + (native-inputs + `(("r-knitr" ,r-knitr))) ; for vignettes (home-page "https://github.com/sjmgarnier/viridis") (synopsis "Matplotlib default color map") (description @@ -3919,7 +3922,7 @@ from within R.") (propagated-inputs `(("r-lattice" ,r-lattice) ("r-matrix" ,r-matrix))) - (home-page "http://spams-devel.gforge.inria.fr") + (home-page "https://spams-devel.gforge.inria.fr") (synopsis "Toolbox for solving sparse estimation problems") (description "SPAMS (SPArse Modeling Software) is an optimization toolbox for solving various sparse estimation problems. It includes tools for the @@ -4638,14 +4641,14 @@ original public code has been corrected.") (define-public r-modeltools (package (name "r-modeltools") - (version "0.2-22") + (version "0.2-23") (source (origin (method url-fetch) (uri (cran-uri "modeltools" version)) (sha256 (base32 - "1s9lmkac3rl0nknf4wizfhg7ryq7c8yvvyc4z619238br27hhsi5")))) + "1vqh69256h344sbj5affm0kmc77dakrxp6442xfdnfd0y5d8sgkb")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/modeltools") (synopsis "Tools and classes for statistical models") @@ -4853,14 +4856,14 @@ generally.") (define-public r-robust (package (name "r-robust") - (version "0.4-18.2") + (version "0.5-0.0") (source (origin (method url-fetch) (uri (cran-uri "robust" version)) (sha256 (base32 - "02x7d6dgx3skiadvx5m3c44b4bhz37ycpfhc25dhhv50y1db6l3k")))) + "1ks5scp8bnicl9j1r8yrmz668fjs6ifdmi540zw6d2ck500bbw42")))) (build-system r-build-system) (propagated-inputs `(("r-fit-models" ,r-fit-models) diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index 9f38b53883..fd8ec3f7a9 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -15,6 +15,7 @@ ;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl> ;;; Copyright © 2019 Ivan Vilata i Balaguer <ivan@selidor.net> ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org> +;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -461,6 +462,12 @@ address of one of the participants.") (substitute* "src/mumble/TextToSpeech_unix.cpp" (("libspeechd.h") "speech-dispatcher/libspeechd.h")) #t)) + ;; disable statistic gathering by default. see <https://bugs.gnu.org/25201> + (add-before 'configure 'fix-statistic-gathering-default + (lambda _ + (substitute* "src/mumble/Settings.cpp" + (("bUsage = true;") "bUsage = false;")) + #t)) (add-before 'install 'disable-murmur-ice (lambda _ (substitute* "scripts/murmur.ini.system" diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm index 186daefb49..3eeda9d417 100644 --- a/gnu/packages/terminals.scm +++ b/gnu/packages/terminals.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2016 Mckinley Olsen <mck.olsen@gmail.com> ;;; Copyright © 2016, 2017, 2019 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2016 David Craven <david@craven.ch> -;;; Copyright © 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016, 2017 José Miguel Sánchez García <jmi2k@openmailbox.org> ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net> @@ -397,7 +397,7 @@ to all types of devices that provide serial consoles.") (define-public beep (package (name "beep") - (version "1.4.7") + (version "1.4.9") (source (origin (method git-fetch) @@ -410,7 +410,7 @@ to all types of devices that provide serial consoles.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0dnbvzzxvajc7pl1165wb3l74pfcqcdg12rcjcw86qqy954dx8my")))) + (base32 "0jmvqk6g5n0wzj9znw42njxq3mzw1769f4db99b83927hf4aidi4")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no tests @@ -420,8 +420,6 @@ to all types of devices that provide serial consoles.") #:phases (modify-phases %standard-phases (delete 'configure)))) ; no configure script - (native-inputs - `(("gcc" ,gcc-8))) ; for ‘-fstack-clash-protection’ (synopsis "Linux command-line utility to control the PC speaker") (description "beep allows the user to control the PC speaker with precision, allowing different sounds to indicate different events. While it can be run diff --git a/gnu/packages/toys.scm b/gnu/packages/toys.scm index fd86aec6ef..7f22646d8c 100644 --- a/gnu/packages/toys.scm +++ b/gnu/packages/toys.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com> ;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si> +;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -200,3 +201,38 @@ The GNU project hosts a similar collection of filters, the GNU talkfilters.") the desktop background. Additional customizable effects include wind, stars and various scenery elements.") (license license:gpl3+))) + +(define-public nyancat + (package + (name "nyancat") + (version "1.5.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/klange/nyancat") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1mg8nm5xzcq1xr8cvx24ym2vmafkw53rijllwcdm9miiz0p5ky9k")))) + (build-system gnu-build-system) + (arguments + '(#:make-flags '("CC=gcc") + #:phases + (modify-phases %standard-phases + (delete 'configure) ; no configure script + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (man (string-append out "/share/man/man1"))) + (install-file "src/nyancat" bin) + (install-file "nyancat.1" man)) + #t))))) + (home-page "https://nyancat.dakko.us/") + (synopsis "Nyan cat telnet server") + (description + "This is an animated, color, ANSI-text telnet server that renders a loop +of the Nyan Cat / Poptart Cat animation.") + (license license:ncsa))) diff --git a/gnu/packages/unicode.scm b/gnu/packages/unicode.scm index d6fe93c2e0..2ecfebd379 100644 --- a/gnu/packages/unicode.scm +++ b/gnu/packages/unicode.scm @@ -133,7 +133,7 @@ of locale data, including among others @itemize @item patterns for formatting and parsing, @item name translations, -@item and various informations on languages, scripts and country-specific +@item and various information on languages, scripts and country-specific conventions. @end itemize\n") (license unicode))) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 567e5e3818..a798892e40 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -1341,7 +1341,7 @@ also walk each side of a merge and test those changes individually.") (propagated-inputs `(("git" ,git) ("openssh" ,openssh))) - (home-page "http://gitolite.com") + (home-page "https://gitolite.com") (synopsis "Git access control layer") (description "Gitolite is an access control layer on top of Git, providing fine access @@ -1351,39 +1351,51 @@ control to Git repositories.") (define-public mercurial (package (name "mercurial") - (version "5.2.1") + (version "5.3.1") (source (origin (method url-fetch) (uri (string-append "https://www.mercurial-scm.org/" "release/mercurial-" version ".tar.gz")) (sha256 (base32 - "1pxkd37b0a1mi2zakk1hi122lgz1ffy2fxdnbs8acwlqpw55bc8q")))) + "1nbjpzjrzgql4hrvslpxwbcgn885ikq6ba1yb4w6p78rw9nzkhgp")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'patch-tests + (lambda _ + (substitute* '("tests/test-extdiff.t" + "tests/test-logtoprocess.t" + "tests/test-patchbomb.t" + "tests/test-run-tests.t" + "tests/test-transplant.t") + (("/bin/sh") + (which "sh"))) + #t)) (replace 'check (lambda* (#:key tests? #:allow-other-keys) (with-directory-excursion "tests" ;; The following tests are known to fail. - (for-each (lambda (file) - (delete-file file)) - '("test-extdiff.t" + (for-each delete-file + '(;; XXX: This test calls 'run-tests.py --with-hg= + ;; `which hg`' and fails because there is no hg on + ;; PATH from before (that's why we are building it!)? "test-hghave.t" + + ;; FIXME: Why does this fail in the build container, but + ;; not in 'guix environment -C' (even without /bin/sh)? + "test-nointerrupt.t" + + ;; TODO: the fqaddr() call fails in the build + ;; container, causing these server tests to fail. "test-hgwebdir.t" "test-http-branchmap.t" - "test-logtoprocess.t" - "test-merge-combination.t" - "test-nointerrupt.t" - "test-patchbomb.t" "test-pull-bundle.t" "test-push-http.t" - "test-run-tests.t" "test-serve.t" "test-subrepo-deep-nested-change.t" - "test-subrepo-recursion.t" - "test-transplant.t")) + "test-subrepo-recursion.t")) (when tests? (invoke "./run-tests.py" ;; ‘make check’ does not respect ‘-j’. @@ -1400,7 +1412,8 @@ control to Git repositories.") ;; The following inputs are only needed to run the tests. (native-inputs `(("python-nose" ,python-nose) - ("unzip" ,unzip))) + ("unzip" ,unzip) + ("which" ,which))) (home-page "https://www.mercurial-scm.org/") (synopsis "Decentralized version control system") (description diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 74a9b948ad..8403d956bc 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -1548,7 +1548,7 @@ To load this plugin, specify the following option when starting mpv: (define-public youtube-dl (package (name "youtube-dl") - (version "2020.02.16") + (version "2020.03.08") (source (origin (method url-fetch) (uri (string-append "https://github.com/ytdl-org/youtube-dl/" @@ -1556,7 +1556,7 @@ To load this plugin, specify the following option when starting mpv: version ".tar.gz")) (sha256 (base32 - "1ip0p7gifwmkls8ppfvz89j1lh82dg60zmvabj8njnhj170ikkdb")))) + "1xbka14wnalcqkhibfcqw8f5bw1m9b1f44719yifv1jk0614q4bn")))) (build-system python-build-system) (arguments ;; The problem here is that the directory for the man page and completion diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm index b468347380..5b03124e38 100644 --- a/gnu/packages/vim.scm +++ b/gnu/packages/vim.scm @@ -847,3 +847,28 @@ through its msgpack-rpc API.") (synopsis "Guix integration in Vim") (description "This package provides support for GNU Guix in Vim.") (license license:vim))) + +(define-public vim-asyncrun + (package + (name "vim-asyncrun") + (version "2.6.5") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/skywind3000/asyncrun.vim") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1n0yzv8psskhx8h4g7dz64h2llm9mnljhvl4hrnsjx6znkni8vwp")))) + (build-system copy-build-system) + (arguments + '(#:install-plan + '(("plugin" "share/vim/vimfiles/") + ("doc/" "share/vim/vimfiles/doc" #:include ("asyncrun.txt"))))) + (home-page "https://github.com/skywind3000/asyncrun.vim") + (synopsis "Run Async Shell Commands in Vim") + (description "This plugin takes the advantage of new APIs in Vim 8 (and +NeoVim) to enable you to run shell commands in background and read output in the +quickfix window in realtime.") + (license license:expat))) diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index 225b5ddec9..c04ff8810e 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -123,6 +123,7 @@ (patches (search-patches "qemu-CVE-2020-1711.patch" "qemu-CVE-2020-7039.patch" "qemu-CVE-2020-7211.patch" + "qemu-CVE-2020-8608.patch" "qemu-fix-documentation-build-failure.patch")) (sha256 (base32 @@ -551,14 +552,14 @@ to integrate other virtualization mechanisms if needed.") (define-public libvirt-glib (package (name "libvirt-glib") - (version "2.0.0") + (version "3.0.0") (source (origin (method url-fetch) (uri (string-append "ftp://libvirt.org/libvirt/glib/" "libvirt-glib-" version ".tar.gz")) (sha256 (base32 - "0six9ckmvlwwyavyjkgc262qkpvfqgi8rjij7cyk00bmqq8c9s4l")))) + "1zpbv4ninc57c9rw4zmmkvvqn7154iv1qfr20kyxn8xplalqrzvz")))) (build-system gnu-build-system) (inputs `(("openssl" ,openssl) diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index 88b74f6cd7..0a7deb5d17 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -575,7 +575,17 @@ key-bindings and is fully configurable and extensible in Common Lisp.") (format #t "~a" ,(package-version next-gtk-webkit)))) (invoke "make" "install-assets" (string-append "PREFIX=" - (assoc-ref outputs "out")))))))) + (assoc-ref outputs "out"))))) + (add-after 'unpack 'fix-lambda-list + ;; Starting from SBCL 2.0.2, Next 1.5.0 won't build + ;; because of a weird lambda list type. + (lambda _ + (substitute* "source/keymap.lisp" + (("^\\(declaim .* define-key\\)\\)") "")) + (substitute* "source/search-buffer.lisp" + (("define-key :keymap keymap \"C-s\"") "define-key \"C-s\"") + (("\\(update-selection-highlight-hint :follow t :scroll t\\)\\)\\)") + "(update-selection-highlight-hint :follow t :scroll t)) :keymap keymap)"))))))) (inputs `(("alexandria" ,sbcl-alexandria) ("bordeaux-threads" ,sbcl-bordeaux-threads) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 6d8054da1b..b4c0785180 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1383,7 +1383,7 @@ unavailable.") "CC=gcc")) ;; No 'check' target. #:tests? #f)) - (home-page "http://www.pps.univ-paris-diderot.fr/~jch/software/polipo/") + (home-page "https://www.pps.univ-paris-diderot.fr/~jch/software/polipo/") (synopsis "Small caching web proxy") (description "Polipo is a small caching web proxy (web cache, HTTP proxy, and proxy @@ -1956,15 +1956,14 @@ instance of a component on each request.") (define-public perl-catalyst-devel (package (name "perl-catalyst-devel") - (version "1.39") + (version "1.40") (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/" + (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/" "Catalyst-Devel-" version ".tar.gz")) (sha256 - (base32 - "12m50bbkggjmpxihv3wnvr0g2qng0zwhlzi5ygppjz8wh2x73qxw")))) + (base32 "1fqnw6cizpxnfr87rpid8w1wpi1p1lxg6imfjpixqn7s055hcpwc")))) (build-system perl-build-system) (native-inputs `(("perl-test-fatal" ,perl-test-fatal))) @@ -4392,8 +4391,8 @@ CDF, Atom 0.3, and Atom 1.0 feeds.") (package-with-python2 python-feedparser)) (define-public guix-data-service - (let ((commit "bf25a8db0278b49ef2149c69ef5d6dd2201fd413") - (revision "17")) + (let ((commit "18eb9dfdcb3174bfd4bab5b9089acffa13aa1214") + (revision "18")) (package (name "guix-data-service") (version (string-append "0.0.1-" revision "." (string-take commit 7))) @@ -4405,7 +4404,7 @@ CDF, Atom 0.3, and Atom 1.0 feeds.") (file-name (git-file-name name version)) (sha256 (base32 - "0s6faybczdn10zwrkn22nfq5lvf538513hbmjfaqlkhfmwc4s1qd")))) + "0lb78cqzqaz0r4sspg272w2a3yhzhqah30j0kxf0z182b0qpmp37")))) (build-system gnu-build-system) (arguments '(#:modules ((guix build utils) @@ -4454,15 +4453,15 @@ CDF, Atom 0.3, and Atom 1.0 feeds.") #t))) (delete 'strip)))) ; As the .go files aren't compatible (inputs - `(("guix" ,guix) - ("guile-fibers" ,guile-fibers) - ("guile-json" ,guile-json-3) - ("guile-email" ,guile-email) - ("guile-squee" ,guile-squee) + `(("guix" ,guile3.0-guix) + ("guile-fibers" ,guile3.0-fibers) + ("guile-json" ,guile3.0-json) + ("guile-email" ,guile3.0-email) + ("guile-squee" ,guile3.0-squee) ("postgresql" ,postgresql) ("sqitch" ,sqitch))) (native-inputs - `(("guile" ,guile-2.2) + `(("guile" ,guile-3.0) ("autoconf" ,autoconf) ("automake" ,automake) ("ephemeralpg" ,ephemeralpg) @@ -4606,7 +4605,7 @@ It uses the uwsgi protocol for all the networking/interprocess communications.") ;;("bundler" ,bundler) ("valgrind" ,valgrind))) (build-system gnu-build-system) - (home-page "http://stedolan.github.io/jq/") + (home-page "https://stedolan.github.io/jq/") (synopsis "Command-line JSON processor") (description "jq is like sed for JSON data – you can use it to slice and filter and map and transform structured data with the same ease that sed, awk, diff --git a/gnu/packages/wireservice.scm b/gnu/packages/wireservice.scm index eab76970f4..0d772b54d1 100644 --- a/gnu/packages/wireservice.scm +++ b/gnu/packages/wireservice.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com> +;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -198,17 +199,16 @@ for xls and xlsx files support to all @code{agate.Table} instances."))) (define-public csvkit (package (name "csvkit") - (version "1.0.4") + (version "1.0.5") (source (origin (method url-fetch) (uri (pypi-uri "csvkit" version)) (sha256 (base32 - "1830lb95rh1iyi3drlwxzb6y3pqkii0qiyzd40c1kvhvaf1s6lqk")) - (patches (search-patches "csvkit-fix-tests.patch")))) + "1ffmbzk4rxnl1yhqfl58v7kvl5m9cbvjm8v7xp4mvr00sgs91lvv")))) (build-system python-build-system) (native-inputs - `(("python-psycopg2" ,python-psycopg2) ;; Used to test PostgreSQL support. + `(("python-psycopg2" ,python-psycopg2) ; to test PostgreSQL support ("python-sphinx" ,python-sphinx) ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme))) (inputs diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 8193975555..f9b6ef9880 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -730,7 +730,7 @@ tiled on several screens.") (substitute* "test/Xmobar/Plugins/Monitors/AlsaSpec.hs" (("/bin/bash") (which "bash"))) #t))))) - (home-page "http://xmobar.org") + (home-page "https://xmobar.org") (synopsis "Minimalistic text based status bar") (description "@code{xmobar} is a lightweight, text-based, status bar written in diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index 4fcc4c8b5c..238cb76b9e 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -410,7 +410,7 @@ X11 (yet).") ("libxinerama" ,libxinerama) ("libxtst" ,libxtst) ("libxkbcommon" ,libxkbcommon))) - (home-page "http://www.semicomplete.com/projects/xdotool") + (home-page "https://www.semicomplete.com/projects/xdotool/") (synopsis "Fake keyboard/mouse input, window management, and more") (description "Xdotool lets you simulate keyboard input and mouse activity, move and resize windows, etc. It does this using X11's XTEST extension and diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index 6140e9e5c7..7f97c2a0cb 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -385,15 +385,15 @@ applications menu, workspace switcher and more.") (define-public xfce4-clipman-plugin (package (name "xfce4-clipman-plugin") - (version "1.4.3") + (version "1.4.4") (source (origin (method url-fetch) (uri (string-append "https://archive.xfce.org/src/panel-plugins/" - name "/" (version-major+minor version) "/" - name "-" version ".tar.bz2")) + "xfce4-clipman-plugin/" (version-major+minor version) "/" + "xfce4-clipman-plugin-" version ".tar.bz2")) (sha256 (base32 - "1liacff4wl5mpyf9dzdrfbwxzmhl95y5nsfc0jf5rgalzdgbik99")))) + "1819kjn7gs30zhhj2ppfw4zjpcgj9amw1vvppjsavsff1xflrq88")))) (build-system gnu-build-system) (native-inputs `(("intltool" ,intltool) @@ -880,15 +880,15 @@ system resources, while still being visually appealing and user friendly.") (define-public xfce4-power-manager (package (name "xfce4-power-manager") - (version "1.6.5") + (version "1.7.0") (source (origin (method url-fetch) (uri (string-append "https://archive.xfce.org/src/xfce/" - name "/" (version-major+minor version) "/" - name "-" version ".tar.bz2")) + "xfce4-power-manager/" (version-major+minor version) "/" + "xfce4-power-manager-" version ".tar.bz2")) (sha256 (base32 - "0x3s2bdwfhp65dz5yn3k43j99ywqlsvrpz3pqmgwm0dik5wbdb8h")))) + "0jqjwy341dxyijjm9k77a12iih6b5r3f4cmpr2lppa7mf37qqdj5")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -1047,7 +1047,7 @@ sending standard messages over D-Bus using the (define-public xfburn (package (name "xfburn") - (version "0.6.1") + (version "0.6.2") (source (origin (method url-fetch) (uri (string-append "http://archive.xfce.org/src/apps/xfburn/" @@ -1055,7 +1055,7 @@ sending standard messages over D-Bus using the "xfburn-" version ".tar.bz2")) (sha256 (base32 - "0ydka5lf9n614gb5xc9bn9297nilgmkfqlb7q1y2yrc97882nxxk")))) + "09q3s2rkpf0ljzq6bv4hl9byvaggjq7lchfw5zaircwv5q9nwhc3")))) (build-system gnu-build-system) (native-inputs `(("intltool" ,intltool) @@ -1971,7 +1971,7 @@ lan interface (signal state, signal quality, network name (SSID)).") (define-public xfce4-weather-plugin (package (name "xfce4-weather-plugin") - (version "0.10.0") + (version "0.10.1") (source (origin (method url-fetch) (uri (string-append "http://archive.xfce.org/src/panel-plugins/" @@ -1980,7 +1980,7 @@ lan interface (signal state, signal quality, network name (SSID)).") "/xfce4-weather-plugin-" version ".tar.bz2")) (sha256 (base32 - "0wlm80panxyn86l9qm3mbliqj7gkf2zyzak3w041zz9hg31a08s4")))) + "12bs2rfmmy021087i10vxibdbbvd5vld0vk3h5hymhpz7rgszcmg")))) (build-system gnu-build-system) (native-inputs `(("intltool" ,intltool) diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index c3e271dda3..6b68e6f8e0 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -1301,7 +1301,7 @@ spreadsheet.") '(#:configure-flags '("--disable-sse2"))))) (native-inputs `(("perl" ,perl))) - (home-page "http://xerces.apache.org/xerces-c/") + (home-page "https://xerces.apache.org/xerces-c/") (synopsis "Validating XML parser library for C++") (description "Xerces-C++ is a validating XML parser written in a portable subset of C++. Xerces-C++ makes it easy to give your application the ability diff --git a/gnu/services/base.scm b/gnu/services/base.scm index f1844fb422..ceb6374bfc 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> @@ -1918,7 +1918,7 @@ archive}). If that is not the case, the service will fail to start." udev-configuration make-udev-configuration udev-configuration? (udev udev-configuration-udev ;<package> - (default eudev)) + (default eudev/btrfs-fix)) (rules udev-configuration-rules ;list of <package> (default '()))) @@ -2116,7 +2116,7 @@ the udev rules in use.") directory dynamically. Get extra rules from the packages listed in the @code{rules} field of its value, @code{udev-configuration} object."))) -(define* (udev-service #:key (udev eudev) (rules '())) +(define* (udev-service #:key (udev eudev/btrfs-fix) (rules '())) "Run @var{udev}, which populates the @file{/dev} directory dynamically. Get extra rules from the packages listed in @var{rules}." (service udev-service-type diff --git a/gnu/services/certbot.scm b/gnu/services/certbot.scm index 0d3be03383..3e005918d6 100644 --- a/gnu/services/certbot.scm +++ b/gnu/services/certbot.scm @@ -3,6 +3,8 @@ ;;; Copyright © 2016 Sou Bunnbu <iyzsong@member.fsf.org> ;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu> +;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us> +;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -70,6 +72,8 @@ (certificates certbot-configuration-certificates (default '())) (email certbot-configuration-email) + (server certbot-configuration-server + (default #f)) (rsa-key-size certbot-configuration-rsa-key-size (default #f)) (default-location certbot-configuration-default-location @@ -82,7 +86,7 @@ (define certbot-command (match-lambda (($ <certbot-configuration> package webroot certificates email - rsa-key-size default-location) + server rsa-key-size default-location) (let* ((certbot (file-append package "/bin/certbot")) (rsa-key-size (and rsa-key-size (number->string rsa-key-size))) (commands @@ -101,6 +105,7 @@ "--cert-name" name "--manual-public-ip-logging-ok" "-d" (string-join domains ",")) + (if server `("--server" ,server) '()) (if rsa-key-size `("--rsa-key-size" ,rsa-key-size) '()) (if authentication-hook `("--manual-auth-hook" ,authentication-hook) @@ -113,6 +118,7 @@ "--webroot" "-w" webroot "--cert-name" name "-d" (string-join domains ",")) + (if server `("--server" ,server) '()) (if rsa-key-size `("--rsa-key-size" ,rsa-key-size) '()) (if deploy-hook `("--deploy-hook" ,deploy-hook) '())))))) certificates))) @@ -142,7 +148,7 @@ (message (format #f (G_ "~a may need to be run~%") script))) (match config (($ <certbot-configuration> package webroot certificates email - rsa-key-size default-location) + server rsa-key-size default-location) (with-imported-modules '((guix build utils)) #~(begin (use-modules (guix build utils)) @@ -154,7 +160,7 @@ (define certbot-nginx-server-configurations (match-lambda (($ <certbot-configuration> package webroot certificates email - rsa-key-size default-location) + server rsa-key-size default-location) (list (nginx-server-configuration (listen '("80" "[::]:80")) diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm index 7bfb021161..0f4f0f9948 100644 --- a/gnu/services/cuirass.scm +++ b/gnu/services/cuirass.scm @@ -77,7 +77,9 @@ (one-shot? cuirass-configuration-one-shot? ;boolean (default #f)) (fallback? cuirass-configuration-fallback? ;boolean - (default #f))) + (default #f)) + (extra-options cuirass-configuration-extra-options + (default '()))) (define (cuirass-shepherd-service config) "Return a <shepherd-service> for the Cuirass service with CONFIG." @@ -95,7 +97,8 @@ (specs (cuirass-configuration-specifications config)) (use-substitutes? (cuirass-configuration-use-substitutes? config)) (one-shot? (cuirass-configuration-one-shot? config)) - (fallback? (cuirass-configuration-fallback? config))) + (fallback? (cuirass-configuration-fallback? config)) + (extra-options (cuirass-configuration-extra-options config))) (list (shepherd-service (documentation "Run Cuirass.") (provision '(cuirass)) @@ -110,7 +113,8 @@ "--interval" #$(number->string interval) #$@(if use-substitutes? '("--use-substitutes") '()) #$@(if one-shot? '("--one-shot") '()) - #$@(if fallback? '("--fallback") '())) + #$@(if fallback? '("--fallback") '()) + #$@extra-options) #:environment-variables (list "GIT_SSL_CAINFO=/etc/ssl/certs/ca-certificates.crt" @@ -137,7 +141,8 @@ "--listen" #$host "--interval" #$(number->string interval) #$@(if use-substitutes? '("--use-substitutes") '()) - #$@(if fallback? '("--fallback") '())) + #$@(if fallback? '("--fallback") '()) + #$@extra-options) #:user #$user #:group #$group diff --git a/gnu/services/guix.scm b/gnu/services/guix.scm index 0f0fad39b0..10a8581a62 100644 --- a/gnu/services/guix.scm +++ b/gnu/services/guix.scm @@ -68,7 +68,12 @@ (default #f)) (commits-getmail-retriever-configuration guix-data-service-commits-getmail-retriever-configuration - (default #f))) + (default #f)) + (extra-options guix-data-service-extra-options + (default '())) + (extra-process-jobs-options + guix-data-service-extra-process-jobs-options + (default '()))) (define (guix-data-service-profile-packages config) "Return the guix-data-service package, this will populate the @@ -78,7 +83,7 @@ ca-certificates.crt file in the system profile." (define (guix-data-service-shepherd-services config) (match-record config <guix-data-service-configuration> - (package user group port host) + (package user group port host extra-options extra-process-jobs-options) (list (shepherd-service (documentation "Guix Data Service web server") @@ -92,7 +97,8 @@ ca-certificates.crt file in the system profile." #$(string-append "--host=" host) ;; Perform any database migrations when the ;; service is started - "--update-database") + "--update-database" + #$@extra-options) #:user #$user #:group #$group @@ -117,7 +123,8 @@ ca-certificates.crt file in the system profile." (start #~(make-forkexec-constructor (list #$(file-append package - "/bin/guix-data-service-process-jobs")) + "/bin/guix-data-service-process-jobs") + #$@extra-process-jobs-options) #:user #$user #:group #$group #:environment-variables diff --git a/gnu/services/nfs.scm b/gnu/services/nfs.scm index ddc9e2c47e..140a11856a 100644 --- a/gnu/services/nfs.scm +++ b/gnu/services/nfs.scm @@ -299,6 +299,7 @@ (start #~(make-forkexec-constructor (list #$(file-append nfs-utils "/sbin/rpc.mountd") + "--foreground" #$@(if (member 'mountd debug) '("--debug" "all") '()) diff --git a/gnu/system.scm b/gnu/system.scm index 42c0cd6f17..c43ae15044 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -100,6 +100,14 @@ operating-system-user-accounts operating-system-shepherd-service-names operating-system-user-kernel-arguments + operating-system-firmware + operating-system-keyboard-layout + operating-system-name-service-switch + operating-system-pam-services + operating-system-setuid-programs + operating-system-skeletons + operating-system-sudoers-file + operating-system-swap-devices operating-system-derivation operating-system-profile diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 03a511cdde..d1c131ecb4 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org> ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> @@ -629,7 +629,8 @@ TYPE (one of 'iso9660 or 'dce). Return a UUID object." 'iso9660)) (bytevector->uuid (uint-list->bytevector - (list (hash file-system-type + (list (hash (map file-system-digest + (operating-system-file-systems os)) (- (expt 2 32) 1)) (hash (operating-system-host-name os) (- (expt 2 32) 1)) diff --git a/gnu/tests.scm b/gnu/tests.scm index 60e7ef30c0..705bf561a6 100644 --- a/gnu/tests.scm +++ b/gnu/tests.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; @@ -254,6 +254,12 @@ the system under test." (set-record-type-printer! <system-test> write-system-test) +(define-gexp-compiler (compile-system-test (test <system-test>) + system target) + "Compile TEST to a derivation." + ;; XXX: SYSTEM and TARGET are ignored. + (system-test-value test)) + (define (test-modules) "Return the list of modules that define system tests." (scheme-modules (dirname (search-path %load-path "guix.scm")) diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm index a891711844..37b83dc7ec 100644 --- a/gnu/tests/base.scm +++ b/gnu/tests/base.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org> ;;; ;;; This file is part of GNU Guix. @@ -55,7 +55,7 @@ (define* (run-basic-test os command #:optional (name "basic") - #:key initialization) + #:key initialization root-password) "Return a derivation called NAME that tests basic features of the OS started using COMMAND, a gexp that evaluates to a list of strings. Compare some properties of running system to what's declared in OS, an <operating-system>. @@ -63,7 +63,10 @@ properties of running system to what's declared in OS, an <operating-system>. When INITIALIZATION is true, it must be a one-argument procedure that is passed a gexp denoting the marionette, and it must return gexp that is inserted before the first test. This is used to introduce an extra -initialization step, such as entering a LUKS passphrase." +initialization step, such as entering a LUKS passphrase. + +When ROOT-PASSWORD is true, enter it as the root password when logging in. +Otherwise assume that there is no password for root." (define special-files (service-value (fold-services (operating-system-services os) @@ -300,7 +303,19 @@ info --version") marionette) ;; Now we can type. - (marionette-type "root\n\nid -un > logged-in\n" marionette) + (let ((password #$root-password)) + (if password + (begin + (marionette-type "root\n" marionette) + (wait-for-screen-text marionette + (lambda (text) + (string-contains text "Password")) + #:ocrad + #$(file-append ocrad "/bin/ocrad")) + (marionette-type (string-append password "\n\n") + marionette)) + (marionette-type "root\n\n" marionette))) + (marionette-type "id -un > logged-in\n" marionette) ;; It can take a while before the shell commands are executed. (marionette-eval '(use-modules (rnrs io ports)) marionette) diff --git a/gnu/tests/docker.scm b/gnu/tests/docker.scm index 10882b9d1f..5ab33e1104 100644 --- a/gnu/tests/docker.scm +++ b/gnu/tests/docker.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019 Danny Milosavljevic <dannym@scratchpost.org> -;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -206,7 +206,7 @@ inside %DOCKER-OS." ;; load' must be able to store the whole image into memory, hence the ;; huge memory requirements. We should avoid the volatile-root setup ;; instead. - (memory-size 3000) + (memory-size 3500) (port-forwardings '()))) (define test diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm index 335efbd468..9ecc45cc04 100644 --- a/gnu/tests/install.scm +++ b/gnu/tests/install.scm @@ -26,10 +26,14 @@ #:use-module (gnu system install) #:use-module (gnu system vm) #:use-module ((gnu build vm) #:select (qemu-command)) + #:use-module (gnu packages admin) #:use-module (gnu packages bootloaders) + #:use-module (gnu packages cryptsetup) + #:use-module (gnu packages linux) #:use-module (gnu packages ocr) #:use-module (gnu packages package-management) #:use-module (gnu packages virtualization) + #:use-module (gnu services networking) #:use-module (guix store) #:use-module (guix monads) #:use-module (guix packages) @@ -44,7 +48,10 @@ %test-raid-root-os %test-encrypted-root-os %test-btrfs-root-os - %test-jfs-root-os)) + %test-jfs-root-os + + %test-gui-installed-os + %test-gui-installed-os-encrypted)) ;;; Commentary: ;;; @@ -179,6 +186,7 @@ reboot\n") (define* (run-install target-os target-os-source #:key (script %simple-installation-script) + (gui-test #f) (packages '()) (os (marionette-operating-system (operating-system @@ -191,6 +199,7 @@ reboot\n") packages)) (kernel-arguments '("console=ttyS0"))) #:imported-modules '((gnu services herd) + (gnu installer tests) (guix combinators)))) (installation-disk-image-file-system-type "ext4") (target-size (* 2200 MiB))) @@ -256,13 +265,21 @@ packages defined in installation-os." (start 'term-tty1)) marionette) - (marionette-eval '(call-with-output-file "/etc/target-config.scm" - (lambda (port) - (write '#$target-os-source port))) - marionette) - - (exit (marionette-eval '(zero? (system #$script)) - marionette))))) + (when #$(->bool script) + (marionette-eval '(call-with-output-file "/etc/target-config.scm" + (lambda (port) + (write '#$target-os-source port))) + marionette) + (exit (marionette-eval '(zero? (system #$script)) + marionette))) + + (when #$(->bool gui-test) + (wait-for-unix-socket "/var/guix/installer-socket" + marionette) + (format #t "installer socket ready~%") + (force-output) + (exit #$(and gui-test + (gui-test #~marionette))))))) (gexp->derivation "installation" install))) @@ -890,4 +907,175 @@ build (current-guix) and then store a couple of full system images.") (command (qemu-command/writable-image image))) (run-basic-test %jfs-root-os command "jfs-root-os"))))) + +;;; +;;; Installation through the graphical interface. +;;; + +(define %syslog-conf + ;; Syslog configuration that dumps to /dev/console, so we can see the + ;; installer's messages during the test. + (computed-file "syslog.conf" + #~(begin + (copy-file #$%default-syslog.conf #$output) + (chmod #$output #o644) + (let ((port (open-file #$output "a"))) + (display "\n*.info /dev/console\n" port) + #t)))) + +(define (operating-system-with-console-syslog os) + "Return OS with a syslog service that writes to /dev/console." + (operating-system + (inherit os) + (services (modify-services (operating-system-user-services os) + (syslog-service-type config + => + (syslog-configuration + (inherit config) + (config-file %syslog-conf))))))) + +(define %root-password "foo") + +(define* (gui-test-program marionette #:key (encrypted? #f)) + #~(let () + (define (screenshot file) + (marionette-control (string-append "screendump " file) + #$marionette)) + + (setvbuf (current-output-port) 'none) + (setvbuf (current-error-port) 'none) + + (marionette-eval '(use-modules (gnu installer tests)) + #$marionette) + + ;; Arrange so that 'converse' prints debugging output to the console. + (marionette-eval '(let ((console (open-output-file "/dev/console"))) + (setvbuf console 'none) + (conversation-log-port console)) + #$marionette) + + ;; Tell the installer to not wait for the Connman "online" status. + (marionette-eval '(call-with-output-file "/tmp/installer-assume-online" + (const #t)) + #$marionette) + + ;; Run 'guix system init' with '--no-grafts', to cope with the lack of + ;; network access. + (marionette-eval '(call-with-output-file + "/tmp/installer-system-init-options" + (lambda (port) + (write '("--no-grafts" "--no-substitutes") + port))) + #$marionette) + + (marionette-eval '(define installer-socket + (open-installer-socket)) + #$marionette) + (screenshot "installer-start.ppm") + + (marionette-eval '(choose-locale+keyboard installer-socket) + #$marionette) + (screenshot "installer-locale.ppm") + + ;; Choose the host name that the "basic" test expects. + (marionette-eval '(enter-host-name+passwords installer-socket + #:host-name "liberigilo" + #:root-password + #$%root-password + #:users + '(("alice" "pass1") + ("bob" "pass2"))) + #$marionette) + (screenshot "installer-services.ppm") + + (marionette-eval '(choose-services installer-socket + #:desktop-environments '() + #:choose-network-service? + (const #f)) + #$marionette) + (screenshot "installer-partitioning.ppm") + + (marionette-eval '(choose-partitioning installer-socket + #:encrypted? #$encrypted? + #:passphrase #$%luks-passphrase) + #$marionette) + (screenshot "installer-run.ppm") + + (marionette-eval '(conclude-installation installer-socket) + #$marionette) + + (sync) + #t)) + +(define %extra-packages + ;; Packages needed when installing with an encrypted root. + (list isc-dhcp + lvm2-static cryptsetup-static e2fsck/static + loadkeys-static)) + +(define installation-os-for-gui-tests + ;; Operating system that contains all of %EXTRA-PACKAGES, needed for the + ;; target OS, as well as syslog output redirected to the console so we can + ;; see what the installer is up to. + (marionette-operating-system + (operating-system + (inherit (operating-system-with-console-syslog + (operating-system-add-packages + (operating-system-with-current-guix + installation-os) + %extra-packages))) + (kernel-arguments '("console=ttyS0"))) + #:imported-modules '((gnu services herd) + (gnu installer tests) + (guix combinators)))) + +(define* (guided-installation-test name #:key encrypted?) + (define os + (operating-system + (inherit %minimal-os) + (users (append (list (user-account + (name "alice") + (comment "Bob's sister") + (group "users") + (supplementary-groups + '("wheel" "audio" "video"))) + (user-account + (name "bob") + (comment "Alice's brother") + (group "users") + (supplementary-groups + '("wheel" "audio" "video")))) + %base-user-accounts)) + ;; The installer does not create a swap device in guided mode with + ;; encryption support. + (swap-devices (if encrypted? '() '("/dev/vdb2"))) + (services (cons (service dhcp-client-service-type) + (operating-system-user-services %minimal-os))))) + + (system-test + (name name) + (description + "Install an OS using the graphical installer and test it.") + (value + (mlet* %store-monad ((image (run-install os '(this is unused) + #:script #f + #:os installation-os-for-gui-tests + #:gui-test + (lambda (marionette) + (gui-test-program + marionette + #:encrypted? encrypted?)))) + (command (qemu-command/writable-image image))) + (run-basic-test os command name + #:initialization (and encrypted? enter-luks-passphrase) + #:root-password %root-password))))) + +(define %test-gui-installed-os + (guided-installation-test "gui-installed-os" + #:encrypted? #f)) + +(define %test-gui-installed-os-encrypted + (guided-installation-test "gui-installed-os-encrypted" + #:encrypted? #t)) + ;;; install.scm ends here diff --git a/gnu/tests/mail.scm b/gnu/tests/mail.scm index 023f59df10..298918b3a7 100644 --- a/gnu/tests/mail.scm +++ b/gnu/tests/mail.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Sou Bunnbu <iyzsong@member.fsf.org> ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au> -;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2017, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2019 Christopher Baines <mail@cbaines.net> @@ -26,8 +26,11 @@ #:use-module (gnu tests) #:use-module (gnu packages mail) #:use-module (gnu system) + #:use-module (gnu system accounts) + #:use-module (gnu system shadow) #:use-module (gnu system vm) #:use-module (gnu services) + #:use-module (gnu services base) #:use-module (gnu services getmail) #:use-module (gnu services mail) #:use-module (gnu services networking) @@ -404,43 +407,55 @@ Subject: Hello Nice to meet you!") (value (run-dovecot-test)))) (define %getmail-os - (simple-operating-system - (service dhcp-client-service-type) - (service dovecot-service-type - (dovecot-configuration - (disable-plaintext-auth? #f) - (ssl? "no") - (auth-mechanisms '("anonymous" "plain")) - (auth-anonymous-username "alice") - (mail-location - (string-append "maildir:~/Maildir" - ":INBOX=~/Maildir/INBOX" - ":LAYOUT=fs")))) - (service getmail-service-type - (list - (getmail-configuration - (name 'test) - (user "alice") - (directory "/var/lib/getmail/alice") - (idle '("TESTBOX")) - (rcfile - (getmail-configuration-file - (retriever - (getmail-retriever-configuration - (type "SimpleIMAPRetriever") - (server "localhost") - (username "alice") - (port 143) - (extra-parameters - '((password . "testpass") - (mailboxes . ("TESTBOX")))))) - (destination - (getmail-destination-configuration - (type "Maildir") - (path "/home/alice/TestMaildir/"))) - (options - (getmail-options-configuration - (read-all #f)))))))))) + (operating-system + (inherit (simple-operating-system)) + + ;; Set a password for the user account; the test needs it. + (users (cons (user-account + (name "alice") + (password (crypt "testpass" "$6$abc")) + (comment "Bob's sister") + (group "users") + (supplementary-groups '("wheel" "audio" "video"))) + %base-user-accounts)) + + (services (cons* (service dhcp-client-service-type) + (service dovecot-service-type + (dovecot-configuration + (disable-plaintext-auth? #f) + (ssl? "no") + (auth-mechanisms '("anonymous" "plain")) + (auth-anonymous-username "alice") + (mail-location + (string-append "maildir:~/Maildir" + ":INBOX=~/Maildir/INBOX" + ":LAYOUT=fs")))) + (service getmail-service-type + (list + (getmail-configuration + (name 'test) + (user "alice") + (directory "/var/lib/getmail/alice") + (idle '("TESTBOX")) + (rcfile + (getmail-configuration-file + (retriever + (getmail-retriever-configuration + (type "SimpleIMAPRetriever") + (server "localhost") + (username "alice") + (port 143) + (extra-parameters + '((password . "testpass") + (mailboxes . ("TESTBOX")))))) + (destination + (getmail-destination-configuration + (type "Maildir") + (path "/home/alice/TestMaildir/"))) + (options + (getmail-options-configuration + (read-all #f)))))))) + %base-services)))) (define (run-getmail-test) "Return a test of an OS running Getmail service." @@ -483,11 +498,6 @@ Subject: Hello Nice to meet you!") (start-service 'dovecot)) marionette)) - (test-assert "set password for alice" - (marionette-eval - '(system "echo -e \"testpass\ntestpass\" | passwd alice") - marionette)) - ;; Wait for getmail to be up and running. (test-assert "getmail-test running" (marionette-eval diff --git a/gnu/tests/monitoring.scm b/gnu/tests/monitoring.scm index 14d989d79a..732fbc54d7 100644 --- a/gnu/tests/monitoring.scm +++ b/gnu/tests/monitoring.scm @@ -194,6 +194,13 @@ cat ~a | sudo -u zabbix psql zabbix; (start-service 'postgres)) marionette)) + ;; Add /run/setuid-programs to $PATH so that the scripts passed to + ;; 'system' can find 'sudo'. + (marionette-eval + '(setenv "PATH" + "/run/setuid-programs:/run/current-system/profile/bin") + marionette) + (test-eq "postgres create zabbix user" 0 (marionette-eval '(begin (system #$%psql-user-create-zabbix)) diff --git a/guix/download.scm b/guix/download.scm index b6b4812fa7..91a2b4ce5f 100644 --- a/guix/download.scm +++ b/guix/download.scm @@ -183,7 +183,6 @@ "http://mirrors.nic.cz/CPAN/" "http://mirror.ibcp.fr/pub/CPAN/" "http://ftp.ntua.gr/pub/lang/perl/" - "http://kvin.lv/pub/CPAN/" "http://mirror.as43289.net/pub/CPAN/" "http://cpan.cs.uu.nl/" "http://cpan.uib.no/" diff --git a/guix/import/cran.scm b/guix/import/cran.scm index bcb37ed250..bb8226f714 100644 --- a/guix/import/cran.scm +++ b/guix/import/cran.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; @@ -385,6 +385,9 @@ reference the pkg-config tool." (tarball-needs-pkg-config? thing) (directory-needs-pkg-config? thing))) +(define (needs-knitr? meta) + (member "knitr" (listify meta "VignetteBuilder"))) + ;; XXX adapted from (guix scripts hash) (define (file-hash file select? recursive?) ;; Compute the hash of FILE. @@ -486,7 +489,9 @@ from the alist META, which was derived from the R package's DESCRIPTION file." `(,@(if (needs-fortran? source (not git?)) '("gfortran") '()) ,@(if (needs-pkg-config? source (not git?)) - '("pkg-config") '())) + '("pkg-config") '()) + ,@(if (needs-knitr? meta) + '("r-knitr") '())) 'native-inputs) (home-page ,(if (string-null? home-page) (string-append base-url name) diff --git a/guix/scripts.scm b/guix/scripts.scm index e235c8d4c3..3e19e38957 100644 --- a/guix/scripts.scm +++ b/guix/scripts.scm @@ -237,7 +237,7 @@ THRESHOLDS is a pair (ABSOLUTE-THRESHOLD . RELATIVE-THRESHOLD)." (total (* block-size (file-system-block-count stats))) (relative-threshold-in-bytes (* total (cadr thresholds))) (absolute-threshold-in-bytes (car thresholds))) - (when (< available (max relative-threshold-in-bytes + (when (< available (min relative-threshold-in-bytes absolute-threshold-in-bytes)) (warning (G_ "only ~,1f GiB of free space available on ~a~%") (/ available 1. GiB) (%store-prefix)) diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index eedf6bf6a8..da2a675ce2 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -812,14 +812,6 @@ build---packages, gexps, derivations, and so on." (for-each validate-type lst) lst)) - ;; Note: Taken from (guix scripts refresh). - (define (manifest->packages manifest) - "Return the list of packages in MANIFEST." - (filter-map (lambda (entry) - (let ((item (manifest-entry-item entry))) - (if (package? item) item #f))) - (manifest-entries manifest))) - (append-map (match-lambda (('argument . (? string? spec)) (cond ((derivation-path? spec) @@ -844,8 +836,10 @@ build---packages, gexps, derivations, and so on." (('file . file) (ensure-list (load* file (make-user-module '())))) (('manifest . manifest) - (manifest->packages - (load* manifest (make-user-module '((guix profiles) (gnu)))))) + (map manifest-entry-item + (manifest-entries + (load* manifest + (make-user-module '((guix profiles) (gnu))))))) (('expression . str) (ensure-list (read/eval str))) (('argument . (? derivation? drv)) @@ -949,13 +943,21 @@ needed." (parse-command-line args %options (list %default-options))) + (define graft? + (assoc-ref opts 'graft?)) + (with-error-handling (with-status-verbosity (assoc-ref opts 'verbosity) (with-store store ;; Set the build options before we do anything else. (set-build-options-from-command-line store opts) - (parameterize ((current-terminal-columns (terminal-columns))) + (parameterize ((current-terminal-columns (terminal-columns)) + + ;; Set grafting upfront in case the user's input + ;; depends on it (e.g., a manifest or code snippet that + ;; calls 'gexp->derivation'). + (%graft? graft?)) (let* ((mode (assoc-ref opts 'build-mode)) (drv (options->derivations store opts)) (urls (map (cut string-append <> "/log") diff --git a/guix/scripts/weather.scm b/guix/scripts/weather.scm index 1701772bc1..629844768a 100644 --- a/guix/scripts/weather.scm +++ b/guix/scripts/weather.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Kyle Meyer <kyle@kyleam.com> ;;; @@ -28,6 +28,7 @@ #:use-module (guix monads) #:use-module (guix store) #:use-module (guix grafts) + #:use-module (guix gexp) #:use-module ((guix build syscalls) #:select (terminal-columns)) #:use-module (guix scripts substitute) #:use-module (guix http-client) @@ -75,7 +76,16 @@ scope." (define* (package-outputs packages #:optional (system (%current-system))) "Return the list of outputs of all of PACKAGES for the given SYSTEM." - (let ((packages (filter (cut supported-package? <> system) packages))) + (define (lower-object/no-grafts obj system) + (mlet* %store-monad ((previous (set-grafting #f)) + (drv (lower-object obj system)) + (_ (set-grafting previous))) + (return drv))) + + (let ((packages (filter (lambda (package) + (or (not (package? package)) + (supported-package? package system))) + packages))) (format (current-error-port) (G_ "computing ~h package derivations for ~a...~%") (length packages) system) @@ -84,8 +94,11 @@ scope." (lambda (report) (foldm %store-monad (lambda (package result) - (mlet %store-monad ((drv (package->derivation package system - #:graft? #f))) + ;; PACKAGE could in fact be a non-package object, for example + ;; coming from a user-specified manifest. Thus, use + ;; 'lower-object' rather than 'package->derivation' here. + (mlet %store-monad ((drv (lower-object/no-grafts package + system))) (report) (match (derivation->output-paths drv) (((names . items) ...) @@ -487,7 +500,12 @@ SERVER. Display information for packages with at least THRESHOLD dependents." (if file (load-manifest file) '()))))) (with-error-handling - (parameterize ((current-terminal-columns (terminal-columns))) + (parameterize ((current-terminal-columns (terminal-columns)) + + ;; Set grafting upfront in case the user's input depends on + ;; it (e.g., a manifest or code snippet that calls + ;; 'gexp->derivation'). + (%graft? #f)) (let* ((opts (parse-command-line args %options (list %default-options) #:build-options? #f)) @@ -500,13 +518,12 @@ SERVER. Display information for packages with at least THRESHOLD dependents." (systems systems))) (packages (package-list opts)) (items (with-store store - (parameterize ((%graft? #f)) - (concatenate - (run-with-store store - (mapm %store-monad - (lambda (system) - (package-outputs packages system)) - systems))))))) + (concatenate + (run-with-store store + (mapm %store-monad + (lambda (system) + (package-outputs packages system)) + systems)))))) (for-each (lambda (server) (report-server-coverage server items) (match (assoc-ref opts 'coverage) diff --git a/po/doc/local.mk b/po/doc/local.mk index 27b9e1f3b5..4f3ad0a37e 100644 --- a/po/doc/local.mk +++ b/po/doc/local.mk @@ -24,7 +24,7 @@ DOC_PO_FILES= \ %D%/guix-manual.zh_CN.po DOC_COOKBOOK_PO_FILES= \ - %D%/guix-manual.de.po + %D%/guix-cookbook.de.po EXTRA_DIST = \ %D%/guix-manual.pot \ @@ -58,7 +58,7 @@ doc-po-update-%: fi doc-po-update-cookbook-%: - @lang=`echo "$@" | sed -e's/^doc-po-update-//'` ; \ + @lang=`echo "$@" | sed -e's/^doc-po-update-cookbook-//'` ; \ output="$(srcdir)/po/doc/guix-cookbook.$$lang.po" ; \ input="$(srcdir)/po/doc/guix-cookbook.pot" ; \ if test -f "$$output"; then \ diff --git a/tests/guix-build.sh b/tests/guix-build.sh index c1df6db3a4..1a997de487 100644 --- a/tests/guix-build.sh +++ b/tests/guix-build.sh @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright © 2012, 2013, 2014, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +# Copyright © 2012, 2013, 2014, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> # Copyright © 2020 Marius Bakke <mbakke@fastmail.com> # # This file is part of GNU Guix. @@ -317,6 +317,17 @@ EOF test `guix build -d --manifest="$module_dir/manifest.scm" \ | grep -e '-hello-' -e '-guix-' \ | wc -l` -eq 2 + +# Building from a manifest that contains a non-package object. +cat > "$module_dir/manifest.scm"<<EOF +(manifest + (list (manifest-entry (name "foo") (version "0") + (item (computed-file "computed-thingie" + #~(mkdir (ungexp output))))))) +EOF +guix build -d -m "$module_dir/manifest.scm" \ + | grep 'computed-thingie\.drv$' + rm "$module_dir"/*.scm # Using 'GUIX_BUILD_OPTIONS'. |