diff options
330 files changed, 20695 insertions, 5805 deletions
diff --git a/.guix-authorizations b/.guix-authorizations index 023d39fc45..4efcd80bd9 100644 --- a/.guix-authorizations +++ b/.guix-authorizations @@ -79,6 +79,10 @@ (name "jonsger")) ("83B6 703A DCCA 3B69 4BCE 2DA6 E6A5 EE3C 1946 7A0D" (name "kkebreau")) + ("017D 74E2 7F58 5696 3801 781D F663 943E 08D8 092A" + (name "lbraun")) + ("CA4F 8CF4 37D7 478F DA05 5FD4 4213 7701 1A37 8446" + (name "lbraun (professional)")) ("ACC2 3BA0 59F7 CCF4 08F0 43AD 442A 84B8 C70E 2F87" (name "leoprikler")) ("45E5 75FA 53EA 8BD6 1BCE 0B4E 3ADC 75F0 13D6 78F9" diff --git a/Makefile.am b/Makefile.am index 5fe25837a5..f078d07bfe 100644 --- a/Makefile.am +++ b/Makefile.am @@ -14,6 +14,7 @@ # Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> # Copyright © 2018 Alex Vong <alexvong1995@gmail.com> # Copyright © 2019 Efraim Flashner <efraim@flashner.co.il> +# Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> # # This file is part of GNU Guix. # @@ -250,6 +251,7 @@ MODULES = \ guix/import/github.scm \ guix/import/gnome.scm \ guix/import/gnu.scm \ + guix/import/go.scm \ guix/import/hackage.scm \ guix/import/json.scm \ guix/import/kde.scm \ @@ -293,6 +295,7 @@ MODULES = \ guix/scripts/import/elpa.scm \ guix/scripts/import/gem.scm \ guix/scripts/import/gnu.scm \ + guix/scripts/import/go.scm \ guix/scripts/import/hackage.scm \ guix/scripts/import/json.scm \ guix/scripts/import/nix.scm \ @@ -456,6 +459,7 @@ SCM_TESTS = \ tests/git-authenticate.scm \ tests/glob.scm \ tests/gnu-maintenance.scm \ + tests/go.scm \ tests/grafts.scm \ tests/graph.scm \ tests/gremlin.scm \ @@ -797,7 +801,8 @@ SOURCE_TARBALLS = \ $(foreach ext,tar.gz,$(PACKAGE_FULL_TARNAME).$(ext)) # Systems supported by Guix. -SUPPORTED_SYSTEMS ?= x86_64-linux i686-linux armhf-linux aarch64-linux +SUPPORTED_SYSTEMS ?= x86_64-linux i686-linux armhf-linux aarch64-linux \ + powerpc64le-linux # Guix binary tarballs. BINARY_TARBALLS = \ diff --git a/build-aux/build-self.scm b/build-aux/build-self.scm index 6a3b9c83d4..dd845d1596 100644 --- a/build-aux/build-self.scm +++ b/build-aux/build-self.scm @@ -356,14 +356,17 @@ interface (FFI) of Guile.") (display (and=> - (run-with-store store - (guix-derivation source version - #$guile-version - #:channel-metadata - '#$channel-metadata - #:pull-version - #$pull-version) - #:system system) + ;; Silence autoload warnings and the likes. + (parameterize ((current-warning-port + (%make-void-port "w"))) + (run-with-store store + (guix-derivation source version + #$guile-version + #:channel-metadata + '#$channel-metadata + #:pull-version + #$pull-version) + #:system system)) derivation-file-name)))))) #:module-path (list source)))) diff --git a/configure.ac b/configure.ac index aa60471143..1598bfae94 100644 --- a/configure.ac +++ b/configure.ac @@ -151,9 +151,9 @@ if test "x$guix_cv_have_recent_guile_git" != "xyes"; then fi dnl Check for Guile-zlib. -GUILE_MODULE_AVAILABLE([have_guile_zlib], [(zlib)]) -if test "x$have_guile_zlib" != "xyes"; then - AC_MSG_ERROR([Guile-zlib is missing; please install it.]) +GUIX_CHECK_GUILE_ZLIB +if test "x$guix_cv_have_recent_guile_zlib" != "xyes"; then + AC_MSG_ERROR([A recent Guile-zlib could not be found; please install it.]) fi dnl Check for Guile-lzlib. diff --git a/doc/build.scm b/doc/build.scm index abdcf43d96..63d8fd65de 100644 --- a/doc/build.scm +++ b/doc/build.scm @@ -182,32 +182,6 @@ as well as images, OS examples, and translations." "-c" "EXTRA_HEAD=<meta name=\"viewport\" \ content=\"width=device-width, initial-scale=1\" />")) -(define guile-lib/htmlprag-fixed - ;; Guile-Lib with a hotfix for (htmlprag). - (package - (inherit guile-lib) - (arguments - (substitute-keyword-arguments (package-arguments guile-lib) - ((#:phases phases '%standard-phases) - `(modify-phases ,phases - (add-before 'build 'fix-htmlprag - (lambda _ - ;; When parsing - ;; "<body><blockquote><p>foo</p>\n</blockquote></body>", - ;; 'html->shtml' would mistakenly close 'blockquote' right - ;; before <p>. This patch removes 'p' from the - ;; 'parent-constraints' alist to fix that. - (substitute* "src/htmlprag.scm" - (("^[[:blank:]]*\\(p[[:blank:]]+\\. \\(body td th\\)\\).*") - "")) - #t)) - (add-before 'check 'skip-known-failure - (lambda _ - ;; XXX: The above change causes one test failure among - ;; the htmlprag tests. - (setenv "XFAIL_TESTS" "htmlprag.scm") - #t)))))))) - (define (normalize-language-code language) ;XXX: deduplicate ;; Normalize LANGUAGE. For instance, "zh_CN" becomes "zh-cn". (string-map (match-lambda @@ -224,7 +198,7 @@ key is an identifier and the associated value is the URL reference pointing to that identifier. The URL is constructed by concatenating BASE-URL to the actual file name." (define build - (with-extensions (list guile-lib/htmlprag-fixed) + (with-extensions (list guile-lib) (with-imported-modules '((guix build utils)) #~(begin (use-modules (guix build utils) @@ -236,6 +210,8 @@ actual file name." (ice-9 threads) (ice-9 pretty-print)) + (%strict-tokenizer? #t) + (define file-url (let ((prefix (string-append #$manual "/"))) (lambda (file) @@ -380,7 +356,7 @@ actual file name." to (1) add them a link to SYNTAX-CSS-URL, and (2) highlight the syntax of all its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')." (define build - (with-extensions (list guile-lib/htmlprag-fixed guile-syntax-highlight) + (with-extensions (list guile-lib guile-syntax-highlight) (with-imported-modules '((guix build utils)) #~(begin (use-modules (htmlprag) @@ -394,6 +370,8 @@ its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')." (ice-9 threads) (ice-9 vlist)) + (%strict-tokenizer? #t) + (define (pair-open/close lst) ;; Pair 'open' and 'close' tags produced by 'highlights' and ;; produce nested 'paren' tags instead. diff --git a/doc/contributing.texi b/doc/contributing.texi index 3baedb0654..58c4dafb9b 100644 --- a/doc/contributing.texi +++ b/doc/contributing.texi @@ -432,7 +432,7 @@ upstream source. @subsection Package Naming @cindex package name -A package has actually two names associated with it: +A package actually has two names associated with it. First, there is the name of the @emph{Scheme variable}, the one following @code{define-public}. By this name, the package can be made known in the Scheme code, for instance as input to another package. Second, there is @@ -1016,7 +1016,6 @@ your @code{operating-system} configuration: (service qemu-binfmt-service-type (qemu-binfmt-configuration (platforms (lookup-qemu-platforms "arm" "aarch64")) - (guix-support? #t))) @end lisp Then reconfigure your system. @@ -1374,6 +1373,12 @@ you're confident, it's OK to commit. That last part is subject to being adjusted, allowing individuals to commit directly on non-controversial changes on parts they’re familiar with. +In order to reduce the possibility of mistakes, committers will have +their Savannah account removed from the Guix Savannah project and their +key removed from @file{.guix-authorizations} after 12 months of +inactivity; they can ask to regain commit access by emailing the +maintainers, without going through the vouching process. + One last thing: the project keeps moving forward because committers not only push their own awesome changes, but also offer some of their time @emph{reviewing} and pushing other people's changes. As a committer, diff --git a/doc/guix.texi b/doc/guix.texi index 17636d9451..6464fa32cb 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -32,7 +32,7 @@ Copyright @copyright{} 2015, 2016, 2017, 2019, 2020, 2021 Leo Famulari@* Copyright @copyright{} 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus@* Copyright @copyright{} 2016 Ben Woodcroft@* Copyright @copyright{} 2016, 2017, 2018 Chris Marusich@* -Copyright @copyright{} 2016, 2017, 2018, 2019, 2020 Efraim Flashner@* +Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner@* Copyright @copyright{} 2016 John Darrington@* Copyright @copyright{} 2016, 2017 Nikita Gillmann@* Copyright @copyright{} 2016, 2017, 2018, 2019, 2020 Jan Nieuwenhuizen@* @@ -86,6 +86,7 @@ Copyright @copyright{} 2020 raingloom@* Copyright @copyright{} 2020 Daniel Brooks@* Copyright @copyright{} 2020 John Soo@* Copyright @copyright{} 2020 Jonathan Brielmaier@* +Copyright @copyright{} 2020 Edgar Vincent@* Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or @@ -830,7 +831,8 @@ Guile,, gnutls-guile, GnuTLS-Guile}); @item @uref{https://notabug.org/guile-sqlite3/guile-sqlite3, Guile-SQLite3}, version 0.1.0 or later; -@item @uref{https://notabug.org/guile-zlib/guile-zlib, Guile-zlib}; +@item @uref{https://notabug.org/guile-zlib/guile-zlib, Guile-zlib}, +version 0.1.0 or later; @item @uref{https://notabug.org/guile-lzlib/guile-lzlib, Guile-lzlib}; @item @uref{https://www.nongnu.org/guile-avahi/, Guile-Avahi}; @item @@ -862,6 +864,11 @@ substitutes (@pxref{Invoking guix publish}). the @code{crate} importer (@pxref{Invoking guix import}). @item +@uref{https://www.nongnu.org/guile-lib/doc/ref/htmlprag/, Guile-Lib} for +the @code{go} importer (@pxref{Invoking guix import}) and for some of +the ``updaters'' (@pxref{Invoking guix refresh}). + +@item When @url{http://www.bzip.org, libbz2} is available, @command{guix-daemon} can use it to compress build logs. @end itemize @@ -2625,7 +2632,7 @@ Note that @command{sudo guix} runs your user's @command{guix} command and explicitly run root's @command{guix}, type @command{sudo -i guix @dots{}}. The difference matters here, because @command{guix pull} updates -the @command{guix} command and package definitions only for the user it is ran +the @command{guix} command and package definitions only for the user it is run as. This means that if you choose to use @command{guix system reconfigure} in root's login shell, you'll need to @command{guix pull} separately. @end quotation @@ -2745,7 +2752,11 @@ you can go ahead and install it (run this command as a regular user, guix install emacs @end example -You've installed your first package, congrats! In the process, you've +@cindex profile +You've installed your first package, congrats! The package is now +visible in your default @dfn{profile}, @file{$HOME/.guix-profile}---a +profile is a directory containing installed packages. +In the process, you've probably noticed that Guix downloaded pre-built binaries; or, if you explicitly chose to @emph{not} use pre-built binaries, then probably Guix is still building software (@pxref{Substitutes}, for more info). @@ -3053,9 +3064,13 @@ retaining precise @dfn{provenance tracking} of the software. @cindex removing packages @cindex package installation @cindex package removal +@cindex profile The @command{guix package} command is the tool that allows users to install, upgrade, and remove packages, as well as rolling back to -previous configurations. It operates only on the user's own profile, +previous configurations. These operations work on a user +@dfn{profile}---a directory of installed packages. Each user has a +default profile in @file{$HOME/.guix-profile}. +The command operates only on the user's own profile, and works with normal user privileges (@pxref{Features}). Its syntax is: @@ -3380,6 +3395,7 @@ variable, even though, taken individually, neither @file{foo} nor @file{bar} would lead to that recommendation. +@cindex profile, choosing @item --profile=@var{profile} @itemx -p @var{profile} Use @var{profile} instead of the user's default profile. @@ -5253,7 +5269,7 @@ The meta-data file should contain a simple S-expression like this: (version 0) (dependencies (channel - (name 'some-collection) + (name some-collection) (url "https://example.org/first-collection.git") ;; The 'introduction' bit below is optional: you would @@ -5264,7 +5280,7 @@ The meta-data file should contain a simple S-expression like this: (commit "a8883b58dc82e167c96506cf05095f37c2c2c6cd") (signer "CABB A931 C0FF EEC6 900D 0CFB 090B 1199 3D9A EBB5")))) (channel - (name 'some-other-collection) + (name some-other-collection) (url "https://example.org/second-collection.git") (branch "testing")))) @end lisp @@ -7445,8 +7461,10 @@ supports builds of packages using Cargo, the build tool of the It adds @code{rustc} and @code{cargo} to the set of inputs. A different Rust package can be specified with the @code{#:rust} parameter. -Regular cargo dependencies should be added to the package definition via the -@code{#:cargo-inputs} parameter as a list of name and spec pairs, where the +Regular cargo dependencies should be added to the package definition similarly +to other packages; those needed only at build time to native-inputs, others to +inputs. If you need to add source-only crates then you should add them to via +the @code{#:cargo-inputs} parameter as a list of name and spec pairs, where the spec can be a package or a source definition. Note that the spec must evaluate to a path to a gzipped tarball which includes a @code{Cargo.toml} file at its root, or it will be ignored. Similarly, cargo dev-dependencies @@ -7457,8 +7475,11 @@ In its @code{configure} phase, this build system will make any source inputs specified in the @code{#:cargo-inputs} and @code{#:cargo-development-inputs} parameters available to cargo. It will also remove an included @code{Cargo.lock} file to be recreated by @code{cargo} during the -@code{build} phase. The @code{install} phase installs the binaries -defined by the crate. +@code{build} phase. The @code{package} phase will run @code{cargo package} +to create a source crate for future use. The @code{install} phase installs +the binaries defined by the crate. Unless @code{install-source? #f} is +defined it will also install a source crate repository of itself and unpacked +sources, to ease in future hacking on rust packages. @end defvr @defvr {Scheme Variable} chicken-build-system @@ -7730,13 +7751,34 @@ julia} packages, which essentially is similar to running @samp{julia -e Tests are run by calling @code{/test/runtests.jl}. The Julia package name is read from the file @file{Project.toml}. This -value can be overridden by passing the argument @code{#:julia-file-name} +value can be overridden by passing the argument @code{#:julia-package-name} (which must be correctly capitalized). -For packages requiring shared library dependencies, you may need to write the -@file{/deps/deps.jl} file manually. It's usually a line of @code{const -variable = /gnu/store/library.so} for each dependency, plus a void function -@code{check_deps() = nothing}. +Julia packages usually manage they binary dependencies via +@code{JLLWrappers.jl}, a Julia package that creates a module (named +after the wrapped library followed by @code{_jll.jl}. + +To add the binary path @code{_jll.jl} packages, you need to patch the +files under @file{src/wrappers/}, replacing the call to the macro +@code{JLLWrappers.@@generate_wrapper_header}, adding as a secound +argument containing the store path the binary. + +As an example, in the MbedTLS Julia package, we add a build phase +(@pxref{Build Phases}) to insert the absolute file name of the wrapped +MbedTLS package: + +@lisp +(add-after 'unpack 'override-binary-path + (lambda* (#:key inputs #:allow-other-keys) + (for-each (lambda (wrapper) + (substitute* wrapper + (("generate_wrapper_header.*") + (string-append + "generate_wrapper_header(\"MbedTLS\", \"" + (assoc-ref inputs "mbedtls-apache") "\")\n")))) + ;; There's a Julia file for each platform, override them all. + (find-files "src/wrappers/" "\\.jl$")))) +@end lisp Some older packages that aren't using @file{Package.toml} yet, will require this file to be created, too. The function @code{julia-create-package-toml} @@ -11503,6 +11545,28 @@ Select the given repository (a repository name). Possible values include: of coq packages. @end itemize @end table + +@item go +@cindex go +Import metadata for a Go module using +@uref{https://proxy.golang.org, proxy.golang.org}. + +This importer is highly experimental. See the source code for more info +about the current state. + +@example +guix import go gopkg.in/yaml.v2 +@end example + +Additional options include: + +@table @code +@item --recursive +@itemx -r +Traverse the dependency graph of the given upstream package recursively +and generate package expressions for all those packages that are not yet +in Guix. +@end table @end table The structure of the @command{guix import} code is modular. It would be @@ -11548,10 +11612,10 @@ Consider the packages specified, and all the packages upon which they depend. @example $ guix refresh --recursive coreutils -gnu/packages/acl.scm:35:2: warning: no updater for acl -gnu/packages/m4.scm:30:12: info: 1.4.18 is already the latest version of m4 +gnu/packages/acl.scm:40:13: acl would be upgraded from 2.2.53 to 2.3.1 +gnu/packages/m4.scm:30:12: 1.4.18 is already the latest version of m4 gnu/packages/xml.scm:68:2: warning: no updater for expat -gnu/packages/multiprecision.scm:40:12: info: 6.1.2 is already the latest version of gmp +gnu/packages/multiprecision.scm:40:12: 6.1.2 is already the latest version of gmp @dots{} @end example @@ -11674,6 +11738,9 @@ the updater for @uref{https://www.stackage.org, Stackage} packages. the updater for @uref{https://crates.io, Crates} packages. @item launchpad the updater for @uref{https://launchpad.net, Launchpad} packages. +@item generic-html +a generic updater that crawls the HTML page where the source tarball of +the package is hosted, when applicable. @end table For instance, the following command only checks for updates of Emacs @@ -11788,7 +11855,7 @@ gpg --no-default-keyring --keyring mykeyring.kbx \ --recv-keys @value{OPENPGP-SIGNING-KEY-ID} @end example -@ref{GPG Configuration Options, @option{--keyring},, gnupg, Using the GNU +@xref{GPG Configuration Options, @option{--keyring},, gnupg, Using the GNU Privacy Guard}, for more information on GPG's @option{--keyring} option. @item --key-download=@var{policy} @@ -19787,34 +19854,6 @@ Additional command line options to pass to @code{memcached}. @end table @end deftp -@subsubheading MongoDB - -@defvr {Scheme Variable} mongodb-service-type -This is the service type for @uref{https://www.mongodb.com/, MongoDB}. -The value for the service type is a @code{mongodb-configuration} object. -@end defvr - -@lisp -(service mongodb-service-type) -@end lisp - -@deftp {Data Type} mongodb-configuration -Data type representing the configuration of mongodb. - -@table @asis -@item @code{mongodb} (default: @code{mongodb}) -The MongoDB package to use. - -@item @code{config-file} (default: @code{%default-mongodb-configuration-file}) -The configuration file for MongoDB. - -@item @code{data-directory} (default: @code{"/var/lib/mongodb"}) -This value is used to create the directory, so that it exists and is -owned by the mongodb user. It should match the data-directory which -MongoDB is configured to use through the configuration file. -@end table -@end deftp - @subsubheading Redis @defvr {Scheme Variable} redis-service-type @@ -27056,9 +27095,9 @@ The verbosity level of the daemon. @subsection Continuous Integration @cindex continuous integration -@uref{https://git.savannah.gnu.org/cgit/guix/guix-cuirass.git, Cuirass} is a -continuous integration tool for Guix. It can be used both for development and -for providing substitutes to others (@pxref{Substitutes}). +@uref{https://guix.gnu.org/cuirass/, Cuirass} is a continuous +integration tool for Guix. It can be used both for development and for +providing substitutes to others (@pxref{Substitutes}). The @code{(gnu services cuirass)} module provides the following service. @@ -27067,45 +27106,44 @@ The type of the Cuirass service. Its value must be a @code{cuirass-configuration} object, as described below. @end defvr -To add build jobs, you have to set the @code{specifications} field of the -configuration. Here is an example of a service that polls the Guix repository -and builds the packages from a manifest. Some of the packages are defined in -the @code{"custom-packages"} input, which is the equivalent of -@env{GUIX_PACKAGE_PATH}. +To add build jobs, you have to set the @code{specifications} field of +the configuration. For instance, the following example will build all +the packages provided by the @code{my-channel} channel. @lisp (define %cuirass-specs - #~(list - '((#:name . "my-manifest") - (#:load-path-inputs . ("guix")) - (#:package-path-inputs . ("custom-packages")) - (#:proc-input . "guix") - (#:proc-file . "build-aux/cuirass/gnu-system.scm") - (#:proc . cuirass-jobs) - (#:proc-args . ((subset . "manifests") - (systems . ("x86_64-linux")) - (manifests . (("config" . "guix/manifest.scm"))))) - (#:inputs . (((#:name . "guix") - (#:url . "git://git.savannah.gnu.org/guix.git") - (#:load-path . ".") - (#:branch . "master") - (#:no-compile? . #t)) - ((#:name . "config") - (#:url . "https://git.example.org/config.git") - (#:load-path . ".") - (#:branch . "master") - (#:no-compile? . #t)) - ((#:name . "custom-packages") - (#:url . "https://git.example.org/custom-packages.git") - (#:load-path . ".") - (#:branch . "master") - (#:no-compile? . #t))))))) + #~(list (specification + (name "my-channel") + (build '(channels my-channel)) + (channels + (cons (channel + (name 'my-channel) + (url "https://my-channel.git")) + %default-channels))))) (service cuirass-service-type (cuirass-configuration (specifications %cuirass-specs))) @end lisp +To build the @code{linux-libre} package defined by the default Guix +channel, one can use the following configuration. + +@lisp +(define %cuirass-specs + #~(list (specification + (name "my-linux") + (build '(packages "linux-libre"))))) + +(service cuirass-service-type + (cuirass-configuration + (specifications %cuirass-specs))) +@end lisp + +The other configuration possibilities, as well as the specification +record itself are described in the Cuirass manual +(@pxref{Specifications,,, cuirass, Cuirass}). + While information related to build jobs is located directly in the specifications, global settings for the @command{cuirass} process are accessible in other @code{cuirass-configuration} fields. @@ -27114,20 +27152,15 @@ accessible in other @code{cuirass-configuration} fields. Data type representing the configuration of Cuirass. @table @asis +@item @code{cuirass} (default: @code{cuirass}) +The Cuirass package to use. + @item @code{log-file} (default: @code{"/var/log/cuirass.log"}) Location of the log file. @item @code{web-log-file} (default: @code{"/var/log/cuirass-web.log"}) Location of the log file used by the web interface. -@item @code{queries-log-file} (default: @code{#f}) -Location of the SQL queries log file. By default, SQL queries logging is -disabled. - -@item @code{web-queries-log-file} (default: @code{#f}) -Location of the web SQL queries log file. By default, web SQL queries -logging is disabled. - @item @code{cache-directory} (default: @code{"/var/cache/cuirass"}) Location of the repository cache. @@ -27141,17 +27174,19 @@ Owner's group of the @code{cuirass} process. Number of seconds between the poll of the repositories followed by the Cuirass jobs. -@item @code{queue-size} (default: @code{1}) -Size of the database writer queue. +@item @code{parameters} (default: @code{#f}) +Read parameters from the given @var{parameters} file. The supported +parameters are described here (@pxref{Parameters,,, cuirass, Cuirass}). -@item @code{database} (default: @code{"/var/lib/cuirass/cuirass.db"}) -Location of sqlite database which contains the build results and previously -added specifications. +@item @code{remote-server} (default: @code{#f}) +A @code{cuirass-remote-server-configuration} record to use the build +remote mechanism or @code{#f} to use the default build mechanism. -@item @code{ttl} (default: @code{(* 30 24 3600)}) -Specifies the time-to-live (TTL) in seconds of garbage collector roots that -are registered for build results. This means that build results are protected -from garbage collection for at least @var{ttl} seconds. +@item @code{database} (default: @code{"dbname=cuirass host=/var/run/postgresql"}) +Use @var{database} as the database containing the jobs and the past +build results. Since Cuirass uses PostgreSQL as a database engine, +@var{database} must be a string such as @code{"dbname=cuirass +host=localhost"}. @item @code{port} (default: @code{8081}) Port number used by the HTTP server. @@ -27161,11 +27196,9 @@ Listen on the network interface for @var{host}. The default is to accept connections from localhost. @item @code{specifications} (default: @code{#~'()}) -A gexp (@pxref{G-Expressions}) that evaluates to a list of specifications, -where a specification is an association list -(@pxref{Associations Lists,,, guile, GNU Guile Reference Manual}) whose -keys are keywords (@code{#:keyword-example}) as shown in the example -above. +A gexp (@pxref{G-Expressions}) that evaluates to a list of +specifications records. The specification record is described in the +Cuirass manual (@pxref{Specifications,,, cuirass, Cuirass}). @item @code{use-substitutes?} (default: @code{#f}) This allows using substitutes to avoid building every dependencies of a job @@ -27181,122 +27214,102 @@ 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 @end deftp -@cindex simple cuirass -@subsubheading Simple Cuirass +@cindex remote build +@subsubheading Cuirass remote building -The Cuirass service configuration described above can be a little -intimidating. In particular, getting the right @code{specifications} -can prove difficult. The @code{simple-cuirass-configuration->specs} -procedure offers a way to generate those @code{specifications} and thus -setup a continuous integration server more readily. +Cuirass supports two mechanisms to build derivations. -@deffn {Scheme Procedure} simple-cuirass-configuration->specs @var{configuration} -This procedure takes a @code{simple-cuirass-configuration} record as -argument and returns the corresponding Cuirass specifications gexp. -@end deffn +@itemize +@item Using the local Guix daemon. +This is the default build mechanism. Once the build jobs are +evaluated, they are sent to the local Guix daemon. Cuirass then +listens to the Guix daemon output to detect the various build events. -@deftp {Data Type} simple-cuirass-configuration -Data type representing the configuration of a simple Cuirass instance. +@item Using the remote build mechanism. +The build jobs are not submitted to the local Guix daemon. Instead, a +remote server dispatches build requests to the connect remote workers, +according to the build priorities. -@table @asis -@item @code{build} (default: @code{all}) -The packages to be built by Cuirass. It defaults to @code{all}, which -means that all the discovered packages in the subsequent @code{channels} -field are to be selected. +@end itemize + +To enable this build mode a @code{cuirass-remote-server-configuration} +record must be passed as @code{remote-server} argument of the +@code{cuirass-configuration} record. The +@code{cuirass-remote-server-configuration} record is described below. + +This build mode scales way better than the default build mode. This is +the build mode that is used on the GNU Guix build farm at +@url{https://ci.guix.gnu.org}. It should be preferred when using +Cuirass to build large amount of packages. -It is also possible to set this field to a list of @code{build-manifest} -records, so that only the packages that are part of the declared -manifests are built. This record is described below. +@deftp {Data Type} cuirass-remote-server-configuration +Data type representing the configuration of the Cuirass remote-server. -@deftp {Data Type} build-manifest @table @asis -@item @code{channel-name} -The name of the channel where the manifest is located. +@item @code{backend-port} (default: @code{5555}) +The TCP port for communicating with @code{remote-worker} processes +using ZMQ. It defaults to @code{5555}. -@item @code{manifest} -The manifest path inside the channel. +@item @code{log-port} (default: @code{5556}) +The TCP port of the log server. It defaults to @code{5556}. -@end table -@end deftp +@item @code{publish-port} (default: @code{5557}) +The TCP port of the publish server. It defaults to @code{5557}. -@item @code{channels} (default: @code{%default-channels}) -The channels to be fetched by Cuirass (@pxref{Channels}). +@item @code{log-file} (default: @code{"/var/log/cuirass-remote-server.log"}) +Location of the log file. -@item @code{non-package-channels} (default: @code{'()}) -List the channel names that must not be searched for packages. That is -often the case for the channel containing the manifest. +@item @code{cache} (default: @code{"/var/cache/cuirass/remote"}) +Use @var{cache} directory to cache build log files. -@item @code{systems} (default: @code{(list (%current-system))}) -Build every discovered package for each system in this list. By default -only the current system is selected. +@item @code{trigger-url} (default: @code{#f}) +Once a substitute is successfully fetched, trigger substitute baking at +@var{trigger-url}. + +@item @code{public-key} +@item @code{private-key} +Use the specific @var{file}s as the public/private key pair used to sign +the store items being published. @end table @end deftp -Here is an example of how to setup a Cuirass instance that builds all -the packages declared by Guix and a user repository. The package list -is re-evaluated each time a commit is pushed in one of the declared -channels. +At least one remote worker must also be started on any machine of the +local network to actually perform the builds and report their status. -@lisp -(service cuirass-service-type - (cuirass-configuration - (specifications - (simple-cuirass-configuration->specs - (simple-cuirass-configuration - (build 'all) - (channels (cons (channel - (name 'my-guix) - (url "https://my-git-repo/guix.git")) - %default-channels))))))) -@end lisp +@deftp {Data Type} cuirass-remote-worker-configuration +Data type representing the configuration of the Cuirass remote-worker. -In the same spirit, this builds all the packages that are part of the -@code{guix} or @code{my-guix} channels and declared in the manifest -located in the @code{conf} channel. +@table @asis +@item @code{cuirass} (default: @code{cuirass}) +The Cuirass package to use. -@lisp -(service cuirass-service-type - (cuirass-configuration - (specifications - (simple-cuirass-configuration->specs - (simple-cuirass-configuration - (build (list - (build-manifest - (channel-name 'conf) - (manifest "guix/manifest.scm")))) - (channels (cons* (channel - (name 'my-guix) - (url "https://my-git-repo/guix.git")) - (channel - (name 'conf) - (url "https://my-git-repo/conf.git")) - %default-channels)) - (non-package-channels '(conf))))))) -@end lisp - -Finally, @code{simple-cuirass-services} takes as a second optional -argument a @code{cuirass-configuration} record. It can be used to -customize the configuration of the Cuirass instance. - -@lisp -(simple-cuirass-services - (simple-cuirass-configuration - (build 'all) - (channels (cons (channel - (name 'my-guix) - (url "https://my-git-repo/guix.git")) - %default-channels)) - (non-package-channels '(conf))) - (cuirass-configuration - (inherit %default-cuirass-config) - (host "0.0.0.0"))) ;listen on all interfaces. -@end lisp +@item @code{workers} (default: @code{1}) +Start @var{workers} parallel workers. + +@item @code{server} (default: @code{#f}) +Do not use Avahi discovery and connect to the given @code{server} IP +address instead. + +@item @code{systems} (default: @code{(list (%current-system))}) +Only request builds for the given @var{systems}. + +@item @code{log-file} (default: @code{"/var/log/cuirass-remote-worker.log"}) +Location of the log file. + +@item @code{publish-port} (default: @code{5558}) +The TCP port of the publish server. It defaults to @code{5558}. + +@item @code{public-key} +@item @code{private-key} +Use the specific @var{file}s as the public/private key pair used to sign +the store items being published. + +@end table +@end deftp @node Power Management Services @subsection Power Management Services @@ -28700,13 +28713,6 @@ This is the configuration for the @code{qemu-binfmt} service. The list of emulated QEMU platforms. Each item must be a @dfn{platform object} as returned by @code{lookup-qemu-platforms} (see below). -@item @code{guix-support?} (default: @code{#t}) -When it is true, QEMU and all its dependencies are added to the build -environment of @command{guix-daemon} (@pxref{Invoking guix-daemon, -@option{--chroot-directory} option}). This allows the @code{binfmt_misc} -handlers to be used within the build environment, which in turn means -that you can transparently build programs for another architecture. - For example, let's suppose you're on an x86_64 machine and you have this service: @@ -28714,7 +28720,6 @@ service: (service qemu-binfmt-service-type (qemu-binfmt-configuration (platforms (lookup-qemu-platforms "arm")) - (guix-support? #t))) @end lisp You can run: @@ -28729,10 +28734,6 @@ build}, transparently using QEMU to emulate the ARMv7 CPU@. Pretty handy if you'd like to test a package build for an architecture you don't have access to! -When @code{guix-support?} is set to @code{#f}, programs for other -architectures can still be executed transparently, but invoking commands -like @command{guix build -s armhf-linux @dots{}} will fail. - @item @code{qemu} (default: @code{qemu}) The QEMU package to use. @end table @@ -31382,6 +31383,21 @@ instantiated as: (sysctl-configuration (settings '(("net.ipv4.ip_forward" . "1"))))) @end lisp + +Since @code{sysctl-service-type} is used in the default lists of +services, @code{%base-services} and @code{%desktop-services}, you can +use @code{modify-services} to change its configuration and add the +kernel parameters that you want (@pxref{Service Reference, +@code{modify-services}}). + +@lisp +(modify-services %base-services + (sysctl-service-type config => + (sysctl-configuration + (settings (append '(("net.ipv4.ip_forward" . "1")) + %default-sysctl-settings))))) +@end lisp + @end defvr @deftp {Data Type} sysctl-configuration @@ -31391,11 +31407,16 @@ The data type representing the configuration of @command{sysctl}. @item @code{sysctl} (default: @code{(file-append procps "/sbin/sysctl"}) The @command{sysctl} executable to use. -@item @code{settings} (default: @code{'()}) +@item @code{settings} (default: @code{%default-sysctl-settings}) An association list specifies kernel parameters and their values. @end table @end deftp +@defvr {Scheme Variable} %default-sysctl-settings +An association list specifying the default @command{sysctl} parameters +on Guix System. +@end defvr + @cindex pcscd @subsubheading PC/SC Smart Card Daemon Service @@ -34044,6 +34065,38 @@ This is the list of modules that must be in scope when @code{start} and @end table @end deftp +The example below defines a Shepherd service that spawns +@command{syslogd}, the system logger from the GNU Networking Utilities +(@pxref{syslogd invocation, @command{syslogd},, inetutils, GNU +Inetutils}): + +@example +(let ((config (plain-file "syslogd.conf" "@dots{}"))) + (shepherd-service + (documentation "Run the syslog daemon (syslogd).") + (provision '(syslogd)) + (requirement '(user-processes)) + (start #~(make-forkexec-constructor + (list #$(file-append inetutils "/libexec/syslogd") + "--rcfile" #$config) + #:pid-file "/var/run/syslog.pid")) + (stop #~(make-kill-destructor)))) +@end example + +Key elements in this example are the @code{start} and @code{stop} +fields: they are @dfn{staged} code snippets that use the +@code{make-forkexec-constructor} procedure provided by the Shepherd and +its dual, @code{make-kill-destructor} (@pxref{Service De- and +Constructors,,, shepherd, The GNU Shepherd Manual}). The @code{start} +field will have @command{shepherd} spawn @command{syslogd} with the +given option; note that we pass @code{config} after @option{--rcfile}, +which is a configuration file declared above (contents of this file are +omitted). Likewise, the @code{stop} field tells how this service is to +be stopped; in this case, it is stopped by making the @code{kill} system +call on its PID@. Code staging is achieved using G-expressions: +@code{#~} stages code, while @code{#$} ``escapes'' back to host code +(@pxref{G-Expressions}). + @deftp {Data Type} shepherd-action This is the data type that defines additional actions implemented by a Shepherd service (see above). diff --git a/etc/guix-install.sh b/etc/guix-install.sh index 94c04aa646..c84e7b7577 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -8,6 +8,7 @@ # Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com> # Copyright © 2020 Daniel Brooks <db48x@db48x.net> # Copyright © 2021 Jakub Kądziołka <kuba@kadziolka.net> +# Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> # # This file is part of GNU Guix. # @@ -187,6 +188,9 @@ chk_sys_arch() armv7l) local arch=armhf ;; + ppc64le | powerpc64le) + local arch=powerpc64le + ;; *) _err "${ERR}Unsupported CPU type: ${arch}" exit 1 diff --git a/etc/news.scm b/etc/news.scm index ff90afc8dc..deedc69f6e 100644 --- a/etc/news.scm +++ b/etc/news.scm @@ -1,16 +1,17 @@ ;; GNU Guix news, for use by 'guix pull'. ;; ;; Copyright © 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> -;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;; Copyright © 2019–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;; Copyright © 2019, 2020 Miguel Ángel Arruga Vivas <rosen644835@gmail.com> ;; Copyright © 2019, 2020 Konrad Hinsen <konrad.hinsen@fastmail.net> -;; Copyright © 2019, 2020 Julien Lepiller <julien@lepiller.eu> +;; Copyright © 2019, 2020, 2021 Julien Lepiller <julien@lepiller.eu> ;; Copyright © 2019, 2020, 2021 Florian Pelz <pelzflorian@pelzflorian.de> ;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;; Copyright © 2020, 2021 Mathieu Othacehe <m.othacehe@gmail.com> ;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;; Copyright © 2021 Leo Famulari <leo@famulari.name> +;; Copyright © 2021 Zhu Zihao <all_but_last@163.com> ;; ;; Copying and distribution of this file, with or without modification, are ;; permitted in any medium without royalty provided the copyright notice and @@ -19,6 +20,239 @@ (channel-news (version 0) + (entry (commit "9ade2b720af91acecf76278b4d9b99ace406781e") + (title + (en "Update on previous @command{guix-daemon} local privilege escalation") + (de "Nachtrag zur lokalen Rechteausweitung bei @command{guix-daemon}") + (nl "Aanvulling bij escalatie van bevoegdheden via @command{guix-daemon}")) + (body + (en "The previous news item described a potential local privilege +escalation in @command{guix-daemon}, and claimed that systems with the Linux +@uref{https://www.kernel.org/doc/Documentation/sysctl/fs.txt, +``protected hardlink''} feature enabled were unaffected by the vulnerability. + +This is not entirely correct. Exploiting the bug on such systems is harder, +but not impossible. To avoid unpleasant surprises, all users are advised to +upgrade @command{guix-daemon}. Run @command{info \"(guix) Upgrading Guix\"} +for info on how to do that. See +@uref{https://guix.gnu.org/en/blog/2021/risk-of-local-privilege-escalation-via-guix-daemon/} +for more information on this bug.") + (de "In der letzten Neuigkeit wurde eine mögliche lokale +Rechteausweitung im @command{guix-daemon} beschrieben und behauptet, dass +Systeme, auf denen Linux’ +@uref{https://www.kernel.org/doc/Documentation/sysctl/fs.txt, +„Geschützte-Hardlinks“-Funktionalität} aktiviert ist, von der Sicherheitslücke +nicht betroffen seien. + +Das stimmt nicht ganz. Die Lücke auf solchen Systemen auszunutzen, ist +schwerer, aber nicht unmöglich. Um unangenehme Überraschungen zu vermeiden, +empfehlen wir allen Nutzern, @command{guix-daemon} zu aktualisieren. Führen +Sie @command{info \"(guix.de) Aktualisieren von Guix\"} aus, um zu erfahren, +wie Sie ihn aktualisieren können. Siehe +@uref{https://guix.gnu.org/de/blog/2021/risk-of-local-privilege-escalation-via-guix-daemon/} +für mehr Informationen zu diesem Fehler.") + (nl "Het vorige nieuwsbericht beschreef een beveiligingsprobleem in +@command{guix-daemon} dat kan leiden tot de escalatie van lokale bevoegdheden. +Het bericht stelde dat machines waarop de +@uref{https://www.kernel.org/doc/Documentation/sysctl/fs.txt, +``protected hardlink''}-optie van Linux is inschakeld niet kwetsbaar zijn. + +Dit is niet volledig juist. De optie maakt het uitbuiten van de fout +moeilijker maar niet onmogelijk. Om onaangename verrassingen te voorkomen +is het voor iedereen aangeraden om @command{guix-daemon} op te waarderen. +Voer @command{info \"(guix) Upgrading Guix\"} uit voor meer informatie +daarover. Lees +@uref{https://guix.gnu.org/en/blog/2021/risk-of-local-privilege-escalation-via-guix-daemon/} +voor meer informatie over het probleem."))) + + (entry (commit "ec7fb669945bfb47c5e1fdf7de3a5d07f7002ccf") + (title + (en "Risk of local privilege escalation @i{via} @command{guix-daemon}") + (de "Risiko lokaler Rechteausweitung über @command{guix-daemon}") + (fr "Risque d'élévation locale de privilèges @i{via} @command{guix-daemon}") + (nl "Risico op escalatie van bevoegdheden via @command{guix-daemon}")) + (body + (en "A security vulnerability that can lead to local privilege +escalation has been found in @command{guix-daemon}. It affects multi-user +setups in which @command{guix-daemon} runs locally. + +It does @emph{not} affect multi-user setups where @command{guix-daemon} runs +on a separate machine and is accessed over the network, @i{via} +@env{GUIX_DAEMON_SOCKET}, as is customary on cluster setups. Machines where +the Linux @uref{https://www.kernel.org/doc/Documentation/sysctl/fs.txt, +``protected hardlink''} feature is enabled, which is common, are also +unaffected---this is the case when the contents of +@file{/proc/sys/fs/protected_hardlinks} are @code{1}. + +The attack consists in having an unprivileged user spawn a build process, for +instance with @command{guix build}, that makes its build directory +world-writable. The user then creates a hardlink within the build directory +to a root-owned file from outside of the build directory, such as +@file{/etc/shadow}. If the user passed the @option{--keep-failed} option and +the build eventually fails, the daemon changes ownership of the whole build +tree, including the hardlink, to the user. At that point, the user has write +access to the target file. + +You are advised to upgrade @command{guix-daemon}. Run @command{info \"(guix) +Upgrading Guix\"}, for info on how to do that. See +@uref{https://issues.guix.gnu.org/47229} for more information on this bug.") + (de "Eine Sicherheitslücke, die zu einer lokalen Rechteausweitung +führen kann, wurde in @command{guix-daemon} gefunden. Sie betrifft +Mehrbenutzersysteme, auf denen @command{guix-daemon} lokal läuft. + +@emph{Nicht} betroffen sind Mehrbenutzersysteme, auf denen +@command{guix-daemon} auf einer separaten Maschine läuft und darauf über das +Netzwerk mittels @env{GUIX_DAEMON_SOCKET} zugegriffen wird, was auf +Rechen-Clustern üblich ist. Auch Maschinen, auf denen Linux’ +@uref{https://www.kernel.org/doc/Documentation/sysctl/fs.txt, +„Geschützte-Hardlinks“-Funktionalität} aktiviert ist@tie{}– was häufig der +Fall ist@tie{}–, sind nicht betroffen; sie ist aktiviert, wenn +@file{/proc/sys/fs/protected_hardlinks} den Inhalt @code{1} hat. + +Der Angriff besteht darin, dass ein unprivilegierter Benutzer einen +Erstellungsprozess startet, etwa mit @command{guix build}, der allen +Schreibberechtigung auf sein Erstellungsverzeichnis erteilt. In diesem +Erstellungsverzeichnis erzeugt der Benutzer nun eine harte Verknüpfung auf +eine Datei außerhalb des Erstellungsverzeichnisses, die dem +Administratornutzer root gehört, etwa @file{/etc/shadow}. Wenn der Nutzer die +Befehlszeilenoption @option{--keep-failed} angegeben hat und die Erstellung +irgendwann fehlschlägt, trägt der Daemon als Besitzer des gesamten +Erstellungsverzeichnisses den Benutzer ein, Hardlink eingeschlossen. Jetzt +hat der Benutzer Schreibzugriff auf die Zieldatei bekommen. + +Wir empfehlen, dass Sie @command{guix-daemon} aktualisieren. Führen Sie +@command{info \"(guix.de) Aktualisieren von Guix\"} aus, um zu erfahren, wie +Sie ihn aktualisieren können. Siehe @uref{https://issues.guix.gnu.org/47229} +für mehr Informationen zu diesem Fehler.") + (fr "Une faille de sécurité pouvant mener à une élévation locale de +privilèges a été trouvée dans @command{guix-daemon}. Elle touche les +installations multi-utilisateur·ices dans lesquelles @command{guix-daemon} +tourne en local. + +Elle @emph{n'affecte pas} les installations où @command{guix-daemon} tourne +sur une machine séparée et qu'on y accède à travers le réseau, @i{via} +@env{GUIX_DAEMON_SOCKET}, comme c'est typiquement le cas sur les grappes de +calcul (@i{clusters}). Les machines où les +@uref{https://www.kernel.org/doc/Documentation/sysctl/fs.txt, ``liens +protégés''} de Linux sont activés, ce qui est courant, ne sont pas non plus +touchées ; cette fonctionnalité est activée si le contenu de +@file{/proc/sys/fs/protected_hardlinks} est @code{1}. + +Pour mener cette attaque, un·e utilisateur·rice démarre un processus de +compilation, par exemple avec @command{guix build}, qui rend le répertoire de +compilation inscriptible pour tout le monde. La personne créée ensuite un +lien dur (@i{hard link}) dans ce répertoire vers un fichier appartenant à +@code{root}, tel que @file{/etc/shadow}. Si on a passé l'option +@option{--keep-failed} et que la compilation finit par échouer, le démon met +l'utilisateur·rice appelant·e comme propriétaire de l'ensemble du répertoire +de compilation, y compris le lien. À ce stade, cette personne a accès en +écriture sur le fichier cible. + +Nous conseillons de mettre à jour @command{guix-daemon}. Lancer @command{info +\"(guix.fr) Mettre à niveau Guix\"} pour voir comment faire. Voir +@uref{https://issues.guix.gnu.org/47229} pour plus d'informations sur cette +faille.") + (nl "In @command{guix-daemon} werd een beveiligingsprobleem +gevonden dat kan leiden tot de escalatie van lokale bevoegdheden. Het +probleem doet zich voor bij installaties met meerdere gebruikers waarop een +lokale @command{guix-daemon} draait. + +Het heeft @emph{geen} invloed op systemen met meerdere gebruikers waarbij de +@command{guix-daemon} op een afzonderlijke machine draait en via +@env{GUIX_DAEMON_SOCKET} over het netwerk wordt aangesproken, zoals +gebruikelijk bij computerclusters. Ook machines waarop de +@uref{https://www.kernel.org/doc/Documentation/sysctl/fs.txt, +``protected hardlink''}-optie van Linux is inschakeld, wat vaak het geval is, +zijn niet kwetsbaar. + +De aanval bestaat erin dat een gebruiker zonder privileges een bouwproces +opstart, bijvoorbeeld met @command{guix build}, dat zijn werkmap beschrijfbaar +maakt voor alle gebruikers. Vervolgens maakt de gebruiker vanuit deze map een +harde link naar een bestand erbuiten met @code{root} als eigenaar, zoals +@file{/etc/shadow}. Als de gebruiker de @option{--keep-failed}-optie opgaf +en de bouw faalt, maakt @command{guix-daemon} de gebruiker eigenaar van de +volledige inhoud van de werkmap, met inbegrip van de harde link. Op dat +moment bezit de gebruiker schrijfrechten over het doelbestand. + +Het is aangeraden om @command{guix-daemon} op te waarderen. Voer +@command{info \"(guix) Upgrading Guix\"} uit voor meer informatie daarover. +Lees @uref{https://issues.guix.gnu.org/47229} voor meer informatie over het +probleem."))) + + (entry (commit "77c2f4e2068ebec3f384c826c5a99785125ff72c") + (title + (en "@code{qemu-binfmt-service-type} is usable for any container") + (de "@code{qemu-binfmt-service-type} funktioniert mit jedem Container") + (fr "@code{qemu-binfmt-service-type} fonctionne avec tous les conteneurs")) + (body + (en "The service now makes use of the statically built QEMU binaries +along with the fix binary (F) @code{binfmt_misc} flag, which allows the kernel +to fully pre-load it in memory. QEMU can thus now be used with any container +without extra configuration. The @code{guix-support?} field of the +@code{qemu-binfmt-configuration} record is removed, as it is no longer +necessary.") + (de "Der Dienst benutzt jetzt statisch gebundene QEMU-Binärdateien +zusammen mit der Fix-Binary-Flag (F) von @code{binfmt_misc}. Dadurch kann der +Kernel die QEMU-Binärdatei als Ganzes vorab in den Speicher laden. Dann kann +sie auch ohne weitere Konfiguration in jeder Art von isolierter Umgebung +benutzt werden. Darum wurde das Feld @code{guix-support?} des +@code{qemu-binfmt-configuration}-Verbundsobjekts entfernt; es wird nicht mehr +gebraucht.") + (fr "Le service utilise maintenant les binaire QEMU statiques avec +le drapeau « fixed » (F) de @code{binfmt_misc}, ce qui permet au noyau +de le charger entièrement en mémoire. On peut donc maintenant utiliser QEMU +avec n'importe quel conteneur sans configuration supplémentaire. Le champ +@code{guix-support?} de l'enregistrement @code{qemu-binfmt-configuration} a +été supprimé car il n'est pas nécessaire."))) + + (entry (commit "02e2e093e858e8a0ca7bd66c1f1f6fd0a1705edb") + (title + (en "New @command{guix import go} command") + (de "Neuer Befehl @command{guix import go}") + (fr "Nouvelle commande @command{guix import go}") + (nl "Nieuwe @command{guix import go}-opdracht")) + (body + (en "The new @command{guix import go} command allows packagers to +generate a package definition or a template thereof given the name of a Go +package available through @url{https://proxy.golang.org}, like so: + +@example +guix import go golang.org/x/sys +@end example + +Run @command{info \"(guix) Invoking guix import\"} for more info.") + (de "Mit dem neuen Befehl @command{guix import go} können +Paketautoren eine Paketdefinition oder eine Vorlage dafür anhand des Namens +eines auf @url{https://proxy.golang.org} verfügbaren Go-Pakets erzeugen, etwa +so: + +@example +guix import go golang.org/x/sys +@end example + +Führen Sie @command{info \"(guix.de) Aufruf von guix import\"} aus, um mehr +Informationen zu bekommen.") + (fr "La nouvelle commande @command{guix import go} permet aux +empaqueteur·ice·s de générer une définition de paquet ou un modèle de +définition à partir du nom d'un paquet Go disponible via +@url{https://proxy.golang.org}, comme ceci : + +@example +guix import go golang.org/x/sys +@end example + +Lancez @command{info \"(guix.fr) Invoquer guix import\"} pour en savoir plus.") + (nl "Met de nieuwe @command{guix import go}-opdracht kunnen +pakketschrijvers een pakketdefinitie of -sjabloon aanmaken, op basis van de +naam van een Go-pakket te vinden op @url{https://proxy.golang.org}: + +@example +guix import go golang.org/x/sys +@end example + +Voer @command{info \"(guix) Invoking guix import\"} uit voor meer +informatie."))) + (entry (commit "1b5b882120daf7d111aa351a919a90e818324347") (title (en "The @code{linux-libre} kernel is updated to 5.11.2") @@ -373,7 +607,8 @@ l'instant grâce à la librairie Guile-Avahi."))) (entry (commit "a9a2fdaabcc78e7a54d9a6bcfa4ee3de308e9a90") (title (en "Logical Volume Manager (LVM) now supported on Guix System") (de "Logical Volume Manager (LVM) wird jetzt auf Guix System unterstützt") - (es "El sistema Guix ahora implementa también volúmenes lógicos LVM")) + (es "El sistema Guix ahora implementa también volúmenes lógicos LVM") + (fr "Le gestionnaire de volumes logiques (LVM) est maintenant pris en charge par le système Guix")) (body (en "On Guix System, the new @code{lvm-device-mapping} variable allows you to declare ``mapped devices'' for LVM, the Linux Logical Volume @@ -415,7 +650,20 @@ los volúmenes lógicos «alfa» y «beta» del grupo de volúmenes «vg0»: @end lisp Véase @command{info \"(guix.es) Dispositivos traducidos\"} para obtener más -información."))) +información.") + (fr "Sur le système Guix, la nouvelle variable @code{lvm-device-mapping} +vous permet de déclarer des « périphériques mappés » pour LVM, le gestionnaire +de volumes logiques. Par exemple, vous pouvez déclarer les volumes logiques +« alpha » et « beta » du groupe « vg0 » comme ceci : + +@lisp +(mapped-device + (source \"vg0\") + (target (list \"vg0-alpha\" \"vg0-beta\")) + (type lvm-device-mapping)) +@end lisp + +Voir @command{info \"(guix.fr) Périphériques mappés\"} pour en savoir plus."))) (entry (commit "3b6e4e5fd05e72b8a32ff1a2d5e21464260e21e6") (title (en "List of substitute keys is now declarative on Guix System") @@ -1066,7 +1314,8 @@ engine") (es "@command{guix pack -RR} introduce un nuevo motor de ejecución") (de "@command{guix pack -RR} führt neuen Ausführungstreiber -ein")) +ein") + (fr "@command{guix pack -RR} introduit un nouveau moteur d'exécution")) (body (en "The @command{guix pack -RR} command allows you to create a tarball containing @dfn{relocatable binaries}. Until now, those would rely @@ -1125,12 +1374,30 @@ export GUIX_EXECUTION_ENGINE @end example Führen Sie @command{info \"(guix.de) Aufruf von guix pack\"} aus, wenn Sie -mehr wissen wollen."))) +mehr wissen wollen.") + (fr "La commande @command{guix pack -RR} vous permet de créer une +archive tar contenant des @dfn{binaires repositionnables}. Jusqu'ici, ils +s'appuyaient sur les « espaces de noms non privilégiés » de Linux ou sur +PRoot, quand les espaces de noms non privilégiés n'étaient pas disponibles. +Cependant, PRoot ralenti significativement certains profils d'exécution. + +Pour éviter cela, @command{guix pack -RR} introduit une troisième possibilité +basée sur une extension de l'éditeur des liens à l'exécution de GNU (ld.so) et +sur Fakechroot, qui ralenti très peu l'exécution. Vous pouvez choisir l'option +la plus rapide à l'exécution d'un binaire relocalisable de cette manière : + +@example +GUIX_EXECUTION_ENGINE=performance +export GUIX_EXECUTION_ENGINE +@end example + +Lancez @command{info \"(guix.fr) Invoquer guix pack\"} pour en savoir plus."))) (entry (commit "88a96c568c47c97d05d883ada5afbc4e1200b10f") (title (en "New @option{--path} option for @command{guix graph}") (es "Nueva opción @option{--path} para @command{guix graph}") - (de "Neue Option @option{--path} für @command{guix graph}")) + (de "Neue Option @option{--path} für @command{guix graph}") + (fr "Nouvelle option @option{--path} pour @command{guix graph}")) (body (en "The @command{guix graph} command has a new @option{--path} option that instructs it to display the shortest path between two packages, @@ -1165,7 +1432,18 @@ guix graph --path libreoffice libunistring @end example Führen Sie @code{info \"(guix.de) Aufruf von guix graph\"} aus, um mehr zu -erfahren."))) +erfahren.") + (fr "La commande @command{guix graph} a une nouvelle option +@option{--path} qui lui dit d'afficer le plus court chemin entre deux +paquets, dérivations ou éléments du dépôt. Par exemple, la commande ci-dessous +affiche le plus court chemin entre le paquet @code{libreoffice} et +@code{libunistring} : + +@example +guix graph --path libreoffice libunistring +@end example + +Lancez @code{info \"(guix.fr) Invoquer guix graph\"} pour en savoir plus."))) (entry (commit "a33eac038a811603c8b9ed106ae405a5f80a0e9d") (title (en "GNU C Library upgraded") @@ -1271,7 +1549,8 @@ Rezepte mit uns zu teilen!"))) (entry (commit "2ca7af43fe17d9acf082dce85d137a27a8ac4887") (title (en "Further reduced binary seed bootstrap") - (de "Bootstrapping jetzt mit noch kleinerem Seed")) + (de "Bootstrapping jetzt mit noch kleinerem Seed") + (fr "Le bootstrap binaire est encore plus réduit")) (body (en "The package graph on x86_64 and i686 is now rooted in a further @dfn{reduced set of binary seeds}. The initial set of binaries from which @@ -1283,11 +1562,18 @@ the talk at @uref{https://fosdem.org/2020/schedule/event/gnumes/}.") Menge an Binärdateien, aus denen heraus Pakete erstellt werden, machen nun ungefähr 60 MiB aus, ein Viertel der früheren Größe. Führen Sie @code{info \"(guix.de) Bootstrapping\"} aus, um mehr zu erfahren, oder schauen Sie sich -den Vortrag auf @uref{https://fosdem.org/2020/schedule/event/gnumes/} an."))) +den Vortrag auf @uref{https://fosdem.org/2020/schedule/event/gnumes/} an.") + (fr "Le graphe des paquets sur x86_64 et i686 prend maintenant racine +dans un @dfn{ensemble de graines binaires} plus réduit. L'ensemble initial +des binaires à partir desquels les paquets sont désormais construit pèse +environ 60 Mo, un quart de ce qu'il était. Lancez +@code{info \"(guix.fr) Bootstrapping\"} pour en savoir plus, ou regardez +la présentation sur @uref{https://fosdem.org/2020/schedule/event/gnumes/}."))) (entry (commit "0468455e7d279c89ea3ad1b51935efb2b785ec47") (title (en "Rottlog service added to @code{%base-services}") - (de "Rottlog-Dienst ist nun Teil der @code{%base-services}")) + (de "Rottlog-Dienst ist nun Teil der @code{%base-services}") + (fr "Le service rottlog a été ajouté à @code{%base-services}")) (body (en "An instance of @code{rottlog-service-type}, the system service responsible for log rotation, has been added to @code{%base-services}. If your operating system configuration for Guix System is explicitly adding @@ -1297,11 +1583,18 @@ the ``Log Rotation'' section of the manual for more information.") Log-Rotation wurde zu den @code{%base-services} hinzugefügt. Wenn der Systemdienst bereits in Ihrer Konfiguration für Guix System ausdrücklich genannt wurde, sollten Sie ihn jetzt daraus entfernen. Siehe den Abschnitt -„Log-Rotation“ im Handbuch für weitere Informationen."))) +„Log-Rotation“ im Handbuch für weitere Informationen.") + (fr "Une instance de @code{rottlog-service-type}, le service +système responsable de la rotation des journaux, a été ajoutée à +@code{%base-services}. Si votre configuration de système d'exploitation Guix +System ajoute @code{rottlog-service-type} explicitement, vous devriez maintenant +le supprimer. Voir la section « Rotation des journaux » dans le manuel +pour en savoir plus."))) (entry (commit "b6bee63bed4f013064c0d902e7c8b83ed7514ade") (title (en "@code{guile} package now refers to version 3.0") - (de "Das @code{guile}-Paket bezeichnet jetzt Version 3.0")) + (de "Das @code{guile}-Paket bezeichnet jetzt Version 3.0") + (fr "Le paquet @code{guile} se réfère maintenant à la version 3.0")) (body (en "The @code{guile} package has been upgraded to version 3.0 (instead of 2.2). The @code{guile3.0-} packages have been renamed to their original name, and @code{guile2.2-} variants of these packages have been @@ -1312,7 +1605,12 @@ system services also run on 3.0.") beginnen, wurden umbenannt, so dass sie nun den unveränderten Namen tragen, während ihre Varianten mit @code{guile2.2-} hinzugefügt wurden. Des Weiteren werden jetzt alle Ableitungen mit Guile 3.0 erstellt und die Systemdienste -laufen auch auf 3.0."))) +laufen auch auf 3.0.") + (fr "Le paquet @code{guile} a été mis à jour vers la version 3.0 +(au lieu de la 2.2). Les paquets @code{guile3.0-} ont été renommés en leur +nom d'origine et les variantes @code{guile2.2-} de ces paquets ont été définis. +En plus, les dérivation sont maintenant construites avec Guile 3.0, et les +services systèmes utilisent aussi la 3.0."))) (entry (commit "e3e1a7ba08af2d58c47264c543617e499c239444") (title (en "@command{guix pull} now supports SSH authenticated @@ -1418,7 +1716,9 @@ historique."))) (entry (commit "3e962e59d849e4300e447d94487684102d9d412e") (title (en "@command{guix graph} now supports package transformations") - (de "@command{guix graph} unterstützt nun Paketumwandlungen")) + (de "@command{guix graph} unterstützt nun Paketumwandlungen") + (fr "@command{guix graph} prend maintenant en charge les +transformations de paquets")) (body (en "The @command{guix graph} command now supports the common package transformation options (see @command{info \"(guix) Package Transformation @@ -1433,7 +1733,11 @@ Abhängigkeitsgraphen zu sehen.") comunes de transformación de paquetes (véase @command{info \"(guix.es) Opciones de transformación de paquetes\"}). Esto es particularmente útil para comprobar el efecto de la opción de reescritura del grafo -de dependencias @option{--with-input}."))) +de dependencias @option{--with-input}.") + (fr "La commande @command{guix graph} prend maintenant en charge les +transformations de paquets communes (voir @command{info \"(guix.fr) Options de +transformation de paquets\"}). C'est particulièrement utile pour voir l'effet +de l'option @option{--with-input} qui réécrit de graphe de dépendance."))) (entry (commit "49af34cfac89d384c46269bfd9388b2c73b1220a") (title (en "@command{guix pull} now honors diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm index b458aee4ae..6cb6f8819b 100644 --- a/gnu/build/activation.scm +++ b/gnu/build/activation.scm @@ -1,6 +1,11 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> +;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> +;;; Copyright © 2015, 2018 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,7 +42,8 @@ activate-modprobe activate-firmware activate-ptrace-attach - activate-current-system)) + activate-current-system + mkdir-p/perms)) ;;; Commentary: ;;; @@ -55,6 +61,47 @@ (define (dot-or-dot-dot? file) (member file '("." ".."))) +;; Based upon mkdir-p from (guix build utils) +(define (verify-not-symbolic dir) + "Verify DIR or its ancestors aren't symbolic links." + (define absolute? + (string-prefix? "/" dir)) + + (define not-slash + (char-set-complement (char-set #\/))) + + (define (verify-component file) + (unless (eq? 'directory (stat:type (lstat file))) + (error "file name component is not a directory" dir))) + + (let loop ((components (string-tokenize dir not-slash)) + (root (if absolute? + "" + "."))) + (match components + ((head tail ...) + (let ((file (string-append root "/" head))) + (catch 'system-error + (lambda () + (verify-component file) + (loop tail file)) + (lambda args + (if (= ENOENT (system-error-errno args)) + #t + (apply throw args)))))) + (() #t)))) + +;; TODO: the TOCTTOU race can be addressed once guile has bindings +;; for fstatat, openat and friends. +(define (mkdir-p/perms directory owner bits) + "Create the directory DIRECTORY and all its ancestors. +Verify no component of DIRECTORY is a symbolic link. +Warning: this is currently suspect to a TOCTTOU race!" + (verify-not-symbolic directory) + (mkdir-p directory) + (chown directory (passwd:uid owner) (passwd:gid owner)) + (chmod directory bits)) + (define* (copy-account-skeletons home #:key (directory %skeleton-directory) diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm index aca4aad848..304805db62 100644 --- a/gnu/build/file-systems.scm +++ b/gnu/build/file-systems.scm @@ -920,14 +920,8 @@ corresponds to the symbols listed in FLAGS." ;; MS_REMOUNT call below fails with EPERM. ;; See <https://bugs.gnu.org/46292> (if (memq 'bind-mount (file-system-flags fs)) - (or (and=> (find (let ((devno (stat:dev - (lstat source)))) - (lambda (mount) - (= (mount-device-number mount) - devno))) - (mounts)) - mount-flags) - 0) + (statfs-flags->mount-flags + (file-system-mount-flags (statfs source))) 0))) (options (file-system-options fs))) (when (file-system-check? fs) diff --git a/gnu/ci.scm b/gnu/ci.scm index 6edcdd0e19..32b7a611fb 100644 --- a/gnu/ci.scm +++ b/gnu/ci.scm @@ -23,6 +23,7 @@ (define-module (gnu ci) #:use-module (guix channels) #:use-module (guix config) + #:use-module (guix describe) #:use-module (guix store) #:use-module (guix grafts) #:use-module (guix profiles) @@ -155,6 +156,7 @@ SYSTEM." "arm-linux-gnueabihf" "aarch64-linux-gnu" "powerpc-linux-gnu" + "powerpc64le-linux-gnu" "riscv64-linux-gnu" "i586-pc-gnu" ;aka. GNU/Hurd "i686-w64-mingw32" @@ -422,16 +424,12 @@ valid." (define (arguments->manifests arguments channels) "Return the list of manifests extracted from ARGUMENTS." - (define (channel-name->checkout name) - (let ((channel (find (lambda (channel) - (eq? (channel-name channel) name)) - channels))) - (channel-url channel))) - - (map (match-lambda - ((name . path) - (let ((checkout (channel-name->checkout name))) - (in-vicinity checkout path)))) + (map (lambda (manifest) + (any (lambda (checkout) + (let ((path (in-vicinity checkout manifest))) + (and (file-exists? path) + path))) + (map channel-url channels))) arguments)) (define (manifests->packages store manifests) @@ -521,6 +519,16 @@ valid." (let ((hello (specification->package "hello"))) (list (package-job store (job-name hello) hello system)))) + (('channels . channels) + ;; Build only the packages from CHANNELS. + (let ((all (all-packages))) + (filter-map + (lambda (package) + (any (lambda (channel) + (and (member (channel-name channel) channels) + (package->job store package system))) + (package-channels package))) + all))) (('packages . rest) ;; Build selected list of packages only. (let ((packages (map specification->package rest))) diff --git a/gnu/local.mk b/gnu/local.mk index 572f439cae..ce0a79fb4d 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2,7 +2,7 @@ # Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> # Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Andreas Enge <andreas@enge.fr> # Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> -# Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Mark H Weaver <mhw@netris.org> +# Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Mark H Weaver <mhw@netris.org> # Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> # Copyright © 2016, 2017, 2018 Kei Kebreau <kkebreau@posteo.net> # Copyright © 2016, 2017 Rene Saavedra <rennes@openmailbox.org> @@ -31,7 +31,7 @@ # Copyright © 2020 R Veera Kumar <vkor@vkten.in> # Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz> # Copyright © 2020 Michael Rohleder <mike@rohleder.de> -# Copyright © 2020 Felix Gruber <felgru@posteo.net> +# Copyright © 2020, 2021 Felix Gruber <felgru@posteo.net> # Copyright © 2020 Ryan Prior <rprior@protonmail.com> # Copyright © 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl> # Copyright © 2020 Brice Waegeneire <brice@waegenei.re> @@ -354,7 +354,6 @@ GNU_SYSTEM_MODULES = \ %D%/packages/logging.scm \ %D%/packages/logo.scm \ %D%/packages/loko.scm \ - %D%/packages/lolcode.scm \ %D%/packages/lsof.scm \ %D%/packages/lua.scm \ %D%/packages/lxde.scm \ @@ -690,7 +689,6 @@ GNU_SYSTEM_MODULES = \ %D%/tests.scm \ %D%/tests/audio.scm \ %D%/tests/base.scm \ - %D%/tests/cuirass.scm \ %D%/tests/cups.scm \ %D%/tests/databases.scm \ %D%/tests/desktop.scm \ @@ -789,6 +787,8 @@ dist_patch_DATA = \ %D%/packages/patches/abcl-fix-build-xml.patch \ %D%/packages/patches/ableton-link-system-libraries-debian.patch \ %D%/packages/patches/abiword-explictly-cast-bools.patch \ + %D%/packages/patches/abseil-cpp-fix-gtest.patch \ + %D%/packages/patches/abseil-cpp-fix-strerror_test.patch \ %D%/packages/patches/adb-add-libraries.patch \ %D%/packages/patches/aegis-constness-error.patch \ %D%/packages/patches/aegis-perl-tempdir1.patch \ @@ -832,7 +832,10 @@ dist_patch_DATA = \ %D%/packages/patches/avahi-localstatedir.patch \ %D%/packages/patches/avidemux-install-to-lib.patch \ %D%/packages/patches/awesome-reproducible-png.patch \ - %D%/packages/patches/aws-c-event-stream-cmake-prefix.patch \ + %D%/packages/patches/aws-c-cal-cmake-prefix.patch \ + %D%/packages/patches/aws-c-event-stream-cmake-prefix.patch \ + %D%/packages/patches/aws-c-io-cmake-prefix.patch \ + %D%/packages/patches/aws-c-io-disable-networking-tests.patch \ %D%/packages/patches/aws-checksums-cmake-prefix.patch \ %D%/packages/patches/azr3.patch \ %D%/packages/patches/bash-reproducible-linux-pgrp-pipe.patch \ @@ -873,7 +876,10 @@ dist_patch_DATA = \ %D%/packages/patches/blender-2.79-python-3.8-fix.patch \ %D%/packages/patches/boost-fix-transitive-linking.patch \ %D%/packages/patches/bpftrace-disable-bfd-disasm.patch \ + %D%/packages/patches/busybox-CVE-2021-28831.patch \ %D%/packages/patches/byobu-writable-status.patch \ + %D%/packages/patches/cairo-CVE-2018-19876.patch \ + %D%/packages/patches/cairo-CVE-2020-35492.patch \ %D%/packages/patches/calibre-no-updates-dialog.patch \ %D%/packages/patches/calibre-remove-test-sqlite.patch \ %D%/packages/patches/calibre-remove-test-unrar.patch \ @@ -919,6 +925,7 @@ dist_patch_DATA = \ %D%/packages/patches/cursynth-wave-rand.patch \ %D%/packages/patches/cvs-CVE-2017-12836.patch \ %D%/packages/patches/cyrus-sasl-ac-try-run-fix.patch \ + %D%/packages/patches/cyrus-sasl-CVE-2019-19906.patch \ %D%/packages/patches/c++-gsl-find-system-gtest.patch \ %D%/packages/patches/date-output-pkg-config-files.patch \ %D%/packages/patches/datefudge-gettimeofday.patch \ @@ -950,6 +957,7 @@ dist_patch_DATA = \ %D%/packages/patches/ecl-16-format-directive-limit.patch \ %D%/packages/patches/ecl-16-ignore-stderr-write-error.patch \ %D%/packages/patches/ecl-16-libffi.patch \ + %D%/packages/patches/efibootmgr-remove-extra-decl.patch \ %D%/packages/patches/eigen-remove-openmp-error-counting.patch \ %D%/packages/patches/eigen-stabilise-sparseqr-test.patch \ %D%/packages/patches/einstein-build.patch \ @@ -974,6 +982,9 @@ dist_patch_DATA = \ %D%/packages/patches/erlang-man-path.patch \ %D%/packages/patches/eudev-rules-directory.patch \ %D%/packages/patches/evilwm-lost-focus-bug.patch \ + %D%/packages/patches/evolution-CVE-2020-11879.patch \ + %D%/packages/patches/evolution-data-server-CVE-2020-14928.patch \ + %D%/packages/patches/evolution-data-server-CVE-2020-16117.patch \ %D%/packages/patches/evolution-data-server-locales.patch \ %D%/packages/patches/evolution-data-server-libical-compat.patch \ %D%/packages/patches/exercism-disable-self-update.patch \ @@ -1051,7 +1062,9 @@ dist_patch_DATA = \ %D%/packages/patches/gdb-hurd.patch \ %D%/packages/patches/gd-fix-tests-on-i686.patch \ %D%/packages/patches/gd-brect-bounds.patch \ + %D%/packages/patches/gdk-pixbuf-CVE-2020-29385.patch \ %D%/packages/patches/gdm-default-session.patch \ + %D%/packages/patches/geary-CVE-2020-24661.patch \ %D%/packages/patches/genimage-signedness.patch \ %D%/packages/patches/geoclue-config.patch \ %D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch \ @@ -1069,6 +1082,26 @@ dist_patch_DATA = \ %D%/packages/patches/ghostscript-no-header-creationdate.patch \ %D%/packages/patches/glib-appinfo-watch.patch \ %D%/packages/patches/glib-tests-timer.patch \ + %D%/packages/patches/glib-CVE-2021-27218.patch \ + %D%/packages/patches/glib-CVE-2021-27219-01.patch \ + %D%/packages/patches/glib-CVE-2021-27219-02.patch \ + %D%/packages/patches/glib-CVE-2021-27219-03.patch \ + %D%/packages/patches/glib-CVE-2021-27219-04.patch \ + %D%/packages/patches/glib-CVE-2021-27219-05.patch \ + %D%/packages/patches/glib-CVE-2021-27219-06.patch \ + %D%/packages/patches/glib-CVE-2021-27219-07.patch \ + %D%/packages/patches/glib-CVE-2021-27219-08.patch \ + %D%/packages/patches/glib-CVE-2021-27219-09.patch \ + %D%/packages/patches/glib-CVE-2021-27219-10.patch \ + %D%/packages/patches/glib-CVE-2021-27219-11.patch \ + %D%/packages/patches/glib-CVE-2021-27219-12.patch \ + %D%/packages/patches/glib-CVE-2021-27219-13.patch \ + %D%/packages/patches/glib-CVE-2021-27219-14.patch \ + %D%/packages/patches/glib-CVE-2021-27219-15.patch \ + %D%/packages/patches/glib-CVE-2021-27219-16.patch \ + %D%/packages/patches/glib-CVE-2021-27219-17.patch \ + %D%/packages/patches/glib-CVE-2021-27219-18.patch \ + %D%/packages/patches/glib-CVE-2021-28153.patch \ %D%/packages/patches/glibc-CVE-2018-11236.patch \ %D%/packages/patches/glibc-CVE-2018-11237.patch \ %D%/packages/patches/glibc-CVE-2019-7309.patch \ @@ -1088,6 +1121,7 @@ dist_patch_DATA = \ %D%/packages/patches/glibc-hurd-mach-print.patch \ %D%/packages/patches/glibc-hurd-magic-pid.patch \ %D%/packages/patches/glibc-hurd-signal-sa-siginfo.patch \ + %D%/packages/patches/glibc-ldd-powerpc.patch \ %D%/packages/patches/glibc-ldd-x86_64.patch \ %D%/packages/patches/glibc-locales.patch \ %D%/packages/patches/glibc-locales-2.28.patch \ @@ -1105,12 +1139,15 @@ dist_patch_DATA = \ %D%/packages/patches/gnash-fix-giflib-version.patch \ %D%/packages/patches/gnome-shell-theme.patch \ %D%/packages/patches/gnome-shell-disable-test.patch \ + %D%/packages/patches/gnome-shell-CVE-2020-17489.patch \ %D%/packages/patches/gnome-settings-daemon-gc.patch \ %D%/packages/patches/gnome-todo-delete-esource-duplicate.patch \ %D%/packages/patches/gnome-tweaks-search-paths.patch \ %D%/packages/patches/gnupg-default-pinentry.patch \ %D%/packages/patches/gnutls-skip-trust-store-test.patch \ %D%/packages/patches/gnutls-cross.patch \ + %D%/packages/patches/gnutls-CVE-2021-20231.patch \ + %D%/packages/patches/gnutls-CVE-2021-20232.patch \ %D%/packages/patches/gobject-introspection-absolute-shlib-path.patch \ %D%/packages/patches/gobject-introspection-cc.patch \ %D%/packages/patches/gobject-introspection-girepository.patch \ @@ -1262,8 +1299,11 @@ dist_patch_DATA = \ %D%/packages/patches/libbase-fix-includes.patch \ %D%/packages/patches/libbase-use-own-logging.patch \ %D%/packages/patches/libbonobo-activation-test-race.patch \ + %D%/packages/patches/libcaca-CVE-2021-3410-pt1.patch \ + %D%/packages/patches/libcaca-CVE-2021-3410-pt2.patch \ %D%/packages/patches/libcanberra-sound-theme-freedesktop.patch \ %D%/packages/patches/libcanberra-wayland-crash.patch \ + %D%/packages/patches/libcroco-CVE-2020-12825.patch \ %D%/packages/patches/libcyaml-libyaml-compat.patch \ %D%/packages/patches/libexpected-nofetch.patch \ %D%/packages/patches/libgeotiff-adapt-test-script-for-proj-6.2.patch \ @@ -1360,9 +1400,9 @@ dist_patch_DATA = \ %D%/packages/patches/mit-krb5-hurd.patch \ %D%/packages/patches/mit-krb5-qualify-short-hostnames.patch \ %D%/packages/patches/mpc123-initialize-ao.patch \ + %D%/packages/patches/mpg321-CVE-2019-14247.patch \ %D%/packages/patches/module-init-tools-moduledir.patch \ %D%/packages/patches/monero-use-system-miniupnpc.patch \ - %D%/packages/patches/mongodb-support-unknown-linux-distributions.patch \ %D%/packages/patches/mono-mdoc-timestamping.patch \ %D%/packages/patches/mozjs17-aarch64-support.patch \ %D%/packages/patches/mozjs24-aarch64-support.patch \ @@ -1551,7 +1591,6 @@ dist_patch_DATA = \ %D%/packages/patches/python2-pygobject-2-deprecation.patch \ %D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch \ %D%/packages/patches/python-robotframework-source-date-epoch.patch \ - %D%/packages/patches/python-shouldbe-0.1.2-cpy3.8.patch \ %D%/packages/patches/python2-subprocess32-disable-input-test.patch \ %D%/packages/patches/python-unittest2-python3-compat.patch \ %D%/packages/patches/python-unittest2-remove-argparse.patch \ @@ -1679,6 +1718,7 @@ dist_patch_DATA = \ %D%/packages/patches/udiskie-no-appindicator.patch \ %D%/packages/patches/ungoogled-chromium-extension-search-path.patch \ %D%/packages/patches/ungoogled-chromium-system-nspr.patch \ + %D%/packages/patches/ungoogled-chromium-system-opus.patch \ %D%/packages/patches/unison-fix-ocaml-4.08.patch \ %D%/packages/patches/unknown-horizons-python-3.8-distro.patch \ %D%/packages/patches/unzip-CVE-2014-8139.patch \ @@ -1694,6 +1734,26 @@ dist_patch_DATA = \ %D%/packages/patches/unzip-initialize-symlink-flag.patch \ %D%/packages/patches/unzip-overflow-long-fsize.patch \ %D%/packages/patches/unzip-remove-build-date.patch \ + %D%/packages/patches/unzip-case-insensitive.patch \ + %D%/packages/patches/unzip-COVSCAN-fix-unterminated-string.patch \ + %D%/packages/patches/unzip-CVE-2016-9844.patch \ + %D%/packages/patches/unzip-CVE-2018-1000035.patch \ + %D%/packages/patches/unzip-CVE-2018-18384.patch \ + %D%/packages/patches/unzip-alt-iconv-utf8-print.patch \ + %D%/packages/patches/unzip-alt-iconv-utf8.patch \ + %D%/packages/patches/unzip-close.patch \ + %D%/packages/patches/unzip-exec-shield.patch \ + %D%/packages/patches/unzip-fix-recmatch.patch \ + %D%/packages/patches/unzip-manpage-fix.patch \ + %D%/packages/patches/unzip-overflow.patch \ + %D%/packages/patches/unzip-timestamp.patch \ + %D%/packages/patches/unzip-valgrind.patch \ + %D%/packages/patches/unzip-x-option.patch \ + %D%/packages/patches/unzip-zipbomb-manpage.patch \ + %D%/packages/patches/unzip-zipbomb-part1.patch \ + %D%/packages/patches/unzip-zipbomb-part2.patch \ + %D%/packages/patches/unzip-zipbomb-part3.patch \ + %D%/packages/patches/unzip-32bit-zipbomb-fix.patch \ %D%/packages/patches/ustr-fix-build-with-gcc-5.patch \ %D%/packages/patches/util-linux-tests.patch \ %D%/packages/patches/upower-builddir.patch \ @@ -1708,6 +1768,7 @@ dist_patch_DATA = \ %D%/packages/patches/vsearch-unbundle-cityhash.patch \ %D%/packages/patches/vte-CVE-2012-2738-pt1.patch \ %D%/packages/patches/vte-CVE-2012-2738-pt2.patch \ + %D%/packages/patches/vtk-fix-freetypetools-build-failure.patch \ %D%/packages/patches/warsow-qfusion-fix-bool-return-type.patch \ %D%/packages/patches/webkitgtk-share-store.patch \ %D%/packages/patches/webkitgtk-bind-all-fonts.patch \ @@ -1744,7 +1805,9 @@ dist_patch_DATA = \ %D%/packages/patches/xsane-fix-snprintf-buffer-length.patch \ %D%/packages/patches/xsane-support-ipv6.patch \ %D%/packages/patches/xsane-tighten-default-umask.patch \ - %D%/packages/patches/yggdrasil-extra-config.patch + %D%/packages/patches/yggdrasil-extra-config.patch \ + %D%/packages/patches/ytnef-CVE-2021-3403.patch \ + %D%/packages/patches/ytnef-CVE-2021-3404.patch MISC_DISTRO_FILES = \ %D%/packages/ld-wrapper.in diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 00436e9920..d77d2643b4 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -222,7 +222,7 @@ usual file attributes can be checked for inconsistencies.") (define-public progress (package (name "progress") - (version "0.15") + (version "0.16") (source (origin (method git-fetch) @@ -230,7 +230,7 @@ usual file attributes can be checked for inconsistencies.") (url "https://github.com/Xfennec/progress") (commit (string-append "v" version)))) (sha256 - (base32 "1cnb4ixlhshn139mj5sr42k5m6gjjbyqvkn1324c47niwrgp7dqm")) + (base32 "0gf10j9zd8spain94b5kigknwbdqajiy6fjsa5hhwsc1biz34hcj")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (native-inputs @@ -1052,7 +1052,7 @@ connection alive.") (define-public isc-dhcp (let* ((bind-major-version "9") (bind-minor-version "11") - (bind-patch-version "28") + (bind-patch-version "29") (bind-release-type "") ; for patch release, use "-P" (bind-release-version "") ; for patch release, e.g. "6" (bind-version (string-append bind-major-version @@ -1189,7 +1189,7 @@ connection alive.") "/bind-" bind-version ".tar.gz")) (sha256 (base32 - "0x2yjy0d8p7i5mr2s5y65fdax0jjgvd8fn07s42c8dxsrbkcp40h")))) + "01vvkvlhsxz4ffz2fw86z0fsf170b93jjnn5710ai6vfri8wgfy7")))) ("coreutils*" ,coreutils) ("sed*" ,sed))) @@ -1503,7 +1503,7 @@ system administrator.") (define-public sudo (package (name "sudo") - (version "1.9.5p2") + (version "1.9.6p1") (source (origin (method url-fetch) (uri @@ -1513,7 +1513,7 @@ system administrator.") version ".tar.gz"))) (sha256 (base32 - "0y093z4f3822rc88g9asdch12nljdamp817vjxk04mca7ks2x7jk")) + "146alf6cwnzjcckia8m0ibcj9ram2z469f5z7v6vkzpsb30cvsd9")) (modules '((guix build utils))) (snippet '(begin @@ -2002,13 +2002,13 @@ development, not the kernel implementation of ACPI.") (define-public s-tui (package (name "s-tui") - (version "1.0.2") + (version "1.1.1") (source (origin (method url-fetch) (uri (pypi-uri "s-tui" version)) (sha256 - (base32 "0xkfdaz5np21311ffdvhks58155qby8j8scbcixhvjd913pj66qx")))) + (base32 "1clk59wf6v1lq33h4x5qwxvz5ng9mfkp1s6ynxa58w2raq8dbmy5")))) (build-system python-build-system) (inputs `(("python-psutil" ,python-psutil) @@ -2928,13 +2928,13 @@ a new command using the matched rule, and runs it.") (define-public di (package (name "di") - (version "4.48.0.1") + (version "4.49") (source (origin (method url-fetch) - (uri (string-append "https://gentoo.com/di/di-" version ".tar.gz")) + (uri (string-append "mirror://sourceforge/diskinfo-di/di-" version ".tar.gz")) (sha256 - (base32 "0rxli3bcm6vlcfx2jminviv8aawwczrpp9kja5zniawy6528al30")))) + (base32 "1y38jhp2bpwbwzdzjlhgfqc7bxxz9cwapxd61799zjf54jkslkf0")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; obscure test failures @@ -3550,7 +3550,7 @@ make it a perfect utility on modern distros.") (define-public thermald (package (name "thermald") - (version "2.4.2") + (version "2.4.3") (source (origin (method git-fetch) @@ -3559,7 +3559,7 @@ make it a perfect utility on modern distros.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0nzjfiis4d3ml765s65bywk5dhx5x2fb3hpiixpxzzrs50ajwasj")))) + (base32 "1ibihgpmx038xci0k2h471scs5ssn7z5kcvjrfz63qf2ppdf9yh8")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -3748,7 +3748,7 @@ Python loading in HPC environments.") (let ((real-name "inxi")) (package (name "inxi-minimal") - (version "3.2.02-2") + (version "3.3.03-1") (source (origin (method git-fetch) @@ -3757,7 +3757,7 @@ Python loading in HPC environments.") (commit version))) (file-name (git-file-name real-name version)) (sha256 - (base32 "0fwx798v9kwiwkgbj97w6rjdanwf7ap65vvq1fqy7gd9x78xcxsq")))) + (base32 "1pahns10i5farw47v9v8cykrk5arq8218vpsa8c0bmaia0rf2n1q")))) (build-system trivial-build-system) (inputs `(("bash" ,bash-minimal) @@ -3961,7 +3961,7 @@ cache of unix and unix-like systems.") (define-public solaar (package (name "solaar") - (version "1.0.4") + (version "1.0.5") (source (origin (method git-fetch) (uri (git-reference @@ -3970,7 +3970,7 @@ cache of unix and unix-like systems.") (file-name (git-file-name name version)) (sha256 (base32 - "15wzxxr2m5349kkvcs3k5clg1rsmvh6by2066qm4hlgvjwmigggy")))) + "17gkr2lf1kzp1198gcdr30j3c8xd81kg7ly12aar1jrgi6lc7klk")))) (build-system python-build-system) (arguments `(#:phases @@ -3988,7 +3988,7 @@ cache of unix and unix-like systems.") ("python-xlib" ,python-xlib) ("gtk+" ,gtk+) ("python-pygobject" ,python-pygobject))) - (home-page "https://smxi.org/docs/inxi.htm") + (home-page "https://pwr-solaar.github.io/Solaar/") (synopsis "Linux devices manager for the Logitech Unifying Receiver") (description "This package provides tools to manage clients of the Logitech Unifying Receiver.") diff --git a/gnu/packages/adns.scm b/gnu/packages/adns.scm index a67a00284b..36f7211ad5 100644 --- a/gnu/packages/adns.scm +++ b/gnu/packages/adns.scm @@ -74,6 +74,7 @@ scripts.") (sha256 (base32 "1kl6bzlcmxn0524h5qldlbh99wf96whhvk54w3p4igf3xk8150yh")))) + (replacement c-ares/fixed) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -87,6 +88,23 @@ The primary examples of such applications are servers which communicate with multiple clients and programs with graphical user interfaces.") (license (x11-style "https://c-ares.haxx.se/license.html")))) +(define-public c-ares/fixed + (package + (inherit c-ares) + (name "c-ares") + (version "1.17.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://c-ares.haxx.se/download/" name "-" version + ".tar.gz")) + (sha256 + (base32 + "0h7wjfnk2092glqcp9mqaax7xx0s13m501z1gi0gsjl2vvvd0gfp")))) + (arguments + `(;; FIXME: Some tests require network access + #:tests? #f)))) + ;; gRPC requires a c-ares built with CMake in order to get the .cmake modules. ;; We can not build c-ares itself with CMake because that would introduce a ;; circular dependency through nghttp2. diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index 61cd481da0..20602bdf2a 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -13,6 +13,7 @@ ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net> +;;; Copyright © 2021 Lars-Dominik Braun <ldb@leibniz-psychology.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -44,7 +45,6 @@ #:use-module (gnu packages graphviz) #:use-module (gnu packages image) #:use-module (gnu packages java) - #:use-module (gnu packages llvm) #:use-module (gnu packages maths) #:use-module (gnu packages mpi) #:use-module (gnu packages multiprecision) @@ -64,6 +64,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) #:use-module (guix build-system python) + #:use-module (guix build-system r) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix hg-download) @@ -340,7 +341,7 @@ precision.") (define-public giac (package (name "giac") - (version "1.6.0-47") + (version "1.7.0-1") (source (origin (method url-fetch) @@ -352,7 +353,7 @@ precision.") "~parisse/debian/dists/stable/main/source/" "giac_" version ".tar.gz")) (sha256 - (base32 "15sgsr8l6njp5spagbqclqkdy3x7ra23wi6wvpc8vzlbivy3v43k")))) + (base32 "0s926aza2larfz02hrhdlpxn77yjlrhjg844b3fhwz11yj942p9q")))) (build-system gnu-build-system) (arguments `(#:modules ((ice-9 ftw) @@ -795,7 +796,7 @@ cosine/ sine transforms or DCT/DST).") (license license:gpl2+))) (define-public fftwf - (package (inherit fftw) + (package/inherit fftw (name "fftwf") (arguments (substitute-keyword-arguments (package-arguments fftw) @@ -813,7 +814,7 @@ cosine/ sine transforms or DCT/DST).") " Single-precision version.")))) (define-public fftw-openmpi - (package (inherit fftw) + (package/inherit fftw (name "fftw-openmpi") (inputs `(("openmpi" ,openmpi) @@ -973,11 +974,8 @@ algorithms from the FORTRAN library MINPACK.") "-DWITH_MPFR=on" "-DWITH_MPC=on" "-DINTEGER_CLASS=flint" - "-DWITH_LLVM=on" "-DWITH_SYMENGINE_THREAD_SAFE=on" "-DBUILD_SHARED_LIBS=on"))) ;also build libsymengine - (native-inputs - `(("llvm" ,llvm))) (inputs `(("flint" ,flint) ("gmp" ,gmp) @@ -1590,3 +1588,24 @@ general purpose; they require that p satisfy some preconditions based on the dimension of the input matrix (usually p should be prime and should be no more than about 20 bits long).") (license license:bsd-3))) + +(define-public r-dtt + (package + (name "r-dtt") + (version "0.1-2") + (source + (origin + (method url-fetch) + (uri (cran-uri "dtt" version)) + (sha256 + (base32 + "0n8gj5iylfagdbaqirpykb01a9difsy4zl6qq55f0ghvazxqdvmn")))) + (properties `((upstream-name . "dtt"))) + (build-system r-build-system) + (home-page "http://www.r-project.org") + (synopsis "Discrete Trigonometric Transforms") + (description + "This package provides functions for 1D and 2D Discrete Cosine Transform +(@dfn{DCT}), Discrete Sine Transform (@dfn{DST}) and Discrete Hartley Transform +(@dfn{DHT}).") + (license license:gpl2+))) diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm index f623274136..6105ef2590 100644 --- a/gnu/packages/astronomy.scm +++ b/gnu/packages/astronomy.scm @@ -167,7 +167,7 @@ feature detection and cosmetic corrections.") (define-public wcslib (package (name "wcslib") - (version "7.4") + (version "7.5") (source (origin (method url-fetch) @@ -175,7 +175,7 @@ feature detection and cosmetic corrections.") "ftp://ftp.atnf.csiro.au/pub/software/wcslib/wcslib-" version ".tar.bz2")) (sha256 - (base32 "072i1id4zk08mwi2c1zpy8zxrabl8dqyklx9ikbd2nh56r0rc752")))) + (base32 "1536gmcpm6pckn9xrb6j8s4pm1vryjhzvhfaj9wx3jwxcpbdy0dw")))) (inputs `(("cfitsio" ,cfitsio))) (build-system gnu-build-system) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index b6cbafb669..0cc3393361 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -197,7 +197,7 @@ promoting the market for advanced audio.") (define-public wildmidi (package (name "wildmidi") - (version "0.4.3") + (version "0.4.4") (source (origin (method git-fetch) @@ -207,7 +207,7 @@ promoting the market for advanced audio.") (commit (string-append name "-" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "01f4a9c5xlap5a4pkfnlgkzk5pjlk43zkq6fnw615ghya04g6hrl")))) + (base32 "08fbbsvw6pkwwqarjwcvdp8mq4zn5sgahf025hynwc6rvf4sp167")))) (build-system cmake-build-system) (arguments `(#:tests? #f ; No target @@ -1052,6 +1052,40 @@ performances. The plugins include a cellular automaton synthesizer, an envelope follower, distortion effects, tape effects and more.") (license license:gpl2+))) +(define-public snapcast + (package + (name "snapcast") + (version "0.24.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/badaix/snapcast") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "13yz8alplnqwkcns3mcli01qbyy6l3h62xx0v71ygcrz371l4g9g")))) + (build-system cmake-build-system) + (arguments + '(#:tests? #f)) ; no included tests + (inputs + `(("boost" ,boost) + ("libvorbis" ,libvorbis) + ("soxr" ,soxr) + ("alsa-lib" ,alsa-lib) + ("avahi" ,avahi) + ("pulseaudio" ,pulseaudio) + ("flac" ,flac) + ("opus" ,opus))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "https://github.com/badaix/snapcast") + (synopsis "Synchronous multiroom audio player") + (description + "Snapcast is a multi-room client-server audio player. Clients are time +synchronized with the server to play synced audio.") + (license license:gpl3+))) + (define-public swh-plugins (package (name "swh-plugins") @@ -1622,7 +1656,7 @@ follower.") (define-public fluidsynth (package (name "fluidsynth") - (version "2.1.5") + (version "2.1.8") (source (origin (method git-fetch) (uri (git-reference @@ -1631,7 +1665,7 @@ follower.") (file-name (git-file-name name version)) (sha256 (base32 - "0ccpq4p1h1g53ng3961g3lh590qnwvpzwdzpl6ai4j6iazq0bh73")))) + "0r944ndn138ak9s3ivgd1wgkwkh6zp7jjnxd30hryczc6kbhkpmr")))) (build-system cmake-build-system) (arguments '(#:tests? #f ; no check target @@ -2678,14 +2712,14 @@ different audio devices such as ALSA or PulseAudio.") (define-public qjackctl (package (name "qjackctl") - (version "0.9.0") + (version "0.9.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/" version "/qjackctl-" version ".tar.gz")) (sha256 (base32 - "1gaabf2ncd5xd846fjm3k5d0kzphlyc33k9pralc2j3r3g0cb5ji")))) + "0m72kglwwvn91dxnka4lx765p3r0bcpqw251svymxr2wxjc4rgjg")))) (build-system gnu-build-system) (arguments '(#:tests? #f)) ; no check target @@ -4918,8 +4952,7 @@ edited, converted, compressed and saved.") (license license:lgpl2.1))) (define-public ztoolkit-rsvg - (package - (inherit ztoolkit) + (package/inherit ztoolkit (name "ztoolkit-rsvg") (arguments `(#:configure-flags `("-Denable_rsvg=true"))) diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm index 005e97f83e..ca28801944 100644 --- a/gnu/packages/autotools.scm +++ b/gnu/packages/autotools.scm @@ -267,6 +267,8 @@ exec ~a --no-auto-compile \"$0\" \"$@\" ;; Do not show it in the UI since it's meant for internal use. (properties '((hidden? . #t))))) +;; Only use this package when autoconf is not usable, +;; see <https://issues.guix.gnu.org/46564#1>. (define-public autoconf-wrapper (make-autoconf-wrapper autoconf)) diff --git a/gnu/packages/axoloti.scm b/gnu/packages/axoloti.scm index 2a5cf8e0fc..3049051486 100644 --- a/gnu/packages/axoloti.scm +++ b/gnu/packages/axoloti.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2016, 2017, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. @@ -39,14 +39,21 @@ #:use-module (gnu packages version-control) #:use-module (gnu packages xml)) +;; XXX The patch does not apply to libusb 1.0.24. +;; See https://github.com/axoloti/axoloti/issues/464 (define libusb-for-axoloti - (package (inherit libusb) - (name "axoloti-libusb") - (version (package-version libusb)) + (package + (inherit libusb) + (version "1.0.23") (source (origin - (inherit (package-source libusb)) - (patches (list (search-patch "libusb-for-axoloti.patch"))))))) + (method url-fetch) + (uri (string-append "https://github.com/libusb/libusb/" + "releases/download/v" version + "/libusb-" version ".tar.bz2")) + (sha256 + (base32 "13dd2a9x290d1q8nb1lqiaf36grcvns5ripk5k2xm0lajmpc04fv")) + (patches (list (search-patch "libusb-for-axoloti.patch"))))))) (define dfu-util-for-axoloti (package (inherit dfu-util) diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index c1e9de5595..beea447eb1 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -18,6 +18,7 @@ ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2020 Marcin Karpezo <sirmacik@wioo.waw.pl> ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> +;;; Copyright © 2021 Timothy Sample <samplet@ngyro.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -62,6 +63,7 @@ #:use-module (gnu packages golang) #:use-module (gnu packages gperf) #:use-module (gnu packages guile) + #:use-module (gnu packages guile-xyz) #:use-module (gnu packages linux) #:use-module (gnu packages mcrypt) #:use-module (gnu packages ncurses) @@ -570,13 +572,13 @@ detection, and lossless compression.") (define-public borg (package (name "borg") - (version "1.1.15") + (version "1.1.16") (source (origin (method url-fetch) (uri (pypi-uri "borgbackup" version)) (sha256 - (base32 "1g62sdzcw3zx4ccky125ciwnzx6z9kwyvskvp7ijmqxqk3nrxjs9")) + (base32 "0l1dqfwrd9l34rg30cmzmq5bs6yha6kg4vy313jq611jsqj94mmw")) (modules '((guix build utils))) (snippet '(begin @@ -586,6 +588,8 @@ detection, and lossless compression.") ;; generate the wrong list. (for-each delete-file '("src/borg/algorithms/checksums.c" + "src/borg/algorithms/msgpack/_packer.cpp" + "src/borg/algorithms/msgpack/_unpacker.cpp" "src/borg/chunker.c" "src/borg/compress.c" "src/borg/crypto/low_level.c" @@ -1083,3 +1087,35 @@ interactive mode.") to reduce network traffic and the amount of space that is used by each backup.") (license license:agpl3))) + +(define-public disarchive + (package + (name "disarchive") + (version "0.2.0") + (source (origin + (method url-fetch) + (uri (string-append "https://files.ngyro.com/disarchive/" + "disarchive-" version ".tar.gz")) + (sha256 + (base32 + "12d4r4i7vi8fxilr2aww6kzq56jax5ymhjfm3cpgx26vj4c70kb6")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config) + ("guile-quickcheck" ,guile-quickcheck))) + (inputs + `(("guile" ,guile-3.0) + ("zlib" ,zlib))) + (propagated-inputs + `(("guile-gcrypt" ,guile-gcrypt))) + (home-page "https://ngyro.com/software/disarchive.html") + (synopsis "Software archive disassembler") + (description "Disarchive can disassemble software archives into data +and metadata. The goal is to create a small amount of metadata that +can be used to recreate a software archive bit-for-bit from the +original files. For example, a software archive made using tar and +Gzip will need to describe the order of files in the tarball and the +compression parameters used by Gzip.") + (license license:gpl3+))) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 5c65abe1bc..778f24d465 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -16,6 +16,7 @@ ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2020 Vitaliy Shatrov <D0dyBo0D0dyBo0@protonmail.com> ;;; Copyright © 2020 Chris Marusich <cmmarusich@gmail.com> +;;; Copyright © 2021 Leo Le Bouter <lle-bout@zaclys.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -873,6 +874,14 @@ the store.") (map (cut string-append slib "/" <>) files)))))) + ,@(if (target-powerpc?) + '((add-after 'unpack 'apply-patch + (lambda* (#:key inputs #:allow-other-keys) + (let ((patch (assoc-ref inputs + "powerpc64le-patch"))) + (invoke "patch" "--force" "-p1" + "-i" patch))))) + '()) ,@(if (hurd-target?) '((add-after 'install 'augment-libc.so (lambda* (#:key outputs #:allow-other-keys) @@ -893,6 +902,10 @@ the store.") ("gettext" ,gettext-minimal) ("python" ,python-minimal) + ,@(if (target-powerpc?) + `(("powerpc64le-patch" ,@(search-patches + "glibc-ldd-powerpc.patch"))) + '()) ,@(if (hurd-target?) `(("mig" ,mig) ("perl" ,perl)) diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm index ff9cc26f48..70e878e866 100644 --- a/gnu/packages/benchmark.scm +++ b/gnu/packages/benchmark.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Dave Love <fx@gnu.org> -;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com> @@ -51,14 +51,14 @@ (define-public fio (package (name "fio") - (version "3.25") + (version "3.26") (source (origin (method url-fetch) (uri (string-append "https://brick.kernel.dk/snaps/" "fio-" version ".tar.bz2")) (sha256 (base32 - "16r734an459cz1ax3jyhxc269i3syzdkll4qbv18wqaxpm5y34v6")))) + "1114h60vw63bim872an33xpvjfib6sc9dwj9xvk0yw41xjzfpp06")))) (build-system gnu-build-system) (arguments '(#:test-target "test" diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index 89b191585b..0bcd9a67cd 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -1,11 +1,15 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016, 2017, 2018, 2020 Roel Janssen <roel@gnu.org> +;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl> +;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> +;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2019, 2020 Simon Tournier <zimon.toutoune@gmail.com> +;;; Copyright © 2019, 2020, 2021 Simon Tournier <zimon.toutoune@gmail.com> ;;; Copyright © 2020 Peter Lo <peterloleungyau@gmail.com> ;;; Copyright © 2020, 2021 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> +;;; Copyright © 2021 Hong Li <hli@mdc-berlin.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -389,6 +393,25 @@ musculus (Mouse) as provided by UCSC (mm10, December 2011) and stored in Biostrings objects.") (license license:artistic2.0))) +(define-public r-genomeinfodbdata + (package + (name "r-genomeinfodbdata") + (version "1.2.0") + (source (origin + (method url-fetch) + (uri (bioconductor-uri "GenomeInfoDbData" version 'annotation)) + (sha256 + (base32 + "0di6nlqpsyqf693k2na65ayqldih563x3zfrczpqc5q2hl5kg35c")))) + (properties + `((upstream-name . "GenomeInfoDbData"))) + (build-system r-build-system) + (home-page "https://bioconductor.org/packages/GenomeInfoDbData") + (synopsis "Species and taxonomy ID look up tables for GenomeInfoDb") + (description "This package contains data for mapping between NCBI taxonomy +ID and species. It is used by functions in the GenomeInfoDb package.") + (license license:artistic2.0))) + (define-public r-homo-sapiens (package (name "r-homo-sapiens") @@ -905,6 +928,26 @@ All datasets are restricted to protein coding genes.") from Illumina 450k methylation arrays.") (license license:artistic2.0))) +(define-public r-chromstardata + (package + (name "r-chromstardata") + (version "1.16.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "chromstaRData" version 'experiment)) + (sha256 + (base32 + "0ph80d53598635bb8g61acg5rqwnj8644a0gh297r4hgbvwlflab")))) + (properties `((upstream-name . "chromstaRData"))) + (build-system r-build-system) + (home-page "https://bioconductor.org/packages/chromstaRData/") + (synopsis "ChIP-seq data for demonstration purposes") + (description + "This package provides ChIP-seq data for demonstration purposes in the +chromstaR package.") + (license license:gpl3))) + (define-public r-genelendatabase (package (name "r-genelendatabase") @@ -1243,6 +1286,35 @@ and evaluate clustering results.") arbitrary genomic intervals along chromosomal ideogram.") (license license:gpl2))) +(define-public r-iranges + (package + (name "r-iranges") + (version "2.24.1") + (source (origin + (method url-fetch) + (uri (bioconductor-uri "IRanges" version)) + (sha256 + (base32 + "01mx46a82vd3gz705pj0kk4wpxg683s8jqxchzjia3gz00b4qw52")))) + (properties + `((upstream-name . "IRanges"))) + (build-system r-build-system) + (propagated-inputs + `(("r-biocgenerics" ,r-biocgenerics) + ("r-s4vectors" ,r-s4vectors))) + (home-page "https://bioconductor.org/packages/IRanges") + (synopsis "Infrastructure for manipulating intervals on sequences") + (description + "This package provides efficient low-level and highly reusable S4 classes +for storing ranges of integers, RLE vectors (Run-Length Encoding), and, more +generally, data that can be organized sequentially (formally defined as +@code{Vector} objects), as well as views on these @code{Vector} objects. +Efficient list-like classes are also provided for storing big collections of +instances of the basic classes. All classes in the package use consistent +naming and share the same rich and consistent \"Vector API\" as much as +possible.") + (license license:artistic2.0))) + ;; This is a CRAN package, but it depends on r-bsgenome-hsapiens-ucsc-hg19 ;; from Bioconductor. (define-public r-deconstructsigs @@ -1487,6 +1559,298 @@ structure.") microarrays.") (license license:artistic2.0))) +(define-public r-annotationforge + (package + (name "r-annotationforge") + (version "1.32.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "AnnotationForge" version)) + (sha256 + (base32 + "0y3820dkvwz09wlmz9drx6gqpsr9cwppaiz40zafwfxbz65y8px7")))) + (properties + `((upstream-name . "AnnotationForge"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotationdbi" ,r-annotationdbi) + ("r-biobase" ,r-biobase) + ("r-biocgenerics" ,r-biocgenerics) + ("r-dbi" ,r-dbi) + ("r-rcurl" ,r-rcurl) + ("r-rsqlite" ,r-rsqlite) + ("r-s4vectors" ,r-s4vectors) + ("r-xml" ,r-xml))) + (native-inputs + `(("r-knitr" ,r-knitr))) + (home-page "https://bioconductor.org/packages/AnnotationForge") + (synopsis "Code for building annotation database packages") + (description + "This package provides code for generating Annotation packages and their +databases. Packages produced are intended to be used with AnnotationDbi.") + (license license:artistic2.0))) + +(define-public r-category + (package + (name "r-category") + (version "2.56.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "Category" version)) + (sha256 + (base32 + "0m77wpnica0h2ia9ajdaiga4plgz1s9wls6pdnxzk7kwl8a68wkr")))) + (properties `((upstream-name . "Category"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotate" ,r-annotate) + ("r-annotationdbi" ,r-annotationdbi) + ("r-biobase" ,r-biobase) + ("r-biocgenerics" ,r-biocgenerics) + ("r-genefilter" ,r-genefilter) + ("r-graph" ,r-graph) + ("r-gseabase" ,r-gseabase) + ("r-matrix" ,r-matrix) + ("r-rbgl" ,r-rbgl) + ("r-dbi" ,r-dbi))) + (home-page "https://bioconductor.org/packages/Category") + (synopsis "Category analysis") + (description + "This package provides a collection of tools for performing category +analysis.") + (license license:artistic2.0))) + +(define-public r-deseq2 + (package + (name "r-deseq2") + (version "1.30.1") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "DESeq2" version)) + (sha256 + (base32 + "1i0jpzsm1vl7q6qdmplj45w13lsaycxrx5pazlanjba2khn79k19")))) + (properties `((upstream-name . "DESeq2"))) + (build-system r-build-system) + (propagated-inputs + `(("r-biobase" ,r-biobase) + ("r-biocgenerics" ,r-biocgenerics) + ("r-biocparallel" ,r-biocparallel) + ("r-genefilter" ,r-genefilter) + ("r-geneplotter" ,r-geneplotter) + ("r-genomicranges" ,r-genomicranges) + ("r-ggplot2" ,r-ggplot2) + ("r-iranges" ,r-iranges) + ("r-locfit" ,r-locfit) + ("r-rcpp" ,r-rcpp) + ("r-rcpparmadillo" ,r-rcpparmadillo) + ("r-s4vectors" ,r-s4vectors) + ("r-summarizedexperiment" ,r-summarizedexperiment))) + (native-inputs + `(("r-knitr" ,r-knitr))) + (home-page "https://bioconductor.org/packages/DESeq2") + (synopsis "Differential gene expression analysis") + (description + "This package provides functions to estimate variance-mean dependence in +count data from high-throughput nucleotide sequencing assays and test for +differential expression based on a model using the negative binomial +distribution.") + (license license:lgpl3+))) + +(define-public r-dexseq + (package + (name "r-dexseq") + (version "1.36.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "DEXSeq" version)) + (sha256 + (base32 + "0wfjb42xcr4wjy8a654b74411dky8hp6sp8xdwf0sxqgsxy106qi")))) + (properties `((upstream-name . "DEXSeq"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotationdbi" ,r-annotationdbi) + ("r-biobase" ,r-biobase) + ("r-biocgenerics" ,r-biocgenerics) + ("r-biocparallel" ,r-biocparallel) + ("r-biomart" ,r-biomart) + ("r-deseq2" ,r-deseq2) + ("r-genefilter" ,r-genefilter) + ("r-geneplotter" ,r-geneplotter) + ("r-genomicranges" ,r-genomicranges) + ("r-hwriter" ,r-hwriter) + ("r-iranges" ,r-iranges) + ("r-rcolorbrewer" ,r-rcolorbrewer) + ("r-rsamtools" ,r-rsamtools) + ("r-s4vectors" ,r-s4vectors) + ("r-statmod" ,r-statmod) + ("r-stringr" ,r-stringr) + ("r-summarizedexperiment" ,r-summarizedexperiment))) + (native-inputs + `(("r-knitr" ,r-knitr))) + (home-page "https://bioconductor.org/packages/DEXSeq") + (synopsis "Inference of differential exon usage in RNA-Seq") + (description + "This package is focused on finding differential exon usage using RNA-seq +exon counts between samples with different experimental designs. It provides +functions that allows the user to make the necessary statistical tests based +on a model that uses the negative binomial distribution to estimate the +variance between biological replicates and generalized linear models for +testing. The package also provides functions for the visualization and +exploration of the results.") + (license license:gpl3+))) + +(define-public r-edger + (package + (name "r-edger") + (version "3.32.1") + (source (origin + (method url-fetch) + (uri (bioconductor-uri "edgeR" version)) + (sha256 + (base32 + "1gaic8qf6a6sy0bmydh1xzf52w0wnq31aanpvw3a30pfsi218bcp")))) + (properties `((upstream-name . "edgeR"))) + (build-system r-build-system) + (propagated-inputs + `(("r-limma" ,r-limma) + ("r-locfit" ,r-locfit) + ("r-rcpp" ,r-rcpp) + ("r-statmod" ,r-statmod))) ;for estimateDisp + (home-page "http://bioinf.wehi.edu.au/edgeR") + (synopsis "EdgeR does empirical analysis of digital gene expression data") + (description "This package can do differential expression analysis of +RNA-seq expression profiles with biological replication. It implements a range +of statistical methodology based on the negative binomial distributions, +including empirical Bayes estimation, exact tests, generalized linear models +and quasi-likelihood tests. It be applied to differential signal analysis of +other types of genomic data that produce counts, including ChIP-seq, SAGE and +CAGE.") + (license license:gpl2+))) + +(define-public r-genefilter + (package + (name "r-genefilter") + (version "1.72.1") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "genefilter" version)) + (sha256 + (base32 + "1c6h3qnjvphs977qhv5vafvsb108r0q7xhaayly6qv6adqfn94rn")))) + (build-system r-build-system) + (native-inputs + `(("gfortran" ,gfortran) + ("r-knitr" ,r-knitr))) + (propagated-inputs + `(("r-annotate" ,r-annotate) + ("r-annotationdbi" ,r-annotationdbi) + ("r-biobase" ,r-biobase) + ("r-biocgenerics" ,r-biocgenerics) + ("r-survival" ,r-survival))) + (home-page "https://bioconductor.org/packages/genefilter") + (synopsis "Filter genes from high-throughput experiments") + (description + "This package provides basic functions for filtering genes from +high-throughput sequencing experiments.") + (license license:artistic2.0))) + +(define-public r-genomeinfodb + (package + (name "r-genomeinfodb") + (version "1.26.4") + (source (origin + (method url-fetch) + (uri (bioconductor-uri "GenomeInfoDb" version)) + (sha256 + (base32 + "1sbhdpgabqbi749ixih8nlmq5id7sg8y6kkfj46r00642rc293ys")))) + (properties + `((upstream-name . "GenomeInfoDb"))) + (build-system r-build-system) + (propagated-inputs + `(("r-biocgenerics" ,r-biocgenerics) + ("r-genomeinfodbdata" ,r-genomeinfodbdata) + ("r-iranges" ,r-iranges) + ("r-rcurl" ,r-rcurl) + ("r-s4vectors" ,r-s4vectors))) + (native-inputs + `(("r-knitr" ,r-knitr))) + (home-page "https://bioconductor.org/packages/GenomeInfoDb") + (synopsis "Utilities for manipulating chromosome identifiers") + (description + "This package contains data and functions that define and allow +translation between different chromosome sequence naming conventions (e.g., +\"chr1\" versus \"1\"), including a function that attempts to place sequence +names in their natural, rather than lexicographic, order.") + (license license:artistic2.0))) + +(define-public r-gostats + (package + (name "r-gostats") + (version "2.56.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "GOstats" version)) + (sha256 + (base32 + "18q8p0fv9fl2r6zjxknfjwqxr69dlyxy6c8amzn6c6dwjq1cxk6j")))) + (properties `((upstream-name . "GOstats"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotate" ,r-annotate) + ("r-annotationdbi" ,r-annotationdbi) + ("r-annotationforge" ,r-annotationforge) + ("r-biobase" ,r-biobase) + ("r-category" ,r-category) + ("r-go-db" ,r-go-db) + ("r-graph" ,r-graph) + ("r-rgraphviz" ,r-rgraphviz) + ("r-rbgl" ,r-rbgl))) + (home-page "https://bioconductor.org/packages/GOstats") + (synopsis "Tools for manipulating GO and microarrays") + (description + "This package provides a set of tools for interacting with GO and +microarray data. A variety of basic manipulation tools for graphs, hypothesis +testing and other simple calculations.") + (license license:artistic2.0))) + +(define-public r-gseabase + (package + (name "r-gseabase") + (version "1.52.1") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "GSEABase" version)) + (sha256 + (base32 + "0dawh1kjmf6921jm77j2s2phrq5237pjc4sdh8fkln89gf48zx6i")))) + (properties `((upstream-name . "GSEABase"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotate" ,r-annotate) + ("r-annotationdbi" ,r-annotationdbi) + ("r-biobase" ,r-biobase) + ("r-biocgenerics" ,r-biocgenerics) + ("r-graph" ,r-graph) + ("r-xml" ,r-xml))) + (native-inputs + `(("r-knitr" ,r-knitr))) + (home-page "https://bioconductor.org/packages/GSEABase") + (synopsis "Gene set enrichment data structures and methods") + (description + "This package provides classes and methods to support @dfn{Gene Set +Enrichment Analysis} (GSEA).") + (license license:artistic2.0))) + (define-public r-hpar (package (name "r-hpar") @@ -1507,6 +1871,29 @@ microarrays.") the Human Protein Atlas project.") (license license:artistic2.0))) +(define-public r-rbgl + (package + (name "r-rbgl") + (version "1.66.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "RBGL" version)) + (sha256 + (base32 + "016vyzgixb3gjpzi21rbs6ngnnqcxr77krwjjf1ldnzzj8vqrqsz")))) + (properties `((upstream-name . "RBGL"))) + (build-system r-build-system) + (propagated-inputs + `(("r-bh" ,r-bh) + ("r-graph" ,r-graph))) + (home-page "https://www.bioconductor.org/packages/RBGL") + (synopsis "Interface to the Boost graph library") + (description + "This package provides a fairly extensive and comprehensive interface to +the graph algorithms contained in the Boost library.") + (license license:artistic2.0))) + (define-public r-regioner (package (name "r-regioner") @@ -1541,14 +1928,14 @@ region sets and other genomic features.") (define-public r-reportingtools (package (name "r-reportingtools") - (version "2.30.0") + (version "2.30.2") (source (origin (method url-fetch) (uri (bioconductor-uri "ReportingTools" version)) (sha256 (base32 - "0gkshdhx44yjffqf1xmvik7j5hlhszp1n9ckanaws9ky3iia8j31")))) + "1vvra7l29s7lnq996nwlpzbkrbdkr3ivkgmfp4kndfykxsl9q4vb")))) (properties `((upstream-name . "ReportingTools"))) (build-system r-build-system) @@ -1588,6 +1975,141 @@ reports together for a particular project that can be viewed in a web browser.") (license license:artistic2.0))) +(define-public r-shortread + (package + (name "r-shortread") + (version "1.48.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "ShortRead" version)) + (sha256 + (base32 + "0w4m8d3h660mmr2ymp206r1n4aqssxmkv8yxkbr5y1swrahxzfk9")))) + (properties `((upstream-name . "ShortRead"))) + (build-system r-build-system) + (inputs + `(("zlib" ,zlib))) + (propagated-inputs + `(("r-biobase" ,r-biobase) + ("r-biocgenerics" ,r-biocgenerics) + ("r-biocparallel" ,r-biocparallel) + ("r-biostrings" ,r-biostrings) + ("r-genomeinfodb" ,r-genomeinfodb) + ("r-genomicalignments" ,r-genomicalignments) + ("r-genomicranges" ,r-genomicranges) + ("r-rhtslib" ,r-rhtslib) + ("r-hwriter" ,r-hwriter) + ("r-iranges" ,r-iranges) + ("r-lattice" ,r-lattice) + ("r-latticeextra" ,r-latticeextra) + ("r-rsamtools" ,r-rsamtools) + ("r-s4vectors" ,r-s4vectors) + ("r-xvector" ,r-xvector) + ("r-zlibbioc" ,r-zlibbioc))) + (home-page "https://bioconductor.org/packages/ShortRead") + (synopsis "FASTQ input and manipulation tools") + (description + "This package implements sampling, iteration, and input of FASTQ files. +It includes functions for filtering and trimming reads, and for generating a +quality assessment report. Data are represented as +@code{DNAStringSet}-derived objects, and easily manipulated for a diversity of +purposes. The package also contains legacy support for early single-end, +ungapped alignment formats.") + (license license:artistic2.0))) + +(define-public r-systempiper + (package + (name "r-systempiper") + (version "1.24.3") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "systemPipeR" version)) + (sha256 + (base32 + "0ffazyl2q9plbhwlxi04s3fvnli6qj95n7bkjc21535bbi08xfki")))) + (properties `((upstream-name . "systemPipeR"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotate" ,r-annotate) + ("r-assertthat" ,r-assertthat) + ("r-batchtools" ,r-batchtools) + ("r-biostrings" ,r-biostrings) + ("r-deseq2" ,r-deseq2) + ("r-dot" ,r-dot) + ("r-edger" ,r-edger) + ("r-genomicfeatures" ,r-genomicfeatures) + ("r-genomicranges" ,r-genomicranges) + ("r-ggplot2" ,r-ggplot2) + ("r-go-db" ,r-go-db) + ("r-gostats" ,r-gostats) + ("r-iranges" ,r-iranges) + ("r-limma" ,r-limma) + ("r-magrittr" ,r-magrittr) + ("r-pheatmap" ,r-pheatmap) + ("r-rjson" ,r-rjson) + ("r-rsamtools" ,r-rsamtools) + ("r-rsvg" ,r-rsvg) + ("r-shortread" ,r-shortread) + ("r-stringr" ,r-stringr) + ("r-summarizedexperiment" ,r-summarizedexperiment) + ("r-yaml" ,r-yaml) + ("r-variantannotation" ,r-variantannotation))) + (native-inputs + `(("r-knitr" ,r-knitr))) + (home-page "https://github.com/tgirke/systemPipeR") + (synopsis "Next generation sequencing workflow and reporting environment") + (description + "This R package provides tools for building and running automated +end-to-end analysis workflows for a wide range of @dfn{next generation +sequence} (NGS) applications such as RNA-Seq, ChIP-Seq, VAR-Seq and Ribo-Seq. +Important features include a uniform workflow interface across different NGS +applications, automated report generation, and support for running both R and +command-line software, such as NGS aligners or peak/variant callers, on local +computers or compute clusters. Efficient handling of complex sample sets and +experimental designs is facilitated by a consistently implemented sample +annotation infrastructure.") + (license license:artistic2.0))) + +(define-public r-variantannotation + (package + (name "r-variantannotation") + (version "1.36.0") + (source (origin + (method url-fetch) + (uri (bioconductor-uri "VariantAnnotation" version)) + (sha256 + (base32 + "1sl0l6v05lfglj281nszma0h5k234md7rn2pdah8vs2d4iq3kimw")))) + (properties + `((upstream-name . "VariantAnnotation"))) + (propagated-inputs + `(("r-annotationdbi" ,r-annotationdbi) + ("r-biobase" ,r-biobase) + ("r-biocgenerics" ,r-biocgenerics) + ("r-biostrings" ,r-biostrings) + ("r-bsgenome" ,r-bsgenome) + ("r-dbi" ,r-dbi) + ("r-genomeinfodb" ,r-genomeinfodb) + ("r-genomicfeatures" ,r-genomicfeatures) + ("r-genomicranges" ,r-genomicranges) + ("r-iranges" ,r-iranges) + ("r-matrixgenerics" ,r-matrixgenerics) + ("r-summarizedexperiment" ,r-summarizedexperiment) + ("r-rhtslib" ,r-rhtslib) + ("r-rsamtools" ,r-rsamtools) + ("r-rtracklayer" ,r-rtracklayer) + ("r-s4vectors" ,r-s4vectors) + ("r-xvector" ,r-xvector) + ("r-zlibbioc" ,r-zlibbioc))) + (build-system r-build-system) + (home-page "https://bioconductor.org/packages/VariantAnnotation") + (synopsis "Package for annotation of genetic variants") + (description "This R package can annotate variants, compute amino acid +coding changes and predict coding outcomes.") + (license license:artistic2.0))) + (define-public r-geneplotter (package (name "r-geneplotter") @@ -1796,14 +2318,14 @@ signal in the input, that lead to spurious peaks during peak calling.") (define-public r-diffbind (package (name "r-diffbind") - (version "3.0.13") + (version "3.0.14") (source (origin (method url-fetch) (uri (bioconductor-uri "DiffBind" version)) (sha256 (base32 - "0kxn59v93hl5pq8d156lnbz0sslpnxyjcfrvq2gzgd91sd587qmn")))) + "1siabhjd0w7bb6v2gfhsm9j7c7c86z8m6lfsyl8p84h0zhjs2vrw")))) (properties `((upstream-name . "DiffBind"))) (build-system r-build-system) (propagated-inputs @@ -3688,33 +4210,6 @@ visualising metrics relative to experiment run time or spatially over the surface of a flowcell.") (license license:expat))) -;; This is a CRAN package, but it depends on packages from Bioconductor. -(define-public r-gkmsvm - (package - (name "r-gkmsvm") - (version "0.81.0") - (source - (origin - (method url-fetch) - (uri (cran-uri "gkmSVM" version)) - (sha256 - (base32 - "119g5rhc7ffyviz04r04aj5z1g6abnj3ddd01g7db505sdr6lapj")))) - (properties `((upstream-name . "gkmSVM"))) - (build-system r-build-system) - (propagated-inputs - `(("r-kernlab" ,r-kernlab) - ("r-rcpp" ,r-rcpp) - ("r-rocr" ,r-rocr) - ("r-seqinr" ,r-seqinr))) - (home-page "https://cran.r-project.org/web/packages/gkmSVM") - (synopsis "Gapped-kmer support vector machine") - (description - "This R package provides tools for training gapped-kmer SVM classifiers -for DNA and protein sequences. This package supports several sequence -kernels, including: gkmSVM, kmer-SVM, mismatch kernel and wildcard kernel.") - (license license:gpl2+))) - ;; This is a CRAN package, but it depends on multtest from Bioconductor. (define-public r-mutoss (package @@ -6525,14 +7020,14 @@ sequential way to mimic the manual gating strategy.") (define-public r-cytoml (package (name "r-cytoml") - (version "2.2.1") + (version "2.2.2") (source (origin (method url-fetch) (uri (bioconductor-uri "CytoML" version)) (sha256 (base32 - "1d8x49aqc95x1vx456hya5r7mal80pj9l6wmr5x5pb5r8qyzz6yq")))) + "0ckjb7bkz0cy46scrv4vl9w37g54c0yihvzmbkzilip1ikpvhxd1")))) (properties `((upstream-name . "CytoML"))) (build-system r-build-system) (arguments @@ -6547,7 +7042,8 @@ sequential way to mimic the manual gating strategy.") (string-append match "/libhdf5.a"))) #t))))) (inputs - `(("libxml2" ,libxml2))) + `(("libxml2" ,libxml2) + ("zlib" ,zlib))) (propagated-inputs `(("r-base64enc" ,r-base64enc) ("r-bh" ,r-bh) @@ -6813,14 +7309,14 @@ accessibility data.") (define-public r-circrnaprofiler (package (name "r-circrnaprofiler") - (version "1.4.0") + (version "1.4.2") (source (origin (method url-fetch) (uri (bioconductor-uri "circRNAprofiler" version)) (sha256 (base32 - "1rwpl9a5p5242aiapik0vf4ywqh7m6phzl8z8qmzcy0imbx7mpbn")))) + "0r1hfm3pc7c71irzmxmdwc27ns9hkymz4vhb4pqbli4xn37q7cg8")))) (properties `((upstream-name . "circRNAprofiler"))) (build-system r-build-system) @@ -7915,14 +8411,14 @@ visualizing RNA-sequencing datasets and differentially expressed genes.") (define-public r-chemminer (package (name "r-chemminer") - (version "3.42.1") + (version "3.42.2") (source (origin (method url-fetch) (uri (bioconductor-uri "ChemmineR" version)) (sha256 (base32 - "1853w19042c53whdnrfg1v8f07wpswf2si8q4613yrcamzg2zjkx")))) + "10d8h6w24h4s7l02zzv6q46w3yiqsjizip7mf11cvkmd6p7qxfl9")))) (properties `((upstream-name . "ChemmineR"))) (build-system r-build-system) (propagated-inputs @@ -7956,14 +8452,14 @@ structures.") (define-public r-bioassayr (package (name "r-bioassayr") - (version "1.28.0") + (version "1.28.2") (source (origin (method url-fetch) (uri (bioconductor-uri "bioassayR" version)) (sha256 (base32 - "0vxnd8wnhjdfqh47nc6y1ffiy5r9a6n3g2hyk1r9bv6vhrd0ns3f")))) + "0ylnnm31jkmi8zz78kngqv36yn6i5lvjp1i27v59svw13m4r03g5")))) (properties `((upstream-name . "bioassayR"))) (build-system r-build-system) (propagated-inputs @@ -7976,7 +8472,7 @@ structures.") ("r-xml" ,r-xml))) (native-inputs `(("r-knitr" ,r-knitr))) - (home-page "https://github.com/TylerBackman/bioassayR") + (home-page "https://github.com/girke-lab/bioassayR") (synopsis "Cross-target analysis of small molecule bioactivity") (description "bioassayR is a computational tool that enables simultaneous analysis of @@ -8125,6 +8621,55 @@ microarray data.") monograph.") (license license:artistic2.0))) +(define-public r-bioccheck + (package + (name "r-bioccheck") + (version "1.26.0") + (source (origin + (method url-fetch) + (uri (bioconductor-uri "BiocCheck" version)) + (sha256 + (base32 + "1hyncn9zqj432da95k86rm5b28nbwrvzm52jbhisifkxj1j43cib")))) + (properties + `((upstream-name . "BiocCheck"))) + (build-system r-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; This package can be used by calling BiocCheck(<package>) from + ;; within R, or by running R CMD BiocCheck <package>. This phase + ;; makes sure the latter works. For this to work, the BiocCheck + ;; script must be somewhere on the PATH (not the R bin directory). + (add-after 'install 'install-bioccheck-subcommand + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (dest-dir (string-append out "/bin")) + (script-dir + (string-append out "/site-library/BiocCheck/script/"))) + (mkdir-p dest-dir) + (symlink (string-append script-dir "/checkBadDeps.R") + (string-append dest-dir "/checkBadDeps.R")) + (symlink (string-append script-dir "/BiocCheck") + (string-append dest-dir "/BiocCheck"))) + #t))))) + (propagated-inputs + `(("r-codetools" ,r-codetools) + ("r-graph" ,r-graph) + ("r-httr" ,r-httr) + ("r-knitr" ,r-knitr) + ("r-optparse" ,r-optparse) + ("r-biocmanager" ,r-biocmanager) + ("r-biocviews" ,r-biocviews) + ("r-stringdist" ,r-stringdist))) + (native-inputs + `(("r-knitr" ,r-knitr))) + (home-page "https://bioconductor.org/packages/BiocCheck") + (synopsis "Executes Bioconductor-specific package checks") + (description "This package contains tools to perform additional quality +checks on R packages that are to be submitted to the Bioconductor repository.") + (license license:artistic2.0))) + (define-public r-biocgraph (package (name "r-biocgraph") @@ -8150,6 +8695,62 @@ monograph.") different graph related packages produced by Bioconductor.") (license license:artistic2.0))) +(define-public r-biocstyle + (package + (name "r-biocstyle") + (version "2.18.1") + (source (origin + (method url-fetch) + (uri (bioconductor-uri "BiocStyle" version)) + (sha256 + (base32 + "0rsxyna4dd99x42vc82mlkxx774vb9375llpakg53max1hhwkrqp")))) + (properties + `((upstream-name . "BiocStyle"))) + (build-system r-build-system) + (propagated-inputs + `(("r-biocmanager" ,r-biocmanager) + ("r-bookdown" ,r-bookdown) + ("r-knitr" ,r-knitr) + ("r-rmarkdown" ,r-rmarkdown) + ("r-yaml" ,r-yaml))) + (native-inputs + `(("r-knitr" ,r-knitr))) + (home-page "https://bioconductor.org/packages/BiocStyle") + (synopsis "Bioconductor formatting styles") + (description "This package provides standard formatting styles for +Bioconductor PDF and HTML documents. Package vignettes illustrate use and +functionality.") + (license license:artistic2.0))) + +(define-public r-biocviews + (package + (name "r-biocviews") + (version "1.58.1") + (source (origin + (method url-fetch) + (uri (bioconductor-uri "biocViews" version)) + (sha256 + (base32 + "1by2639z7n62z84dr8rj9jz12gsd1k8q42zsnxacxbwfwp6h0cl4")))) + (properties + `((upstream-name . "biocViews"))) + (build-system r-build-system) + (propagated-inputs + `(("r-biobase" ,r-biobase) + ("r-biocmanager" ,r-biocmanager) + ("r-graph" ,r-graph) + ("r-rbgl" ,r-rbgl) + ("r-rcurl" ,r-rcurl) + ("r-xml" ,r-xml) + ("r-runit" ,r-runit))) + (home-page "https://bioconductor.org/packages/biocViews") + (synopsis "Bioconductor package categorization helper") + (description "The purpose of biocViews is to create HTML pages that +categorize packages in a Bioconductor package repository according to keywords, +also known as views, in a controlled vocabulary.") + (license license:artistic2.0))) + (define-public r-experimenthub (package (name "r-experimenthub") @@ -8184,6 +8785,33 @@ and manages a local cache of files retrieved enabling quick and reproducible access.") (license license:artistic2.0))) +(define-public r-grohmm + (package + (name "r-grohmm") + (version "1.24.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "groHMM" version)) + (sha256 + (base32 + "08pap9wsaxl4jjlc1py0rc019gmi6daa0f9cr3ih1d97wybncanx")))) + (properties `((upstream-name . "groHMM"))) + (build-system r-build-system) + (propagated-inputs + `(("r-genomeinfodb" ,r-genomeinfodb) + ("r-genomicalignments" ,r-genomicalignments) + ("r-genomicranges" ,r-genomicranges) + ("r-iranges" ,r-iranges) + ("r-mass" ,r-mass) + ("r-rtracklayer" ,r-rtracklayer) + ("r-s4vectors" ,r-s4vectors))) + (home-page "https://github.com/Kraus-Lab/groHMM") + (synopsis "GRO-seq analysis pipeline") + (description + "This package provides a pipeline for the analysis of GRO-seq data.") + (license license:gpl3+))) + (define-public r-multiassayexperiment (package (name "r-multiassayexperiment") @@ -8695,19 +9323,46 @@ generated.") routines.") (license license:lgpl2.0+))) +(define-public r-s4vectors + (package + (name "r-s4vectors") + (version "0.28.1") + (source (origin + (method url-fetch) + (uri (bioconductor-uri "S4Vectors" version)) + (sha256 + (base32 + "0fhf4lsfxrim7glazh6ng46ykzaly5ggwpg170vcz4cc24prv0rh")))) + (properties + `((upstream-name . "S4Vectors"))) + (build-system r-build-system) + (propagated-inputs + `(("r-biocgenerics" ,r-biocgenerics))) + (home-page "https://bioconductor.org/packages/S4Vectors") + (synopsis "S4 implementation of vectors and lists") + (description + "The S4Vectors package defines the @code{Vector} and @code{List} virtual +classes and a set of generic functions that extend the semantic of ordinary +vectors and lists in R. Package developers can easily implement vector-like +or list-like objects as concrete subclasses of @code{Vector} or @code{List}. +In addition, a few low-level concrete subclasses of general interest (e.g. +@code{DataFrame}, @code{Rle}, and @code{Hits}) are implemented in the +S4Vectors package itself.") + (license license:artistic2.0))) + ;; This is a CRAN package, but it depends on preprocessorcore, which is a ;; Bioconductor package. (define-public r-wgcna (package (name "r-wgcna") - (version "1.69") + (version "1.70-3") (source (origin (method url-fetch) (uri (cran-uri "WGCNA" version)) (sha256 (base32 - "022hkprnrafvggi8pkjffkvk1qlnibmbbxxrni00wkrdbga5589f")))) + "1m6b4a2xpb02c1ajndhk8qlqnhwxa7lkkwj6nzv3l618jy1kp15r")))) (properties `((upstream-name . "WGCNA"))) (build-system r-build-system) (propagated-inputs @@ -9223,13 +9878,13 @@ of other packages.") (define-public r-scater (package (name "r-scater") - (version "1.18.3") + (version "1.18.6") (source (origin (method url-fetch) (uri (bioconductor-uri "scater" version)) (sha256 (base32 - "14f7yw277nykxmcm7wlhlsf3nizpwzz24hax1icx73lavfxmc535")))) + "0k1ls5gqv1zsn1w2kszhmbhwfccfjw8khk36s5zbf90rbbkw5609")))) (build-system r-build-system) (propagated-inputs `(("r-biocgenerics" ,r-biocgenerics) @@ -9988,6 +10643,44 @@ large-scale and fully automated analysis.") the earlier snpMatrix package, allowing for uncertainty in genotypes.") (license license:gpl3))) +(define-public r-chromstar + (package + (name "r-chromstar") + (version "1.16.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "chromstaR" version)) + (sha256 + (base32 + "0vgpb7g2cncdn82hia2yzzachyns2zbd7906662g990qjnp2xlm1")))) + (properties `((upstream-name . "chromstaR"))) + (build-system r-build-system) + (propagated-inputs + `(("r-bamsignals" ,r-bamsignals) + ("r-biocgenerics" ,r-biocgenerics) + ("r-chromstardata" ,r-chromstardata) + ("r-doparallel" ,r-doparallel) + ("r-foreach" ,r-foreach) + ("r-genomeinfodb" ,r-genomeinfodb) + ("r-genomicalignments" ,r-genomicalignments) + ("r-genomicranges" ,r-genomicranges) + ("r-ggplot2" ,r-ggplot2) + ("r-iranges" ,r-iranges) + ("r-mvtnorm" ,r-mvtnorm) + ("r-reshape2" ,r-reshape2) + ("r-rsamtools" ,r-rsamtools) + ("r-s4vectors" ,r-s4vectors))) + (native-inputs `(("r-knitr" ,r-knitr))) + (home-page "https://github.com/ataudt/chromstaR") + (synopsis "Chromatin state analysis for ChIP-Seq data") + (description + "This package implements functions for combinatorial and differential +analysis of ChIP-seq data. It includes uni- and multivariate peak-calling, +export to genome browser viewable files, and functi ons for enrichment +analyses.") + (license license:artistic2.0))) + (define-public r-sushi (package (name "r-sushi") diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index d37d93047e..e008ca16fb 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -20,6 +20,7 @@ ;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2020 Bonface Munyoki Kilyungi <bonfacemunyoki@gmail.com> ;;; Copyright © 2021 Tim Howes <timhowes@lavabit.com> +;;; Copyright © 2021 Hong Li <hli@mdc-berlin.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -52,6 +53,7 @@ #:use-module (guix build-system ocaml) #:use-module (guix build-system perl) #:use-module (guix build-system python) + #:use-module (guix build-system qt) #:use-module (guix build-system r) #:use-module (guix build-system ruby) #:use-module (guix build-system scons) @@ -125,6 +127,7 @@ #:use-module (gnu packages python-science) #:use-module (gnu packages python-web) #: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 ruby) @@ -2692,8 +2695,7 @@ trees (phylogenies) and characters.") (define-public python2-dendropy (let ((base (package-with-python2 python-dendropy))) - (package - (inherit base) + (package/inherit base (arguments `(#:phases (modify-phases %standard-phases @@ -3762,15 +3764,17 @@ particular, reads spanning multiple exons.") (define-public hisat2 (package (name "hisat2") - (version "2.0.5") + (version "2.2.1") (source (origin - (method url-fetch) - (uri (string-append "ftp://ftp.ccb.jhu.edu/pub/infphilo/hisat2" - "/downloads/hisat2-" version "-source.zip")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/DaehwanKimLab/hisat2/") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "0lywnr8kijwsc2aw10dwxic0n0yvip6fl3rjlvc8zzwahamy4x7g")))) + "0lmzdhzjkvxw7n5w40pbv5fgzd4cz0f9pxczswn3d4cr0k10k754")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no check target @@ -3783,9 +3787,12 @@ particular, reads spanning multiple exons.") (add-after 'unpack 'make-deterministic (lambda _ (substitute* "Makefile" - (("`date`") "0")) - #t)) + (("`date`") "0")))) (delete 'configure) + (add-before 'build 'build-manual + (lambda _ + (mkdir-p "doc") + (invoke "make" "doc"))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -3796,13 +3803,13 @@ particular, reads spanning multiple exons.") (find-files "." "hisat2(-(build|align|inspect)(-(s|l)(-debug)*)*)*$")) (mkdir-p doc) - (install-file "doc/manual.inc.html" doc)) - #t))))) + (install-file "doc/manual.inc.html" doc))))))) (native-inputs - `(("unzip" ,unzip) ; needed for archive from ftp - ("perl" ,perl) + `(("perl" ,perl) ("pandoc" ,pandoc))) ; for documentation - (home-page "https://ccb.jhu.edu/software/hisat2/index.shtml") + (inputs + `(("python" ,python-wrapper))) + (home-page "https://daehwankimlab.github.io/hisat2/") (synopsis "Graph-based alignment of genomic sequencing reads") (description "HISAT2 is a fast and sensitive alignment program for mapping next-generation sequencing reads (both DNA and RNA) to a population of human @@ -6534,7 +6541,7 @@ writing files into the .sra format.") `(("source" ,source) ("tar" ,tar) ("xz" ,xz))) - (home-page "http://www.seqan.de") + (home-page "https://www.seqan.de") (synopsis "Library for nucleotide sequence analysis") (description "SeqAn is a C++ library of efficient algorithms and data structures for @@ -6550,7 +6557,7 @@ bioinformatics file formats, sequence alignment, and more.") (version "1.4.2") (source (origin (method url-fetch) - (uri (string-append "http://packages.seqan.de/seqan-library/" + (uri (string-append "https://packages.seqan.de/seqan-library/" "seqan-library-" version ".tar.bz2")) (sha256 (base32 @@ -7311,387 +7318,6 @@ includes software to ") (license license:cc0)))) -(define-public r-genefilter - (package - (name "r-genefilter") - (version "1.72.1") - (source - (origin - (method url-fetch) - (uri (bioconductor-uri "genefilter" version)) - (sha256 - (base32 - "1c6h3qnjvphs977qhv5vafvsb108r0q7xhaayly6qv6adqfn94rn")))) - (build-system r-build-system) - (native-inputs - `(("gfortran" ,gfortran) - ("r-knitr" ,r-knitr))) - (propagated-inputs - `(("r-annotate" ,r-annotate) - ("r-annotationdbi" ,r-annotationdbi) - ("r-biobase" ,r-biobase) - ("r-biocgenerics" ,r-biocgenerics) - ("r-survival" ,r-survival))) - (home-page "https://bioconductor.org/packages/genefilter") - (synopsis "Filter genes from high-throughput experiments") - (description - "This package provides basic functions for filtering genes from -high-throughput sequencing experiments.") - (license license:artistic2.0))) - -(define-public r-deseq2 - (package - (name "r-deseq2") - (version "1.30.0") - (source - (origin - (method url-fetch) - (uri (bioconductor-uri "DESeq2" version)) - (sha256 - (base32 - "0q2f9cywrcmp1p7ii8f45g4dk4hsnjflq3yqhsxgnpv9fw338qpp")))) - (properties `((upstream-name . "DESeq2"))) - (build-system r-build-system) - (propagated-inputs - `(("r-biobase" ,r-biobase) - ("r-biocgenerics" ,r-biocgenerics) - ("r-biocparallel" ,r-biocparallel) - ("r-genefilter" ,r-genefilter) - ("r-geneplotter" ,r-geneplotter) - ("r-genomicranges" ,r-genomicranges) - ("r-ggplot2" ,r-ggplot2) - ("r-iranges" ,r-iranges) - ("r-locfit" ,r-locfit) - ("r-rcpp" ,r-rcpp) - ("r-rcpparmadillo" ,r-rcpparmadillo) - ("r-s4vectors" ,r-s4vectors) - ("r-summarizedexperiment" ,r-summarizedexperiment))) - (native-inputs - `(("r-knitr" ,r-knitr))) - (home-page "https://bioconductor.org/packages/DESeq2") - (synopsis "Differential gene expression analysis") - (description - "This package provides functions to estimate variance-mean dependence in -count data from high-throughput nucleotide sequencing assays and test for -differential expression based on a model using the negative binomial -distribution.") - (license license:lgpl3+))) - -(define-public r-dexseq - (package - (name "r-dexseq") - (version "1.36.0") - (source - (origin - (method url-fetch) - (uri (bioconductor-uri "DEXSeq" version)) - (sha256 - (base32 - "0wfjb42xcr4wjy8a654b74411dky8hp6sp8xdwf0sxqgsxy106qi")))) - (properties `((upstream-name . "DEXSeq"))) - (build-system r-build-system) - (propagated-inputs - `(("r-annotationdbi" ,r-annotationdbi) - ("r-biobase" ,r-biobase) - ("r-biocgenerics" ,r-biocgenerics) - ("r-biocparallel" ,r-biocparallel) - ("r-biomart" ,r-biomart) - ("r-deseq2" ,r-deseq2) - ("r-genefilter" ,r-genefilter) - ("r-geneplotter" ,r-geneplotter) - ("r-genomicranges" ,r-genomicranges) - ("r-hwriter" ,r-hwriter) - ("r-iranges" ,r-iranges) - ("r-rcolorbrewer" ,r-rcolorbrewer) - ("r-rsamtools" ,r-rsamtools) - ("r-s4vectors" ,r-s4vectors) - ("r-statmod" ,r-statmod) - ("r-stringr" ,r-stringr) - ("r-summarizedexperiment" ,r-summarizedexperiment))) - (native-inputs - `(("r-knitr" ,r-knitr))) - (home-page "https://bioconductor.org/packages/DEXSeq") - (synopsis "Inference of differential exon usage in RNA-Seq") - (description - "This package is focused on finding differential exon usage using RNA-seq -exon counts between samples with different experimental designs. It provides -functions that allows the user to make the necessary statistical tests based -on a model that uses the negative binomial distribution to estimate the -variance between biological replicates and generalized linear models for -testing. The package also provides functions for the visualization and -exploration of the results.") - (license license:gpl3+))) - -(define-public r-annotationforge - (package - (name "r-annotationforge") - (version "1.32.0") - (source - (origin - (method url-fetch) - (uri (bioconductor-uri "AnnotationForge" version)) - (sha256 - (base32 - "0y3820dkvwz09wlmz9drx6gqpsr9cwppaiz40zafwfxbz65y8px7")))) - (properties - `((upstream-name . "AnnotationForge"))) - (build-system r-build-system) - (propagated-inputs - `(("r-annotationdbi" ,r-annotationdbi) - ("r-biobase" ,r-biobase) - ("r-biocgenerics" ,r-biocgenerics) - ("r-dbi" ,r-dbi) - ("r-rcurl" ,r-rcurl) - ("r-rsqlite" ,r-rsqlite) - ("r-s4vectors" ,r-s4vectors) - ("r-xml" ,r-xml))) - (native-inputs - `(("r-knitr" ,r-knitr))) - (home-page "https://bioconductor.org/packages/AnnotationForge") - (synopsis "Code for building annotation database packages") - (description - "This package provides code for generating Annotation packages and their -databases. Packages produced are intended to be used with AnnotationDbi.") - (license license:artistic2.0))) - -(define-public r-rbgl - (package - (name "r-rbgl") - (version "1.66.0") - (source - (origin - (method url-fetch) - (uri (bioconductor-uri "RBGL" version)) - (sha256 - (base32 - "016vyzgixb3gjpzi21rbs6ngnnqcxr77krwjjf1ldnzzj8vqrqsz")))) - (properties `((upstream-name . "RBGL"))) - (build-system r-build-system) - (propagated-inputs - `(("r-bh" ,r-bh) - ("r-graph" ,r-graph))) - (home-page "https://www.bioconductor.org/packages/RBGL") - (synopsis "Interface to the Boost graph library") - (description - "This package provides a fairly extensive and comprehensive interface to -the graph algorithms contained in the Boost library.") - (license license:artistic2.0))) - -(define-public r-gseabase - (package - (name "r-gseabase") - (version "1.52.1") - (source - (origin - (method url-fetch) - (uri (bioconductor-uri "GSEABase" version)) - (sha256 - (base32 - "0dawh1kjmf6921jm77j2s2phrq5237pjc4sdh8fkln89gf48zx6i")))) - (properties `((upstream-name . "GSEABase"))) - (build-system r-build-system) - (propagated-inputs - `(("r-annotate" ,r-annotate) - ("r-annotationdbi" ,r-annotationdbi) - ("r-biobase" ,r-biobase) - ("r-biocgenerics" ,r-biocgenerics) - ("r-graph" ,r-graph) - ("r-xml" ,r-xml))) - (native-inputs - `(("r-knitr" ,r-knitr))) - (home-page "https://bioconductor.org/packages/GSEABase") - (synopsis "Gene set enrichment data structures and methods") - (description - "This package provides classes and methods to support @dfn{Gene Set -Enrichment Analysis} (GSEA).") - (license license:artistic2.0))) - -(define-public r-category - (package - (name "r-category") - (version "2.56.0") - (source - (origin - (method url-fetch) - (uri (bioconductor-uri "Category" version)) - (sha256 - (base32 - "0m77wpnica0h2ia9ajdaiga4plgz1s9wls6pdnxzk7kwl8a68wkr")))) - (properties `((upstream-name . "Category"))) - (build-system r-build-system) - (propagated-inputs - `(("r-annotate" ,r-annotate) - ("r-annotationdbi" ,r-annotationdbi) - ("r-biobase" ,r-biobase) - ("r-biocgenerics" ,r-biocgenerics) - ("r-genefilter" ,r-genefilter) - ("r-graph" ,r-graph) - ("r-gseabase" ,r-gseabase) - ("r-matrix" ,r-matrix) - ("r-rbgl" ,r-rbgl) - ("r-dbi" ,r-dbi))) - (home-page "https://bioconductor.org/packages/Category") - (synopsis "Category analysis") - (description - "This package provides a collection of tools for performing category -analysis.") - (license license:artistic2.0))) - -(define-public r-gostats - (package - (name "r-gostats") - (version "2.56.0") - (source - (origin - (method url-fetch) - (uri (bioconductor-uri "GOstats" version)) - (sha256 - (base32 - "18q8p0fv9fl2r6zjxknfjwqxr69dlyxy6c8amzn6c6dwjq1cxk6j")))) - (properties `((upstream-name . "GOstats"))) - (build-system r-build-system) - (propagated-inputs - `(("r-annotate" ,r-annotate) - ("r-annotationdbi" ,r-annotationdbi) - ("r-annotationforge" ,r-annotationforge) - ("r-biobase" ,r-biobase) - ("r-category" ,r-category) - ("r-go-db" ,r-go-db) - ("r-graph" ,r-graph) - ("r-rgraphviz" ,r-rgraphviz) - ("r-rbgl" ,r-rbgl))) - (home-page "https://bioconductor.org/packages/GOstats") - (synopsis "Tools for manipulating GO and microarrays") - (description - "This package provides a set of tools for interacting with GO and -microarray data. A variety of basic manipulation tools for graphs, hypothesis -testing and other simple calculations.") - (license license:artistic2.0))) - -(define-public r-shortread - (package - (name "r-shortread") - (version "1.48.0") - (source - (origin - (method url-fetch) - (uri (bioconductor-uri "ShortRead" version)) - (sha256 - (base32 - "0w4m8d3h660mmr2ymp206r1n4aqssxmkv8yxkbr5y1swrahxzfk9")))) - (properties `((upstream-name . "ShortRead"))) - (build-system r-build-system) - (inputs - `(("zlib" ,zlib))) - (propagated-inputs - `(("r-biobase" ,r-biobase) - ("r-biocgenerics" ,r-biocgenerics) - ("r-biocparallel" ,r-biocparallel) - ("r-biostrings" ,r-biostrings) - ("r-genomeinfodb" ,r-genomeinfodb) - ("r-genomicalignments" ,r-genomicalignments) - ("r-genomicranges" ,r-genomicranges) - ("r-rhtslib" ,r-rhtslib) - ("r-hwriter" ,r-hwriter) - ("r-iranges" ,r-iranges) - ("r-lattice" ,r-lattice) - ("r-latticeextra" ,r-latticeextra) - ("r-rsamtools" ,r-rsamtools) - ("r-s4vectors" ,r-s4vectors) - ("r-xvector" ,r-xvector) - ("r-zlibbioc" ,r-zlibbioc))) - (home-page "https://bioconductor.org/packages/ShortRead") - (synopsis "FASTQ input and manipulation tools") - (description - "This package implements sampling, iteration, and input of FASTQ files. -It includes functions for filtering and trimming reads, and for generating a -quality assessment report. Data are represented as -@code{DNAStringSet}-derived objects, and easily manipulated for a diversity of -purposes. The package also contains legacy support for early single-end, -ungapped alignment formats.") - (license license:artistic2.0))) - -(define-public r-systempiper - (package - (name "r-systempiper") - (version "1.24.3") - (source - (origin - (method url-fetch) - (uri (bioconductor-uri "systemPipeR" version)) - (sha256 - (base32 - "0ffazyl2q9plbhwlxi04s3fvnli6qj95n7bkjc21535bbi08xfki")))) - (properties `((upstream-name . "systemPipeR"))) - (build-system r-build-system) - (propagated-inputs - `(("r-annotate" ,r-annotate) - ("r-assertthat" ,r-assertthat) - ("r-batchtools" ,r-batchtools) - ("r-biostrings" ,r-biostrings) - ("r-deseq2" ,r-deseq2) - ("r-dot" ,r-dot) - ("r-edger" ,r-edger) - ("r-genomicfeatures" ,r-genomicfeatures) - ("r-genomicranges" ,r-genomicranges) - ("r-ggplot2" ,r-ggplot2) - ("r-go-db" ,r-go-db) - ("r-gostats" ,r-gostats) - ("r-iranges" ,r-iranges) - ("r-limma" ,r-limma) - ("r-magrittr" ,r-magrittr) - ("r-pheatmap" ,r-pheatmap) - ("r-rjson" ,r-rjson) - ("r-rsamtools" ,r-rsamtools) - ("r-rsvg" ,r-rsvg) - ("r-shortread" ,r-shortread) - ("r-stringr" ,r-stringr) - ("r-summarizedexperiment" ,r-summarizedexperiment) - ("r-yaml" ,r-yaml) - ("r-variantannotation" ,r-variantannotation))) - (native-inputs - `(("r-knitr" ,r-knitr))) - (home-page "https://github.com/tgirke/systemPipeR") - (synopsis "Next generation sequencing workflow and reporting environment") - (description - "This R package provides tools for building and running automated -end-to-end analysis workflows for a wide range of @dfn{next generation -sequence} (NGS) applications such as RNA-Seq, ChIP-Seq, VAR-Seq and Ribo-Seq. -Important features include a uniform workflow interface across different NGS -applications, automated report generation, and support for running both R and -command-line software, such as NGS aligners or peak/variant callers, on local -computers or compute clusters. Efficient handling of complex sample sets and -experimental designs is facilitated by a consistently implemented sample -annotation infrastructure.") - (license license:artistic2.0))) - -(define-public r-grohmm - (package - (name "r-grohmm") - (version "1.24.0") - (source - (origin - (method url-fetch) - (uri (bioconductor-uri "groHMM" version)) - (sha256 - (base32 - "08pap9wsaxl4jjlc1py0rc019gmi6daa0f9cr3ih1d97wybncanx")))) - (properties `((upstream-name . "groHMM"))) - (build-system r-build-system) - (propagated-inputs - `(("r-genomeinfodb" ,r-genomeinfodb) - ("r-genomicalignments" ,r-genomicalignments) - ("r-genomicranges" ,r-genomicranges) - ("r-iranges" ,r-iranges) - ("r-mass" ,r-mass) - ("r-rtracklayer" ,r-rtracklayer) - ("r-s4vectors" ,r-s4vectors))) - (home-page "https://github.com/Kraus-Lab/groHMM") - (synopsis "GRO-seq analysis pipeline") - (description - "This package provides a pipeline for the analysis of GRO-seq data.") - (license license:gpl3+))) - (define-public vsearch (package (name "vsearch") @@ -7996,286 +7622,6 @@ including VCF header and contents in RDF and JSON.") (home-page "https://github.com/vcflib/bio-vcf") (license license:expat))) -(define-public r-biocviews - (package - (name "r-biocviews") - (version "1.58.1") - (source (origin - (method url-fetch) - (uri (bioconductor-uri "biocViews" version)) - (sha256 - (base32 - "1by2639z7n62z84dr8rj9jz12gsd1k8q42zsnxacxbwfwp6h0cl4")))) - (properties - `((upstream-name . "biocViews"))) - (build-system r-build-system) - (propagated-inputs - `(("r-biobase" ,r-biobase) - ("r-biocmanager" ,r-biocmanager) - ("r-graph" ,r-graph) - ("r-rbgl" ,r-rbgl) - ("r-rcurl" ,r-rcurl) - ("r-xml" ,r-xml) - ("r-runit" ,r-runit))) - (home-page "https://bioconductor.org/packages/biocViews") - (synopsis "Bioconductor package categorization helper") - (description "The purpose of biocViews is to create HTML pages that -categorize packages in a Bioconductor package repository according to keywords, -also known as views, in a controlled vocabulary.") - (license license:artistic2.0))) - -(define-public r-biocstyle - (package - (name "r-biocstyle") - (version "2.18.1") - (source (origin - (method url-fetch) - (uri (bioconductor-uri "BiocStyle" version)) - (sha256 - (base32 - "0rsxyna4dd99x42vc82mlkxx774vb9375llpakg53max1hhwkrqp")))) - (properties - `((upstream-name . "BiocStyle"))) - (build-system r-build-system) - (propagated-inputs - `(("r-biocmanager" ,r-biocmanager) - ("r-bookdown" ,r-bookdown) - ("r-knitr" ,r-knitr) - ("r-rmarkdown" ,r-rmarkdown) - ("r-yaml" ,r-yaml))) - (native-inputs - `(("r-knitr" ,r-knitr))) - (home-page "https://bioconductor.org/packages/BiocStyle") - (synopsis "Bioconductor formatting styles") - (description "This package provides standard formatting styles for -Bioconductor PDF and HTML documents. Package vignettes illustrate use and -functionality.") - (license license:artistic2.0))) - -(define-public r-bioccheck - (package - (name "r-bioccheck") - (version "1.26.0") - (source (origin - (method url-fetch) - (uri (bioconductor-uri "BiocCheck" version)) - (sha256 - (base32 - "1hyncn9zqj432da95k86rm5b28nbwrvzm52jbhisifkxj1j43cib")))) - (properties - `((upstream-name . "BiocCheck"))) - (build-system r-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; This package can be used by calling BiocCheck(<package>) from - ;; within R, or by running R CMD BiocCheck <package>. This phase - ;; makes sure the latter works. For this to work, the BiocCheck - ;; script must be somewhere on the PATH (not the R bin directory). - (add-after 'install 'install-bioccheck-subcommand - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (dest-dir (string-append out "/bin")) - (script-dir - (string-append out "/site-library/BiocCheck/script/"))) - (mkdir-p dest-dir) - (symlink (string-append script-dir "/checkBadDeps.R") - (string-append dest-dir "/checkBadDeps.R")) - (symlink (string-append script-dir "/BiocCheck") - (string-append dest-dir "/BiocCheck"))) - #t))))) - (propagated-inputs - `(("r-codetools" ,r-codetools) - ("r-graph" ,r-graph) - ("r-httr" ,r-httr) - ("r-knitr" ,r-knitr) - ("r-optparse" ,r-optparse) - ("r-biocmanager" ,r-biocmanager) - ("r-biocviews" ,r-biocviews) - ("r-stringdist" ,r-stringdist))) - (native-inputs - `(("r-knitr" ,r-knitr))) - (home-page "https://bioconductor.org/packages/BiocCheck") - (synopsis "Executes Bioconductor-specific package checks") - (description "This package contains tools to perform additional quality -checks on R packages that are to be submitted to the Bioconductor repository.") - (license license:artistic2.0))) - -(define-public r-s4vectors - (package - (name "r-s4vectors") - (version "0.28.1") - (source (origin - (method url-fetch) - (uri (bioconductor-uri "S4Vectors" version)) - (sha256 - (base32 - "0fhf4lsfxrim7glazh6ng46ykzaly5ggwpg170vcz4cc24prv0rh")))) - (properties - `((upstream-name . "S4Vectors"))) - (build-system r-build-system) - (propagated-inputs - `(("r-biocgenerics" ,r-biocgenerics))) - (home-page "https://bioconductor.org/packages/S4Vectors") - (synopsis "S4 implementation of vectors and lists") - (description - "The S4Vectors package defines the @code{Vector} and @code{List} virtual -classes and a set of generic functions that extend the semantic of ordinary -vectors and lists in R. Package developers can easily implement vector-like -or list-like objects as concrete subclasses of @code{Vector} or @code{List}. -In addition, a few low-level concrete subclasses of general interest (e.g. -@code{DataFrame}, @code{Rle}, and @code{Hits}) are implemented in the -S4Vectors package itself.") - (license license:artistic2.0))) - -(define-public r-iranges - (package - (name "r-iranges") - (version "2.24.1") - (source (origin - (method url-fetch) - (uri (bioconductor-uri "IRanges" version)) - (sha256 - (base32 - "01mx46a82vd3gz705pj0kk4wpxg683s8jqxchzjia3gz00b4qw52")))) - (properties - `((upstream-name . "IRanges"))) - (build-system r-build-system) - (propagated-inputs - `(("r-biocgenerics" ,r-biocgenerics) - ("r-s4vectors" ,r-s4vectors))) - (home-page "https://bioconductor.org/packages/IRanges") - (synopsis "Infrastructure for manipulating intervals on sequences") - (description - "This package provides efficient low-level and highly reusable S4 classes -for storing ranges of integers, RLE vectors (Run-Length Encoding), and, more -generally, data that can be organized sequentially (formally defined as -@code{Vector} objects), as well as views on these @code{Vector} objects. -Efficient list-like classes are also provided for storing big collections of -instances of the basic classes. All classes in the package use consistent -naming and share the same rich and consistent \"Vector API\" as much as -possible.") - (license license:artistic2.0))) - -(define-public r-genomeinfodbdata - (package - (name "r-genomeinfodbdata") - (version "1.2.0") - (source (origin - (method url-fetch) - ;; We cannot use bioconductor-uri here because this tarball is - ;; located under "data/annotation/" instead of "bioc/". - (uri (string-append "https://bioconductor.org/packages/release/" - "data/annotation/src/contrib/GenomeInfoDbData_" - version ".tar.gz")) - (sha256 - (base32 - "0di6nlqpsyqf693k2na65ayqldih563x3zfrczpqc5q2hl5kg35c")))) - (properties - `((upstream-name . "GenomeInfoDbData"))) - (build-system r-build-system) - (home-page "https://bioconductor.org/packages/GenomeInfoDbData") - (synopsis "Species and taxonomy ID look up tables for GenomeInfoDb") - (description "This package contains data for mapping between NCBI taxonomy -ID and species. It is used by functions in the GenomeInfoDb package.") - (license license:artistic2.0))) - -(define-public r-genomeinfodb - (package - (name "r-genomeinfodb") - (version "1.26.2") - (source (origin - (method url-fetch) - (uri (bioconductor-uri "GenomeInfoDb" version)) - (sha256 - (base32 - "092izc49maxjhf6m4b0qx21ad16dz7bmxy5pysp3vkyhdrfa2f7v")))) - (properties - `((upstream-name . "GenomeInfoDb"))) - (build-system r-build-system) - (propagated-inputs - `(("r-biocgenerics" ,r-biocgenerics) - ("r-genomeinfodbdata" ,r-genomeinfodbdata) - ("r-iranges" ,r-iranges) - ("r-rcurl" ,r-rcurl) - ("r-s4vectors" ,r-s4vectors))) - (native-inputs - `(("r-knitr" ,r-knitr))) - (home-page "https://bioconductor.org/packages/GenomeInfoDb") - (synopsis "Utilities for manipulating chromosome identifiers") - (description - "This package contains data and functions that define and allow -translation between different chromosome sequence naming conventions (e.g., -\"chr1\" versus \"1\"), including a function that attempts to place sequence -names in their natural, rather than lexicographic, order.") - (license license:artistic2.0))) - -(define-public r-edger - (package - (name "r-edger") - (version "3.32.1") - (source (origin - (method url-fetch) - (uri (bioconductor-uri "edgeR" version)) - (sha256 - (base32 - "1gaic8qf6a6sy0bmydh1xzf52w0wnq31aanpvw3a30pfsi218bcp")))) - (properties `((upstream-name . "edgeR"))) - (build-system r-build-system) - (propagated-inputs - `(("r-limma" ,r-limma) - ("r-locfit" ,r-locfit) - ("r-rcpp" ,r-rcpp) - ("r-statmod" ,r-statmod))) ;for estimateDisp - (home-page "http://bioinf.wehi.edu.au/edgeR") - (synopsis "EdgeR does empirical analysis of digital gene expression data") - (description "This package can do differential expression analysis of -RNA-seq expression profiles with biological replication. It implements a range -of statistical methodology based on the negative binomial distributions, -including empirical Bayes estimation, exact tests, generalized linear models -and quasi-likelihood tests. It be applied to differential signal analysis of -other types of genomic data that produce counts, including ChIP-seq, SAGE and -CAGE.") - (license license:gpl2+))) - -(define-public r-variantannotation - (package - (name "r-variantannotation") - (version "1.36.0") - (source (origin - (method url-fetch) - (uri (bioconductor-uri "VariantAnnotation" version)) - (sha256 - (base32 - "1sl0l6v05lfglj281nszma0h5k234md7rn2pdah8vs2d4iq3kimw")))) - (properties - `((upstream-name . "VariantAnnotation"))) - (propagated-inputs - `(("r-annotationdbi" ,r-annotationdbi) - ("r-biobase" ,r-biobase) - ("r-biocgenerics" ,r-biocgenerics) - ("r-biostrings" ,r-biostrings) - ("r-bsgenome" ,r-bsgenome) - ("r-dbi" ,r-dbi) - ("r-genomeinfodb" ,r-genomeinfodb) - ("r-genomicfeatures" ,r-genomicfeatures) - ("r-genomicranges" ,r-genomicranges) - ("r-iranges" ,r-iranges) - ("r-matrixgenerics" ,r-matrixgenerics) - ("r-summarizedexperiment" ,r-summarizedexperiment) - ("r-rhtslib" ,r-rhtslib) - ("r-rsamtools" ,r-rsamtools) - ("r-rtracklayer" ,r-rtracklayer) - ("r-s4vectors" ,r-s4vectors) - ("r-xvector" ,r-xvector) - ("r-zlibbioc" ,r-zlibbioc))) - (build-system r-build-system) - (home-page "https://bioconductor.org/packages/VariantAnnotation") - (synopsis "Package for annotation of genetic variants") - (description "This R package can annotate variants, compute amino acid -coding changes and predict coding outcomes.") - (license license:artistic2.0))) - (define-public r-limma (package (name "r-limma") @@ -8551,13 +7897,13 @@ tab-delimited (tabix) files.") (define-public r-delayedarray (package (name "r-delayedarray") - (version "0.16.1") + (version "0.16.2") (source (origin (method url-fetch) (uri (bioconductor-uri "DelayedArray" version)) (sha256 (base32 - "1d75zrhha1v7dhbvjp6a4iap441l5k268w0jjxklpqywbqns7l3d")))) + "09lpj951v1afxkrnjvnhzp4qgklq23ykdwlny7k1lyfcdy9q6wm0")))) (properties `((upstream-name . "DelayedArray"))) (build-system r-build-system) @@ -8699,13 +8045,13 @@ as well as query and modify the browser state, such as the current viewport.") (define-public r-genomicfeatures (package (name "r-genomicfeatures") - (version "1.42.1") + (version "1.42.2") (source (origin (method url-fetch) (uri (bioconductor-uri "GenomicFeatures" version)) (sha256 (base32 - "17dyd9hcw6pw16y353dh55wfhxmkxka99lbsxsp9xyrhffwrxi0s")))) + "17ns5hvx5q8mrmkgb6linspwml62mi34i6al5bxlib5xi9d9f04s")))) (properties `((upstream-name . "GenomicFeatures"))) (build-system r-build-system) @@ -10954,7 +10300,7 @@ with narrow binding events such as transcription factor ChIP-seq.") (define-public trim-galore (package (name "trim-galore") - (version "0.6.1") + (version "0.6.6") (source (origin (method git-fetch) @@ -10964,7 +10310,7 @@ with narrow binding events such as transcription factor ChIP-seq.") (file-name (git-file-name name version)) (sha256 (base32 - "1y31wbxwkm9xqzr5zv1pk5q418whnmlmgmfyxxpnl12h83m2i9iv")))) + "0yrwg6325j4sb9vnplvl3jplzab0qdhp92wl480qjinpfq88j4rs")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no tests @@ -13109,6 +12455,64 @@ concatenates pieces of read sequences to generate the final unitig sequences. Thus the per-base error rate is similar to the raw input reads.") (license license:expat))) +(define-public bandage + (package + (name "bandage") + (version "0.8.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rrwick/Bandage") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1bbsn5f5x8wlspg4pbibqz6m5vin8c19nl224f3z3km0pkc97rwv")))) + (build-system qt-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'configure + (lambda _ + (invoke "qmake" "Bandage.pro"))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (substitute* "tests/bandage_command_line_tests.sh" + (("^bandagepath=.*") + (string-append "bandagepath=" (getcwd) "/Bandage\n"))) + (with-directory-excursion "tests" + (setenv "XDG_RUNTIME_DIR" (getcwd)) + (invoke "./bandage_command_line_tests.sh"))) + #t)) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (install-file "Bandage" (string-append out "/bin")) + #t)))))) + (inputs + `(("qtbase" ,qtbase) + ("qtsvg" ,qtsvg))) + (native-inputs + `(("imagemagick" ,imagemagick))) + (home-page "https://rrwick.github.io/Bandage/") + (synopsis + "Bioinformatics Application for Navigating De novo Assembly Graphs Easily") + (description "Bandage is a program for visualising de novo assembly graphs. +It allows users to interact with the assembly graphs made by de novo assemblers +such as Velvet, SPAdes, MEGAHIT and others. De novo assembly graphs contain not +only assembled contigs but also the connections between those contigs, which +were previously not easily accessible. Bandage visualises assembly graphs, with +connections, using graph layout algorithms. Nodes in the drawn graph, which +represent contigs, can be automatically labelled with their ID, length or depth. +Users can interact with the graph by moving, labelling and colouring nodes. +Sequence information can also be extracted directly from the graph viewer. By +displaying connections between contigs, Bandage opens up new possibilities for +analysing and improving de novo assemblies that are not possible by looking at +contigs alone.") + (license (list license:gpl2+ ; bundled ogdf + license:gpl3+)))) + (define-public r-circus (package (name "r-circus") @@ -13359,6 +12763,89 @@ create connections between analogous cells in different batches without altering the counts or PCA space.") (license license:expat))) +(define-public python-drep + (package + (name "python-drep") + (version "3.2.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "drep" version)) + (sha256 + (base32 + "08vk0x6v5c5n7afgd5pcjhsvb424absypxy22hw1cm1n9kirbi77")))) + (build-system python-build-system) + (propagated-inputs + `(("python-biopython" ,python-biopython) + ("python-matplotlib" ,python-matplotlib) + ("python-numpy" ,python-numpy) + ("python-pandas" ,python-pandas) + ("python-pytest" ,python-pytest) + ("python-scikit-learn" ,python-scikit-learn) + ("python-seaborn" ,python-seaborn) + ("python-tqdm" ,python-tqdm))) + (home-page "https://github.com/MrOlm/drep") + (synopsis "De-replication of microbial genomes assembled from multiple samples") + (description + "dRep is a Python program for rapidly comparing large numbers of genomes. +dRep can also \"de-replicate\" a genome set by identifying groups of highly +similar genomes and choosing the best representative genome for each genome +set.") + (license license:expat))) + +(define-public instrain + (package + (name "instrain") + (version "1.5.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "inStrain" version)) + (sha256 + (base32 + "0ykqlpf6yz4caihsaz3ys00cyvlr7wdj4s9a8rh56q5r8xf80ic0")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-relative-imports + (lambda _ + (substitute* "docker/run_instrain.py" + (("from s3_utils") + "from .s3_utils") + (("from job_utils") + "from .job_utils"))))))) + (inputs + `(("python-biopython" ,python-biopython) + ("python-boto3" ,python-boto3) + ("python-h5py" ,python-h5py) + ("python-lmfit" ,python-lmfit) + ("python-matplotlib" ,python-matplotlib) + ("python-networkx" ,python-networkx) + ("python-numba" ,python-numba) + ("python-numpy" ,python-numpy) + ("python-pandas" ,python-pandas) + ("python-psutil" ,python-psutil) + ("python-pysam" ,python-pysam) + ("python-scikit-learn" ,python-scikit-learn) + ("python-seaborn" ,python-seaborn) + ("python-tqdm" ,python-tqdm) + ;; drep is needed for deprecated plot utilities + ("python-drep" ,python-drep))) + (native-inputs + `(("python-pytest" ,python-pytest))) + (home-page "https://github.com/MrOlm/inStrain") + (synopsis "Calculation of strain-level metrics") + (description + "inStrain is a Python program for analysis of co-occurring genome +populations from metagenomes that allows highly accurate genome comparisons, +analysis of coverage, microdiversity, and linkage, and sensitive SNP detection +with gene localization and synonymous non-synonymous identification.") + ;; The tool itself says that the license is "MIT", but the repository + ;; contains a LICENSE file with the GPLv3. + ;; See https://github.com/MrOlm/inStrain/issues/51 + (license license:expat))) + (define-public gffcompare (let ((commit "be56ef4349ea3966c12c6397f85e49e047361c41") (revision "1")) @@ -14367,14 +13854,14 @@ is a Cython wrapper for FIt-SNE.") (define-public bbmap (package (name "bbmap") - (version "35.82") + (version "38.90") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/bbmap/BBMap_" version ".tar.gz")) (sha256 (base32 - "1q4rfhxcb6z3gm8zg2davjz98w22lkf4hm9ikxz9kdl93pil3wkd")))) + "1wb94bcc006qq86x77z2rz0lc8m9f1kpnw6gdhjfg9bdaqf56rm3")))) (build-system ant-build-system) (arguments `(#:build-target "dist" @@ -15785,3 +15272,64 @@ biological processes. SBML is useful for models of metabolism, cell signaling, and more. It continues to be evolved and expanded by an international community.") (license license:lgpl2.1+))) + +(define-public r-signac + (let ((commit "e0512d348adeda4a3f23a2e8f56d1fe09840e03c") + (revision "1")) + (package + (name "r-signac") + (version (git-version "1.1.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/timoast/signac/") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1yihhrv7zs87ax61la1nb4y12lg3knraw4b20k5digbcwm8488lb")))) + (properties `((upstream-name . "Signac"))) + (build-system r-build-system) + (inputs `(("zlib" ,zlib))) + (propagated-inputs + `(("r-annotationfilter" ,r-annotationfilter) + ("r-biocgenerics" ,r-biocgenerics) + ("r-biostrings" ,r-biostrings) + ("r-biovizbase" ,r-biovizbase) + ("r-data-table" ,r-data-table) + ("r-dplyr" ,r-dplyr) + ("r-fastmatch" ,r-fastmatch) + ("r-future" ,r-future) + ("r-future-apply" ,r-future-apply) + ("r-genomeinfodb" ,r-genomeinfodb) + ("r-genomicranges" ,r-genomicranges) + ("r-ggbio" ,r-ggbio) + ("r-ggforce" ,r-ggforce) + ("r-ggplot2" ,r-ggplot2) + ("r-ggrepel" ,r-ggrepel) + ("r-ggseqlogo" ,r-ggseqlogo) + ("r-iranges" ,r-iranges) + ("r-irlba" ,r-irlba) + ("r-lsa" ,r-lsa) + ("r-matrix" ,r-matrix) + ("r-patchwork" ,r-patchwork) + ("r-pbapply" ,r-pbapply) + ("r-rcpp" ,r-rcpp) + ("r-rcpproll" ,r-rcpproll) + ("r-rsamtools" ,r-rsamtools) + ("r-s4vectors" ,r-s4vectors) + ("r-scales" ,r-scales) + ("r-seurat" ,r-seurat) + ("r-seuratobject" ,r-seuratobject) + ("r-stringi" ,r-stringi) + ("r-tidyr" ,r-tidyr))) + (home-page "https://github.com/timoast/signac/") + (synopsis "Analysis of single-cell chromatin data") + (description + "This package provides a framework for the analysis and exploration of +single-cell chromatin data. The Signac package contains functions for +quantifying single-cell chromatin data, computing per-cell quality control +metrics, dimension reduction and normalization, visualization, and DNA +sequence motif analysis.") + (license license:expat)))) diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 99281b2cc6..c9a3d2c217 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -1027,15 +1027,14 @@ tools, and more.") (define-public os-prober (package (name "os-prober") - (version "1.77") + (version "1.78") (source (origin (method url-fetch) (uri (string-append "mirror://debian/pool/main/o/os-prober/os-prober_" version ".tar.xz")) (sha256 - (base32 - "0pvhrw4h05n21zw7ig3a3bi8aqdh6zxs0x1znz4g7vhspsps93ld")))) + (base32 "1sahk72blsrlirly4xlwa8jfxrpwagyn7b81p92q2s9m218rz43f")))) (build-system gnu-build-system) (arguments `(#:modules ((guix build gnu-build-system) diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm index fee2ae1199..c50e94e891 100644 --- a/gnu/packages/bootstrap.scm +++ b/gnu/packages/bootstrap.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2019 Carl Dong <contact@carldong.me> ;;; Copyright © 2019 Léo Le Bouter <lle-bout@zaclys.net> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> +;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -123,16 +124,27 @@ ("tar" ,(base32 "06gmqdjq3rl8lr47b9fyx4ifnm5x56ymc8lyryp1ax1j2s4y5jb4")) ("xz" - ,(base32 "09j1d69qr0hhhx4k4ih8wp00dfc9y4rp01hfg3vc15yxd0jxabh5"))))) + ,(base32 "09j1d69qr0hhhx4k4ih8wp00dfc9y4rp01hfg3vc15yxd0jxabh5"))) + ("powerpc64le-linux" + ("bash" + ,(base32 "1kiw7n6mkdy2x9in97646nb7aiayxr090ws1hbrlazah3fjqi6nj")) + ("mkdir" + ,(base32 "04dpvi231zcl40ig048vqqnyvmnkw1byrm1q1qqvs1f0g16yhrrk")) + ("tar" + ,(base32 "150c8948cz8r208g6qgn2dn4f4zs5kpgbpbg6bwag6yw42rapw2l")) + ("xz" + ,(base32 "0v5738idy9pqzcbrjdpxi5c6qs5m78zrpsydmrpx5cfcfzbkxzjh"))))) (define %bootstrap-executable-base-urls ;; This is where the bootstrap executables come from. '("https://git.savannah.gnu.org/cgit/guix.git/plain/gnu/packages/bootstrap/" + "https://alpha.gnu.org/gnu/guix/bootstrap/" "http://lilypond.org/janneke/guix/")) (define (bootstrap-executable-file-name system program) "Return the FILE-NAME part of url where PROGRAM can be found for SYSTEM." (match system + ("powerpc64le-linux" (string-append system "/20210106/" program)) ("i586-gnu" (string-append system "/20200326/" program)) (_ (string-append system "/" program "?id=44f07d1dc6806e97c4e9ee3e6be883cc59dc666e")))) @@ -333,6 +345,8 @@ or false to signal an error." "/20150101/guile-2.0.11.tar.xz") ("i586-gnu" "/20200326/guile-static-stripped-2.0.14-i586-pc-gnu.tar.xz") + ("powerpc64le-linux" + "/20210106/guile-static-stripped-2.0.14-powerpc64le-linux-gnu.tar.xz") (_ "/20131110/guile-2.0.9.tar.xz")))) @@ -347,6 +361,8 @@ or false to signal an error." (base32 "0fzp93lvi0hn54acc0fpvhc7bvl0yc853k62l958cihk03q80ilr")) ("armhf-linux" (base32 "1mi3brl7l58aww34rawhvja84xc7l1b4hmwdmc36fp9q9mfx0lg5")) + ("powerpc64le-linux" + (base32 "1rnyfz5q38jyvxddj617443bnnzql4vw0mxzqpj8wz48wx4bhbq0")) ("aarch64-linux" (base32 "1giy2aprjmn5fp9c4s9r125fljw4wv6ixy5739i5bffw4jgr0f9r")) ("i586-gnu" @@ -480,6 +496,8 @@ $out/bin/guile --version~%" "/20150101/static-binaries.tar.xz") ("aarch64-linux" "/20170217/static-binaries.tar.xz") + ("powerpc64le-linux" + "/20210106/static-binaries-0-powerpc64le-linux-gnu.tar.xz") ("i586-gnu" "/20200326/static-binaries-0-i586-pc-gnu.tar.xz") (_ @@ -499,6 +517,9 @@ $out/bin/guile --version~%" ("aarch64-linux" (base32 "18dfiq6c6xhsdpbidigw6480wh0vdgsxqq3xindq4lpdgqlccpfh")) + ("powerpc64le-linux" + (base32 + "0afs2j9z2d1hjq42myz4iwjh0aqgzf59inifw87x6b6p1z9wv92v")) ("i586-gnu" (base32 "17kllqnf3fg79gzy9ansgi801c46yh9c23h4d923plvb0nfm1cfn")) @@ -548,6 +569,8 @@ $out/bin/guile --version~%" "/20150101/binutils-2.25.tar.xz") ("aarch64-linux" "/20170217/binutils-2.27.tar.xz") + ("powerpc64le-linux" + "/20210106/binutils-static-stripped-2.34-powerpc64le-linux-gnu.tar.xz") ("i586-gnu" "/20200326/binutils-static-stripped-2.34-i586-pc-gnu.tar.xz") (_ @@ -567,6 +590,9 @@ $out/bin/guile --version~%" ("aarch64-linux" (base32 "111s7ilfiby033rczc71797xrmaa3qlv179wdvsaq132pd51xv3n")) + ("powerpc64le-linux" + (base32 + "1klxy945c61134mzhqzz2gbk8w0n8jq7arwkrvz78d22ff2q0cwz")) ("i586-gnu" (base32 "11kykv1kmqc5wln57rs4klaqa13hm952smkc57qcsyss21kfjprs")) @@ -623,6 +649,8 @@ $out/bin/guile --version~%" "/20150101/glibc-2.20.tar.xz") ("aarch64-linux" "/20170217/glibc-2.25.tar.xz") + ("powerpc64le-linux" + "/20210106/glibc-stripped-2.31-powerpc64le-linux-gnu.tar.xz") ("i586-gnu" "/20200326/glibc-stripped-2.31-i586-pc-gnu.tar.xz") (_ @@ -642,6 +670,9 @@ $out/bin/guile --version~%" ("aarch64-linux" (base32 "07nx3x8598i2924rjnlrncg6rm61c9bmcczbbcpbx0fb742nvv5c")) + ("powerpc64le-linux" + (base32 + "1a1df6z8gkaq09md3jy94lixnh20599p58p0s856p10xwjaqr1iz")) ("i586-gnu" (base32 "14ddm10lpbas8bankmn5bcrlqvz1v5dnn1qjzxb19r57vd2w5952")) @@ -714,6 +745,8 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \ "/20150101/gcc-4.8.4.tar.xz") ("aarch64-linux" "/20170217/gcc-5.4.0.tar.xz") + ("powerpc64le-linux" + "/20210106/gcc-stripped-5.5.0-powerpc64le-linux-gnu.tar.xz") ("i586-gnu" "/20200326/gcc-stripped-5.5.0-i586-pc-gnu.tar.xz") (_ @@ -733,6 +766,9 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \ ("aarch64-linux" (base32 "1ar3vdzyqbfm0z36kmvazvfswxhcihlacl2dzdjgiq25cqnq9ih1")) + ("powerpc64le-linux" + (base32 + "151kjsai25vz2s667bgzpisx8f281fpl3n9pxz2yrp9jlnadz3m1")) ("i586-gnu" (base32 "1j2zc58wzil71a34h7c70sd68dmqvcscrw3rmn2whq79vd70zvv5")) diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm index 27733a8c53..5e25c60f3b 100644 --- a/gnu/packages/build-tools.scm +++ b/gnu/packages/build-tools.scm @@ -13,6 +13,7 @@ ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2021 qblade <qblade@protonmail.com> +;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -313,6 +314,30 @@ resembles Python.") (base32 "19cjy24mfaswxyvqmns6rd7hx05ybqb663zlgklspfr8l4jjmvbb")))))) +(define-public meson-next + (package + (inherit meson) + (version "0.57.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/mesonbuild/meson/" + "releases/download/" version "/meson-" + version ".tar.gz")) + (sha256 + (base32 + "19n8alcpzv6npgp27iqljkmvdmr7s2c7zm8y997j1nlvpa1cgqbj")))))) + +(define-public meson-for-build + (package + (inherit meson) + (name "meson-for-build") + (source (origin + (inherit (package-source meson)) + (patches (search-patches "meson-for-build-rpath.patch")))) + + ;; People should probably install "meson", not "meson-for-build". + (properties `((hidden? . #t))))) + (define-public premake4 (package (name "premake") @@ -451,7 +476,7 @@ a build worked by accident.") (define-public osc (package (name "osc") - (version "0.165.2") + (version "0.172.0") (source (origin (method git-fetch) @@ -460,7 +485,7 @@ a build worked by accident.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0yjwvbvv9fgkpiyvrag89zxchyn3nbgp9jz0wn5p0z9450zwfyz6")))) + (base32 "1sqdnkka3c6b6hwnrmlwrgy7w62cp8raq8mph9pgd2lydzzbvwlp")))) (build-system python-build-system) (arguments `(#:phases @@ -474,6 +499,8 @@ a build worked by accident.") (string-append bin "osc-wrapper.py") (string-append bin "osc")) #t)))))) + (native-inputs + `(("python-chardet" ,python-chardet))) (inputs `(("python-m2crypto" ,python-m2crypto) ("python-pycurl" ,python-pycurl) diff --git a/gnu/packages/busybox.scm b/gnu/packages/busybox.scm index 5af67e084d..7ede3ee330 100644 --- a/gnu/packages/busybox.scm +++ b/gnu/packages/busybox.scm @@ -33,7 +33,7 @@ (define-public busybox (package (name "busybox") - (version "1.32.1") + (version "1.33.0") (source (origin (method url-fetch) (uri (string-append @@ -41,7 +41,8 @@ version ".tar.bz2")) (sha256 (base32 - "1vhd59qmrdyrr1q7rvxmyl96z192mxl089hi87yl0hcp6fyw8mwx")))) + "1gcg7ggg79apdlp5qnrh9pbjl10fx30yn33p21kxqpm8j4f6hs6m")) + (patches (search-patches "busybox-CVE-2021-28831.patch")))) (build-system gnu-build-system) (arguments '(#:phases diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm index d9e5e4d7de..429ff94070 100644 --- a/gnu/packages/c.scm +++ b/gnu/packages/c.scm @@ -10,7 +10,7 @@ ;;; Copyright © 2020 Marius Bakke <marius@gnu.org> ;;; Copyright © 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com> ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> -;;; Copyright © 2020 Greg Hogan <code@greghogan.com> +;;; Copyright © 2020, 2021 Greg Hogan <code@greghogan.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -52,6 +52,7 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages gettext) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages tls) #:use-module (gnu packages xml)) (define-public tcc @@ -447,7 +448,7 @@ more, like escaping special characters.") (define-public libfastjson (package (name "libfastjson") - (version "0.99.8") + (version "0.99.9") (source (origin (method git-fetch) @@ -456,8 +457,7 @@ more, like escaping special characters.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "0qhs0g9slj3p0v2z4s3cnsx44msrlb4k78ljg7714qiziqbrbwyl")))) + (base32 "12rqcdqxazw8czzxbivdapdgj19pcswpw1jp2915sxbljis83g6q")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) @@ -546,7 +546,7 @@ portability.") (define-public aws-c-common (package (name "aws-c-common") - (version "0.4.63") + (version "0.5.2") (source (origin (method git-fetch) (uri (git-reference @@ -555,8 +555,11 @@ portability.") (file-name (git-file-name name version)) (sha256 (base32 - "16bc6fn1gq3nqcrzgpi2kjphq7xkkr73aljakrg89ysm6hyzyim9")))) + "0rd2qzaa9mmn5f6f2bl1wgv54f17pqx3vwyy9f8ylh59qfnilpmg")))) (build-system cmake-build-system) + (arguments + '(#:configure-flags + '("-DBUILD_SHARED_LIBS=ON"))) (synopsis "Amazon Web Services core C library") (description "This library provides common C99 primitives, configuration, data @@ -567,7 +570,7 @@ portability.") (define-public aws-checksums (package (name "aws-checksums") - (version "0.1.10") + (version "0.1.11") (source (origin (method git-fetch) (uri (git-reference @@ -576,9 +579,12 @@ portability.") (file-name (git-file-name name version)) (sha256 (base32 - "1f9scl5734pgjlsixspwljrrlndzhllwlfygdcr1gx5p0za08zjb")) + "1pjs31x3cq9wyw511y00kksz660m8im9zxk30hid8iwlilcbnyvx")) (patches (search-patches "aws-checksums-cmake-prefix.patch")))) (build-system cmake-build-system) + (arguments + '(#:configure-flags + '("-DBUILD_SHARED_LIBS=ON"))) (inputs `(("aws-c-common" ,aws-c-common))) (synopsis "Amazon Web Services checksum library") @@ -591,7 +597,7 @@ with fallback to efficient C99 software implementations.") (define-public aws-c-event-stream (package (name "aws-c-event-stream") - (version "0.1.6") + (version "0.2.7") (source (origin (method git-fetch) (uri (git-reference @@ -600,13 +606,19 @@ with fallback to efficient C99 software implementations.") (file-name (git-file-name name version)) (sha256 (base32 - "1vl9ainc4klv0g9gk1iv4833bsllni6jxn6mwb0fnv2dnlz7zv9q")) + "0xwwr7gdgfrphk6j7vk12rgimfim6m4qnj6hg8hgg16cplhvsfzh")) (patches (search-patches "aws-c-event-stream-cmake-prefix.patch")))) (build-system cmake-build-system) + (arguments + '(#:configure-flags + '("-DBUILD_SHARED_LIBS=ON"))) (propagated-inputs - `(("aws-c-common" ,aws-c-common))) + `(("aws-c-common" ,aws-c-common) + ("aws-c-io" ,aws-c-io) + ("aws-checksums" ,aws-checksums))) (inputs - `(("aws-checksums" ,aws-checksums))) + `(("aws-c-cal" ,aws-c-cal) + ("s2n" ,s2n))) (synopsis "Amazon Web Services client-server message format library") (description "This library is a C99 implementation for @acronym{AWS,Amazon Web Services} @@ -614,3 +626,63 @@ event stream encoding, a binary format for bidirectional client-server communication.") (home-page "https://github.com/awslabs/aws-c-event-stream") (license license:asl2.0))) + +(define-public aws-c-io + (package + (name "aws-c-io") + (version "0.9.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url (string-append "https://github.com/awslabs/" name)) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1vwyf1pm0hhcypyjc9xh9x7y50ic79xlbck1yf9d9wz0bnh43p7v")) + (patches + (search-patches + "aws-c-io-cmake-prefix.patch" + "aws-c-io-disable-networking-tests.patch")))) + (build-system cmake-build-system) + (arguments + '(#:configure-flags + '("-DBUILD_SHARED_LIBS=ON"))) + (propagated-inputs + `(("aws-c-cal" ,aws-c-cal) + ("aws-c-common" ,aws-c-common) + ("s2n" ,s2n))) + (synopsis "Event driven framework for implementing application protocols") + (description "This library provides a C99 framework for constructing +event-driven, asynchronous network application protocols.") + (home-page "https://github.com/awslabs/aws-c-io") + (license license:asl2.0))) + +(define-public aws-c-cal + (package + (name "aws-c-cal") + (version "0.4.5") + (source (origin + (method git-fetch) + (uri (git-reference + (url (string-append "https://github.com/awslabs/" name)) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "04acra1mnzw9q7jycs5966akfbgnx96hkrq90nq0dhw8pvarlyv6")) + (patches (search-patches "aws-c-cal-cmake-prefix.patch")))) + (build-system cmake-build-system) + (arguments + '(#:configure-flags + '("-DBUILD_SHARED_LIBS=ON"))) + (propagated-inputs + `(("aws-c-common" ,aws-c-common))) + (inputs + `(("openssl" ,openssl) + ("openssl:static" ,openssl "static"))) + (synopsis "Amazon Web Services Crypto Abstraction Layer") + (description "This library provides a C99 wrapper for hash, HMAC, and ECC +cryptographic primitives for the @acronym{AWS,Amazon Web Services} SDK.") + (home-page "https://github.com/awslabs/aws-c-cal") + (license license:asl2.0))) diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index 50f4e4b0ef..81e583775c 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -16,7 +16,7 @@ ;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com> ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> -;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net> @@ -562,7 +562,7 @@ and it supports a very flexible form of test discovery.") (define-public doctest (package (name "doctest") - (version "2.4.4") + (version "2.4.5") (home-page "https://github.com/onqtam/doctest") (source (origin (method git-fetch) @@ -570,7 +570,7 @@ and it supports a very flexible form of test discovery.") (file-name (git-file-name name version)) (sha256 (base32 - "0xldd6cr1w3bn33rdb7yc6p57w143cgnjb48ig1b99iwvvkw599n")))) + "1pc34dvpgdzx3paqdf0khgs87kvjncx27yn434f5ic33r1lwr9r4")))) (build-system cmake-build-system) (synopsis "C++ test framework") (description @@ -837,7 +837,7 @@ have been used.") (define-public python2-mock (let ((base (package-with-python2 (strip-python2-variant python-mock)))) - (package (inherit base) + (package/inherit base (propagated-inputs `(("python2-functools32" ,python2-functools32) ("python2-funcsigs" ,python2-funcsigs) @@ -1197,7 +1197,7 @@ same arguments.") (define-public python2-pytest-mock (let ((base (package-with-python2 (strip-python2-variant python-pytest-mock)))) - (package (inherit base) + (package/inherit base (propagated-inputs `(("python2-mock" ,python2-mock) ,@(package-propagated-inputs base)))))) @@ -2811,15 +2811,27 @@ system. The code under test requires no modification to work with pyfakefs.") (define-public python-aiounittest (package (name "python-aiounittest") - (version "1.3.1") + (version "1.4.0") + ;; Pypi package lacks tests. (source - (origin - (method url-fetch) - (uri (pypi-uri "aiounittest" version)) - (sha256 - (base32 - "1q4bhmi80smaa1lknvdna0sx3915naczlfna1fp435nf6cjyrjl1")))) + (origin (method git-fetch) + (uri (git-reference + (url "https://github.com/kwarunek/aiounittest.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0hql5mw62lclrpblbh7xvinwjfcdcfvhhlvl7xlq2hi9isjq1c8r")))) (build-system python-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + (invoke "nosetests" "-v") + (format #t "test suite not run~%")) + #t))))) + (propagated-inputs `(("python-wrapt" ,python-wrapt))) (native-inputs `(("python-coverage" ,python-coverage) ("python-nose" ,python-nose))) diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index f9ca357933..de7c887061 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -65,7 +65,6 @@ #:use-module (gnu packages regex) #:use-module (gnu packages serialization) #:use-module (gnu packages speech) - #:use-module (gnu packages tls) #:use-module (gnu packages valgrind) #:use-module (gnu packages vulkan) #:use-module (gnu packages video) @@ -96,7 +95,6 @@ "net/third_party/quiche" ;BSD-3 "net/third_party/uri_template" ;ASL2.0 "third_party/abseil-cpp" ;ASL2.0 - "third_party/adobe/flash/flapper_version.h" ;no license, trivial "third_party/angle" ;BSD-3 "third_party/angle/src/common/third_party/base" ;BSD-3 "third_party/angle/src/common/third_party/smhasher" ;Public domain @@ -105,10 +103,6 @@ "third_party/angle/src/third_party/libXNVCtrl" ;Expat "third_party/angle/src/third_party/trace_event" ;BSD-3 "third_party/angle/src/third_party/volk" ;Expat - "third_party/angle/third_party/vulkan-headers" ;ASL2.0 - "third_party/angle/third_party/vulkan-loader" ;ASL2.0 - "third_party/angle/third_party/vulkan-tools" ;ASL2.0 - "third_party/angle/third_party/vulkan-validation-layers" ;ASL2.0 "third_party/apple_apsl" ;APSL2.0 "third_party/axe-core" ;MPL2.0 "third_party/blink" ;BSD-3, LGPL2+ @@ -161,7 +155,6 @@ "third_party/emoji-segmenter" ;ASL2.0 "third_party/flatbuffers" ;ASL2.0 "third_party/fusejs" ;ASL2.0 - "third_party/glslang" ;BSD-3, Expat, ASL2.0 "third_party/google_input_tools" ;ASL2.0 "third_party/google_input_tools/third_party/closure_library" ;ASL2.0 "third_party/google_input_tools/third_party/closure_library/third_party/closure" ;Expat @@ -189,6 +182,8 @@ "third_party/libsrtp" ;BSD-3 "third_party/libsync" ;ASL2.0 "third_party/libudev" ;LGPL2.1+ + "third_party/liburlpattern" ;Expat + "third_party/libva_protected_content" ;Expat ;; FIXME: build/linux/unbundle/libvpx.gn does not work for all users. "third_party/libvpx" ;BSD-3 @@ -203,6 +198,7 @@ "third_party/markupsafe" ;BSD-3 "third_party/mesa_headers" ;Expat, SGI "third_party/metrics_proto" ;BSD-3 + "third_party/minigbm" ;BSD-3 "third_party/modp_b64" ;BSD-3 "third_party/nasm" ;BSD-2 "third_party/nearby" ;ASL2.0 @@ -220,7 +216,8 @@ "third_party/pdfium/third_party/skia_shared" ;BSD-3 "third_party/pdfium/third_party/freetype/include/pstables.h" ;FreeType "third_party/perfetto" ;ASL2.0 - "third_party/pffft" ;the "FFTPACK" license, similar to BSD-3 + "third_party/perfetto/protos/third_party/chromium" ;BSD-3 + "third_party/pffft" ;the "FFTPACK" license "third_party/ply" ;BSD-3 "third_party/polymer" ;BSD-3 "third_party/private_membership" ;ASL2.0 @@ -236,7 +233,6 @@ "third_party/s2cellid" ;ASL2.0 "third_party/schema_org" ;CC-BY-SA3.0 "third_party/securemessage" ;ASL2.0 - "third_party/shaka-player" ;ASL2.0 "third_party/shell-encryption" ;ASL2.0 "third_party/skia" ;BSD-3 "third_party/skia/include/third_party/skcms" ;BSD-3 @@ -244,8 +240,6 @@ "third_party/skia/third_party/vulkanmemoryallocator" ;BSD-3, Expat "third_party/smhasher" ;Expat, public domain "third_party/speech-dispatcher" ;GPL2+ - "third_party/spirv-headers" ;ASL2.0 - "third_party/SPIRV-Tools" ;ASL2.0 "third_party/sqlite" ;Public domain "third_party/swiftshader" ;ASL2.0 "third_party/swiftshader/third_party/astc-encoder" ;ASL2.0 @@ -258,6 +252,7 @@ "third_party/ukey2" ;ASL2.0 "third_party/usb_ids" ;BSD-3 "third_party/usrsctp" ;BSD-2 + "third_party/vulkan-deps" ;ASL2.0, BSD-3, Expat "third_party/vulkan_memory_allocator" ;Expat "third_party/wayland/protocol" ;Expat "third_party/wayland/stubs" ;BSD-3, Expat @@ -310,8 +305,7 @@ (string-append "ungoogled-chromium-" category "-" name)))) (sha256 (base32 hash)))) -(define %chromium-version "88.0.4324.182") -(define %ungoogled-revision "b98f2d51406c84a75df96f0da9dee3c0d790963d") +(define %ungoogled-revision "89.0.4389.90-1") (define %debian-revision "debian/84.0.4147.105-1") (define %debian-patches @@ -326,10 +320,12 @@ (uri (git-reference (url "https://github.com/Eloston/ungoogled-chromium") (commit %ungoogled-revision))) (file-name (git-file-name "ungoogled-chromium" - (string-take %ungoogled-revision 7))) + (if (= 40 (string-length %ungoogled-revision)) + (string-take %ungoogled-revision 7) + %ungoogled-revision))) (sha256 (base32 - "1c9y1dn9s06pskkjw2r8lsbplak8m2rwh4drixvjpif7b4cgdhay")))) + "0pr756d1b4wc67d61b21yszi7mx1hsjy14i44j0kvcwm05pgnf79")))) (define %guix-patches (list (local-file @@ -337,6 +333,9 @@ (search-patch "ungoogled-chromium-system-nspr.patch"))) (local-file (assume-valid-file-name + (search-patch "ungoogled-chromium-system-opus.patch"))) + (local-file + (assume-valid-file-name (search-patch "ungoogled-chromium-extension-search-path.patch"))))) ;; This is a source 'snippet' that does the following: @@ -418,7 +417,7 @@ (define libvpx/chromium (package (inherit libvpx) - (version "1.9.0-88-g12059d956") + (version "1.9.0-104-gb5d77a48d") (source (origin (inherit (package-source libvpx)) (uri (git-reference @@ -427,7 +426,7 @@ (file-name (git-file-name "libvpx" version)) (sha256 (base32 - "14knnvfaskfz97vs3lfqrdpcbcx22s6qp16213wdnvnsf4c1lx1b")))))) + "07nkpx8myw5nd4bkaj6l4wr5ipk2c6lg9cwirz0i5qbr659051rk")))))) ;; 'make-ld-wrapper' can only work with an 'ld' executable, so we need ;; this trick to make it wrap 'lld'. @@ -457,17 +456,17 @@ (define-public ungoogled-chromium (package (name "ungoogled-chromium") - (version (string-append %chromium-version "-0." - (string-take %ungoogled-revision 7))) + (version %ungoogled-revision) (synopsis "Graphical web browser") (source (origin (method url-fetch) (uri (string-append "https://commondatastorage.googleapis.com" "/chromium-browser-official/chromium-" - %chromium-version ".tar.xz")) + (string-drop-right %ungoogled-revision 2) + ".tar.xz")) (sha256 (base32 - "10av060ix6lgsvv99lyvyy03r0m3zwdg4hddbi6dycrdxk1iyh9h")) + "16i7bgk2jbcqs2p28nk5mlf0k6wah594pcsfm8b154nxbyf0iihi")) (modules '((guix build utils))) (snippet (force ungoogled-chromium-snippet)))) (build-system gnu-build-system) @@ -488,9 +487,6 @@ ;; Use the "official" release optimizations, as opposed to ;; a developer build. "is_official_build=true" - (string-append "max_jobs_per_link=" - ;; Respect the default cap of 8 jobs. - (number->string (min 8 (parallel-job-count)))) "clang_use_chrome_plugins=false" "chrome_pgo_phase=0" "use_sysroot=false" @@ -533,7 +529,6 @@ "use_system_zlib=true" "use_gnome_keyring=false" ;deprecated by libsecret - "use_openh264=true" "use_pulseaudio=true" "link_pulseaudio=true" "icu_use_data_file=false" @@ -548,6 +543,10 @@ '("use_vaapi=true") '()) + "media_use_ffmpeg=true" + "media_use_libvpx=true" + "media_use_openh264=true" + ;; Do not artifically restrict formats supported by system ffmpeg. "proprietary_codecs=true" "ffmpeg_branding=\"Chrome\"" @@ -556,17 +555,15 @@ "rtc_use_h264=true" "rtc_use_pipewire=true" "rtc_link_pipewire=true" + "rtc_pipewire_version=\"0.3\"" ;; Don't use bundled sources. "rtc_build_json=true" ;FIXME: libc++ std::string ABI difference "rtc_build_libevent=false" "rtc_build_libvpx=false" "rtc_build_opus=false" - "rtc_build_ssl=false" "rtc_build_libsrtp=true" ;FIXME: fails to find headers "rtc_build_usrsctp=true" ;TODO: package this - (string-append "rtc_ssl_root=\"" - (assoc-ref %build-inputs "openssl") - "/include/openssl\"")) + "rtc_build_ssl=true") ;XXX: the bundled BoringSSL is required? #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-stuff @@ -604,12 +601,6 @@ (("third_party/icu/source/(common|i18n)/") "")) - ;; Fix faulty ICU call. Likely fixed in M89. - (substitute* - "third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc" - (("ideographicSpaceCharacter") - "kIdeographicSpaceCharacter")) - ;; XXX: Should be unnecessary when use_system_lcms2=true. (substitute* "third_party/pdfium/core/fxcodec/icc/iccmodule.h" (("include \"third_party/lcms/include/lcms2\\.h\"") @@ -753,6 +744,7 @@ (resources (string-append lib "/resources")) (preferences (assoc-ref inputs "master-preferences")) (gtk+ (assoc-ref inputs "gtk+")) + (xdg-utils (assoc-ref inputs "xdg-utils")) (sh (which "sh"))) (substitute* '("chrome/app/resources/manpage.1.in" @@ -789,7 +781,8 @@ (wrap-program exe ;; Avoid file manager crash. See <https://bugs.gnu.org/26593>. - `("XDG_DATA_DIRS" ":" prefix (,(string-append gtk+ "/share"))))) + `("XDG_DATA_DIRS" ":" prefix (,(string-append gtk+ "/share"))) + `("PATH" ":" prefix (,(string-append xdg-utils "/bin"))))) (with-directory-excursion "chrome/app/theme/chromium" (for-each @@ -863,18 +856,18 @@ ("nss" ,nss) ("openh264" ,openh264) ("openjpeg" ,openjpeg) ;PDFium only - ("openssl" ,openssl) ("opus" ,opus+custom) ("pango" ,pango) ("pciutils" ,pciutils) - ("pipewire" ,pipewire) + ("pipewire" ,pipewire-0.3) ("pulseaudio" ,pulseaudio) ("snappy" ,snappy) ("speech-dispatcher" ,speech-dispatcher) ("udev" ,eudev) ("valgrind" ,valgrind) ("vulkan-headers" ,vulkan-headers) - ("wayland" ,wayland))) + ("wayland" ,wayland) + ("xdg-utils" ,xdg-utils))) (native-search-paths (list (search-path-specification (variable "CHROMIUM_EXTENSION_DIRECTORY") diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm index 5fa800be4a..e0c7238f2b 100644 --- a/gnu/packages/ci.scm +++ b/gnu/packages/ci.scm @@ -66,20 +66,21 @@ (file-name (string-append name "-" version "-checkout"))))))) (define-public cuirass - (let ((commit "543e26addc6e2304611e2feb8dd3a5a0646507b6") - (revision "72")) + (let ((commit "6f4a203a0bb2d441d091d561c1735fbe2d170cf7") + (revision "2")) (package (name "cuirass") - (version (git-version "0.0.1" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://git.savannah.gnu.org/git/guix/guix-cuirass.git") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "01cxg0nwafzfg0phbv1b4cv24w7yaalkkdib3qfwf6jqagbfg85y")))) + (version (git-version "1.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.gnu.org/git/guix/guix-cuirass.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "120cnnjy4j2dinfmas1ddmqzzc7ikj9c76sl4li6g6dn8g7s8f69")))) (build-system gnu-build-system) (arguments '(#:modules ((guix build utils) @@ -87,9 +88,21 @@ (ice-9 rdelim) (ice-9 popen)) #:configure-flags '("--localstatedir=/var") ;for /var/log/cuirass - #:tests? #f ;requires a PostgreSQL database. + #:parallel-tests? #f #:phases (modify-phases %standard-phases + (add-before 'check 'set-PATH-for-tests + (lambda* (#:key inputs #:allow-other-keys) + (let ((pg (assoc-ref inputs "ephemeralpg")) + (path (getenv "PATH"))) + (setenv "PATH" (string-append pg "/bin:" path)) + #t))) + ;; Disable the remote tests that require a Guix daemon connection. + (add-before 'check 'disable-remote-tests + (lambda _ + (substitute* "Makefile.am" + (("tests/remote.scm") "")) + #t)) (add-after 'install 'wrap-program (lambda* (#:key inputs outputs #:allow-other-keys) ;; Wrap the 'cuirass' command to refer to the right modules. @@ -110,31 +123,30 @@ (deps (list avahi gcrypt json zmq squee git bytes fibers zlib matd tls mail guix)) (guile (assoc-ref %build-inputs "guile")) - (effective (read-line - (open-pipe* OPEN_READ - (string-append guile "/bin/guile") - "-c" "(display (effective-version))"))) - (mods (string-drop-right ;drop trailing colon - (string-join deps - (string-append "/share/guile/site/" - effective ":") - 'suffix) - 1)) - (objs (string-drop-right - (string-join deps - (string-append "/lib/guile/" effective - "/site-ccache:") - 'suffix) - 1))) - ;; Make sure 'cuirass' can find the 'evaluate' command, as - ;; well as the relevant Guile modules. - (for-each - (lambda (name) - (wrap-program (string-append out "/bin/" name) - `("PATH" ":" prefix (,(string-append out "/bin"))) - `("GUILE_LOAD_PATH" ":" prefix (,mods)) - `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,objs)))) - '("cuirass" "remote-server" "remote-worker")) + (effective + (read-line + (open-pipe* OPEN_READ + (string-append guile "/bin/guile") + "-c" "(display (effective-version))"))) + (mods + (string-drop-right ;drop trailing colon + (string-join deps + (string-append "/share/guile/site/" + effective ":") + 'suffix) + 1)) + (objs + (string-drop-right + (string-join deps + (string-append "/lib/guile/" effective + "/site-ccache:") + 'suffix) + 1))) + ;; Make sure 'cuirass' can find the relevant Guile modules. + (wrap-program (string-append out "/bin/cuirass") + `("PATH" ":" prefix (,(string-append out "/bin"))) + `("GUILE_LOAD_PATH" ":" prefix (,mods)) + `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,objs))) #t)))))) (inputs `(("guile" ,guile-3.0/libgc-7) @@ -157,7 +169,8 @@ `(("autoconf" ,autoconf) ("automake" ,automake) ("pkg-config" ,pkg-config) - ("texinfo" ,texinfo))) + ("texinfo" ,texinfo) + ("ephemeralpg" ,ephemeralpg))) (native-search-paths ;; For HTTPS access, Cuirass itself honors these variables, with the ;; same semantics as Git and OpenSSL (respectively). diff --git a/gnu/packages/cobol.scm b/gnu/packages/cobol.scm index 257527e3b8..bc191e6b09 100644 --- a/gnu/packages/cobol.scm +++ b/gnu/packages/cobol.scm @@ -30,7 +30,7 @@ (define-public gnucobol (package (name "gnucobol") - (version "2.2") + (version "3.1.2") (source (origin (method url-fetch) @@ -39,7 +39,7 @@ version ".tar.xz")) (sha256 (base32 - "1814s1n95xax2dz938cf4fkcp0q94nkj1gjbdblbzpk9q92zq66w")))) + "0x15ybfm63g7c9340fc6712h9v59spnbyaz4rf85pmnp3zbhaw2r")))) (arguments '(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") @@ -49,7 +49,10 @@ (add-after 'unpack 'place-cobol85-test-suite (lambda* (#:key inputs #:allow-other-keys) (let ((newcob (assoc-ref inputs "newcob"))) - (copy-file newcob "tests/cobol85/newcob.val.Z"))))) + (copy-file newcob "tests/cobol85/newcob.val.Z")))) + (add-before 'check 'set-TERM + ;; Some tests expect a known terminal + (lambda _ (setenv "TERM" "xterm-256color")))) #:test-target "checkall")) (native-inputs `(("perl" ,perl))) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index b2921a4a48..e9d531c07e 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -10,6 +10,7 @@ ;;; Copyright © 2020 Timothy Sample <samplet@ngyro.com> ;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -2728,7 +2729,8 @@ exec " gcc "/bin/" program "--disable-shared" "--enable-languages=c,c++" - ,@(if (equal? "powerpc64le-linux-gnu" (boot-triplet)) + ;; boot-triplet inserts "guix" in the triplet. + ,@(if (equal? "powerpc64le-guix-linux-gnu" (boot-triplet)) ;; On POWER9 (little endian) glibc needs the ;; 128-bit long double type. '("--with-long-double-128") @@ -3216,7 +3218,11 @@ memoized as a function of '%current-system'." `(("bison" ,bison-boot0) ("texinfo" ,texinfo-boot0) ("perl" ,perl-boot0) - ("python" ,python-boot0))) + ("python" ,python-boot0) + ,@(if (target-powerpc?) + `(("powerpc64le-patch" ,@(search-patches + "glibc-ldd-powerpc.patch"))) + '()))) (inputs `( ;; The boot inputs. That includes the bootstrap libc. We don't want ;; it in $CPATH, hence the 'pre-configure' phase above. @@ -3360,6 +3366,10 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" ;; This time we need 'msgfmt' to install all the libc.mo files. (native-inputs `(,@(package-native-inputs glibc-final-with-bootstrap-bash) + ,@(if (target-powerpc?) + `(("powerpc64le-patch" ,@(search-patches + "glibc-ldd-powerpc.patch"))) + '()) ("gettext" ,gettext-boot0))) (propagated-inputs @@ -3400,9 +3410,19 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" (arguments `(#:guile ,%bootstrap-guile #:implicit-inputs? #f - #:allowed-references ("out" ,glibc-final) + #:allowed-references + ,@(match (%current-system) + ((? target-powerpc?) + `(("out" ,glibc-final ,static-bash-for-glibc))) + (_ + `(("out" ,glibc-final)))) ,@(package-arguments binutils))) - (inputs (%boot2-inputs)))) + (inputs + (match (%current-system) + ((? target-powerpc?) + `(("bash" ,static-bash-for-glibc) + ,@(%boot2-inputs))) + (_ (%boot2-inputs)))))) (define libstdc++ ;; Intermediate libstdc++ that will allow us to build the final GCC diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index f5f5887926..ddebc55d34 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -27,7 +27,7 @@ ;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> ;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net> -;;; Copyright © 2020 Lars-Dominik Braun <lars@6xq.net> +;;; Copyright © 2020, 2021 Lars-Dominik Braun <lars@6xq.net> ;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2020 Léo Le Bouter <lle-bout@zaclys.net> ;;; Copyright © 2021 Antoine Côté <antoine.cote@posteo.net> @@ -87,7 +87,7 @@ #:use-module (gnu packages version-control) #:use-module (gnu packages xml) #:use-module (ice-9 match) - #:use-module ((srfi srfi-1) #:select (last))) + #:use-module (srfi srfi-1)) (define-public zlib (package @@ -953,44 +953,6 @@ possible and can compress in parallel. This is especially useful for large tarballs.") (license license:bsd-2))) -(define-public bsdiff - (package - (name "bsdiff") - (version "4.3") - (home-page "https://www.daemonology.net/bsdiff/") - (source (origin - (method url-fetch) - (uri (string-append home-page name "-" version ".tar.gz")) - (sha256 - (base32 - "0j2zm3z271x5aw63mwhr3vymzn45p2vvrlrpm9cz2nywna41b0hq")))) - (build-system gnu-build-system) - (arguments - `(#:make-flags (list "INSTALL=install" - (string-append "CC=" ,(cc-for-target)) - (string-append "PREFIX=" (assoc-ref %outputs "out"))) - #:phases (modify-phases %standard-phases - (delete 'configure) - (add-before 'build 'fix-Makefile - (lambda _ - (substitute* "Makefile" - ;; Adjust syntax to make it compatible with GNU Make. - (("^\\.") "") - ;; Help install(1) create the target directory. - (("\\$\\{PREFIX\\}") "-D -t ${PREFIX}")) - #t))) - #:tests? #f)) ;no tests - (inputs - `(("bzip2" ,bzip2))) - (synopsis "Patch binary files") - (description - "@command{bsdiff} and @command{bspatch} are tools for building and -applying patches to binary files. By using suffix sorting (specifically -Larsson and Sadakane's @code{qsufsort}) and taking advantage of how -executable files change, bsdiff routinely produces binary patches 50-80% -smaller than those produced by @code{Xdelta}.") - (license license:bsd-2))) - (define-public cabextract (package (name "cabextract") @@ -1110,15 +1072,14 @@ human-readable output.") (define-public lrzip (package (name "lrzip") - (version "0.640") + (version "0.641") (source (origin (method url-fetch) (uri (string-append "http://ck.kolivas.org/apps/lrzip/lrzip-" version ".tar.xz")) (sha256 - (base32 - "175466drfpz8rsfr0pzfn5rqrj3wmcmcs3i2sfmw366w2kbjm4j9")))) + (base32 "0ziyanspd96dc3lp2qdcylc7aq8dhb511jhqrhxvlp502fjqjqrc")))) (build-system gnu-build-system) (native-inputs `(;; nasm is only required when building for 32-bit x86 platforms @@ -1263,6 +1224,12 @@ handles the 7z format which features very high compression ratios.") `(#:test-target "test" #:phases (modify-phases %standard-phases + ;; Enable PIC, so it can be used in shared libraries. + (add-after 'unpack 'use-pic + (lambda _ + (substitute* "Makefile" + (("CPPFLAGS = " all) (string-append all "-fPIC "))) + #t)) (delete 'configure) (replace 'install (lambda* (#:key outputs #:allow-other-keys) @@ -1508,11 +1475,9 @@ speed.") license:zlib)))) ; zlibWrapper/{gz*.c,gzguts.h} (define-public pzstd - (package + (package/inherit zstd (name "pzstd") - (version (package-version zstd)) - (source (package-source zstd)) - (build-system gnu-build-system) + (outputs '("out")) (inputs `(,@(if (%current-target-system) `(("googletest" ,googletest)) @@ -1622,6 +1587,7 @@ Compression ratios of 2:1 to 3:1 are common for text files.") "unzip-overflow-on-invalid-input.patch" "unzip-format-secure.patch" "unzip-overflow-long-fsize.patch")))) + (replacement unzip/fixed) (build-system gnu-build-system) ;; no inputs; bzip2 is not supported, since not compiled with BZ_NO_STDIO (arguments @@ -1657,6 +1623,57 @@ recreates the stored directory structure by default.") (license (license:non-copyleft "file://LICENSE" "See LICENSE in the distribution.")))) +(define unzip/fixed + (package + (inherit unzip) + (version "6.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/infozip" + "/UnZip%206.x%20%28latest%29/UnZip%206.0/unzip60.tar.gz")) + (sha256 + (base32 + "0dxx11knh3nk95p2gg2ak777dd11pr7jx5das2g49l262scrcv83")) + (patches (search-patches "unzip-CVE-2014-8139.patch" + "unzip-CVE-2014-8140.patch" + "unzip-CVE-2014-8141.patch" + "unzip-CVE-2014-9636.patch" + "unzip-CVE-2015-7696.patch" + "unzip-CVE-2015-7697.patch" + "unzip-allow-greater-hostver-values.patch" + "unzip-initialize-symlink-flag.patch" + "unzip-remove-build-date.patch" + "unzip-attribs-overflow.patch" + "unzip-overflow-on-invalid-input.patch" + "unzip-format-secure.patch" + "unzip-overflow-long-fsize.patch" + + ;; From Fedora + "unzip-alt-iconv-utf8.patch" + "unzip-alt-iconv-utf8-print.patch" + "unzip-fix-recmatch.patch" + "unzip-case-insensitive.patch" + "unzip-close.patch" + "unzip-COVSCAN-fix-unterminated-string.patch" + "unzip-CVE-2016-9844.patch" + "unzip-CVE-2018-1000035.patch" + "unzip-CVE-2018-18384.patch" + "unzip-exec-shield.patch" + "unzip-manpage-fix.patch" + "unzip-overflow.patch" + "unzip-timestamp.patch" + "unzip-valgrind.patch" + "unzip-x-option.patch" + ;; CVE-2019-13232 + "unzip-zipbomb-manpage.patch" + "unzip-zipbomb-part1.patch" + "unzip-zipbomb-part2.patch" + "unzip-zipbomb-part3.patch" + + ;; https://github.com/madler/unzip/issues/2 + "unzip-32bit-zipbomb-fix.patch")))))) + (define-public ziptime (let ((commit "2a5bc9dfbf7c6a80e5f7cb4dd05b4036741478bc") (revision "0")) diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm index eeb45950af..2233d2e993 100644 --- a/gnu/packages/cpp.scm +++ b/gnu/packages/cpp.scm @@ -91,7 +91,7 @@ (description "Range-v3 is an extension of the Standard Template Library that makes its iterators and algorithms more powerful by making them composable. Unlike other range-like solutions which, seek to do away with iterators, in -range-v3 ranges are an abstration layer on top of iterators.") +range-v3 ranges are an abstraction layer on top of iterators.") (home-page "https://github.com/ericniebler/range-v3/") (license (list @@ -678,7 +678,7 @@ point and then, after each tween step, plugging back the result.") (define-public abseil-cpp (package (name "abseil-cpp") - (version "20200225.2") + (version "20200923.3") (source (origin (method git-fetch) (uri (git-reference @@ -687,11 +687,17 @@ point and then, after each tween step, plugging back the result.") (file-name (git-file-name name version)) (sha256 (base32 - "0dwxg54pv6ihphbia0iw65r64whd7v8nm4wwhcz219642cgpv54y")))) + "1p4djhm1f011ficbjjxx3n8428p8481p20j4glpaawnpsi362hkl")) + ;; Remove after next googletest release and update. + (patches + (search-patches + "abseil-cpp-fix-gtest.patch" + "abseil-cpp-fix-strerror_test.patch")))) (build-system cmake-build-system) (arguments `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON" "-DABSL_RUN_TESTS=ON" + "-DABSL_USE_EXTERNAL_GOOGLETEST=ON" ;; Needed, else we get errors like: ;; ;; ld: CMakeFiles/absl_periodic_sampler_test.dir/internal/periodic_sampler_test.cc.o: @@ -813,7 +819,7 @@ of C++14 components that complements @code{std} and Boost.") (define-public aws-sdk-cpp (package (name "aws-sdk-cpp") - (version "1.8.102") + (version "1.8.159") (source (origin (method git-fetch) (uri (git-reference @@ -822,13 +828,13 @@ of C++14 components that complements @code{std} and Boost.") (file-name (git-file-name name version)) (sha256 (base32 - "1w8x2vakg5ngjyyg08n4g3dqy8wqnz0k3gkrlqrh460s2pvdivba")))) + "0jpfv9x82nq7hcix9in7qgrc8009dwpg6gr96hlgmcvqrqckd2r9")))) (build-system cmake-build-system) (arguments '(;; Tests are run during the build phase. #:tests? #f #:configure-flags - '("-DBUILD_SHARED_LIBS=OFF" + '("-DBUILD_SHARED_LIBS=ON" "-DBUILD_DEPS=OFF"))) (propagated-inputs `(("aws-c-common" ,aws-c-common) diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 0943a8972b..b9842ca954 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -26,7 +26,7 @@ ;;; Copyright © 2020 Eric Brown <ecbrown@ericcbrown.com> ;;; Copyright © 2020 Peter Lo <peterloleungyau@gmail.com> ;;; Copyright © 2020 Rafael Luque Leiva <rafael.luque@osoco.es> -;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org> +;;; Copyright © 2020, 2021 Lars-Dominik Braun <ldb@leibniz-psychology.org> ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2020 Antoine Côté <antoine.cote@posteo.net> ;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net> @@ -91,6 +91,7 @@ #:use-module (gnu packages networking) #:use-module (gnu packages node) #:use-module (gnu packages pcre) + #:use-module (gnu packages pdf) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) ;libsndfile @@ -99,6 +100,7 @@ #:use-module (gnu packages sqlite) #:use-module (gnu packages statistics) #:use-module (gnu packages tcl) + #:use-module (gnu packages textutils) #:use-module (gnu packages tls) #:use-module (gnu packages version-control) #:use-module (gnu packages web) @@ -129,14 +131,14 @@ files and provide more explicit control over line endings.") (define-public r-cachem (package (name "r-cachem") - (version "1.0.3") + (version "1.0.4") (source (origin (method url-fetch) (uri (cran-uri "cachem" version)) (sha256 (base32 - "0y3jb96lyn3vc3nq8gs9x669w3xp69vdg5xc69qy0l356r39gp3r")))) + "1b1gk837rk9kbfq385ybrrk12ckxwvhjvf0z9635l3vw49wal4mh")))) (properties `((upstream-name . "cachem"))) (build-system r-build-system) (propagated-inputs @@ -175,14 +177,14 @@ visualization of their differences.") (define-public r-waldo (package (name "r-waldo") - (version "0.2.3") + (version "0.2.5") (source (origin (method url-fetch) (uri (cran-uri "waldo" version)) (sha256 (base32 - "0lsw8p4wiggqm9fvh5vgmf0ms0npcg3hcwyzlg5ahv5yx4pv5fhz")))) + "09jhwpgd6hg4qyip4r7wzpjz0jr139fyspd5ncriqimp522snqbr")))) (properties `((upstream-name . "waldo"))) (build-system r-build-system) (propagated-inputs @@ -205,14 +207,14 @@ easier.") (define-public r-rticles (package (name "r-rticles") - (version "0.18") + (version "0.19") (source (origin (method url-fetch) (uri (cran-uri "rticles" version)) (sha256 (base32 - "1srczjy9dqw06glrv95798xsg462kfbbwm3yk1fv1zhpz9jhakwv")))) + "1zcj5y54z1max1df9j2iclm6zlcic4wj684y18wcnmmdwfs51818")))) (properties `((upstream-name . "rticles"))) (build-system r-build-system) (propagated-inputs @@ -341,13 +343,13 @@ the system clipboards.") (define-public r-zoo (package (name "r-zoo") - (version "1.8-8") + (version "1.8-9") (source (origin (method url-fetch) (uri (cran-uri "zoo" version)) (sha256 (base32 - "1rrw431jwaxd9xljp73f15rhcxvwc0xlyrmr0ghi5fj7a03c932f")))) + "18vjywalpgzqyk66gajb8x1yp8avdaaf11ykynld9fd8cy82bgmp")))) (build-system r-build-system) (propagated-inputs `(("r-lattice" ,r-lattice))) @@ -871,18 +873,21 @@ single step.") (define-public r-rvest (package (name "r-rvest") - (version "0.3.6") + (version "1.0.0") (source (origin (method url-fetch) (uri (cran-uri "rvest" version)) (sha256 - (base32 "1yh2p429a0zr8pqmlw5rzf6m797j20j5w6xwxlqq0wrdbnif6bka")))) + (base32 "04spcv6nxlmx5bxncq0vybfqrs8jgjamzyrn6wmkdcwii8jvyn53")))) (build-system r-build-system) (propagated-inputs `(("r-httr" ,r-httr) + ("r-lifecycle" ,r-lifecycle) ("r-magrittr" ,r-magrittr) + ("r-rlang" ,r-rlang) ("r-selectr" ,r-selectr) + ("r-tibble" ,r-tibble) ("r-xml2" ,r-xml2))) (native-inputs `(("r-knitr" ,r-knitr))) @@ -1344,6 +1349,61 @@ are used. Fastmap avoids this memory leak issue by implementing the map using data structures in C++.") (license license:expat))) +(define-public r-fastghquad + (package + (name "r-fastghquad") + (version "1.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "fastGHQuad" version)) + (sha256 + (base32 + "1rjia8wggadr9xwxcmzmal0rc4g6pa3dr5888fbbnb6abl8b2lrj")))) + (properties `((upstream-name . "fastGHQuad"))) + (build-system r-build-system) + (propagated-inputs + `(("r-rcpp" ,r-rcpp))) + (home-page "https://github.com/awblocker/fastGHQuad") + (synopsis "Fast Rcpp implementation of Gauss-Hermite Quadrature") + (description + "This package implements numerically-stable Gauss-Hermite quadrature +rules and utility functions for adaptive GH quadrature.") + (license license:expat))) + +(define-public r-rstpm2 + (package + (name "r-rstpm2") + (version "1.5.2") + (source + (origin + (method url-fetch) + (uri (cran-uri "rstpm2" version)) + (sha256 + (base32 + "0c6l3z250b2kn6mh2xyb0bd2y5nsbj11n9xfi51dac9s8xq3v7m4")))) + (properties `((upstream-name . "rstpm2"))) + (build-system r-build-system) + (propagated-inputs + `(("r-bbmle" ,r-bbmle) + ("r-bh" ,r-bh) + ("r-desolve" ,r-desolve) + ("r-fastghquad" ,r-fastghquad) + ("r-mgcv" ,r-mgcv) + ("r-rcpp" ,r-rcpp) + ("r-rcpparmadillo" ,r-rcpparmadillo) + ("r-survival" ,r-survival))) + (native-inputs + `(("gfortran" ,gfortran))) + (home-page "https://github.com/mclements/rstpm2") + (synopsis "Link-based survival models") + (description + "This package provides R implementations of @dfn{generalized survival +models} (GSMs), smooth @dfn{accelerated failure time} (AFT) models and Markov +multi-state models.") + ;; One of these licenses + (license (list license:gpl2 license:gpl3)))) + ;; This package includes minified JavaScript files. When upgrading please ;; check that there are no new minified JavaScript files. (define-public r-jquerylib @@ -2491,6 +2551,30 @@ inspired by Python's Literal String Interpolation (PEP-0498) and Docstrings (PEP-0257) and Julia's Triple-Quoted String Literals.") (license license:expat))) +(define-public r-palmerpenguins + (package + (name "r-palmerpenguins") + (version "0.1.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "palmerpenguins" version)) + (sha256 + (base32 + "0q1k3cdkliq7kwrg1n0vs9b6cjwyfarhlgdijhp9c6riy6y5ik7x")))) + (properties + `((upstream-name . "palmerpenguins"))) + (build-system r-build-system) + (home-page "https://allisonhorst.github.io/palmerpenguins/") + (synopsis "Palmer Archipelago (Antarctica) penguin data") + (description + "This package includes size measurements, clutch observations, and blood +isotope ratios for adult foraging Adélie, Chinstrap, and Gentoo penguins +observed on islands in the Palmer Archipelago near Palmer Station, Antarctica. +Data were collected and made available by Dr. Kristen Gorman and the Palmer +Station Long Term Ecological Research (LTER) Program.") + (license license:cc0))) + (define-public r-pastecs (package (name "r-pastecs") @@ -2515,13 +2599,13 @@ initiative to bring PASSTEC 2000 functionalities to R.") (define-public r-partykit (package (name "r-partykit") - (version "1.2-12") + (version "1.2-13") (source (origin (method url-fetch) (uri (cran-uri "partykit" version)) (sha256 (base32 - "15d5g89winndv8cy8jjjxy87fliafp5zyb8b58czrijwcmagg50l")))) + "15bfhqvx2y4vclnc3sw4v7ggs70pk57b3qk9aqjfvdrx444d2gd4")))) (build-system r-build-system) (propagated-inputs `(("r-formula" ,r-formula) @@ -2595,13 +2679,13 @@ print, summary, plot, update, etc. (define-public r-ps (package (name "r-ps") - (version "1.5.0") + (version "1.6.0") (source (origin (method url-fetch) (uri (cran-uri "ps" version)) (sha256 - (base32 "15pyz94b0z6ibrjp25np5nd4z20whnnr35wsavdgwmsmynba2qbl")))) + (base32 "0cdzjqgap108whhsilxllg12m2d05pgksryhrz5bq608bvf7vbc9")))) (build-system r-build-system) (home-page "https://ps.r-lib.org") (synopsis "List, query, and manipulate system processes") @@ -2641,14 +2725,14 @@ is configured appropriately so R can use them.") (define-public r-pkgload (package (name "r-pkgload") - (version "1.1.0") + (version "1.2.0") (source (origin (method url-fetch) (uri (cran-uri "pkgload" version)) (sha256 (base32 - "03bv8xq4s6s7m34y1kjs99jzlb95vwrfi76mbnhmzcx2pc6ld78q")))) + "185xr79z2vncq62bni7x4qv3p7dxvnfsbdnnglma0a196hz6pj7v")))) (build-system r-build-system) (propagated-inputs `(("r-cli" ,r-cli) @@ -3047,14 +3131,14 @@ in main memory.") (define-public r-ffbase (package (name "r-ffbase") - (version "0.13.1") + (version "0.13.3") (source (origin (method url-fetch) (uri (cran-uri "ffbase" version)) (sha256 (base32 - "0knl0vnh8w4q3ry24gp4fd55ipnaj9hb1rwm31fs119kgmh3gd8x")))) + "1dp6lblfq2j7r1b4b8ls47jlx8j27n88d5vp8w116lb8pa01zxmk")))) (build-system r-build-system) (propagated-inputs `(("r-bit" ,r-bit) @@ -3167,14 +3251,14 @@ package also provides a C++ API, that works with or without Rcpp.") (define-public r-ggally (package (name "r-ggally") - (version "2.1.0") + (version "2.1.1") (source (origin (method url-fetch) (uri (cran-uri "GGally" version)) (sha256 (base32 - "0lvcvlc8p2cii7rqx7m81f7cv3kk9mlf7cbbgv7l75g7ljw8dyvz")))) + "0lly659kd43cnz1bmmzqj6dbf4v0nm8dhj8xq2wlv9qbnfhq5r9p")))) (properties `((upstream-name . "GGally"))) (build-system r-build-system) (inputs @@ -3206,14 +3290,14 @@ plot networks.") (define-public r-proxy (package (name "r-proxy") - (version "0.4-24") + (version "0.4-25") (source (origin (method url-fetch) (uri (cran-uri "proxy" version)) (sha256 (base32 - "0z4wdnpv5x135nssxnmkkba7fivd5xgbpaabqjkl2na76vq9pzwc")))) + "1m893djrv6ckadmlx9n5bxfp0ycdh2w63sy6yxfyj1migvc7072f")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/proxy") (synopsis "Distance and similarity measures") @@ -3289,13 +3373,13 @@ matrices.") (define-public r-rmpi (package (name "r-rmpi") - (version "0.6-9") + (version "0.6-9.1") (source (origin (method url-fetch) (uri (cran-uri "Rmpi" version)) (sha256 (base32 - "1rhycla98hxgnnxlxxldr1x51djak7c2jjvlrv3jcsvgwp1ymqdj")))) + "1j8akqjan59yzwx2s1zxc214qyd323fd2i2dhgq0n11mb6ajmq4r")))) (properties `((upstream-name . "Rmpi"))) (build-system r-build-system) (arguments @@ -3671,17 +3755,18 @@ data). Weighted versions of MLE, MME and QME are available.") (define-public r-energy (package (name "r-energy") - (version "1.7-7") + (version "1.7-8") (source (origin (method url-fetch) (uri (cran-uri "energy" version)) (sha256 (base32 - "13wnx5nwk7nsv7vf5sxhz4y0rxrnzm76ldgywk1bxrz67srqzf37")))) + "12a7gy681aq3l55iys044cs6sn1s2l5qihghpdl01cvv0ggfh26y")))) (build-system r-build-system) (propagated-inputs `(("r-boot" ,r-boot) + ("r-gsl" ,r-gsl) ("r-rcpp" ,r-rcpp))) (home-page "https://cran.r-project.org/web/packages/energy") (synopsis "Multivariate inference via the energy of data") @@ -3806,14 +3891,14 @@ available in a vignette.") (define-public r-lava (package (name "r-lava") - (version "1.6.8.1") + (version "1.6.9") (source (origin (method url-fetch) (uri (cran-uri "lava" version)) (sha256 (base32 - "1yiz8y3jhxkszgz9m9fialp9r27hy97xh0imfvs8ziv7dk43y93d")))) + "07difbrz8zmvdyns63958v0zw4hyv48956mcww8zh7064a564k83")))) (build-system r-build-system) (propagated-inputs `(("r-numderiv" ,r-numderiv) @@ -4134,14 +4219,14 @@ provided.") (define-public r-ipred (package (name "r-ipred") - (version "0.9-9") + (version "0.9-11") (source (origin (method url-fetch) (uri (cran-uri "ipred" version)) (sha256 (base32 - "0vs1hqfx7yd0xdbmfsf2gim7spkni0845cj6gswn0nhdfdq7ma0d")))) + "04hfg27c72v0fz4091w3rgbc2vd7g6yl78y9plvsvh0vjlx8ymmp")))) (build-system r-build-system) (propagated-inputs `(("r-class" ,r-class) @@ -4214,14 +4299,14 @@ by base R methods related to model fitting.") (define-public r-broom (package (name "r-broom") - (version "0.7.4") + (version "0.7.5") (source (origin (method url-fetch) (uri (cran-uri "broom" version)) (sha256 (base32 - "1zwdgv59a5c4mdcfn3anvsf83ymi11ij6k9nssw3aqzirp6fwg3w")))) + "1qjyl5b100bsakm48w1vi3819lkpys7vb86n1sv9h4y2wr1c4jmw")))) (build-system r-build-system) (propagated-inputs `(("r-backports" ,r-backports) @@ -4987,14 +5072,14 @@ plots in @code{ggplot2}.") (define-public r-cli (package (name "r-cli") - (version "2.3.0") + (version "2.3.1") (source (origin (method url-fetch) (uri (cran-uri "cli" version)) (sha256 (base32 - "128bx3bds0dnkixc4frbky11rz1ilnvdfzz9mggajj690i11b62q")))) + "1jh64ixn6mg2ap1sx4azrxkjnlsyjbfxyc9zjkx8m9dlakgf4v2i")))) (build-system r-build-system) (propagated-inputs `(("r-assertthat" ,r-assertthat) @@ -5009,14 +5094,14 @@ rules, boxes, trees, and Unicode symbols with ASCII alternatives.") (define-public r-argparser (package (name "r-argparser") - (version "0.6") + (version "0.7.1") (source (origin (method url-fetch) (uri (cran-uri "argparser" version)) (sha256 (base32 - "1pxiz9jlhlnpzqn1lz349r07i7glw708w202x6dlnxp112fg7k4x")))) + "0xcl0ivsbc4iw8s7027q4cx68j6s5lihbby0xa9pmlv4wjmcvdr6")))) (build-system r-build-system) (home-page "https://bitbucket.org/djhshih/argparser") (synopsis "Command-line argument parser") @@ -5197,13 +5282,13 @@ iVAT).") (define-public r-xfun (package (name "r-xfun") - (version "0.21") + (version "0.22") (source (origin (method url-fetch) (uri (cran-uri "xfun" version)) (sha256 - (base32 "18qjs81fn8q2d2drcan8gpgvrbgxgd0b659c92z19kg2h4c1g3k4")))) + (base32 "0ix3p0iw2c60whn5mvsflh0vhm4yixhw4s9d9v4023qhp077nw9y")))) (build-system r-build-system) ;; knitr itself depends on xfun #; @@ -5219,15 +5304,17 @@ packages maintained by Yihui Xie.") (define-public r-utf8 (package (name "r-utf8") - (version "1.1.4") + (version "1.2.1") (source (origin (method url-fetch) (uri (cran-uri "utf8" version)) (sha256 (base32 - "0m0ywg8k3blfiahxvh1i4zn9dksrlc937d2lbza5fc38zjnrrnpn")))) + "1yw7vjn3gpkqddc91rbfh4kk0zmn2kp0jycrd3066sissh01jhdk")))) (build-system r-build-system) + (native-inputs + `(("r-knitr" ,r-knitr))) (home-page "https://github.com/patperry/r-utf8") (synopsis "Unicode text processing") (description @@ -5299,14 +5386,14 @@ to variables on the left-hand side of the assignment.") (define-public r-pillar (package (name "r-pillar") - (version "1.4.7") + (version "1.5.1") (source (origin (method url-fetch) (uri (cran-uri "pillar" version)) (sha256 (base32 - "167ji21fx04s2niw5pjq9vzxgagxzsg3gimh8dzr2kl5ljrb5vfd")))) + "0wp68cg95895aybi7yjqy0sidvc68lmfqndinpd63dysci9x3r8c")))) (build-system r-build-system) (propagated-inputs `(("r-cli" ,r-cli) @@ -5317,6 +5404,8 @@ to variables on the left-hand side of the assignment.") ("r-rlang" ,r-rlang) ("r-utf8" ,r-utf8) ("r-vctrs" ,r-vctrs))) + (native-inputs + `(("r-knitr" ,r-knitr))) (home-page "https://github.com/r-lib/pillar") (synopsis "Coloured formatting for columns") (description @@ -5347,14 +5436,14 @@ terminals.") (define-public r-tinytex (package (name "r-tinytex") - (version "0.29") + (version "0.30") (source (origin (method url-fetch) (uri (cran-uri "tinytex" version)) (sha256 (base32 - "0my1412vn5zri01w2myzn268lfwinbhfgdj4bbcib3s48i9djw0n")))) + "0dk6mpszwh1m65b0wfwjlcvpzywmasf6p31niqiq53wnd92my0gw")))) (build-system r-build-system) (propagated-inputs `(("r-xfun" ,r-xfun))) @@ -6786,14 +6875,14 @@ dependency on Java.") (define-public r-rio (package (name "r-rio") - (version "0.5.16") + (version "0.5.26") (source (origin (method url-fetch) (uri (cran-uri "rio" version)) (sha256 (base32 - "0rfl56fdawlhc98451a9lcb6a6m56kw0i7dvd5hx58z025d8vsyk")))) + "1k6zxjb2bb0z6rv7zmkbaz85cbvs84mj602ikkwk60alh8kpdw2d")))) (build-system r-build-system) (propagated-inputs `(("r-curl" ,r-curl) @@ -6803,6 +6892,8 @@ dependency on Java.") ("r-openxlsx" ,r-openxlsx) ("r-readxl" ,r-readxl) ("r-tibble" ,r-tibble))) + (native-inputs + `(("r-knitr" ,r-knitr))) (home-page "https://github.com/leeper/rio") (synopsis "Swiss-army knife for data I/O") (description @@ -6820,14 +6911,14 @@ simple method for converting between file types.") (define-public r-maptools (package (name "r-maptools") - (version "1.0-2") + (version "1.1-1") (source (origin (method url-fetch) (uri (cran-uri "maptools" version)) (sha256 (base32 - "0jgf3wg47jdnznxb3ncv4is9ackwviy4lzcyggqwzw3wh6jnvb6s")))) + "0pn4gwh2rl6pfh2vbc7ln86kzlg22cfpd02z95j7zpjidz2mva8l")))) (build-system r-build-system) (propagated-inputs `(("r-foreign" ,r-foreign) @@ -6873,14 +6964,14 @@ time after the current time, after the R execution stack has emptied.") (define-public r-promises (package (name "r-promises") - (version "1.1.1") + (version "1.2.0.1") (source (origin (method url-fetch) (uri (cran-uri "promises" version)) (sha256 (base32 - "002qkhcn3ri6a3w5fizjvdvrjgvqiw8i7rl9jglcnqik5kmwc61p")))) + "1dy4cbqw17awh4q8m7cy3anaj0n9iynabfzflb1g94cyj0bq4fld")))) (build-system r-build-system) (propagated-inputs `(("r-later" ,r-later) @@ -7164,14 +7255,14 @@ Python's @url{https://github.com/ActiveState/appdirs,Appdirs} to R.") (define-public r-rastervis (package (name "r-rastervis") - (version "0.49") + (version "0.50") (source (origin (method url-fetch) (uri (cran-uri "rasterVis" version)) (sha256 (base32 - "0d12h7xqcwy1wps6yya9nzfppbnsxpmbkqmy3a8pvxpg81l632kk")))) + "0m7fjd53apxim0d0rjnyzc28vmfcg4spcrn0zbnk8llillxji1hi")))) (properties `((upstream-name . "rasterVis"))) (build-system r-build-system) (propagated-inputs @@ -7181,6 +7272,7 @@ Python's @url{https://github.com/ActiveState/appdirs,Appdirs} to R.") ("r-raster" ,r-raster) ("r-rcolorbrewer" ,r-rcolorbrewer) ("r-sp" ,r-sp) + ("r-terra" ,r-terra) ("r-viridislite" ,r-viridislite) ("r-zoo" ,r-zoo))) (home-page "https://oscarperpinan.github.io/rastervis/") @@ -7222,14 +7314,14 @@ those searches and pull data into their R sessions.") (define-public r-renv (package (name "r-renv") - (version "0.12.5") + (version "0.13.0") (source (origin (method url-fetch) (uri (cran-uri "renv" version)) (sha256 (base32 - "0wfq1z5glng6jrfxj25mjhp129z6468gaszr9ggks5gp8lrwszzh")))) + "16n2dz9jibc03f7q1wrzxss6l5jmaks7m2lnli9dz9anvcmxbdia")))) (properties `((upstream-name . "renv"))) (build-system r-build-system) (native-inputs @@ -7412,14 +7504,14 @@ movies, and TV shows.") (define-public r-ggsignif (package (name "r-ggsignif") - (version "0.6.0") + (version "0.6.1") (source (origin (method url-fetch) (uri (cran-uri "ggsignif" version)) (sha256 (base32 - "17j9hg967k1wp9xw3x84mqss58jkb8pvlrnlchz4i1hklgykxqbg")))) + "0rjy9wqsq67jjm1jz3j7hm599x0rshrrhw2w01iaqb9kf506hvjh")))) (build-system r-build-system) (native-inputs `(("r-knitr" ,r-knitr))) @@ -7439,14 +7531,14 @@ and adds the annotation to the plot.") (define-public r-rstatix (package (name "r-rstatix") - (version "0.6.0") + (version "0.7.0") (source (origin (method url-fetch) (uri (cran-uri "rstatix" version)) (sha256 (base32 - "0nwwvxwr4z3j4n9z8cnvwghppc836g47n0ia98chk272qwh8xcpb")))) + "0330y8iziffqg8j9j5h9zv4qcdyf8ybhmzxrr9fzq9nc6bf1gbm5")))) (properties `((upstream-name . "rstatix"))) (build-system r-build-system) (propagated-inputs @@ -7815,19 +7907,18 @@ implemented in bibutils.") (define-public r-rdpack (package (name "r-rdpack") - (version "2.1") + (version "2.1.1") (source (origin (method url-fetch) (uri (cran-uri "Rdpack" version)) (sha256 (base32 - "1kmz0kq2z1xl55w22paz98x9jpss06abvicmkslv4zq77kz99q16")))) + "11psw5yiamq0g7jc6fqn2wis565i60qgda4a5d09qi8fyzd6mnfb")))) (properties `((upstream-name . "Rdpack"))) (build-system r-build-system) (propagated-inputs - `(("r-rbibutils" ,r-rbibutils) - ("r-gbrd" ,r-gbrd))) + `(("r-rbibutils" ,r-rbibutils))) (home-page "https://github.com/GeoBosh/Rdpack") (synopsis "Update and manipulate Rd documentation objects") (description @@ -7842,14 +7933,14 @@ references and Rd files.") (define-public r-officer (package (name "r-officer") - (version "0.3.16") + (version "0.3.17") (source (origin (method url-fetch) (uri (cran-uri "officer" version)) (sha256 (base32 - "1ls5kp70jfxrzxxb3xrg8sn2fyk6qd7rmx23n5jxi7z7850avjrj")))) + "1apg0dh1zfhrqcbbmm8318l40gyjbqc2l9sdvwxx7qi8mzc1mqvw")))) (build-system r-build-system) (propagated-inputs `(("r-r6" ,r-r6) @@ -8103,14 +8194,14 @@ other add-on packages.") (define-public r-insight (package (name "r-insight") - (version "0.12.0") + (version "0.13.1") (source (origin (method url-fetch) (uri (cran-uri "insight" version)) (sha256 (base32 - "0gkvcw9d729ql1gfrpxzgrag4xafd0hchrdww215qz11ma1rzy7s")))) + "1la4yxzfl9fnknamnaziil6gvpdzl78z16lfzis9jgzg8r9q0y5l")))) (build-system r-build-system) (native-inputs `(("r-knitr" ,r-knitr))) @@ -8239,14 +8330,14 @@ functions.") (define-public r-flextable (package (name "r-flextable") - (version "0.6.3") + (version "0.6.4") (source (origin (method url-fetch) (uri (cran-uri "flextable" version)) (sha256 (base32 - "0as80m19lvajc0vzllq9d9p63zglsm2ph7vdfg3jgk90jp8j76dg")))) + "1ykjfnqhn8nd9f3l4jj8hf1bbjjckkna3p7fdsg0a73c05a17yma")))) (build-system r-build-system) (propagated-inputs `(("r-base64enc" ,r-base64enc) @@ -8465,14 +8556,14 @@ Group (Non-)Overlap considerations.") (define-public r-deriv (package (name "r-deriv") - (version "4.1.2") + (version "4.1.3") (source (origin (method url-fetch) (uri (cran-uri "Deriv" version)) (sha256 (base32 - "1j9sh1w9lsnnhlh59g4ghykyfx46rxh380s8imvm7pzna7rw7c64")))) + "130g3mv0z9sqs6y23a0a94512iiw05yr6fp378vhdxxbignzbnyv")))) (properties `((upstream-name . "Deriv"))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/Deriv") @@ -8487,14 +8578,14 @@ the work.") (define-public r-doby (package (name "r-doby") - (version "4.6.8") + (version "4.6.9") (source (origin (method url-fetch) (uri (cran-uri "doBy" version)) (sha256 (base32 - "0r97kwsj6g87m7shgnjc5c9y71jkhiq4xd9q0s2bxl0vl92qqwvg")))) + "02f545md5yhbpp3wb3q2c8zabqwgf02555r5c6g7znab5zjbyr00")))) (properties `((upstream-name . "doBy"))) (build-system r-build-system) (propagated-inputs @@ -8573,14 +8664,14 @@ procedures to speed up calculations in R.") (define-public r-blockfest (package (name "r-blockfest") - (version "1.8") + (version "2.0") (source (origin (method url-fetch) (uri (cran-uri "BlockFeST" version)) (sha256 (base32 - "12cbrmgqszlj729zrn9d1d7drbr0iay43knnmrzcxs6v7lfszsx5")))) + "1fcl3yc1cf09znqbj787d3fd2kl5rp63la7pxawsgmap7nxwkp65")))) (properties `((upstream-name . "BlockFeST"))) (build-system r-build-system) (propagated-inputs `(("r-basix" ,r-basix))) @@ -8921,22 +9012,22 @@ and coverage methods to tune the choice of threshold.") (define-public r-labelled (package (name "r-labelled") - (version "2.7.0") + (version "2.8.0") (source (origin (method url-fetch) (uri (cran-uri "labelled" version)) (sha256 (base32 - "1nsb0mh0jg7gggc41b6v55nmfq07g0qn9fy55x4jws5dscs6pdmi")))) + "0fs8fhmk9j2nv2j87mpkmm0clz34f8kybnzn6pzqpcbwk0i2pcwg")))) (properties `((upstream-name . "labelled"))) (build-system r-build-system) (propagated-inputs `(("r-dplyr" ,r-dplyr) ("r-haven" ,r-haven) ("r-lifecycle" ,r-lifecycle) - ("r-pillar" ,r-pillar) ("r-rlang" ,r-rlang) + ("r-stringr" ,r-stringr) ("r-tidyr" ,r-tidyr) ("r-vctrs" ,r-vctrs))) (native-inputs @@ -9600,14 +9691,14 @@ samples is large and the number of mixture components is not too large.") (define-public r-magick (package (name "r-magick") - (version "2.6.0") + (version "2.7.0") (source (origin (method url-fetch) (uri (cran-uri "magick" version)) (sha256 (base32 - "1k4fqhxh2ppynl56fs044wpn4wk6gbv6lwp2x4x7j67zwcv56n36")))) + "0m1kij6pp7dmsrhl80h60iyccjqmbbb3zdnqdc9sgy1kj1x3pscp")))) (build-system r-build-system) (inputs `(("imagemagick" ,imagemagick) @@ -10362,14 +10453,14 @@ results using @code{ggplot2}.") (define-public r-effectsize (package (name "r-effectsize") - (version "0.4.3") + (version "0.4.4") (source (origin (method url-fetch) (uri (cran-uri "effectsize" version)) (sha256 (base32 - "1hcrnax9wf0nwsb8nv15rxw8yy8w5dak16dw3w5bxi8xnf56lkz2")))) + "0mgkq12ym72ncakkjpkzkjglhksyhj3iw8v4a8fjgpf7prvn191g")))) (properties `((upstream-name . "effectsize"))) (build-system r-build-system) (propagated-inputs @@ -10590,14 +10681,14 @@ user credentials.") (define-public r-gert (package (name "r-gert") - (version "1.1.0") + (version "1.2.0") (source (origin (method url-fetch) (uri (cran-uri "gert" version)) (sha256 (base32 - "09har6mj7qy813s6dxyzfzmjwg60m8c01yx3q6lfsnvwqzxlqxv8")))) + "0ag2ia6cfb5drf3517lg5nhik1w0nv09a75wdy5jdciws1qra3d6")))) (properties `((upstream-name . "gert"))) (build-system r-build-system) (inputs @@ -10968,14 +11059,14 @@ the interfaces between R and C++.") (define-public r-mvabund (package (name "r-mvabund") - (version "4.1.6") + (version "4.1.9") (source (origin (method url-fetch) (uri (cran-uri "mvabund" version)) (sha256 (base32 - "0aisvax9d7bk6aykrcdcn1ji618r520mcrkr1i3jnck1qs31z41f")))) + "19kyg0agjk7gxipa5kmklz4cqh97xrdbibmmy1g99r1gp3s9ml30")))) (build-system r-build-system) (propagated-inputs `(("r-mass" ,r-mass) @@ -11157,14 +11248,14 @@ package provides a minimal R interface by relying on the Rcpp package.") (define-public r-rcppparallel (package (name "r-rcppparallel") - (version "5.0.2") + (version "5.0.3") (source (origin (method url-fetch) (uri (cran-uri "RcppParallel" version)) (sha256 (base32 - "10bg4fw38m64dhy543rwq2nnjjc9y24iggk343xslrb3ij8018lc")))) + "0ihcirny4al2ydymxhdfacwmybmrgrz5nm0lbf49gk2zy8w124ki")))) (properties `((upstream-name . "RcppParallel"))) (build-system r-build-system) (home-page "https://rcppcore.github.io/RcppParallel/") @@ -11226,14 +11317,14 @@ Bioconductor packages.") (define-public r-rgl (package (name "r-rgl") - (version "0.104.16") + (version "0.105.22") (source (origin (method url-fetch) (uri (cran-uri "rgl" version)) (sha256 (base32 - "169a8riiam8445nl7rcwn0x92dlwyzh5xldvap6dcxjyjqmjwbdq")))) + "1y69phym8pkdh1k808y3rp1030xmhjpc8vig9035v9n1r7v7a1kz")))) (build-system r-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -11421,14 +11512,14 @@ Scientific.") (define-public r-activity (package (name "r-activity") - (version "1.3") + (version "1.3.1") (source (origin (method url-fetch) (uri (cran-uri "activity" version)) (sha256 (base32 - "12imqj366dp6pam5gap6ji56p5wf1073xz5g4iikfxf5l8snxw92")))) + "1wn2a0hx7wfr2jyj1b772w5fgl6bcqkkw8cybais2s1wyjx8kjr5")))) (build-system r-build-system) (propagated-inputs `(("r-circular" ,r-circular) @@ -11447,14 +11538,14 @@ circular variables).") (define-public r-ouch (package (name "r-ouch") - (version "2.14-1") + (version "2.15-1") (source (origin (method url-fetch) (uri (cran-uri "ouch" version)) (sha256 (base32 - "0ddf9bw5lhj8vb0ja78jf99i0smq4rgmm842k4a4ygap41vdyn2b")))) + "0myddn3b28pswyk42kvwhyvkj30q41f677vpxclxacdfkhgvrj6q")))) (build-system r-build-system) (propagated-inputs `(("r-subplex" ,r-subplex))) (home-page "https://kingaa.github.io/ouch/") @@ -11605,16 +11696,18 @@ components).") (define-public r-fftwtools (package (name "r-fftwtools") - (version "0.9-9") + (version "0.9-11") (source (origin (method url-fetch) (uri (cran-uri "fftwtools" version)) (sha256 (base32 - "0h8lyl2i6zq16ir7xnfj9dhyivxvwikm8lml19s8s8jx95z3n9x9")))) + "0zrchp4l0jdbir2gibjf00x225y9giqk80zvqmr2yyvc12lwkw7i")))) (build-system r-build-system) (inputs `(("fftw" ,fftw))) + (native-inputs + `(("pkg-config" ,pkg-config))) (home-page "https://github.com/krahim/fftwtools") (synopsis "Wrapper for FFTW3") (description @@ -11630,14 +11723,14 @@ redundant complex conjugate when the input is real data.") (define-public r-tiff (package (name "r-tiff") - (version "0.1-6") + (version "0.1-7") (source (origin (method url-fetch) (uri (cran-uri "tiff" version)) (sha256 (base32 - "1yy4im2lwzhjnnkfwxgkknsajvm83pcwaf370pkgfva2db0xjfv2")))) + "101n6x70fr1dhcwx53g3s8q1j4wh93y0388v1s1316f8558rxqxh")))) (build-system r-build-system) (inputs `(("libtiff" ,libtiff) @@ -12544,14 +12637,14 @@ and manipulating sets of ontological terms.") (define-public r-gargle (package (name "r-gargle") - (version "0.5.0") + (version "1.0.0") (source (origin (method url-fetch) (uri (cran-uri "gargle" version)) (sha256 (base32 - "1fykmiv3x8c9ai31r9wr7qcca51h6kqn9cgwbxvxfj15fhwskh4n")))) + "0hsqn4hf935wn6vk2pwym7la4sdvy271y4cashp38pg4hkpg9zph")))) (build-system r-build-system) (propagated-inputs `(("r-fs" ,r-fs) @@ -13078,14 +13171,14 @@ to throw errors if they aren't in the right form.") (define-public r-dotcall64 (package (name "r-dotcall64") - (version "1.0-0") + (version "1.0-1") (source (origin (method url-fetch) (uri (cran-uri "dotCall64" version)) (sha256 (base32 - "1b8p7m3w0m7bp977c6jz74xkd611cxg11j49yza59k5fp338scb9")))) + "1im5k8jbviwj2i42mq1kmjskh80isa7jr9w8i0fknidrzzy2h2zi")))) (properties `((upstream-name . "dotCall64"))) (build-system r-build-system) (native-inputs `(("gfortran" ,gfortran))) @@ -13424,14 +13517,14 @@ model with finite state space using the Aalen-Johansen estimator.") (define-public r-epi (package (name "r-epi") - (version "2.43") + (version "2.44") (source (origin (method url-fetch) (uri (cran-uri "Epi" version)) (sha256 (base32 - "0wsjvilcivrhy2kh2dcagkzy7bjmfa0sq9xjpv6qb4b0nc0mv089")))) + "1wcxr1f7irgfdwzz4vf67114yhxrhxxxnhy4hfaww0zy91vzxx10")))) (properties `((upstream-name . "Epi"))) (build-system r-build-system) (propagated-inputs @@ -13608,14 +13701,14 @@ them in distributed compute environments.") (define-public r-parallelly (package (name "r-parallelly") - (version "1.23.0") + (version "1.24.0") (source (origin (method url-fetch) (uri (cran-uri "parallelly" version)) (sha256 (base32 - "025whcz55wj9jd73dalkbxh4l2331mqn758glr6hlf472lwf4v1p")))) + "1x04pxcyyzmg1rl9mcd7mmxglzmxgy40fmbwpy7vf5y7z15rzrp6")))) (properties `((upstream-name . "parallelly"))) (build-system r-build-system) (home-page "https://github.com/HenrikBengtsson/parallelly") @@ -13882,14 +13975,14 @@ several common set, element and attribute related tasks.") (define-public r-shinyjqui (package (name "r-shinyjqui") - (version "0.3.3") + (version "0.4.0") (source (origin (method url-fetch) (uri (cran-uri "shinyjqui" version)) (sha256 (base32 - "0n4ijxmkp8x6dwrsxwvx0zgd8b5129cmn6q6rrav38v1q5k8889x")) + "0ins0pmfis34jr0rimsp1k1aw856r3xjdnsvv8lkwqhvp58nzqah")) (snippet '(begin (delete-file "inst/www/shinyjqui.min.js"))))) @@ -14099,13 +14192,13 @@ such software by imputing dropout events.") (define-public r-gamlss-dist (package (name "r-gamlss-dist") - (version "5.1-7") + (version "5.3-2") (source (origin (method url-fetch) (uri (cran-uri "gamlss.dist" version)) (sha256 - (base32 "0nzgq3rnziy0i2zxn88hqy3pakpyin2m2csk9j3zg39si66c6wcq")))) + (base32 "1lyf2rvkplywgyhcni93k52z3b89vv86yrgl38dx3ln3436r5ahc")))) (properties `((upstream-name . "gamlss.dist"))) (build-system r-build-system) (propagated-inputs `(("r-mass" ,r-mass))) @@ -14356,14 +14449,14 @@ probabilities from a standard bivariate normal CDF.") (define-public r-lavaan (package (name "r-lavaan") - (version "0.6-7") + (version "0.6-8") (source (origin (method url-fetch) (uri (cran-uri "lavaan" version)) (sha256 (base32 - "0ks62wrwghbm1brzmqvr92h5n1295dpc87m1g3xrfx0mkdaqdcdk")))) + "18l49f1v7nrngwra4v983ic8w1d4w23ws8xf36337dq0j6809qj0")))) (build-system r-build-system) (propagated-inputs `(("r-mass" ,r-mass) @@ -15058,14 +15151,14 @@ utilities for sequence data management under the ACNUC system.") (define-public r-units (package (name "r-units") - (version "0.6-7") + (version "0.7-0") (source (origin (method url-fetch) (uri (cran-uri "units" version)) (sha256 (base32 - "1rdpbkiqcabz00fqzzs98v89v4cgvcd4pb00pwxzkq6vmwmscwrz")))) + "0kwfcrrbcwl7s50n1wp33vswqzmprh91clvakbd1jpznqpg5m3js")))) (build-system r-build-system) (inputs `(("udunits" ,udunits))) @@ -15187,14 +15280,14 @@ sampling.") (define-public r-deldir (package (name "r-deldir") - (version "0.2-9") + (version "0.2-10") (source (origin (method url-fetch) (uri (cran-uri "deldir" version)) (sha256 (base32 - "0jfwff5kk0zraspsvbk26lphl3fnrc6xmhl4690hr0a5k177ildm")))) + "08ij6zb6id71zk6gzs9z779y49y41c2gpi7p7mljnlw7py92g8k5")))) (build-system r-build-system) (native-inputs `(("gfortran" ,gfortran))) (home-page "https://cran.r-project.org/web/packages/deldir") @@ -15376,14 +15469,14 @@ genetics of complex population dynamics.") (define-public r-genetics (package (name "r-genetics") - (version "1.3.8.1.2") + (version "1.3.8.1.3") (source (origin (method url-fetch) (uri (cran-uri "genetics" version)) (sha256 (base32 - "1v0ylnia6c44v356dsmnkx6054vcxazpzsrdh3yph5ch5vg6gjrh")))) + "0lljxvz7nc6y2z303icphar2niir0i407w5cyhy2pwspd9gwkwpy")))) (build-system r-build-system) (propagated-inputs `(("r-combinat" ,r-combinat) @@ -15497,14 +15590,14 @@ generalized linear models, and quantile regression.") (define-public r-arsenal (package (name "r-arsenal") - (version "3.6.1") + (version "3.6.2") (source (origin (method url-fetch) (uri (cran-uri "arsenal" version)) (sha256 (base32 - "13ql3rb79a764ppsc1sqi8glzzkw79la0j2ahzbxgz7cz879sazy")))) + "0spm0s23xs5bm88slkz6a65mbs663qhnravwxp7rkdkr378vb5fn")))) (properties `((upstream-name . "arsenal"))) (build-system r-build-system) (propagated-inputs `(("r-knitr" ,r-knitr))) @@ -16120,14 +16213,14 @@ consists of @code{grid} grobs and viewports that can then be manipulated with (define-public r-farver (package (name "r-farver") - (version "2.0.3") + (version "2.1.0") (source (origin (method url-fetch) (uri (cran-uri "farver" version)) (sha256 (base32 - "1k75v07dsfkjra2gsgxg9s55cw3b46b1nh960kqphq7cg7gr058f")))) + "1x6ffwxqbrwlylnk995jz2a6nz2y9z59jaq0ncpni7q40w367j75")))) (build-system r-build-system) (home-page "https://github.com/thomasp85/farver") (synopsis "Vectorized color conversion and comparison") @@ -16273,14 +16366,14 @@ sets of URLs.") (define-public r-ggforce (package (name "r-ggforce") - (version "0.3.2") + (version "0.3.3") (source (origin (method url-fetch) (uri (cran-uri "ggforce" version)) (sha256 (base32 - "1lplxyq5bgx90dgaimhynpcywag1gp6vlsy7q52ay1nfc35qmkjc")))) + "0bwzjbjl678xvc2ihm80dwn9pidwafqjdab3k299csys16s3na1a")))) (build-system r-build-system) (propagated-inputs `(("r-ggplot2" ,r-ggplot2) @@ -16346,14 +16439,14 @@ databases, including ENA, PDB or ChEMBL are also accessible.") (define-public r-ggraph (package (name "r-ggraph") - (version "2.0.4") + (version "2.0.5") (source (origin (method url-fetch) (uri (cran-uri "ggraph" version)) (sha256 (base32 - "1j3xf4fsv0i0gbppdrw4yprfyk53wx6s8nvnkipi2ywbm7cr4q4w")))) + "0m4n8iw2b9jk8hcy5blg5w59zsqcpsbv27wbw598dvljpafx8sp3")))) (build-system r-build-system) (propagated-inputs `(("r-digest" ,r-digest) @@ -16383,6 +16476,32 @@ visualizations and provides the same flexible approach to building up plots layer by layer.") (license license:gpl3))) +(define-public r-gkmsvm + (package + (name "r-gkmsvm") + (version "0.81.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "gkmSVM" version)) + (sha256 + (base32 + "119g5rhc7ffyviz04r04aj5z1g6abnj3ddd01g7db505sdr6lapj")))) + (properties `((upstream-name . "gkmSVM"))) + (build-system r-build-system) + (propagated-inputs + `(("r-kernlab" ,r-kernlab) + ("r-rcpp" ,r-rcpp) + ("r-rocr" ,r-rocr) + ("r-seqinr" ,r-seqinr))) + (home-page "https://cran.r-project.org/web/packages/gkmSVM") + (synopsis "Gapped-kmer support vector machine") + (description + "This R package provides tools for training gapped-kmer SVM classifiers +for DNA and protein sequences. This package supports several sequence +kernels, including: gkmSVM, kmer-SVM, mismatch kernel and wildcard kernel.") + (license license:gpl2+))) + (define-public r-varselrf (package (name "r-varselrf") @@ -16668,6 +16787,64 @@ matrix and displays the significance level on the plot. It also includes a function for computing a matrix of correlation p-values.") (license license:gpl2))) +(define-public r-gridtext + (package + (name "r-gridtext") + (version "0.1.4") + (source + (origin + (method url-fetch) + (uri (cran-uri "gridtext" version)) + (sha256 + (base32 + "131kw7nkfwksviwfifd2kk7lyvhxzzzv1nnj8rahkr3dik3akk61")))) + (properties `((upstream-name . "gridtext"))) + (build-system r-build-system) + (propagated-inputs + `(("r-jpeg" ,r-jpeg) + ("r-markdown" ,r-markdown) + ("r-png" ,r-png) + ("r-rcpp" ,r-rcpp) + ("r-rcurl" ,r-rcurl) + ("r-rlang" ,r-rlang) + ("r-stringr" ,r-stringr) + ("r-xml2" ,r-xml2))) + (home-page "https://wilkelab.org/gridtext/") + (synopsis "Improved text rendering support for Grid graphics") + (description + "This package provides support for rendering of formatted text using Grid +graphics. Text can be formatted via a minimal subset of Markdown, HTML, and +inline CSS directives, and it can be rendered both with and without word +wrap.") + (license license:expat))) + +(define-public r-ggtext + (package + (name "r-ggtext") + (version "0.1.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "ggtext" version)) + (sha256 + (base32 + "0n19dlcys8v7myfyckr6dnq0kx79k3sbh8nwx1jsx8pgzfbi8a2b")))) + (properties `((upstream-name . "ggtext"))) + (build-system r-build-system) + (propagated-inputs + `(("r-ggplot2" ,r-ggplot2) + ("r-gridtext" ,r-gridtext) + ("r-rlang" ,r-rlang) + ("r-scales" ,r-scales))) + (native-inputs `(("r-knitr" ,r-knitr))) + (home-page "https://wilkelab.org/ggtext/") + (synopsis "Improved text rendering support for ggplot2") + (description + "This package provides a ggplot2 extension that enables the rendering of +complex formatted plot labels (titles, subtitles, facet labels, axis labels, +etc.). Text boxes with automatic word wrap are also supported.") + (license license:gpl2))) + ;; This package includes minified JavaScript files. When upgrading please ;; check that there are no new minified JavaScript files. (define-public r-flexdashboard @@ -16910,14 +17087,14 @@ regular expressions from human readable expressions") (define-public r-xmlparsedata (package (name "r-xmlparsedata") - (version "1.0.4") + (version "1.0.5") (source (origin (method url-fetch) (uri (cran-uri "xmlparsedata" version)) (sha256 (base32 - "177vfyjrqfi3wam8scpsradap1lv35yc25xq745dr7gabg116yrq")))) + "1c6bnz3ng1qw7sfip8wq3a4dn36a4d6rbja0sadn0a4pbsmk8q3n")))) (properties `((upstream-name . "xmlparsedata"))) (build-system r-build-system) (home-page "https://github.com/r-lib/xmlparsedata#readme") @@ -17338,14 +17515,14 @@ been used in the call to @code{aov}.") (define-public r-dalex (package (name "r-dalex") - (version "2.0.1") + (version "2.1.1") (source (origin (method url-fetch) (uri (cran-uri "DALEX" version)) (sha256 (base32 - "1hiknx55d91abyfj3w4a2xxin7f1q8h5k0041m7w93xjdc4kis98")))) + "1dnqsml94s648w8swsrq8spddnd4mj5pl3q6xxr917w6a1jxgyfz")))) (properties `((upstream-name . "DALEX"))) (build-system r-build-system) (propagated-inputs @@ -17602,14 +17779,14 @@ LargeVis method of Tang et al. (2016) is also provided.") (define-public r-kableextra (package (name "r-kableextra") - (version "1.3.1") + (version "1.3.4") (source (origin (method url-fetch) (uri (cran-uri "kableExtra" version)) (sha256 (base32 - "1zixccpgy9x95fgzfgxc43pm020c80c21flch71klc3zzzsq53gf")))) + "1c5vzy95cbz36jwyssr927qicrayifinv861rvnmg4nghb1gl7q9")))) (properties `((upstream-name . "kableExtra"))) (build-system r-build-system) (propagated-inputs @@ -17623,6 +17800,7 @@ LargeVis method of Tang et al. (2016) is also provided.") ("r-rvest" ,r-rvest) ("r-scales" ,r-scales) ("r-stringr" ,r-stringr) + ("r-svglite" ,r-svglite) ("r-viridislite" ,r-viridislite) ("r-webshot" ,r-webshot) ("r-xml2" ,r-xml2))) @@ -17990,6 +18168,41 @@ stress majorization by Gansner et al. (2004) emphasize hidden group structures in networks or focus on specific nodes.") (license license:expat))) +(define-public r-terra + (package + (name "r-terra") + (version "1.1-4") + (source + (origin + (method url-fetch) + (uri (cran-uri "terra" version)) + (sha256 + (base32 + "1vsh55sq56shc8s2vmkl27yvrdbrbn3l6jrigqf2hmvppkb2jsbg")))) + (properties `((upstream-name . "terra"))) + (build-system r-build-system) + (inputs + `(("gdal" ,gdal) + ("geos" ,geos) + ("proj" ,proj) + ("sqlite" ,sqlite) ; needed for proj + ("zlib" ,zlib))) + (propagated-inputs + `(("r-raster" ,r-raster) + ("r-rcpp" ,r-rcpp))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "https://rspatial.org/terra") + (synopsis "Spatial data analysis") + (description + "This package provides methods for spatial data analysis, especially +raster data. The included methods allow for low-level data manipulation as +well as high-level global, local, zonal, and focal computation. The predict +and interpolate methods facilitate the use of regression type (interpolation, +machine learning) models for spatial prediction. Processing of very large +files is supported.") + (license license:gpl3+))) + (define-public r-tidygraph (package (name "r-tidygraph") @@ -18083,14 +18296,14 @@ in pipelines.") (define-public r-parameters (package (name "r-parameters") - (version "0.11.0") + (version "0.12.0") (source (origin (method url-fetch) (uri (cran-uri "parameters" version)) (sha256 (base32 - "020k3vxnp0vjrlkcxx5vj30vag474hw48zxzw9315whsq4hhhbqc")))) + "0dfqn4l4qmlpwmdva2ahyhlngkzdm0sgiirbdrf3mbbw52bhlmpm")))) (properties `((upstream-name . "parameters"))) (build-system r-build-system) (propagated-inputs @@ -18168,14 +18381,14 @@ atmospheric physics.") (define-public r-lifecycle (package (name "r-lifecycle") - (version "0.2.0") + (version "1.0.0") (source (origin (method url-fetch) (uri (cran-uri "lifecycle" version)) (sha256 (base32 - "0912865c6675fsblrfdk6s568krsj1x8qbk1kipy7m05xs6nwx19")))) + "13hgxk93q9387s8dnqpm8dfx610y0pr76khqksj4kbgj2fr4lcq3")))) (properties `((upstream-name . "lifecycle"))) (build-system r-build-system) (propagated-inputs @@ -19403,14 +19616,14 @@ models.") (define-public r-gamlss (package (name "r-gamlss") - (version "5.2-0") + (version "5.3-1") (source (origin (method url-fetch) (uri (cran-uri "gamlss" version)) (sha256 (base32 - "1q82md0439si0n7vqbbbdk45sjr0ad7i8mgrn3kwnr4h213pb4nk")))) + "1ngf6g4zixwm6ni5r0fs0f6132xd2f2a6mlski9hlqnvvwb46iwr")))) (properties `((upstream-name . "gamlss"))) (build-system r-build-system) (propagated-inputs @@ -20691,14 +20904,14 @@ number embedded in the file rather than the file extension.") (define-public r-imager (package (name "r-imager") - (version "0.42.3") + (version "0.42.7") (source (origin (method url-fetch) (uri (cran-uri "imager" version)) (sha256 (base32 - "1wxvbv803222gjrf1ys6a349xlnmmdw3kqgi93piq9gq7lahihvg")))) + "1dq0rblnrmnk689bcdmml179gk9lff8x92s2npkjllgjq5q2vfpd")))) (properties `((upstream-name . "imager"))) (build-system r-build-system) (inputs @@ -21679,14 +21892,14 @@ Raftery, Appl.Statistics, 1989); it includes inference and basic methods.") (define-public r-forecast (package (name "r-forecast") - (version "8.13") + (version "8.14") (source (origin (method url-fetch) (uri (cran-uri "forecast" version)) (sha256 (base32 - "0vrql5d4v28890np2m6ws1nr1fcl6frs1bz74vfkihkixcmkl3j9")))) + "12bfw029xb1dndcjyn2r7a51i7hnkkbdilp69k97sz2v8b7v1y3s")))) (properties `((upstream-name . "forecast"))) (build-system r-build-system) (propagated-inputs @@ -21765,14 +21978,14 @@ and Euclidean distance is particularly fast.") (define-public r-isocodes (package (name "r-isocodes") - (version "2020.12.04") + (version "2021.02.24") (source (origin (method url-fetch) (uri (cran-uri "ISOcodes" version)) (sha256 (base32 - "18373rkhmwm7y2drvfbhrxkqw9d23avf0ndvh0fg00z4djvddkjx")))) + "19irnn2yi1bzhf03g666la84kj8040f5913kfrmd16dfnjy6j9qm")))) (properties `((upstream-name . "ISOcodes"))) (build-system r-build-system) (home-page "https://cran.r-project.org/package=ISOcodes") @@ -22241,14 +22454,14 @@ Complete access to optimized C functions is made available with (define-public r-openmx (package (name "r-openmx") - (version "2.18.1") + (version "2.19.1") (source (origin (method url-fetch) (uri (cran-uri "OpenMx" version)) (sha256 (base32 - "0gyjps0l3ig90piccgd04s63cz65kk5i5l9iyakps4bv27h1lzwm")))) + "0fbndmwb3krypsavgm3blqkhh8blmi3p186yxmvgv3a9m6r154rj")))) (properties `((upstream-name . "OpenMx"))) (build-system r-build-system) (propagated-inputs @@ -22547,14 +22760,14 @@ Latent regression models and plausible value imputation are also supported.") (define-public r-erm (package (name "r-erm") - (version "1.0-1") + (version "1.0-2") (source (origin (method url-fetch) (uri (cran-uri "eRm" version)) (sha256 (base32 - "0njqzznnhnkvalmhiq5yq1w7gwp2myki5cv61w42ydvd27hdyyg9")))) + "0smym010kswc5vx90qr3x1vl16xj1x1i54rvrj006dc4agc1vmlk")))) (properties `((upstream-name . "eRm"))) (build-system r-build-system) (propagated-inputs @@ -23185,18 +23398,16 @@ Encyclopedia of Integer Sequences} (OEIS) in the function help page.") (define-public r-isoband (package (name "r-isoband") - (version "0.2.3") + (version "0.2.4") (source (origin (method url-fetch) (uri (cran-uri "isoband" version)) (sha256 (base32 - "1zkzdc39dpw2z59bjck27nimz9a2vskmw0f7wb17s53dvy7k3lzr")))) + "0z1qpxcl8b6fi691fbdr3vrb19mn4pas1iff62zl1bafzbdvpmcn")))) (properties `((upstream-name . "isoband"))) (build-system r-build-system) - (propagated-inputs - `(("r-testthat" ,r-testthat))) (native-inputs `(("r-knitr" ,r-knitr))) (home-page "https://github.com/wilkelab/isoband") @@ -23907,14 +24118,14 @@ vignette for more information and examples.") (define-public r-brms (package (name "r-brms") - (version "2.14.4") + (version "2.15.0") (source (origin (method url-fetch) (uri (cran-uri "brms" version)) (sha256 (base32 - "0mzwihhgmn405l6zq11a180q4k3chggj9qj0j7q838b9vrszg59j")))) + "0byc3fyvf9qbvvgwf55ih5d4br1nnxlbaidq9fvr11bmv38h25y1")))) (properties `((upstream-name . "brms"))) (build-system r-build-system) (propagated-inputs @@ -24603,6 +24814,33 @@ diagonals. This package allows you to compute the tensor product of arrays.") which may also be useful for other purposes.") (license license:gpl2+))) +(define-public r-spatstat-sparse + (package + (name "r-spatstat-sparse") + (version "1.2-1") + (source + (origin + (method url-fetch) + (uri (cran-uri "spatstat.sparse" version)) + (sha256 + (base32 + "1w312q7gxzchigxxzk9akscdsz66j5085lgjryamschjgp4f8yk2")))) + (properties + `((upstream-name . "spatstat.sparse"))) + (build-system r-build-system) + (propagated-inputs + `(("r-abind" ,r-abind) + ("r-matrix" ,r-matrix) + ("r-spatstat-utils" ,r-spatstat-utils) + ("r-tensor" ,r-tensor))) + (home-page "http://spatstat.org/") + (synopsis "Sparse three-dimensional arrays and linear algebra utilities") + (description + "This package defines sparse three-dimensional arrays and supports +standard operations on them. The package also includes utility functions for +matrix calculations that are common in statistics, such as quadratic forms.") + (license license:gpl2+))) + (define-public r-spatstat-data (package (name "r-spatstat-data") @@ -24626,31 +24864,111 @@ which may also be useful for other purposes.") package.") (license license:gpl2+))) -(define-public r-spatstat +(define-public r-spatstat-geom (package - (name "r-spatstat") - (version "1.64-1") + (name "r-spatstat-geom") + (version "1.65-5") (source (origin (method url-fetch) - (uri (cran-uri "spatstat" version)) + (uri (cran-uri "spatstat.geom" version)) (sha256 (base32 - "06jmxfs9kz9qqi3ichfgn8dglwb87kq2nl578p83za5psv8cfgya")))) - (properties `((upstream-name . "spatstat"))) + "0g0m5b3nbzpyblbp77n56k6aiw3fn23jkk72h9fhqlg1ydn2fzpk")))) + (properties `((upstream-name . "spatstat.geom"))) + (build-system r-build-system) + (propagated-inputs + `(("r-deldir" ,r-deldir) + ("r-polyclip" ,r-polyclip) + ("r-spatstat-data" ,r-spatstat-data) + ("r-spatstat-sparse" ,r-spatstat-sparse) + ("r-spatstat-utils" ,r-spatstat-utils))) + (home-page "http://spatstat.org/") + (synopsis "Geometrical functionality of the spatstat package") + (description + "This is a subset of the original spatstat package, containing the +user-level code from spatstat which performs geometrical operations, except +for the geometry of linear networks.") + (license license:gpl2+))) + +(define-public r-spatstat-core + (package + (name "r-spatstat-core") + (version "1.65-5") + (source + (origin + (method url-fetch) + (uri (cran-uri "spatstat.core" version)) + (sha256 + (base32 + "0wq61sd53hwyk3fzjdc2prrr66n67zbwb5i3ii7kvyhfwx0xikm3")))) + (properties `((upstream-name . "spatstat.core"))) (build-system r-build-system) (propagated-inputs `(("r-abind" ,r-abind) - ("r-deldir" ,r-deldir) ("r-goftest" ,r-goftest) ("r-matrix" ,r-matrix) ("r-mgcv" ,r-mgcv) ("r-nlme" ,r-nlme) - ("r-polyclip" ,r-polyclip) ("r-rpart" ,r-rpart) ("r-spatstat-data" ,r-spatstat-data) + ("r-spatstat-geom" ,r-spatstat-geom) + ("r-spatstat-sparse" ,r-spatstat-sparse) ("r-spatstat-utils" ,r-spatstat-utils) ("r-tensor" ,r-tensor))) + (home-page "http://spatstat.org/") + (synopsis "Core functionality of the spatstat package") + (description + "This is a subset of the original spatstat package, containing all of the +user-level code from spatstat, except for the code for linear networks.") + (license license:gpl2+))) + +(define-public r-spatstat-linnet + (package + (name "r-spatstat-linnet") + (version "1.65-3") + (source + (origin + (method url-fetch) + (uri (cran-uri "spatstat.linnet" version)) + (sha256 + (base32 + "1y088r26h5yv006ydgcb4iwpvnc7ql857gky0hbi7xqqciqr8wdv")))) + (properties + `((upstream-name . "spatstat.linnet"))) + (build-system r-build-system) + (propagated-inputs + `(("r-matrix" ,r-matrix) + ("r-spatstat-core" ,r-spatstat-core) + ("r-spatstat-data" ,r-spatstat-data) + ("r-spatstat-geom" ,r-spatstat-geom) + ("r-spatstat-utils" ,r-spatstat-utils))) + (home-page "http://spatstat.org/") + (synopsis "Linear networks functionality of the spatstat package") + (description + "This is a subset of the spatstat package, containing its functionality +for spatial data on a linear network.") + (license license:gpl2+))) + +(define-public r-spatstat + (package + (name "r-spatstat") + (version "2.0-1") + (source + (origin + (method url-fetch) + (uri (cran-uri "spatstat" version)) + (sha256 + (base32 + "1xq11ijc0d0lbixxb3wnvyr4gplfj2d2i64ynsa089xd525zzzbw")))) + (properties `((upstream-name . "spatstat"))) + (build-system r-build-system) + (propagated-inputs + `(("r-spatstat-core" ,r-spatstat-core) + ("r-spatstat-data" ,r-spatstat-data) + ("r-spatstat-geom" ,r-spatstat-geom) + ("r-spatstat-linnet" ,r-spatstat-linnet) + ("r-spatstat-utils" ,r-spatstat-utils))) (home-page "http://www.spatstat.org") (synopsis "Spatial Point Pattern analysis, model-fitting, simulation, tests") (description @@ -24906,26 +25224,36 @@ censored data.") (define-public r-flexsurv (package (name "r-flexsurv") - (version "1.1.1") + (version "2.0") (source (origin (method url-fetch) (uri (cran-uri "flexsurv" version)) (sha256 (base32 - "0x7p1rv51pplfyyzcg63ssb8z56mig7y0363hkr0219w3cvyq9nr")))) + "0vshsijqlzsz0xh426vsswpai1v5c990ggyniqqzsjbg3mn8dbl9")))) (properties `((upstream-name . "flexsurv"))) (build-system r-build-system) (propagated-inputs - `(("r-desolve" ,r-desolve) + `(("r-assertthat" ,r-assertthat) + ("r-desolve" ,r-desolve) + ("r-dplyr" ,r-dplyr) + ("r-generics" ,r-generics) + ("r-magrittr" ,r-magrittr) + ("r-matrix" ,r-matrix) ("r-mstate" ,r-mstate) ("r-muhaz" ,r-muhaz) ("r-mvtnorm" ,r-mvtnorm) + ("r-numderiv" ,r-numderiv) + ("r-purrr" ,r-purrr) ("r-quadprog" ,r-quadprog) ("r-rcpp" ,r-rcpp) + ("r-rlang" ,r-rlang) + ("r-rstpm2" ,r-rstpm2) ("r-survival" ,r-survival) ("r-tibble" ,r-tibble) - ("r-tidyr" ,r-tidyr))) + ("r-tidyr" ,r-tidyr) + ("r-tidyselect" ,r-tidyselect))) (native-inputs `(("r-knitr" ,r-knitr))) (home-page "https://github.com/chjackson/flexsurv-dev") @@ -25091,14 +25419,14 @@ p-value approximations.") (define-public r-survminer (package (name "r-survminer") - (version "0.4.8") + (version "0.4.9") (source (origin (method url-fetch) (uri (cran-uri "survminer" version)) (sha256 (base32 - "1niysd89mxb2a6ncvzm1s6xgfvq3psba65af0whh2p56r2hwrwff")))) + "0byh0wxdbjfwdrzsnqv4xlmnik6lj0vkkzfxy7lssk8dv5zmj7nz")))) (properties `((upstream-name . "survminer"))) (build-system r-build-system) (propagated-inputs @@ -25106,6 +25434,7 @@ p-value approximations.") ("r-dplyr" ,r-dplyr) ("r-ggplot2" ,r-ggplot2) ("r-ggpubr" ,r-ggpubr) + ("r-ggtext" ,r-ggtext) ("r-gridextra" ,r-gridextra) ("r-magrittr" ,r-magrittr) ("r-maxstat" ,r-maxstat) @@ -25274,14 +25603,14 @@ more.") (define-public r-workflows (package (name "r-workflows") - (version "0.2.1") + (version "0.2.2") (source (origin (method url-fetch) (uri (cran-uri "workflows" version)) (sha256 (base32 - "1mk0pnmpqlhf143mvj9rwvjrrshirz6s83s5hbfalhnyw7hzkfb9")))) + "19ipcxx4qfz28cjkgr1vny03yhmbd3m2v64v30gk5pf73nazvmaz")))) (properties `((upstream-name . "workflows"))) (build-system r-build-system) (propagated-inputs @@ -25292,7 +25621,8 @@ more.") ("r-hardhat" ,r-hardhat) ("r-parsnip" ,r-parsnip) ("r-rlang" ,r-rlang) - ("r-tidyselect" ,r-tidyselect))) + ("r-tidyselect" ,r-tidyselect) + ("r-vctrs" ,r-vctrs))) (native-inputs `(("r-knitr" ,r-knitr))) (home-page "https://github.com/tidymodels/workflows") @@ -25423,14 +25753,14 @@ sliding windows are to be created.") (define-public r-rsample (package (name "r-rsample") - (version "0.0.8") + (version "0.0.9") (source (origin (method url-fetch) (uri (cran-uri "rsample" version)) (sha256 (base32 - "1psmxk16d4bz1v05x0gb9hn4brkdjxw8hjbxmj62snichnix3q3i")))) + "03qwsvylgmj2a2h764mzy0x57pgzmvjvl0ypmbn4lcf912bvrd2c")))) (properties `((upstream-name . "rsample"))) (build-system r-build-system) (propagated-inputs @@ -25438,7 +25768,6 @@ sliding windows are to be created.") ("r-ellipsis" ,r-ellipsis) ("r-furrr" ,r-furrr) ("r-generics" ,r-generics) - ("r-modeldata" ,r-modeldata) ("r-purrr" ,r-purrr) ("r-rlang" ,r-rlang) ("r-slider" ,r-slider) @@ -25458,14 +25787,14 @@ different types of resampling objects (e.g. bootstrap, cross-validation).") (define-public r-dicedesign (package (name "r-dicedesign") - (version "1.8-1") + (version "1.9") (source (origin (method url-fetch) (uri (cran-uri "DiceDesign" version)) (sha256 (base32 - "11s1m543kxd6gv4amh8z6pph1n67sj9sfwm6hjy83wfs65syf5vp")))) + "1a8ixa65xgyfri03cviic8qi2plbhdyz8m02bwif8w94w0q3ghlk")))) (properties `((upstream-name . "DiceDesign"))) (build-system r-build-system) (home-page "http://dice.emse.fr/") @@ -25510,14 +25839,14 @@ for creating, simulating, or validating values for such parameters.") (define-public r-tune (package (name "r-tune") - (version "0.1.2") + (version "0.1.3") (source (origin (method url-fetch) (uri (cran-uri "tune" version)) (sha256 (base32 - "0ja7rjkjj88v3ngrc6izcz2qh9qv4s8abgcafmvx2ihgz99hds37")))) + "05r5jzg96g2z10a2w4w8wq1ysfaxr91acwrvn75pmcy4rmixf293")))) (properties `((upstream-name . "tune"))) (build-system r-build-system) (propagated-inputs @@ -25529,7 +25858,6 @@ for creating, simulating, or validating values for such parameters.") ("r-ggplot2" ,r-ggplot2) ("r-glue" ,r-glue) ("r-gpfit" ,r-gpfit) - ("r-hardhat" ,r-hardhat) ("r-parsnip" ,r-parsnip) ("r-purrr" ,r-purrr) ("r-recipes" ,r-recipes) @@ -25876,6 +26204,32 @@ statistical analysis that share the underlying design philosophy, grammar, and data structures of the tidyverse.") (license license:gpl3))) +(define-public r-lsa + (package + (name "r-lsa") + (version "0.73.2") + (source + (origin + (method url-fetch) + (uri (cran-uri "lsa" version)) + (sha256 + (base32 + "1a33irqa6qvbc02z12rgbgv8kxq2gmahy7j5bg8b23lvvaxif06b")))) + (properties `((upstream-name . "lsa"))) + (build-system r-build-system) + (propagated-inputs + `(("r-snowballc" ,r-snowballc))) + (home-page "https://cran.r-project.org/package=lsa") + (synopsis "Latent semantic analysis") + (description + "The basic idea of latent semantic analysis (LSA) is, that text do have a +higher order (=latent semantic) structure which, however, is obscured by word +usage (e.g. through the use of synonyms or polysemy). By using conceptual +indices that are derived statistically via a truncated singular value +decomposition (a two-mode factor analysis) over a given document-term matrix, +this variability problem can be overcome.") + (license license:gpl2+))) + (define-public r-mlecens (package (name "r-mlecens") @@ -26163,6 +26517,18 @@ other R users.") "1mp3py00bmzj4541d8ry5sfzkpfzvnl9dpa8n4qhakd13dl30xdn")))) (properties `((upstream-name . "Seurat"))) (build-system r-build-system) + ;; This is needed because r-spatstat has been split up and there has + ;; been no new release of Seurat since then. + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-spatstat-import + (lambda _ + (substitute* "NAMESPACE" + (("importFrom\\(spatstat,markvario\\)") + "importFrom(spatstat.core,markvario)") + (("importFrom\\(spatstat,ppp\\)") + "importFrom(spatstat.geom,ppp)"))))))) (propagated-inputs `(("r-cluster" ,r-cluster) ("r-cowplot" ,r-cowplot) @@ -26548,13 +26914,13 @@ package also supersedes the package @code{BBmisc}.") (define-public r-paradox (package (name "r-paradox") - (version "0.7.0") + (version "0.7.1") (source (origin (method url-fetch) (uri (cran-uri "paradox" version)) (sha256 (base32 - "1fz6sdwvvifm4qbmwgm27dil278mswvcfw8bbsvli5v4l1ghw8kj")))) + "1difp0bzsfxcmbm1snahh3i6417k1a2w4mnjx65p20n2yiclmrgs")))) (build-system r-build-system) (propagated-inputs `(("r-backports" ,r-backports) @@ -26573,13 +26939,13 @@ implemented as @code{R6} classes.") (define-public r-mlr3 (package (name "r-mlr3") - (version "0.10.0") + (version "0.11.0") (source (origin (method url-fetch) (uri (cran-uri "mlr3" version)) (sha256 (base32 - "1arqijbbmhv57mj8kyq30zxykah83ab1d1c7gs0cxs0xhfwln66g")))) + "0qh9vdac1als2123wf51bwa7spdqk33iydlawi5n5dpci892iahl")))) (build-system r-build-system) (propagated-inputs `(("r-r6" ,r-r6) @@ -26592,7 +26958,9 @@ implemented as @code{R6} classes.") ("r-mlbench" ,r-mlbench) ("r-mlr3measures" ,r-mlr3measures) ("r-mlr3misc" ,r-mlr3misc) + ("r-palmerpenguins" ,r-palmerpenguins) ("r-paradox" ,r-paradox) + ("r-parallelly" ,r-parallelly) ("r-uuid" ,r-uuid))) (home-page "https://mlr3.mlr-org.com/") (synopsis "Machine Learning in R - Next Generation") @@ -26633,14 +27001,14 @@ vector machines, and gradient boosting.") (define-public r-bbotk (package (name "r-bbotk") - (version "0.3.0") + (version "0.3.1") (source (origin (method url-fetch) (uri (cran-uri "bbotk" version)) (sha256 (base32 - "0kbjbwwq1fdfpl4xzy08hz4qvhjjchvz58icxq0dlbsmdyqwhwv0")))) + "1f29wxnxr73c4yp5afk05jqggpm7k1z8wiak8xsyw68h7xflq550")))) (properties `((upstream-name . "bbotk"))) (build-system r-build-system) (propagated-inputs @@ -26663,13 +27031,13 @@ annealing.") (define-public r-mlr3tuning (package (name "r-mlr3tuning") - (version "0.6.0") + (version "0.8.0") (source (origin (method url-fetch) (uri (cran-uri "mlr3tuning" version)) (sha256 (base32 - "0kxf9wl1jnwyrj2zfmiz12w2594407y44m0xxwp9b2lrwxk31wm7")))) + "16rvsf0jf06yvalydbs7zzn2994hvvyfw975ydiyv3wy1qzgr8bv")))) (build-system r-build-system) (propagated-inputs `(("r-bbotk" ,r-bbotk) @@ -26962,14 +27330,14 @@ clusterings as resolution increases.") (define-public r-textshaping (package (name "r-textshaping") - (version "0.3.0") + (version "0.3.2") (source (origin (method url-fetch) (uri (cran-uri "textshaping" version)) (sha256 (base32 - "053pbw45by96q62kjfnyc3d0ssar9svssrdqy6a09kdmdh75xdar")))) + "0fqh4z505b2qriqcj70g2hhdgiawd3w2rs9rqxdwizz5vk8jjygx")))) (properties `((upstream-name . "textshaping"))) (build-system r-build-system) (inputs @@ -26995,14 +27363,14 @@ the font tool-set provided by the @code{systemfonts} package.") (define-public r-ragg (package (name "r-ragg") - (version "0.4.1") + (version "1.1.1") (source (origin (method url-fetch) (uri (cran-uri "ragg" version)) (sha256 (base32 - "0443dhfi7bjfpap041vrnslw3ql3vpsxx18raz2w9nfdb7id8lsc")))) + "0nh1xxrxgdbq9anzkc6k3n519czp9hqyiizakm3m2gl4l4w0vp0q")))) (properties `((upstream-name . "ragg"))) (build-system r-build-system) (inputs @@ -27101,3 +27469,814 @@ from a source package. @code{pkgdown} converts your documentation, vignettes, README file, and more to HTML making it easy to share information about your package online.") (license license:expat))) + +(define-public r-prereg + (package + (name "r-prereg") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "prereg" version)) + (sha256 + (base32 + "0bck13iiaxwpqh0rd45mp1s5d8z62ggg0wa7rmyi8a65aywiypsi")))) + (properties `((upstream-name . "prereg"))) + (build-system r-build-system) + (propagated-inputs + `(("r-rmarkdown" ,r-rmarkdown))) + (home-page "https://github.com/crsh/prereg") + (synopsis + "R Markdown Templates to preregister Scientific Studies") + (description + "This package provides a collection of templates to author +preregistration documents for scientific studies in PDF format.") + (license license:gpl3))) + +(define-public r-ez + (package + (name "r-ez") + (version "4.4-0") + (source + (origin + (method url-fetch) + (uri (cran-uri "ez" version)) + (sha256 + (base32 + "0a58s94x576dfz7wcbivrr2hmdh5x1vy16zwkqp9fmdzqx38pagq")))) + (properties `((upstream-name . "ez"))) + (build-system r-build-system) + (propagated-inputs + `(("r-car" ,r-car) + ("r-ggplot2" ,r-ggplot2) + ("r-lme4" ,r-lme4) + ("r-mass" ,r-mass) + ("r-matrix" ,r-matrix) + ("r-mgcv" ,r-mgcv) + ("r-plyr" ,r-plyr) + ("r-reshape2" ,r-reshape2) + ("r-scales" ,r-scales) + ("r-stringr" ,r-stringr))) + (home-page "https://github.com/mike-lawrence/ez") + (synopsis "Easy Analysis and Visualization of Factorial Experiments") + (description + "Facilitates easy analysis of factorial experiments, including purely +within-Ss designs (a.k.a. \"repeated measures\"), purely between-Ss designs, +and mixed within-and-between-Ss designs. The functions in this package aim to +provide simple, intuitive and consistent specification of data analysis and +visualization. Visualization functions also include design visualization for +pre-analysis data auditing, and correlation matrix visualization. Finally, +this package includes functions for non-parametric analysis, including +permutation tests and bootstrap resampling. The bootstrap function obtains +predictions either by cell means or by more advanced/powerful mixed effects +models, yielding predictions and confidence intervals that may be easily +visualized at any level of the experiment's design.") + (license license:gpl2+))) + +(define-public r-qdapregex + (package + (name "r-qdapregex") + (version "0.7.2") + (source + (origin + (method url-fetch) + (uri (cran-uri "qdapRegex" version)) + (sha256 + (base32 + "1xa8q1way3gjadrjh3mv3xr4c6b4h16nd2c6lgl969difplpfz9p")))) + (properties `((upstream-name . "qdapRegex"))) + (build-system r-build-system) + (propagated-inputs `(("r-stringi" ,r-stringi))) + (home-page + "https://trinker.github.com/qdapRegex/") + (synopsis + "Regular Expression Removal, Extraction, and Replacement Tools") + (description + "This package provides a collection of regular expression tools +associated with the @code{qdap} package that may be useful outside of the +context of discourse analysis. Tools include removal/extraction/replacement of +abbreviations, dates, dollar amounts, email addresses, hash tags, numbers, +percentages, citations, person tags, phone numbers, times, and zip codes.") + (license license:gpl2))) + +(define-public r-mgsub + (package + (name "r-mgsub") + (version "1.7.2") + (source + (origin + (method url-fetch) + (uri (cran-uri "mgsub" version)) + (sha256 + (base32 + "02l1b96zv36ia0c97wgcwfhi037mbn3wy9c64hcw0n0w67yj77rr")))) + (properties `((upstream-name . "mgsub"))) + (build-system r-build-system) + (native-inputs `(("r-knitr" ,r-knitr))) + (home-page + "https://cran.r-project.org/package=mgsub") + (synopsis + "Safe, Multiple, Simultaneous String Substitution") + (description + "Designed to enable simultaneous substitution in strings in a safe +fashion. Safe means it does not rely on placeholders (which can cause errors +in same length matches).") + (license license:expat))) + +(define-public r-textshape + (package + (name "r-textshape") + (version "1.7.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "textshape" version)) + (sha256 + (base32 + "02111kj3kka84mpx7s19bjna9cas8diw5fxz51v5ggz0ldswa5pa")))) + (properties `((upstream-name . "textshape"))) + (build-system r-build-system) + (propagated-inputs + `(("r-data-table" ,r-data-table) + ("r-slam" ,r-slam) + ("r-stringi" ,r-stringi))) + (home-page "http://github.com/trinker/textshape") + (synopsis "Tools for Reshaping Text") + (description + "Tools that can be used to reshape and restructure text data.") + (license license:gpl2))) + +(define-public r-syuzhet + (package + (name "r-syuzhet") + (version "1.0.6") + (source + (origin + (method url-fetch) + (uri (cran-uri "syuzhet" version)) + (sha256 + (base32 + "16iccqdbw02iw82nah6kwz3gwfghi864j2y698n4b9dyc386ijzv")))) + (properties `((upstream-name . "syuzhet"))) + (build-system r-build-system) + (propagated-inputs + `(("r-dplyr" ,r-dplyr) + ("r-dtt" ,r-dtt) + ("r-nlp" ,r-nlp) + ("r-rlang" ,r-rlang) + ("r-textshape" ,r-textshape) + ("r-tidyr" ,r-tidyr) + ("r-zoo" ,r-zoo))) + (native-inputs `(("r-knitr" ,r-knitr))) + (home-page "https://github.com/mjockers/syuzhet") + (synopsis + "Extracts Sentiment and Sentiment-Derived Plot Arcs from Text") + (description + "Extracts sentiment and sentiment-derived plot arcs from text using a +variety of sentiment dictionaries conveniently packaged for consumption by R +users. Implemented dictionaries include @dfn{syuzhet} (default) developed in the +Nebraska Literary Lab, @dfn{afinn} developed by Finn Arup Nielsen, @dfn{bing} +developed by Minqing Hu and Bing Liu, and @dfn{nrc} developed by Mohammad, Saif +M. and Turney, Peter D. Applicable references are available in +@file{README.md} and in the documentation for the @code{get_sentiment} +function. The package also provides a hack for implementing Stanford's coreNLP +sentiment parser. The package provides several methods for plot arc +normalization.") + (license license:gpl3))) + +(define-public r-lexicon + (package + (name "r-lexicon") + (version "1.2.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "lexicon" version)) + (sha256 + (base32 + "0x7rscsh6par2lj11sby7bmz41cxn63iiw51lgh29z09cg8j606c")))) + (properties `((upstream-name . "lexicon"))) + (build-system r-build-system) + (propagated-inputs + `(("r-data-table" ,r-data-table) + ("r-syuzhet" ,r-syuzhet))) + (home-page "https://github.com/trinker/lexicon") + (synopsis "Lexicons for Text Analysis") + (description + "This package provides a collection of lexical hash tables, dictionaries, +and word lists.") + (license license:gpl3))) + +(define-public r-english + (package + (name "r-english") + (version "1.2-5") + (source + (origin + (method url-fetch) + (uri (cran-uri "english" version)) + (sha256 + (base32 + "0d6rin40wy2y6k75x8d5qvf03rfy139f309wrl8xwbdb1h8fjkd1")))) + (properties `((upstream-name . "english"))) + (build-system r-build-system) + (native-inputs `(("r-knitr" ,r-knitr))) + (home-page + "https://cran.r-project.org/package=english") + (synopsis "Translate Integers into English") + (description + "Allow numbers to be presented in an English language version, one, two, +three, ... Ordinals are also available, first, second, third, ... and +indefinite article choice, \"a\" or \"an\".") + (license license:gpl2))) + +(define-public r-textclean + (package + (name "r-textclean") + (version "0.9.3") + (source + (origin + (method url-fetch) + (uri (cran-uri "textclean" version)) + (sha256 + (base32 + "0kgjh6c4f14qkjc4fds7q7rpf4nkma3p0igm54fplmm3p853nvrz")))) + (properties `((upstream-name . "textclean"))) + (build-system r-build-system) + (propagated-inputs + `(("r-data-table" ,r-data-table) + ("r-english" ,r-english) + ("r-glue" ,r-glue) + ("r-lexicon" ,r-lexicon) + ("r-mgsub" ,r-mgsub) + ("r-qdapregex" ,r-qdapregex) + ("r-stringi" ,r-stringi) + ("r-textshape" ,r-textshape))) + (home-page + "https://github.com/trinker/textclean") + (synopsis "Text Cleaning Tools") + (description + "Tools to clean and process text. Tools are geared at checking for +substrings that are not optimal for analysis and replacing or removing them +(normalizing) with more analysis friendly substrings (see Sproat, Black, Chen, +Kumar, Ostendorf, & Richards (2001) @url{doi:10.1006/csla.2001.0169}) or +extracting them into new variables. For example, emoticons are often used in +text but not always easily handled by analysis algorithms. The +@code{replace_emoticon()} function replaces emoticons with word equivalents.") + (license license:gpl2))) + +(define-public r-striprtf + (package + (name "r-striprtf") + (version "0.5.2") + (source + (origin + (method url-fetch) + (uri (cran-uri "striprtf" version)) + (sha256 + (base32 + "1ra6aalalig6drsj26z9s24lmb10zssagqrvgqqi4358zbm8gwcd")))) + (properties `((upstream-name . "striprtf"))) + (build-system r-build-system) + (propagated-inputs + `(("r-magrittr" ,r-magrittr) + ("r-rcpp" ,r-rcpp) + ("r-stringr" ,r-stringr))) + (home-page "https://github.com/kota7/striprtf") + (synopsis "Extract Text from RTF File") + (description + "Extracts plain text from @dfn{Rich Text Format} (RTF) file.") + (license license:expat))) + +(define-public r-ndjson + (package + (name "r-ndjson") + (version "0.8.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "ndjson" version)) + (sha256 + (base32 + "0lvzbgfi1sg4kya1mvv67z14qk3vz9q57x22qh57xq8ampdkg812")) + (modules '((guix build utils))) + (snippet + '(begin + ;; unvendor gzstream + (for-each delete-file '("src/gzstream.cpp" "src/gzstream.h")) + #t)))) + (properties `((upstream-name . "ndjson"))) + (build-system r-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'use-system-gzstream + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/Makevars" + (("PKG_LIBS = " all) + (string-append all "-lgzstream "))) + #t))))) + (inputs `(("zlib" ,zlib) ("gzstream" ,gzstream))) + (propagated-inputs + `(("r-data-table" ,r-data-table) + ("r-rcpp" ,r-rcpp) + ("r-tibble" ,r-tibble))) + (home-page "https://gitlab.com/hrbrmstr/ndjson") + (synopsis + "Wicked-Fast @dfn{Streaming JSON} (ndjson) Reader") + (description + "@dfn{Streaming JSON} (ndjson) has one JSON record per-line and many +modern ndjson files contain large numbers of records. These constructs may not +be columnar in nature, but it is often useful to read in these files and +\"flatten\" the structure out to enable working with the data in an R +@code{data.frame}-like context. Functions are provided that make it possible +to read in plain ndjson files or compressed (@code{gz}) ndjson files and either +validate the format of the records or create \"flat\" @code{data.table} +structures from them.") + (license license:expat))) + +(define-public r-streamr + (package + (name "r-streamr") + (version "0.4.5") + (source + (origin + (method url-fetch) + (uri (cran-uri "streamR" version)) + (sha256 + (base32 + "1clx3b0j2515r1nmnl6ki7qw5n54q3x2jvqv3zrc00kq71mlj7ix")))) + (properties `((upstream-name . "streamR"))) + (build-system r-build-system) + (propagated-inputs + `(("r-ndjson" ,r-ndjson) + ("r-rcurl" ,r-rcurl) + ("r-rjson" ,r-rjson))) + (home-page + "https://cran.r-project.org/package=streamR") + (synopsis + "Access to Twitter Streaming API via R") + (description + "This package provides functions to access Twitter's filter, sample, and +user streams, and to parse the output into data frames.") + (license license:gpl2))) + +(define-public r-readods + (package + (name "r-readods") + (version "1.7.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "readODS" version)) + (sha256 + (base32 + "1hi217ab7hp15jsbzi5ak57cqf8jn2rv78bnn74q72gn9mrfra7n")))) + (properties `((upstream-name . "readODS"))) + (build-system r-build-system) + (propagated-inputs + `(("r-cellranger" ,r-cellranger) + ("r-readr" ,r-readr) + ("r-stringi" ,r-stringi) + ("r-xml2" ,r-xml2))) + (native-inputs `(("r-knitr" ,r-knitr))) + (home-page + "https://cran.r-project.org/package=readODS") + (synopsis "Read and Write ODS Files") + (description + "Import @dfn{OpenDocument Spreadsheet} (ODS) into R as a data frame. +Also support writing data frame into ODS file.") + (license license:gpl3))) + +(define-public r-qpdf + (package + (name "r-qpdf") + (version "1.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "qpdf" version)) + (sha256 + (base32 + "03lnfncw8qd1fwfyqh1mjvnsjr3b63wxbah0wp5g7z7gba90dwbi")) + (modules '((guix build utils))) + (snippet + '(begin + ;; unvendor libqpdf + (delete-file-recursively "src/libqpdf") + (delete-file-recursively "src/include/qpdf") + #t)))) + (properties `((upstream-name . "qpdf"))) + (build-system r-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'configure + (lambda _ + (setenv "EXTERNAL_QPDF" "1") + #t))))) + (inputs + `(("zlib" ,zlib) + ("qpdf" ,qpdf))) + (propagated-inputs + `(("r-askpass" ,r-askpass) + ("r-curl" ,r-curl) + ("r-rcpp" ,r-rcpp))) + (native-inputs `(("pkg-config" ,pkg-config))) + (home-page "https://github.com/ropensci/qpdf") + (synopsis + "Split, Combine and Compress PDF Files") + (description + "Content-preserving transformations transformations of PDF files such as +split, combine, and compress. This package interfaces directly to the +@code{qpdf} C++ API and does not require any command line utilities. Note that +@code{qpdf} does not read actual content from PDF files: to extract text and +data you need the @code{pdftools} package.") + (license license:asl2.0))) + +(define-public r-pdftools + (package + (name "r-pdftools") + (version "2.3.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "pdftools" version)) + (sha256 + (base32 + "01i5g2mjkshis0zlm7lrvi7kkzl4dn3if1hzwkgzf9n2mi33ndsx")))) + (properties `((upstream-name . "pdftools"))) + (build-system r-build-system) + (inputs + `(("zlib" ,zlib) + ("poppler" ,poppler))) + (propagated-inputs + `(("r-qpdf" ,r-qpdf) ("r-rcpp" ,r-rcpp))) + (native-inputs `(("pkg-config" ,pkg-config))) + (home-page + "https://docs.ropensci.org/pdftools/") + (synopsis + "Text Extraction, Rendering and Converting of PDF Documents") + (description + "Utilities based on @code{libpoppler} for extracting text, fonts, +attachments and metadata from a PDF file. Also supports high quality rendering +of PDF documents into PNG, JPEG, TIFF format, or into raw bitmap vectors for +further processing in R.") + (license license:expat))) + +(define-public r-antiword + (package + (name "r-antiword") + (version "1.3") + (source + (origin + (method url-fetch) + (uri (cran-uri "antiword" version)) + (sha256 + (base32 + "034znb0g9wwb8gi1r3z75v3sbb4mh83qrc4y8mbfx5lbgh8zhj6j")) + (modules '((guix build utils))) + (snippet + '(begin + ;; unvendor libantiword + (delete-file-recursively "src") + #t)))) + (properties `((upstream-name . "antiword"))) + (build-system r-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'use-system-antiword + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "R/antiword.R" + (("system.file\\(\"bin\", package = \"antiword\"\\)") + (string-append "\"" (assoc-ref inputs "antiword") "/bin\""))) + #t))))) + (inputs `(("antiword" ,antiword))) + (propagated-inputs `(("r-sys" ,r-sys))) + (home-page + "https://github.com/ropensci/antiword#readme") + (synopsis + "Extract Text from Microsoft Word Documents") + (description + "Wraps the @code{AntiWord} utility to extract text from Microsoft Word +documents. The utility only supports the old @code{doc} format, not the new +xml based @code{docx} format. Use the @code{xml2} package to read the +latter.") + (license license:gpl2))) + +(define-public r-readtext + (package + (name "r-readtext") + (version "0.80") + (source + (origin + (method url-fetch) + (uri (cran-uri "readtext" version)) + (sha256 + (base32 + "0q8ajnp99fwvh14ppkm2z3gqwdwmjrvxvsfb4q7ad0dhkqric05y")))) + (properties `((upstream-name . "readtext"))) + (build-system r-build-system) + (propagated-inputs + `(("r-antiword" ,r-antiword) + ("r-data-table" ,r-data-table) + ("r-digest" ,r-digest) + ("r-httr" ,r-httr) + ("r-jsonlite" ,r-jsonlite) + ("r-pdftools" ,r-pdftools) + ("r-readods" ,r-readods) + ("r-readxl" ,r-readxl) + ("r-streamr" ,r-streamr) + ("r-stringi" ,r-stringi) + ("r-striprtf" ,r-striprtf) + ("r-tibble" ,r-tibble) + ("r-xml2" ,r-xml2))) + (native-inputs `(("r-knitr" ,r-knitr))) + (home-page + "https://github.com/quanteda/readtext") + (synopsis + "Import and Handling for Plain and Formatted Text Files") + (description + "This package provides functions for importing and handling text files +and formatted text files with additional meta-data, such including @code{.csv}, +@code{.tab}, @code{.json}, @code{.xml}, @code{.html}, @code{.pdf}, @code{.doc}, +@code{.docx}, @code{.rtf}, @code{.xls}, @code{.xlsx}, and others.") + (license license:gpl3))) + +(define-public r-packcircles + (package + (name "r-packcircles") + (version "0.3.4") + (source + (origin + (method url-fetch) + (uri (cran-uri "packcircles" version)) + (sha256 + (base32 + "05pv5c4k4njkr0xw6i6ksiy34hcyx2lbiqpv5gxw81yrkm0rxfyk")))) + (properties `((upstream-name . "packcircles"))) + (build-system r-build-system) + (propagated-inputs `(("r-rcpp" ,r-rcpp))) + (native-inputs `(("r-knitr" ,r-knitr))) + (home-page + "https://github.com/mbedward/packcircles") + (synopsis "Circle Packing") + (description + "Algorithms to find arrangements of non-overlapping circles.") + (license license:expat))) + +;; Cannot unbundle liblwgeom, because PostGIS does not support building it on +;; its own. +(define-public r-lwgeom + (package + (name "r-lwgeom") + (version "0.2-5") + (source + (origin + (method url-fetch) + (uri (cran-uri "lwgeom" version)) + (sha256 + (base32 + "0byhjqa2acns8mznl1ngnfygxxxyszvnq66qfg0smhhhdkwr67aa")))) + (properties `((upstream-name . "lwgeom"))) + (build-system r-build-system) + (inputs `(("geos" ,geos) ("proj" ,proj) ("sqlite" ,sqlite))) + (propagated-inputs + `(("r-rcpp" ,r-rcpp) + ("r-sf" ,r-sf) + ("r-units" ,r-units))) + (native-inputs `(("pkg-config" ,pkg-config))) + (home-page + "https://github.com/r-spatial/lwgeom/") + (synopsis + "Bindings to Selected 'liblwgeom' Functions for Simple Features") + (description + "Access to selected functions found in +@url{https://github.com/postgis/postgis/tree/master/liblwgeom,liblwgeom}, the +light-weight geometry library used by @url{http://postgis.net/,PostGIS}.") + (license license:gpl2))) + +(define-public r-stars + (package + (name "r-stars") + (version "0.5-1") + (source + (origin + (method url-fetch) + (uri (cran-uri "stars" version)) + (sha256 + (base32 + "0ybk899rc0rpf2cv5kwk78fvis5xnr255hfcy5khdxsxdqgl0m9j")))) + (properties `((upstream-name . "stars"))) + (build-system r-build-system) + (propagated-inputs + `(("r-abind" ,r-abind) + ("r-classint" ,r-classint) + ("r-lwgeom" ,r-lwgeom) + ("r-rlang" ,r-rlang) + ("r-sf" ,r-sf) + ("r-units" ,r-units))) + (native-inputs `(("r-knitr" ,r-knitr))) + (home-page "https://r-spatial.github.io/stars/") + (synopsis + "Spatiotemporal Arrays, Raster and Vector Data Cubes") + (description + "Reading, manipulating, writing and plotting spatiotemporal arrays +(raster and vector data cubes) in @code{R}, using @code{GDAL} bindings provided +by @code{sf}, and @code{NetCDF} bindings by @code{ncmeta} and @code{RNetCDF}.") + (license license:asl2.0))) + +(define-public r-tmaptools + (package + (name "r-tmaptools") + (version "3.1-1") + (source + (origin + (method url-fetch) + (uri (cran-uri "tmaptools" version)) + (sha256 + (base32 + "0bal3czrdr93qig8s5cf5szld5vjbbks67rismfhlkmlgw6wp2gx")))) + (properties `((upstream-name . "tmaptools"))) + (build-system r-build-system) + (propagated-inputs + `(("r-dichromat" ,r-dichromat) + ("r-lwgeom" ,r-lwgeom) + ("r-magrittr" ,r-magrittr) + ("r-rcolorbrewer" ,r-rcolorbrewer) + ("r-sf" ,r-sf) + ("r-stars" ,r-stars) + ("r-units" ,r-units) + ("r-viridislite" ,r-viridislite) + ("r-xml" ,r-xml))) + (home-page + "https://github.com/mtennekes/tmaptools") + (synopsis "Thematic Map Tools") + (description + "Set of tools for reading and processing spatial data. The aim is to +supply the workflow to create thematic maps. This package also facilitates +@code{tmap}, the package for visualizing thematic maps.") + (license license:gpl3))) + +(define-public r-rworldmap + (package + (name "r-rworldmap") + (version "1.3-6") + (source + (origin + (method url-fetch) + (uri (cran-uri "rworldmap" version)) + (sha256 + (base32 + "1q1h0n9qr0m5pdx10swrh9ddsvdj8kv5nqngrf3lnx9rg9iwivjk")))) + (properties `((upstream-name . "rworldmap"))) + (build-system r-build-system) + (propagated-inputs + `(("r-fields" ,r-fields) + ("r-maptools" ,r-maptools) + ("r-sp" ,r-sp))) + (home-page + "https://github.com/AndySouth/rworldmap/") + (synopsis "Mapping Global Data") + (description + "Enables mapping of country level and gridded user datasets.") + (license license:gpl2+))) + +(define-public r-rtweet + (package + (name "r-rtweet") + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "rtweet" version)) + (sha256 + (base32 + "05pbvxm2vmf6935b9s6663k3aifnkr3m52wh2jvnplmrwyrfpn9n")))) + (properties `((upstream-name . "rtweet"))) + (build-system r-build-system) + (propagated-inputs + `(("r-httpuv" ,r-httpuv) + ("r-httr" ,r-httr) + ("r-jsonlite" ,r-jsonlite) + ("r-magrittr" ,r-magrittr) + ("r-progress" ,r-progress) + ("r-rcpp" ,r-rcpp) + ("r-tibble" ,r-tibble))) + (native-inputs `(("r-knitr" ,r-knitr))) + (home-page + "https://docs.ropensci.org/rtweet/") + (synopsis "Collecting Twitter Data") + (description + "An implementation of calls designed to collect and organize Twitter data +via @url{https://developer.twitter.com/en/docs,Twitter's REST and stream +Application Program Interfaces (API)}.") + (license license:expat))) + +(define-public r-intervals + (package + (name "r-intervals") + (version "0.15.2") + (source + (origin + (method url-fetch) + (uri (cran-uri "intervals" version)) + (sha256 + (base32 + "0mvwfwc03ifb30a3dzbmkv9adwqb8ajxhcw24d8xip8px063plhb")))) + (properties `((upstream-name . "intervals"))) + (build-system r-build-system) + (home-page "https://github.com/edzer/intervals") + (synopsis + "Tools for Working with Points and Intervals") + (description + "Tools for working with and comparing sets of points and intervals.") + (license license:artistic2.0))) + +(define-public r-eyelinker + (package + (name "r-eyelinker") + (version "0.2.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "eyelinker" version)) + (sha256 + (base32 + "14rfcdxad9iazwd46q6bm8gg1ryh6s8kf7arj00hhb7xz3gvk9c2")))) + (properties `((upstream-name . "eyelinker"))) + (build-system r-build-system) + (propagated-inputs + `(("r-intervals" ,r-intervals) + ("r-readr" ,r-readr) + ("r-stringi" ,r-stringi) + ("r-stringr" ,r-stringr) + ("r-tibble" ,r-tibble))) + (native-inputs `(("r-knitr" ,r-knitr))) + (home-page + "https://github.com/a-hurst/eyelinker") + (synopsis + "Import ASC Files from EyeLink Eye Trackers") + (description + "Imports plain-text ASC data files from EyeLink eye trackers into +(relatively) tidy data frames for analysis and visualization.") + (license license:gpl3))) + +(define-public r-btm + (package + (name "r-btm") + (version "0.3.5") + (source + (origin + (method url-fetch) + (uri (cran-uri "BTM" version)) + (sha256 + (base32 + "1x6bncb7r97z8bdyxnn2frdi9kyawfy6c2041mv9f42zdrfzm6jb")))) + (properties `((upstream-name . "BTM"))) + (build-system r-build-system) + (propagated-inputs `(("r-rcpp" ,r-rcpp))) + (home-page "https://github.com/bnosac/BTM") + (synopsis "Biterm Topic Models for Short Text") + (description + "Biterm Topic Models find topics in collections of short texts. It is a +word co-occurrence based topic model that learns topics by modeling word-word +co-occurrences patterns which are called biterms. This in contrast to +traditional topic models like Latent Dirichlet Allocation and Probabilistic +Latent Semantic Analysis which are word-document co-occurrence topic models. A +biterm consists of two words co-occurring in the same short text window. This +context window can for example be a twitter message, a short answer on a +survey, a sentence of a text or a document identifier. The techniques are +explained in detail in the paper 'A Biterm Topic Model For Short Text' by +Xiaohui Yan, Jiafeng Guo, Yanyan Lan, Xueqi Cheng (2013) +@url{https://github.com/xiaohuiyan/xiaohuiyan.github.io/blob/master/paper/\ +BTM-WWW13.pdf}.") + (license license:asl2.0))) + +(define-public r-textplot + (package + (name "r-textplot") + (version "0.1.4") + (source + (origin + (method url-fetch) + (uri (cran-uri "textplot" version)) + (sha256 + (base32 + "1sgkndy2cxk8c76h8hwajn6f78w5jj2n8vsmaxh9kj931crzn8cy")))) + (properties `((upstream-name . "textplot"))) + (build-system r-build-system) + (propagated-inputs + `(("r-data-table" ,r-data-table) + ("r-lattice" ,r-lattice) + ("r-matrix" ,r-matrix))) + (native-inputs `(("r-knitr" ,r-knitr))) + (home-page "https://github.com/bnosac/textplot") + (synopsis "Text Plots") + (description + "Visualise complex relations in texts. This is done by providing +functionalities for displaying text co-occurrence networks, text correlation +networks, dependency relationships as well as text clustering. Feel free to +join the effort of providing interesting text visualisations.") + (license license:gpl2))) diff --git a/gnu/packages/crates-graphics.scm b/gnu/packages/crates-graphics.scm index c26cf56394..3485e53938 100644 --- a/gnu/packages/crates-graphics.scm +++ b/gnu/packages/crates-graphics.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2020 Valentin Ignatev <valentignatev@gmail.com> ;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com> -;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2020, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2020 John Soo <jsoo1@asu.edu> ;;; Copyright © 2020 Gabriel Arazas <foo.dogsquared@gmail.com> ;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org> @@ -907,8 +907,7 @@ EUI-64, also known as MAC-48 media access control addresses.") (base32 "18szbh4dixcr7pmymvbrpv21hv0wrpii5w03rv2534bb2ywwpq8s")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs + `(#:cargo-inputs (("rust-android-glue" ,rust-android-glue-0.2) ("rust-cgl" ,rust-cgl-0.3) ("rust-cocoa" ,rust-cocoa-0.23) @@ -924,10 +923,12 @@ EUI-64, also known as MAC-48 media access control addresses.") ("rust-objc" ,rust-objc-0.2) ("rust-osmesa-sys" ,rust-osmesa-sys-0.1) ("rust-parking-lot" ,rust-parking-lot-0.11) - ("rust-wayland-client" ,rust-wayland-client-0.28) ("rust-wayland-egl" ,rust-wayland-egl-0.28) ("rust-winapi" ,rust-winapi-0.3) ("rust-winit" ,rust-winit-0.24)))) + (inputs + `(("rust-wayland-client" ,rust-wayland-client-0.28) + ("rust-wayland-egl" ,rust-wayland-egl-0.28))) (home-page "https://github.com/tomaka/glutin") (synopsis "Cross-platform OpenGL context provider") (description "This package provides an OpenGL context provider.") @@ -2324,16 +2325,23 @@ applications.") (base32 "1mxnflzv9s3qpcp0z7kqvrzki5bknfar9n9yky06f8ivs00vxgdx")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs + `(#:cargo-inputs (("rust-bitflags" ,rust-bitflags-1) ("rust-downcast-rs" ,rust-downcast-rs-1) ("rust-libc" ,rust-libc-0.2) ("rust-nix" ,rust-nix-0.18) - ("rust-scoped-tls" ,rust-scoped-tls-1) - ("rust-wayland-commons" ,rust-wayland-commons-0.28) - ("rust-wayland-scanner" ,rust-wayland-scanner-0.28) - ("rust-wayland-sys" ,rust-wayland-sys-0.28)))) + ("rust-scoped-tls" ,rust-scoped-tls-1)) + #:cargo-development-inputs + (("rust-tempfile" ,rust-tempfile-3)))) + (inputs + `(("rust-bitflags" ,rust-bitflags-1) + ("rust-downcast-rs" ,rust-downcast-rs-1) + ("rust-libc" ,rust-libc-0.2) + ("rust-nix" ,rust-nix-0.18) + ("rust-scoped-tls" ,rust-scoped-tls-1) + ("rust-wayland-commons" ,rust-wayland-commons-0.28) + ("rust-wayland-scanner" ,rust-wayland-scanner-0.28) + ("rust-wayland-sys" ,rust-wayland-sys-0.28))) (home-page "https://github.com/smithay/wayland-rs") (synopsis "Rust bindings to the standard C implementation of the wayland protocol") @@ -2357,7 +2365,8 @@ the wayland protocol, client side.") (base32 "1nmw2kz70llc5mxwzg6bglnqy0qnyr9224zjmq9czazgw3mq045g")))) (arguments - `(#:cargo-inputs + `(#:skip-build? #t + #:cargo-inputs (("rust-bitflags" ,rust-bitflags-1) ("rust-calloop" ,rust-calloop-0.4) ("rust-downcast-rs" ,rust-downcast-rs-1) @@ -2369,7 +2378,8 @@ the wayland protocol, client side.") ("rust-wayland-scanner" ,rust-wayland-scanner-0.23)) #:cargo-development-inputs (("rust-byteorder" ,rust-byteorder-1) - ("rust-tempfile" ,rust-tempfile-3)))))) + ("rust-tempfile" ,rust-tempfile-3)))) + (inputs `()))) (define-public rust-wayland-client-0.21 (package @@ -2413,12 +2423,15 @@ the wayland protocol, client side.") (base32 "0mid1sgy3bmiywnrhsr31b8w6zvk1ll2ci2as15ddv8pczvm0128")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs + `(#:cargo-inputs (("rust-nix" ,rust-nix-0.18) ("rust-once-cell" ,rust-once-cell-1) - ("rust-smallvec" ,rust-smallvec-1) - ("rust-wayland-sys" ,rust-wayland-sys-0.28)))) + ("rust-smallvec" ,rust-smallvec-1)))) + (inputs + `(("rust-nix" ,rust-nix-0.18) + ("rust-once-cell" ,rust-once-cell-1) + ("rust-smallvec" ,rust-smallvec-1) + ("rust-wayland-sys" ,rust-wayland-sys-0.28))) (home-page "https://github.com/smithay/wayland-rs") (synopsis "Types and structures used by wayland-client and wayland-server") (description @@ -2441,9 +2454,11 @@ and wayland-server.") (base32 "1nyvcs6xxxzqgh0wvc7z0fgi89bf3h9p4qrbf77bnfbwlb8v0rmv")))) (arguments - `(#:cargo-inputs + `(#:skip-build? #t + #:cargo-inputs (("rust-nix" ,rust-nix-0.14) - ("rust-wayland-sys" ,rust-wayland-sys-0.23)))))) + ("rust-wayland-sys" ,rust-wayland-sys-0.23)))) + (inputs `()))) (define-public rust-wayland-commons-0.21 (package @@ -2477,11 +2492,13 @@ and wayland-server.") (base32 "0pvf96a9hg7b40vyvamcg491sa0006fr9bzf1xkaf8q22qn15syn")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs + `(#:cargo-inputs (("rust-nix" ,rust-nix-0.18) - ("rust-wayland-client" ,rust-wayland-client-0.28) ("rust-xcursor" ,rust-xcursor-0.3)))) + (inputs + `(("rust-nix" ,rust-nix-0.18) + ("rust-wayland-client" ,rust-wayland-client-0.28) + ("rust-xcursor" ,rust-xcursor-0.3))) (home-page "https://github.com/smithay/wayland-rs") (synopsis "Bindings to libwayland-cursor") (description @@ -2502,11 +2519,12 @@ properly display animated cursors.") (sha256 (base32 "1xd7iap0x4sidmy9dv02cdnxjhnbk9li7r7f39x9cg0i8xs50ly6")))) (build-system cargo-build-system) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-wayland-client" ,rust-wayland-client-0.28) - ("rust-wayland-sys" ,rust-wayland-sys-0.28)))) + (inputs + `(("rust-wayland-client" ,rust-wayland-client-0.28) + ("rust-wayland-sys" ,rust-wayland-sys-0.28))) + ;; For the PKG_CONFIG_PATH environment variable. + (native-inputs + `(("pkg-config" ,pkg-config))) (home-page "https://github.com/smithay/wayland-rs") (synopsis "Bindings to libwayland-egl") (description @@ -2529,13 +2547,14 @@ initializing an OpenGL or Vulkan context.") (base32 "0c0sw13qssrvf3jgygwqpiimpaagz3haxn9jridd4k85sfs856ii")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-bitflags" ,rust-bitflags-1) - ("rust-wayland-client" ,rust-wayland-client-0.28) - ("rust-wayland-commons" ,rust-wayland-commons-0.28) - ("rust-wayland-scanner" ,rust-wayland-scanner-0.28) - ("rust-wayland-server" ,rust-wayland-server-0.28)))) + `(#:cargo-inputs + (("rust-bitflags" ,rust-bitflags-1)))) + (inputs + `(("rust-bitflags" ,rust-bitflags-1) + ("rust-wayland-client" ,rust-wayland-client-0.28) + ("rust-wayland-commons" ,rust-wayland-commons-0.28) + ("rust-wayland-scanner" ,rust-wayland-scanner-0.28) + ("rust-wayland-server" ,rust-wayland-server-0.28))) (home-page "https://github.com/smithay/wayland-rs") (synopsis "Generated API for the officials Wayland protocol extensions") (description @@ -2558,12 +2577,14 @@ extensions.") (base32 "1ygwbzqlnks5xzafka3c8ag6k92g2h6ygj2xsmvjfx2n6rj8dhkc")))) (arguments - `(#:cargo-inputs + `(#:skip-build? #t + #:cargo-inputs (("rust-bitflags" ,rust-bitflags-1) ("rust-wayland-client" ,rust-wayland-client-0.23) ("rust-wayland-commons" ,rust-wayland-commons-0.23) ("rust-wayland-server" ,rust-wayland-server-0.23) - ("rust-wayland-scanner" ,rust-wayland-scanner-0.23)))))) + ("rust-wayland-scanner" ,rust-wayland-scanner-0.23)))) + (inputs `()))) (define-public rust-wayland-protocols-0.21 (package @@ -2600,12 +2621,10 @@ extensions.") (sha256 (base32 "0g8ky63qk27in7zajycj3fyydsxlj19hanfcvr8d7z5kcxbvl43h")))) (build-system cargo-build-system) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-quote" ,rust-quote-1) - ("rust-xml-rs" ,rust-xml-rs-0.8)))) + (inputs + `(("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quote" ,rust-quote-1) + ("rust-xml-rs" ,rust-xml-rs-0.8))) (home-page "https://github.com/smithay/wayland-rs") (synopsis "Generate Rust APIs from XML Wayland protocol files") (description @@ -2630,7 +2649,8 @@ wayland-client crate for usable bindings.") (base32 "0g8wcphykjrcpslznyi3qccx1pckw97rckq5b295nfbg6r3j5c4k")))) (arguments - `(#:cargo-inputs + `(#:skip-build? #t + #:cargo-inputs (("rust-proc-macro2" ,rust-proc-macro2-0.4) ("rust-quote" ,rust-quote-0.6) ("rust-xml-rs" ,rust-xml-rs-0.8)))))) @@ -2663,18 +2683,25 @@ wayland-client crate for usable bindings.") (base32 "09jfdjfqhjfcpiz4csgh60ymfkmz1cl3jmxyzq9hzcp0kyyxix93")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs + `(#:cargo-inputs (("rust-bitflags" ,rust-bitflags-1) ("rust-downcast-rs" ,rust-downcast-rs-1) ("rust-lazy-static" ,rust-lazy-static-1) ("rust-libc" ,rust-libc-0.2) ("rust-nix" ,rust-nix-0.18) ("rust-parking-lot" ,rust-parking-lot-0.11) - ("rust-scoped-tls" ,rust-scoped-tls-1) - ("rust-wayland-commons" ,rust-wayland-commons-0.28) - ("rust-wayland-scanner" ,rust-wayland-scanner-0.28) - ("rust-wayland-sys" ,rust-wayland-sys-0.28)))) + ("rust-scoped-tls" ,rust-scoped-tls-1)))) + (inputs + `(("rust-bitflags" ,rust-bitflags-1) + ("rust-downcast-rs" ,rust-downcast-rs-1) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-libc" ,rust-libc-0.2) + ("rust-nix" ,rust-nix-0.18) + ("rust-parking-lot" ,rust-parking-lot-0.11) + ("rust-scoped-tls" ,rust-scoped-tls-1) + ("rust-wayland-commons" ,rust-wayland-commons-0.28) + ("rust-wayland-scanner" ,rust-wayland-scanner-0.28) + ("rust-wayland-sys" ,rust-wayland-sys-0.28))) (home-page "https://github.com/smithay/wayland-rs") (synopsis "Bindings to the standard C implementation of the wayland protocol") @@ -2698,7 +2725,8 @@ the wayland protocol, server side.") (base32 "1ccsalq6gnf07klnbjx2dxcbibhw03rqsgi578p913s3zsjlcg8a")))) (arguments - `(#:cargo-inputs + `(#:skip-build? #t + #:cargo-inputs (("rust-bitflags" ,rust-bitflags-1) ("rust-calloop" ,rust-calloop-0.4) ("rust-downcast-rs" ,rust-downcast-rs-1) @@ -2707,7 +2735,8 @@ the wayland protocol, server side.") ("rust-nix" ,rust-nix-0.14) ("rust-wayland-commons" ,rust-wayland-commons-0.23) ("rust-wayland-sys" ,rust-wayland-sys-0.23) - ("rust-wayland-scanner" ,rust-wayland-scanner-0.23)))))) + ("rust-wayland-scanner" ,rust-wayland-scanner-0.23)))) + (inputs `()))) (define-public rust-wayland-server-0.21 (package @@ -2748,12 +2777,27 @@ the wayland protocol, server side.") (base32 "16f03jsy7q6p2wpaazc4w4kycyyk0fz7lacpdbcizl9m1i7874v7")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs + `(#:cargo-inputs (("rust-dlib" ,rust-dlib-0.4) ("rust-lazy-static" ,rust-lazy-static-1) ("rust-libc" ,rust-libc-0.2) - ("rust-pkg-config" ,rust-pkg-config-0.3)))) + ("rust-pkg-config" ,rust-pkg-config-0.3)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-libraries + (lambda* (#:key inputs #:allow-other-keys) + (let ((libwayland (assoc-ref inputs "wayland"))) + (substitute* (find-files "src" "\\.rs$") + (("libwayland.*\\.so" shared-lib) + (string-append libwayland "/lib/" shared-lib))) + #t)))))) + (inputs + `(("rust-dlib" ,rust-dlib-0.4) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-libc" ,rust-libc-0.2) + ("rust-pkg-config" ,rust-pkg-config-0.3))) + (propagated-inputs + `(("wayland" ,wayland))) (home-page "https://github.com/smithay/wayland-rs") (synopsis "FFI bindings to the various @file{libwayland-*.so} libraries") (description @@ -2778,10 +2822,13 @@ crate @code{rust-wayland-client} for usable bindings.") (base32 "1x2qafvj8hd2x5qfaan2dfpw9amg0f5g9sqrkdy7qvbddsl8jknr")))) (arguments - `(#:cargo-inputs + `(#:skip-build? #t + #:cargo-inputs (("rust-dlib" ,rust-dlib-0.4) ("rust-lazy-static" ,rust-lazy-static-1) - ("rust-libc" ,rust-libc-0.2)))))) + ("rust-libc" ,rust-libc-0.2)))) + (inputs `()) + (propagated-inputs `()))) (define-public rust-wayland-sys-0.21 (package @@ -2836,10 +2883,11 @@ crate @code{rust-wayland-client} for usable bindings.") ("rust-smithay-client-toolkit" ,rust-smithay-client-toolkit-0.12) ("rust-stdweb" ,rust-stdweb-0.4) ("rust-wasm-bindgen" ,rust-wasm-bindgen-0.2) - ("rust-wayland-client" ,rust-wayland-client-0.28) ("rust-web-sys" ,rust-web-sys-0.3) ("rust-winapi" ,rust-winapi-0.3) ("rust-x11-dl" ,rust-x11-dl-2)))) + (inputs + `(("rust-wayland-client" ,rust-wayland-client-0.28))) (home-page "https://github.com/rust-windowing/winit") (synopsis "Window creation library") (description diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 92df4a56db..ae169b8988 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -970,8 +970,40 @@ threads. This makes it robust in face of panics (it won't make your program deadlock, like the standard Barrier).") (license (list license:asl2.0 license:expat)))) +(define-public rust-addr2line-0.14 + (package + (name "rust-addr2line") + (version "0.14.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "addr2line" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1xs5bsi40zpyxbbylyaysya5h36ykcbg91i82415sxw5wk7q4px5")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-compiler-builtins" ,rust-compiler-builtins-0.1) + ("rust-cpp-demangle" ,rust-cpp-demangle-0.3) + ("rust-fallible-iterator" ,rust-fallible-iterator-0.2) + ("rust-gimli" ,rust-gimli-0.23) + ("rust-object" ,rust-object-0.22) + ("rust-rustc-demangle" ,rust-rustc-demangle-0.1) + ("rust-rustc-std-workspace-alloc" ,rust-rustc-std-workspace-alloc-1) + ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1) + ("rust-smallvec" ,rust-smallvec-1)))) + (home-page "https://github.com/gimli-rs/addr2line") + (synopsis "Symbolication library written in Rust, using gimli") + (description + "This package provides a cross-platform symbolication library written in +Rust, using gimli.") + (license (list license:asl2.0 license:expat)))) + (define-public rust-addr2line-0.11 (package + (inherit rust-addr2line-0.14) (name "rust-addr2line") (version "0.11.0") (source @@ -983,7 +1015,6 @@ deadlock, like the standard Barrier).") (sha256 (base32 "0sk5g8cb2yynlcm0wcqff9l9c9ml69rqgfrrbii0ybgdc236jkhw")))) - (build-system cargo-build-system) (arguments `(#:tests? #f ; Not all test files included. #:cargo-inputs @@ -999,13 +1030,7 @@ deadlock, like the standard Barrier).") ("rust-clap" ,rust-clap-2) ("rust-findshlibs" ,rust-findshlibs-0.5) ("rust-memmap" ,rust-memmap-0.7) - ("rust-rustc-test" ,rust-rustc-test-0.3)))) - (home-page "https://github.com/gimli-rs/addr2line") - (synopsis "Symbolication library written in Rust, using gimli") - (description - "This package provides a cross-platform symbolication library written in -Rust, using gimli.") - (license (list license:asl2.0 license:expat)))) + ("rust-rustc-test" ,rust-rustc-test-0.3)))))) (define-public rust-addr2line-0.9 (package @@ -2499,7 +2524,7 @@ Rust.") (define-public rust-async-compression-0.3 (package (name "rust-async-compression") - (version "0.3.5") + (version "0.3.7") (source (origin (method url-fetch) @@ -2507,24 +2532,30 @@ Rust.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "164dfy1wrl9qbj95rvcpkfbrkpz3c1s7mk288sv9cwp7rj5pc8ch")))) + "0dwm5zgi560m1xy30k3a4sg96mlfkjdk8jl6a1dk4d72ah8iyb5p")))) (build-system cargo-build-system) (arguments - `(#:cargo-inputs + ;; FIXME: Tests fail with "error[E0432]: unresolved import `syn::export`" + ;; when compiling ntest_test_cases v0.3.4. + `(#:tests? #false + #:cargo-inputs (("rust-brotli" ,rust-brotli-3) ("rust-bytes" ,rust-bytes-0.5) - ("rust-bzip2" ,rust-bzip2-0.3) + ("rust-bzip2" ,rust-bzip2-0.4) ("rust-flate2" ,rust-flate2-1) ("rust-futures-core" ,rust-futures-core-0.3) ("rust-futures-io" ,rust-futures-io-0.3) ("rust-memchr" ,rust-memchr-2) - ("rust-pin-project-lite" ,rust-pin-project-lite-0.1) + ("rust-pin-project-lite" ,rust-pin-project-lite-0.2) ("rust-tokio" ,rust-tokio-0.2) + ("rust-tokio" ,rust-tokio-0.3) + ("rust-tokio" ,rust-tokio-1) ("rust-xz2" ,rust-xz2-0.1) - ("rust-zstd" ,rust-zstd-0.5) - ("rust-zstd-safe" ,rust-zstd-safe-2)) + ("rust-zstd" ,rust-zstd-0.6) + ("rust-zstd-safe" ,rust-zstd-safe-3)) #:cargo-development-inputs - (("rust-bytes" ,rust-bytes-0.5) + (("rust-bytes" ,rust-bytes-1) + ("rust-bytes" ,rust-bytes-0.5) ("rust-futures" ,rust-futures-0.3) ("rust-futures-test" ,rust-futures-test-0.3) ("rust-ntest" ,rust-ntest-0.3) @@ -2532,7 +2563,11 @@ Rust.") ("rust-proptest-derive" ,rust-proptest-derive-0.1) ("rust-rand" ,rust-rand-0.7) ("rust-timebomb" ,rust-timebomb-0.1) - ("rust-tokio" ,rust-tokio-0.2)))) + ("rust-tokio" ,rust-tokio-1) + ("rust-tokio" ,rust-tokio-0.2) + ("rust-tokio" ,rust-tokio-0.3) + ("rust-tokio-util" ,rust-tokio-util-0.4) + ("rust-tokio-util" ,rust-tokio-util-0.6)))) (home-page "https://github.com/Nemo157/async-compression") (synopsis "Adaptors between compression crates and Rust's modern asynchronous IO types") (description "This package provides adaptors between compression crates @@ -3217,6 +3252,32 @@ crate.") (("rust-crossbeam" ,rust-crossbeam-0.7) ("rust-futures" ,rust-futures-0.3)))))) +(define-public rust-async-tls-0.10 + (package + (name "rust-async-tls") + (version "0.10.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "async-tls" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "126by0la2wvfadazfnmw7b6ch07dk9ggny94a3vvzgk2qdpqn3fx")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-futures-core" ,rust-futures-core-0.3) + ("rust-futures-io" ,rust-futures-io-0.3) + ("rust-rustls" ,rust-rustls-0.19) + ("rust-webpki" ,rust-webpki-0.21) + ("rust-webpki-roots" ,rust-webpki-roots-0.21)))) + (home-page "https://github.com/async-std/async-tls") + (synopsis "Asynchronous TLS/SSL streams using Rustls") + (description + "This package provides asynchronous TLS/SSL streams using Rustls.") + (license (list license:expat license:asl2.0)))) + (define-public rust-async-trait-0.1 (package (name "rust-async-trait") @@ -3569,7 +3630,7 @@ built on the Actix ecosystem.") (define-public rust-backtrace-0.3 (package (name "rust-backtrace") - (version "0.3.46") + (version "0.3.56") (source (origin (method url-fetch) @@ -3578,28 +3639,24 @@ built on the Actix ecosystem.") (string-append name "-" version ".tar.gz")) (sha256 (base32 - "17hh1vrhfd01qpjilrdpy7q0lf2j2qv36achpg37q92rff4r5rmi")))) + "1g716jmrik0fx29va3js4gw8hwk5jlsmvqaa9ryp1c9qyh07c4cx")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs - (("rust-addr2line" ,rust-addr2line-0.11) + (("rust-addr2line" ,rust-addr2line-0.14) ("rust-backtrace-sys" ,rust-backtrace-sys-0.1) - ("rust-cfg-if" ,rust-cfg-if-0.1) - ("rust-compiler-builtins" ,rust-compiler-builtins-0.1) - ("rust-cpp-demangle" ,rust-cpp-demangle-0.2) - ("rust-findshlibs" ,rust-findshlibs-0.5) - ("rust-goblin" ,rust-goblin-0.2) + ("rust-cfg-if" ,rust-cfg-if-1) + ("rust-cpp-demangle" ,rust-cpp-demangle-0.3) ("rust-libc" ,rust-libc-0.2) - ("rust-memmap" ,rust-memmap-0.7) + ("rust-miniz-oxide" ,rust-miniz-oxide-0.4) + ("rust-object" ,rust-object-0.23) ("rust-rustc-demangle" ,rust-rustc-demangle-0.1) ("rust-rustc-serialize" ,rust-rustc-serialize-0.3) - ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1) ("rust-serde" ,rust-serde-1) ("rust-winapi" ,rust-winapi-0.3)))) (home-page "https://github.com/rust-lang/backtrace-rs") - (synopsis - "Acquire a stack trace (backtrace) at runtime in a Rust program") + (synopsis "Acquire a stack trace (backtrace) at runtime in a Rust program") (description "This package provides a library to acquire a stack trace (backtrace) at runtime in a Rust program.") @@ -3817,17 +3874,17 @@ c6e7d37. However, this package works only up to 128 bytes.") (description "This library provides for encoding and decoding any base.") (license license:expat))) -(define-public rust-beef-0.4 +(define-public rust-beef-0.5 (package (name "rust-beef") - (version "0.4.4") + (version "0.5.0") (source (origin (method url-fetch) (uri (crate-uri "beef" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "0hva1rmbx2a54q4ncs8i5lbr26669wyvnya1sh3x22r0cxm64jj7")))) + (base32 "02blba0j192l0374kqwn8rjsc8aifj43xi26v142ijpjim1f4dk7")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t @@ -3913,6 +3970,29 @@ tracebacks.") (description "This package provides arbitrary precision decimal numbers.") (license (list license:expat license:asl2.0)))) +(define-public rust-bigdecimal-0.1 + (package + (inherit rust-bigdecimal-0.2) + (name "rust-bigdecimal") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "bigdecimal" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0i32g88sin9dzr4jn41wgg3pyx2xxm0m1a9s5vh9lpyj5lg1jx0k")))) + (arguments + `(#:cargo-inputs + (("rust-num-bigint" ,rust-num-bigint-0.2) + ("rust-num-integer" ,rust-num-integer-0.1) + ("rust-num-traits" ,rust-num-traits-0.2) + ("rust-serde" ,rust-serde-1)) + #:cargo-development-inputs + (("rust-serde-json" ,rust-serde-json-1)))))) + (define-public rust-bincode-1 (package (name "rust-bincode") @@ -3965,8 +4045,45 @@ that uses Serde for transforming structs into bytes and vice versa!") (("rust-serde-bytes" ,rust-serde-bytes-0.10) ("rust-serde-derive" ,rust-serde-derive-1)))))) +(define-public rust-bindgen-0.57 + (package + (name "rust-bindgen") + (version "0.57.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "bindgen" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0g96ypnck6n60p3cz9k3y3jnxi4z7jfv2pha5bxsm8269806aj7x")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-bitflags" ,rust-bitflags-1) + ("rust-cexpr" ,rust-cexpr-0.4) + ("rust-clang-sys" ,rust-clang-sys-1) + ("rust-clap" ,rust-clap-2) + ("rust-env-logger" ,rust-env-logger-0.8) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-lazycell" ,rust-lazycell-1) + ("rust-log" ,rust-log-0.4) + ("rust-peeking-take-while" ,rust-peeking-take-while-0.1) + ("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quote" ,rust-quote-1) + ("rust-regex" ,rust-regex-1) + ("rust-rustc-hash" ,rust-rustc-hash-1) + ("rust-shlex" ,rust-shlex-0.1) + ("rust-which" ,rust-which-3)))) + (home-page "https://rust-lang.github.io/rust-bindgen/") + (synopsis "Generate Rust FFI bindings to C and C++ libraries.") + (description "This package can be used to automatically generate Rust FFI +bindings to C and C++ libraries.") + (license license:bsd-3))) + (define-public rust-bindgen-0.55 (package + (inherit rust-bindgen-0.57) (name "rust-bindgen") (version "0.55.1") (source @@ -3977,7 +4094,6 @@ that uses Serde for transforming structs into bytes and vice versa!") (sha256 (base32 "0hxlvy9q9984rr3rqaxwmgxjrd9wh11mcc161hv3shz6b7jkrcbm")))) - (build-system cargo-build-system) (inputs `(("clang" ,clang))) (arguments @@ -4007,12 +4123,7 @@ that uses Serde for transforming structs into bytes and vice versa!") (add-after 'unpack 'enable-unstable-features (lambda _ (setenv "RUSTC_BOOTSTRAP" "1") - #t))))) - (home-page "https://rust-lang.github.io/rust-bindgen/") - (synopsis "Generate Rust FFI bindings to C and C++ libraries.") - (description "This package can be used to automatically generate Rust FFI -bindings to C and C++ libraries.") - (license license:bsd-3))) + #t))))))) (define-public rust-bindgen-0.54 (package @@ -6178,18 +6289,37 @@ spreadsheet file.") (base32 "1bx2pj0ysmyd1ryd5s43m3c7n5k067x1aciqiiyg4kjswlcs6xjf")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-futures" ,rust-futures-0.1) - ("rust-quickcheck" ,rust-quickcheck-0.2)) + `(#:cargo-inputs + (("rust-quickcheck" ,rust-quickcheck-0.9)) #:cargo-development-inputs - (("rust-quickcheck" ,rust-quickcheck-0.2)))) + (("rust-quickcheck" ,rust-quickcheck-0.9)))) (home-page "https://github.com/capnproto/capnproto-rust") (synopsis "Runtime library for Cap'n Proto data encoding") (description "This package provides a runtime library for Cap'n Proto data encoding.") (license license:expat))) +(define-public rust-capnp-0.10 + (package + (inherit rust-capnp-0.13) + (name "rust-capnp") + (version "0.10.3") + (source + (origin + (method url-fetch) + (uri (crate-uri "capnp" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "17hsnmlcrzksjjpwpz51y8g36xzq8042i2cwns0lsg7rixfw2rxq")))) + (arguments + `(#:cargo-inputs + (("rust-futures" ,rust-futures-0.1) + ("rust-quickcheck" ,rust-quickcheck-0.2)) + #:cargo-development-inputs + (("rust-quickcheck" ,rust-quickcheck-0.2)))))) + (define-public rust-capnp-futures-0.13 (package (name "rust-capnp-futures") @@ -6203,19 +6333,40 @@ encoding.") (base32 "18q93ncbfcnjq7zhvy9idnifypmi2qcp775q7454y3r4lvvdcyyw")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t - #:cargo-inputs + `(#:cargo-inputs (("rust-capnp" ,rust-capnp-0.13) - ("rust-futures" ,rust-futures-0.1)) + ("rust-futures" ,rust-futures-0.3)) #:cargo-development-inputs (("rust-capnp" ,rust-capnp-0.13) - ("rust-quickcheck" ,rust-quickcheck-0.2)))) + ("rust-quickcheck" ,rust-quickcheck-0.9)))) (home-page "https://github.com/capnproto/capnproto-rust") (synopsis "Async serialization for Cap'n Proto messages") (description "This package provides async serialization for Cap'n Proto messages.") (license license:expat))) +(define-public rust-capnp-futures-0.10 + (package + (inherit rust-capnp-futures-0.13) + (name "rust-capnp-futures") + (version "0.10.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "capnp-futures" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0qdiqkp9mh4acpa0dqhpzv2gwf949rj3m85mgwl1rih6gvgbh1zs")))) + (arguments + `(#:cargo-inputs + (("rust-capnp" ,rust-capnp-0.10) + ("rust-futures" ,rust-futures-0.1)) + #:cargo-development-inputs + (("rust-capnp" ,rust-capnp-0.10) + ("rust-quickcheck" ,rust-quickcheck-0.2)))))) + (define-public rust-capnp-rpc-0.13 (package (name "rust-capnp-rpc") @@ -6231,11 +6382,10 @@ messages.") (native-inputs `(("capnproto" ,capnproto))) (arguments - `(#:skip-build? #t - #:cargo-inputs + `(#:cargo-inputs (("rust-capnp" ,rust-capnp-0.13) ("rust-capnp-futures" ,rust-capnp-futures-0.13) - ("rust-futures" ,rust-futures-0.1)) + ("rust-futures" ,rust-futures-0.3)) #:cargo-development-inputs (("rust-capnpc" ,rust-capnpc-0.13)))) (home-page "https://github.com/capnproto/capnproto-rust") @@ -6244,6 +6394,27 @@ messages.") remote procedure call protocol") (license license:expat))) +(define-public rust-capnp-rpc-0.10 + (package + (inherit rust-capnp-rpc-0.13) + (name "rust-capnp-rpc") + (version "0.10.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "capnp-rpc" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1j6xg7yays1hlm1045wviyn1642yvvi2p4kba26yk07a0kafr3jn")))) + (arguments + `(#:cargo-inputs + (("rust-capnp" ,rust-capnp-0.10) + ("rust-capnp-futures" ,rust-capnp-futures-0.10) + ("rust-capnpc" ,rust-capnpc-0.10) + ("rust-futures" ,rust-futures-0.1)))))) + (define-public rust-capnpc-0.13 (package (name "rust-capnpc") @@ -6264,6 +6435,24 @@ remote procedure call protocol") (description "Cap'n Proto code generation") (license license:expat))) +(define-public rust-capnpc-0.10 + (package + (inherit rust-capnpc-0.13) + (name "rust-capnpc") + (version "0.10.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "capnpc" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1zxbmdkr0xfzkfq9p8zn7pp9jjq275qhr8fh9a0cc0ab37yfvbyj")))) + (arguments + `(#:cargo-inputs + (("rust-capnp" ,rust-capnp-0.10)))))) + (define-public rust-caps-0.3 (package (name "rust-caps") @@ -8522,8 +8711,33 @@ intrinsics.") ("rust-foreign-types" ,rust-foreign-types-0.3) ("rust-libc" ,rust-libc-0.2)))))) +(define-public rust-cpp-demangle-0.3 + (package + (name "rust-cpp-demangle") + (version "0.3.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "cpp_demangle" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "142knq32bpa2hbp4z0bldjd1x869664l0ff2gdrqx7pryv59x4a4")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-afl" ,rust-afl-0.8) + ("rust-cfg-if" ,rust-cfg-if-1) + ("rust-glob" ,rust-glob-0.3)))) + (home-page "https://github.com/gimli-rs/cpp_demangle") + (synopsis "Demangle C++ symbols") + (description + "This package provides a crate for demangling C++ symbols.") + (license (list license:asl2.0 license:expat)))) + (define-public rust-cpp-demangle-0.2 (package + (inherit rust-cpp-demangle-0.3) (name "rust-cpp-demangle") (version "0.2.16") (source @@ -8535,7 +8749,6 @@ intrinsics.") (sha256 (base32 "0bamx2c78xzjhhvpg6p9bjarl6qm6j8npm6756kiqdh784w29j8k")))) - (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs @@ -8544,12 +8757,7 @@ intrinsics.") ("rust-glob" ,rust-glob-0.3)) #:cargo-development-inputs (("rust-clap" ,rust-clap-2) - ("rust-diff" ,rust-diff-0.1)))) - (home-page "https://github.com/gimli-rs/cpp_demangle") - (synopsis "Demangle C++ symbols") - (description - "This package provides a crate for demangling C++ symbols.") - (license (list license:expat license:asl2.0)))) + ("rust-diff" ,rust-diff-0.1)))))) (define-public rust-cpuid-bool-0.1 (package @@ -9595,8 +9803,40 @@ algorithms.") reallocations.") (license license:asl2.0))) +(define-public rust-cssparser-0.28 + (package + (name "rust-cssparser") + (version "0.28.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "cssparser" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1h924c5g2rwlmgk8hllciyky3ih3z9vf04xz3xsp3cv1jyd5kf0x")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-cssparser-macros" ,rust-cssparser-macros-0.6) + ("rust-dtoa-short" ,rust-dtoa-short-0.3) + ("rust-itoa" ,rust-itoa-0.4) + ("rust-matches" ,rust-matches-0.1) + ("rust-phf" ,rust-phf-0.8) + ("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quote" ,rust-quote-1) + ("rust-serde" ,rust-serde-1) + ("rust-smallvec" ,rust-smallvec-1) + ("rust-syn" ,rust-syn-1)))) + (home-page "https://github.com/servo/rust-cssparser") + (synopsis "Rust implementation of CSS Syntax Level 3") + (description + "This package contains a Rust implementation of CSS Syntax Level 3.") + (license license:mpl2.0))) + (define-public rust-cssparser-0.27 (package + (inherit rust-cssparser-0.28) (name "rust-cssparser") (version "0.27.2") (source @@ -9608,7 +9848,6 @@ reallocations.") (sha256 (base32 "02nbm690rmkaz1ca0383qq7mc1g066w3s85f17pdihnda79njjvm")))) - (build-system cargo-build-system) (arguments `(#:tests? #f ; Not all files included in the tarball. #:cargo-inputs @@ -9625,12 +9864,7 @@ reallocations.") #:cargo-development-inputs (("rust-difference" ,rust-difference-2) ("rust-encoding-rs" ,rust-encoding-rs-0.8) - ("rust-serde-json" ,rust-serde-json-1)))) - (home-page "https://github.com/servo/rust-cssparser") - (synopsis "Rust implementation of CSS Syntax Level 3") - (description - "This package contains a Rust implementation of CSS Syntax Level 3.") - (license license:mpl2.0))) + ("rust-serde-json" ,rust-serde-json-1)))))) (define-public rust-cssparser-0.25 (package @@ -9789,27 +10023,45 @@ reallocations.") "Bare bones CSV parsing with no_std support.") (license (list license:unlicense license:expat)))) -(define-public rust-ct-logs-0.7 +(define-public rust-ct-logs-0.8 (package (name "rust-ct-logs") - (version "0.7.0") + (version "0.8.0") (source (origin (method url-fetch) (uri (crate-uri "ct-logs" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "0bk7pbmkjm18cgccm4a76vyn3wkaf2z4bh0jy9fk3dl4188i73lc")))) + (base32 "1j5as2h789c2gazq3drl5i58xk8zzx6sxd1wdr19x3d6dwc1da61")))) (build-system cargo-build-system) (arguments - `(#:cargo-inputs (("rust-sct" ,rust-sct-0.6)))) + `(#:skip-build? #t + #:cargo-inputs + (("rust-sct" ,rust-sct-0.6)))) (home-page "https://github.com/ctz/ct-logs") (synopsis "Google's list of Certificate Transparency logs") - (description "This package contains Google's list of Certificate -Transparency logs for use with sct crate.") + (description + "This package contains Google's list of Certificate Transparency logs for +use with sct crate.") (license (list license:asl2.0 license:isc license:expat)))) +(define-public rust-ct-logs-0.7 + (package + (inherit rust-ct-logs-0.8) + (name "rust-ct-logs") + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "ct-logs" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0bk7pbmkjm18cgccm4a76vyn3wkaf2z4bh0jy9fk3dl4188i73lc")))) + (arguments + `(#:cargo-inputs (("rust-sct" ,rust-sct-0.6)))))) + (define-public rust-ct-logs-0.6 (package (inherit rust-ct-logs-0.7) @@ -10505,6 +10757,34 @@ GF(2^n). This trait is implemented for 64, 128 and 256 bit block sizes. Big-endian order is used. WARNING: Block must be aligned!") (license (list license:expat license:asl2.0)))) +(define-public rust-deadpool-0.7 + (package + (name "rust-deadpool") + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "deadpool" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0vb18xvhmyg6gvvq5vrcqmy4x26ryrmkqpsgwmb4bvkav1wn24ix")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-async-trait" ,rust-async-trait-0.1) + ("rust-config" ,rust-config-0.10) + ("rust-crossbeam-queue" ,rust-crossbeam-queue-0.3) + ("rust-num-cpus" ,rust-num-cpus-1) + ("rust-serde" ,rust-serde-1) + ("rust-tokio" ,rust-tokio-1)))) + (home-page "https://github.com/bikeshedder/deadpool") + (synopsis "Dead simple async pool") + (description + "Deadpool is a dead simple async pool for connections and objects of any +type.") + (license (list license:expat license:asl2.0)))) + (define-public rust-decimal-2 (package (name "rust-decimal") @@ -11124,28 +11404,31 @@ procedural macros.") (define-public rust-diesel-1 (package (name "rust-diesel") - (version "1.4.5") + (version "1.4.6") (source (origin (method url-fetch) (uri (crate-uri "diesel" version)) - (file-name (string-append name "-" version ".tar.gz")) + (file-name + (string-append name "-" version ".tar.gz")) (sha256 (base32 - "134dy6gdbv30q388gsp5777w2qh63hdqsim1j8s1aylpmggfjb9y")))) + "0hpmwrc0zx3zvpgwp9zrm6wj8d8i8q8990grlrnfzlivbi6zqyq4")))) (build-system cargo-build-system) + (native-inputs + `(("sqlite" ,sqlite))) (arguments `(#:cargo-inputs - (("rust-bigdecimal" ,rust-bigdecimal-0.2) + (("rust-bigdecimal" ,rust-bigdecimal-0.1) ("rust-bitflags" ,rust-bitflags-1) ("rust-byteorder" ,rust-byteorder-1) ("rust-chrono" ,rust-chrono-0.4) ("rust-diesel-derives" ,rust-diesel-derives-1) ("rust-ipnetwork" ,rust-ipnetwork-0.17) ("rust-libc" ,rust-libc-0.2) - ("rust-libsqlite3-sys" ,rust-libsqlite3-sys-0.15) + ("rust-libsqlite3-sys" ,rust-libsqlite3-sys-0.20) ("rust-mysqlclient-sys" ,rust-mysqlclient-sys-0.2) - ("rust-num-bigint" ,rust-num-bigint-0.3) + ("rust-num-bigint" ,rust-num-bigint-0.2) ("rust-num-integer" ,rust-num-integer-0.1) ("rust-num-traits" ,rust-num-traits-0.2) ("rust-pq-sys" ,rust-pq-sys-0.4) @@ -11154,14 +11437,21 @@ procedural macros.") ("rust-serde-json" ,rust-serde-json-1) ("rust-time" ,rust-time-0.1) ("rust-url" ,rust-url-1) - ("rust-uuid" ,rust-uuid-0.7)) + ("rust-uuid" ,rust-uuid-0.5) + ("rust-uuid" ,rust-uuid-0.8)) #:cargo-development-inputs (("rust-cfg-if" ,rust-cfg-if-0.1) ("rust-dotenv" ,rust-dotenv-0.10) ("rust-quickcheck" ,rust-quickcheck-0.4) - ("rust-tempdir" ,rust-tempdir-0.3)))) + ("rust-tempdir" ,rust-tempdir-0.3)) + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "cargo" "test" "--features" "sqlite" "--" + "--skip=expression::count::count")))))) (home-page "https://diesel.rs") - (synopsis "A safe, extensible ORM and Query Builder") + (synopsis "Safe, extensible ORM and Query Builder") (description "This package provides a safe, extensible ORM and Query Builder for PostgreSQL, SQLite, and MySQL.") (license (list license:expat license:asl2.0)))) @@ -11501,7 +11791,10 @@ standard locations of directories for config, cache and other data.") (arguments `(#:cargo-inputs (("rust-cfg-if" ,rust-cfg-if-0.1) - ("rust-dirs-sys" ,rust-dirs-sys-0.3)))))) + ("rust-dirs-sys" ,rust-dirs-sys-0.3)))) + (inputs + `(("rust-cfg-if" ,rust-cfg-if-0.1) + ("rust-dirs-sys" ,rust-dirs-sys-0.3))))) (define-public rust-dirs-1 (package @@ -11590,6 +11883,11 @@ other data.") ("rust-libc" ,rust-libc-0.2) ("rust-redox-users" ,rust-redox-users-0.3) ("rust-winapi" ,rust-winapi-0.3)))) + (inputs + `(("rust-cfg-if" ,rust-cfg-if-0.1) + ("rust-libc" ,rust-libc-0.2) + ("rust-redox-users" ,rust-redox-users-0.3) + ("rust-winapi" ,rust-winapi-0.3))) (home-page "https://github.com/soc/dirs-sys-rs") (synopsis "System-level helper functions for the dirs and directories crates") @@ -11699,7 +11997,7 @@ Google's diff-match-patch.") (define-public rust-dlib-0.4 (package (name "rust-dlib") - (version "0.4.1") + (version "0.4.2") (source (origin (method url-fetch) @@ -11708,11 +12006,13 @@ Google's diff-match-patch.") (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0smp2cdvy12xfw26qyqms273w5anszfadv73g75s88yqm54i5rbp")))) + "0xlsf3lrz9hd7q3ff6lp5mw4kn3nbryn746kd07i93r6wg8ia7xi")))) (build-system cargo-build-system) (arguments `(#:cargo-inputs - (("rust-libloading" ,rust-libloading-0.5)))) + (("rust-libloading" ,rust-libloading-0.6)))) + (inputs + `(("rust-libloading" ,rust-libloading-0.6))) (home-page "https://github.com/vberger/dlib") (synopsis "Helper macros for manually loading optional system libraries") (description @@ -11933,7 +12233,8 @@ Rust.") `(#:cargo-inputs (("rust-derive-error-chain" ,rust-derive-error-chain-0.10) ("rust-error-chain" ,rust-error-chain-0.10) - ("rust-regex" ,rust-regex-0.2)))))) + ("rust-regex" ,rust-regex-0.2) + ("rust-syn" ,rust-syn-0.11)))))) (define-public rust-draw-state-0.8 (package @@ -12771,14 +13072,14 @@ convert enum to u8 slice ref.") (define-public rust-env-logger-0.8 (package (name "rust-env-logger") - (version "0.8.2") + (version "0.8.3") (source (origin (method url-fetch) (uri (crate-uri "env-logger" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "07k6m6igz02g2b1v7nims7vd8azwxrav43xl14a6rjmxnikcnvpj")))) + (base32 "0gwx1pvbv99fj9wpicknyv4p2vj997xpva8ac5dg03m35q0jlf8p")))) (build-system cargo-build-system) (arguments `(#:cargo-inputs @@ -16049,8 +16350,37 @@ authenticated encryption cipher.") (("rust-polyval" ,rust-polyval-0.3) ("rust-zeroize" ,rust-zeroize-1)))))) +(define-public rust-gimli-0.23 + (package + (name "rust-gimli") + (version "0.23.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "gimli" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1km657nwcrb0pnv7v0ldhgl9y8s889y2j9jckmws8k2i8bhkyl7n")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-compiler-builtins" ,rust-compiler-builtins-0.1) + ("rust-fallible-iterator" ,rust-fallible-iterator-0.2) + ("rust-indexmap" ,rust-indexmap-1) + ("rust-rustc-std-workspace-alloc" ,rust-rustc-std-workspace-alloc-1) + ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1) + ("rust-stable-deref-trait" ,rust-stable-deref-trait-1)))) + (home-page "https://github.com/gimli-rs/gimli") + (synopsis "Library for reading and writing the DWARF debugging format") + (description + "This package provides a library for reading and writing the DWARF +debugging format.") + (license (list license:asl2.0 license:expat)))) + (define-public rust-gimli-0.20 (package + (inherit rust-gimli-0.23) (name "rust-gimli") (version "0.20.0") (source @@ -16062,7 +16392,6 @@ authenticated encryption cipher.") (sha256 (base32 "0cz6wg1niwfqf0mk28igsdnsm92cs57cai9jpzdmvw6hma863pc1")))) - (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs @@ -16073,12 +16402,7 @@ authenticated encryption cipher.") ,rust-stable-deref-trait-1) ("rust-smallvec" ,rust-smallvec-1) ("rust-indexmap" ,rust-indexmap-1) - ("rust-byteorder" ,rust-byteorder-1)))) - (home-page "https://github.com/gimli-rs/gimli") - (synopsis "Library for reading and writing the DWARF debugging format") - (description - "This package provides a library for reading and writing the DWARF debugging format.") - (license (list license:asl2.0 license:expat)))) + ("rust-byteorder" ,rust-byteorder-1)))))) (define-public rust-gimli-0.18 (package @@ -16743,8 +17067,40 @@ standard printing of search results, similar to grep itself.") of gzip files based on the gzip header implementation in the @code{flate2} crate.") (license (list license:expat license:asl2.0)))) +(define-public rust-h2-0.3 + (package + (name "rust-h2") + (version "0.3.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "h2" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0y5fxy3sy0s3j1h6p0c2xk5n2gs4jk1dvmk88lvgwm22ywfv0cnq")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-bytes" ,rust-bytes-1) + ("rust-fnv" ,rust-fnv-1) + ("rust-futures-core" ,rust-futures-core-0.3) + ("rust-futures-sink" ,rust-futures-sink-0.3) + ("rust-futures-util" ,rust-futures-util-0.3) + ("rust-http" ,rust-http-0.2) + ("rust-indexmap" ,rust-indexmap-1) + ("rust-slab" ,rust-slab-0.4) + ("rust-tokio" ,rust-tokio-1) + ("rust-tokio-util" ,rust-tokio-util-0.6) + ("rust-tracing" ,rust-tracing-0.1)))) + (home-page "https://github.com/hyperium/h2") + (synopsis "HTTP/2.0 client and server") + (description "This package provides an HTTP/2.0 client and server.") + (license license:expat))) + (define-public rust-h2-0.2 (package + (inherit rust-h2-0.3) (name "rust-h2") (version "0.2.6") (source @@ -16755,7 +17111,6 @@ of gzip files based on the gzip header implementation in the @code{flate2} crate (sha256 (base32 "0lvdrzn43iikl521dlrb7z96lsmy7l6nnm35ylf00q7dmq5rwgwr")))) - (build-system cargo-build-system) (arguments `(#:cargo-inputs (("rust-bytes" ,rust-bytes-0.5) @@ -16781,11 +17136,7 @@ of gzip files based on the gzip header implementation in the @code{flate2} crate ("rust-tokio-rustls" ,rust-tokio-rustls-0.12) ("rust-walkdir" ,rust-walkdir-1) ("rust-webpki" ,rust-webpki-0.21) - ("rust-webpki-roots" ,rust-webpki-roots-0.17)))) - (home-page "https://github.com/hyperium/h2") - (synopsis "HTTP/2.0 client and server") - (description "This package provides an HTTP/2.0 client and server.") - (license license:expat))) + ("rust-webpki-roots" ,rust-webpki-roots-0.17)))))) (define-public rust-h2-0.1 (package @@ -17892,28 +18243,47 @@ requests and responses.") ("rust-serde" ,rust-serde-1) ("rust-serde-json" ,rust-serde-json-1)))))) -(define-public rust-http-body-0.3 +(define-public rust-http-body-0.4 (package (name "rust-http-body") - (version "0.3.1") + (version "0.4.0") (source (origin (method url-fetch) (uri (crate-uri "http-body" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "06qi0ni45lb92w3ml260c0bxbq5zd4snjmz0a9k69xq6021zzm8k")))) + (base32 "150rkibhyrcmsyi0qzwx4hp02c4lga1kkdg8j7l5wkh7xqkvsq98")))) (build-system cargo-build-system) (arguments - `(#:cargo-inputs - (("rust-bytes" ,rust-bytes-0.5) + `(#:skip-build? #t + #:cargo-inputs + (("rust-bytes" ,rust-bytes-1) ("rust-http" ,rust-http-0.2)))) (home-page "https://github.com/hyperium/http-body") (synopsis "Asynchronous, streaming, HTTP request or response body") - (description "Trait representing an asynchronous, streaming, HTTP request -or response body.") + (description + "This crate provides a trait representing an asynchronous, streaming, +HTTP request or response body.") (license license:expat))) +(define-public rust-http-body-0.3 + (package + (inherit rust-http-body-0.4) + (name "rust-http-body") + (version "0.3.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "http-body" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "06qi0ni45lb92w3ml260c0bxbq5zd4snjmz0a9k69xq6021zzm8k")))) + (arguments + `(#:cargo-inputs + (("rust-bytes" ,rust-bytes-0.5) + ("rust-http" ,rust-http-0.2)))))) + (define-public rust-http-body-0.1 (package/inherit rust-http-body-0.3 (name "rust-http-body") @@ -17936,14 +18306,14 @@ or response body.") (define-public rust-http-client-6 (package (name "rust-http-client") - (version "6.2.0") + (version "6.3.4") (source (origin (method url-fetch) (uri (crate-uri "http-client" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "077jw39npmjgm27hij4r825qnxq7lvkmqqlm74llkvll3fvr4001")))) + (base32 "1i0mys38gsih9kkrdbfsmd8p9lnb2nd5wch76cpkjmqk8mm2mhcq")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t @@ -17951,7 +18321,11 @@ or response body.") (("rust-async-h1" ,rust-async-h1-2) ("rust-async-native-tls" ,rust-async-native-tls-0.3) ("rust-async-std" ,rust-async-std-1) + ("rust-async-tls" ,rust-async-tls-0.10) ("rust-async-trait" ,rust-async-trait-0.1) + ("rust-cfg-if" ,rust-cfg-if-1) + ("rust-dashmap" ,rust-dashmap-4) + ("rust-deadpool" ,rust-deadpool-0.7) ("rust-futures" ,rust-futures-0.3) ("rust-futures-util" ,rust-futures-util-0.3) ("rust-http-types" ,rust-http-types-2) @@ -18054,6 +18428,25 @@ or response body.") "This package provides a tiny, safe, speedy, zero-copy HTTP/1.x parser.") (license (list license:asl2.0 license:expat)))) +(define-public rust-httpdate-0.3 + (package + (name "rust-httpdate") + (version "0.3.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "httpdate" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0izbd3sf0625wm4rrfv85xa4xa8j4n1ldxhwlkgff4cm6rh4sjs9")))) + (build-system cargo-build-system) + (arguments `(#:skip-build? #t)) + (home-page "https://github.com/pyfisch/httpdate") + (synopsis "HTTP date parsing and formatting") + (description + "This crates parses and formats HTTP datetime strings.") + (license (list license:expat license:asl2.0)))) + (define-public rust-humansize-1 (package (name "rust-humansize") @@ -18123,8 +18516,46 @@ SystemTime}}.") ("rust-rand" ,rust-rand-0.4) ("rust-time" ,rust-time-0.1)))))) +(define-public rust-hyper-0.14 + (package + (name "rust-hyper") + (version "0.14.4") + (source + (origin + (method url-fetch) + (uri (crate-uri "hyper" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1ivaqbcvsws6svwykiq7fgma7wds72r83qianzh5b41ln714dsg8")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-bytes" ,rust-bytes-1) + ("rust-futures-channel" ,rust-futures-channel-0.3) + ("rust-futures-core" ,rust-futures-core-0.3) + ("rust-futures-util" ,rust-futures-util-0.3) + ("rust-h2" ,rust-h2-0.3) + ("rust-http" ,rust-http-0.2) + ("rust-http-body" ,rust-http-body-0.4) + ("rust-httparse" ,rust-httparse-1) + ("rust-httpdate" ,rust-httpdate-0.3) + ("rust-itoa" ,rust-itoa-0.4) + ("rust-libc" ,rust-libc-0.2) + ("rust-pin-project" ,rust-pin-project-1) + ("rust-socket2" ,rust-socket2-0.3) + ("rust-tokio" ,rust-tokio-1) + ("rust-tower-service" ,rust-tower-service-0.3) + ("rust-tracing" ,rust-tracing-0.1) + ("rust-want" ,rust-want-0.3)))) + (home-page "https://hyper.rs") + (synopsis "Fast and correct HTTP library.") + (description "This package provides a fast and correct HTTP library.") + (license license:expat))) + (define-public rust-hyper-0.13 (package + (inherit rust-hyper-0.14) (name "rust-hyper") (version "0.13.7") (source @@ -18135,7 +18566,6 @@ SystemTime}}.") (sha256 (base32 "1symcnba2y03b8lj6xp2wd994lk3xyk3wizacjg5s60njzfshs1y")))) - (build-system cargo-build-system) (arguments `(#:cargo-inputs (("rust-bytes" ,rust-bytes-0.5) @@ -18167,11 +18597,7 @@ SystemTime}}.") ("rust-tokio-test" ,rust-tokio-test-0.2) ("rust-tokio-util" ,rust-tokio-util-0.3) ("rust-tower-util" ,rust-tower-util-0.3) - ("rust-url" ,rust-url-1)))) - (home-page "https://hyper.rs") - (synopsis "Fast and correct HTTP library.") - (description "This package provides a fast and correct HTTP library.") - (license license:expat))) + ("rust-url" ,rust-url-1)))))) (define-public rust-hyper-0.12 (package @@ -18342,8 +18768,41 @@ SystemTime}}.") 0.11.x.") (license license:expat))) +(define-public rust-hyper-rustls-0.22 + (package + (name "rust-hyper-rustls") + (version "0.22.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "hyper-rustls" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0r2szp06nzqx6gblcw69kwx8afjp218fc083kfpw0i3d66bpm7sz")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-ct-logs" ,rust-ct-logs-0.8) + ("rust-futures-util" ,rust-futures-util-0.3) + ("rust-hyper" ,rust-hyper-0.14) + ("rust-log" ,rust-log-0.4) + ("rust-rustls" ,rust-rustls-0.19) + ("rust-rustls-native-certs" ,rust-rustls-native-certs-0.5) + ("rust-tokio" ,rust-tokio-1) + ("rust-tokio-rustls" ,rust-tokio-rustls-0.22) + ("rust-webpki" ,rust-webpki-0.21) + ("rust-webpki-roots" ,rust-webpki-roots-0.21)))) + (home-page "https://github.com/ctz/hyper-rustls") + (synopsis "Rustls+Hyper integration for pure Rust HTTPS") + (description + "This package provides Rustls+Hyper integration for pure Rust HTTPS.") + (license + (list license:asl2.0 license:isc license:expat)))) + (define-public rust-hyper-rustls-0.21 (package + (inherit rust-hyper-rustls-0.22) (name "rust-hyper-rustls") (version "0.21.0") (source @@ -18354,7 +18813,6 @@ SystemTime}}.") (sha256 (base32 "1dmbj15fx6qyg26hji2jm7q9y383090jy3z9zjn5xs4f7v43qx1p")))) - (build-system cargo-build-system) (arguments `(#:cargo-inputs (("rust-bytes" ,rust-bytes-0.5) @@ -18369,13 +18827,7 @@ SystemTime}}.") ("rust-webpki" ,rust-webpki-0.21) ("rust-webpki-roots" ,rust-webpki-roots-0.20)) #:cargo-development-inputs - (("rust-tokio" ,rust-tokio-0.2)))) - (home-page "https://github.com/ctz/hyper-rustls") - (synopsis "Rustls+hyper integration for pure rust HTTPS") - (description "This package provides Rustls+hyper integration for pure rust -HTTPS.") - (license - (list license:asl2.0 license:isc license:expat)))) + (("rust-tokio" ,rust-tokio-0.2)))))) (define-public rust-hyper-rustls-0.17 (package @@ -18428,8 +18880,35 @@ HTTPS.") "This package provides glue code for Rustls and synchronous Hyper.") (license (list license:expat license:asl2.0)))) +(define-public rust-hyper-tls-0.5 + (package + (name "rust-hyper-tls") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "hyper-tls" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "01crgy13102iagakf6q4mb75dprzr7ps1gj0l5hxm1cvm7gks66n")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-bytes" ,rust-bytes-1) + ("rust-hyper" ,rust-hyper-0.14) + ("rust-native-tls" ,rust-native-tls-0.2) + ("rust-tokio" ,rust-tokio-1) + ("rust-tokio-native-tls" ,rust-tokio-native-tls-0.3)))) + (home-page "https://hyper.rs") + (synopsis "Default TLS implementation for use with hyper") + (description "This package provides the default TLS implementation for use +with hyper.") + (license (list license:expat license:asl2.0)))) + (define-public rust-hyper-tls-0.4 (package + (inherit rust-hyper-tls-0.5) (name "rust-hyper-tls") (version "0.4.3") (source @@ -18440,7 +18919,6 @@ HTTPS.") (sha256 (base32 "1vcfyz7dxavf4brns15afmj5fxz88lbn05rrpbfqsnybdp2sqyfr")))) - (build-system cargo-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (inputs @@ -18453,12 +18931,7 @@ HTTPS.") ("rust-tokio" ,rust-tokio-0.2) ("rust-tokio-tls" ,rust-tokio-tls-0.3)) #:cargo-development-inputs - (("rust-tokio" ,rust-tokio-0.2)))) - (home-page "https://hyper.rs") - (synopsis "Default TLS implementation for use with hyper") - (description "This package provides the default TLS implementation for use -with hyper.") - (license (list license:expat license:asl2.0)))) + (("rust-tokio" ,rust-tokio-0.2)))))) (define-public rust-hyper-tls-0.3 (package @@ -20465,6 +20938,8 @@ generated by LALRPOP.") `(#:cargo-inputs (("rust-spin" ,rust-spin-0.5)) #:cargo-development-inputs (("rust-doc-comment" ,rust-doc-comment-0.3)))) + (inputs + `(("rust-spin" ,rust-spin-0.5))) (home-page "https://github.com/rust-lang-nursery/lazy-static.rs") (synopsis "Macro for declaring lazily evaluated statics in Rust") (description @@ -20850,23 +21325,26 @@ library.") (define-public rust-libloading-0.6 (package (name "rust-libloading") - (version "0.6.3") + (version "0.6.7") (source (origin (method url-fetch) (uri (crate-uri "libloading" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1ygliqa518jjxwa5ih4b2f8m984ib596vxmjb28pa5lb8zqdhhr4")))) + (base32 "10wq4a4jkman8k6y0v2cw3d38y1h3rw6d2in5klggm8jg90k46im")))) (build-system cargo-build-system) (arguments `(#:skip-build? #true #:cargo-inputs - (("rust-cfg-if" ,rust-cfg-if-0.1) + (("rust-cfg-if" ,rust-cfg-if-1) ("rust-winapi" ,rust-winapi-0.3)) #:cargo-development-inputs (("rust-libc" ,rust-libc-0.2) ("rust-static-assertions" ,rust-static-assertions-1)))) + (inputs + `(("rust-cfg-if" ,rust-cfg-if-1) + ("rust-winapi" ,rust-winapi-0.3))) (home-page "https://github.com/nagisa/rust_libloading/") (synopsis "Safer binding to dynamic library loading utilities") (description "This package provides a safer binding to dynamic library @@ -21651,11 +22129,16 @@ by inspecting the system for user preference.") (base32 "04175hv0v62shd82qydq58a48k3bjijmk54v38zgqlbxqkkbpfai")))) (build-system cargo-build-system) (arguments - `(#:skip-build? #t + `(#:tests? #f ; Not all test files included in release. #:cargo-inputs - (("rust-cfg-if" ,rust-cfg-if-0.1) + (("rust-cfg-if" ,rust-cfg-if-1) ("rust-serde" ,rust-serde-1) ("rust-sval" ,rust-sval-1) + ("rust-value-bag" ,rust-value-bag-1)) + #:cargo-development-inputs + (("rust-serde" ,rust-serde-1) + ("rust-serde-test" ,rust-serde-test-1) + ("rust-sval" ,rust-sval-1) ("rust-value-bag" ,rust-value-bag-1)))) (home-page "https://github.com/rust-lang/log") (synopsis "Lightweight logging facade for Rust") @@ -23160,6 +23643,34 @@ drop-in replacement for miniz.") "This package provides math interoperability standard types.") (license license:expat))) +(define-public rust-minus-3 + (package + (name "rust-minus") + (version "3.3.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "minus" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1f5kx0q3pc04zlaf0dv2vmbzza65kjdr1h9kk8x716fyzc0w5pga")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-async-std" ,rust-async-std-1) + ("rust-crossterm" ,rust-crossterm-0.19) + ("rust-regex" ,rust-regex-1) + ("rust-thiserror" ,rust-thiserror-1) + ("rust-tokio" ,rust-tokio-1)))) + (home-page "https://github.com/arijit79/minus") + (synopsis "Asynchronous paging library for Rust") + (description + "Minus is a fast, asynchronous terminal paging library for Rust. It +provides high level functionalities to easily write a pager for any terminal +application.") + (license (list license:expat license:asl2.0)))) + (define-public rust-mio-0.7 (package (name "rust-mio") @@ -23923,14 +24434,14 @@ IO of Windows's named pipes.") (define-public rust-native-tls-0.2 (package (name "rust-native-tls") - (version "0.2.6") + (version "0.2.7") (source (origin (method url-fetch) (uri (crate-uri "native-tls" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "0grsinsgq1pd70c6k9mif7wambwq2jxh8jhvdgwf9i7dnlwpkk3g")))) + (base32 "1m6v16xl8h4pm32pw6yhrvgwznf60bqhj2qhb1yrb8wd3hp6pndq")))) (build-system cargo-build-system) (arguments `(#:tests? #f ; tests require network access @@ -23946,16 +24457,17 @@ IO of Windows's named pipes.") ("rust-security-framework-sys" ,rust-security-framework-sys-2) ("rust-tempfile" ,rust-tempfile-3)) #:cargo-development-inputs - (("rust-hex" ,rust-hex-0.4)))) + (("rust-hex" ,rust-hex-0.4) + ("rust-test-cert-gen" ,rust-test-cert-gen-0.1)))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("openssl" ,openssl))) (home-page "https://github.com/sfackler/rust-native-tls") - (synopsis - "Wrapper over a platform's native TLS implementation") + (synopsis "Wrapper over a platform's native TLS implementation") (description - "This package provides a wrapper over a platform's native TLS implementation.") + "This package provides a wrapper over a platform's native TLS +implementation.") (license (list license:expat license:asl2.0)))) (define-public rust-native-tls-0.1 @@ -24305,7 +24817,7 @@ cryptographic library.") `(("clang" ,clang) ("pkg-config" ,pkg-config))) (inputs - `(("nettle", nettle))) + `(("nettle" ,nettle))) (arguments `(#:cargo-inputs (("rust-bindgen" ,rust-bindgen-0.51) @@ -24467,7 +24979,12 @@ while still providing platform specific APIs.") ("rust-rand" ,rust-rand-0.6) ("rust-semver" ,rust-semver-0.9) ("rust-sysctl" ,rust-sysctl-0.1) - ("rust-tempfile" ,rust-tempfile-3)))))) + ("rust-tempfile" ,rust-tempfile-3)))) + (inputs + `(("rust-bitflags" ,rust-bitflags-1) + ("rust-cc" ,rust-cc-1) + ("rust-cfg-if" ,rust-cfg-if-0.1) + ("rust-libc" ,rust-libc-0.2))))) (define-public rust-nix-0.17 (package @@ -25767,8 +26284,61 @@ Foundation framework.") "This package provides utilities for testing Objective-C interop.") (license license:expat))) +(define-public rust-object-0.23 + (package + (name "rust-object") + (version "0.23.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "object" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1m658q2ci9hk8csbl17zwcg1hpvcxm2sspjb9bzg0kc1cifsp9x9")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-compiler-builtins" ,rust-compiler-builtins-0.1) + ("rust-crc32fast" ,rust-crc32fast-1) + ("rust-flate2" ,rust-flate2-1) + ("rust-indexmap" ,rust-indexmap-1) + ("rust-rustc-std-workspace-alloc" ,rust-rustc-std-workspace-alloc-1) + ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1) + ("rust-wasmparser" ,rust-wasmparser-0.57)))) + (home-page "https://github.com/gimli-rs/object") + (synopsis "Unified interface for reading and writing object file formats") + (description + "This package provides a unified interface for reading and writing object +file formats.") + (license (list license:asl2.0 license:expat)))) + +(define-public rust-object-0.22 + (package + (inherit rust-object-0.23) + (name "rust-object") + (version "0.22.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "object" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "15r383qxxwq08q3a5rfqhp971wd0nixd9ny22xw37jy31qv66fwd")))) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-compiler-builtins" ,rust-compiler-builtins-0.1) + ("rust-crc32fast" ,rust-crc32fast-1) + ("rust-flate2" ,rust-flate2-1) + ("rust-indexmap" ,rust-indexmap-1) + ("rust-rustc-std-workspace-alloc" ,rust-rustc-std-workspace-alloc-1) + ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1) + ("rust-wasmparser" ,rust-wasmparser-0.57)))))) + (define-public rust-object-0.17 (package + (inherit rust-object-0.23) (name "rust-object") (version "0.17.0") (source @@ -25780,7 +26350,6 @@ Foundation framework.") (sha256 (base32 "1bmgbg4k0725lchfy9j1wnpfmywh5qhs0k4k6j2g7c0acvys8i7a")))) - (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs @@ -25791,12 +26360,7 @@ Foundation framework.") ("rust-uuid" ,rust-uuid-0.8) ("rust-flate2" ,rust-flate2-1) ("rust-crc32fast" ,rust-crc32fast-1) - ("rust-indexmap" ,rust-indexmap-1)))) - (home-page "https://github.com/gimli-rs/object") - (synopsis "Unified interface for reading and writing object file formats") - (description "This package provides a unified interface for reading and -writing object file formats.") - (license (list license:asl2.0 license:expat)))) + ("rust-indexmap" ,rust-indexmap-1)))))) (define-public rust-object-0.12 (package @@ -26221,14 +26785,14 @@ system for OpenSSL.") (define-public rust-openssl-sys-0.9 (package (name "rust-openssl-sys") - (version "0.9.58") + (version "0.9.60") (source (origin (method url-fetch) (uri (crate-uri "openssl-sys" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1pkq3x8w16kqvkg75g4w7nny56w9clssww0ibpzg015n153xnhm8")) + (base32 "1rpkfl0rmdcvxzyzp3n24g9clplh4avgzpi5c2a3hx96hcccf7wj")) (patches (search-patches "rust-openssl-sys-no-vendor.patch")))) (build-system cargo-build-system) (arguments @@ -28264,7 +28828,7 @@ written with declarative macros.") (define-public rust-pkg-config-0.3 (package (name "rust-pkg-config") - (version "0.3.17") + (version "0.3.19") (source (origin (method url-fetch) @@ -28272,11 +28836,20 @@ written with declarative macros.") (file-name (string-append name "-" version ".crate")) (sha256 (base32 - "0xynnaxdv0gzadlw4h79j855k0q7rj4zb9xb1vk00nc6ss559nh5")))) + "0k4860955riciibxr8bhnklp79jydp4xfylwdn5v9kj96hxlac9q")))) (build-system cargo-build-system) (arguments `(#:cargo-development-inputs - (("rust-lazy-static" ,rust-lazy-static-1)))) + (("rust-lazy-static" ,rust-lazy-static-1)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'hardcode-pkg-config-loation + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/lib.rs" + (("\"pkg-config\"") + (string-append "\"" (assoc-ref inputs "pkg-config") + "/bin/pkg-config\""))) + #t))))) (native-inputs `(("pkg-config" ,pkg-config))) (home-page "https://github.com/rust-lang/pkg-config-rs") @@ -29344,6 +29917,8 @@ in your code.") (("rust-unicode-xid" ,rust-unicode-xid-0.2)) #:cargo-development-inputs (("rust-quote" ,rust-quote-1)))) + (inputs + `(("rust-unicode-xid" ,rust-unicode-xid-0.2))) (home-page "https://github.com/alexcrichton/proc-macro2") (synopsis "Stable implementation of the upcoming new `proc_macro` API") (description "This package provides a stable implementation of the upcoming new @@ -30286,7 +30861,7 @@ integers, floats, tuples, booleans, lists, strings, options and results.") (define-public rust-quote-1 (package (name "rust-quote") - (version "1.0.7") + (version "1.0.9") (source (origin (method url-fetch) @@ -30294,7 +30869,7 @@ integers, floats, tuples, booleans, lists, strings, options and results.") (file-name (string-append name "-" version ".crate")) (sha256 (base32 - "0drzd6pq7whq7qhdvvs8wn6pbb0hhc12pz8wv80fb05ixhbksmma")))) + "19rjmfqzk26rxbgxy5j2ckqc2v12sw2xw8l4gi8bzpn2bmsbkl63")))) (build-system cargo-build-system) (arguments `(#:cargo-inputs @@ -32027,8 +32602,69 @@ uses finite automata and guarantees linear time matching on all inputs.") (description "File reopening utility.") (license (list license:asl2.0 license:expat)))) +(define-public rust-reqwest-0.11 + (package + (name "rust-reqwest") + (version "0.11.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "reqwest" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1m12j00if0gj0alhad4r7w0air4j0gqlpiwiqpsxna4l51zha4mz")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-async-compression" ,rust-async-compression-0.3) + ("rust-base64" ,rust-base64-0.13) + ("rust-bytes" ,rust-bytes-1) + ("rust-cookie" ,rust-cookie-0.14) + ("rust-cookie-store" ,rust-cookie-store-0.12) + ("rust-encoding-rs" ,rust-encoding-rs-0.8) + ("rust-futures-core" ,rust-futures-core-0.3) + ("rust-futures-util" ,rust-futures-util-0.3) + ("rust-http" ,rust-http-0.2) + ("rust-http-body" ,rust-http-body-0.4) + ("rust-hyper" ,rust-hyper-0.14) + ("rust-hyper-rustls" ,rust-hyper-rustls-0.22) + ("rust-hyper-tls" ,rust-hyper-tls-0.5) + ("rust-ipnet" ,rust-ipnet-2) + ("rust-js-sys" ,rust-js-sys-0.3) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-log" ,rust-log-0.4) + ("rust-mime" ,rust-mime-0.3) + ("rust-mime-guess" ,rust-mime-guess-2) + ("rust-native-tls" ,rust-native-tls-0.2) + ("rust-percent-encoding" ,rust-percent-encoding-2) + ("rust-pin-project-lite" ,rust-pin-project-lite-0.2) + ("rust-rustls" ,rust-rustls-0.19) + ("rust-rustls-native-certs" ,rust-rustls-native-certs-0.5) + ("rust-serde" ,rust-serde-1) + ("rust-serde-json" ,rust-serde-json-1) + ("rust-serde-urlencoded" ,rust-serde-urlencoded-0.7) + ("rust-time" ,rust-time-0.2) + ("rust-tokio" ,rust-tokio-1) + ("rust-tokio-native-tls" ,rust-tokio-native-tls-0.3) + ("rust-tokio-rustls" ,rust-tokio-rustls-0.22) + ("rust-tokio-socks" ,rust-tokio-socks-0.5) + ("rust-tokio-util" ,rust-tokio-util-0.6) + ("rust-trust-dns-resolver" ,rust-trust-dns-resolver-0.20) + ("rust-url" ,rust-url-2) + ("rust-wasm-bindgen" ,rust-wasm-bindgen-0.2) + ("rust-wasm-bindgen-futures" ,rust-wasm-bindgen-futures-0.4) + ("rust-web-sys" ,rust-web-sys-0.3) + ("rust-webpki-roots" ,rust-webpki-roots-0.21) + ("rust-winreg" ,rust-winreg-0.7)))) + (home-page "https://github.com/seanmonstar/reqwest") + (synopsis "High level HTTP client library") + (description "This package provides a high level HTTP client library.") + (license (list license:expat license:asl2.0)))) + (define-public rust-reqwest-0.10 (package + (inherit rust-reqwest-0.11) (name "rust-reqwest") (version "0.10.10") (source @@ -32039,7 +32675,6 @@ uses finite automata and guarantees linear time matching on all inputs.") (sha256 (base32 "0z7l46m1mjnvncscaq61zq6qmazrmb33vwjcnfrxpi0liqdgh607")))) - (build-system cargo-build-system) (arguments `(#:cargo-test-flags '("--release" "--" ;; These tests require internet access. @@ -32100,11 +32735,7 @@ uses finite automata and guarantees linear time matching on all inputs.") (native-inputs `(("pkg-config" ,pkg-config))) (inputs - `(("openssl" ,openssl))) - (home-page "https://github.com/seanmonstar/reqwest") - (synopsis "High level HTTP client library") - (description "This package provides a high level HTTP client library.") - (license (list license:expat license:asl2.0)))) + `(("openssl" ,openssl))))) (define-public rust-reqwest-0.9 (package @@ -32158,8 +32789,32 @@ uses finite automata and guarantees linear time matching on all inputs.") (("rust-doc-comment" ,rust-doc-comment-0.3) ("rust-libflate" ,rust-libflate-0.1)))))) +(define-public rust-resolv-conf-0.7 + (package + (name "rust-resolv-conf") + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "resolv-conf" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "005sk8r1php2g41yn7fdf1sn8cafyaqm6jxia42h2v88saa47r2j")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-hostname" ,rust-hostname-0.3) + ("rust-quick-error" ,rust-quick-error-1)))) + (home-page "https://github.com/tailhook/resolv-conf") + (synopsis "Parser for @file{/etc/resolv.conf}") + (description + "This package provides a parser for @file{/etc/resolv.conf} file.") + (license (list license:expat license:asl2.0)))) + (define-public rust-resolv-conf-0.6 (package + (inherit rust-resolv-conf-0.7) (name "rust-resolv-conf") (version "0.6.3") (source @@ -32170,18 +32825,11 @@ uses finite automata and guarantees linear time matching on all inputs.") (sha256 (base32 "0jlzifww1h7j23jnjj49xz8q0fpd9rqpd0ks8c4y651vgw9lx0qi")))) - (build-system cargo-build-system) (arguments `(#:tests? #f ; Not all test files included. #:cargo-inputs (("rust-quick-error" ,rust-quick-error-1) - ("rust-hostname" ,rust-hostname-0.3)))) - (home-page "https://github.com/tailhook/resolv-conf") - (synopsis "Parser for /etc/resolv.conf") - (description - "An /etc/resolv.conf parser crate for Rust.") - (license (list license:asl2.0 - license:expat)))) + ("rust-hostname" ,rust-hostname-0.3)))))) (define-public rust-result-1 (package @@ -32226,19 +32874,20 @@ functionality as retain but gives mutable borrow to the predicate.") (define-public rust-ring-0.16 (package (name "rust-ring") - (version "0.16.12") + (version "0.16.20") (source (origin (method url-fetch) (uri (crate-uri "ring" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "033sb54dlmiqdivc8v9ykkq3v08lzy0syjf5k1nag2gfcknai98v")))) + (base32 "1z682xp7v38ayq9g9nkbhhfpj6ygralmlx7wdmsfv8rnw99cylrh")))) (build-system cargo-build-system) (arguments - `(#:cargo-inputs - (("rust-lazy-static" ,rust-lazy-static-1) - ("rust-libc" ,rust-libc-0.2) + `(#:tests? #false ;missing file + #:cargo-inputs + (("rust-libc" ,rust-libc-0.2) + ("rust-once-cell" ,rust-once-cell-1) ("rust-spin" ,rust-spin-0.5) ("rust-untrusted" ,rust-untrusted-0.7) ("rust-web-sys" ,rust-web-sys-0.3) @@ -32247,7 +32896,7 @@ functionality as retain but gives mutable borrow to the predicate.") ("rust-cc" ,rust-cc-1)) #:cargo-development-inputs (("rust-libc" ,rust-libc-0.2) - ("rust-wasm-bindgen-test" ,rust-wasm-bindgen-test-0.2)))) + ("rust-wasm-bindgen-test" ,rust-wasm-bindgen-test-0.3)))) (home-page "https://github.com/briansmith/ring") (synopsis "Safe, fast, small crypto using Rust") (description "This package provided safe, fast, small crypto using Rust.") @@ -32989,6 +33638,44 @@ please consider using @code{async-std} or @code{tokio}.") (native-inputs `(("pkg-config" ,pkg-config))))) +(define-public rust-rusqlite-0.19 + (package + (inherit rust-rusqlite-0.23) + (name "rust-rusqlite") + (version "0.19.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "rusqlite" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "19xq7s0kzhlljm3hqx0vidr91ia8hl49r4m5gwdj9dyywgks5g3f")))) + (arguments + `(#:cargo-inputs + (("rust-bitflags" ,rust-bitflags-1) + ("rust-byteorder" ,rust-byteorder-1) + ("rust-chrono" ,rust-chrono-0.4) + ("rust-csv" ,rust-csv-1) + ("rust-fallible-iterator" ,rust-fallible-iterator-0.2) + ("rust-fallible-streaming-iterator" + ,rust-fallible-streaming-iterator-0.1) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-libsqlite3-sys" ,rust-libsqlite3-sys-0.15) + ("rust-lru-cache" ,rust-lru-cache-0.1) + ("rust-memchr" ,rust-memchr-2) + ("rust-serde-json" ,rust-serde-json-1) + ("rust-time" ,rust-time-0.1) + ("rust-url" ,rust-url-1) + ("rust-uuid" ,rust-uuid-0.7)) + #:cargo-development-inputs + (("rust-lazy-static" ,rust-lazy-static-1) + ("rust-regex" ,rust-regex-1) + ("rust-tempdir" ,rust-tempdir-0.3) + ("rust-unicase" ,rust-unicase-2) + ("rust-uuid" ,rust-uuid-0.7)))) + (inputs + `(("sqlite" ,sqlite))))) + (define-public rust-rust-argon2-0.7 (package (name "rust-rust-argon2") @@ -34231,8 +34918,35 @@ rustc compiler.") ("rust-serde-derive" ,rust-serde-derive-1) ("rust-webpki-roots" ,rust-webpki-roots-0.14)))))) +(define-public rust-rustls-native-certs-0.5 + (package + (name "rust-rustls-native-certs") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustls-native-certs" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "14i0bbbigk6r6262hvc51vz4dvqk1f3vg2f264wfvn2vi30vf1ss")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-openssl-probe" ,rust-openssl-probe-0.1) + ("rust-rustls" ,rust-rustls-0.19) + ("rust-schannel" ,rust-schannel-0.1) + ("rust-security-framework" ,rust-security-framework-2)))) + (home-page "https://github.com/ctz/rustls-native-certs") + (synopsis "Use the platform native certificate store with rustls") + (description "@code{rustls-native-certs} allows rustls to use the platform +native certificate store.") + (license + (list license:asl2.0 license:isc license:expat)))) + (define-public rust-rustls-native-certs-0.4 (package + (inherit rust-rustls-native-certs-0.5) (name "rust-rustls-native-certs") (version "0.4.0") (source @@ -34243,7 +34957,6 @@ rustc compiler.") (sha256 (base32 "1f2rkvdkz92qcmwryyqiw9phkqkf95g4962ljpfq5nkjfsd477b2")))) - (build-system cargo-build-system) (arguments `(#:cargo-inputs (("rust-openssl-probe" ,rust-openssl-probe-0.1) @@ -34255,13 +34968,7 @@ rustc compiler.") (("rust-ring" ,rust-ring-0.16) ("rust-untrusted" ,rust-untrusted-0.7) ("rust-webpki" ,rust-webpki-0.21) - ("rust-webpki-roots" ,rust-webpki-roots-0.20)))) - (home-page "https://github.com/ctz/rustls-native-certs") - (synopsis "Use the platform native certificate store with rustls") - (description "@code{rustls-native-certs} allows rustls to use the platform -native certificate store.") - (license - (list license:asl2.0 license:isc license:expat)))) + ("rust-webpki-roots" ,rust-webpki-roots-0.20)))))) (define-public rust-rusttype-0.9 (package @@ -36877,7 +37584,7 @@ functionality and without weak references.") `(("pkg-config" ,pkg-config))) (inputs `(("freetype" ,freetype))) - (home-page "http://www.freetype.org/") + (home-page "https://www.freetype.org/") (synopsis "Rust wrapper around freetype") (description "This package provides a Rust wrapper around the FreeType library.") @@ -39581,21 +40288,21 @@ cryptographic implementations.") (define-public rust-surf-2 (package (name "rust-surf") - (version "2.1.0") + (version "2.2.0") (source (origin (method url-fetch) (uri (crate-uri "surf" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1sl2d1ka01qz3qh4m2l5f2fjs0lhsmvdwl29f3pqzqbgv63wg2bi")))) + (base32 "0a33kw06jspi54rf38ncyqjj8861bid0wxhwzpk1ypkbr8rls59a")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-async-std" ,rust-async-std-1) ("rust-async-trait" ,rust-async-trait-0.1) - ("rust-cfg-if" ,rust-cfg-if-0.1) + ("rust-cfg-if" ,rust-cfg-if-1) ("rust-encoding-rs" ,rust-encoding-rs-0.8) ("rust-futures-util" ,rust-futures-util-0.3) ("rust-http-client" ,rust-http-client-6) @@ -39603,7 +40310,7 @@ cryptographic implementations.") ("rust-log" ,rust-log-0.4) ("rust-mime-guess" ,rust-mime-guess-2) ("rust-once-cell" ,rust-once-cell-1) - ("rust-pin-project-lite" ,rust-pin-project-lite-0.1) + ("rust-pin-project-lite" ,rust-pin-project-lite-0.2) ("rust-serde" ,rust-serde-1) ("rust-serde-json" ,rust-serde-json-1) ("rust-web-sys" ,rust-web-sys-0.3)))) @@ -39893,14 +40600,14 @@ browsers.") (define-public rust-syn-1 (package (name "rust-syn") - (version "1.0.60") + (version "1.0.64") (source (origin (method url-fetch) (uri (crate-uri "syn" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1080gw6mlja7yl26crya3k403wjdp7v3wx9mxcmpcnlar9z5j067")))) + (base32 "0vsx3448kyym7s5kybrl0qixgya33gzjxaidahya00k1jzlx3n9z")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t @@ -41296,6 +42003,26 @@ attribute. Under the hood, all test cases that share same body are grouped into mod, giving clear and readable test results.") (license license:expat))) +(define-public rust-test-cert-gen-0.1 + (package + (name "rust-test-cert-gen") + (version "0.1.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "test-cert-gen" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1lrpirh863h9rq2iqp0kivshzwd909fgiy13a5684d685ap7c565")))) + (build-system cargo-build-system) + (arguments `(#:skip-build? #t)) + (home-page "https://crates.io/crates/test-cert-gen") + (synopsis "Generate certificates for tests") + (description + "This package is an utility to generate certificates for tests (e.g., +for TLS).") + (license (list license:expat license:asl2.0)))) + (define-public rust-tester-0.5 (package (name "rust-tester") @@ -41590,15 +42317,14 @@ fixed set of worker threads.") (define-public rust-time-0.2 (package (name "rust-time") - (version "0.2.19") + (version "0.2.23") (source (origin (method url-fetch) (uri (crate-uri "time" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "18bhl0nmfyd8drksskw830ybw9pr47pisfn4245wabqijgys3hc0")))) + (base32 "12z95k0005rmyn9pf9v4hq80khsns7y5wfydnjr5jpci2yiyxnmw")))) (build-system cargo-build-system) (arguments `(#:cargo-inputs @@ -42496,23 +43222,23 @@ applications backed by buffers.") Tokio.") (license (list license:expat license:asl2.0)))) -(define-public rust-tokio-native-tls-0.1 +(define-public rust-tokio-native-tls-0.3 (package (name "rust-tokio-native-tls") - (version "0.1.0") + (version "0.3.0") (source (origin (method url-fetch) (uri (crate-uri "tokio-native-tls" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "0sd0xmj7kwizybpsg8vh7a6sixj0bs4dzihzgmdf1a0rm69qaq6d")))) + (base32 "0yvikgmph2qjq0ni2h2wfaxkzhbnc09c2544av0zidyj1dk9bngp")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-native-tls" ,rust-native-tls-0.2) - ("rust-tokio" ,rust-tokio-0.2)))) + ("rust-tokio" ,rust-tokio-1)))) (home-page "https://tokio.rs") (synopsis "TLS/SSL streams for Tokio") (description @@ -42521,6 +43247,24 @@ using native-tls giving an implementation of TLS for nonblocking I/O streams.") (license license:expat))) +(define-public rust-tokio-native-tls-0.1 + (package + (inherit rust-tokio-native-tls-0.3) + (name "rust-tokio-native-tls") + (version "0.1.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "tokio-native-tls" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0sd0xmj7kwizybpsg8vh7a6sixj0bs4dzihzgmdf1a0rm69qaq6d")))) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-native-tls" ,rust-native-tls-0.2) + ("rust-tokio" ,rust-tokio-0.2)))))) + (define-public rust-tokio-net-0.2 (package (name "rust-tokio-net") @@ -42565,8 +43309,35 @@ streams.") "This package provides the event loop that drives Tokio I/O resources.") (license license:expat))) +(define-public rust-tokio-openssl-0.6 + (package + (name "rust-tokio-openssl") + (version "0.6.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "tokio-openssl" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0khjqv8wap79ki7h0l91rs8j0b4ix097lb40b4s1x9sa19ffq6xc")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-futures" ,rust-futures-0.3) + ("rust-openssl" ,rust-openssl-0.10) + ("rust-pin-project" ,rust-pin-project-1) + ("rust-tokio" ,rust-tokio-1)))) + (home-page "https://github.com/alexcrichton/tokio-openssl") + (synopsis "SSL streams for Tokio backed by OpenSSL") + (description + "This package is an implementation of SSL streams for Tokio backed by +OpenSSL.") + (license (list license:expat license:asl2.0)))) + (define-public rust-tokio-openssl-0.4 (package + (inherit rust-tokio-openssl-0.6) (name "rust-tokio-openssl") (version "0.4.0") (source @@ -42577,7 +43348,6 @@ streams.") (sha256 (base32 "15751d47984ncvllagz35ldl10ifr8555wixvsg6k3i0yk2hhjrw")))) - (build-system cargo-build-system) (arguments `(#:tests? #f ;require internet access #:cargo-inputs @@ -42589,12 +43359,7 @@ streams.") (native-inputs `(("pkg-config" ,pkg-config))) (inputs - `(("openssl" ,openssl))) - (home-page "https://github.com/alexcrichton/tokio-openssl") - (synopsis "SSL streams for Tokio backed by OpenSSL") - (description "This package is an implementation of SSL streams for Tokio -backed by OpenSSL.") - (license (list license:expat license:asl2.0)))) + `(("openssl" ,openssl))))) (define-public rust-tokio-openssl-0.3 (package @@ -42950,8 +43715,35 @@ Rustls.") futures.") (license license:expat))) +(define-public rust-tokio-socks-0.5 + (package + (name "rust-tokio-socks") + (version "0.5.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "tokio-socks" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1h6qixh17yjf98bjyw4q8i36pf2lyfbcr9hkjjb6aalx0bx5s5ji")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-either" ,rust-either-1) + ("rust-futures-util" ,rust-futures-util-0.3) + ("rust-thiserror" ,rust-thiserror-1) + ("rust-tokio" ,rust-tokio-1)))) + (home-page "https://github.com/sticnarf/tokio-socks") + (synopsis "Asynchronous SOCKS proxy support for Rust") + (description + "This package provides asynchronous SOCKS proxy support for +Rust.") + (license license:expat))) + (define-public rust-tokio-socks-0.3 (package + (inherit rust-tokio-socks-0.5) (name "rust-tokio-socks") (version "0.3.0") (source @@ -42961,7 +43753,6 @@ futures.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 "0f95zcvllb5byz4acwbnlsk9a2rdql4x78x0a8nkfwhq4ifzs4fn")))) - (build-system cargo-build-system) (arguments `(#:tests? #false ;"tor_resolve_with_socket" not found #:cargo-inputs @@ -42973,13 +43764,7 @@ futures.") #:cargo-development-inputs (("rust-hyper" ,rust-hyper-0.13) ("rust-once-cell" ,rust-once-cell-1) - ("rust-tokio" ,rust-tokio-0.2)))) - (home-page "https://github.com/sticnarf/tokio-socks") - (synopsis "Asynchronous SOCKS proxy support for Rust") - (description - "This package provides asynchronous SOCKS proxy support for -Rust.") - (license license:expat))) + ("rust-tokio" ,rust-tokio-0.2)))))) (define-public rust-tokio-socks-0.2 (package @@ -43434,8 +44219,63 @@ stream-based WebSocket implementation.") (description "Unix Domain sockets for Tokio.") (license license:expat))) +(define-public rust-tokio-util-0.6 + (package + (name "rust-tokio-util") + (version "0.6.4") + (source + (origin + (method url-fetch) + (uri (crate-uri "tokio-util" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0agvfvvgh225vgb2z9w83lwqcqsy3pvkcbvnaz7m7rj6dg6facgc")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-bytes" ,rust-bytes-1) + ("rust-futures-core" ,rust-futures-core-0.3) + ("rust-futures-io" ,rust-futures-io-0.3) + ("rust-futures-sink" ,rust-futures-sink-0.3) + ("rust-futures-util" ,rust-futures-util-0.3) + ("rust-log" ,rust-log-0.4) + ("rust-pin-project-lite" ,rust-pin-project-lite-0.2) + ("rust-slab" ,rust-slab-0.4) + ("rust-tokio" ,rust-tokio-1)))) + (home-page "https://tokio.rs") + (synopsis "Additional utilities for working with Tokio") + (description + "This package provides additional utilities for working with Tokio.") + (license license:expat))) + +(define-public rust-tokio-util-0.4 + (package + (inherit rust-tokio-util-0.6) + (name "rust-tokio-util") + (version "0.4.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "tokio-util" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1m4pdg2gciagc9c5psg4lm51mcg69xwxr1yjdr0s0nv6yjckcy94")))) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-bytes" ,rust-bytes-0.5) + ("rust-futures-core" ,rust-futures-core-0.3) + ("rust-futures-io" ,rust-futures-io-0.3) + ("rust-futures-sink" ,rust-futures-sink-0.3) + ("rust-log" ,rust-log-0.4) + ("rust-pin-project-lite" ,rust-pin-project-lite-0.1) + ("rust-slab" ,rust-slab-0.4) + ("rust-tokio" ,rust-tokio-0.3)))))) + (define-public rust-tokio-util-0.3 (package + (inherit rust-tokio-util-0.6) (name "rust-tokio-util") (version "0.3.1") (source @@ -43446,7 +44286,6 @@ stream-based WebSocket implementation.") (sha256 (base32 "16b48dl6sbc9x944jgjvsd65ab1w2c2qcziddbrbwv1b3y4l50my")))) - (build-system cargo-build-system) (arguments `(#:tests? #f #:cargo-inputs @@ -43460,12 +44299,7 @@ stream-based WebSocket implementation.") #:cargo-development-inputs (("rust-futures" ,rust-futures-0.3) ("rust-tokio" ,rust-tokio-0.2) - ("rust-tokio-test" ,rust-tokio-test-0.2)))) - (home-page "https://tokio.rs") - (synopsis "Additional utilities for working with Tokio") - (description "This package provides additional utilities for working with -Tokio.") - (license license:expat))) + ("rust-tokio-test" ,rust-tokio-test-0.2)))))) (define-public rust-tokio-util-0.2 (package @@ -44081,8 +44915,46 @@ recycle bin.") "This package provides a library for visualizing tree structured data.") (license license:expat))) +(define-public rust-trust-dns-https-0.20 + (package + (name "rust-trust-dns-https") + (version "0.20.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "trust-dns-https" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "19f0l1illl69ycb97652rjrjppilz2pz7l9572lrjpkasffgcqr6")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-bytes" ,rust-bytes-1) + ("rust-cfg-if" ,rust-cfg-if-1) + ("rust-data-encoding" ,rust-data-encoding-2) + ("rust-futures-util" ,rust-futures-util-0.3) + ("rust-h2" ,rust-h2-0.3) + ("rust-http" ,rust-http-0.2) + ("rust-log" ,rust-log-0.4) + ("rust-rustls" ,rust-rustls-0.19) + ("rust-thiserror" ,rust-thiserror-1) + ("rust-tokio" ,rust-tokio-1) + ("rust-tokio-rustls" ,rust-tokio-rustls-0.22) + ("rust-trust-dns-proto" ,rust-trust-dns-proto-0.20) + ("rust-trust-dns-rustls" ,rust-trust-dns-rustls-0.20) + ("rust-webpki" ,rust-webpki-0.21) + ("rust-webpki-roots" ,rust-webpki-roots-0.21)))) + (home-page "http://www.trust-dns.org/index.html") + (synopsis "DNS over HTTPS extension for the Trust-DNS client") + (description + "Trust-DNS is a safe and secure DNS library. This is an extension for +the Trust-DNS client to use DNS over HTTPS.") + (license (list license:expat license:asl2.0)))) + (define-public rust-trust-dns-https-0.19 (package + (inherit rust-trust-dns-https-0.20) (name "rust-trust-dns-https") (version "0.19.5") (source @@ -44093,7 +44965,6 @@ recycle bin.") (sha256 (base32 "0s6yiqy98wddc2vid0dypj4cdnvycd4vrrj6l9s7yymq0iqpky5g")))) - (build-system cargo-build-system) (arguments `(#:tests? #false #:cargo-inputs @@ -44115,12 +44986,7 @@ recycle bin.") ("rust-webpki-roots" ,rust-webpki-roots-0.19)) #:cargo-development-inputs (("rust-env-logger" ,rust-env-logger-0.7) - ("rust-futures" ,rust-futures-0.3)))) - (home-page "http://www.trust-dns.org/index.html") - (synopsis "DNS over HTTPS extension for the Trust-DNS client") - (description "Trust-DNS is a safe and secure DNS library. This is an -extension for the Trust-DNS client to use DNS over HTTPS.") - (license (list license:expat license:asl2.0)))) + ("rust-futures" ,rust-futures-0.3)))))) (define-public rust-trust-dns-https-0.18 (package @@ -44192,8 +45058,36 @@ extension for the Trust-DNS client to use DNS over HTTPS.") #:cargo-development-inputs (("rust-tokio" ,rust-tokio-0.1)))))) +(define-public rust-trust-dns-native-tls-0.20 + (package + (name "rust-trust-dns-native-tls") + (version "0.20.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "trust-dns-native-tls" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "129map2cvy9xcdjg6927xyzic48mq6hqmils0qrmigbr61djxkna")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-futures-channel" ,rust-futures-channel-0.3) + ("rust-futures-util" ,rust-futures-util-0.3) + ("rust-native-tls" ,rust-native-tls-0.2) + ("rust-tokio" ,rust-tokio-1) + ("rust-tokio-native-tls" ,rust-tokio-native-tls-0.3) + ("rust-trust-dns-proto" ,rust-trust-dns-proto-0.20)))) + (home-page "http://www.trust-dns.org/index.html") + (synopsis "native-tls extension for the Trust-DNS client") + (description "Trust-DNS is a safe and secure DNS library. This is an +extension for the Trust-DNS client to use native-tls for TLS.") + (license (list license:expat license:asl2.0)))) + (define-public rust-trust-dns-native-tls-0.19 (package + (inherit rust-trust-dns-native-tls-0.20) (name "rust-trust-dns-native-tls") (version "0.19.5") (source @@ -44204,7 +45098,6 @@ extension for the Trust-DNS client to use DNS over HTTPS.") (sha256 (base32 "173443yivsiyzvnai4h53v71br8jsz4zjwhp83q3x4hnh6306ymv")))) - (build-system cargo-build-system) (arguments `(#:tests? #false #:cargo-inputs @@ -44216,12 +45109,7 @@ extension for the Trust-DNS client to use DNS over HTTPS.") (native-inputs `(("pkg-config" ,pkg-config))) (inputs - `(("openssl" ,openssl))) - (home-page "http://www.trust-dns.org/index.html") - (synopsis "native-tls extension for the Trust-DNS client") - (description "Trust-DNS is a safe and secure DNS library. This is an -extension for the Trust-DNS client to use native-tls for TLS.") - (license (list license:expat license:asl2.0)))) + `(("openssl" ,openssl))))) (define-public rust-trust-dns-native-tls-0.18 (package @@ -44268,8 +45156,36 @@ extension for the Trust-DNS client to use native-tls for TLS.") #:cargo-development-inputs (("rust-tokio" ,rust-tokio-0.1)))))) +(define-public rust-trust-dns-openssl-0.20 + (package + (name "rust-trust-dns-openssl") + (version "0.20.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "trust-dns-openssl" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1zd10g824qrs0yw2bmxphw43iylxlpgvnwb3l3hnwblp2ffhcx50")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-futures-channel" ,rust-futures-channel-0.3) + ("rust-futures-util" ,rust-futures-util-0.3) + ("rust-openssl" ,rust-openssl-0.10) + ("rust-tokio" ,rust-tokio-1) + ("rust-tokio-openssl" ,rust-tokio-openssl-0.6) + ("rust-trust-dns-proto" ,rust-trust-dns-proto-0.20)))) + (home-page "http://www.trust-dns.org/index.html") + (synopsis "tokio-openssl extension for the Trust-DNS client") + (description "Trust-DNS is a safe and secure DNS library. This is an +extension for the Trust-DNS client to use tokio-openssl for TLS.") + (license (list license:expat license:asl2.0)))) + (define-public rust-trust-dns-openssl-0.19 (package + (inherit rust-trust-dns-openssl-0.20) (name "rust-trust-dns-openssl") (version "0.19.5") (source @@ -44280,7 +45196,6 @@ extension for the Trust-DNS client to use native-tls for TLS.") (sha256 (base32 "0as4jzrscjlmgj04l2aa2lf09vpd0fg5v0vfz019ybxgiqn89g45")))) - (build-system cargo-build-system) (arguments `(#:cargo-inputs (("rust-futures" ,rust-futures-0.3) @@ -44294,12 +45209,7 @@ extension for the Trust-DNS client to use native-tls for TLS.") (native-inputs `(("pkg-config" ,pkg-config))) (inputs - `(("openssl" ,openssl))) - (home-page "http://www.trust-dns.org/index.html") - (synopsis "tokio-openssl extension for the Trust-DNS client") - (description "Trust-DNS is a safe and secure DNS library. This is an -extension for the Trust-DNS client to use tokio-openssl for TLS.") - (license (list license:expat license:asl2.0)))) + `(("openssl" ,openssl))))) (define-public rust-trust-dns-openssl-0.18 (package @@ -44347,8 +45257,54 @@ extension for the Trust-DNS client to use tokio-openssl for TLS.") (("rust-openssl" ,rust-openssl-0.10) ("rust-tokio" ,rust-tokio-0.1)))))) +(define-public rust-trust-dns-proto-0.20 + (package + (name "rust-trust-dns-proto") + (version "0.20.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "trust-dns-proto" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1gdsxjl628h02dp0fhcjz6js79fc4dxprqgqny6rghk450dki84q")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-async-trait" ,rust-async-trait-0.1) + ("rust-backtrace" ,rust-backtrace-0.3) + ("rust-cfg-if" ,rust-cfg-if-1) + ("rust-data-encoding" ,rust-data-encoding-2) + ("rust-enum-as-inner" ,rust-enum-as-inner-0.3) + ("rust-futures-channel" ,rust-futures-channel-0.3) + ("rust-futures-io" ,rust-futures-io-0.3) + ("rust-futures-util" ,rust-futures-util-0.3) + ("rust-idna" ,rust-idna-0.2) + ("rust-ipnet" ,rust-ipnet-2) + ("rust-js-sys" ,rust-js-sys-0.3) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-log" ,rust-log-0.4) + ("rust-openssl" ,rust-openssl-0.10) + ("rust-rand" ,rust-rand-0.8) + ("rust-ring" ,rust-ring-0.16) + ("rust-serde" ,rust-serde-1) + ("rust-smallvec" ,rust-smallvec-1) + ("rust-socket2" ,rust-socket2-0.3) + ("rust-thiserror" ,rust-thiserror-1) + ("rust-tokio" ,rust-tokio-1) + ("rust-url" ,rust-url-2) + ("rust-wasm-bindgen" ,rust-wasm-bindgen-0.2)))) + (home-page "http://www.trust-dns.org/index.html") + (synopsis "Safe and secure DNS library") + (description + "Trust-DNS is a safe and secure DNS library. This is the foundational +DNS protocol library for all Trust-DNS projects.") + (license (list license:expat license:asl2.0)))) + (define-public rust-trust-dns-proto-0.19 (package + (inherit rust-trust-dns-proto-0.20) (name "rust-trust-dns-proto") (version "0.19.5") (source @@ -44359,7 +45315,6 @@ extension for the Trust-DNS client to use tokio-openssl for TLS.") (sha256 (base32 "0a4zlv60kkbg1nvy3zh18fdg681z83yzppzy39rdkm7llqdhdmyd")))) - (build-system cargo-build-system) (arguments `(#:cargo-inputs (("rust-async-trait" ,rust-async-trait-0.1) @@ -44384,12 +45339,7 @@ extension for the Trust-DNS client to use tokio-openssl for TLS.") #:cargo-development-inputs (("rust-env-logger" ,rust-env-logger-0.7) ("rust-futures" ,rust-futures-0.3) - ("rust-tokio" ,rust-tokio-0.2)))) - (home-page "http://www.trust-dns.org/index.html") - (synopsis "Safe and secure DNS library") - (description "Trust-DNS is a safe and secure DNS library. This is the -foundational DNS protocol library for all Trust-DNS projects.") - (license (list license:expat license:asl2.0)))) + ("rust-tokio" ,rust-tokio-0.2)))))) (define-public rust-trust-dns-proto-0.18 (package @@ -44468,8 +45418,56 @@ foundational DNS protocol library for all Trust-DNS projects.") (("rust-env-logger" ,rust-env-logger-0.6) ("rust-tokio" ,rust-tokio-0.1)))))) +(define-public rust-trust-dns-resolver-0.20 + (package + (name "rust-trust-dns-resolver") + (version "0.20.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "trust-dns-resolver" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1r2n933z9yrpdqv60c9mbhl64y2inpx9rm870nq1qqmx226d2wih")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-cfg-if" ,rust-cfg-if-1) + ("rust-futures-util" ,rust-futures-util-0.3) + ("rust-ipconfig" ,rust-ipconfig-0.2) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-log" ,rust-log-0.4) + ("rust-lru-cache" ,rust-lru-cache-0.1) + ("rust-parking-lot" ,rust-parking-lot-0.11) + ("rust-resolv-conf" ,rust-resolv-conf-0.7) + ("rust-rustls" ,rust-rustls-0.19) + ("rust-serde" ,rust-serde-1) + ("rust-smallvec" ,rust-smallvec-1) + ("rust-thiserror" ,rust-thiserror-1) + ("rust-tokio" ,rust-tokio-1) + ("rust-tokio-native-tls" ,rust-tokio-native-tls-0.3) + ("rust-tokio-openssl" ,rust-tokio-openssl-0.6) + ("rust-tokio-rustls" ,rust-tokio-rustls-0.22) + ("rust-trust-dns-https" ,rust-trust-dns-https-0.20) + ("rust-trust-dns-native-tls" ,rust-trust-dns-native-tls-0.20) + ("rust-trust-dns-openssl" ,rust-trust-dns-openssl-0.20) + ("rust-trust-dns-proto" ,rust-trust-dns-proto-0.20) + ("rust-trust-dns-rustls" ,rust-trust-dns-rustls-0.20) + ("rust-webpki-roots" ,rust-webpki-roots-0.21)))) + (home-page "http://www.trust-dns.org/index.html") + (synopsis "Safe and secure DNS library") + (description + "Trust-DNS is a safe and secure DNS library. This Resolver library uses +the Client library to perform all DNS queries. The Resolver is intended to be +a high-level library for any DNS record resolution see Resolver and +AsyncResolver for supported resolution types. The Client can be used for +other queries.") + (license (list license:expat license:asl2.0)))) + (define-public rust-trust-dns-resolver-0.19 (package + (inherit rust-trust-dns-resolver-0.20) (name "rust-trust-dns-resolver") (version "0.19.5") (source @@ -44480,7 +45478,6 @@ foundational DNS protocol library for all Trust-DNS projects.") (sha256 (base32 "0xqv31gndybcrr5gi6jjp47qcvdxsc147s69a0y0nc6qqgyws8qg")))) - (build-system cargo-build-system) (arguments `(#:tests? #false ;network unreachable #:cargo-inputs @@ -44508,15 +45505,7 @@ foundational DNS protocol library for all Trust-DNS projects.") ("rust-webpki-roots" ,rust-webpki-roots-0.19)) #:cargo-development-inputs (("rust-env-logger" ,rust-env-logger-0.7) - ("rust-futures" ,rust-futures-0.3)))) - (home-page "http://www.trust-dns.org/index.html") - (synopsis "Safe and secure DNS library") - (description "Trust-DNS is a safe and secure DNS library. This Resolver -library uses the Client library to perform all DNS queries. The Resolver is -intended to be a high-level library for any DNS record resolution see Resolver -and AsyncResolver for supported resolution types. The Client can be used for -other queries.") - (license (list license:expat license:asl2.0)))) + ("rust-futures" ,rust-futures-0.3)))))) (define-public rust-trust-dns-resolver-0.18 (package @@ -44591,8 +45580,40 @@ other queries.") ("rust-trust-dns-rustls" ,rust-trust-dns-rustls-0.6) ("rust-webpki-roots" ,rust-webpki-roots-0.16)))))) +(define-public rust-trust-dns-rustls-0.20 + (package + (name "rust-trust-dns-rustls") + (version "0.20.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "trust-dns-rustls" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "00i5jf6bkfxikna0093swl0yz246nabpm0xngdxb94wkr3rz0kq9")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-futures-channel" ,rust-futures-channel-0.3) + ("rust-futures-io" ,rust-futures-io-0.3) + ("rust-futures-util" ,rust-futures-util-0.3) + ("rust-log" ,rust-log-0.4) + ("rust-rustls" ,rust-rustls-0.19) + ("rust-tokio" ,rust-tokio-1) + ("rust-tokio-rustls" ,rust-tokio-rustls-0.22) + ("rust-trust-dns-proto" ,rust-trust-dns-proto-0.20) + ("rust-webpki" ,rust-webpki-0.21)))) + (home-page "http://www.trust-dns.org/index.html") + (synopsis "rustls extension for the Trust-DNS client") + (description + "Trust-DNS is a safe and secure DNS library. This is an extension for +the Trust-DNS client to use rustls for TLS.") + (license (list license:expat license:asl2.0)))) + (define-public rust-trust-dns-rustls-0.19 (package + (inherit rust-trust-dns-rustls-0.20) (name "rust-trust-dns-rustls") (version "0.19.5") (source @@ -44603,7 +45624,6 @@ other queries.") (sha256 (base32 "1hj4fx2x4ncj7v8pf6bbn7634zq76hjigm1s2h6b6yjzzmz4yprn")))) - (build-system cargo-build-system) (arguments `(#:tests? #false ;missing file #:cargo-inputs @@ -44619,12 +45639,7 @@ other queries.") (native-inputs `(("pkg-config" ,pkg-config))) (inputs - `(("openssl" ,openssl))) - (home-page "http://www.trust-dns.org/index.html") - (synopsis "rustls extension for the Trust-DNS client") - (description "Trust-DNS is a safe and secure DNS library. This is an -extension for the Trust-DNS client to use rustls for TLS.") - (license (list license:expat license:asl2.0)))) + `(("openssl" ,openssl))))) (define-public rust-trust-dns-rustls-0.18 (package @@ -44825,14 +45840,14 @@ or dashboards.") (define-public rust-tuikit-0.4 (package (name "rust-tuikit") - (version "0.4.3") + (version "0.4.5") (source (origin (method url-fetch) (uri (crate-uri "tuikit" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1hf6pgclb2lj08jzb45q0mpjq2a9zw27h7kwyi5cibjz5skd054b")))) + (base32 "07x5218f9da6cbvmwpfyfymqyl7nksvkxxycxcrll9ajazy8qqlc")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t @@ -45790,7 +46805,7 @@ untrusted inputs in Rust.") (define-public rust-url-2 (package (name "rust-url") - (version "2.2.0") + (version "2.2.1") (source (origin (method url-fetch) @@ -45799,7 +46814,7 @@ untrusted inputs in Rust.") (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0vlpd0c7y9yv4x5vmb6qlnkxkj63r20wv2rysyg48l3kh6qg42ar")))) + "12qzdzgcvmc5l1fk4psldiipx80423mikb6g4a9qwb322d0rdkcw")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t @@ -46569,6 +47584,20 @@ updated when the crate version changes.") "This package provides a parser for implementing terminal emulators.") (license (list license:asl2.0 license:expat)))) +(define-public rust-vte-0.9 + (package + (inherit rust-vte-0.10) + (name "rust-vte") + (version "0.9.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "vte" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0yjl1jzlrk617kwk445mg9zmc71nxvwghhgsxfqhmm9401hlaxvf")))))) + (define-public rust-vte-0.3 (package (inherit rust-vte-0.10) @@ -47261,6 +48290,26 @@ attribute that is not in the shared backend crate.") "Support for parsing WebIDL specific to wasm-bindgen.") (license (list license:expat license:asl2.0)))) +(define-public rust-wasmparser-0.57 + (package + (name "rust-wasmparser") + (version "0.57.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "wasmparser" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "19kslk9pv1bcyp85w63dn1adbp13kz7kjha80abnwz27bmbxvz9j")))) + (build-system cargo-build-system) + (arguments `(#:skip-build? #t)) + (home-page "https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wasmparser") + (synopsis "Simple event-driven library for parsing WebAssembly binary files") + (description + "This package provides a simple event-driven library for parsing +WebAssembly binary files.") + (license license:asl2.0))) + (define-public rust-web-sys-0.3 (package (name "rust-web-sys") @@ -47292,14 +48341,14 @@ attribute that is not in the shared backend crate.") (define-public rust-webpki-0.21 (package (name "rust-webpki") - (version "0.21.2") + (version "0.21.4") (source (origin (method url-fetch) (uri (crate-uri "webpki" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1vv3x2alvczfy6jhx79c9h00d1nliqf7s5jlvcd6npc6f8chxxgi")))) + (base32 "1sm4i8c5bw3bdhi7mjk0wpvwx55hvsmyn0k2lpa4cb161038rqxq")))) (build-system cargo-build-system) (arguments `(#:tests? #f ;; tests fail to build "missing file tests/ed25519/ee.der" @@ -47355,21 +48404,21 @@ Verification.") #:cargo-development-inputs (("rust-base64" ,rust-base64-0.9)))))) -(define-public rust-webpki-roots-0.20 +(define-public rust-webpki-roots-0.21 (package (name "rust-webpki-roots") - (version "0.20.0") + (version "0.21.0") (source (origin (method url-fetch) (uri (crate-uri "webpki-roots" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "17qpmyym1lsi967b4nc3112nb13ism8731bhjqd9hlajafkxw80g")))) + (base32 "0xi3xjjx6brqh6hwa5jsrxvflsrhjcxa2x26k62q3bcb1dz5n0c2")))) (build-system cargo-build-system) (arguments - `(#:cargo-inputs + `(#:skip-build? #t + #:cargo-inputs (("rust-webpki" ,rust-webpki-0.21)))) (home-page "https://github.com/ctz/webpki-roots") (synopsis "Mozilla's CA root certificates for use with webpki") @@ -47377,6 +48426,23 @@ Verification.") with webpki.") (license license:mpl2.0))) +(define-public rust-webpki-roots-0.20 + (package + (inherit rust-webpki-roots-0.21) + (name "rust-webpki-roots") + (version "0.20.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "webpki-roots" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "17qpmyym1lsi967b4nc3112nb13ism8731bhjqd9hlajafkxw80g")))) + (arguments + `(#:cargo-inputs + (("rust-webpki" ,rust-webpki-0.21)))))) + (define-public rust-webpki-roots-0.19 (package (inherit rust-webpki-roots-0.20) @@ -47759,6 +48825,9 @@ command-line, uniformly on all platforms") `(#:cargo-inputs (("winapi-i686-pc-windows-gnu" ,rust-winapi-i686-pc-windows-gnu-0.4) ("winapi-x86-64-pc-windows-gnu" ,rust-winapi-x86-64-pc-windows-gnu-0.4)))) + (inputs + `(("rust-winapi-i686-pc-windows-gnu" ,rust-winapi-i686-pc-windows-gnu-0.4) + ("rust-winapi-x86-64-pc-windows-gnu" ,rust-winapi-x86-64-pc-windows-gnu-0.4))) (home-page "https://github.com/retep998/winapi-rs") (synopsis "Raw FFI bindings for all of Windows API") (description @@ -48590,8 +49659,33 @@ implementation that works everywhere, even WASM!") "This package provides a library for parsing compiled zoneinfo files.") (license license:expat))) +(define-public rust-zstd-0.6 + (package + (name "rust-zstd") + (version "0.6.1+zstd.1.4.9") + (source + (origin + (method url-fetch) + (uri (crate-uri "zstd" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "18riavdrq4cy10ygvrxby87nxyxbazpy53qvavc0bwlqyxvmxrax")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-futures" ,rust-futures-0.1) + ("rust-tokio-io" ,rust-tokio-io-0.1) + ("rust-zstd-safe" ,rust-zstd-safe-3)))) + (home-page "https://github.com/gyscos/zstd-rs") + (synopsis "Binding to the zstd compression library") + (description + "This package provides a binding to the zstd compression library.") + (license license:expat))) + (define-public rust-zstd-0.5 (package + (inherit rust-zstd-0.6) (name "rust-zstd") (version "0.5.3+zstd.1.4.5") (source @@ -48602,7 +49696,6 @@ implementation that works everywhere, even WASM!") (sha256 (base32 "1n0cgj9i3dk90kn7jcahq5fligqrjfzmnq08hfg71yhyfypjxcq1")))) - (build-system cargo-build-system) (arguments `(#:cargo-inputs (("rust-futures" ,rust-futures-0.1) @@ -48613,15 +49706,35 @@ implementation that works everywhere, even WASM!") ("rust-humansize" ,rust-humansize-1) ("rust-partial-io" ,rust-partial-io-0.3) ("rust-quickcheck" ,rust-quickcheck-0.6) - ("rust-walkdir" ,rust-walkdir-2)))) + ("rust-walkdir" ,rust-walkdir-2)))))) + +(define-public rust-zstd-safe-3 + (package + (name "rust-zstd-safe") + (version "3.0.1+zstd.1.4.9") + (source + (origin + (method url-fetch) + (uri (crate-uri "zstd-safe" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "133gassn5zy4vf0hhgsff3gxv1q3nc0bzi3qrqq7n4iqv6ycm1qk")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-libc" ,rust-libc-0.2) + ("rust-zstd-sys" ,rust-zstd-sys-1)))) (home-page "https://github.com/gyscos/zstd-rs") - (synopsis "Binding to the zstd compression library") - (description "This package provides a binding to the zstd compression + (synopsis "Safe low-level bindings to the zstd compression library") + (description + "This package provides safe low-level bindings to the zstd compression library.") - (license license:expat))) + (license (list license:expat license:asl2.0)))) (define-public rust-zstd-safe-2 (package + (inherit rust-zstd-safe-3) (name "rust-zstd-safe") (version "2.0.5+zstd.1.4.5") (source @@ -48632,22 +49745,16 @@ library.") (sha256 (base32 "0m8h1x030cj5bj7zxxf6gdp91bp0ays2vi9rlqllgxi71lp69yqw")))) - (build-system cargo-build-system) (arguments `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2) - ("rust-zstd-sys" ,rust-zstd-sys-1)))) - (home-page "https://github.com/gyscos/zstd-rs") - (synopsis "Safe low-level bindings to the zstd compression library") - (description "This package provides safe low-level bindings to the zstd -compression library.") - (license (list license:expat license:asl2.0)))) + ("rust-zstd-sys" ,rust-zstd-sys-1)))))) ;; TODO: Unbundle zstd. (define-public rust-zstd-sys-1 (package (name "rust-zstd-sys") - (version "1.4.17+zstd.1.4.5") + (version "1.4.20+zstd.1.4.9") (source (origin (method url-fetch) @@ -48656,15 +49763,13 @@ compression library.") (string-append name "-" version ".tar.gz")) (sha256 (base32 - "06zhk1j5v1sm04xxrw72lgzyi1wcq7kvj6vbd4ibamph9mj4k4mq")))) + "13kc3crvqg021fya48jw0spfbxdli5anmry3w93r8bfgswrvgmgb")))) (build-system cargo-build-system) (arguments `(#:cargo-inputs - (("rust-libc" ,rust-libc-0.2) - ("rust-bindgen" ,rust-bindgen-0.54) + (("rust-bindgen" ,rust-bindgen-0.57) ("rust-cc" ,rust-cc-1) - ("rust-glob" ,rust-glob-0.3) - ("rust-itertools" ,rust-itertools-0.9) + ("rust-libc" ,rust-libc-0.2) ("rust-pkg-config" ,rust-pkg-config-0.3)))) (home-page "https://github.com/gyscos/zstd-rs") (synopsis "Low-level bindings to the zstd compression library") @@ -48892,7 +49997,7 @@ configuration file and/or environment variables.") (define-public skim (package (name "skim") - (version "0.9.3") + (version "0.9.4") (source (origin (method url-fetch) @@ -48901,30 +50006,31 @@ configuration file and/or environment variables.") (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0qir6m4cpd63bnp0lqq4si1ccgd6rbv4m1662v771fkyynrdrj0s")))) + "1d5v9vq8frkdjm7bnw3455h6xf3c277d51il2qasn7r20kwik7ab")))) (build-system cargo-build-system) (arguments `(#:cargo-inputs - (("rust-beef" ,rust-beef-0.4) + (("rust-atty-0.2" ,rust-atty-0.2) + ("rust-beef" ,rust-beef-0.5) ("rust-bitflags" ,rust-bitflags-1) ("rust-chrono" ,rust-chrono-0.4) ("rust-clap" ,rust-clap-2) - ("rust-crossbeam" ,rust-crossbeam-0.7) + ("rust-crossbeam" ,rust-crossbeam-0.8) ("rust-defer-drop" ,rust-defer-drop-1) ("rust-derive-builder" ,rust-derive-builder-0.9) - ("rust-env-logger" ,rust-env-logger-0.6) + ("rust-env-logger" ,rust-env-logger-0.8) ("rust-fuzzy-matcher" ,rust-fuzzy-matcher-0.3) ("rust-lazy-static" ,rust-lazy-static-1) ("rust-log" ,rust-log-0.4) - ("rust-nix" ,rust-nix-0.14) + ("rust-nix" ,rust-nix-0.19) ("rust-rayon" ,rust-rayon-1) ("rust-regex" ,rust-regex-1) ("rust-shlex" ,rust-shlex-0.1) - ("rust-time" ,rust-time-0.1) + ("rust-time" ,rust-time-0.2) ("rust-timer" ,rust-timer-0.2) ("rust-tuikit" ,rust-tuikit-0.4) ("rust-unicode-width" ,rust-unicode-width-0.1) - ("rust-vte" ,rust-vte-0.3)) + ("rust-vte" ,rust-vte-0.9)) #:phases (modify-phases %standard-phases (add-after 'install 'install-extras diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index de350b92b5..9316af8d97 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -47,9 +47,11 @@ #:use-module (gnu packages compression) #:use-module (gnu packages crates-io) #:use-module (gnu packages cryptsetup) + #:use-module (gnu packages documentation) #:use-module (gnu packages gettext) #:use-module (gnu packages gnupg) #:use-module (gnu packages golang) + #:use-module (gnu packages graphviz) #:use-module (gnu packages image) #:use-module (gnu packages kerberos) #:use-module (gnu packages libbsd) @@ -88,6 +90,57 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-26)) +(define-public libdecaf + (package + (name "libdecaf") + (version "1.0.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "git://git.code.sf.net/p/ed448goldilocks/code") + (commit + (string-append "v" version)))) + (file-name + (git-file-name name version)) + (sha256 + (base32 "1ajgmyvc6a4m1h2hg1g4wz7ibx10x1xys9m6ancnmmf1f2srlfly")))) + (build-system cmake-build-system) + (outputs '("out" "python" "doc")) + (arguments + `(#:configure-flags '("-DENABLE_STATIC=OFF") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-python-binding + (lambda _ + (substitute* "python/setup.py" + (("gmake") + "make") + (("'\\.\\.', 'build', 'lib', 'libdecaf\\.so'") + "'..', '..', 'build', 'src', 'libdecaf.so'")))) + (add-after 'install 'install-python-binding + (lambda* (#:key outputs #:allow-other-keys) + (with-directory-excursion "../source/python" + (invoke "python" "setup.py" "install" + (string-append "--prefix=" (assoc-ref outputs "python")) + "--root=/")))) + (add-after 'install-python-binding 'install-documentation + (lambda* (#:key outputs #:allow-other-keys) + (invoke "make" "doc") + (let* ((doc (assoc-ref outputs "doc")) + (dest (string-append doc "/share/doc"))) + (copy-recursively "doc" dest))))))) + (native-inputs + `(("dot" ,graphviz) + ("doxygen" ,doxygen) + ("python" ,python-wrapper))) + (synopsis "Decaf Elliptic Curve Library") + (description "The libdecaf library is an implementation of elliptic curve +cryptography using the Montgomery and Edwards curves Curve25519, Ed25519, +Ed448-Goldilocks and Curve448, using the Decaf encoding.") + (home-page "http://ed448goldilocks.sourceforge.net/") + (license (list license:expat ;library + license:bsd-2)))) ;python bindings + (define-public libsodium (package (name "libsodium") @@ -114,7 +167,7 @@ communication, encryption, decryption, signatures, etc.") (define-public libmd (package (name "libmd") - (version "1.0.1") + (version "1.0.3") (source (origin (method url-fetch) (uri @@ -125,7 +178,7 @@ communication, encryption, decryption, signatures, etc.") version ".tar.xz"))) (sha256 (base32 - "0waclg2d5qin3r26gy5jvy4584ik60njc8pqbzwk0lzq3j9ynkp1")))) + "0jmga8y94h857ilra3qjaiax3wd5pd6mx1h120zhl9fcjmzhj0js")))) (build-system gnu-build-system) (synopsis "Message Digest functions from BSD systems") (description @@ -887,14 +940,14 @@ SHA256, SHA512, SHA3, AICH, ED2K, Tiger, DC++ TTH, BitTorrent BTIH, GOST R (define-public botan (package (name "botan") - (version "2.12.1") + (version "2.17.3") (source (origin (method url-fetch) (uri (string-append "https://botan.randombit.net/releases/" "Botan-" version ".tar.xz")) (sha256 (base32 - "1ada3ga7b0z4m0vjmxlvfi4nsic2l8kjcy85jwss3z2i58a5y0vy")))) + "121vn1aryk36cpks70kk4c4cfic5g0qs82bf92xap9258ijkn4kr")))) (build-system gnu-build-system) (arguments '(#:phases @@ -916,6 +969,8 @@ SHA256, SHA512, SHA3, AICH, ED2K, Tiger, DC++ TTH, BitTorrent BTIH, GOST R ;; Recommended by upstream "--with-zlib" "--with-bzip2" "--with-sqlite3")))) + (add-before 'check 'library-path-for-tests + (lambda _ (setenv "LD_LIBRARY_PATH" (getcwd)))) (replace 'check (lambda _ (invoke "./botan-test")))))) (native-inputs diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm index 8393fe5fe4..b964845628 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–2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; @@ -487,14 +487,14 @@ should only be used as part of the Guix cups-pk-helper service.") (define-public hplip (package (name "hplip") - (version "3.20.11") + (version "3.21.2") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/hplip/hplip/" version "/hplip-" version ".tar.gz")) (sha256 (base32 - "04fvdyjyjbkviy3awgm7g43p3lrvrsmgaqz8bwra22g7v2rpa5hb")) + "0hbwx9d4c8177vi0gavz9pxi7rc97jciacndp90ms8327shj2121")) (modules '((guix build utils))) (patches (search-patches "hplip-remove-imageprocessor.patch")) (snippet @@ -671,8 +671,7 @@ should only be used as part of the Guix cups-pk-helper service.") ("pkg-config" ,pkg-config))))) (define-public hplip-minimal - (package - (inherit hplip) + (package/inherit hplip (name "hplip-minimal") (arguments (substitute-keyword-arguments (package-arguments hplip) @@ -850,7 +849,7 @@ HP@tie{}LaserJet, and possibly other printers. See @file{README} for details.") (define-public epson-inkjet-printer-escpr (package (name "epson-inkjet-printer-escpr") - (version "1.7.8") + (version "1.7.9") ;; XXX: This currently works. But it will break as soon as a newer ;; version is available since the URLs for older versions are not ;; preserved. An alternative source will be added as soon as @@ -858,11 +857,11 @@ HP@tie{}LaserJet, and possibly other printers. See @file{README} for details.") (source (origin (method url-fetch) - (uri (string-append "https://download3.ebz.epson.net/dsc/f/03/00/12/04/32/" - "1a455ef8618def65700ca4e446311c2fb43cd839/" - "epson-inkjet-printer-escpr-1.7.8-1lsb3.2.tar.gz")) + (uri (string-append "https://download3.ebz.epson.net/dsc/f/03/00/12/50/95/" + "322b8d6b915ab85add33d41f04ba5130866aadbe/" + "epson-inkjet-printer-escpr-1.7.9-1lsb3.2.tar.gz")) (sha256 - (base32 "1pygg2bd2gh27dc65h3dzwrpvi6bq5c87wl0ldchqlc2b3blsx6p")))) + (base32 "136hhvhimxfnrdn3ksbiswjxgsifrwlp3zz8h0v63w4k1vkzpgc0")))) (build-system gnu-build-system) (arguments `(#:modules diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm index 2c5f5bcc45..f1dc5aeed4 100644 --- a/gnu/packages/curl.scm +++ b/gnu/packages/curl.scm @@ -192,14 +192,14 @@ not offer a replacement for libcurl.") (define-public guile-curl (package (name "guile-curl") - (version "0.7") + (version "0.9") (source (origin (method url-fetch) (uri (string-append "http://www.lonelycactus.com/tarball/" "guile_curl-" version ".tar.gz")) (sha256 (base32 - "1zk0ijx6bj212k0j0ma84cpvpvn0x6raaxnby3wdx3w4wnhnscn7")))) + "0y7wfhilfm6vzs0wyifrrc2pj9nsxfas905c7qa5cw4i6s74ypmi")))) (build-system gnu-build-system) (arguments `(#:modules (((guix build guile-build-system) @@ -224,7 +224,7 @@ not offer a replacement for libcurl.") (modify-phases %standard-phases (add-after 'unpack 'patch-undefined-references (lambda* _ - (substitute* "src/curl.scm" + (substitute* "module/curl.scm" ;; The following #defines are missing from our curl package ;; and therefore result in the evaluation of undefined symbols. ((",CURLOPT_HAPROXYPROTOCOL") "#f") diff --git a/gnu/packages/cyrus-sasl.scm b/gnu/packages/cyrus-sasl.scm index 3e65a1faf6..c18703fde0 100644 --- a/gnu/packages/cyrus-sasl.scm +++ b/gnu/packages/cyrus-sasl.scm @@ -45,6 +45,7 @@ (sha256 (base32 "1m85zcpgfdhm43cavpdkhb1s2zq1b31472hq1w1gs3xh94anp1i6")) (patches (search-patches "cyrus-sasl-ac-try-run-fix.patch")))) + (replacement cyrus-sasl/fixed) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) @@ -80,3 +81,20 @@ server writers.") (license (license:non-copyleft "file://COPYING" "See COPYING in the distribution.")) (home-page "https://cyrusimap.org/sasl/"))) + +(define cyrus-sasl/fixed + (package + (inherit cyrus-sasl) + (version "2.1.27") + (source (origin + (method url-fetch) + (uri (list (string-append + "https://cyrusimap.org/releases/cyrus-sasl-" + version ".tar.gz") + (string-append + "ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-" + version ".tar.gz"))) + (sha256 (base32 + "1m85zcpgfdhm43cavpdkhb1s2zq1b31472hq1w1gs3xh94anp1i6")) + (patches (search-patches "cyrus-sasl-ac-try-run-fix.patch" + "cyrus-sasl-CVE-2019-19906.patch")))))) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 766abc42be..f7b03e96ab 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -32,7 +32,7 @@ ;;; Copyright © 2017 Kristofer Buffington <kristoferbuffington@gmail.com> ;;; Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net> ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com> -;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2018, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us> ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com> @@ -193,52 +193,6 @@ either single machines or networked clusters.") (license license:gpl3+))) -(define-public go-gopkg.in-mgo.v2 - (package - (name "go-gopkg.in-mgo.v2") - (version "2016.08.01") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/go-mgo/mgo") - (commit (string-append "r" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0rwbi1z63w43b0z9srm8m7iz1fdwx7bq7n2mz862d6liiaqa59jd")))) - (build-system go-build-system) - (arguments - `(#:import-path "gopkg.in/mgo.v2" - ;; TODO: The tests fail as MongoDB fails to start - ;; Error parsing command line: unrecognised option '--chunkSize' - #:tests? #f - #:phases - (modify-phases %standard-phases - (delete 'reset-gzip-timestamps) - (add-before 'check 'start-mongodb - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (with-directory-excursion "src/gopkg.in/mgo.v2" - (invoke "make" "startdb"))) - #t)) - (add-after 'check 'stop'mongodb - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (with-directory-excursion "src/gopkg.in/mgo.v2" - (invoke "make" "stopdb"))) - #t))))) - (native-inputs - `(("go-gopkg.in-check.v1" ,go-gopkg.in-check.v1) - ("mongodb" ,mongodb) - ("daemontools" ,daemontools))) - (synopsis "@code{mgo} offers a rich MongoDB driver for Go.") - (description - "@code{mgo} (pronounced as mango) is a MongoDB driver for the Go language. -It implements a rich selection of features under a simple API following -standard Go idioms.") - (home-page "https://labix.org/mgo") - (license license:bsd-2))) - (define-public ephemeralpg (package (name "ephemeralpg") @@ -572,7 +526,8 @@ applications.") ("cyrus-sasl" ,cyrus-sasl))) (outputs '("out" "doc")) (arguments - '(#:phases + '(#:tests? #f ;many tests fail and use too much time + #:phases (modify-phases %standard-phases (add-before 'bootstrap 'fix-configure.ac ;; Move the AC_CONFIG_AUX_DIR macro use under AC_INIT, otherwise we @@ -584,24 +539,9 @@ applications.") (delete-file "bootstrap.sh") ;not useful in the context of Guix (substitute* "configure.ac" (("^AC_CONFIG_AUX_DIR\\(\\[build-aux\\]\\).*") "") - (("(^AC_INIT.*)" anchor) - (string-append anchor "AC_CONFIG_AUX_DIR([build-aux])\n"))) - #t)) - (add-before 'bootstrap 'disable-failing-tests - ;; See: https://bugs.launchpad.net/libmemcached/+bug/1803926 - (lambda _ - ;; Mark some heavily failing test suites as expected to fail. - (substitute* "Makefile.am" - (("(XFAIL_TESTS =[^\n]*)" xfail_tests) - (string-append xfail_tests " tests/testudp" - " tests/libmemcached-1.0/testapp" - " tests/libmemcached-1.0/testsocket"))) - ;; Disable two tests of the unittest test suite. - (substitute* "libtest/unittest.cc" - ((".*echo_fubar_BINARY \\},.*") "") - ((".*application_doesnotexist_BINARY \\},.*") "")) - #t)) - (add-after 'disable-dns-tests 'build-and-install-html-doc + (("^AC_INIT.*" anchor) + (string-append anchor "AC_CONFIG_AUX_DIR([build-aux])\n"))))) + (add-before 'build 'build-and-install-html-doc (lambda* (#:key outputs #:allow-other-keys) (let ((html (string-append (assoc-ref outputs "doc") "/share/doc/libmemcached/html/"))) @@ -609,9 +549,8 @@ applications.") ;; Cleanup useless files. (for-each delete-file-recursively (map (lambda (x) (string-append html x)) - '("_sources" ".doctrees" ".buildinfo")))) - #t))))) - (home-page "https://libmemcached.org/") + '("_sources" ".doctrees" ".buildinfo"))))))))) + (home-page "https://libmemcached.org/libMemcached.html") (synopsis "C++ library for memcached") (description "libMemcached is a library to use memcached in C/C++ applications. It comes with a complete reference guide and documentation of @@ -661,143 +600,6 @@ replacement for the code@{python-memcached} library.") (define-public python2-pylibmc (package-with-python2 python-pylibmc)) -(define-public mongodb - (package - (name "mongodb") - (version "3.4.10") - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/mongodb/mongo/archive/r" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0676lvkljj7a5hdhv78dbykqnqrj9lbn9799mi84b8vbnzsq961r")) - (modules '((guix build utils))) - (snippet - '(begin - (for-each (lambda (dir) - (delete-file-recursively - (string-append "src/third_party/" dir))) - '("pcre-8.41" "scons-2.5.0" "snappy-1.1.3" - "valgrind-3.11.0" "wiredtiger" - "yaml-cpp-0.5.3" "zlib-1.2.8")) - #t)) - (patches - (list - (search-patch "mongodb-support-unknown-linux-distributions.patch"))))) - (build-system scons-build-system) - (inputs - `(("openssl" ,openssl-1.0) - ("pcre" ,pcre) - ,@(match (%current-system) - ((or "x86_64-linux" "aarch64-linux" "mips64el-linux") - `(("wiredtiger" ,wiredtiger))) - (_ `())) - ("yaml-cpp" ,yaml-cpp) - ("zlib" ,zlib) - ("snappy" ,snappy))) - (native-inputs - `(("valgrind" ,valgrind) - ("perl" ,perl) - ("python" ,python-2) - ("python2-pymongo" ,python2-pymongo) - ("python2-pyyaml" ,python2-pyyaml) - ("tzdata" ,tzdata-for-tests))) - (arguments - `(#:scons ,scons-python2 - #:phases - (let ((common-options - `(;; "--use-system-tcmalloc" TODO: Missing gperftools - "--use-system-pcre" - ;; wiredtiger is 64-bit only - ,,(if (any (cute string-prefix? <> (or (%current-target-system) - (%current-system))) - '("i686-linux" "armhf-linux")) - ``"--wiredtiger=off" - ``"--use-system-wiredtiger") - ;; TODO - ;; build/opt/mongo/db/fts/unicode/string.o failed: Error 1 - ;; --use-system-boost - "--use-system-snappy" - "--use-system-zlib" - "--use-system-valgrind" - ;; "--use-system-stemmer" TODO: Missing relevant package - "--use-system-yaml" - "--disable-warnings-as-errors" - ,(format #f "--jobs=~a" (parallel-job-count)) - "--ssl"))) - (modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda _ - ;; Remove use of GNU extensions in parse_number_test.cpp, to - ;; allow compiling with GCC 7 or later - ;; https://jira.mongodb.org/browse/SERVER-28063 - (substitute* "src/mongo/base/parse_number_test.cpp" - (("0xabcab\\.defdefP-10") - "687.16784283419838")) - #t)) - (add-after 'unpack 'scons-propagate-environment - (lambda _ - ;; Modify the SConstruct file to arrange for - ;; environment variables to be propagated. - (substitute* "SConstruct" - (("^env = Environment\\(") - "env = Environment(ENV=os.environ, ")) - #t)) - (add-after 'unpack 'create-version-file - (lambda _ - (call-with-output-file "version.json" - (lambda (port) - (display ,(simple-format #f "{ - \"version\": \"~A\" -}" version) port))) - #t)) - (replace 'build - (lambda _ - (apply invoke `("scons" - ,@common-options - "mongod" "mongo" "mongos")))) - (replace 'check - (lambda* (#:key tests? inputs #:allow-other-keys) - (setenv "TZDIR" - (string-append (assoc-ref inputs "tzdata") - "/share/zoneinfo")) - (when tests? - ;; Note that with the tests, especially the unittests, the - ;; build can take up to ~45GB of space, as many tests are - ;; individual executable files, with some being hundreds of - ;; megabytes in size. - (apply invoke `("scons" ,@common-options "dbtest" "unittests")) - (substitute* "build/unittests.txt" - ;; TODO: Don't run the async_stream_test, as it hangs - (("^build\\/opt\\/mongo\\/executor\\/async\\_stream\\_test\n$") - "") - ;; TODO: This test fails - ;; Expected 0UL != disks.size() (0 != 0) @src/mongo/util/procparser_test.cpp:476 - (("^build\\/opt\\/mongo\\/util\\/procparser\\_test\n$") - "")) - (invoke "python" "buildscripts/resmoke.py" - "--suites=dbtest,unittests" - (format #f "--jobs=~a" (parallel-job-count)))) - #t)) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) - (install-file "mongod" bin) - (install-file "mongos" bin) - (install-file "mongo" bin)) - #t)))))) - (home-page "https://www.mongodb.org/") - (synopsis "High performance and high availability document database") - (description - "Mongo is a high-performance, high availability, schema-free -document-oriented database. A key goal of MongoDB is to bridge the gap -between key/value stores (which are fast and highly scalable) and traditional -RDBMS systems (which are deep in functionality).") - (license (list license:agpl3 - ;; Some parts are licensed under the Apache License - license:asl2.0)))) - (define-public mycli (package (name "mycli") @@ -833,7 +635,7 @@ auto-completion and syntax highlighting.") (define-public mysql (package (name "mysql") - (version "5.7.27") + (version "5.7.33") (source (origin (method url-fetch) (uri (list (string-append @@ -845,7 +647,7 @@ auto-completion and syntax highlighting.") name "-" version ".tar.gz"))) (sha256 (base32 - "1fhv16zr46pxm1j8vb8x8mh3nwzglg01arz8gnazbmjqldr5idpq")))) + "1bb343mf7n0qg2qz497gxjsqprygrjz1q1pbz76hgqxnsy08sfxd")))) (build-system cmake-build-system) (arguments `(#:configure-flags @@ -2499,7 +2301,7 @@ database.") (define-public lmdb (package (name "lmdb") - (version "0.9.27") + (version "0.9.28") (source (origin (method git-fetch) @@ -2508,7 +2310,7 @@ database.") (commit (string-append "LMDB_" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "09xqqm8yjsf1gv4gd4llal48sms76hfhxadx6rik1j2g5v3d3f1k")))) + (base32 "012a8bs49cswsnzw7k4piis5b6dn4by85w7a7mai9i04xcjyy9as")))) (build-system gnu-build-system) (arguments `(#:test-target "test" @@ -2648,17 +2450,25 @@ can autogenerate peewee models using @code{pwiz}, a model generator.") (define-public python-tortoise-orm (package (name "python-tortoise-orm") - (version "0.16.7") + (version "0.16.21") (source (origin (method url-fetch) (uri (pypi-uri "tortoise-orm" version)) (sha256 (base32 - "0wr7p4v0b16ypm9fcpwpl99kf491m6w3jkd13xcsgq13fy73fbqc")))) + "1dallk0q8q4v37klm0v3rppf2w8sjkqmypc1w8r9rraqxg1ylacp")))) (build-system python-build-system) - ;; Disable tests for now. They pull in a lot of dependencies. - (arguments `(#:tests? #f)) + (arguments + `(#:tests? #f ; Pypi does not have tests and Git snapshot depends on + ; poetry. + #:phases (modify-phases %standard-phases + (add-after 'unpack 'relax-version-requirements + (lambda _ + (substitute* "setup.py" + (("pypika>=0\\.44\\.0,<0\\.45\\.0") "pypika") + (("aiosqlite>=0.16.0,<0.17.0") "aiosqlite")) + #t))))) (native-inputs `(("python-asynctest" ,python-asynctest) ("python-nose2" ,python-nose2))) @@ -3239,15 +3049,25 @@ translate the complete SQLite API into Python.") (define-public python-aiosqlite (package (name "python-aiosqlite") - (version "0.12.0") + (version "0.17.0") (source (origin (method url-fetch) (uri (pypi-uri "aiosqlite" version)) (sha256 (base32 - "1w8248yz85xyzvvh4jaxnc59fqil45aka6h82kn1rcih4rjxbnn1")))) + "0lgfpbkcd730hbgj3zlrbx2y8fzvdns2zj3s4r4l31n49g1arrph")))) (build-system python-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + (invoke "python" "-m" "unittest" "aiosqlite.tests") + (format #t "test suite not run~%")) + #t))))) + (propagated-inputs + `(("python-typing-extensions" ,python-typing-extensions))) (native-inputs `(("python-aiounittest" ,python-aiounittest))) (home-page "https://github.com/jreese/aiosqlite") @@ -3535,9 +3355,6 @@ processing them in the background with workers. It is backed by Redis and it is designed to have a low barrier to entry.") (license license:bsd-2))) -(define-public python2-rq - (package-with-python2 python-rq)) - (define-public python-rq-scheduler (package (name "python-rq-scheduler") @@ -3650,7 +3467,7 @@ transforms idiomatic python function calls to well-formed SQL queries.") (define-public python-pypika (package (name "python-pypika") - (version "0.44.0") + (version "0.47.6") (source (origin (method git-fetch) (uri (git-reference @@ -3659,7 +3476,7 @@ transforms idiomatic python function calls to well-formed SQL queries.") (file-name (git-file-name name version)) (sha256 (base32 - "0mpddrw9z1pzcc40j3pzhd583hlgjx96aa8ak6m9zzhpm4bv3ard")))) + "001pg36sw9a36zdd1kccbymcxndphjcjbbrsy6ri7ng8h4dgz549")))) (build-system python-build-system) (native-inputs `(("python-parameterized" ,python-parameterized))) @@ -3670,121 +3487,6 @@ transforms idiomatic python function calls to well-formed SQL queries.") the SQL language using a syntax that reflects the resulting query.") (license license:asl2.0))) -(define-public mongo-tools - (package - (name "mongo-tools") - (version "3.4.0") - (source - (origin (method git-fetch) - (uri (git-reference - (url "https://github.com/mongodb/mongo-tools") - (commit (string-append "r" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1bcsz5cvj39a7nsxsfqmz9igrw33j6yli9kffigqyscs52amw7x1")))) - (build-system go-build-system) - (arguments - `(#:import-path "github.com/mongodb/mongo-tools" - #:modules ((srfi srfi-1) - (guix build go-build-system) - (guix build utils)) - #:install-source? #f - #:phases - (let ((all-tools - '("bsondump" "mongodump" "mongoexport" "mongofiles" - "mongoimport" "mongooplog" "mongorestore" - "mongostat" "mongotop"))) - (modify-phases %standard-phases - (add-after 'unpack 'delete-bundled-source-code - (lambda _ - (delete-file-recursively - "src/github.com/mongodb/mongo-tools/vendor") - #t)) - (add-after 'delete-bundled-source-code 'patch-source - (lambda _ - ;; Remove a redundant argument that causes compilation to fail. - (substitute* - "src/github.com/mongodb/mongo-tools/mongorestore/filepath.go" - (("skipping restore of system.profile collection\", db)") - "skipping restore of system.profile collection\")")) - #t)) - (replace 'build - (lambda _ - (for-each (lambda (tool) - (let ((command - `("go" "build" - ;; This is where the tests expect to find the - ;; executables - "-o" ,(string-append - "src/github.com/mongodb/mongo-tools/bin/" - tool) - "-v" - "-tags=\"ssl sasl\"" - "-ldflags" - "-extldflags=-Wl,-z,now,-z,relro" - ,(string-append - "src/github.com/mongodb/mongo-tools/" - tool "/main/" tool ".go")))) - (simple-format #t "build: running ~A\n" - (string-join command)) - (apply invoke command))) - all-tools) - #t)) - (replace 'check - (lambda _ - (with-directory-excursion "src" - (for-each (lambda (tool) - (invoke - "go" "test" "-v" - (string-append "github.com/mongodb/mongo-tools/" - tool))) - all-tools)) - #t)) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (for-each (lambda (tool) - (install-file - (string-append "src/github.com/mongodb/mongo-tools/bin/" - tool) - (string-append (assoc-ref outputs "out") - "/bin"))) - all-tools) - #t)))))) - (native-inputs - `(("go-github.com-howeyc-gopass" ,go-github.com-howeyc-gopass) - ("go-github.com-jessevdk-go-flags" ,go-github.com-jessevdk-go-flags) - ("go-golang-org-x-crypto" ,go-golang-org-x-crypto) - ("go-gopkg.in-mgo.v2" ,go-gopkg.in-mgo.v2) - ("go-gopkg.in-tomb.v2" ,go-gopkg.in-tomb.v2) - ("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go) - ("go-github.com-smartystreets-goconvey" ,go-github.com-smartystreets-goconvey))) - (home-page "https://github.com/mongodb/mongo-tools") - (synopsis "Various tools for interacting with MongoDB and BSON") - (description - "This package includes a collection of tools related to MongoDB. -@table @code -@item bsondump -Display BSON files in a human-readable format -@item mongoimport -Convert data from JSON, TSV or CSV and insert them into a collection -@item mongoexport -Write an existing collection to CSV or JSON format -@item mongodump/mongorestore -Dump MongoDB backups to disk in the BSON format -@item mongorestore -Read MongoDB backups in the BSON format, and restore them to a live database -@item mongostat -Monitor live MongoDB servers, replica sets, or sharded clusters -@item mongofiles -Read, write, delete, or update files in GridFS -@item mongooplog -Replay oplog entries between MongoDB servers -@item mongotop -Monitor read/write activity on a mongo server -@end table") - (license license:asl2.0))) - ;; There are many wrappers for this in other languages. When touching, please ;; be sure to ensure all dependencies continue to build. (define-public apache-arrow diff --git a/gnu/packages/dbm.scm b/gnu/packages/dbm.scm index d307914d41..daefc444ab 100644 --- a/gnu/packages/dbm.scm +++ b/gnu/packages/dbm.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> +;;; Copyright © 2021 Leo Le Bouter <lle-bout@zaclys.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -76,6 +77,11 @@ '("--build=aarch64-unknown-linux-gnu") '()) + ;; Bdb doesn't recognize powerpc64le as an architecture. + ,@(if (string=? "powerpc64le-linux" (%current-system)) + '("--build=powerpc64le-unknown-linux-gnu") + '()) + ,@(if (%current-target-system) ; cross building '((string-append "--host=" target)) '()) diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm index a2490330e0..20ba92709a 100644 --- a/gnu/packages/diffoscope.scm +++ b/gnu/packages/diffoscope.scm @@ -72,7 +72,7 @@ (define-public diffoscope (package (name "diffoscope") - (version "168") + (version "170") (source (origin (method git-fetch) (uri (git-reference @@ -81,7 +81,7 @@ (file-name (git-file-name name version)) (sha256 (base32 - "18rs4jfx50d7vkaqcc46r7pccgizp0is56267sq13vbfvz758dhh")))) + "0s1z4yc5d10ns4x28d2lm8py30r7sq4764q6b8yxcwxwfrjibmb0")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -121,13 +121,6 @@ ;; This requires /sbin to be in $PATH. (delete-file "tests/test_tools.py") #t)) - (add-before 'check 'skip-dex-test-with-missing-procyon - (lambda _ - ;; This test actually requires procyon decompiler - (substitute* "tests/comparators/test_dex.py" - (("skip_unless_tools_exist.\"enjarify\", \"zipinfo\", \"javap\"") - "skip_unless_tools_exist(\"enjarify\", \"zipinfo\", \"javap\", \"procyon\"")) - #t)) (add-after 'install 'install-man-page (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm index 7ad57f1bbb..ed112f2ec2 100644 --- a/gnu/packages/disk.scm +++ b/gnu/packages/disk.scm @@ -1119,7 +1119,7 @@ that support this feature).") (define-public memkind (package (name "memkind") - (version "1.10.1") + (version "1.11.0") (source (origin (method git-fetch) (uri (git-reference @@ -1128,7 +1128,7 @@ that support this feature).") (file-name (git-file-name name version)) (sha256 (base32 - "11iz887f3cp5pzf1bzm644wzab8gkbhz3b7x1w6pcps71yd94ylj")))) + "0w5hws12l167mbr4n6a6fl0mhf8mci61fsn55lh2cxz33f7q8n2x")))) (build-system gnu-build-system) (inputs `(;; memkind patched jemalloc to add je_arenalookupx, @@ -1141,7 +1141,10 @@ that support this feature).") ("automake" ,automake) ("libtool" ,libtool))) (arguments - `(#:tests? #f ; Tests require a NUMA-enabled system. + `(#:configure-flags + (list (string-append "--docdir=" (assoc-ref %outputs "out") + "/share/doc/" ,name "-" ,version)) + #:tests? #f ; Tests require a NUMA-enabled system. #:phases (modify-phases %standard-phases (add-before 'build 'autogen-jemalloc diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm index d4919ce7f1..0006f25207 100644 --- a/gnu/packages/django.scm +++ b/gnu/packages/django.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> -;;; Copyright © 2016, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> @@ -48,13 +48,13 @@ (define-public python-django (package (name "python-django") - (version "3.1.3") + (version "3.1.7") (source (origin (method url-fetch) (uri (pypi-uri "Django" version)) (sha256 (base32 - "13rz3v0bwk8i3xcccn5awbafahab3cyk8wwv57v2xazdzxspgf0l")))) + "19v5lfijnjx18y9ax962z3gnbxy9k8i3w4j0qfzcp85nx4p7kkij")))) (build-system python-build-system) (arguments '(#:phases @@ -120,13 +120,13 @@ to the @dfn{don't repeat yourself} (DRY) principle.") (define-public python-django-2.2 (package (inherit python-django) - (version "2.2.17") + (version "2.2.19") (source (origin (method url-fetch) (uri (pypi-uri "Django" version)) (sha256 (base32 - "0qdq0h2gw45j0h9j22c2sdn49ybl7jsrcyraskb9snknsyj70lyg")))) + "0hysjf8bz4g8xrn2cdx6pmawimpyr6ag2fg3jxsnc1byr3g3bhih")))) (native-inputs `(;; XXX: In 2.2 and 3.0, selenium is required for the test suite. ("python-selenium" ,python-selenium) diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm index bb19175b1a..953933d880 100644 --- a/gnu/packages/dns.scm +++ b/gnu/packages/dns.scm @@ -319,7 +319,7 @@ and BOOTP/TFTP for network booting of diskless machines.") ;; When updating, check whether isc-dhcp's bundled copy should be as well. ;; The BIND release notes are available here: ;; https://www.isc.org/bind/ - (version "9.16.12") + (version "9.16.13") (source (origin (method url-fetch) (uri (string-append @@ -327,7 +327,7 @@ and BOOTP/TFTP for network booting of diskless machines.") "/bind-" version ".tar.xz")) (sha256 (base32 - "0zys8hk08zzrw57x0vmzv6zx0a7vjj6qk5qh8jmrqd7x269sy54r")))) + "026cliyj570wxvvij96mrzsxyf421xv9a80gc5gv6savza9wfk55")))) (build-system gnu-build-system) (outputs `("out" "utils")) (inputs @@ -1287,14 +1287,14 @@ and TCP-capable recursive DNS server for finding domains on the internet.") (define-public openresolv (package (name "openresolv") - (version "3.10.0") + (version "3.12.0") (source (origin (method url-fetch) (uri (string-append "https://roy.marples.name/downloads/openresolv/" "openresolv-" version ".tar.xz")) (sha256 (base32 - "01ms6c087la4hk0f0w6n2vpsb7dg4kklah2rqyhz88p0vr9bqy20")) + "15qvp5va2yrqpz0ba54clvn8cbc66v4sl7k3bi9ji8jpx040bcs2")) (patches (search-patches "openresolv-restartcmd-guix.patch")))) (build-system gnu-build-system) diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm index f797c97cf3..b41659bc75 100644 --- a/gnu/packages/docbook.scm +++ b/gnu/packages/docbook.scm @@ -254,7 +254,7 @@ by no means limited to these applications.) This package provides XML DTDs.") (inputs `(("docbook-dsssl-doc" ,docbook-dsssl-doc))) (native-inputs - `(("bzip2", bzip2) + `(("bzip2" ,bzip2) ("tar" ,tar))) (home-page "https://docbook.org/") (synopsis "DSSSL style sheets for DocBook") @@ -292,7 +292,7 @@ by no means limited to these applications.) This package provides XML DTDs.") "--no-same-owner" "-C" docdir (string-append "docbook-dsssl-" ,version "/doc")))))) (native-inputs - `(("bzip2", bzip2) + `(("bzip2" ,bzip2) ("tar" ,tar))) (home-page "https://docbook.org/") (synopsis "DocBook DSSSL style sheets documentation") diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm index eb092808f6..5c6292c122 100644 --- a/gnu/packages/docker.scm +++ b/gnu/packages/docker.scm @@ -52,7 +52,7 @@ ;; Note - when changing Docker versions it is important to update the versions ;; of several associated packages (docker-libnetwork and go-sctp). -(define %docker-version "19.03.13") +(define %docker-version "19.03.15") (define-public python-docker (package @@ -177,18 +177,16 @@ Python without keeping their credentials in a Docker configuration file.") (define-public containerd (package (name "containerd") - (version "1.2.5") + (version "1.3.10") (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/containerd/containerd") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0npbzixf3c0jvzm159vygvkydrr8h36c9sq50yv0mdinrys2bvg0")) - (patches - (search-patches "containerd-test-with-go1.13.patch")))) + (method git-fetch) + (uri (git-reference + (url "https://github.com/containerd/containerd") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "10fz7359aydbz0yb01qkrsq2diypayfal618lvvb1x0gvgkp526i")))) (build-system go-build-system) (arguments `(#:import-path "github.com/containerd/containerd" @@ -252,7 +250,7 @@ network attachments.") ;; 'hack/dockerfile/install/proxy.installer'. NOTE - It is important that ;; this version is kept in sync with the version of Docker being used. ;; This commit is the "bump_19.03" branch, as mentioned in Docker's vendor.conf. - (let ((commit "026aabaa659832804b01754aaadd2c0f420c68b6") + (let ((commit "55e924b8a84231a065879156c0de95aefc5f5435") (version (version-major+minor %docker-version)) (revision "1")) (package @@ -267,7 +265,7 @@ network attachments.") (file-name (git-file-name name version)) (sha256 (base32 - "0bli21vn5v7bssw3ydym4jfdjsldhb47fld88kng7d138wl70lkw")) + "19syb3scwiykn44gqfaqrgqv8a0df4ps0ykf3za9xkjc5cyi99mp")) ;; Delete bundled ("vendored") free software source code. (modules '((guix build utils))) (snippet '(begin @@ -316,11 +314,11 @@ built-in registry server of Docker.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/docker/engine") + (url "https://github.com/moby/moby") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1mg3jjisdbqrqrrhyslj3715lslial2kcgjrpprb6q63i52963gj")) + (base32 "0419iha9zmwlhzhnbfxlsa13vgd04yifnsr8qqnj2ks5dxrcajl8")) (patches (search-patches "docker-fix-tests.patch")))) (build-system gnu-build-system) @@ -517,6 +515,8 @@ built-in registry server of Docker.") (delete-file "runconfig/config_test.go") ;; This file uses /var. (delete-file "daemon/oci_linux_test.go") + ;; Signal tests fail in bizarre ways + (delete-file "pkg/signal/signal_linux_test.go") #t)) (replace 'configure (lambda _ @@ -611,7 +611,7 @@ provisioning etc.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0wm5x8b8jll78h2zzncfdpxj0y3gv571z0nd39f036wsy7r23dsi")))) + (base32 "1asapjj8brvbkd5irgdq82fx1ihrc14qaq30jxvjwflfm5yb7lv0")))) (build-system go-build-system) (arguments `(#:import-path "github.com/docker/cli" diff --git a/gnu/packages/dunst.scm b/gnu/packages/dunst.scm index 2741336746..ce2c04bac6 100644 --- a/gnu/packages/dunst.scm +++ b/gnu/packages/dunst.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> +;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro> ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,6 +24,7 @@ #:use-module (guix packages) #:use-module (guix git-download) #:use-module (guix build-system gnu) + #:use-module (guix utils) #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages base) #:use-module (gnu packages freedesktop) @@ -36,7 +38,7 @@ (define-public dunst (package (name "dunst") - (version "1.5.0") + (version "1.6.1") (source (origin (method git-fetch) (uri (git-reference @@ -45,25 +47,20 @@ (file-name (git-file-name name version)) (sha256 (base32 - "0irwkqcgwkqaylcpvqgh25gn2ysbdm2kydipxfzcq1ddj9ns6f9c")))) + "0lga1kj2vjbj9g9rl93nivngjmk5fkxdxwal8w96x9whwk9jvdga")))) (build-system gnu-build-system) (arguments - '(#:tests? #f ; no check target - #:make-flags (list "CC=gcc" + `(#:tests? #f ; no check target + #:make-flags (list (string-append "CC=" ,(cc-for-target)) (string-append "PREFIX=" %output) + (string-append "SYSCONFDIR=" %output "/etc") ;; Otherwise it tries to install service file ;; to "dbus" store directory. (string-append "SERVICEDIR_DBUS=" %output "/share/dbus-1/services") "dunstify") #:phases (modify-phases %standard-phases - (delete 'configure) - (add-after 'install 'install-dunstify - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (install-file "dunstify" - (string-append out "/bin"))) - #t))))) + (delete 'configure)))) (native-inputs `(("pkg-config" ,pkg-config) ("perl" ,perl) ; for pod2man @@ -79,7 +76,8 @@ ("libxscrnsaver" ,libxscrnsaver) ("libxinerama" ,libxinerama) ("libxrandr" ,libxrandr) - ("libxdg-basedir" ,libxdg-basedir))) + ("libxdg-basedir" ,libxdg-basedir) + ("wayland" ,wayland))) ; for wayland support (home-page "https://dunst-project.org/") (synopsis "Customizable and lightweight notification daemon") (description diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 34a04e505c..a68d24760b 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2017, 2019, 2020 Brendan Tildesley <mail@brendan.scot> ;;; Copyright © 2017 Roel Janssen <roel@gnu.org> -;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2020 Zheng Junjie <873216071@qq.com> @@ -542,7 +542,7 @@ Some of the current features: (define-public xchm (package (name "xchm") - (version "1.31") + (version "1.32") (source (origin (method url-fetch) (uri (string-append "https://github.com/rzvncj/xCHM" @@ -550,7 +550,7 @@ Some of the current features: version "/xchm-" version ".tar.gz")) (sha256 (base32 - "0aw6bysqiwbw75n3ad229ihlmh7chqs1wlxm0398z3lfp2y6n7qf")))) + "0b12ym7cn65wy268kbksyhakicwb053c8xfn76q2dawrvbras9dj")))) (build-system gnu-build-system) (inputs `(("wxwidgets" ,wxwidgets) diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm index 857c318457..c61fdd32a6 100644 --- a/gnu/packages/education.scm +++ b/gnu/packages/education.scm @@ -276,7 +276,7 @@ easy.") (define-public snap (package (name "snap") - (version "6.5.0") + (version "6.6.0") (source (origin (method git-fetch) @@ -285,7 +285,7 @@ easy.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0sqd4ddkfc7f7gx02wffvwbqgfbhpkcgyv7v5rh3gx60jca02p4w")))) + (base32 "1k0j0sp6zz2hnh7zc7f086zc3sld01h7sk277j6fak914yv6slzy")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -614,14 +614,14 @@ Portuguese, Spanish and Italian.") (define-public fet (package (name "fet") - (version "5.49.0") + (version "5.49.1") (source (origin (method url-fetch) (uri (string-append "https://www.lalescu.ro/liviu/fet/download/" "fet-" version ".tar.bz2")) (sha256 - (base32 "011bgr46bfi41hah1gr54va6arvr5zsvkk9zq2gfgavynwfnmny4")))) + (base32 "1aa8xnhwvbhvp7yigcdk7qdwqh59yyfknqbpn3ybgjljc22m8w5n")))) (build-system gnu-build-system) (arguments `(#:phases diff --git a/gnu/packages/electronics.scm b/gnu/packages/electronics.scm index 232a6c8c44..c578fda334 100644 --- a/gnu/packages/electronics.scm +++ b/gnu/packages/electronics.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org> -;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2021 Leo Famulari <leo@famulari.name> @@ -220,7 +220,7 @@ format support.") (define-public sigrok-cli (package (name "sigrok-cli") - (version "0.7.1") + (version "0.7.2") (source (origin (method url-fetch) (uri (string-append @@ -228,7 +228,7 @@ format support.") version ".tar.gz")) (sha256 (base32 - "15vpn1psriadcbl6v9swwgws7dva85ld03yv6g1mgm27kx11697m")))) + "1f0a2k8qdcin0pqiqq5ni4khzsnv61l21v1dfdjzayw96qzl9l3i")))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm index 2e21cab48d..aab912648b 100644 --- a/gnu/packages/elf.scm +++ b/gnu/packages/elf.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2018, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2020 Mark Wielaard <mark@klomp.org> ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> +;;; Copyright © 2021 Leo Le Bouter <lle-bout@zaclys.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -211,6 +212,10 @@ static analysis of the ELF binaries at hand.") (setenv "CONFIG_SHELL" (which "bash")) (invoke "./configure" (string-append "--prefix=" out) + ,@(if (string=? "powerpc64le-linux" + (%current-system)) + '("--host=powerpc64le-unknown-linux-gnu") + '()) ,@(if (string=? "aarch64-linux" (%current-system)) '("--host=aarch64-unknown-linux-gnu") diff --git a/gnu/packages/elixir.scm b/gnu/packages/elixir.scm index 389b2bb29c..b87337855f 100644 --- a/gnu/packages/elixir.scm +++ b/gnu/packages/elixir.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 nee <nee.git@cock.li> -;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018, 2019, 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Nikita <nikita@n0.is> ;;; Copyright © 2021 Oskar Köök <oskar@maatriks.ee> ;;; @@ -34,7 +34,7 @@ (define-public elixir (package (name "elixir") - (version "1.11.3") + (version "1.11.4") (source (origin (method git-fetch) @@ -43,7 +43,7 @@ (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0ivah4117z75pinvb3gr22d05ihfwcdgw5zvvpv7kbgiqaj8ma8f")) + (base32 "1y8fbhli29agf84ja0fwz6gf22a46738b50nwy26yvcl2n2zl9d8")) (patches (search-patches "elixir-path-length.patch")))) (build-system gnu-build-system) (arguments diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 19077c1953..29958f7316 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -40,7 +40,7 @@ ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr> ;;; Copyright © 2018 Alex Branham <alex.branham@gmail.com> ;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de> -;;; Copyright © 2018, 2019, 2020 Pierre Langlois <pierre.langlois@gmx.com> +;;; Copyright © 2018, 2019, 2020, 2021 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2018, 2019, 2020, 2021 Brett Gilio <brettg@gnu.org> ;;; Copyright © 2019, 2020 Dimakakos Dimos <bendersteed@teknik.io> ;;; Copyright © 2019, 2020 Brian Leung <bkleung89@gmail.com> @@ -90,10 +90,11 @@ ;;; Copyright © 2020 Jonathan Rostran <rostranjj@gmail.com> ;;; Copyright © 2020, 2021 Noah Evans <noah@nevans.me> ;;; Copyright © 2020 Brit Butler <brit@kingcons.io> -;;; Copyright © 2021 Alexandr Vityazev <avityazew@gmail.com> +;;; Copyright © 2021 Alexandr Vityazev <avityazev@posteo.org> ;;; Copyright © 2021 Yurii Kholodkov <urist.mckorobochka@gmail.com> ;;; Copyright © 2021 Alexey Abramov <levenson@mmer.org> ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> +;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at> ;;; ;;; This file is part of GNU Guix. ;;; @@ -389,14 +390,13 @@ when typing parentheses directly or commenting out code line by line.") (define-public emacs-project (package (name "emacs-project") - (version "0.5.3") + (version "0.5.4") (source (origin (method url-fetch) - (uri (string-append "https://elpa.gnu.org/packages/" - "project-" version ".el")) + (uri (string-append "https://elpa.gnu.org/packages/project-" version ".tar")) (sha256 - (base32 "0cpf69m41h8gfcqnq72h11925zdk35b7hw7bfy83xm83xwp12rxx")))) + (base32 "0arjvhzzcf8b80w94yvpgfdlhsjwf5jk1r7vcai5a4dg3bi9cxyb")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-xref" ,emacs-xref))) (home-page "http://elpa.gnu.org/packages/project.html") @@ -1306,8 +1306,8 @@ provides an optional IDE-like error list.") (define-public emacs-flymake-shellcheck ;; No tag, version grabbed from source .el file. - (let ((commit "78956f0e5bb9c4d35989657a55929e8e3f5691e6") - (revision "0")) + (let ((commit "ac534e9ef15c82ac86ae65fe5004d29dbc8c92c7") + (revision "1")) (package (name "emacs-flymake-shellcheck") (version (git-version "0.1" revision commit)) @@ -1319,7 +1319,7 @@ provides an optional IDE-like error list.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "068mx5p4drwgppy4ry1rfq6qi79w6d82b4rnpl2jm37grsg94lix")))) + (base32 "04yfb4sy41spjzk9mhm4gy0h8vnjx09p2g6nm1yzgd9a5ph9sqgl")))) (build-system emacs-build-system) (home-page "https://github.com/federicotdn/flymake-shellcheck") (synopsis "Flymake backend for Bash/Sh powered by ShellCheck") @@ -2058,7 +2058,7 @@ is set.") (define-public emacs-ctrlf (package (name "emacs-ctrlf") - (version "1.2") + (version "1.3") (source (origin (method git-fetch) @@ -2067,7 +2067,7 @@ is set.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1f0k3432brc96am6az6xr1nks1vacqzixhdgwfn2xklb8if9a5xi")))) + (base32 "06wq6scqy2ax0h6aahy2r7hn3bbmkzl4w99bkrc3cqd4ij78sc8g")))) (build-system emacs-build-system) (home-page "https://github.com/raxod502/ctrlf/") (synopsis "Single-buffer text search in Emacs") @@ -2210,14 +2210,14 @@ as a library for other Emacs packages.") (define-public emacs-auctex (package (name "emacs-auctex") - (version "13.0.4") + (version "13.0.5") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/" "auctex-" version ".tar")) (sha256 - (base32 "1362dqb8mcaddda9849gqsj6rzlfq18xprddb74j02884xl7hq65")))) + (base32 "072wwsqfl8n2gi2inbp0s8k1ydr6fh1zyvc3rgynwzibjjniy319")))) (build-system emacs-build-system) ;; We use 'emacs' because AUCTeX requires dbus at compile time ;; ('emacs-minimal' does not provide dbus). @@ -5313,6 +5313,28 @@ view the build status of those servers' build jobs, and possibly to trigger build jobs.") (license license:gpl3+))) +(define-public emacs-tup-mode + (package + (name "emacs-tup-mode") + (version "1.3.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ejmr/tup-mode") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0asd024n5v23wdsg1959sszq568wg3a1bp4jrk0cllfji1z0n78y")))) + (build-system emacs-build-system) + (home-page "https://github.com/ejmr/tup-mode") + (synopsis "Major mode for editing ``tupfiles'' used by the Tup build system") + (description + "Tup mode provides syntax highlighting for all of the elements of +tupfiles, such as rule definitions, user-defined variables, macros, flags, bin +variables, and so on. The mode also allows you to execute Tup commands.") + (license license:gpl3+))) + (define-public emacs-company (package (name "emacs-company") @@ -6636,6 +6658,32 @@ useful for sending tables, fontified source code, and inline images in email.") (license license:gpl3+))) +(define-public emacs-org-msg + ;; No git tags. The commit below corresponds to the release of version 3.3. + (let ((commit "89e746c0a864031eef940758230bc7263a6f2289")) + (package + (name "emacs-org-msg") + (version "3.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jeremy-compostella/org-msg") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "15gd5zbxvdallyra9lmpb9i1r2mmwz0j0i0ra7j9imnbfiz3ln9r")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-htmlize" ,emacs-htmlize))) + (home-page "https://github.com/jeremy-compostella/org-msg") + (synopsis "Mix Org mode and Message mode to compose emails") + (description + "OrgMsg is a GNU Emacs global minor mode mixing up Org mode and your +Mail User Agent Mode (Message, mu4e, or Notmuch) to compose and reply to +emails in a Outlook HTML friendly style.") + (license license:gpl3+)))) + (define-public emacs-org-superstar (package (name "emacs-org-superstar") @@ -7311,7 +7359,7 @@ list of candidates.") (define-public emacs-marginalia (package (name "emacs-marginalia") - (version "0.3") + (version "0.4") (source (origin (method git-fetch) @@ -7320,7 +7368,7 @@ list of candidates.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1qihw1vq9sysrl6ha23ggycp0n2n1dx1ajkaqfm5vmv8480al07i")))) + (base32 "0piwzxp1zmwp876kyca0xcgyxgn8bn4wh5fnn88dkvdzi8mcgmkh")))) (build-system emacs-build-system) (home-page "https://github.com/minad/marginalia") (synopsis "Marginalia in the minibuffer completions") @@ -7780,13 +7828,13 @@ hydras with one column per group of heads."))) (define-public emacs-ivy (package (name "emacs-ivy") - (version "0.13.1") + (version "0.13.4") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/ivy-" version ".tar")) (sha256 - (base32 "0n0ixhdykbdpis4krkqq6zncbby28p34742q96n0l91w0p19slcx")))) + (base32 "0qpza1c45mr8fcpnm32cck4v22fnzz1yb7kww05rzgq1k9iivx5v")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-hydra" ,emacs-hydra))) @@ -7804,14 +7852,14 @@ expression.") (define-public emacs-counsel (package (name "emacs-counsel") - (version "0.13.1") + (version "0.13.4") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/" - "counsel-" version ".el")) + "counsel-" version ".tar")) (sha256 - (base32 "1y3hr3j5bh5mbyh1cqzxx04181qpvj4xyv1gym2gxcjd30nfllli")))) + (base32 "094zfapfn1l8wjf3djkipk0d9nks0g77sbk107pfsbr3skkzh031")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-swiper" ,emacs-swiper))) @@ -7837,14 +7885,13 @@ The following completions are currently available: (define-public emacs-swiper (package (name "emacs-swiper") - (version "0.13.1") + (version "0.13.4") (source (origin (method url-fetch) - (uri (string-append "https://elpa.gnu.org/packages/" - "swiper-" version ".el")) + (uri (string-append "https://elpa.gnu.org/packages/swiper-" version ".tar")) (sha256 - (base32 "06ild7kck0x5ry8bf0al24nh04q01q3jhj6jjl4xz8n2s6jnn70y")))) + (base32 "197pq2cvvskib87aky907wv2am55vilr7y5dabmmm07a8vr9py0v")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-ivy" ,emacs-ivy))) @@ -7941,30 +7988,35 @@ use it, call @code{M-x ivy-yasnippet} (but make sure you have enabled @code{yas-minor-mode} first).") (license license:gpl3+)))) +;; The 0.1.6 release is incompatible with newer ivy versions, so we instead +;; pick a more recent snapshot of the repository, see +;; https://github.com/Yevgnen/ivy-rich/pull/80. (define-public emacs-ivy-rich - (package - (name "emacs-ivy-rich") - (version "0.1.6") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/Yevgnen/ivy-rich") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1ra18v6lgz3m6asm6d5b92zn1x22yiz4cwxd9b54dnvwi11121m7")))) - (build-system emacs-build-system) - (propagated-inputs - `(("emacs-ivy" ,emacs-ivy))) - (home-page "https://github.com/Yevgnen/ivy-rich") - (synopsis "More friendly interface for @code{ivy}") - (description - "This package extends Ivy by showing more information in the minibuffer + (let ((commit "7b9b7b20c3ead81da90232cd6707dfad3c1f1eb3") + (revision "1")) + (package + (name "emacs-ivy-rich") + (version (git-version "0.1.6" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Yevgnen/ivy-rich") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "03p13z609ighdq4axls93alqfl7pclx12g4vdd7lwpcy0r0cgyf8")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-ivy" ,emacs-ivy))) + (home-page "https://github.com/Yevgnen/ivy-rich") + (synopsis "More friendly interface for @code{ivy}") + (description + "This package extends Ivy by showing more information in the minibuffer for each candidate. It adds columns showing buffer modes, file sizes, docstrings, etc. If @code{emacs-all-the-icons} is installed, it can show icons as well.") - (license license:gpl3+))) + (license license:gpl3+)))) (define-public emacs-avy (package @@ -9027,6 +9079,34 @@ duplicated a lot. Org-mode makes the book keeping of tags and feeds much easier.") (license license:gpl3+)))) +(define-public emacs-elfeed-score + (package + (name "emacs-elfeed-score") + (version "0.7.7") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sp1ff/elfeed-score") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "07xid0a31ghknbfwj8dxzbqkg4sfayjhlqvp17p2bzlf1mj0zjyd")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-elfeed" ,emacs-elfeed))) + (home-page "https://github.com/sp1ff/elfeed-score") + (synopsis "Gnus-style scoring for Elfeed") + (description + "Elfeed-score is an add-on for Elfeed, an RSS reader for Emacs. It +brings Gnus-style scoring to your RSS feeds. Elfeed, by default, displays +feed entries by date. This package allows you to setup rules for assigning +numeric scores to entries, and sorting entries with higher scores ahead of +those with lower, regardless of date. The idea is to prioritize content +important to you.") + (license license:gpl3+))) + (define-public emacs-el-x (package (name "emacs-el-x") @@ -10217,7 +10297,7 @@ Lua programming language}.") (define-public emacs-ebuild-mode (package (name "emacs-ebuild-mode") - (version "1.51") + (version "1.52") (source (origin (method url-fetch) @@ -10226,7 +10306,7 @@ Lua programming language}.") "ebuild-mode-" version ".tar.xz")) (file-name (string-append name "-" version ".tar.xz")) (sha256 - (base32 "0sfmd6ns2qdmybcynlvc4fqzkbkzmm54rn87wyirdcqnpy0x03i2")))) + (base32 "10nikbbwh612qlnms2i31963a0h3ccyg85vrxlizdpsqs4cjpg6h")))) (build-system emacs-build-system) (arguments '(#:phases @@ -12038,14 +12118,14 @@ performance-oriented and tidy.") (define-public emacs-leaf (package (name "emacs-leaf") - (version "4.3.2") + (version "4.4.4") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/" "leaf-" version ".tar")) (sha256 - (base32 "190sfnnii9jnj8amjkdabd8w9k2xyalhg4h488a5gzjxdzz2s6zi")))) + (base32 "1npg06zmy21kg2qsqgfm03l7vjib697i96awypcdb0hw5mvmc1a1")))) (build-system emacs-build-system) (home-page "https://github.com/conao3/leaf.el") (synopsis "Simplify your init.el configuration, extended use-package") @@ -12290,7 +12370,7 @@ using Imenu, and Compilation mode support for MSBuild, devenv and xbuild.") (define-public emacs-php-mode (package (name "emacs-php-mode") - (version "1.23.0") + (version "1.24.0") (source (origin (method git-fetch) @@ -12299,8 +12379,17 @@ using Imenu, and Compilation mode support for MSBuild, devenv and xbuild.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0wnkcxg6djy4jvxhshiy1iw6b5cf79pjwjhfd1a060cavhfm4v5c")))) + (base32 "0bs9q62bd7885c39v7x1qz3w1fhpmpdgm72xwsk2yygw0ii425nn")))) (build-system emacs-build-system) + (arguments + `(#:include (cons "^lisp/" %default-include) + #:phases + (modify-phases %standard-phases + (add-after 'add-source-to-load-path 'add-lisp-dir-to-emacs-load-path + (lambda _ + (setenv "EMACSLOADPATH" + (string-append (getcwd) "/lisp:" (getenv "EMACSLOADPATH")))))))) + (propagated-inputs `(("emacs-projectile" ,emacs-projectile))) (home-page "https://github.com/ejmr/php-mode") (synopsis "Major mode for editing PHP code") (description @@ -12384,14 +12473,14 @@ shuangpin, wubi and cangjie.") (define-public emacs-posframe (package (name "emacs-posframe") - (version "0.8.7") + (version "0.8.8") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/" "posframe-" version ".tar")) (sha256 - (base32 "0n6r06fz51jwh2k67xdwwbxij7igwfihhmkp6r3a758bck9hhwxi")))) + (base32 "1ij6brzcxv9viz37qafcinlfx5l20w8x8s6786r1rsda5n1xsmvd")))) (build-system emacs-build-system) ;; emacs-minimal does not include the function font-info. (arguments @@ -14120,7 +14209,7 @@ messaging service.") ;; HOME needs to exist for source compilation. (add-before 'build 'set-HOME (lambda _ (setenv "HOME" "/tmp") #t))))) - (propagated-inputs `(("emacs-slack", emacs-slack))) + (propagated-inputs `(("emacs-slack" ,emacs-slack))) (home-page "https://github.com/yuya373/helm-slack") (synopsis "Helm extension for emacs-slack") (description "This package provides an helm extension for emacs-slack @@ -14166,14 +14255,14 @@ and shell-command prompts that are based on Bash completion.") (define-public emacs-easy-kill (package (name "emacs-easy-kill") - (version "0.9.3") + (version "0.9.4") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/easy-kill-" version ".tar")) (sha256 (base32 - "17nw0mglmg877axwg1d0gs03yc0p04lzmd3pl0nsnqbh3303fnqb")))) + "1pqqv4dhfm00wqch4wy3n2illsvxlz9r6r64925cvq3i7wq4la1x")))) (build-system emacs-build-system) (home-page "https://github.com/leoliu/easy-kill") (synopsis "Kill and mark things easily in Emacs") @@ -14547,6 +14636,32 @@ navigation with the grails mode.") from @code{groovy-mode} for editing Jenkins declarative pipeline files.") (license license:gpl3+)))) +(define-public emacs-kotlin-mode + (let ((commit "0e4bafb31d1fc2a0a420a521c2723d5526646c0b") + (revision "1")) + (package + (name "emacs-kotlin-mode") + (version (git-version "0.0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Emacs-Kotlin-Mode-Maintainers/kotlin-mode") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "09inpgwmnnqaakyn4r4xs8kax8b89dw94kvl521x6d43h9zl5i70")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("ert-runner" "-L" "." "-L" "test"))) + (native-inputs `(("emacs-ert-runner" ,emacs-ert-runner))) + (home-page "https://github.com/Emacs-Kotlin-Mode-Maintainers/kotlin-mode") + (synopsis "Major major-mode for editing Kotlin files") + (description + "This package provides a @code{kotlin-mode} for editing Kotlin files.") + (license license:gpl3+)))) + (define-public emacs-org-tree-slide (let ((commit "036a36eec1cf712d3db155572aed325daa372eb5") (revision "2")) @@ -15009,39 +15124,71 @@ close, copy, cut, paste, undo, redo.") (license license:gpl3+)))) (define-public emacs-password-store + (let ((commit "918992c19231b33b3d4a3288a7288a620e608cb4") + (revision "1")) + (package + (name "emacs-password-store") + ;; The emacs package version does not match the password-store version, + ;; even though it is part of the same repository. When updating, look + ;; at the version declared in password-store.el. + (version (git-version "2.1.4" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "git://git.zx2c4.com/password-store") + (commit commit))) + (sha256 + (base32 + "0ni62f4pq96g0i0q66bch1dl9k4zqwhg7xaf746k3gbbqxcdh3vi")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'extract-el-file + (lambda _ + (copy-file "contrib/emacs/password-store.el" "password-store.el") + (delete-file-recursively "contrib") + (delete-file-recursively "man") + (delete-file-recursively "src") + (delete-file-recursively "tests")))))) + (propagated-inputs + `(("emacs-auth-source-pass" ,emacs-auth-source-pass) + ("emacs-s" ,emacs-s) + ("emacs-with-editor" ,emacs-with-editor) + ("password-store" ,password-store))) + (home-page "https://git.zx2c4.com/password-store/tree/contrib/emacs") + (synopsis "Password store (pass) support for Emacs") + (description + "This package provides functions for working with pass (\"the +standard Unix password manager\").") + (license license:gpl2+)))) + +(define-public emacs-password-store-otp (package - (name "emacs-password-store") - (version "1.7.3") - (source (origin - (method url-fetch) - (uri - (string-append "https://git.zx2c4.com/password-store/snapshot/" - "password-store-" version ".tar.xz")) - (sha256 - (base32 - "1x53k5dn3cdmvy8m4fqdld4hji5n676ksl0ql4armkmsds26av1b")))) + (name "emacs-password-store-otp") + (version "0.1.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/volrath/password-store-otp.el") + (commit version))) + (sha256 + (base32 "0gb48blvnn6ci2wl45z81p41ny7vbgl610hqy6b2hyr2171qjd60")) + (file-name (git-file-name name version)))) (build-system emacs-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'extract-el-file - (lambda _ - (copy-file "contrib/emacs/password-store.el" "password-store.el") - (delete-file-recursively "contrib") - (delete-file-recursively "man") - (delete-file-recursively "src") - (delete-file-recursively "tests")))))) (propagated-inputs - `(("emacs-f" ,emacs-f) - ("emacs-s" ,emacs-s) - ("emacs-with-editor" ,emacs-with-editor) - ("password-store" ,password-store))) - (home-page "https://git.zx2c4.com/password-store/tree/contrib/emacs") - (synopsis "Password store (pass) support for Emacs") - (description - "This package provides functions for working with pass (\"the -standard Unix password manager\").") - (license license:gpl2+))) + `(("emacs-password-store" ,emacs-password-store) + ("emacs-s" ,emacs-s))) + (home-page "https://github.com/volrath/password-store-otp.el") + (synopsis + "Interact with the @code{pass-otp} extension for @code{pass} from Emacs") + (description "This package provides Emacs functions to interact with the +@code{pass-otp} extension for @code{pass}. It includes functions to import +OTP URIs from screenshots of QR codes, and to export them back to QR codes if +needed.") + (license license:gpl3+))) (define-public emacs-auth-source-pass (let ((commit "847a1f54ed48856b4dfaaa184583ef2c84173edf") @@ -19391,6 +19538,8 @@ image, rotate it, save modified images, and more.") (sha256 (base32 "1zifiqmpj9j14fnrm3jxapady25m1nlm514nfry0jfrhhikvj6i8")))) + (arguments + '(#:include (cons "^data/" %default-include))) (build-system emacs-build-system) (home-page "https://github.com/purcell/package-lint") (synopsis "Linting library for elisp package authors") @@ -23892,6 +24041,52 @@ convert the resulting @code{.epub} to a @code{.mobi} file. Needs a working zip utility (default is @code{zip}).") (license license:gpl3+))) +(define-public emacs-ox-gemini + ;; No releases yet + (let ((commit "d88c10bcb10fc463fa5a2f6e29c8c94b75a314c0") + (revision "0")) + (package + (name "emacs-ox-gemini") + (version (git-version "0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.sr.ht/~abrahms/ox-gemini") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1f8kbg5vjd1k7fak3v56b77yk612j6vmzx4xzx3m2vq3f0nyxq29")))) + (build-system emacs-build-system) + (home-page "https://sr.ht/~abrahms/ox-gemini") + (synopsis "Export Org files in Gemini format") + (description + "@code{ox-gemini} adds support for exporting Org files in Gemini +format. Many things were taken from the ASCII exporter, from which +@code{ox-gemini} derives.") + (license license:gpl3+)))) + +(define-public emacs-ox-haunt + (package + (name "emacs-ox-haunt") + (version "0.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.sr.ht/~jakob/ox-haunt") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1rs1n228c2fmpvirc57bqgf2616ijpphkgf4w9ln5j46snmkam25")))) + (build-system emacs-build-system) + (home-page "https://git.sr.ht/~jakob/ox-haunt") + (synopsis "Export Org files to HTML appropriate for Haunt") + (description + "This library implements an HTML back-end for the Org generic exporter, +producing output appropriate for Haunt's @code{html-reader}.") + (license license:gpl3+))) + (define-public emacs-ox-hugo (package (name "emacs-ox-hugo") @@ -24350,7 +24545,7 @@ Emacs that integrate with major modes like Org-mode.") (define-public emacs-modus-themes (package (name "emacs-modus-themes") - (version "1.1.1") + (version "1.2.3") (source (origin (method git-fetch) @@ -24359,7 +24554,7 @@ Emacs that integrate with major modes like Org-mode.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1n716nasa1pccz7983kicagc9sqnxlyfmflvifqk4kza2ks0rh9m")))) + (base32 "1l392hz6zs6wg06x2zxnk7s0h5cpmvbkcynh68gjmqjj84l7mqrk")))) (build-system emacs-build-system) (home-page "https://protesilaos.com/modus-themes/") (synopsis "Accessible themes (WCAG AAA)") @@ -26923,15 +27118,15 @@ s-expression.") (define-public emacs-map (package (name "emacs-map") - (version "2.1") + (version "3.0") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/map-" - version ".el")) + version ".tar")) (sha256 (base32 - "0ydz5w1n4vwhhzxxj003s7jv8n1wjijwfryk5z93bwhnr0cak0i0")))) + "00wf8lgh1b1i5l838y6di8194rf5gf5djklkhmxj1nlikz66j2ls")))) (build-system emacs-build-system) (home-page "http://elpa.gnu.org/packages/map.html") (synopsis "Map manipulation functions") @@ -27084,3 +27279,49 @@ and prefered services can easily be configured.") "This package provides an Elisp wrapper around the Java @command{keytool} command and major mode for viewing Java keystores.") (license license:expat)))) + +(define-public emacs-ivy-avy + (package + (name "emacs-ivy-avy") + (version "0.13.4") + (source + (origin + (method url-fetch) + (uri (string-append + "https://elpa.gnu.org/packages/" + "ivy-avy-" version ".tar")) + (sha256 + (base32 "1q5caxm4rnh4jy5n88dhkdbx1afsshmfki5dl8xsqbdb3y0zq7yi")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-ivy" ,emacs-ivy) + ("emacs-avy" ,emacs-avy))) + (home-page "https://github.com/abo-abo/swiper") + (synopsis "Avy integration for Ivy") + (description + "This package adds a \"C-'\" binding to Ivy minibuffer that uses Avy.") + (license license:gpl3+))) + +(define-public emacs-ivy-hydra + (package + (name "emacs-ivy-hydra") + (version "0.13.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://elpa.gnu.org/packages/" + "ivy-hydra-" version ".tar")) + (sha256 + (base32 "06rln9bnq5hli5rqlm47fb68b8llpqrmzwqqv4rn7mx3854i9a5x")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-ivy" ,emacs-ivy) + ("emacs-hydra" ,emacs-hydra))) + (home-page "https://github.com/abo-abo/swiper") + (synopsis "Additional key bindings for Ivy") + (description + "This package provides the `hydra-ivy/body' command, which is a +quasi-prefix map, with many useful bindings. These bindings are +shorter than usual, using mostly unprefixed keys.") + (license license:gpl3+))) diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm index 51ee244f3c..413760ab72 100644 --- a/gnu/packages/embedded.scm +++ b/gnu/packages/embedded.scm @@ -1469,7 +1469,7 @@ and Zilog Z80 families, plus many of their variants.") (define-public sdcc (package (name "sdcc") - (version "4.0.0") + (version "4.1.0") (source (origin (method url-fetch) (uri (string-append @@ -1477,7 +1477,7 @@ and Zilog Z80 families, plus many of their variants.") "/" version "/sdcc-src-" version ".tar.bz2")) (sha256 (base32 - "042fxw5mnsfhpc0z9lxfsw88kdkm32pwrxacp88kj2n2dy0814a8")) + "0gskzli17ghnn5qllvn4d56qf9bvvclqjh63nnj63p52smvggvc1")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm index 5bf1be0af3..74f3f09926 100644 --- a/gnu/packages/emulators.scm +++ b/gnu/packages/emulators.scm @@ -285,7 +285,7 @@ older games.") (define-public qtmips (package (name "qtmips") - (version "0.7.3") + (version "0.7.5") (source (origin (method git-fetch) (uri (git-reference @@ -294,7 +294,7 @@ older games.") (file-name (git-file-name name version)) (sha256 (base32 - "1khvwgqz4h6q6mhbbq0yx43ajz8gx9wmwzs8784vmfrglndbxgax")))) + "1fal7a8y5g0rqqjrk795jh1l50ihz01ppjnrfjrk9vkjbd59szbp")))) (build-system cmake-build-system) (arguments '(#:phases @@ -2083,7 +2083,7 @@ framework based on QEMU.") (define-public ppsspp (package (name "ppsspp") - (version "1.10.3") + (version "1.11.3") (source (origin (method git-fetch) @@ -2091,7 +2091,7 @@ framework based on QEMU.") (url "https://github.com/hrydgard/ppsspp") (commit (string-append "v" version)))) (sha256 - (base32 "0znxlbj6cfw7gn0naay0mzhc0k5saw8nrwpspcn7gap1023p06w2")) + (base32 "1dpxnwvl6jq7z67lbjws4lqc1bxc31xi6ddlmg5n3aig008yi2fp")) (file-name (git-file-name name version)) (patches (search-patches "ppsspp-disable-upgrade-and-gold.patch")) @@ -2102,16 +2102,16 @@ framework based on QEMU.") ;; There are still a number of external sources, that we don't ;; remove here. Some may be packaged, others are not. ;; First, we patch existing sources to include the right headers. - (substitute* (append (list "ext/native/thin3d/vulkan_utils.cpp" - "ext/native/thin3d/thin3d_vulkan.cpp") - (find-files "Common" ".*\\.(h|cpp)") + (substitute* (append (find-files "Common" ".*\\.(h|cpp)") (find-files "Core" ".*\\.(h|cpp)") (find-files "GPU" ".*\\.(h|cpp)") (find-files "SDL" ".*\\.(h|cpp)") (find-files "UI" ".*\\.(h|cpp)")) ;; These headers are all hard-coded in the original source. (("ext/cityhash/") "") - (("ext/glslang/") "") + (("ext/glslang/glslang/") "glslang/") + (("ext/glslang/") "glslang/") + (("ext/miniupnp/") "") (("ext/SPIRV-Cross/") "spirv_cross/") (("ext/vulkan/") "vulkan/") (("ext/xxhash.h") "xxhash.h") @@ -2134,7 +2134,12 @@ framework based on QEMU.") ;; Don't search for cityhash/xxhash, we already have them. (("add_library\\((city|xx)hash STATIC") "if()\nendif(") (("ext/xxhash\\.[ch]") "") - (("ext/native/ext/cityhash/.*\\.(cpp|h)") "") + (("ext/cityhash/.*\\.(cpp|h)") "") + (("if\\(USE_MINIUPNPC\\)" all) + (string-append all " +find_package(miniupnpc) +target_link_libraries(${CoreLibName} miniupnpc ${LDLIBS}) +elseif(FALSE)")) ;; Link all of spirv-cross. (("spirv-cross-glsl" all) (string-append all @@ -2147,12 +2152,12 @@ framework based on QEMU.") (("add_subdirectory\\(SPIRV-Cross-build\\)") "")) ;; Finally, we can delete the bundled sources. (for-each delete-file-recursively - '("ext/cmake" + '("MoltenVK" + "ext/cmake" "ext/glew" "ext/glslang" "ext/glslang-build" - "ext/native/ext/cityhash" - "ext/native/ext/libpng17" - "ext/native/ext/libzip" + "ext/miniupnp" "ext/miniupnp-build" + "ext/native" "ext/snappy" "ext/SPIRV-Cross" "ext/SPIRV-Cross-build" "ext/vulkan" @@ -2175,6 +2180,7 @@ framework based on QEMU.") ("libpng" ,libpng) ("libzip" ,libzip) ("mesa" ,mesa) + ("miniupnpc" ,miniupnpc) ("sdl2" ,sdl2) ("snappy" ,snappy) ("spirv-cross" ,spirv-cross) @@ -2185,24 +2191,24 @@ framework based on QEMU.") ;; TODO: unbundle armips. ("armips-source" ,(package-source armips)) ("lang" - ,(let ((commit "1c64b8fbd3cb6bd87935eb53f302f7de6f86e209")) + ,(let ((commit "6bd5b4bc983917ea8402f73c726b46e36f3de0b4")) (origin (method git-fetch) (uri (git-reference (url "https://github.com/hrydgard/ppsspp-lang") (commit commit))) (sha256 - (base32 "0rprn3yd8xfrvi0fm62sgpqa8n73jk7zmlscp8cp0h2fawqpiamd")) + (base32 "08npr3a4xskf85gnlxidl4ksc3rhc7m5rgnj7vsbjvhvw5ap02qx")) (file-name (git-file-name "ppsspp-lang" commit))))) ("tests" - ,(let ((commit "328b839c7243e7f733f9eae88d059485e3d808e7")) + ,(let ((commit "1047400eaec6bcbdb2a64d326375ef6a6617c4ac")) (origin (method git-fetch) (uri (git-reference (url "https://github.com/hrydgard/pspautotests") (commit commit))) (sha256 - (base32 "1gj1kr5ijxrqwvz7c41phskjr70ndp8iz0gr8c3xxsd8p9z5gdvm")) + (base32 "0nxv1lskcr8zbg6nrfai21mxsw0n5vaqhbsa41c3cxfyx5c4w2pg")) (file-name (git-file-name "pspautotests" commit))))))) (arguments `(#:out-of-source? #f @@ -2225,13 +2231,23 @@ framework based on QEMU.") (copy-recursively (assoc-ref inputs "lang") "assets/lang") #t)) + (add-after 'unpack 'fix-unittest-build + (lambda _ + (substitute* "CMakeLists.txt" + (("unittest/TestVertexJit.cpp" all) + (string-append all " unittest/TestShaderGenerators.cpp"))) + (substitute* "unittest/TestVertexJit.cpp" + (("#include \"unittest/UnitTest.h\"" all) + (string-append all "\n#include <cmath>"))) + #t)) (replace 'check (lambda _ (for-each (lambda (t) (invoke "./unitTest" t)) '("Arm64Emitter" "ArmEmitter" "X64Emitter" "VertexJit" "Asin" - "SinCos" "VFPUSinCos" "MathUtil" "Parsers" "Jit" - "MatrixTranspose" "ParseLBN" "QuickTexHash" "CLZ" "MemMap")) + "SinCos" #|"VFPUSinCos" SIGSEGV|# "MathUtil" "Parsers" "Jit" + "MatrixTranspose" "ParseLBN" "QuickTexHash" "CLZ" + #|"ShaderGenerators"|#)) (invoke "python3" "test.py" "-g") #t)) (replace 'install diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index af7bca0703..d7c9f9f142 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -22,6 +22,7 @@ ;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2020, 2021 Morgan Smith <Morgan.J.Smith@outlook.com> ;;; Copyright © 2021 qblade <qblade@protonmail.com> +;;; Copyright © 2021 Gerd Heber <gerd.heber@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -127,7 +128,7 @@ (define-public librecad (package (name "librecad") - (version "2.1.3") + (version "2.2.0-rc2") (source (origin (method url-fetch) (uri (string-append @@ -136,7 +137,7 @@ (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "01nvc1g3si05r5np1pzn62ah9w84p8nxa32wqrjh6gdi17jfvi3l")))) + "0a7fzhxkkn2s3hkgqrw3s3wyspzfla3c5lgbsjyqzvlnrp3anxnm")))) (build-system gnu-build-system) (arguments '(#:phases @@ -2458,7 +2459,7 @@ engineers for reverse engineers.") (define-public lib3mf (package (name "lib3mf") - (version "1.8.1") + (version "2.1.1") (source (origin (method git-fetch) @@ -2467,20 +2468,21 @@ engineers for reverse engineers.") (file-name (git-file-name name version)) (sha256 (base32 - "11wpk6n9ga2p57h1dcrp37w77mii0r7r6mlrgmykf7rvii1rzgqd")))) + "1417xlxc1y5jnipixhbjfrrjgkrprbbraj8647sff9051m3hpxc3")))) (build-system cmake-build-system) + (arguments + `(#:configure-flags (list "-DUSE_INCLUDED_ZLIB=0" + "-DUSE_INCLUDED_LIBZIP=0" + "-DUSE_INCLUDED_GTEST=0" + "-DUSE_INCLUDED_SSL=0"))) (native-inputs - `(("googletest-source" ,(package-source googletest)))) + `(("googletest" ,googletest) + ("pkg-config" ,pkg-config))) (inputs - `(("libuuid" ,util-linux "lib"))) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'unpack-googletest - (lambda* (#:key inputs #:allow-other-keys) - (copy-recursively (assoc-ref inputs "googletest-source") - "UnitTests/googletest") - #t))))) + `(("libuuid" ,util-linux "lib") + ("libzip" ,libzip) + ("libressl" ,libressl) + ("zlib" ,zlib))) (synopsis "Implementation of the 3D Manufacturing Format (3MF) file standard") (description "Lib3MF is a C++ implementation of the 3D Manufacturing Format (3MF) file @@ -2553,7 +2555,18 @@ specification can be downloaded at @url{http://3mf.io/specification/}.") "echotest_allexpressions" "lazyunion-*" "pdfexporttest_centered" - "pdfexporttest_simple-pdf") + "pdfexporttest_simple-pdf" + + ;; Broken due since cgal@5.2 + + ;; https://github.com/CGAL/cgal/pull/5371 (security) + ;; FIXME: Investigate or wait for future releases to + ;; fix it. + ;; Unsure if wrong test-suite or wrong security + ;; patch. + "cgalpngtest_nef3_broken" + "opencsgtest_nef3_broken" + "csgpngtest_nef3_broken" + "throwntogethertest_nef3_broken") "|"))) ;; strip python test files since lib dir ends up in out/share (for-each delete-file @@ -2949,18 +2962,14 @@ GUI.") (define-public poke (package (name "poke") - (version "1.0") + (version "1.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/poke/poke-" version ".tar.gz")) (sha256 (base32 - "02jvla69xd0nnlg2bil2vxxxglqgylswml6h5hy2nxy0023hp4yy")))) - - ;; XXX: Version 1.0 only supports 64-bit systems. - (supported-systems '("x86_64-linux" "aarch64-linux")) - + "1mkaq19a8d951n9l6d3f8rwq45a7gkr05snb285idd21qxixys6d")))) (build-system gnu-build-system) ;; The GUI, which we elide, requires tcl and tk. (native-inputs `(("bison" ,bison) @@ -3024,3 +3033,39 @@ and drilling of PCBs. It takes Gerber files as input and outputs G-code files for the milling of PCBs. It also includes an autoleveller for the automatic dynamic calibration of the milling depth.") (license license:gpl3+))) + +(define-public syscall-intercept + ;; Upstream provides no tag. Also, last version update is 4 years old. + (let ((commit "304404581c57d43478438d175099d20260bae74e") + (revision "0")) + (package + (name "syscall-intercept") + (version (git-version "0.1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/pmem/syscall_intercept/") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "17sw78xp5wjzv25adpbq3khl8fi0avj7bgpi57q3jnvl3c68xy5z")))) + (native-inputs + `(("perl" ,perl) + ("pkg-config" ,pkg-config))) + (inputs + `(("capstone" ,capstone))) + (build-system cmake-build-system) + (arguments + `(#:build-type "Release" + ;; FIXME: "syscall_format_logging" test fails. + #:tests? #f)) + (home-page "https://github.com/pmem/syscall_intercept") + (synopsis "System call intercepting library") + (description + "The system call intercepting library provides a low-level interface +for hooking Linux system calls in user space. This is achieved by +hot-patching the machine code of the standard C library in the memory of +a process.") + (license license:bsd-2)))) diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index d2769a4d76..15ea89454f 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm @@ -567,14 +567,14 @@ directories. (define-public evisum (package (name "evisum") - (version "0.5.8") + (version "0.5.11") (source (origin (method url-fetch) (uri (string-append "https://download.enlightenment.org/rel/apps/" "evisum/evisum-" version ".tar.xz")) (sha256 - (base32 "0cg4vqd069h89k3wrvl550p29y3yzbdnvii58gwc8rghwym621jx")))) + (base32 "0cbfg393nlf0k91a2hdlyakns3dpzvs3isd95dm3zizydyf9h8wc")))) (build-system meson-build-system) (arguments '(#:tests? #f)) ; no tests diff --git a/gnu/packages/esolangs.scm b/gnu/packages/esolangs.scm index 676b355e65..45feedfa28 100644 --- a/gnu/packages/esolangs.scm +++ b/gnu/packages/esolangs.scm @@ -1,4 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2016 Nikita <nikita@n0.is> +;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Hendursaga <hendursaga@yahoo.com> ;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at> ;;; @@ -22,6 +24,8 @@ #:use-module (gnu packages bison) #:use-module (gnu packages flex) #:use-module (gnu packages ncurses) + #:use-module (gnu packages python) + #:use-module (gnu packages readline) #:use-module (guix build-system cmake) #:use-module (guix build-system copy) #:use-module (guix build-system gnu) @@ -56,6 +60,39 @@ written in C. It supports several @dfn{fingerprints} (opt-in language extension identified by unique ID codes).") (license license:gpl3))) +(define-public lolcode-lci + (package + (name "lolcode-lci") + (version "0.11.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/justinmeza/lci") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0syw60b93iajgh91ffchirwwhm2kix2753ibx845kyrhzggmdh2l")))) + (build-system cmake-build-system) + (inputs + `(("readline" ,readline))) + (native-inputs + `(("python-2" ,python-2))) ; for the tests + (synopsis "LOLCODE interpreter written in C") + (description + "@code{lci} is a LOLCODE interpreter written in C and is designed to be +correct, portable, fast, and precisely documented. +@enumerate +@item correct: Every effort has been made to test lci's conformance to the +LOLCODE language specification. Unit tests come packaged with the lci source code. +@item portable: lci follows the widely ported ANSI C specification allowing it +to compile on a broad range of systems. +@item fast: Much effort has gone into producing simple and efficient code +whenever possible to the extent that the above points are not compromized. +@end enumerate") + (home-page "http://lolcode.org/") + (license license:gpl3+))) + (define-public shakespeare-spl (package (name "shakespeare-spl") diff --git a/gnu/packages/fcitx5.scm b/gnu/packages/fcitx5.scm index 79d5799774..cae8a74289 100644 --- a/gnu/packages/fcitx5.scm +++ b/gnu/packages/fcitx5.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com> +;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -51,7 +52,7 @@ (define-public xcb-imdkit (package (name "xcb-imdkit") - (version "1.0.2") + (version "1.0.3") (source (origin (method url-fetch) @@ -59,7 +60,7 @@ "https://download.fcitx-im.org/fcitx5/xcb-imdkit/xcb-imdkit-" version ".tar.xz")) (sha256 - (base32 "16f7jdnrr8lrll7qvnj0gh3gwzgn5idfsc9rwi1gp1n2mnjrs7w0")) + (base32 "1s58vjkdrgr8h183jz4b4mjn7pbvdc9cli01cn66mgczl9p65hh9")) (modules '((guix build utils))) (snippet '(begin @@ -86,7 +87,7 @@ client.") (define-public fcitx5 (package (name "fcitx5") - (version "5.0.4") + (version "5.0.5") (source (origin (method url-fetch) @@ -94,7 +95,7 @@ client.") "https://download.fcitx-im.org/fcitx5/fcitx5/fcitx5-" version "_dict.tar.xz")) (sha256 - (base32 "14pqbjbdc3b5xlycm92gs1rgkmpykfnyls3gfr608902lk2lw5as")))) + (base32 "16j716xawbszkb3fxzpdza1a4czh0fvkysikjc9bfyvbwp72p6an")))) (build-system cmake-build-system) (arguments `(#:configure-flags @@ -171,14 +172,14 @@ client.") (define-public libime (package (name "libime") - (version "1.0.3") + (version "1.0.5") (source (origin (method url-fetch) (uri (string-append "https://download.fcitx-im.org/fcitx5/libime/libime-" version "_dict.tar.xz")) (sha256 - (base32 "1gi9ylqha9x3dhjsa2i7x9wh2g9vgqkkfr6s1facs2ky65vgvdrv")))) + (base32 "1w3cxk11kbfmz7snivxq948zfav6dy2245j12ghlxcmdxjshrlhq")))) (build-system cmake-build-system) (inputs `(("fcitx5" ,fcitx5) @@ -249,7 +250,7 @@ for GTK+2/GTK+3 application.") (define-public fcitx5-qt (package (name "fcitx5-qt") - (version "5.0.2") + (version "5.0.5") (source (origin (method url-fetch) @@ -257,7 +258,7 @@ for GTK+2/GTK+3 application.") "/fcitx5-qt/fcitx5-qt-" version ".tar.xz")) (sha256 - (base32 "15rn111mrp6lcgm0ka3vb6a6qwkv6kqkqn563wsm49n16iy1dhqj")))) + (base32 "0vsvrfv0b21pfrz5n0v6p458vfr8k7km50h9bhjp1bnssampjfsb")))) (build-system cmake-build-system) (arguments `(#:configure-flags diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm index 866e9e5392..198653c639 100644 --- a/gnu/packages/file-systems.scm +++ b/gnu/packages/file-systems.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org> ;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com> ;;; Copyright © 2021 raid5atemyhomework <raid5atemyhomework@protonmail.com> +;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at> ;;; ;;; This file is part of GNU Guix. ;;; @@ -151,14 +152,14 @@ large and/or frequently changing (network) environment.") (define-public bindfs (package (name "bindfs") - (version "1.14.8") + (version "1.15.1") (source (origin (method url-fetch) (uri (string-append "https://bindfs.org/downloads/bindfs-" version ".tar.gz")) (sha256 (base32 - "15y4brlcrqhxl6z73785m0dr1vp2q3wc6xss08x9jjr0apzmmjp5")))) + "1av8dj9i1g0105fs5r9srqqsp7yahlhwc0yl8i1szyfdls23bp84")))) (build-system gnu-build-system) (arguments ;; XXX: The tests have no hope of passing until there is a "nogroup" @@ -264,7 +265,7 @@ always possible.") (define-public fsarchiver (package (name "fsarchiver") - (version "0.8.5") + (version "0.8.6") (source (origin (method git-fetch) @@ -274,7 +275,7 @@ always possible.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1rvwq5v3rl14bqxjm1ibfapyicf0sa44nw7451v10kx39lp56ylp")))) + (base32 "1ry2sdkfbg4bwcldk42g1i3wa3z4pr9yh9dil6ilhwcvhqiw41zc")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) @@ -849,7 +850,7 @@ APFS.") (define-public zfs (package (name "zfs") - (version "2.0.3") + (version "2.0.4") (outputs '("out" "module" "src")) (source (origin @@ -858,7 +859,7 @@ APFS.") "/download/zfs-" version "/zfs-" version ".tar.gz")) (sha256 - (base32 "0fg5hz1yy2z5ah0hzjv3xy5vcg1c214rps90dr80lfkalx5gd506")))) + (base32 "0v2zshimz5miyj8mbskb52pnzyl1s4rhpr6208zq549v8g2l84vx")))) (build-system linux-module-build-system) (arguments `(;; The ZFS kernel module should not be downloaded since the license @@ -968,9 +969,9 @@ APFS.") ("util-linux:lib" ,util-linux "lib") ("zlib" ,zlib))) (home-page "https://zfsonlinux.org/") - (synopsis "Native ZFS on Linux") + (synopsis "OpenZFS on Linux") (description - "ZFS on Linux is an advanced file system and volume manager which was + "OpenZFS is an advanced file system and volume manager which was originally developed for Solaris and is now maintained by the OpenZFS community.") (license license:cddl1.0))) @@ -978,7 +979,7 @@ community.") (define-public mergerfs (package (name "mergerfs") - (version "2.31.0") + (version "2.32.4") (source (origin (method url-fetch) @@ -986,7 +987,7 @@ community.") version "/mergerfs-" version ".tar.gz")) (sha256 (base32 - "0k4asbg5n9dhy5jpjkw6simqqnr1zira2y4i71cq05091dfwm90p")))) + "0yz7nljx6axcj6hb09sgc0waspgfhp535228rjqvqgyd8y74jc3s")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; No tests exist. @@ -1174,7 +1175,16 @@ local file system using FUSE.") (build-system go-build-system) (arguments `(#:import-path "github.com/oniony/TMSU" - #:unpack-path "..")) + #:unpack-path ".." + #:install-source? #f + #:phases + (modify-phases %standard-phases + (add-after 'install 'post-install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + ;; The go build system produces /bin/TMSU -> install as /bin/tmsu + (rename-file (string-append out "/bin/TMSU") + (string-append out "/bin/tmsu")))))))) (inputs `(("go-github-com-mattn-go-sqlite3" ,go-github-com-mattn-go-sqlite3) ("go-github-com-hanwen-fuse" ,go-github-com-hanwen-fuse))) diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm index 7686f60675..3ccc077b94 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -22,6 +22,7 @@ ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2020 Carlo Holl <carloholl@gmail.com> ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> +;;; Copyright © 2021 ZmnSCPxj jxPCSnmZ <ZmnSCPxj@protonmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -52,6 +53,7 @@ #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system go) #:use-module (guix build-system qt) + #:use-module (guix deprecation) #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages aidc) @@ -108,10 +110,10 @@ #:use-module (gnu packages xml) #:use-module (gnu packages gnuzilla)) -(define-public bitcoin-core +(define-public bitcoin-core-0.21 (package (name "bitcoin-core") - (version "0.20.1") + (version "0.21.0") (source (origin (method url-fetch) (uri @@ -119,7 +121,7 @@ version "/bitcoin-" version ".tar.gz")) (sha256 (base32 - "0y5rad68b398arh0abr2wgiwybdw0i5a4dxz9s3fk9fgdbyn5gab")))) + "0dszcn4r43w0ffsmgwmyzkzr5lqws3bbhlkssmjgnjgfc8n2148s")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) @@ -186,6 +188,24 @@ of the bitcoin protocol. This package provides the Bitcoin Core command line client and a client based on Qt.") (license license:expat))) +(define-public bitcoin-core-0.20 + (package + (inherit bitcoin-core-0.21) + (version "0.20.1") + (source (origin + (method url-fetch) + (uri + (string-append "https://bitcoincore.org/bin/bitcoin-core-" + version "/bitcoin-" version ".tar.gz")) + (sha256 + (base32 + "0y5rad68b398arh0abr2wgiwybdw0i5a4dxz9s3fk9fgdbyn5gab")))))) + +;; The support lifetimes for bitcoin-core versions can be found in +;; <https://bitcoincore.org/en/lifecycle/#schedule>. + +(define-public bitcoin-core bitcoin-core-0.21) + (define-public hledger (package (name "hledger") @@ -559,7 +579,7 @@ other machines/servers. Electrum does not download the Bitcoin blockchain.") (define-public electron-cash (package (name "electron-cash") - (version "4.2.3") + (version "4.2.4") (source (origin (method git-fetch) @@ -568,7 +588,7 @@ other machines/servers. Electrum does not download the Bitcoin blockchain.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1q18p86a3a3wpf9nbpymhyilmaw9vffvwxh4hhx29bywfzvav11f")))) + (base32 "1a4jqsfadv6xr7ydj79my71jyrp0sjlznsbxdxjsjgnsqk8r48w6")))) (build-system python-build-system) (inputs `(("libevent" ,libevent) @@ -1109,13 +1129,13 @@ Luhn and family of ISO/IEC 7064 check digit algorithms. ") (define-public python-duniterpy (package (name "python-duniterpy") - (version "0.61.0") + (version "0.62.0") (source (origin (method url-fetch) (uri (pypi-uri "duniterpy" version)) (sha256 - (base32 "1dr5zx7hi1ps36p1zw2n66lmikp2frwi3sp4rf2zyd216dl3r1jp")))) + (base32 "1ldiw5j2g92cib9v06kgv4z8dw2zi0x1dmpisf8w78h4kg6712w1")))) (build-system python-build-system) (arguments ;; FIXME: Tests fail with: "TypeError: block_uid() missing 1 required diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index bb0270466a..b78c46b0f8 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -82,7 +82,7 @@ (define-public font-ibm-plex (package (name "font-ibm-plex") - (version "4.0.2") + (version "5.1.3") (source (origin (method url-fetch) (uri (string-append @@ -90,7 +90,7 @@ "v" version "/OpenType.zip")) (sha256 (base32 - "17bd84ic7z9hkcjy4bwnh4z51bnkh2vrjzwvs9g6lwzmxjswa5b6")))) + "0zlz8kxx54i4hpgaip9690bilvn5w14gp7jjkk6cz4h9p3xml231")))) (build-system font-build-system) (home-page "https://github.com/IBM/plex") (synopsis "IBM Plex typeface") @@ -221,7 +221,7 @@ Cyrillic, Canadian Syllabics and most Latin based languages are supported.") (define-public font-cantarell (package (name "font-abattis-cantarell") - (version "0.201") + (version "0.301") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/cantarell-fonts/" @@ -229,7 +229,7 @@ Cyrillic, Canadian Syllabics and most Latin based languages are supported.") "/cantarell-fonts-" version ".tar.xz")) (sha256 (base32 - "0qwqmkczqy09fdj8l11nr841ks0dwsydqg55qyms12m4yvjn87xn")))) + "10sycxscs9kzl451mhygyj2qj8qlny8pamskb86np7izq05dnd9x")))) (build-system meson-build-system) (native-inputs `(("gettext" ,gettext-minimal))) ; for msgfmt @@ -334,14 +334,15 @@ The Lato 2.010 family supports more than 100 Latin-based languages, over (define-public font-liberation (package (name "font-liberation") - (version "2.1.2") + (version "2.1.3") (source (origin (method url-fetch) - (uri (string-append "https://github.com/liberationfonts/liberation-fonts/" - "files/5722233/liberation-fonts-ttf-" version ".tar.gz")) + (uri (string-append + "https://github.com/liberationfonts/liberation-fonts/" + "files/6060976/liberation-fonts-ttf-" version ".tar.gz")) (sha256 - (base32 "1q7qx9bpn1gqjh1zbb8n9fkzwz8skn41hyy61186g4c3y8q4js8l")))) + (base32 "0bv8i47iq2irxkkjlqwdli4zz01sb1qg2n6vbdqjrqqhx912zji2")))) (build-system font-build-system) (home-page "https://github.com/liberationfonts") (synopsis "Fonts compatible with Arial, Times New Roman, and Courier New") @@ -357,9 +358,7 @@ Bitstream Vera Sans); Bitstream Vera Serif); @item Mono (a substitute for Courier New, Cumberland, Courier, Nimbus Mono L, and Bitstream Vera Sans Mono). -@end enumerate - -The Liberation Fonts are sponsored by Red Hat.") +@end enumerate\n") (license license:silofl1.1))) (define-public font-linuxlibertine @@ -409,7 +408,7 @@ Biolinum is available in both Regular and Bold weights.") (define-public font-libertinus (package (name "font-libertinus") - (version "6.12") + (version "7.040") (source (origin (method url-fetch) @@ -417,7 +416,7 @@ Biolinum is available in both Regular and Bold weights.") "/download/v" version "/libertinus-" version ".zip")) (sha256 - (base32 "06pcsd5pijjid7xjxak35jla089krm5hqnbglv8ldncq475q7kb2")))) + (base32 "1xkj993hwkr49q63dd2dnkvdkm9sckxm3zjwhdxsxn21fi80ikic")))) (build-system font-build-system) (home-page "https://github.com/alerque/libertinus") (synopsis "Font family based on Linux Libertine") @@ -1756,7 +1755,7 @@ files (TTF).") (define-public font-mononoki (package (name "font-mononoki") - (version "1.2") + (version "1.3") (source (origin (method git-fetch) (uri (git-reference @@ -1764,9 +1763,15 @@ files (TTF).") (commit version))) (sha256 (base32 - "1rkzyxn30rn8qv2h2xz324j7q15hzg2lci8790a7cdl1dfgic4xi")) + "07gh84iw84g8fha3gx4yjyl1rsksqhy2kk38f01m048sgjp6ww5j")) (file-name (git-file-name name version)))) (build-system font-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'make-files-writable + (lambda _ + (for-each make-file-writable (find-files "."))))))) (synopsis "Font for programming and code review") (description "Mononoki is a typeface by Matthias Tellen, created to enhance code diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm index bee87d9311..8c2325842f 100644 --- a/gnu/packages/fpga.scm +++ b/gnu/packages/fpga.scm @@ -502,7 +502,7 @@ using different abstraction levels.") (define-public verilator (package (name "verilator") - (version "4.108") + (version "4.110") (source (origin (method git-fetch) @@ -511,7 +511,7 @@ using different abstraction levels.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0kcs0p8i2hiw348xqqh49pmllqspbzh2ljwmia03b42md5h4x5vf")))) + (base32 "1lm2nyn7wzxj5y0ffwazhb4ygnmqf4d61sl937vmnmrpvdihsrrq")))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index e00454f7b3..4105dd7ca0 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -58,8 +58,10 @@ #:use-module (gnu packages bash) #:use-module (gnu packages boost) #:use-module (gnu packages check) + #:use-module (gnu packages cmake) #:use-module (gnu packages compression) #:use-module (gnu packages cryptsetup) + #:use-module (gnu packages databases) #:use-module (gnu packages disk) #:use-module (gnu packages docbook) #:use-module (gnu packages documentation) @@ -75,6 +77,7 @@ #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) #:use-module (gnu packages image) + #:use-module (gnu packages language) #:use-module (gnu packages libffi) #:use-module (gnu packages libunwind) #:use-module (gnu packages libusb) @@ -101,6 +104,101 @@ #:use-module (gnu packages xorg) #:use-module (srfi srfi-1)) +(define-public appstream + (package + (name "appstream") + (version "0.13.1") + (source + (origin + (method url-fetch) + (uri + (string-append "https://www.freedesktop.org/software/" + "appstream/releases/" + "AppStream-" version ".tar.xz")) + (sha256 + (base32 "09l6ixz1w29pi0nb0flz14m4r3f2hpqpp1fq8y66v9xa4c9fczds")))) + (build-system meson-build-system) + (arguments + `(#:glib-or-gtk? #t + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-libstemmer + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "meson.build" + (("/usr/include") + (string-append (assoc-ref inputs "libstemmer") + "/include"))) + #t)) + (add-after 'patch-libstemmer 'patch-docbook-xml + (lambda* (#:key inputs #:allow-other-keys) + (with-directory-excursion "docs/api" + (substitute* "appstream-docs.xml" + (("http://www.oasis-open.org/docbook/xml/4.3/") + (string-append (assoc-ref inputs "docbook-xml-4.3") + "/xml/dtd/docbook/")))) + (for-each (lambda (file) + (substitute* file + (("http://www.oasis-open.org/docbook/xml/4.5/") + (string-append (assoc-ref inputs "docbook-xml") + "/xml/dtd/docbook/")))) + (find-files "scripts/desc" "\\.xml$")) + #t)) + (add-after 'patch-docbook-xml 'disable-failing-tests + (lambda _ + (substitute* "tests/test-pool.c" + (("[ \t]*g_test_add_func \\(\"/AppStream/PoolRead?.*;") + "") + (("[ \t]*g_test_add_func \\(\"/AppStream/PoolReadAsync?.*;") + "") + (("[ \t]*g_test_add_func \\(\"/AppStream/PoolEmpty?.*;") + "") + (("[ \t]*g_test_add_func \\(\"/AppStream/Cache?.*;") + "") + (("[ \t]*g_test_add_func \\(\"/AppStream/Merges?.*;") + "")) + #t)) + (add-after 'disable-failing-tests 'patch-install-dir + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "data/meson.build" + (("/etc") + (string-append (assoc-ref outputs "out") + "/etc"))) + #t))))) + (native-inputs + `(("cmake" ,cmake) + ("docbook-xml-4.3" ,docbook-xml-4.3) + ("docbook-xml" ,docbook-xml) + ("docbook-xsl" ,docbook-xsl) + ("gettext" ,gettext-minimal) + ("glib:bin" ,glib "bin") + ("gobject-introspection" ,gobject-introspection) + ("gperf" ,gperf) + ("gtk-doc" ,gtk-doc) + ("pkg-config" ,pkg-config) + ("python" ,python-wrapper) + ("xsltproc" ,libxslt))) + (inputs + `(("libsoup" ,libsoup) + ("libstemmer" ,libstemmer) + ("libxml2" ,libxml2) + ("libyaml" ,libyaml) + ("lmdb" ,lmdb))) + (propagated-inputs + `(("glib" ,glib))) + (synopsis "Tools and libraries to work with AppStream metadata") + (description "AppStream is a cross-distribution effort for enhancing the way +we interact with the software repositories provided by distributions by +standardizing software component metadata. It provides the foundation to build +software-center applications, by providing metadata necessary for an +application-centric view on package repositories. It additionally provides +specifications for things like an unified software metadata database, screenshot +services and various other things needed to create user-friendly +application-centers for distributions.") + (home-page "https://www.freedesktop.org/wiki/Distributions/AppStream/") + ;; XXX: meson.build claims both, headers just indicate lgpl2.1+ + ;; there are also some (irrelevant) wtfpl2 examples + (license (list license:gpl2+ license:lgpl2.1+)))) + (define-public farstream (package (name "farstream") @@ -410,7 +508,7 @@ other applications that need to directly deal with input devices.") (license license:x11))) (define-public libinput-minimal - (package (inherit libinput) + (package/inherit libinput (name "libinput-minimal") (inputs (fold alist-delete (package-inputs libinput) diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index 68ed9b2364..1ae69d5c4d 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -529,7 +529,7 @@ clone.") all))) #t)))))) (native-inputs - `(("autoconf" ,autoconf-wrapper) + `(("autoconf" ,autoconf) ("automake" ,automake) ("guile" ,guile-3.0) ("pkg-config" ,pkg-config) @@ -638,7 +638,7 @@ sounds from presets such as \"explosion\" or \"powerup\".") (define-public surgescript (package (name "surgescript") - (version "0.5.4.4") + (version "0.5.5") (source (origin (method git-fetch) @@ -647,12 +647,13 @@ sounds from presets such as \"explosion\" or \"powerup\".") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1vck1wk6r6jrrw5xzpqldplz601dfgpk5s5p45fam00nfsid0p7p")))) + (base32 "0xwd4g7n0b0rxkpbyshkzyl472h1y606ghyvf8gv034n3jz2g4jk")))) (build-system cmake-build-system) (arguments '(#:configure-flags (let ((share (string-append (assoc-ref %outputs "out") "/share"))) - (list (string-append "-DICON_PATH=" share "/pixmaps") + (list "-DWANT_STATIC=NO" + (string-append "-DICON_PATH=" share "/pixmaps") (string-append "-DMETAINFO_PATH=" share "/metainfo"))) #:tests? #f)) (home-page "https://docs.opensurge2d.org") @@ -2393,7 +2394,7 @@ game engine. id Tech 2 is the engine originally behind Quake 2.") (define-public dhewm3 (package (name "dhewm3") - (version "1.5.0") + (version "1.5.1") (source (origin (method url-fetch) (uri (string-append @@ -2401,7 +2402,7 @@ game engine. id Tech 2 is the engine originally behind Quake 2.") version "/dhewm3-" version "-src.tar.xz")) (sha256 (base32 - "0dmd1876az5q8gbjrd1jk8zidz11ydj607z3m8m5kvw2yj136jzv")))) + "0s2brx6wyljhjbpli97iy4lc4fqqsvdc09raz8njg0vgzcsiyrri")))) (build-system cmake-build-system) (arguments `(#:tests? #f ; No tests. diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index f6982b5095..9fbfad040e 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -3464,7 +3464,7 @@ match, cannon keep, and grave-itation pit.") (define-public minetest (package (name "minetest") - (version "5.3.0") + (version "5.4.0") (source (origin (method git-fetch) (uri (git-reference @@ -3473,7 +3473,7 @@ match, cannon keep, and grave-itation pit.") (file-name (git-file-name name version)) (sha256 (base32 - "03ga3j3cg38w4lg4d4qxasmnjdl8n3lbizidrinanvyfdyvznyh6")) + "1a17g6cmxrscnqwpwrd4w2ck3dgvplyfq4kzyimilfpqar1q69j9")) (modules '((guix build utils))) (snippet '(begin @@ -3482,7 +3482,7 @@ match, cannon keep, and grave-itation pit.") #t)))) (build-system cmake-build-system) (arguments - '(#:configure-flags + `(#:configure-flags (list "-DRUN_IN_PLACE=0" "-DENABLE_FREETYPE=1" "-DENABLE_GETTEXT=1" @@ -3493,7 +3493,27 @@ match, cannon keep, and grave-itation pit.") (string-append "-DCURL_INCLUDE_DIR=" (assoc-ref %build-inputs "curl") "/include/curl")) - #:tests? #f)) ;no check target + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-sources + (lambda _ + (substitute* "src/CMakeLists.txt" + (("set\\(EXECUTABLE_OUTPUT_PATH .*\\)") "")) + (substitute* "src/unittest/test_servermodmanager.cpp" + ;; do no override MINETEST_SUBGAME_PATH + (("(un)?setenv\\(\"MINETEST_SUBGAME_PATH\".*\\);") + "(void)0;")) + (setenv "MINETEST_SUBGAME_PATH" + (string-append (getcwd) "/games")) ; for check + #t)) + (replace 'check + (lambda _ + ;; Thanks to our substitutions, the tests should also run + ;; when invoked on the target outside of `guix build'. + (unless ,(%current-target-system) + (setenv "HOME" "/tmp") + (invoke "src/minetest" "--run-unittests")) + #t))))) (native-search-paths (list (search-path-specification (variable "MINETEST_SUBGAME_PATH") @@ -3541,7 +3561,7 @@ in different ways.") (file-name (git-file-name name version)) (sha256 (base32 - "1liciwlh013z5h08ib0psjbwn5wkvlr937ir7kslfk4vly984cjx")))) + "11dz36z0pj2r7i8xm8v5lskzws81ckj6sc0avlmvdl8qdc9x83w5")))) (build-system trivial-build-system) (native-inputs `(("source" ,source))) @@ -3566,7 +3586,7 @@ in different ways.") (define-public minetest-mineclone (package (name "minetest-mineclone") - (version "0.66.2") + (version "0.71.0") (source (origin (method git-fetch) (uri (git-reference @@ -3575,7 +3595,7 @@ in different ways.") (file-name (git-file-name name version)) (sha256 (base32 - "0miszzlzplpvaj0j1yii9867ydr42wsaqa9g6grxdrci75p05g00")))) + "0qm809dqvxc7pa1cr9skmglq9vrbq5hhm4c4m5yi46ldh1v96dgf")))) (build-system copy-build-system) (arguments `(#:install-plan @@ -4071,7 +4091,7 @@ falling, themeable graphics and sounds, and replays.") (define-public wesnoth (package (name "wesnoth") - (version "1.14.15") + (version "1.14.16") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-" @@ -4080,7 +4100,7 @@ falling, themeable graphics and sounds, and replays.") "wesnoth-" version ".tar.bz2")) (sha256 (base32 - "05iapxj3nzaqh10y42yq1jf7spxgm4iwjw4qj1c4lnb25xp4mc2h")))) + "1d9hq3dcx0sgs2v4400rg2nw98v46m7bwiqqjv8z8n7vw8kx8lhg")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ;no check target @@ -6301,14 +6321,14 @@ with the mouse isn’t always trivial.") (define-public chroma (package (name "chroma") - (version "1.17") + (version "1.18") (source (origin (method url-fetch) (uri (string-append "http://level7.org.uk/chroma/download/chroma-" version ".tar.bz2")) (sha256 (base32 - "047sf00x71xbmi8bqrhfbmr9bk89l2gbykkqsfpw4wz6yfjscs6y")))) + "12bjisf5nlqinw8n4r223vld52p0p2mw3fca92vi175c46bycbzn")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no tests included diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 9b2a5556f6..061bd86261 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -3,13 +3,14 @@ ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015, 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> -;;; Copyright © 2015, 2016, 2017, 2018, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2015, 2016, 2017, 2018, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Carlos Sánchez de La Lama <csanchezdll@gmail.com> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2020 Joseph LaFreniere <joseph@lafreniere.xyz> ;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org> ;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com> +;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -273,6 +274,14 @@ where the OS part is overloaded to denote a specific ABI---into GCC ~a" libc line)))) + ;; TODO: Make this unconditional in core-updates. + ,@(if (target-powerpc?) + `((when (file-exists? "gcc/config/rs6000") + ;; Force powerpc libdir to be /lib and not /lib64 + (substitute* (find-files "gcc/config/rs6000") + (("/lib64") "/lib")))) + `()) + ;; Don't retain a dependency on the build-time sed. (substitute* "fixincludes/fixincl.x" (("static char const sed_cmd_z\\[\\] =.*;") @@ -589,12 +598,27 @@ using compilers other than GCC." (name "libstdc++") (arguments `(#:out-of-source? #t - #:phases (alist-cons-before - 'configure 'chdir - (lambda _ - (chdir "libstdc++-v3") - #t) - %standard-phases) + #:phases + ;; TODO: Use the target-powerpc arm for everyone. + ,(if (target-powerpc?) + `(modify-phases %standard-phases + ;; Force rs6000 (i.e., powerpc) libdir to be /lib and not /lib64. + (add-before 'chdir 'fix-rs6000-libdir + (lambda _ + (when (file-exists? "gcc/config/rs6000") + (substitute* (find-files "gcc/config/rs6000") + (("/lib64") "/lib"))) + #t)) + (add-before 'configure 'chdir + (lambda _ + (chdir "libstdc++-v3") + #t))) + `(alist-cons-before 'configure 'chdir + (lambda _ + (chdir "libstdc++-v3") + #t) + %standard-phases)) + #:configure-flags `("--disable-libstdcxx-pch" ,(string-append "--with-gxx-include-dir=" (assoc-ref %outputs "out") diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm index ae37c8f151..c988d6b114 100644 --- a/gnu/packages/geo.scm +++ b/gnu/packages/geo.scm @@ -8,7 +8,7 @@ ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com> ;;; Copyright © 2018, 2019, 2020 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2019, 2020, 2021 Guillaume Le Vaillant <glv@posteo.net> -;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz> ;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> @@ -1170,7 +1170,13 @@ map display. Downloads map data from a number of websites, including "0xzsm8pr0zjk3f8j880fg5n82jyxn8xf1330qmmq1fqv7rsrg9ia")) (modules '((guix build utils))) (snippet - '(begin (delete-file-recursively "data/fonts") #t)))) + '(begin + (delete-file-recursively "data/fonts") + ;; Fixes compilation, can be removed with the next release. + ;; Upstream link: https://github.com/opengribs/XyGrib/pull/255 + (substitute* "src/SkewT.h" + (("QMessageBox>") "QMessageBox>\n#include <QPainterPath>")) + #t)))) (build-system cmake-build-system) (arguments `(#:phases diff --git a/gnu/packages/gettext.scm b/gnu/packages/gettext.scm index 320c860fe6..9a3a24d89b 100644 --- a/gnu/packages/gettext.scm +++ b/gnu/packages/gettext.scm @@ -139,8 +139,7 @@ translated messages from the catalogs. Nearly all GNU packages use Gettext.") ;; module when there's a #:renamer, and that module may be empty at that point ;; in case or circular dependencies. (define-public gnu-gettext - (package - (inherit gettext-minimal) + (package/inherit gettext-minimal (name "gettext") (arguments (substitute-keyword-arguments (package-arguments gettext-minimal) diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm index c9be30ada5..3670f60b02 100644 --- a/gnu/packages/gimp.scm +++ b/gnu/packages/gimp.scm @@ -518,6 +518,8 @@ MyPaint.") (mkdir-p target) #t)))))) (native-inputs + ;; avoid ./autogen.sh: ./configure: /bin/sh: bad interpreter: + ;; No such file or directory `(("autoconf" ,autoconf-wrapper) ("automake" ,automake) ("glib" ,glib "bin") ; glib-gettextize @@ -590,7 +592,7 @@ transferring the style of an image.") (format port "for dir in '~a'.split(':'):~%" pythonpath) (format port " site.addsitedir(dir)~%"))))))))) (native-inputs - `(("autoconf" ,autoconf-wrapper) + `(("autoconf" ,autoconf) ("automake" ,automake) ("gtk-doc" ,gtk-doc) ("intltool" ,intltool) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index d55dedb7d3..ee29a79366 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2014, 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2014, 2015, 2016, 2017 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Nikita <nikita@n0.is> -;;; Copyright © 2016, 2017, 2018, 2020 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2016, 2017, 2018, 2020, 2021 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2017, 2018, 2019, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> @@ -607,6 +607,11 @@ extension functionality is exposed in a single header file.") "godir = $(moddir)\n")))) (add-before 'build 'patch-dynamic-link (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "gl/runtime.scm" + (("\\(dynamic-link\\)") + (string-append "(dynamic-link \"" + (assoc-ref inputs "mesa") + "/lib/libGL.so" "\")"))) (define (dynamic-link-substitute file lib input) (substitute* file (("dynamic-link \"lib([a-zA-Z]+)\"" _ lib) diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index fdbe6d0cdf..0ddaf4d0b9 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013, 2014, 2015, 2016, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> -;;; Copyright © 2014, 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2021 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> ;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> @@ -172,6 +172,7 @@ shared NFS home directories.") (package (name "glib") (version "2.62.6") + (replacement glib/fixed) (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" @@ -235,7 +236,7 @@ shared NFS home directories.") (lambda _ (substitute* "meson.build" (("test_timeout = 60") - "test_timeout = 90") + "test_timeout = 120") (("test_timeout_slow = 120") "test_timeout_slow = 180"))))) '()) @@ -394,6 +395,34 @@ dynamic loading, and an object system.") (home-page "https://developer.gnome.org/glib/") (license license:lgpl2.1+))) +(define glib/fixed + (package + (inherit glib) + (source (origin + (inherit (package-source glib)) + (patches + (append (search-patches "glib-CVE-2021-27218.patch" + "glib-CVE-2021-27219-01.patch" + "glib-CVE-2021-27219-02.patch" + "glib-CVE-2021-27219-03.patch" + "glib-CVE-2021-27219-04.patch" + "glib-CVE-2021-27219-05.patch" + "glib-CVE-2021-27219-06.patch" + "glib-CVE-2021-27219-07.patch" + "glib-CVE-2021-27219-08.patch" + "glib-CVE-2021-27219-09.patch" + "glib-CVE-2021-27219-10.patch" + "glib-CVE-2021-27219-11.patch" + "glib-CVE-2021-27219-12.patch" + "glib-CVE-2021-27219-13.patch" + "glib-CVE-2021-27219-14.patch" + "glib-CVE-2021-27219-15.patch" + "glib-CVE-2021-27219-16.patch" + "glib-CVE-2021-27219-17.patch" + "glib-CVE-2021-27219-18.patch" + "glib-CVE-2021-28153.patch") + (origin-patches (package-source glib)))))))) + (define-public glib-with-documentation ;; glib's doc must be built in a separate package since it requires gtk-doc, ;; which in turn depends on glib. @@ -421,6 +450,34 @@ dynamic loading, and an object system.") (delete-file-recursively (string-append out html)) #t))))))))) +;;; TODO: Merge into glib as a 'static' output on core-updates. +(define-public glib-static + (hidden-package + (package + (inherit glib) + (name "glib-static") + (outputs '("out")) + (arguments + (substitute-keyword-arguments (package-arguments glib) + ((#:configure-flags flags ''()) + `(cons* "--default-library=static" + "-Dselinux=disabled" + "-Dman=false" + "-Dgtk_doc=false" + "-Dinternal_pcre=false" + ,flags)) + ((#:phases phases) + `(modify-phases ,phases + (delete 'move-executables) + (replace 'install + ;; Only install the static libraries. + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib"))) + (for-each (lambda (f) + (install-file f lib)) + (find-files "." "\\.a$")))))))))))) + (define gobject-introspection (package (name "gobject-introspection") @@ -777,32 +834,33 @@ useful for C++.") (properties `((python2-variant . ,(delay python2-pygobject)))))) (define-public python2-pygobject - (package (inherit (strip-python2-variant python-pygobject)) - (name "python2-pygobject") + (let ((base (strip-python2-variant python-pygobject))) + (package/inherit base + (name "python2-pygobject") - ;; Note: We use python-build-system here, because Meson only supports - ;; Python 3, and needs PYTHONPATH etc set up correctly, which makes it - ;; difficult to use for Python 2 projects. - (build-system python-build-system) - (arguments - `(#:python ,python-2 - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'delete-broken-tests - (lambda _ - ;; FIXME: this test freezes and times out. - (delete-file "tests/test_mainloop.py") - ;; FIXME: this test fails with this kind of error: - ;; AssertionError: <Handlers.SIG_IGN: 1> != <built-in function default_int_handler - (delete-file "tests/test_ossig.py") - #t))))) - (inputs - `(("python-pycairo" ,python2-pycairo) - ("gobject-introspection" ,gobject-introspection))) - (native-inputs - `(("glib-bin" ,glib "bin") - ("pkg-config" ,pkg-config) - ("python-pytest" ,python2-pytest))))) + ;; Note: We use python-build-system here, because Meson only supports + ;; Python 3, and needs PYTHONPATH etc set up correctly, which makes it + ;; difficult to use for Python 2 projects. + (build-system python-build-system) + (arguments + `(#:python ,python-2 + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'delete-broken-tests + (lambda _ + ;; FIXME: this test freezes and times out. + (delete-file "tests/test_mainloop.py") + ;; FIXME: this test fails with this kind of error: + ;; AssertionError: <Handlers.SIG_IGN: 1> != <built-in function default_int_handler + (delete-file "tests/test_ossig.py") + #t))))) + (inputs + `(("python-pycairo" ,python2-pycairo) + ("gobject-introspection" ,gobject-introspection))) + (native-inputs + `(("glib-bin" ,glib "bin") + ("pkg-config" ,pkg-config) + ("python-pytest" ,python2-pytest)))))) (define-public perl-glib (package @@ -939,8 +997,8 @@ This package provides the library for GLib applications.") #t))))) (synopsis "D-Bus API for C++") (description "This package provides D-Bus client API bindings for the C++ -programming language. It also contains the utility -@command{dbuscxx-xml2cpp}.") +programming language. It also provides the @command{dbusxx-xml2cpp} and +@command{dbusxx-introspect} commands.") (home-page "https://sourceforge.net/projects/dbus-cplusplus/") (license license:lgpl2.1+))) diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm index c7e7394f43..21192acdd6 100644 --- a/gnu/packages/gnome-xyz.scm +++ b/gnu/packages/gnome-xyz.scm @@ -781,6 +781,70 @@ dark elements. It supports GNOME, Unity, Xfce, and Openbox.") (define-public numix-theme (deprecated-package "numix-theme" numix-gtk-theme)) +(define-public orchis-theme + (package + (name "orchis-theme") + (version "2021-02-28") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/vinceliuice/Orchis-theme") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1qp3phiza93qllrjm5xjjca5b7l2sbng8c382khy9m97grxvcq0y")) + (modules '((guix build utils) + (ice-9 regex) + (srfi srfi-26))) + (snippet + '(begin + (for-each + (lambda (f) + (let* ((r (make-regexp "\\.scss")) + (f* (regexp-substitute #f (regexp-exec r f) 'pre ".css"))) + (if (file-exists? f*) + (delete-file f*)))) + (find-files "." ".*\\.scss")) + #t)))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags (list + "--dest" (string-append + (assoc-ref %outputs "out") + "/share/themes") + "--theme" "all" + "--radio-color") + #:tests? #f ; no tests + #:phases + (modify-phases %standard-phases + (delete 'bootstrap) + (delete 'configure) + (replace 'build (lambda _ (invoke "./parse-sass.sh"))) + (replace 'install + (lambda* (#:key configure-flags #:allow-other-keys) + (mkdir-p + (cadr (or (member "--dest" configure-flags) + (member "-d" configure-flags)))) + (apply invoke "./install.sh" configure-flags) + #t))))) + (inputs + `(("gtk-engines" ,gtk-engines))) + (native-inputs + `(;("coreutils" ,coreutils) + ("gtk+" ,gtk+) + ("sassc" ,sassc))) + (home-page "https://github.com/vinceliuice/Orchis-theme") + (synopsis "Material Design theme for a wide range of environments") + (description "Orchis is a Material Design them for GNOME/GTK based +desktop environments. It is based on materia-theme and adds more color +variants.") + (license (list license:gpl3 ; According to COPYING. + license:lgpl2.1 ; Some style sheets. + license:cc-by-sa4.0)))) ; Some icons + (define-public markets (package (name "markets") diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 36e3346499..c69fb21ba5 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -9,7 +9,7 @@ ;;; Copyright © 2015, 2017 Andy Wingo <wingo@igalia.com> ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com> ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2015, 2016, 2017, 2018, 2021 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017, 2018 Rene Saavedra <pacoon@protonmail.com> @@ -166,6 +166,7 @@ #:use-module (gnu packages protobuf) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) + #:use-module (gnu packages python-compression) #:use-module (gnu packages python-crypto) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) @@ -1974,7 +1975,7 @@ access the common Google services, and has full asynchronous support.") (define-public libgxps (package (name "libgxps") - (version "0.3.1") + (version "0.3.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -1982,7 +1983,7 @@ access the common Google services, and has full asynchronous support.") name "-" version ".tar.xz")) (sha256 (base32 - "157s4c9gjjss6yd7qp7n4q6s72gz1k4ilsx4xjvp357azk49z4qs")))) + "07156nj7yrp3h9zyzx6mjwxwmfijialb4gi5d6dwyp53arr8c9vd")))) (build-system meson-build-system) (native-inputs `(("gobject-introspection" ,gobject-introspection) @@ -2433,8 +2434,7 @@ GNOME Desktop.") ;;; A minimal variant used to break a cycle with Inkscape. (define-public gdl-minimal - (package - (inherit gdl) + (package/inherit gdl (name "gdl-minimal") (arguments '(#:phases @@ -3227,6 +3227,7 @@ the GNOME desktop environment.") (sha256 (base32 "1m110rbj5d2raxcdp4iz0qp172284945awrsbdlq99ksmqsc4zkn")))) + (replacement libcroco/fixed) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -3245,6 +3246,21 @@ XML/CSS rendering engine.") ;; LGPLv2.1-only. (license license:lgpl2.1))) +(define libcroco/fixed + (package + (inherit libcroco) + (name "libcroco") + (version "0.6.13") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1m110rbj5d2raxcdp4iz0qp172284945awrsbdlq99ksmqsc4zkn")) + (patches (search-patches "libcroco-CVE-2020-12825.patch")))))) + (define-public libgsf (package (name "libgsf") @@ -3301,7 +3317,8 @@ dealing with different structured file formats.") (build-system cargo-build-system) (outputs '("out" "doc")) (arguments - `(#:modules + `(#:install-source? #f + #:modules ((guix build cargo-build-system) (guix build utils) ((guix build gnu-build-system) #:prefix gnu:)) @@ -4043,14 +4060,14 @@ Hints specification (EWMH).") (define-public goffice (package (name "goffice") - (version "0.10.48") + (version "0.10.49") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/goffice/" (version-major+minor version) "/" "goffice-" version ".tar.xz")) (sha256 - (base32 "1z6f3q8fxkd1ysqrwdxdi0844zqa00vjpf07gq8mh3kal8picfd4")))) + (base32 "1s87ngs3g3nfvcn96aq4lgzx5cscbfg4n9f6ns2zpvc5ngdiiz2z")))) (build-system gnu-build-system) (outputs '("out" "doc")) ; 4.0 MiB of gtk-doc @@ -4107,7 +4124,7 @@ Hints specification (EWMH).") (define-public gnumeric (package (name "gnumeric") - (version "1.12.48") + (version "1.12.49") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/gnumeric/" @@ -4115,7 +4132,7 @@ Hints specification (EWMH).") "gnumeric-" version ".tar.xz")) (sha256 (base32 - "14556b0vyxdvdwjlin0rv7jk0vq4nplbmvp9j89bhkfk84xf7k2p")))) + "0mzdhhpa7kwkc51l344g6vgqwaxkjdf03s7zasqh0bn3jpn75h4i")))) (build-system glib-or-gtk-build-system) (arguments `(;; The gnumeric developers don't worry much about failing tests. @@ -4793,8 +4810,7 @@ and the GLib main loop, to integrate well with GNOME applications.") ;;; A minimal version of libsoup used to prevent a cycle with Inkscape. (define-public libsoup-minimal - (package - (inherit libsoup) + (package/inherit libsoup (name "libsoup-minimal") (outputs (delete "doc" (package-outputs libsoup))) (arguments @@ -6354,7 +6370,7 @@ part of udev-extras, then udev, then systemd. It's now a project on its own.") (define-public gvfs (package (name "gvfs") - (version "1.40.1") + (version "1.40.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/gvfs/" @@ -6362,7 +6378,7 @@ part of udev-extras, then udev, then systemd. It's now a project on its own.") "gvfs-" version ".tar.xz")) (sha256 (base32 - "1cfnzamr4mvgpf6yhm28lh9cafy9z6842s8jpbqnfizfxybg8ylj")) + "07lpcfric3h0302n9b1pwa38mjb76r9s98kg2867y2d1qvzfivxx")) ;; This patch may be removed when upgrading to version 1.46.x. (patches (search-patches "gvfs-add-support-for-libplist-2.2.patch")))) @@ -6409,6 +6425,10 @@ part of udev-extras, then udev, then systemd. It's now a project on its own.") ("openssh" ,openssh) ("polkit" ,polkit) ("udisks" ,udisks))) + ;; CVE-2019-{12447,12448,12449} are fixed in the 1.40.2 release. + (properties '((lint-hidden-cve . ("CVE-2019-12447" + "CVE-2019-12448" + "CVE-2019-12449")))) (home-page "https://wiki.gnome.org/gvfs/") (synopsis "Userspace virtual file system for GIO") (description @@ -6839,7 +6859,7 @@ classes for commonly used data structures.") (define-public gexiv2 (package (name "gexiv2") - (version "0.12.1") + (version "0.12.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -6847,7 +6867,7 @@ classes for commonly used data structures.") name "-" version ".tar.xz")) (sha256 (base32 - "0xxxq8xdkgkn146my307jgws4qgxx477h0ybg1mqza1ycmczvsla")))) + "0k4ljzzz5dwqndw8awvlw3ala8rh3b2rk9i4jzvywc53mi9ba8i3")))) (build-system meson-build-system) (native-inputs `(("gcr" ,gcr) @@ -7390,7 +7410,9 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.") (version-major+minor version) "/" name "-" version ".tar.xz")) (patches (search-patches "evolution-data-server-locales.patch" - "evolution-data-server-libical-compat.patch")) + "evolution-data-server-libical-compat.patch" + "evolution-data-server-CVE-2020-14928.patch" + "evolution-data-server-CVE-2020-16117.patch")) (sha256 (base32 "16z85y6hhazcrp5ngw47w4x9r0j8zrj7awv5im58hhp0xs19zf1y")))) @@ -8333,7 +8355,7 @@ properties, screen resolution, and other GNOME parameters.") (define-public gnome-shell (package (name "gnome-shell") - (version "3.34.2") + (version "3.34.5") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -8341,8 +8363,9 @@ properties, screen resolution, and other GNOME parameters.") name "-" version ".tar.xz")) (sha256 (base32 - "0k9vq2gh1nhdd6fpp7jnwx37qxaakawiqw1xnlfjvq5g5zdn8ckh")) - (patches (search-patches "gnome-shell-theme.patch" + "0l3mdn7g2c22mdhrqkxvvc1pk2w0v32f2v4a6n1phvaalwcg75nj")) + (patches (search-patches "gnome-shell-CVE-2020-17489.patch" + "gnome-shell-theme.patch" "gnome-shell-disable-test.patch")) (modules '((guix build utils))) (snippet @@ -8484,6 +8507,9 @@ properties, screen resolution, and other GNOME parameters.") ;; Missing propagation? See also: <https://bugs.gnu.org/27264> ("librsvg" ,librsvg) ("geoclue" ,geoclue))) + ;; CVE-2019-3820 was fixed before GNOME 3.34 was released, in upstream + ;; commit f0a7395b3006360905ccdc642982f9fc67378927. + (properties '((lint-hidden-cve . ("CVE-2019-3820")))) (synopsis "Desktop shell for GNOME") (home-page "https://wiki.gnome.org/Projects/GnomeShell") (description @@ -8540,7 +8566,7 @@ core C library, and bindings for Python (PyGTK).") (define-public gnome-autoar (package (name "gnome-autoar") - (version "0.2.4") + (version "0.3.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -8548,7 +8574,7 @@ core C library, and bindings for Python (PyGTK).") name "-" version ".tar.xz")) (sha256 (base32 - "0yk56ch46n3wfy633mq31kif9n7v06rlij4vqbsbn6l4z1vw6d0a")))) + "1y6hh5dldhdq7mpbmd571zl0yadfackvifhnxvykkqqddwz72y0f")))) (build-system glib-or-gtk-build-system) (native-inputs `(("gobject-introspection" ,gobject-introspection) @@ -8940,7 +8966,7 @@ associations for GNOME.") (define-public libgovirt (package (name "libgovirt") - (version "0.3.6") + (version "0.3.8") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -8948,7 +8974,7 @@ associations for GNOME.") name "-" version ".tar.xz")) (sha256 (base32 - "19pb71pag3vsi83kbv8h08kimwym4hpw36kjl6a5ik5nk50mc8sg")))) + "1y0x1wyakj3ya33hgj0w1jkbcn50q21gmn2zyalxysqp55i1ij8x")))) (build-system glib-or-gtk-build-system) (native-inputs `(("gettext" ,gettext-minimal) @@ -9983,8 +10009,7 @@ accessibility infrastructure.") (properties '((upstream-name . "pyatspi"))))) (define-public python2-pyatspi - (package - (inherit python-pyatspi) + (package/inherit python-pyatspi (name "python2-pyatspi") (inputs `(("python" ,python-2))) @@ -10620,7 +10645,8 @@ generic enough to work for everyone.") "evolution-" version ".tar.xz")) (sha256 (base32 - "164vy8h432pjglafn8y2ms4gsvk3kbgc63h5qp0mk5dv4smsp29c")))) + "164vy8h432pjglafn8y2ms4gsvk3kbgc63h5qp0mk5dv4smsp29c")) + (patches (search-patches "evolution-CVE-2020-11879.patch")))) (build-system cmake-build-system) (arguments `(#:imported-modules (,@%cmake-build-system-modules @@ -10683,7 +10709,7 @@ functionality.") (define-public gthumb (package (name "gthumb") - (version "3.8.2") + (version "3.10.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/gthumb/" @@ -10691,7 +10717,7 @@ functionality.") "gthumb-" version ".tar.xz")) (sha256 (base32 - "15wqks35ks5dm7zj046dfd45vvrilan2ayfy2sxiprv7q74cip2q")))) + "14sw8d37g1lkp44dwsgyxjjsgh5pnpp4wq00mcy9p3rp30lf9spx")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t @@ -10730,19 +10756,20 @@ advanced image management tool") (define-public terminator (package (name "terminator") - (version "1.92") - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/gnome-" name "/" name "/" - "releases/download/v" version "/" - name "-" version ".tar.gz")) - (sha256 - (base32 - "1wbkfp0nk6x9bcwi681zy30qmrp4h754sdz6b7hi9j22mmvdd50z")))) + (version "2.1.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/gnome-terminator/terminator/" + "releases/download/v" version "/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "1vap4li2i24l1iz2q4b8wvhj8flamarf18xcmzq5ik2vzcrisbjy")))) (build-system python-build-system) (native-inputs `(("gettext" ,gettext-minimal) - ("glib:bin" ,glib "bin") ; for glib-compile-resources + ("glib:bin" ,glib "bin") ; for glib-compile-resources ("gobject-introspection" ,gobject-introspection) ("intltool" ,intltool) ("pkg-config" ,pkg-config) @@ -10754,33 +10781,45 @@ advanced image management tool") ("dbus-glib" ,dbus-glib) ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) ("gtk+" ,gtk+) + ("python" ,python-wrapper) + ("python-dbus" ,python-dbus) + ("python-notify2" ,python-notify2) ("python-pycairo" ,python-pycairo) ("python-pygobject" ,python-pygobject) ("vte" ,vte))) (propagated-inputs `(("python-configobj" ,python-configobj))) (arguments - `(#:imported-modules ((guix build glib-or-gtk-build-system) + ;; One test out of 28 fails due to dbus-python and python-notify; skip + ;; tests. + `(#:tests? #f + #:imported-modules ((guix build glib-or-gtk-build-system) ,@%python-build-system-modules) #:modules ((guix build python-build-system) ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:) (guix build utils)) #:phases (modify-phases %standard-phases - (add-after - 'install 'wrap-program - (lambda* (#:key outputs #:allow-other-keys) - (let ((prog (string-append (assoc-ref outputs "out") - "/bin/terminator")) - (pylib (string-append (assoc-ref outputs "out") - "/lib/python" - ,(version-major+minor - (package-version python)) - "/site-packages"))) - (wrap-program prog - `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH") ,pylib)) - `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))) - #t))) + (add-after 'unpack 'handle-dbus-python + (lambda _ + ;; python-dbus cannot be found but it's really there. See + ;; https://github.com/SpotlightKid/jack-select/issues/2 + (substitute* "setup.py" + (("'dbus-python',") "")) + #t)) + (add-after 'install 'wrap-program + (lambda* (#:key outputs #:allow-other-keys) + (let ((prog (string-append (assoc-ref outputs "out") + "/bin/terminator")) + (pylib (string-append (assoc-ref outputs "out") + "/lib/python" + ,(version-major+minor + (package-version python)) + "/site-packages"))) + (wrap-program prog + `("PYTHONPATH" = (,(getenv "PYTHONPATH") ,pylib)) + `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))) + #t))) (add-after 'wrap-program 'glib-or-gtk-wrap (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))))) (home-page "https://gnome-terminator.org/") @@ -10793,7 +10832,7 @@ tabs, and it supports drag and drop re-ordering of terminals.") (define-public libhandy (package (name "libhandy") - (version "1.0.3") + (version "1.2.0") (source (origin (method git-fetch) @@ -10802,7 +10841,7 @@ tabs, and it supports drag and drop re-ordering of terminals.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0flgwlm921801i3ns0dwqpnxl89f3rzn4y9h723i13bmflch3in7")))) + (base32 "1a8wfgm2jd3gcbk1nzhq6f2xq7vkxdc9qky8p9k0za9gqi7xfg4v")))) (build-system meson-build-system) (arguments `(#:configure-flags @@ -11070,7 +11109,7 @@ index files needed for Adwaita to be used outside of GNOME.") (define-public gnote (package (name "gnote") - (version "3.38.0") + (version "3.38.1") (source (origin (method url-fetch) @@ -11078,7 +11117,7 @@ index files needed for Adwaita to be used outside of GNOME.") (version-major+minor version) "/" "gnote-" version ".tar.xz")) (sha256 - (base32 "1ingbaw4d8vpjn083xvzqw7kz8z0k2bx7msk78pbzd68bwgkadpx")))) + (base32 "1adjfjhmsm2d33999khjyzvli6kiz1jlzavn77jhd49kfzhxa9y4")))) (build-system glib-or-gtk-build-system) (native-inputs `(("desktop-file-utils" ,desktop-file-utils) @@ -11231,7 +11270,8 @@ these services on the Guix System.") (file-name (git-file-name name version)) (sha256 (base32 - "01cc921kyh3zxz07biqbdzkjgmdcc36kwjyajm4y382a75cl5zg7")))) + "01cc921kyh3zxz07biqbdzkjgmdcc36kwjyajm4y382a75cl5zg7")) + (patches (search-patches "geary-CVE-2020-24661.patch")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t @@ -11821,7 +11861,7 @@ integrated profiler via Sysprof, debugging support, and more.") (define-public komikku (package (name "komikku") - (version "0.26.1") + (version "0.27.0") (source (origin (method git-fetch) @@ -11831,7 +11871,7 @@ integrated profiler via Sysprof, debugging support, and more.") (file-name (git-file-name name version)) (sha256 (base32 - "1mas409c14p6g0v10w4cf5hsjbs0922h6h9k9pyj9s8y7yi2ikz2")))) + "0mj4bsy7jp9wjj1dqz9zdq5aj0ib813wkz5k1481k80jp9dnlqnv")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t @@ -11863,6 +11903,7 @@ integrated profiler via Sysprof, debugging support, and more.") ("libnotify" ,libnotify) ("libsecret" ,libsecret) ("python-beautifulsoup4" ,python-beautifulsoup4) + ("python-brotli" ,python-brotli) ("python-dateparser" ,python-dateparser) ("python-keyring" ,python-keyring) ("python-lxml" ,python-lxml) @@ -11872,7 +11913,8 @@ integrated profiler via Sysprof, debugging support, and more.") ("python-pycairo" ,python-pycairo) ("python-pygobject" ,python-pygobject) ("python-requests" ,python-requests) - ("python-unidecode" ,python-unidecode))) + ("python-unidecode" ,python-unidecode) + ("webkitgtk" ,webkitgtk))) (native-inputs `(("desktop-file-utils" ,desktop-file-utils) ("gettext" ,gettext-minimal) diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm index 80e4aba29b..d261f42dcc 100644 --- a/gnu/packages/gnunet.scm +++ b/gnu/packages/gnunet.scm @@ -368,7 +368,7 @@ kinds of basic applications for the foundation of a GNU internet.") "0nqc18jh9j30y4l6yh6j35byfg6qalq7yr3frv9rk10qa041c2sv")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) - ("autoconf" ,autoconf-wrapper) + ("autoconf" ,autoconf) ("automake" ,automake))) (inputs `(("guile" ,guile-2.0) ("gnunet" ,gnunet))) diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index e802777eda..e8df4632c5 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -695,6 +695,8 @@ PGP keysigning parties.") "1aig5ssabzbk4mih7xd04vgr931bw0flbi8dz902wlr610gyv5s5")))) (build-system gnu-build-system) (native-inputs + ;; autoconf-wrapper is required due to the non-standard + ;; 'configure phase. `(("autoconf" ,autoconf-wrapper) ("automake" ,automake))) (inputs `(("perl" ,perl) @@ -1144,17 +1146,16 @@ over.") (define-public jetring (package (name "jetring") - (version "0.29") + (version "0.30") (source (origin (method git-fetch) (uri (git-reference (url "https://salsa.debian.org/debian/jetring") - (commit (string-append "debian/" version)))) + (commit "535380166eb1b222ba34864af07f3e36f4fb52c9"))) (file-name (git-file-name name version)) (sha256 - (base32 - "1acbx2vnbkms1c0wgcnh05d4g359sg5z0aiw541vx2qq9sgdhlv6")))) + (base32 "19m7rj446pr4nql44khwq0cfxfrm8cslj5v9jll08p7nk6glq5px")))) (build-system gnu-build-system) (arguments '(#:phases diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 3ff9689067..b9d2de29bc 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -694,8 +694,8 @@ from forcing GEXP-PROMISE." #:system system #:guile-for-build guile))) -(define %icecat-version "78.8.0-guix0-preview1") -(define %icecat-build-id "20210223000000") ;must be of the form YYYYMMDDhhmmss +(define %icecat-version "78.9.0-guix0-preview1") +(define %icecat-build-id "20210323000000") ;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' @@ -717,7 +717,7 @@ from forcing GEXP-PROMISE." "firefox-" upstream-firefox-version ".source.tar.xz")) (sha256 (base32 - "0451hhjrj9hb6limxim7sbhvw4gs6dd2gmnfxjjx07z3wbgdzwhw")))) + "0r28wrsk2k6pc922zfs5wljh8ziqm4a98lisn7409j2szhfsq0wf")))) (upstream-icecat-base-version "78.7.0") ; maybe older than base-version ;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version)) diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index e54496c9aa..d9988cd7ad 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Sergei Trofimovich <slyfox@inbox.ru> ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com> -;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018, 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Christopher Baines <mail@cbaines.net> ;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org> ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr> @@ -24,6 +24,7 @@ ;;; Copyright © 2020 raingloom <raingloom@riseup.net> ;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net> ;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -51,14 +52,15 @@ #:use-module (guix build-system go) #:use-module (gnu packages) #:use-module (gnu packages admin) + #:use-module (gnu packages base) #:use-module (gnu packages gcc) #:use-module (gnu packages glib) - #:use-module (gnu packages base) - #:use-module (gnu packages perl) - #:use-module (gnu packages pkg-config) - #:use-module (gnu packages pcre) #:use-module (gnu packages lua) #:use-module (gnu packages mp3) + #:use-module (gnu packages pcre) + #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages pulseaudio) #:use-module (gnu packages textutils) #:use-module (gnu packages tls) #:use-module (gnu packages web) @@ -235,7 +237,7 @@ in the style of communicating sequential processes (@dfn{CSP}).") (package (inherit go-1.4) (name "go") - (version "1.14.10") + (version "1.14.15") (source (origin (method git-fetch) @@ -245,7 +247,7 @@ in the style of communicating sequential processes (@dfn{CSP}).") (file-name (git-file-name name version)) (sha256 (base32 - "0h1nmqzjc0xxpn6n2hjq7692gdqkznagzdmiq9490yzkrrii2lgk")))) + "1crh90qkvhlx23hwsi4wxy3l3h8973lr18135y6h1nnzzwr3n3ps")))) (arguments (substitute-keyword-arguments (package-arguments go-1.4) ((#:system system) @@ -285,7 +287,10 @@ in the style of communicating sequential processes (@dfn{CSP}).") "cmd/go/testdata/script/cover_cgo.txt" "cmd/go/testdata/script/cover_cgo_xtest.txt" "cmd/go/testdata/script/cover_cgo_extra_test.txt" - "cmd/go/testdata/script/cover_cgo_extra_file.txt")) + "cmd/go/testdata/script/cover_cgo_extra_file.txt" + "cmd/go/testdata/script/cgo_path_space.txt" + "cmd/go/testdata/script/ldflag.txt" + "cmd/go/testdata/script/cgo_path.txt")) (for-each make-file-writable (find-files ".")) @@ -1470,7 +1475,7 @@ optimized for performance yet simple to use.") (define-public go-github-com-tomnomnom-gron (package (name "gron") - (version "0.6.0") + (version "0.6.1") (home-page "https://github.com/tomnomnom/gron") (source (origin @@ -1480,7 +1485,7 @@ optimized for performance yet simple to use.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "05f3w4zr15wd7xk75l12y5kip4gnv719a2x9w2hy23q3pnss9wk0")))) + (base32 "0qmzawkhg0qn9kxxrssbdjni2khvamhrcklv3yxc0ljmh77mh61m")))) (build-system go-build-system) (arguments (let ((import-path "github.com/tomnomnom/gron")) @@ -6770,3 +6775,262 @@ compressed streams in Go.") (description "Package ed25519 implements the Ed25519 signature algorithm.") (license license:bsd-3)))) + +(define-public go-github-com-akosmarton-papipes + (let ((commit "3c63b4919c769c9c2b2d07e69a98abb0eb47fe64") + (revision "0")) + (package + (name "go-github-com-akosmarton-papipes") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/akosmarton/papipes") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "16p77p3d1v26qd3knxn087jqlad2qm23q8m796cdr66hrdc0gahq")))) + (build-system go-build-system) + (inputs + `(("pulseaudio" ,pulseaudio))) + (arguments + `(#:import-path "github.com/akosmarton/papipes" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* '("src/github.com/akosmarton/papipes/common.go" + "src/github.com/akosmarton/papipes/sink.go" + "src/github.com/akosmarton/papipes/source.go") + (("exec.Command\\(\"pactl\"") + (string-append "exec.Command(\"" + (assoc-ref inputs "pulseaudio") + "/bin/pactl\"")))))))) + (home-page "https://github.com/akosmarton/papipes") + (synopsis "Pulseaudio client library for Go") + (description + "This is a Pulseaudio client library in Golang for creating virtual +sinks and sources.") + (license license:expat)))) + +(define-public go-github-com-mesilliac-pulse-simple + (let ((commit "75ac54e19fdff88f4fbd82f45125134b602230b0") + (revision "0")) + (package + (name "go-github-com-mesilliac-pulse-simple") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mesilliac/pulse-simple") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1awwczsa9yy99p035ckajqfs8m6mab0lz82mzlj1c5cj9lnmwplj")))) + (build-system go-build-system) + (propagated-inputs + `(("pkg-config" ,pkg-config) + ("pulseaudio" ,pulseaudio))) + (arguments + '(#:import-path "github.com/mesilliac/pulse-simple")) + (home-page "https://github.com/mesilliac/pulse-simple") + (synopsis "Cgo bindings to PulseAudio's Simple API") + (description + "This packages provides Cgo bindings to PulseAudio's Simple API, to play +or capture raw audio.") + (license license:expat)))) + +(define-public go-github-com-pborman-getopt + (package + (name "go-github-com-pborman-getopt") + (version "2.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pborman/getopt") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0sacv6g8cxfibxd3gnfjnzp7fynrnc4s2aaz5wbxivqqhvflc22l")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/pborman/getopt")) + (home-page "https://github.com/pborman/getopt") + (synopsis "Getopt style option parsing for Go") + (description + "This package provides traditional getopt processing for implementing +programs that use traditional command lines.") + (license license:bsd-3))) + +(define-public go-go-uber-org-atomic + (package + (name "go-go-uber-org-atomic") + (version "1.7.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/uber-go/atomic") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0yxvb5sixh76cl9j8dpa97gznj0p8pmg2cdw0ypfwhd3ipx9wph1")))) + (build-system go-build-system) + (arguments + '(#:import-path "go.uber.org/atomic")) + (native-inputs + `(("go-github-com-stretchr-testify" ,go-github-com-stretchr-testify) + ("go-github-com-davecgh-go-spew" ,go-github-com-davecgh-go-spew))) + (home-page "https://go.uber.org/atomic") + (synopsis "Wrapper types for sync/atomic") + (description + "This package provides simple wrappers for primitive types to enforce +atomic access.") + (license license:expat))) + +(define-public go-go-uber-org-multierr + (package + (name "go-go-uber-org-multierr") + (version "1.6.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/uber-go/multierr") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "162941s8f6a9x2w04qm4qa3zz0zylwag9149hywrj9ibp2nzcsqz")))) + (build-system go-build-system) + (arguments + '(#:import-path "go.uber.org/multierr")) + (native-inputs + `(("go-github-com-stretchr-testify" ,go-github-com-stretchr-testify))) + (propagated-inputs + `(("go-go-uber-org-atomic" ,go-go-uber-org-atomic))) + (home-page "https://go.uber.org/multierr") + (synopsis "Error combination fo Go") + (description + "@code{multierr} allows combining one or more Go errors together.") + (license license:expat))) + +(define-public go-golang-org-x-lint + (let ((commit "83fdc39ff7b56453e3793356bcff3070b9b96445") + (revision "0")) + (package + (name "go-golang-org-x-lint") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://go.googlesource.com/lint") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ms3rs5hvpnm9bxbr5f9743i7hn2bbmqdmvzxq6nmi0f24ypv1l3")))) + (build-system go-build-system) + (arguments + '(#:import-path "golang.org/x/lint" + #:tests? #f)) ;; TODO: Fix tests + (propagated-inputs + `(("go-golang-org-x-tools" ,go-golang-org-x-tools))) + (home-page "https://golang.org/x/lint") + (synopsis "Linter for Go source code") + (description + "This is a linter for Go source code. Unlike gofmt, it doesn't +reformat the source code, it only prints out style mistakes.") + (license license:bsd-3)))) + +(define-public go-github-com-kisielk-gotool + (package + (name "go-github-com-kisielk-gotool") + (version "1.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kisielk/gotool") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "14af2pa0ssyp8bp2mvdw184s5wcysk6akil3wzxmr05wwy951iwn")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/kisielk/gotool")) + (home-page "https://github.com/kisielk/gotool") + (synopsis "Go library of utility functions") + (description + "This package contains utility functions used to implement the standard +@code{cmd/go} tool, provided as a convenience to developers who want to write +tools with similar semantics.") + (license license:expat))) + +(define-public go-honnef-co-go-tools + (package + (name "go-honnef-co-go-tools") + (version "0.1.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dominikh/go-tools") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "17li8jbw3cpn59kpcl3j3r2an4wkx3fc81xn0j4xgbjpkxh9493n")))) + (build-system go-build-system) + (arguments + `(#:import-path "honnef.co/go/tools" + #:tests? #f + ;; Source-only package + #:phases + (modify-phases %standard-phases + (delete 'build)))) + (propagated-inputs + `(("go-golang-org-x-tools" ,go-golang-org-x-tools) + ("go-github-com-kisielk-gotool",go-github-com-kisielk-gotool) + ("go-github-com-burntsushi-toml" ,go-github-com-burntsushi-toml))) + (home-page "https://honnef.co/go/tools") + (synopsis "Staticcheck advanced Go linter") + (description + "Staticcheck is a state of the art linter for the Go programming language. +Using static analysis, it finds bugs and performance issues, offers +simplifications, and enforces style rules.") + (license license:expat))) + +(define-public go-go-uber-org-zap + (package + (name "go-go-uber-org-zap") + (version "1.16.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/uber-go/zap") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "05ix5wg1r8pgi7fb6084lg4x7mrkvzkh1nxa7zj337w5b9xj0myr")))) + (build-system go-build-system) + (arguments + '(#:import-path "go.uber.org/zap" + #:tests? #f)) ; TODO: Fix tests + (native-inputs + `(("go-github-com-stretchr-testify" ,go-github-com-stretchr-testify) + ("go-golang-org-x-lint" ,go-golang-org-x-lint) + ("go-honnef-co-go-tools" ,go-honnef-co-go-tools))) + (propagated-inputs + `(("go-github-com-pkg-errors" ,go-github-com-pkg-errors) + ("go-go-uber-org-atomic" ,go-go-uber-org-atomic) + ("go-go-uber-org-multierr" ,go-go-uber-org-multierr) + ("go-gopkg-in-yaml-v2" ,go-gopkg-in-yaml-v2))) + (home-page "https://go.uber.org/zap") + (synopsis "Logging library for Go") + (description + "This package provides a library for fast, structured, leveled logging in +Go.") + (license license:expat))) diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index 7e83c7ea4e..4a301d387a 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -718,15 +718,15 @@ more.") (define-public cgal (package (name "cgal") - (version "4.14.2") + (version "5.2.1") (source (origin (method url-fetch) (uri (string-append - "https://github.com/CGAL/cgal/releases/download/releases/" - "CGAL-" version "/CGAL-" version ".tar.xz")) + "https://github.com/CGAL/cgal/releases/download/v" version + "/CGAL-" version ".tar.xz")) (sha256 (base32 - "08lrp3hfwdypggz4138bnkh6bjxn441zg2y9xnq5mrjfc5ini6w1")))) + "1rhrpjsp4081nn2q215h78kc4msrj0081zg65k1gfp5hl88bg03y")))) (build-system cmake-build-system) (arguments '(#:tests? #f)) ; no test target diff --git a/gnu/packages/groff.scm b/gnu/packages/groff.scm index 0803a2a7f5..fdb8440a39 100644 --- a/gnu/packages/groff.scm +++ b/gnu/packages/groff.scm @@ -128,8 +128,7 @@ is usually the formatter of \"man\" documentation pages.") (define-public groff-minimal ;; Minimialist groff for use by man-db. Its closure size is less than half ;; that of the full-blown groff. - (package - (inherit groff) + (package/inherit groff (name "groff-minimal") (synopsis "Minimalist variant of Groff for use by man-db") (outputs '("out")) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index fbaacc11e4..f0c1fcccb2 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2014, 2015, 2017, 2018, 2019 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2014, 2015, 2017, 2018, 2019, 2021 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> @@ -125,6 +125,7 @@ tools have full access to view and control running applications.") (package (name "cairo") (version "1.16.0") + (replacement cairo/fixed) (source (origin (method url-fetch) (uri (string-append "https://cairographics.org/releases/cairo-" @@ -175,6 +176,15 @@ affine transformation (scale, rotation, shear, etc.).") (license license:lgpl2.1) ; or Mozilla Public License 1.1 (home-page "https://cairographics.org/"))) +(define cairo/fixed + (package + (inherit cairo) + (source (origin + (inherit (package-source cairo)) + (patches (append (search-patches "cairo-CVE-2018-19876.patch" + "cairo-CVE-2020-35492.patch") + (origin-patches (package-source cairo)))))))) + (define-public cairo-sans-poppler ;; Variant used to break the dependency cycle between Poppler and Cairo. (package/inherit cairo @@ -182,8 +192,7 @@ affine transformation (scale, rotation, shear, etc.).") (properties `((hidden? . #t))))) (define-public cairo-xcb - (package - (inherit cairo) + (package/inherit cairo (name "cairo-xcb") (inputs `(("mesa" ,mesa) @@ -237,7 +246,7 @@ affine transformation (scale, rotation, shear, etc.).") (define-public libdatrie (package (name "libdatrie") - (version "0.2.12") + (version "0.2.13") (source (origin (method url-fetch) @@ -245,7 +254,7 @@ affine transformation (scale, rotation, shear, etc.).") (string-append "https://linux.thai.net/pub/ThaiLinux/software/" "libthai/libdatrie-" version ".tar.xz")) (sha256 - (base32 "0jdi01pcxv0b24zbjy7zahawsqqqw4mv94f2yy01zh4n796wqba5")))) + (base32 "1gplcx9ddglpxmqm10qn38kjmvdh4hnhj14rzgqag095psr1n8qj")))) (build-system gnu-build-system) (outputs '("out" "doc")) (arguments @@ -558,6 +567,7 @@ highlighting and other features typical of a source code editor.") (package (name "gdk-pixbuf") (version "2.42.2") + (replacement gdk-pixbuf/fixed) (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -601,11 +611,20 @@ in the GNOME project.") (license license:lgpl2.0+) (home-page "https://developer.gnome.org/gdk-pixbuf/"))) +(define gdk-pixbuf/fixed + (package + (inherit gdk-pixbuf) + (source (origin + (inherit (package-source gdk-pixbuf)) + (patches + (append (search-patches "gdk-pixbuf-CVE-2020-29385.patch") + (origin-patches (package-source gdk-pixbuf)))))))) + ;; To build gdk-pixbuf with SVG support, we need librsvg, and librsvg depends ;; on gdk-pixbuf, so this new varibale. Also, librsvg adds 90MiB to the ;; closure size. (define-public gdk-pixbuf+svg - (package (inherit gdk-pixbuf) + (package/inherit gdk-pixbuf (name "gdk-pixbuf+svg") (inputs `(("librsvg" ,librsvg) @@ -2055,6 +2074,53 @@ shell scripts. Example of how to use @code{yad} can be consulted at @url{https://sourceforge.net/p/yad-dialog/wiki/browse_pages/}.") (license license:gpl3+))) +(define-public dragon-drop + (package + (name "dragon-drop") + (version "1.1.1") + (source (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/mwh/dragon") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0fgzz39007fdjwq72scp0qygp2v3zc5f1xkm0sxaa8zxm25g1bra")))) + (build-system gnu-build-system) + (inputs `(("gtk+" ,gtk+))) + (native-inputs `(("pkg-config" ,pkg-config))) + (arguments + `(#:tests? #f ; no check + #:make-flags + (list (string-append "CC=" ,(cc-for-target)) + ;; makefile uses PREFIX for the binary location + (string-append "PREFIX=" (assoc-ref %outputs "out") + "/bin")) + #:phases + (modify-phases %standard-phases + (delete 'configure)))) ; no configure script + (synopsis "Drag and drop source/target for X") + (description + "Dragon is a lightweight drag-and-drop source for X where you can run: + +@example +dragon file.tar.gz +@end example + +to get a window with just that file in it, ready to be dragged where you need it. +What if you need to drag into something? Using: + +@example +dragon --target +@end example + +you get a window you can drag files and text into. Dropped items are +printed to standard output.") + (home-page "https://github.com/mwh/dragon") + (license license:gpl3+))) + (define-public libdbusmenu (package (name "libdbusmenu") @@ -2118,16 +2184,18 @@ displayed on the other side of the bus.") (define-public gtk-layer-shell (package (name "gtk-layer-shell") - (version "0.1.0") + (version "0.6.0") (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/wmww/gtk-layer-shell/releases/download/v" - version "/gtk-layer-shell-" version ".tar.xz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/wmww/gtk-layer-shell") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 "0ncklk3z0fzlz6p76jdcrr1ykyp1f4ykjjch4x2hfp9bwsnl4a3m")))) + (base32 "1kcp4p3s7sdh9lwniybjdarfy8z69j2j23hfrw98amhwhq39gdcc")))) (build-system meson-build-system) + (arguments `(#:configure-flags (list "-Dtests=true"))) (native-inputs `(("pkg-config" ,pkg-config) ("gobject-introspection" ,gobject-introspection))) (inputs `(("wayland" ,wayland) diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index 14c5eff37a..b1ae3143da 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -15,14 +15,14 @@ ;;; Copyright © 2017, 2018, 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org> ;;; Copyright © 2017 Nikita <nikita@n0.is> -;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2017, 2018, 2021 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; 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> ;;; Copyright © 2019, 2020 Amar Singh <nly@disroot.org> -;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com> +;;; Copyright © 2019, 2021 Timothy Sample <samplet@ngyro.com> ;;; Copyright © 2019, 2020 Martin Becze <mjbecze@riseup.net> ;;; Copyright © 2020 Evan Straw <evan.straw99@gmail.com> ;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us> @@ -34,6 +34,8 @@ ;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at> ;;; Copyright © 2020, 2021 pukkamustard <pukkamustard@posteo.net> ;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com> +;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> +;;; Copyright © 2021 Leo Le Bouter <lle-bout@zaclys.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -116,6 +118,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system guile) #:use-module (guix utils) + #:use-module ((guix build utils) #:select (alist-replace)) #:use-module (ice-9 match) #:use-module ((srfi srfi-1) #:select (alist-delete))) @@ -236,6 +239,30 @@ more.") (home-page "https://www.gnu.org/software/artanis/") (license (list license:gpl3+ license:lgpl3+)))) ;dual license +(define-public guile-f-scm + (package + (name "guile-f-scm") + (version "0.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.sr.ht/~brown121407/f.scm") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "14wyrs3m1649l3km4pl2175dmap1372j5h8nkhykrbxg5xqp6ivd")))) + (build-system guile-build-system) + (native-inputs + `(("guile" ,guile-3.0))) + (home-page "https://git.sr.ht/~brown121407/f.scm") + (synopsis "Library for working with files and directories") + (description + "f.scm is a library intended to facilitate working with files and +directories (the file system in general). It was initially inspired by the +f library for Emacs.") + (license license:gpl3+))) + ;; There has not been any release yet. (define-public guildhall (let ((commit "2fe2cc539f4b811bbcd69e58738db03eb5a2b778") @@ -367,7 +394,7 @@ dictionary and suggesting spelling corrections.") (string-append "--libdir=" (assoc-ref %outputs "out") "/lib/bash")))) (native-inputs `(("pkg-config" ,pkg-config) - ("autoconf" ,autoconf-wrapper) + ("autoconf" ,autoconf) ("automake" ,automake) ("libtool" ,libtool) ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'. @@ -634,7 +661,7 @@ is not available for Guile 2.0.") "1shmkc0y9r2sj3kw7hrsnamnp7y8xifkhf3m3rnfxczqg63k67vy")))) (build-system gnu-build-system) (native-inputs - `(("autoconf" ,autoconf-wrapper) + `(("autoconf" ,autoconf) ("automake" ,automake) ("pkg-config" ,pkg-config) ("texinfo" ,texinfo))) @@ -1001,8 +1028,8 @@ convenient nested tree operations.") (license license:gpl3+))) (define-public guile-simple-zmq - (let ((commit "e9446173280117e98ab4208e2aa5273128650e19") - (revision "8")) + (let ((commit "b2ea97e5a0e7417ce718b27b6fd55a3146364b82") + (revision "9")) (package (name "guile-simple-zmq") (version (git-version "0.0.0" revision commit)) @@ -1014,7 +1041,7 @@ convenient nested tree operations.") (commit commit))) (sha256 (base32 - "1nhlp5kl1095k1irvv0kgdbc7lp5qki3d3wg9rla6f7822hkmrzw")) + "08qvcxx0njz9545xa0lq3wpf55v9cl9nbb640ry1lig11wpymqxb")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments @@ -1211,7 +1238,7 @@ format.") (license license:agpl3+))) (define-public guile-email-latest - (let ((commit "03e9cacb826bd4a56d3d834fe5526e497d7c57eb") + (let ((commit "ca0520a33c9042a68691d85c6849f88412ca8357") (revision "1")) (package (inherit guile-email) @@ -1226,7 +1253,7 @@ format.") (file-name (git-file-name name version)) (sha256 (base32 - "1a15gdlbmzx220xg82fgyd0zk2wqn13ddmzs13nhgfzx8d5cns68")))) + "1l5mikalawq83786rnb9zky908ncsd5dna9vyz6bx6kc2frrl7xv")))) (native-inputs `(("pkg-config" ,pkg-config) ("autoconf" ,autoconf) @@ -1697,7 +1724,7 @@ provides tight coupling to Guix.") #t)))) (build-system gnu-build-system) (native-inputs - `(("autoconf" ,autoconf-wrapper) + `(("autoconf" ,autoconf) ("automake" ,automake) ("texinfo" ,texinfo) ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'. @@ -1830,7 +1857,7 @@ users and in some situations.") "1l6csncjqnx58c6c3wdl7rshnhk4pzhjq2q8lnkg483564s9w5py")))) (build-system gnu-build-system) (native-inputs - `(("autoconf" ,autoconf-wrapper) + `(("autoconf" ,autoconf) ("automake" ,automake) ("gettext" ,gettext-minimal) ("libtool" ,libtool) @@ -2166,29 +2193,17 @@ library.") (define-public guile-lib (package (name "guile-lib") - (version "0.2.6.1") + (version "0.2.7") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/guile-lib/guile-lib-" version ".tar.gz")) (sha256 (base32 - "0aizxdif5dpch9cvs8zz5g8ds5s4xhfnwza2il5ji7fv2h7ks7bd")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Work around miscompilation on Guile 3.0.0 at -O2: - ;; <https://bugs.gnu.org/39251>. - (substitute* "src/md5.scm" - (("\\(define f-ash ash\\)") - "(define f-ash (@ (guile) ash))\n") - (("\\(define f-add \\+\\)") - "(define f-add (@ (guile) +))\n")) - #t)))) + "1ph4z4a64m75in36pdb4dw63dzdq3hdgh16gq33q460jby23pvz4")))) (build-system gnu-build-system) (arguments - '(#:make-flags - '("GUILE_AUTO_COMPILE=0") ; to prevent guild errors + '(#:make-flags '("GUILE_AUTO_COMPILE=0") ;placate guild warnings #:phases (modify-phases %standard-phases (add-before 'configure 'patch-module-dir @@ -2198,13 +2213,15 @@ library.") "moddir = $(datadir)/guile/site/@GUILE_EFFECTIVE_VERSION@\n") (("^godir = ([[:graph:]]+)") "godir = \ -$(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")) - #t))))) +$(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n"))))))) (native-inputs - `(("guile" ,guile-3.0) + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("gettext" ,gettext-minimal) + ("guile" ,guile-3.0) ("pkg-config" ,pkg-config))) (inputs - `(("guile" ,guile-3.0))) + `(("guile" ,guile-3.0))) ;for cross-compilation (home-page "https://www.nongnu.org/guile-lib/") (synopsis "Collection of useful Guile Scheme modules") (description @@ -2212,7 +2229,6 @@ $(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")) modules, allowing for people to cooperate integrating their generic Guile modules into a coherent library. Think \"a down-scaled, limited-scope CPAN for Guile\".") - ;; The whole is under GPLv3+, but some modules are under laxer ;; distribution terms such as LGPL and public domain. See `COPYING' for ;; details. @@ -2222,15 +2238,23 @@ for Guile\".") (package (inherit guile-lib) (name "guile2.0-lib") - (native-inputs `(("pkg-config" ,pkg-config))) - (inputs `(("guile" ,guile-2.0))))) + (native-inputs + (alist-replace "guile" (list guile-2.0) + (package-native-inputs guile-lib))) + (inputs + (alist-replace "guile" (list guile-2.0) + (package-inputs guile-lib))))) (define-public guile2.2-lib (package (inherit guile-lib) (name "guile2.2-lib") - (native-inputs `(("pkg-config" ,pkg-config))) - (inputs `(("guile" ,guile-2.2))))) + (native-inputs + (alist-replace "guile" (list guile-2.2) + (package-native-inputs guile-lib))) + (inputs + (alist-replace "guile" (list guile-2.2) + (package-inputs guile-lib))))) (define-public guile3.0-lib (deprecated-package "guile3.0-lib" guile-lib)) @@ -3254,6 +3278,13 @@ in C using Gtk+-3 and WebKitGtk.") (sha256 (base32 "03ym14g9qhjqmryr5z065kynqm8yhmvnbs2djl6vp3i9cmqln8cl")))) (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("gettext" ,gettext-minimal) + ("libtool" ,libtool) + ("makeinfo" ,texinfo) + ("pkg-config" ,pkg-config))) (inputs `(("guile" ,guile-2.2) ("guile-lib" ,guile2.2-lib) @@ -4232,6 +4263,9 @@ errors.") ,@%gnu-build-system-modules) #:make-flags '("GUILE_AUTO_COMPILE=0") ;to prevent guild warnings + ;; Parallel builds fail on powerpc64le-linux. + ;; See https://lists.nongnu.org/archive/html/guile-avahi-bugs/2021-01/msg00000.html + #:parallel-build? #f #:phases (modify-phases %standard-phases (add-before 'check 'fix-guile-avahi-file-name @@ -4589,3 +4623,28 @@ binary which is smaller and faster to generate and parse. This package provides a Guile implementation of CBOR.") (home-page "https://inqlab.net/git/guile-cbor.git") (license license:gpl3+))) + +(define-public guile-quickcheck + (package + (name "guile-quickcheck") + (version "0.1.0") + (source (origin + (method url-fetch) + (uri (string-append "https://files.ngyro.com/" + "guile-quickcheck/guile-quickcheck-" + version ".tar.gz")) + (sha256 + (base32 + "03mwi1l3354x52nar0zwhcm0x29yai9xjln4p4gbchwvx5dsr6fb")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("guile" ,guile-3.0))) + (home-page "https://ngyro.com/software/guile-quickcheck.html") + (synopsis "Randomized property-based testing for Guile") + (description "Guile-Quickcheck is a library for random testing of program +properties inspired by ghc-quickcheck. You can use it to express properties, +which functions should satisfy, as Scheme code and then check whether they hold +in a large number of randomly generated test cases.") + (license license:gpl3+))) diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 21f1329c00..f63322794d 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -44,6 +44,7 @@ #:use-module (gnu packages flex) #:use-module (gnu packages gawk) #:use-module (gnu packages gettext) + #:use-module (gnu packages gperf) #:use-module (gnu packages hurd) #:use-module (gnu packages libffi) #:use-module (gnu packages libunistring) @@ -318,9 +319,6 @@ without requiring the source code to be rewritten.") ;; The latest 3.0.x version. guile-3.0) -(define-public guile-next - (deprecated-package "guile-next" guile-3.0)) - (define-public guile-3.0/libgc-7 ;; Using libgc-7 avoid crashes that can occur, particularly when loading ;; data in to the Guix Data Service: @@ -342,6 +340,44 @@ without requiring the source code to be rewritten.") (max-silent-time . 36000))))) ;10 hours (needed on ARM ; when heavily loaded) +(define-public guile-next + (let ((version "3.0.5") + (revision "0") + (commit "91547abf54d5e0795afda2781259ab8923eb527b")) + (package + (inherit guile-3.0) + (name "guile-next") + (version (git-version version revision commit)) + (source (origin + ;; The main goal here is to allow for '--with-branch'. + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.gnu.org/git/guile.git") + (commit commit))) + (sha256 + (base32 + "09i1c77h2shygylfk0av31jsc1my6zjl230b2cx6vyl58q8c0cqy")))) + (arguments + (substitute-keyword-arguments (package-arguments guile-3.0) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-before 'check 'skip-failing-tests + (lambda _ + (substitute* "test-suite/standalone/test-out-of-memory" + (("!#") "!#\n\n(exit 77)\n")) + (delete-file "test-suite/tests/version.test") + #t)))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("flex" ,flex) + ("gettext" ,gnu-gettext) + ("texinfo" ,texinfo) + ("gperf" ,gperf) + ,@(package-native-inputs guile-3.0))) + (synopsis "Development version of GNU Guile")))) + (define* (make-guile-readline guile #:optional (name "guile-readline")) (package (name name) @@ -683,7 +719,7 @@ Guile's foreign function interface.") (define-public guile-bytestructures (package (name "guile-bytestructures") - (version "1.0.9") + (version "1.0.10") (home-page "https://github.com/TaylanUB/scheme-bytestructures") (source (origin (method git-fetch) @@ -693,7 +729,7 @@ Guile's foreign function interface.") (file-name (git-file-name name version)) (sha256 (base32 - "0r59sqrvwbsknw21bf44bppi6wdhd2rl2v5dw9i2vij3v8w7pgkm")))) + "14k50jln32kkxv41hvsdgjkkfj6xlv06vc1caz01qkgk1fzh72nk")))) (build-system gnu-build-system) (arguments `(#:make-flags '("GUILE_AUTO_COMPILE=0") ;to prevent guild warnings @@ -773,7 +809,7 @@ manipulate repositories of the Git version control system.") (define-public guile-zlib (package (name "guile-zlib") - (version "0.0.1") + (version "0.1.0") (source (origin ;; XXX: Do not use "git-fetch" method here that would create and @@ -781,12 +817,13 @@ manipulate repositories of the Git version control system.") ;; in the same method. (method url-fetch) (uri - (string-append "https://notabug.org/guile-zlib/guile-zlib/archive/" + (string-append "https://notabug.org/guile-zlib/guile-zlib/archive/v" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz")) (sha256 + ;; content hash: 1ip18nzwnczqyhn9cpzxkm9vzpi5fz5sy96cgjhmp7cwhnkmv6zv (base32 - "1caz6cbl6sg5567nk68z88rshp0m26zmb0a9ry1jkc1ivpk0n47i")))) + "1safz7rrbdf1d98x3lgx5v74kivpyf9n1v6pdyy22vd0f2sjdir5")))) (build-system gnu-build-system) (arguments '(#:make-flags diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm index a0a708a79c..d7d5a0223a 100644 --- a/gnu/packages/haskell-apps.scm +++ b/gnu/packages/haskell-apps.scm @@ -342,14 +342,14 @@ to @code{cabal repl}).") (define-public git-annex (package (name "git-annex") - (version "8.20210223") + (version "8.20210310") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/" "git-annex/git-annex-" version ".tar.gz")) (sha256 - (base32 "07wxf44pdh9d1pxqympgyfbkk8vk0pqbgxma0mkadlkdr6c9z832")))) + (base32 "1a4pr9z2li3wns1xycz7735nzzsv3cs8milr0q74k5qcqk5f22nx")))) (build-system haskell-build-system) (arguments `(#:configure-flags diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm index 1ce826d65e..fc59ea1c6b 100644 --- a/gnu/packages/ibus.scm +++ b/gnu/packages/ibus.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, 2021 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il> @@ -173,7 +173,7 @@ may also simplify input method development.") (define-public ibus-libpinyin (package (name "ibus-libpinyin") - (version "1.11.1") + (version "1.12.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/libpinyin/ibus-libpinyin/" @@ -181,10 +181,12 @@ may also simplify input method development.") "/ibus-libpinyin-" version ".tar.gz")) (sha256 (base32 - "1bl1cgicd2df797dx1x0q904438bsn8i23djzcfcai4dp3631xc0")))) + "0xl2lmffy42f6h6za05z4vpazpza1a9gsrva65giwyv3kpf652dd")))) (build-system glib-or-gtk-build-system) (arguments - `(#:phases + `(#:configure-flags + '("--enable-opencc") + #:phases (modify-phases %standard-phases (add-after 'wrap-program 'wrap-with-additional-paths (lambda* (#:key inputs outputs #:allow-other-keys) @@ -195,18 +197,22 @@ may also simplify input method development.") `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH") ,(string-append (assoc-ref inputs "ibus") - "/lib/girepository-1.0"))) + "/lib/girepository-1.0") + ,(string-append (assoc-ref outputs "out") + "/share/ibus-libpinyin/setup/"))) `("GI_TYPELIB_PATH" ":" prefix (,(string-append (assoc-ref inputs "ibus") - "/lib/girepository-1.0")))) + "/lib/girepository-1.0") + ,(string-append (assoc-ref outputs "out") + "/share/ibus-libpinyin/setup/")))) #t)))))) (inputs `(("ibus" ,ibus) ("libpinyin" ,libpinyin) ("bdb" ,bdb) ("sqlite" ,sqlite) + ("opencc" ,opencc) ("python" ,python) - ("pyxdg" ,python-pyxdg) ("pygobject2" ,python-pygobject) ("gtk+" ,gtk+))) (native-inputs @@ -218,12 +224,12 @@ may also simplify input method development.") "This package includes a Chinese pinyin input method and a Chinese ZhuYin (Bopomofo) input method based on libpinyin for IBus.") (home-page "https://github.com/libpinyin/ibus-libpinyin") - (license gpl2+))) + (license gpl3+))) (define-public libpinyin (package (name "libpinyin") - (version "2.3.0") + (version "2.6.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/libpinyin/libpinyin/" @@ -231,7 +237,7 @@ ZhuYin (Bopomofo) input method based on libpinyin for IBus.") "/libpinyin-" version ".tar.gz")) (sha256 (base32 - "14969v6w8n1aiqphl2386dws7dmsdwbzyqnlz4kr8ppm39m9rp5k")))) + "10h5mjgv4ibhispvr3s1k36a4aclx4dcvcc2knd4sg1xibw0dp4w")))) (build-system gnu-build-system) (inputs `(("glib" ,glib) diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm index c3ea8491d9..26f6faea8c 100644 --- a/gnu/packages/image-processing.scm +++ b/gnu/packages/image-processing.scm @@ -9,10 +9,11 @@ ;;; Copyright © 2018 Lprndn <guix@lprndn.info> ;;; Copyright © 2019, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> -;;; Copyright © 2020 Vinicius Monego <monego@posteo.net> +;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2020 Brendan Tildesley <mail@brendan.scot> ;;; Copyright © 2021 Oleh Malyi <astroclubzp@gmail.com> +;;; Copyright © 2021 Felix Gruber <felgru@posteo.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -58,6 +59,7 @@ #:use-module (gnu packages graphviz) #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) + #:use-module (gnu packages icu4c) #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) #:use-module (gnu packages maths) @@ -84,7 +86,7 @@ (define-public dcmtk (package (name "dcmtk") - (version "3.6.5") + (version "3.6.6") (source (origin (method url-fetch) @@ -93,11 +95,10 @@ "dcmtk" (string-join (string-split version #\.) "") "/dcmtk-" version ".tar.gz")) (sha256 - (base32 "1fdyz5wwjp4grys61mxb2ia9fi6i3ax6s43l16xnv291bxk7hld0")))) + (base32 "13j5yf3p6qj3mr17d77r3kcqchf055hgvk1w15vmdr8f54mwcnb8")))) (build-system cmake-build-system) (inputs - `(;; Our ICU is too recent: “error: ‘UChar’ does not name a type“. - ;; ("icu4c" ,icu4c) + `(("icu4c" ,icu4c) ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libtiff" ,libtiff) @@ -254,6 +255,8 @@ many popular formats.") (sha256 (base32 "1fspgp8k0myr6p2a6wkc21ldcswb4bvmb484m12mxgk1a9vxrhrl")) + (patches + (search-patches "vtk-fix-freetypetools-build-failure.patch")) (modules '((guix build utils))) (snippet '(begin @@ -603,17 +606,28 @@ due to its architecture which automatically parallelises the image workflows.") (define-public gmic (package (name "gmic") - (version "2.9.2") + (version "2.9.6") (source (origin (method url-fetch) (uri (string-append "https://gmic.eu/files/source/gmic_" version ".tar.gz")) (sha256 - (base32 "14acph914a8lp6qqfmp319ggqjg3i3hmalmnpk3mp07m7vpv2p9q")))) + (base32 "06n1dcskky7aqg3a0cp7biwz8agc4xqvr8091l2wsvgib98yhbyj")))) (build-system cmake-build-system) (arguments - `(#:tests? #f)) ;there are no tests + `(#:tests? #f ;there are no tests + #:configure-flags '("-DBUILD_LIB_STATIC=OFF" + "-DENABLE_DYNAMIC_LINKING=ON" + "-DENABLE_LTO=ON") + #:phases + (modify-phases %standard-phases + (add-before 'configure 'set-LDFLAGS + (lambda* (#:key inputs outputs #:allow-other-keys) + (setenv "LDFLAGS" + (string-append + "-Wl,-rpath=" + (assoc-ref outputs "out") "/lib"))))))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs @@ -637,6 +651,42 @@ including 2D color images.") ;; Dual-licensed, either license applies. (license (list license:cecill license:cecill-c)))) +(define-public gmic-qt + (package + (inherit gmic) + (name "gmic-qt") + (arguments + (substitute-keyword-arguments (package-arguments gmic) + ((#:configure-flags _) + `(list "-DGMIC_QT_HOST=none" "-DENABLE_DYNAMIC_LINKING=ON" + (string-append "-DGMIC_LIB_PATH=" + (assoc-ref %build-inputs "gmic") "/lib"))) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'qt-chdir + (lambda _ (chdir "gmic-qt") #t)))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("qttools" ,qttools))) + (inputs + `(("gmic" ,gmic) + ("qtbase" ,qtbase) + ,@(package-inputs gmic))) + (synopsis "Qt frontend for the G'MIC image processing framework") + (license license:gpl3+))) + +(define-public gmic-qt-krita + (package + (inherit gmic-qt) + (name "gmic-qt-krita") + (arguments + (substitute-keyword-arguments (package-arguments gmic-qt) + ((#:configure-flags flags) + '(list "-DGMIC_QT_HOST=krita" "-DENABLE_DYNAMIC_LINKING=ON" + (string-append "-DGMIC_LIB_PATH=" + (assoc-ref %build-inputs "gmic") "/lib"))))) + (synopsis "Krita plugin for the G'MIC image processing framework"))) + (define-public nip2 (package (name "nip2") diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm index bddf86568c..b7c1ebc829 100644 --- a/gnu/packages/image-viewers.scm +++ b/gnu/packages/image-viewers.scm @@ -17,6 +17,7 @@ ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2021 Rovanion Luckey <rovanion.luckey@gmail.com> ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> +;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at> ;;; ;;; This file is part of GNU Guix. ;;; @@ -748,3 +749,40 @@ allows creating false color images. A unique feature of Nomacs is the synchronization of multiple instances.") (home-page "https://nomacs.org/") (license license:gpl3+))) + +(define-public xzgv + (package + (name "xzgv") + (version "0.9.2") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/xzgv/" + version "/xzgv-" version ".tar.gz")) + (sha256 + (base32 "17l1xr9v07ggwga3vn0z1i4lnwjrr20rr8z1kjbw71aaijxl18i5")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'override-target-directory + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "config.mk" + (("/usr/local") (assoc-ref outputs "out"))))) + (delete 'configure) ; no configure script + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (install-file "src/xzgv" bin))))) ; just install the executable + #:tests? #f)) ; no rule for target 'test' + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("gtk+" ,gtk+-2) + ("libexif" ,libexif))) + (home-page "https://sourceforge.net/projects/xzgv/") + (synopsis "Picture viewer for X with a thumbnail-based selector") + (description + "xzgv is a fast image viewer that provides extensive keyboard support.") + (license license:gpl2+))) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index c686062331..25c121908d 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -596,11 +596,12 @@ extracting icontainer icon files.") "doc")) ;1.8 MiB of HTML documentation (arguments ;; Instead of using --docdir, this package has its own --with-docdir. - `(#:configure-flags (list (string-append "--with-docdir=" - (assoc-ref %outputs "doc") - "/share/doc/" - ,name "-" ,version) - "--disable-static"))) + `(#:configure-flags + (list (string-append "--with-docdir=" + (assoc-ref %outputs "doc") + "/share/doc/" + ,name "-" ,(package-version this-package)) + "--disable-static"))) (inputs `(("zlib" ,zlib) ("libjpeg" ,libjpeg-turbo))) (synopsis "Library for handling TIFF files") @@ -1417,7 +1418,7 @@ convert, manipulate, filter and display a wide variety of image formats.") (define-public jasper (package (name "jasper") - (version "2.0.25") + (version "2.0.27") (source (origin (method git-fetch) (uri (git-reference @@ -1426,7 +1427,7 @@ convert, manipulate, filter and display a wide variety of image formats.") (file-name (git-file-name name version)) (sha256 (base32 - "06s6z7qrcnbi9mbj2d0a6k7lxbjdh3ppjpx8bcdv73lxhm4z7pzr")))) + "0mrnazk8qla7nn59xad86gmrf5fzqcv74j5xhcdrxbgfw67l17zd")))) (build-system cmake-build-system) (inputs `(("libjpeg" ,libjpeg-turbo))) @@ -2135,7 +2136,7 @@ This package can be used to create @code{favicon.ico} files for web sites.") (define-public libavif (package (name "libavif") - (version "0.8.4") + (version "0.9.0") (source (origin (method git-fetch) (uri (git-reference @@ -2144,7 +2145,7 @@ This package can be used to create @code{favicon.ico} files for web sites.") (file-name (git-file-name name version)) (sha256 (base32 - "1qvjd3xi9r89pcblxdgz4c6hqp67ss53b1x9zkg7lrik7g3lwq8d")))) + "1aw41m8ddrckq375w0lv2zd4ybhccsy1hw4f9kipppwxhgvk17gf")))) (build-system cmake-build-system) (arguments `(#:configure-flags '("-DAVIF_CODEC_AOM=ON" "-DAVIF_CODEC_DAV1D=ON" @@ -2173,6 +2174,42 @@ by AOM, including with alpha.") (license (list license:bsd-2 ; libavif itself license:expat)))) ; cJSON in the test suite +(define-public libheif + (package + (name "libheif") + (version "1.11.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/strukturag/libheif") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "036n63vlk4sk7y25q2kzyvvw4r5vv323ysbmbrcaprg9hdyjqgf5")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f)) ;no test target although there is a tests folder + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config))) + (inputs + `(("dav1d" ,dav1d) + ("gdk-pixbuf" ,gdk-pixbuf) ;optional + ("libaom" ,libaom) + ("libde265" ,libde265) + ("libjpeg" ,libjpeg-turbo) + ("libpng" ,libpng) + ("x265" ,x265))) + (home-page "https://github.com/strukturag/libheif") + (synopsis "HEIF and AVIF file format decoder and encoder") + (description + "@code{libheif} is an ISO/IEC 23008-12:2017 HEIF and AVIF (AV1 Image File +Format) file format decoder and encoder.") + (license license:lgpl3+))) + (define-public mtpaint (package (name "mtpaint") diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm index 02a627f17e..a3562f2e13 100644 --- a/gnu/packages/imagemagick.scm +++ b/gnu/packages/imagemagick.scm @@ -51,6 +51,7 @@ ;; maintained. Don't update to 7 until we've made sure that the ImageMagick ;; users are ready for the 7-series API. (version "6.9.11-48") + (replacement imagemagick/fixed) (source (origin (method url-fetch) (uri (string-append "mirror://imagemagick/ImageMagick-" @@ -84,7 +85,8 @@ (let ((doc (assoc-ref outputs "doc"))) (string-append "DOCUMENTATION_PATH = " doc "/share/doc/" - ,name "-" ,version "\n")))) + ,name "-" + ,(package-version this-package) "\n")))) #t)) (add-before 'configure 'strip-configure-xml @@ -126,6 +128,45 @@ transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.") (license (license:fsf-free "http://www.imagemagick.org/script/license.php")))) +(define-public imagemagick/fixed + (package + (inherit imagemagick) + (name "imagemagick") + ;; 'g' for 'guix', appended character to retain version length so grafting + ;; works properly. + (version "6.9.12-2g") + (source (origin + (method url-fetch) + (uri (string-append "mirror://imagemagick/ImageMagick-" + ;; Hardcode the version here since we had to + ;; change it above. + "6.9.12-2.tar.xz")) + (sha256 + (base32 + "17da5zihz58qm41y61sbvw626m5xfwr2nzszlikrvxyq1j1q7asa")))) + (arguments + (substitute-keyword-arguments (package-arguments imagemagick) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'install 'fix-compat-cheat-rename-so + (lambda* (#:key outputs #:allow-other-keys) + (with-directory-excursion + (string-append (assoc-ref outputs "out") + "/lib") + (symlink "libMagick++-6.Q16.so.9.0.0" + "libMagick++-6.Q16.so.8.0.0") + (symlink "libMagick++-6.Q16.so.9" + "libMagick++-6.Q16.so.8") + (symlink "libMagickCore-6.Q16.so.7.0.0" + "libMagickCore-6.Q16.so.6.0.0") + (symlink "libMagickCore-6.Q16.so.7" + "libMagickCore-6.Q16.so.6") + (symlink "libMagickWand-6.Q16.so.7.0.0" + "libMagickWand-6.Q16.so.6.0.0") + (symlink "libMagickWand-6.Q16.so.7" + "libMagickWand-6.Q16.so.6")) + #t)))))))) + (define-public perl-image-magick (package (name "perl-image-magick") diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm index 718853d897..a595b40594 100644 --- a/gnu/packages/irc.scm +++ b/gnu/packages/irc.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> -;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> @@ -186,14 +186,14 @@ SILC and ICB protocols via plugins.") (define-public weechat (package (name "weechat") - (version "3.0") + (version "3.1") (source (origin (method url-fetch) (uri (string-append "https://weechat.org/files/src/weechat-" version ".tar.xz")) (sha256 (base32 - "1yziv4cbcy61c9mb81c5sg3rmw6nh0srzwmry4svhriv6rdd5dvc")))) + "1xx4fx7785yw3ml3k1z08h3qvrizvcypwl0j6jc7d7qim9sjjnm5")))) (build-system cmake-build-system) (native-inputs `(("gettext" ,gettext-minimal) diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm index c47293b5c1..3773c1ab0a 100644 --- a/gnu/packages/jami.scm +++ b/gnu/packages/jami.scm @@ -365,8 +365,7 @@ of Jami." '()))) (define-public ffmpeg-jami - (package - (inherit ffmpeg) + (package/inherit ffmpeg (name "ffmpeg-jami") (native-inputs `(("sfl-patches" ,%sfl-patches) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 7ba8b46226..37716e01d5 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -2696,10 +2696,101 @@ distribution."))) `(#:jar-name "java-openjfx-graphics.jar" #:source-dir "modules/graphics/src/main/java" #:tests? #f; require X - #:test-dir "modules/graphics/src/test")) + #:test-dir "modules/graphics/src/test" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'copy-missing-file + (lambda* (#:key inputs #:allow-other-keys) + (let ((target "modules/graphics/src/main/native-prism-sw/JNativeSurface.c")) + (copy-file (assoc-ref inputs "JNativeSurface.c") target) + ;; XXX: looks like the missing file we found isn't *quite* + ;; compatible... + (substitute* target + (("case TYPE_INT_ARGB:") ""))))) + (add-after 'build 'build-native + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((jdk (assoc-ref inputs "jdk")) + (class-file->class-name + (lambda (class-file) + (string-map (lambda (c) + (if (char=? c #\/) #\. c)) + (string-drop-right class-file + (string-length ".class")))))) + (setenv "CPPFLAGS" + (string-append "-DINLINE=inline " + "-DLINUX " + "-I" jdk "/include " + "-I" jdk "/include/linux " + "-I " (getcwd) "/build/classes/include " + "-I " (getcwd) "/modules/graphics/src/main/native-prism-sw")) + + ;; Instructions have been adapted from buildSrc/linux.gradle + (with-directory-excursion "build/classes" + ;; Build prism + (mkdir-p "include") + + ;; Generate headers for prism + (apply invoke "javah" "-d" "include" "-cp" "." + (map class-file->class-name + (append (find-files "com/sun/prism/impl" "\\.class$") + (find-files "com/sun/prism" "PresentableState.*\\.class$")))) + + ;; ...then for prism_sw + (apply invoke "javah" "-d" "include" "-cp" "." + (map class-file->class-name + (find-files "com/sun/pisces" "\\.class$"))) + + ;; ...and for prism_es2 + (apply invoke "javah" "-d" "include" "-cp" "." + (map class-file->class-name + (find-files "com/sun/prism/es2" "\\.class$"))))) + + (with-directory-excursion "netbeans/native-prism" + (invoke "make" "CONF=Release")) + (with-directory-excursion "netbeans/native-prism-sw" + (invoke "make" "CONF=Release")) + ;; TODO: This fails due to unknown EGL procedure names + #; + (with-directory-excursion "netbeans/native-prism-es2" + (invoke "make" "CONF=Release")) + + (let* ((out (assoc-ref outputs "out")) + (dir ,(match (%current-system) + ("i686-linux" + "i386") + ((or "armhf-linux" "aarch64-linux") + "arm") + ((or "x86_64-linux") + "amd64") + (_ "unknown"))) + (target (string-append out "/share/" dir "/"))) + (mkdir-p target) + (for-each (lambda (file) + (let ((new-name + (string-append "lib" + (string-map + (lambda (c) + (if (char=? c #\-) #\_ c)) + (string-drop (basename file) + (string-length "libnative-")))))) + (copy-file file + (string-append target new-name)))) + (find-files "netbeans" "\\.so$")))))))) (propagated-inputs `(("java-openjfx-base" ,java-openjfx-base) ("java-swt" ,java-swt))) + ;; XXX: for unknown reasons + ;; modules/graphics/src/main/native-prism-sw/JNativeSurface.c is missing + ;; in this revision. + (native-inputs + `(("JNativeSurface.c" + ,(origin + (method url-fetch) + (uri "https://raw.githubusercontent.com/openjdk/jfx/8u20-b02\ +/modules/graphics/src/main/native-prism-sw/JNativeSurface.c") + (sha256 + (base32 + "1kp15wbnd6rn0nciczp5ibq0ikby2yysvx1gnz5fa05vl2mm8mbm")))))) (description "OpenJFX is a client application platform for desktop, mobile and embedded systems built on Java. Its goal is to produce a modern, efficient, and fully featured toolkit for developing rich client @@ -2721,6 +2812,33 @@ modern, efficient, and fully featured toolkit for developing rich client applications. This package contains media-related classes for the OpenJFX distribution."))) +(define-public java-openjfx-controls + (package (inherit java-openjfx-build) + (name "java-openjfx-controls") + (propagated-inputs + `(("java-openjxf-graphics" ,java-openjfx-graphics))) + (arguments + `(#:jar-name "java-openjfx-controls.jar" + #:source-dir "modules/controls/src/main/java" + #:test-dir "modules/controls/src/test" + ;; TODO: tests require com.sun.javafx.pgstub, + ;; javafx.collections.MockSetObserver, and + ;; com.sun.javafx.binding.ExpressionHelperUtility + #:tests? #false + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'copy-resources + (lambda _ + (copy-recursively "modules/controls/src/test/resources" + "build/test-classes") + (copy-recursively "modules/controls/src/main/resources" + "build/classes")))))) + (description "OpenJFX is a client application platform for desktop, +mobile and embedded systems built on Java. Its goal is to produce a +modern, efficient, and fully featured toolkit for developing rich client +applications. This package contains UI control classes for the +OpenJFX distribution."))) + (define-public javacc-4 (package (name "javacc") diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm index 34dba958ce..0d35cbde57 100644 --- a/gnu/packages/julia-xyz.scm +++ b/gnu/packages/julia-xyz.scm @@ -20,7 +20,8 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix git-download) - #:use-module (guix build-system julia)) + #:use-module (guix build-system julia) + #:use-module (gnu packages tls)) (define-public julia-adapt (package @@ -32,7 +33,7 @@ (uri (git-reference (url "https://github.com/JuliaGPU/Adapt.jl") (commit (string-append "v" version)))) - (file-name "Adapt") + (file-name (git-file-name name version)) (sha256 (base32 "1lks6k3a1gvwlplld47nh6xfy3nnlpc0vhkzg6zg0qn33qdmavrg")))) (build-system julia-build-system) @@ -44,6 +45,56 @@ acts like @code{convert(T, x)}, but without the restriction of returning a be GPU compatible without throwing away the wrapper.") (license license:expat))) +(define-public julia-benchmarktools + (package + (name "julia-benchmarktools") + (version "0.5.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaCI/BenchmarkTools.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0nsx21m3i5h22lkgyrmfj6r085va6ag40khwssqs8y7l0wz98lvp")))) + (build-system julia-build-system) + (propagated-inputs `(("julia-json" ,julia-json))) + (home-page "https://github.com/JuliaCI/BenchmarkTools.jl") + (synopsis "Benchmarking framework for the Julia language") + (description "@code{BenchmarkTools.jl} makes performance tracking of Julia +code easy by supplying a framework for writing and running groups of +benchmarks as well as comparing benchmark results.") + (license license:expat))) + +(define-public julia-bufferedstreams + (package + (name "julia-bufferedstreams") + (version "1.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/BioJulia/BufferedStreams.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0sf4sxbq55mg2pwxyxf0c839z1lk0yxg8nmb7617bfbvw31cp88z")))) + (build-system julia-build-system) + ;; The package is old and tests are using undefined functions. They also + ;; freeze, see + ;; https://travis-ci.org/BioJulia/BufferedStreams.jl/jobs/491050182 + (arguments + '(#:tests? #f + #:julia-package-name "BufferedStreams")) + (propagated-inputs `(("julia-compat" ,julia-compat))) + (home-page "https://github.com/BioJulia/BufferedStreams.jl") + (synopsis "Fast composable IO streams") + (description "@code{BufferedStreams.jl} provides buffering for IO +operations. It can wrap any @code{IO} type automatically making incremental +reading and writing faster.") + (license license:expat))) + (define-public julia-compat (package (name "julia-compat") @@ -125,6 +176,127 @@ scaled by a constant factor. Consequently, they have a fixed number of digits (bits) after the decimal (radix) point.") (license license:expat))) +(define-public julia-http + (package + (name "julia-http") + (version "0.9.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaWeb/HTTP.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ij0yci13c46p92m4zywvcs02nn8pm0abyfffiyhxvva6hq48lyl")))) + (build-system julia-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'install 'disable-network-tests + (lambda _ + (substitute* "test/runtests.jl" + (("\"async.jl") "# \"async.jl") + (("\"client.jl") "# \"client.jl")) + (substitute* "test/aws4.jl" + (("@testset.*HTTP.request with AWS authentication.*" all) + (string-append all "return\n"))) + (substitute* "test/insert_layers.jl" + (("@testset.*Inserted final layer runs handler.*" all) + (string-append all "return\n"))) + (substitute* "test/multipart.jl" + (("@testset \"Setting of Content-Type.*" all) + (string-append all "return\n")) + (("@testset \"Deprecation of .*" all) + (string-append all "return\n"))) + (substitute* "test/websockets.jl" + (("@testset.*External Host.*" all) + (string-append all "return\n"))) + (substitute* "test/messages.jl" + (("@testset.*Read methods.*" all) + (string-append all "return\n")) + (("@testset.*Body - .*" all) + (string-append all "return\n")) + (("@testset.*Write to file.*" all) + (string-append all "return\n"))) + #t))))) + (propagated-inputs + `(("julia-inifile" ,julia-inifile) + ("julia-mbedtls" ,julia-mbedtls) + ("julia-uris" ,julia-uris))) + ;; required for tests + (inputs + `(("julia-json" ,julia-json) + ("julia-bufferedstreams" ,julia-bufferedstreams))) + (home-page "https://juliaweb.github.io/HTTP.jl/") + (synopsis "HTTP support for Julia") + (description "@code{HTTP.jl} is a Julia library for HTTP Messages, +implementing both a client and a server.") + (license license:expat))) + +(define-public julia-inifile + (package + (name "julia-inifile") + (version "0.5.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaIO/IniFile.jl") + (commit "8ba59958495fa276d6489d2c3903e765d75e0bc0"))) + (file-name (git-file-name name version)) + (sha256 + (base32 "11h6f99jpbg729lplw841m68jprka7q3n8yw390bndlmcdsjabpd")))) + (build-system julia-build-system) + (home-page "https://github.com/JuliaIO/IniFile.jl") + (synopsis "Reading Windows-style INI files") + (description "This is a Julia package that defines an IniFile type that +allows to interface with @file{.ini} files.") + (license license:expat))) + +(define-public julia-jllwrappers + (package + (name "julia-jllwrappers") + (version "1.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaPackaging/JLLWrappers.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1sj3mi2dcc13apqfpy401wic5n0pgbck1p98b2g3zw0mln9s83m4")))) + (arguments + ;; Wants to download stuff + '(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'custom-override-path + (lambda* (#:key inputs #:allow-other-keys) + ;; Make @generate_wrapper_header take an optional argument that + ;; guix packagers can pass to override the default "override" + ;; binary path. This won't be needed when something like + ;; https://github.com/JuliaPackaging/JLLWrappers.jl/pull/27 + ;; will be merged. + (substitute* "src/wrapper_generators.jl" + (("generate_wrapper_header.*") + "generate_wrapper_header(src_name, override_path = nothing)\n") + (("pkg_dir = .*" all) + (string-append + all "\n" "override = something(override_path," + "joinpath(dirname(pkg_dir), \"override\"))\n")) + (("@static if isdir.*") "@static if isdir($override)\n") + (("return joinpath.*") "return $override\n")) + #t))))) + (build-system julia-build-system) + (home-page "https://github.com/JuliaPackaging/JLLWrappers.jl") + (synopsis "Julia macros used by JLL packages") + (description "This package contains Julia macros that enable JLL packages +to generate themselves. It is not intended to be used by users, but rather is +used in autogenerated packages via @code{BinaryBuilder.jl}.") + (license license:expat))) + (define-public julia-json (package (name "julia-json") @@ -150,6 +322,76 @@ digits (bits) after the decimal (radix) point.") and printing JSON documents.") (license license:expat))) +(define-public julia-mbedtls + (package + (name "julia-mbedtls") + (version "1.0.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaLang/MbedTLS.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0zjzf2r57l24n3k0gcqkvx3izwn5827iv9ak0lqix0aa5967wvfb")))) + (build-system julia-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'install 'disable-network-tests + ;; Tries to connect to httpbin.org + (lambda _ + (substitute* "test/runtests.jl" + (("testhost =") "return #")) + #t))))) + (propagated-inputs `(("julia-mbedtls-jll" ,julia-mbedtls-jll))) + (home-page "https://github.com/JuliaLang/MbedTLS.jl") + (synopsis "Apache's mbed TLS library wrapper") + (description "@code{MbedTLS.jl} provides a wrapper around the @code{mbed +TLS} and cryptography C libary for Julia.") + (license license:expat))) + +(define-public julia-mbedtls-jll + (package + (name "julia-mbedtls-jll") + ;; version 2.25.0+0 is not compatible with current mbedtls 2.23.0, + ;; upgrade this when mbedtls is updated in guix + (version "2.24.0+1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaBinaryWrappers/MbedTLS_jll.jl") + (commit (string-append "MbedTLS-v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0kk9dlxdh7yms21npgrdfmjbj8q8ng6kdhrzw3jr2d7rp696kp99")))) + (build-system julia-build-system) + (arguments + '(#:tests? #f ; No runtests.jl + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'override-binary-path + (lambda* (#:key inputs #:allow-other-keys) + (map + (lambda (wrapper) + (substitute* wrapper + (("generate_wrapper_header.*") + (string-append + "generate_wrapper_header(\"MbedTLS\", \"" + (assoc-ref inputs "mbedtls-apache") "\")\n")))) + ;; There's a Julia file for each platform, override them all + (find-files "src/wrappers/" "\\.jl$")) + #t))))) + (inputs `(("mbedtls-apache" ,mbedtls-apache))) + (propagated-inputs `(("julia-jllwrappers" ,julia-jllwrappers))) + (home-page "https://github.com/JuliaBinaryWrappers/MbedTLS_jll.jl") + (synopsis "Apache's mbed TLS binary wrappers") + (description "This Julia module provides @code{mbed TLS} libraries and +wrappers.") + (license license:expat))) + (define-public julia-orderedcollections (package (name "julia-orderedcollections") @@ -216,3 +458,37 @@ languages like Fortran.") (description "@code{Parsers.jl} is a collection of type parsers and utilities for Julia.") (license license:expat))) + +(define-public julia-uris + (package + (name "julia-uris") + (version "1.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaWeb/URIs.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0fqyagsqks5za7m0czafr34m2xh5501f689k9cn5x3npajdnh2r3")))) + (build-system julia-build-system) + (arguments + '(#:julia-package-name "URIs" ;required to run tests + #:phases + (modify-phases %standard-phases + (add-before 'check 'change-dir + ;; Tests must be run from the testdir + (lambda* (#:key source outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (chdir + (string-append out "/share/julia/packages/URIs/test"))) + #t))))) + ;; required for tests + (inputs `(("julia-json" ,julia-json))) + (home-page "https://github.com/JuliaWeb/URIs.jl") + (synopsis "URI parsing in Julia") + (description "@code{URIs.jl} is a Julia package that allows parsing and +working with @acronym{URIs,Uniform Resource Identifiers}, as defined in RFC +3986.") + (license license:expat))) diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm index cb8cc74d33..35058363d3 100644 --- a/gnu/packages/kde-multimedia.scm +++ b/gnu/packages/kde-multimedia.scm @@ -68,7 +68,7 @@ ("ki18n" ,ki18n) ("kio" ,kio) ("libkcddb" ,libkcddb) - ("libkcompactdisc", libkcompactdisc) + ("libkcompactdisc" ,libkcompactdisc) ("libvorbis" ,libvorbis) ("phonon" ,phonon) ("qtbase" ,qtbase))) diff --git a/gnu/packages/kde-pim.scm b/gnu/packages/kde-pim.scm index e055f9a9fd..d790e94c87 100644 --- a/gnu/packages/kde-pim.scm +++ b/gnu/packages/kde-pim.scm @@ -229,7 +229,7 @@ to list and filter contacts.") ("shared-mime-info" ,shared-mime-info))) (inputs `(("akonadi" ,akonadi) - ("boost", boost) + ("boost" ,boost) ("kcodecs" ,kcodecs) ("kconfig" ,kconfig) ("kconfigwidgets" ,kconfigwidgets) @@ -469,7 +469,7 @@ CalDAV server.") (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) (inputs - `(("akonadi", akonadi) + `(("akonadi" ,akonadi) ("boost" ,boost) ("kcalendarcore" ,kcalendarcore) ("kcalutils" ,kcalutils) @@ -551,7 +551,7 @@ one of the APIs mentioned above.") ("akonadi-mime" ,akonadi-mime) ("boost" ,boost) ("kcalendarcore" ,kcalendarcore) - ("kcalutils", kcalutils) + ("kcalutils" ,kcalutils) ("kcompletion" ,kcompletion) ("kdbusaddons" ,kdbusaddons) ("kdepim-apps-libs" ,kdepim-apps-libs) @@ -796,7 +796,7 @@ package.") ("kcalendarcore" ,kcalendarcore) ("kcalendarsupport" ,kcalendarsupport) ("kcalutils" ,kcalutils) - ("kcodecs", kcodecs) + ("kcodecs" ,kcodecs) ("kcompletion" ,kcompletion) ("kconfigwidgets" ,kconfigwidgets) ("kcontacts" ,kcontacts) @@ -1252,7 +1252,7 @@ e-mail client programs into KMail and KDE PIM.") ("kdbusaddons" ,kdbusaddons) ("kconfigwidgets" ,kconfigwidgets) ("ki18n" ,ki18n) - ("kitemmodels", kitemmodels) + ("kitemmodels" ,kitemmodels) ("kio" ,kio) ("kmime" ,kmime) ("ksmtp" ,ksmtp) @@ -1737,7 +1737,7 @@ Virtual Contact File}) files to the KPeople contact management library.") ("kwidgetsaddons" ,kwidgetsaddons) ("kxmlgui" ,kxmlgui) ("qtbase" ,qtbase) - ("qtspeech", qtspeech) + ("qtspeech" ,qtspeech) ("sonnet" ,sonnet))) (arguments `(#:tests? #f)) ;; TODO - test suite hangs diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm index 3e05b26ea9..213def42e3 100644 --- a/gnu/packages/kde.scm +++ b/gnu/packages/kde.scm @@ -616,15 +616,14 @@ used in KDE development tools Kompare and KDevelop.") (define-public qca (package (name "qca") - (version "2.3.1") + (version "2.3.2") (source (origin (method url-fetch) (uri (string-append "mirror://kde/stable/qca/" version "/qca-" version ".tar.xz")) (sha256 - (base32 - "0jsfjwz84fc5jnl16aiwrcd6pgs5lzizm2896wildz5yk8852f61")))) + (base32 "0vb0kwm4vpf71vczadg6h1ib09sgca0crll7ksbkmg646w1615s6")))) (build-system cmake-build-system) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm index 651b2305c9..d4b9b8d4cb 100644 --- a/gnu/packages/language.scm +++ b/gnu/packages/language.scm @@ -61,9 +61,7 @@ #:use-module (guix build-system perl) #:use-module (guix build-system python) #:use-module (guix build-system qt) - #:use-module ((guix licenses) - #:select - (bsd-3 gpl2 gpl2+ gpl3 gpl3+ lgpl2.1 lgpl2.1+ lgpl3+ perl-license zpl2.1 fdl1.2+)) + #:use-module ((guix licenses) #:prefix license:) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix utils)) @@ -85,7 +83,7 @@ (sha256 (base32 "01qi7flmaqrn2fk03sa42r0caks9d8lsv88s0bgxahhxwk1x76gc")))) (build-system glib-or-gtk-build-system) - (outputs '("out" "doc")) + (outputs '("out" "gtk" "qt" "doc")) (arguments `(#:imported-modules (,@%glib-or-gtk-build-system-modules @@ -105,7 +103,15 @@ "/share/gtk-doc/html")) #:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-flags + (add-after 'unpack 'disable-qt4 + (lambda _ + (substitute* '("configure.ac" "modules/clients/Makefile.am") + (("\\[QtGui\\]") + "[Qt5Gui]") + ((" qt4") + "")) + #t)) + (add-after 'disable-qt4 'patch-flags (lambda* (#:key inputs #:allow-other-keys) (substitute* "configure.ac" (("-Werror") @@ -134,18 +140,14 @@ "/bin:$GTK2_LIBDIR/libgtk2.0-0"))) (substitute* "modules/clients/gtk/Makefile.am" (("\\$\\(GTK3_LIBDIR\\)") - (string-append (assoc-ref outputs "out") + (string-append (assoc-ref outputs "gtk") "/lib")) (("\\$\\(GTK2_LIBDIR\\)") - (string-append (assoc-ref outputs "out") - "/lib"))) - (substitute* "modules/clients/qt4/Makefile.am" - (("\\$\\(QT4_LIB_DIR\\)") - (string-append (assoc-ref outputs "out") + (string-append (assoc-ref outputs "gtk") "/lib"))) (substitute* "modules/clients/qt5/Makefile.am" (("\\$\\(QT5_IM_MODULE_DIR\\)") - (string-append (assoc-ref outputs "out") + (string-append (assoc-ref outputs "qt") "/lib/qt5/plugins/inputmethods"))) (substitute* '("bin/nimf-settings/Makefile.am" "data/apparmor-abstractions/Makefile.am" @@ -182,7 +184,6 @@ ("hangul" ,libhangul) ("m17n-db" ,m17n-db) ("m17n-lib" ,m17n-lib) - ("qt-4" ,qt-4) ("qtbase" ,qtbase) ("rime" ,librime) ("rsvg" ,librsvg) @@ -198,7 +199,7 @@ framework. This package provides a fork of the original nimf project, that focusses especially on Korean input (Hangul, Hanja, ...).") (home-page "https://github.com/hamonikr/nimf/") - (license lgpl3+))) + (license license:lgpl3+))) (define-public hime (package @@ -262,12 +263,8 @@ is lightweight, stable, powerful and supports many commonly used input methods, including Cangjie, Zhuyin, Dayi, Ranked, Shrimp, Greek, Anthy, Korean, Latin, Random Cage Fighting Birds, Cool Music etc.") (home-page "http://hime-ime.github.io/") - (license - (list - gpl2+ - lgpl2.1+ - ;; Documentation - fdl1.2+)))) + (license (list license:gpl2+ license:lgpl2.1+ + license:fdl1.2+)))) ; documentation (define-public libchewing (package @@ -328,7 +325,7 @@ Random Cage Fighting Birds, Cool Music etc.") (description "Chewing is an intelligent phonetic (Zhuyin/Bopomofo) input method, one of the most popular choices for Traditional Chinese users.") (home-page "http://chewing.im/") - (license lgpl2.1+))) + (license license:lgpl2.1+))) (define-public liblouis (package @@ -380,8 +377,8 @@ support a rule- or dictionary based approach. Tools for testing and debugging tables are also included. Liblouis also supports math braille, Nemeth and Marburg.") (home-page "http://liblouis.org/") - (license (list lgpl2.1+ ; library - gpl3+)))) ; tools + (license (list license:lgpl2.1+ ; library + license:gpl3+)))) ; tools (define-public liblouisutdml (package @@ -421,8 +418,8 @@ transcription services for xml, html and text documents. It translates into appropriate braille codes and formats according to its style sheet and the specifications in the document.") (home-page "http://liblouis.org/") - (license (list lgpl3+ ; library - gpl3+)))) ; tools + (license (list license:lgpl3+ ; library + license:gpl3+)))) ; tools (define-public libstemmer (package @@ -459,7 +456,7 @@ specifications in the document.") (description "LibStemmer provides stemming library, supporting several languages.") (home-page "https://snowballstem.org/") - (license bsd-3))) + (license license:bsd-3))) (define-public perl-lingua-en-findnumber (package @@ -481,7 +478,7 @@ languages.") (description "This module provides a regular expression for finding numbers in English text. It also provides functions for extracting and manipulating such numbers.") - (license perl-license))) + (license license:perl-license))) (define-public perl-lingua-en-inflect (package @@ -504,7 +501,7 @@ manipulating such numbers.") words. Plural forms of all nouns, most verbs, and some adjectives are provided. Where appropriate, \"classical\" variants (for example: \"brother\" -> \"brethren\", \"dogma\" -> \"dogmata\", etc.) are also provided.") - (license perl-license))) + (license license:perl-license))) (define-public perl-lingua-en-inflect-number (package @@ -526,7 +523,7 @@ provided. Where appropriate, \"classical\" variants (for example: \"brother\" (description "This module extends the functionality of Lingua::EN::Inflect with three new functions for determining plurality of a word and forcefully converting a word to singular or plural.") - (license perl-license))) + (license license:perl-license))) (define-public perl-lingua-en-inflect-phrase (package @@ -553,7 +550,7 @@ converting a word to singular or plural.") (synopsis "Inflect short English phrases") (description "This module attempts to pluralize or singularize short English phrases.") - (license perl-license))) + (license license:perl-license))) (define-public perl-lingua-en-number-isordinal (package @@ -577,7 +574,7 @@ English phrases.") (synopsis "Detect if English number is ordinal or cardinal") (description "This module will tell you if a number, either in words or as digits, is a cardinal or ordinal number.") - (license perl-license))) + (license license:perl-license))) (define-public perl-lingua-en-tagger (package @@ -607,7 +604,7 @@ appropriate tag for the current word. Unknown words are classified according to word morphology or can be set to be treated as nouns or other parts of speech. The tagger also extracts as many nouns and noun phrases as it can, using a set of regular expressions.") - (license gpl3))) + (license license:gpl3))) (define-public perl-lingua-en-words2nums (package @@ -626,7 +623,7 @@ using a set of regular expressions.") (synopsis "Convert English text to numbers") (description "This module converts English text into numbers. It supports both ordinal and cardinal numbers, negative numbers, and very large numbers.") - (license perl-license))) + (license license:perl-license))) (define-public perl-lingua-pt-stemmer (package @@ -646,7 +643,7 @@ both ordinal and cardinal numbers, negative numbers, and very large numbers.") (description "This module implements a Portuguese stemming algorithm proposed in the paper A Stemming Algorithm for the Portuguese Language by Moreira, V. and Huyck, C.") - (license perl-license))) + (license license:perl-license))) (define-public perl-lingua-stem (package @@ -676,7 +673,7 @@ Moreira, V. and Huyck, C.") (synopsis "Stemming of words in various languages") (description "This routine applies stemming algorithms to its parameters, returning the stemmed words as appropriate to the selected locale.") - (license perl-license))) + (license license:perl-license))) (define-public perl-lingua-stem-fr (package @@ -695,7 +692,7 @@ returning the stemmed words as appropriate to the selected locale.") (synopsis "Porter's stemming algorithm for French") (description "This module uses a modified version of the Porter Stemming Algorithm to return a stemmed French word.") - (license perl-license))) + (license license:perl-license))) (define-public perl-lingua-stem-it (package @@ -714,7 +711,7 @@ Algorithm to return a stemmed French word.") (synopsis "Porter's stemming algorithm for Italian") (description "This module applies the Porter Stemming Algorithm to its parameters, returning the stemmed Italian word.") - (license perl-license))) + (license license:perl-license))) (define-public perl-lingua-stem-ru (package @@ -733,7 +730,7 @@ parameters, returning the stemmed Italian word.") (synopsis "Porter's stemming algorithm for Russian") (description "This module applies the Porter Stemming Algorithm to its parameters, returning the stemmed Russian (KOI8-R only) word.") - (license perl-license))) + (license license:perl-license))) (define-public perl-lingua-stem-snowball-da (package @@ -753,7 +750,7 @@ parameters, returning the stemmed Russian (KOI8-R only) word.") (description "Lingua::Stem::Snowball::Da is a perl port of the danish stemmer at http://snowball.sourceforge.net, it was originally altered from the Lingua::Stem::Snowball::Se.") - (license gpl2))) + (license license:gpl2))) (define-public perl-snowball-norwegian (package @@ -773,7 +770,7 @@ Lingua::Stem::Snowball::Se.") (synopsis "Porters stemming algorithm for Norwegian") (description "Lingua::Stem::Snowball::No is a perl port of the norwegian stemmer at http://snowball.tartarus.org.") - (license perl-license))) + (license license:perl-license))) (define-public perl-snowball-swedish (package @@ -793,7 +790,7 @@ stemmer at http://snowball.tartarus.org.") (synopsis "Porters stemming algorithm for Swedish") (description "Lingua::Stem::Snowball::Se is a perl port of the swedish stemmer at http://snowball.sourceforge.net.") - (license perl-license))) + (license license:perl-license))) (define-public perl-string-toidentifier-en (package @@ -819,7 +816,7 @@ converting an arbitrary string into a readable representation using the ASCII subset of \"\\w\" for use as an identifier in a computer program. The intent is to make unique identifier names from which the content of the original string can be easily inferred by a human just by reading the identifier.") - (license perl-license))) + (license license:perl-license))) (define-public perl-text-german (package @@ -838,7 +835,7 @@ string can be easily inferred by a human just by reading the identifier.") (synopsis "German grundform reduction") (description "This module is a rather incomplete implementation of work done by Gudrun Putze-Meier.") - (license perl-license))) + (license license:perl-license))) (define* (tegaki-release-uri proj version #:optional (ext "tar.gz")) @@ -905,7 +902,7 @@ extensions in EXTS." modern implementation of handwriting recognition software, specifically designed for Chinese (simplified and traditional) and Japanese, and that is suitable for both the desktop and mobile devices.") - (license gpl2+))) ; all files + (license license:gpl2+))) ; all files (define-public python2-tegaki-python (package @@ -950,9 +947,9 @@ suitable for both the desktop and mobile devices.") ("python2-zinnia" ,python2-zinnia))) (synopsis "Chinese and Japanese Handwriting Recognition (Base python library)") - (license (list gpl2+ ; all files except... - bsd-3 ; dictutils.py - zpl2.1)))) ; minjson.py + (license (list license:gpl2+ ; all files except... + license:bsd-3 ; dictutils.py + license:zpl2.1)))) ; minjson.py (define-public python2-tegaki-pygtk (package @@ -988,7 +985,7 @@ suitable for both the desktop and mobile devices.") `(("python2-pygtk" ,python2-pygtk) ("python2-tegaki-python" ,python2-tegaki-python))) (synopsis "Chinese and Japanese Handwriting Recognition (Base UI library)") - (license gpl2+))) ; all files + (license license:gpl2+))) (define-public python2-tegaki-tools (package @@ -1015,7 +1012,7 @@ suitable for both the desktop and mobile devices.") (synopsis "Chinese and Japanese Handwriting Recognition (Advanced tools)") ;; Files in gifenc/ are licensed under gpl3+ while other files are licensed ;; under gpl2+. Therefore, the combined work is licensed under gpl3+. - (license gpl3+))) + (license license:gpl3+))) (define-public python2-tegaki-recognize (let ((commit "eceec69fe651d0733c8c8752dae569d2283d0f3c") @@ -1067,7 +1064,7 @@ suitable for both the desktop and mobile devices.") "--root=/") #t)))))) (synopsis "Chinese and Japanese Handwriting Recognition (Main program)") - (license gpl2+)))) ; all files + (license license:gpl2+)))) (define-public tegaki-zinnia-japanese (package @@ -1104,7 +1101,7 @@ suitable for both the desktop and mobile devices.") (variable "TEGAKI_MODEL_PATH") (files '("share/tegaki/models"))))) (synopsis "Chinese and Japanese Handwriting Recognition (Model)") - (license lgpl2.1))) ; all files + (license license:lgpl2.1))) (define-public tegaki-zinnia-japanese-light (package @@ -1120,7 +1117,7 @@ suitable for both the desktop and mobile devices.") "0x0fs29ylqzxd6xvg51h7rigpbisd7q8v11df425ib2j792yfyf8")) (modules remove-pre-compiled-files-modules) (snippet (remove-pre-compiled-files "model")))) - (license lgpl2.1))) ; all files + (license license:lgpl2.1))) (define-public tegaki-zinnia-japanese-kyoiku (package @@ -1136,7 +1133,7 @@ suitable for both the desktop and mobile devices.") "0am94bcpmbzplxdnwn9gk15sgaizvcfhmv13mk14jjvx3419cvvx")) (modules remove-pre-compiled-files-modules) (snippet (remove-pre-compiled-files "model")))) - (license lgpl2.1))) ; all files + (license license:lgpl2.1))) (define-public tegaki-zinnia-japanese-joyo (package @@ -1152,7 +1149,7 @@ suitable for both the desktop and mobile devices.") "1v0j40lzdyiz01ayws0b8r7fsdy2mr32658382kz4wyk883wzx2z")) (modules remove-pre-compiled-files-modules) (snippet (remove-pre-compiled-files "model")))) - (license lgpl2.1))) ; all files + (license license:lgpl2.1))) (define-public tegaki-zinnia-simplified-chinese (package @@ -1168,7 +1165,7 @@ suitable for both the desktop and mobile devices.") "18wq0jccv7lpnrfnzspyc110d6pj2v1i21xcx4fmgzz1lnln3fs5")) (modules remove-pre-compiled-files-modules) (snippet (remove-pre-compiled-files "model")))) - (license lgpl2.1))) ; all files + (license license:lgpl2.1))) (define-public tegaki-zinnia-simplified-chinese-light (package @@ -1184,7 +1181,7 @@ suitable for both the desktop and mobile devices.") "0v24yf0w0p03lb7fyx128a75mwzad166bigvlbrzqnad789qg1sr")) (modules remove-pre-compiled-files-modules) (snippet (remove-pre-compiled-files "model")))) - (license lgpl2.1))) ; all files + (license license:lgpl2.1))) (define-public tegaki-zinnia-traditional-chinese (package @@ -1200,7 +1197,7 @@ suitable for both the desktop and mobile devices.") "140nlp6hynrai2svs5670jjfw1za6ayflhyj2dl0bzsfgbk3447l")) (modules remove-pre-compiled-files-modules) (snippet (remove-pre-compiled-files "model")))) - (license lgpl2.1))) ; all files + (license license:lgpl2.1))) (define-public tegaki-zinnia-traditional-chinese-light (package @@ -1216,7 +1213,7 @@ suitable for both the desktop and mobile devices.") "1m6yk6a57vs9wg5y50qciwi1ahhmklp2mgsjysbj4mnyzv6yhcr2")) (modules remove-pre-compiled-files-modules) (snippet (remove-pre-compiled-files "model")))) - (license lgpl2.1))) ; all files + (license license:lgpl2.1))) (define-public tegaki-wagomu-japanese (package @@ -1232,7 +1229,7 @@ suitable for both the desktop and mobile devices.") "0flj5id8xwsn7csrrzqz9prdikswnwm2wms0as2vzdpxzph1az4k")) (modules remove-pre-compiled-files-modules) (snippet (remove-pre-compiled-files "model")))) - (license lgpl2.1))) ; all files + (license license:lgpl2.1))) (define-public tegaki-wagomu-japanese-kyoiku (package @@ -1248,7 +1245,7 @@ suitable for both the desktop and mobile devices.") "0v8crfh8rdf6ndp16g52s5jlrrlwh73xp38zjn5i9dlacx8kfqg1")) (modules remove-pre-compiled-files-modules) (snippet (remove-pre-compiled-files "model")))) - (license lgpl2.1))) ; all files + (license license:lgpl2.1))) (define-public tegaki-wagomu-japanese-joyo (package @@ -1264,7 +1261,7 @@ suitable for both the desktop and mobile devices.") "0wk8shpr963zp328g991qs6abpnacq4242003m687z2d6yp7nph2")) (modules remove-pre-compiled-files-modules) (snippet (remove-pre-compiled-files "model")))) - (license lgpl2.1))) ; all files + (license license:lgpl2.1))) (define-public tegaki-wagomu-simplified-chinese (package @@ -1280,7 +1277,7 @@ suitable for both the desktop and mobile devices.") "0wqprynigqxqxv128i1smh81gxvmjj056d9qpznxa3n9f5ymlbj6")) (modules remove-pre-compiled-files-modules) (snippet (remove-pre-compiled-files "model")))) - (license lgpl2.1))) ; all files + (license license:lgpl2.1))) ;;; Upstream does not provide the source for tegaki-wagomu-traditional-chinese. ;;; Therefore, we use the source for tegaki-zinnia-traditional-chinese and @@ -1301,7 +1298,7 @@ suitable for both the desktop and mobile devices.") (substitute* "Makefile" (("zinnia") "wagomu")) #t)))))) - (license lgpl2.1))) ; all files + (license license:lgpl2.1))) (define-public link-grammar (package @@ -1325,7 +1322,7 @@ system assigns to it a syntactic structure, which consists of a set of labelled links connecting pairs of words. The parser also produces a \"constituent\" (HPSG style phrase tree) representation of a sentence (showing noun phrases, verb phrases, etc.).") - (license bsd-3))) + (license license:bsd-3))) (define-public praat (package @@ -1368,4 +1365,4 @@ noun phrases, verb phrases, etc.).") (description "Praat is a tool to perform phonetics tasks. It can do speech analysis (pitch, formant, intensity, ...), speech synthesis, labelling, segmenting and manipulation.") - (license gpl2+))) + (license license:gpl2+))) diff --git a/gnu/packages/libcanberra.scm b/gnu/packages/libcanberra.scm index 2d08fb46e3..e263ba2efc 100644 --- a/gnu/packages/libcanberra.scm +++ b/gnu/packages/libcanberra.scm @@ -105,7 +105,7 @@ null) and is designed to be portable.") (license lgpl2.1+))) (define-public libcanberra/gtk+-2 - (package (inherit libcanberra) + (package/inherit libcanberra (name "libcanberra-gtk2") (inputs `(,@(alist-delete "gtk+" (package-inputs libcanberra)) ("gtk+" ,gtk+-2))))) diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm index 8ae7c4c131..147e25303b 100644 --- a/gnu/packages/libevent.scm +++ b/gnu/packages/libevent.scm @@ -116,6 +116,7 @@ limited support for fork events.") '(#:configure-flags '("--disable-static") ;; XXX: Some tests want /dev/tty, attempt to make connections, etc. #:tests? #f)) + ;; TODO replace with autoconf on core-updates (native-inputs `(("autoconf" ,autoconf-wrapper) ("automake" ,automake) ("libtool" ,libtool) diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm index afa542412f..382b3a912b 100644 --- a/gnu/packages/linphone.scm +++ b/gnu/packages/linphone.scm @@ -35,6 +35,8 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages image) #:use-module (gnu packages linux) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages perl) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) @@ -57,28 +59,70 @@ #:use-module (guix build-system gnu)) (define-public bcunit - (package - (name "bcunit") - (version "3.0.2") - (source - (origin - (method url-fetch) - (uri - (string-append "https://www.linphone.org/releases/sources/" name - "/" name "-" version ".tar.gz")) - (sha256 - (base32 "0ylchj8w98ic2fkqpxc6yk4s6s0h0ql2zsz5n49jd7126m4h8dqk")))) - (build-system cmake-build-system) - (arguments - '(#:tests? #f ; No test target - #:configure-flags - (list "-DENABLE_STATIC=NO"))) ; Not required - (synopsis "Belledonne Communications Unit Testing Framework") - (description "BCUnit is a fork of the defunct project CUnit, with several -fixes and patches applied. It is an unit testing framework for writing, -administering, and running unit tests in C.") - (home-page "https://gitlab.linphone.org/BC/public/bcunit") - (license license:lgpl2.0+))) + (let ((commit "74021cc7cb20a4e177748dd2948173e1f9c270ae") + (revision "0")) + (package + (name "bcunit") + (version (git-version "3.0.2" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "git://git.linphone.org/bcunit") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0npdwvanjkfg9vrqs5yi8vh6wliv50ycdli8pzavir84nb31nq1b")))) + (build-system cmake-build-system) + (outputs '("out" "doc")) + (arguments + `(#:configure-flags (list "-DENABLE_STATIC=NO" + "-DENABLE_CURSES=ON" + "-DENABLE_DOC=ON" + "-DENABLE_EXAMPLES=ON" + "-DENABLE_TEST=ON" + "-DENABLE_MEMTRACE=ON") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-source + (lambda _ + ;; Include BCunit headers for examples. + (substitute* "Examples/CMakeLists.txt" + (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}") + (string-append "${CMAKE_CURRENT_SOURCE_DIR} " + "${PROJECT_SOURCE_DIR}/BCUnit/Headers " + "${CMAKE_BINARY_DIR}/BCUnit/Headers"))) + ;; Link bcunit and bcunit_tests libraries. + (substitute* "BCUnit/Sources/CMakeLists.txt" + (("target_include_directories\\(bcunit_test PUBLIC Test\\)") + (string-append + "target_include_directories(bcunit_test PUBLIC Test)\n" + "target_link_libraries(bcunit_test bcunit)"))))) + (replace 'check + (lambda _ + (with-directory-excursion "BCUnit/Sources/Test" + (invoke "./test_bcunit")))) + (add-after 'install 'move-doc + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (doc (assoc-ref outputs "doc"))) + (for-each mkdir-p + `(,(string-append doc "/share/doc") + ,(string-append doc "/share/BCUnit"))) + (rename-file + (string-append out "/share/doc/BCUnit") + (string-append doc "/share/doc/BCUnit")) + (rename-file + (string-append out "/share/BCUnit/Examples") + (string-append doc "/share/BCUnit/Examples")))))))) + (inputs + `(("ncurses" ,ncurses))) + (synopsis "Belledonne Communications Unit Testing Framework") + (description "BCUnit is a fork of the defunct project CUnit, with +several fixes and patches applied. It is a unit testing framework for +writing, administering, and running unit tests in C.") + (home-page "https://gitlab.linphone.org/BC/public/bcunit") + (license license:lgpl2.0+)))) (define-public bctoolbox (package diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index adfc8ac358..3647c91101 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -354,7 +354,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; The current "stable" kernels. That is, the most recently released major ;; versions that are still supported upstream. -(define-public linux-libre-5.11-version "5.11.3") +(define-public linux-libre-5.11-version "5.11.8") (define deblob-scripts-5.11 (linux-libre-deblob-scripts linux-libre-5.11-version @@ -362,7 +362,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "0yvr80g200hdryz54gdnzj4fl38pf7g4qbgj475rhcfwixhp1j7n"))) (define-public linux-libre-5.11-pristine-source (let ((version linux-libre-5.11-version) - (hash (base32 "1znbn7n2jzm2rd7gsfj897lgrvaw48ljqfyza3166mw0nc5wfn1m"))) + (hash (base32 "17y8q0gy4b00rms6pgglzmzz4msvmn2frqvln9vac39m78k3kyci"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.11))) @@ -370,7 +370,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; The "longterm" kernels — the older releases with long-term upstream support. ;; Here are the support timelines: ;; <https://www.kernel.org/category/releases.html> -(define-public linux-libre-5.10-version "5.10.20") +(define-public linux-libre-5.10-version "5.10.25") (define deblob-scripts-5.10 (linux-libre-deblob-scripts linux-libre-5.10-version @@ -378,12 +378,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "0hh27ccqimagr3aij7ygwikxw66y63sqwd0xlf49bhpjd090r9a7"))) (define-public linux-libre-5.10-pristine-source (let ((version linux-libre-5.10-version) - (hash (base32 "18rh56aqc7ysr309prfml6sr0a81v6kh1ybw2c2vwhmszr373qwv"))) + (hash (base32 "1p8s8vp5b6vjmvhj3plm0pr0d9qp5lrwm6l40a4bjr1vk9myf2lk"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.10))) -(define-public linux-libre-5.4-version "5.4.102") +(define-public linux-libre-5.4-version "5.4.107") (define deblob-scripts-5.4 (linux-libre-deblob-scripts linux-libre-5.4-version @@ -391,12 +391,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1xghbbnaisjd0k1klbyn1p7r6r4x5a1bpmkm56a3gh2zvw4s7mj8"))) (define-public linux-libre-5.4-pristine-source (let ((version linux-libre-5.4-version) - (hash (base32 "1vcscg7cn8qycay913nbc1xl1691anhvakkxwx54s0pnqghpqsgx"))) + (hash (base32 "0q3m4d96d0hhhzn71aarh314i4cx9h3qvhhi5hrmcsrnbxafyg0w"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.4))) -(define-public linux-libre-4.19-version "4.19.178") +(define-public linux-libre-4.19-version "4.19.182") (define deblob-scripts-4.19 (linux-libre-deblob-scripts linux-libre-4.19-version @@ -404,12 +404,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1jiaw0as1ippkrjdpd52657w5mz9qczg3y2hlra7m9k0xawwiqlf"))) (define-public linux-libre-4.19-pristine-source (let ((version linux-libre-4.19-version) - (hash (base32 "1vln86ksignzw3d2xk5qgc5a2vghngczfsk949dn3r5dxygvlx8b"))) + (hash (base32 "0r93mgvjypmj0glg0912vfq9zbagi59w4d88ynz5gm8sl05pbnq5"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.19))) -(define-public linux-libre-4.14-version "4.14.223") +(define-public linux-libre-4.14-version "4.14.226") (define deblob-scripts-4.14 (linux-libre-deblob-scripts linux-libre-4.14-version @@ -417,12 +417,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1qij18inijj6c3ma8hv98yjagnzxdxyn134da9fd23ky8q6hbvky"))) (define-public linux-libre-4.14-pristine-source (let ((version linux-libre-4.14-version) - (hash (base32 "04zn74k1b7hfnfdi9fgifrn4jz0j00d4ymp8vhgbrdj75jrmynhs"))) + (hash (base32 "09llp8jl5xgxxzj0f2sfx32annwyz82k1zmgd26zy90lz0d09p3s"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.14))) -(define-public linux-libre-4.9-version "4.9.259") +(define-public linux-libre-4.9-version "4.9.262") (define deblob-scripts-4.9 (linux-libre-deblob-scripts linux-libre-4.9-version @@ -430,12 +430,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "0fxajshb75siq39lj5h8xvhdj8lcmddkslwlyj65rhlwk6g2r4b2"))) (define-public linux-libre-4.9-pristine-source (let ((version linux-libre-4.9-version) - (hash (base32 "1r71vgbw17srsjdmsdr1jra7v412mhiysi4kpa77y29r2h3zk5r3"))) + (hash (base32 "1zq77x9zf1wbk8n17rnblm5lfwlkin1xnxb3sxirwb9njm07cbmj"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.9))) -(define-public linux-libre-4.4-version "4.4.259") +(define-public linux-libre-4.4-version "4.4.262") (define deblob-scripts-4.4 (linux-libre-deblob-scripts linux-libre-4.4-version @@ -443,7 +443,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "0hhin1jpfkd6nwrb6xqxjzl3hdxy4pn8a15hy2d3d83yw6pflbsf"))) (define-public linux-libre-4.4-pristine-source (let ((version linux-libre-4.4-version) - (hash (base32 "18mw4xgza2szgz9x7lq3nzbf48cfkg2g4rli5p5ix4w3ni34h0sr"))) + (hash (base32 "0yz9qi4i46ndshxmb99kvv7lk6cbb09y7bzagq7sgvqaj4lwaw6j"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.4))) @@ -965,6 +965,18 @@ It has been modified to remove all non-free binary blobs.") (define-public linux-libre-arm-veyron (deprecated-package "linux-libre-arm-veyron" linux-libre-arm-generic)) +(define-public linux-libre-arm-generic-5.10 + (make-linux-libre* linux-libre-5.10-version + linux-libre-5.10-source + '("armhf-linux") + #:defconfig "multi_v7_defconfig" + #:extra-version "arm-generic" + #:extra-options + (append + `(;; needed to fix the RTC on rockchip platforms + ("CONFIG_RTC_DRV_RK808" . #t)) + %default-extra-linux-options))) + (define-public linux-libre-arm-generic-5.4 (make-linux-libre* linux-libre-5.4-version linux-libre-5.4-source @@ -1033,6 +1045,27 @@ It has been modified to remove all non-free binary blobs.") ("CONFIG_AXP20X_ADC" . m)) %default-extra-linux-options))) +(define-public linux-libre-arm64-generic-5.10 + (make-linux-libre* linux-libre-5.10-version + linux-libre-5.10-source + '("aarch64-linux") + #:defconfig "defconfig" + #:extra-version "arm64-generic" + #:extra-options + (append + `(;; needed to fix the RTC on rockchip platforms + ("CONFIG_RTC_DRV_RK808" . #t) + ;; Pinebook display, battery, charger and usb + ("CONFIG_DRM_ANALOGIX_ANX6345" . m) + ("CONFIG_CHARGER_AXP20X" . m) + ("CONFIG_INPUT_AXP20X_PEK" . m) + ("CONFIG_CHARGER_AXP20X" . m) + ("CONFIG_BATTERY_AXP20X" . m) + ("CONFIG_PINCTRL_AXP209" . m) + ("CONFIG_AXP20X_POWER" . m) + ("CONFIG_AXP20X_ADC" . m)) + %default-extra-linux-options))) + (define-public linux-libre-arm64-generic-5.4 (make-linux-libre* linux-libre-5.4-version linux-libre-5.4-source @@ -4941,7 +4974,7 @@ and copy/paste text in the console and in xterm.") (define-public btrfs-progs (package (name "btrfs-progs") - (version "5.10.1") + (version "5.11") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/linux/kernel/" @@ -4949,7 +4982,7 @@ and copy/paste text in the console and in xterm.") "btrfs-progs-v" version ".tar.xz")) (sha256 (base32 - "0i03vajakg1glbql1cv7xy0k71zvpd2whdwymmrz9rza3xrwqy8k")))) + "0dq1ryji9hmq10zbyk083lp9r212524a3naai47whq11m6q626fl")))) (build-system gnu-build-system) (outputs '("out" "static")) ; static versions of the binaries in "out" @@ -5658,7 +5691,7 @@ The collection contains a set of bandwidth and latency benchmark such as: (package (name "rng-tools") (home-page "https://github.com/nhorman/rng-tools") - (version "6.11") + (version "6.12") (source (origin (method git-fetch) (uri (git-reference (url home-page) @@ -5666,7 +5699,7 @@ The collection contains a set of bandwidth and latency benchmark such as: (file-name (git-file-name name version)) (sha256 (base32 - "0wwvi8a8k2ahhmwln4w970b8gd3in3g13jkbsapkpnspwmlqj5xa")))) + "0z4j3kqh9k3zsrx6257hwh4fa51vqg79c6dnfrj6lhpcll0wh0hm")))) (build-system gnu-build-system) (arguments `(;; Disable support for various hardware entropy sources as they need @@ -5767,7 +5800,7 @@ cpufreq sub-system is enabled or not.") (define-public haveged (package (name "haveged") - (version "1.9.13") + (version "1.9.14") (source (origin (method git-fetch) @@ -5776,7 +5809,7 @@ cpufreq sub-system is enabled or not.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0g3hcvpky76cabgcfqh65fay7nnjkms32sgmlf33q969833hijqz")))) + (base32 "050hmnh5s2s4mb83f4d1fk23mk27pprg840c1aagc6v1sz6x5dhq")))) (build-system gnu-build-system) (home-page "https://www.issihosts.com/haveged") (synopsis "Entropy source for the Linux random number generator") @@ -6133,15 +6166,17 @@ interface to the variable facility of UEFI boot firmware.") (define-public efibootmgr (package (name "efibootmgr") - (version "16") - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/rhinstaller/efibootmgr" - "/releases/download/" version "/efibootmgr" - "-" version ".tar.bz2")) - (sha256 - (base32 - "0pzn67vxxaf7jna4cd0i4kqm60h04kb21hckksv9z82q9gxra1wm")))) + (version "17") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rhinstaller/efibootmgr") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1niicijxg59rsmiw3rsjwy4bvi1n42dynvm01lnp9haixdzdpq03")) + (patches (search-patches "efibootmgr-remove-extra-decl.patch")))) (build-system gnu-build-system) (arguments `(#:tests? #f ;no tests @@ -6971,7 +7006,7 @@ interface to this kernel feature.") (define-public mbpfan (package (name "mbpfan") - (version "2.1.1") + (version "2.2.1") (source (origin (method git-fetch) @@ -6980,7 +7015,7 @@ interface to this kernel feature.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0aijyxrqh01x0s80yr4cgxgd001iiqqph65pxvby7f0wz8lnxnqj")))) + (base32 "0gc9ypxi55vxs77nx8ihhh9zk7fr9v0m0zfm76q7x0bi6jz11mbr")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; tests ask to be run as root @@ -7152,7 +7187,7 @@ IP addresses and routes, and configure IPsec.") (define-public libinih (package (name "libinih") - (version "52") + (version "53") (source (origin (method git-fetch) (uri (git-reference @@ -7161,7 +7196,7 @@ IP addresses and routes, and configure IPsec.") (file-name (git-file-name name version)) (sha256 (base32 - "0lsvm34zabvi1xlximybzvgc58zb90mm3b9babwxlqs05jy871m4")))) + "0dqf5j2sw4hq68rqvxbrsf44ygfzx9ypiyzipk4cvp9aimbvsbc6")))) (build-system meson-build-system) (arguments '(#:configure-flags '("-Ddistro_install=true" "-Ddefault_library=shared"))) @@ -7177,7 +7212,7 @@ compatible with Python's ConfigParser style of .INI files, including RFC (define-public xfsprogs (package (name "xfsprogs") - (version "5.10.0") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append @@ -7185,7 +7220,7 @@ compatible with Python's ConfigParser style of .INI files, including RFC "xfsprogs-" version ".tar.gz")) (sha256 (base32 - "1wcvcv9fl955g3zl68057hq7pp9bm7i733vc7j6xr6wnfd8qf6sr")))) + "1byj53qdwsii35d0f11nz0dl618mpvwy5aa44pc9zg281g2r27ab")))) (build-system gnu-build-system) (outputs (list "out" "python")) (arguments diff --git a/gnu/packages/lirc.scm b/gnu/packages/lirc.scm index 2b0cea16ab..f840f49a23 100644 --- a/gnu/packages/lirc.scm +++ b/gnu/packages/lirc.scm @@ -140,8 +140,7 @@ on just one button press.") (define-public python2-lirc (let ((base (package-with-python2 (strip-python2-variant python-lirc)))) - (package - (inherit base) + (package/inherit base (arguments `(#:tests? #f ; the only tests that exist are human-interactive #:phases diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 161a15c44f..5682daee3f 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -81,6 +81,7 @@ #:use-module (gnu packages sqlite) #:use-module (gnu packages tcl) #:use-module (gnu packages tls) + #:use-module (gnu packages video) #:use-module (gnu packages web) #:use-module (gnu packages webkit) #:use-module (gnu packages xdisorg) @@ -581,6 +582,65 @@ compatible with ANSI-compliant Common Lisp implementations.") (define-public ecl-cl-ppcre (sbcl-package->ecl-package sbcl-cl-ppcre)) +(define-public sbcl-parse + (let ((commit "2351ee78acac065fcf10b8713d3f404e2e910786") + (revision "1")) + (package + (name "sbcl-parse") + (version (git-version "1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/massung/parse") + (commit commit))) + (file-name (git-file-name "parse" version)) + (sha256 + (base32 "0l18yabyh7jizm5lgvra0jxi8s1cfwghidi6ix1pyixjkdbjlmvy")))) + (build-system asdf-build-system/sbcl) + (home-page "https://github.com/massung/parse") + (synopsis "Monadic parsing for Common Lisp") + (description + "PARSE is a simple token parsing library for Common Lisp.") + (license license:asl2.0)))) + +(define-public ecl-parse + (sbcl-package->ecl-package sbcl-parse)) + +(define-public cl-parse + (sbcl-package->cl-source-package sbcl-parse)) + +(define-public sbcl-re + (let ((commit "cfbc1f482970221e80d445080a188fd5c755cd2c") + (revision "1")) + (package + (name "sbcl-re") + (version (git-version "1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/massung/re") + (commit commit))) + (file-name (git-file-name "re" version)) + (sha256 + (base32 "1y2gq2sckspnq8118bix55p2j43dk9qn3p8a2rplp1ip2qxqbb1i")))) + (build-system asdf-build-system/sbcl) + (inputs + `(("parse" ,sbcl-parse))) + (home-page "https://github.com/massung/re") + (synopsis "Lua-style Pattern Matching for Common Lisp") + (description + "RE is a small, portable, lightweight, and quick, regular +expression library for Common Lisp. It is a non-recursive, backtracing VM.") + (license license:asl2.0)))) + +(define-public ecl-re + (sbcl-package->ecl-package sbcl-re)) + +(define-public cl-re + (sbcl-package->cl-source-package sbcl-re)) + (define-public sbcl-ubiquitous (let ((commit "35eb7bd9e1b3daee1705f6b41260775180cce8af") (revision "1")) @@ -4271,38 +4331,36 @@ addition, removal, and random selection.") (sbcl-package->ecl-package sbcl-map-set)) (define-public sbcl-quri - (let ((commit "d7f2720568146c6674187f625f115925e6364a7f") - (revision "4")) - (package - (name "sbcl-quri") - (version (git-version "0.1.0" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/fukamachi/quri") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0yrcvz5ksfr7x8yx741vp65il0fxxaskppq3iyk9bq895s1jn37w")))) - (build-system asdf-build-system/sbcl) - (arguments - ;; Test system must be loaded before, otherwise tests fail with: - ;; Component QURI-ASD::QURI-TEST not found, required by #<SYSTEM - ;; "quri">. - '(#:asd-systems '("quri-test" - "quri"))) - (native-inputs `(("sbcl-prove" ,sbcl-prove))) - (inputs `(("sbcl-babel" ,sbcl-babel) - ("sbcl-split-sequence" ,sbcl-split-sequence) - ("sbcl-cl-utilities" ,sbcl-cl-utilities) - ("sbcl-alexandria" ,sbcl-alexandria))) - (home-page "https://github.com/fukamachi/quri") - (synopsis "Yet another URI library for Common Lisp") - (description - "QURI (pronounced \"Q-ree\") is yet another URI library for Common + (package + (name "sbcl-quri") + (version "0.3.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/fukamachi/quri") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1pkvpiwwhx2fcknr7x47h7036ypkg8xzsskqbl5z315ipfmi8s2m")))) + (build-system asdf-build-system/sbcl) + (arguments + ;; Test system must be loaded before, otherwise tests fail with: + ;; Component QURI-ASD::QURI-TEST not found, required by #<SYSTEM + ;; "quri">. + '(#:asd-systems '("quri-test" + "quri"))) + (native-inputs `(("sbcl-prove" ,sbcl-prove))) + (inputs `(("sbcl-babel" ,sbcl-babel) + ("sbcl-split-sequence" ,sbcl-split-sequence) + ("sbcl-cl-utilities" ,sbcl-cl-utilities) + ("sbcl-alexandria" ,sbcl-alexandria))) + (home-page "https://github.com/fukamachi/quri") + (synopsis "Yet another URI library for Common Lisp") + (description + "QURI (pronounced \"Q-ree\") is yet another URI library for Common Lisp. It is intended to be a replacement of PURI.") - (license license:bsd-3)))) + (license license:bsd-3))) (define-public cl-quri (sbcl-package->cl-source-package sbcl-quri)) @@ -4811,6 +4869,39 @@ Long Painful History of Time\".") (define-public ecl-local-time (sbcl-package->ecl-package sbcl-local-time)) +(define-public sbcl-chronicity + (package + (name "sbcl-chronicity") + (version "0.4.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/chaitanyagupta/chronicity") + (commit (string-append "v" version)))) + (file-name (git-file-name "chronicity" version)) + (sha256 + (base32 "0rzrl9is2v1aqbm0sym0qx3blnpd0bl13dkkmll6mb3983k2mkax")))) + (build-system asdf-build-system/sbcl) + (native-inputs + `(("lisp-unit" ,sbcl-lisp-unit))) + (inputs + `(("cl-interpol" ,sbcl-cl-interpol) + ("cl-ppcre" ,sbcl-cl-ppcre) + ("local-time" ,sbcl-local-time))) + (home-page "https://github.com/chaitanyagupta/chronicity") + (synopsis "Natural language date and time parser for Common Lisp") + (description + "CHRONICITY is Common Lisp natural language date and time parser inspired +by Ruby's @code{Chronic}.") + (license license:bsd-3))) + +(define-public ecl-chronicity + (sbcl-package->ecl-package sbcl-chronicity)) + +(define-public cl-chronicity + (sbcl-package->cl-source-package sbcl-chronicity)) + (define-public sbcl-trivial-mimes (let ((commit "a741fc2f567a4f86b853fd4677d75e62c03e51d9") (revision "2")) @@ -5090,6 +5181,36 @@ macro for Common Lisp.") (define-public cl-printv (sbcl-package->cl-source-package sbcl-printv)) +(define-public sbcl-cl-debug + (let ((commit "b334280806104ee7f7d3aec666bf7e08d2f89b31") + (revision "1")) + (package + (name "sbcl-cl-debug") + (version (git-version "1.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kmx-io/cl-debug") + (commit commit))) + (file-name (git-file-name "cl-debug" version)) + (sha256 + (base32 "0w5vxbjsgr3zfpivdmghmhzxskfdvm1p34c8whwps2xlhypxsa78")))) + (build-system asdf-build-system/sbcl) + (home-page "https://github.com/kmx-io/cl-debug") + (synopsis "Common Lisp cross-package debugging facility") + (description + "CL-DEBUG provides a unified way to enable or disable debug-specific code. +Debugging code can be enabled or disabled relative to program features denoted +by either a symbol or a keyword.") + (license license:isc)))) + +(define-public ecl-cl-debug + (sbcl-package->ecl-package sbcl-cl-debug)) + +(define-public cl-debug + (sbcl-package->cl-source-package sbcl-cl-debug)) + (define-public sbcl-verbose (let ((commit "c5b7ecd465be61b35af17ef57564697b88397174") (revision "1")) @@ -7991,21 +8112,21 @@ intending to program in Lisp.") (sbcl-package->cl-source-package sbcl-antik)) (define-public sbcl-cl-interpol - (let ((commit "1fd288d861db85bc4677cff3cdd6af75fda1afb4") + (let ((commit "70a1137f41dd8889004dbab9536b1adeac2497aa") (revision "1")) (package (name "sbcl-cl-interpol") - (version (git-version "0.2.6" revision commit)) + (version (git-version "0.2.7" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/edicl/cl-interpol") (commit commit))) - (file-name (git-file-name name version)) + (file-name (git-file-name "cl-interpol" version)) (sha256 (base32 - "1hnikak52hmcq1r5f616m6qq1108qnkw80pja950nv1fq5p0ppjn")))) + "1kr00zf62m7la7rxa2m5w49r9cyzamc106hvjcc8ffmi7a4jw490")))) (build-system asdf-build-system/sbcl) (inputs `(("cl-unicode" ,sbcl-cl-unicode) @@ -9000,20 +9121,20 @@ for reading and writing JPEG image files.") (sbcl-package->ecl-package sbcl-cl-jpeg)) (define-public sbcl-nodgui - (let ((commit "bc59ed9b787dfc9e68ae3bd7f7e8507c5c619212") + (let ((commit "4a9c2e7714b278fbe97d198c56f54ea87290001d") (revision "1")) (package (name "sbcl-nodgui") - (version (git-version "0.0.5" revision commit)) + (version (git-version "0.1.1" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://notabug.org/cage/nodgui.git") (commit commit))) - (file-name (git-file-name name version)) + (file-name (git-file-name "nodgui" version)) (sha256 - (base32 "0xx0dk54d882i598ydnwmy7mnfk0b7vib3ddsgpqxhjck1rwq8l8")))) + (base32 "1vgzzw459h32v2mi41cia6i940jqmvxlc8w3xj3516hbc2mqkaib")))) (build-system asdf-build-system/sbcl) (inputs `(("alexandria" ,sbcl-alexandria) @@ -12048,12 +12169,12 @@ hu.dwim systems.") (sbcl-package->ecl-package sbcl-hu.dwim.common)) (define-public sbcl-hu.dwim.defclass-star - (let ((commit "39d458f1b1bc830d1f5e18a6a35bf0e96a2cfd61")) + (let ((commit "3086878a485074f9b2913c58267a9b764cd632fd")) (package (name "sbcl-hu.dwim.defclass-star") ;; We used to set version from the date when it was a darcs repo, so we ;; keep the year so that package gets updated on previous installs. - (version (git-version "2021" "1" commit)) + (version (git-version "2021" "2" commit)) (source (origin (method git-fetch) @@ -12062,7 +12183,7 @@ hu.dwim systems.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "0hfkq2wad98vkyxdg1wh18y86d9w9yqkm8lxkk96szvpwymm7lmq")))) + (base32 "19ipds9r71qymfdp4izg0l7zmvinp06adr8rdalhaq7v7mzpg83z")))) (build-system asdf-build-system/sbcl) (native-inputs `( ;; These 2 inputs are only needed tests which are disabled, see below. @@ -15062,3 +15183,162 @@ Lisp.") (define-public cl-percent-encoding (sbcl-package->cl-source-package sbcl-percent-encoding)) + +(define-public sbcl-cl-mount-info + (let ((commit "2024f5037a7f63db3e3587dc9972cd7b9318f06b") + (revision "1")) + (package + (name "sbcl-cl-mount-info") + (version (git-version "0.0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://notabug.org/cage/cl-mount-info.git") + (commit commit))) + (file-name (git-file-name "cl-mount-info" version)) + (sha256 + (base32 "0vza9gj9q42nzb5v8aj22lmn4aqx9vrddsb5a343nbwfz89hbh9x")))) + (build-system asdf-build-system/sbcl) + (inputs + `(("alexandria" ,sbcl-alexandria) + ("cffi" ,sbcl-cffi) + ("cl-ppcre" ,sbcl-cl-ppcre))) + (home-page "https://notabug.org/cage/cl-mount-info.git") + (synopsis "Library to get information about mounted filesystems") + (description + "CL-MOUNT-INFO is a Common Lisp wrapper around @code{getmntent(3)} and +related C functions to get information about the mounted file system.") + (license license:lgpl3)))) + +(define-public ecl-cl-mount-info + (sbcl-package->ecl-package sbcl-cl-mount-info)) + +(define-public cl-mount-info + (sbcl-package->cl-source-package sbcl-cl-mount-info)) + +(define-public sbcl-cl-diskspace + (let ((commit "2dce2d0387d58221c452bd76c7b9b7a7de81ef55") + (revision "1")) + (package + (name "sbcl-cl-diskspace") + (version (git-version "0.3.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/muyinliu/cl-diskspace") + (commit commit))) + (file-name (git-file-name "cl-diskspace" version)) + (sha256 + (base32 "0l19hxqw6b8i5i1jdbr45k1xib9axcwdagsp3y8wkb35g6wwc0s7")))) + (build-system asdf-build-system/sbcl) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/unix/cl-diskspace-list-all-disks-with-df.lisp" + (("grep") + (string-append (assoc-ref inputs "grep") "/bin/grep"))) + (substitute* "src/unix/cl-diskspace-list-all-disks-with-df.lisp" + (("/bin/df") + (which "df"))) + #t))))) + (inputs + `(("cl-ppcre" ,sbcl-cl-ppcre) + ("cffi" ,sbcl-cffi) + ("grep" ,grep))) + (home-page "https://github.com/muyinliu/cl-diskspace") + (synopsis "Disk space information library for Common Lisp") + (description + "CL-DISKSPACE is a Common Lisp library to list disks with the command +line tool @code{df} and get disk space information using @code{statvfs}.") + (license license:isc)))) + +(define-public ecl-cl-diskspace + (sbcl-package->ecl-package sbcl-cl-diskspace)) + +(define-public cl-diskspace + (sbcl-package->cl-source-package sbcl-cl-diskspace)) + +(define-public sbcl-fof + (package + (name "sbcl-fof") + (version "0.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/ambrevar/fof") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1xdnlqrjfmgdgw58avkci881iwarv4am2vq09b14pfifmpxpzv10")))) + (build-system asdf-build-system/sbcl) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "ffprobe.lisp" + (("\\(defvar \\*ffprobe-command\\* \"ffprobe\"\\)") + (format #f "(defvar *ffprobe-command* \"~a/bin/ffprobe\")" + (assoc-ref inputs "ffmpeg") ))) + #t))))) + (inputs + `(("alexandria" ,sbcl-alexandria) + ("hu.dwim.defclass-star" ,sbcl-hu.dwim.defclass-star) + ("local-time" ,sbcl-local-time) + ("magicffi" ,sbcl-magicffi) + ("osicat" ,sbcl-osicat) + ("serapeum" ,sbcl-serapeum) + ("str" ,sbcl-cl-str) + ("trivia" ,sbcl-trivia) + ("trivial-package-local-nicknames" ,sbcl-trivial-package-local-nicknames) + ;; Non-CL deps: + ("ffmpeg" ,ffmpeg))) + (home-page "https://gitlab.com/ambrevar/fof") + (synopsis "File object finder library for Common Lisp") + (description + "This library enable rapid file search, inspection and manipulation +straight from the REPL. +It aims at replacing Unix tools such as @code{find} or @code{du}. +It also offers a replacement to the @code{pathname} Common Lisp API. +Slot writers which commit changes to disk, e.g. permissions, modification +time, etc.") + (license license:gpl3+))) + +(define-public ecl-fof + (sbcl-package->ecl-package sbcl-fof)) + +(define-public cl-fof + (sbcl-package->cl-source-package sbcl-fof)) + +(define-public sbcl-computable-reals + (let ((commit "fdc73d75e79d0a4ce6d01c822c950ae2eb137d39")) + (package + (name "sbcl-computable-reals") + (version (git-version "1.1.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/stylewarning/computable-reals") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0f12axi53x14l12dgf4a1lfq3p1fx7fh7sjfc0db3lk88ph9qfwl")))) + (build-system asdf-build-system/sbcl) + (home-page "https://github.com/stylewarning/computable-reals") + (synopsis "Arbitrary-precision, re-computing real-numbers in Common Lisp") + (description + "This library provides arbitrary precision (floating point) real +numbers in Common Lisp.") + (license license:bsd-3)))) + +(define-public ecl-computable-reals + (sbcl-package->ecl-package sbcl-computable-reals)) + +(define-public cl-computable-reals + (sbcl-package->cl-source-package sbcl-computable-reals)) diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index 94764c143c..f7aecfb5ef 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -400,14 +400,14 @@ an interpreter, a compiler, a debugger, and much more.") (define-public sbcl (package (name "sbcl") - (version "2.1.0") + (version "2.1.2") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-" version "-source.tar.bz2")) (sha256 - (base32 "0k12m2z60fnq64m8dgivprs2mvrsnmp7c5ipzx7jzkprcsymdvh5")))) + (base32 "02scrqyp2izsd8xjm2k5j5lhn4pdhd202jlcb54ysmcqjd80awdp")))) (build-system gnu-build-system) (outputs '("out" "doc")) (native-inputs @@ -1086,7 +1086,7 @@ assembler, PEG) is less than 1MB.") (define-public lisp-repl-core-dumper (package (name "lisp-repl-core-dumper") - (version "0.5.0") + (version "0.7.0") (source (origin (method git-fetch) @@ -1095,7 +1095,7 @@ assembler, PEG) is less than 1MB.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1hrilm9lxy7zdidn4wac4yfqryg3hfw0371nanhd7g9bcfjx7n1q")))) + (base32 "0yfsyxj462yi3bx587yssp4gwb54jdm6fjk9q93gjrfv8a65ilp7")))) (build-system copy-build-system) (arguments '(#:install-plan diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 7fc621d35b..6f8417b50b 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -821,8 +821,7 @@ of programming tools as well as libraries with equivalent functionality.") '("clang-runtime-asan-build-fixes.patch" "clang-runtime-3.5-libsanitizer-mode-field.patch" "clang-3.5-libsanitizer-ustat-fix.patch")))) - (package - (inherit runtime) + (package/inherit runtime (arguments (substitute-keyword-arguments (package-arguments runtime) ((#:phases phases '%standard-phases) diff --git a/gnu/packages/logging.scm b/gnu/packages/logging.scm index 87283f3752..eafc23b2e6 100644 --- a/gnu/packages/logging.scm +++ b/gnu/packages/logging.scm @@ -99,7 +99,7 @@ staying as close to their API as is reasonable.") #t))))) (native-inputs `(("perl" ,perl) ;for tests - ("autoconf" ,autoconf-wrapper) + ("autoconf" ,autoconf) ("automake" ,automake) ("libtool" ,libtool))) (synopsis "C++ logging library") diff --git a/gnu/packages/lolcode.scm b/gnu/packages/lolcode.scm deleted file mode 100644 index cdbff1f4b6..0000000000 --- a/gnu/packages/lolcode.scm +++ /dev/null @@ -1,60 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Nikita <nikita@n0.is> -;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> -;;; -;;; 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 packages lolcode) - #:use-module (gnu packages) - #:use-module (gnu packages python) - #:use-module (gnu packages readline) - #:use-module (guix build-system cmake) - #:use-module (guix git-download) - #:use-module ((guix licenses) #:prefix license:) - #:use-module (guix packages)) - -(define-public lci - (package - (name "lci") - (version "0.11.2") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/justinmeza/lci") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0syw60b93iajgh91ffchirwwhm2kix2753ibx845kyrhzggmdh2l")))) - (build-system cmake-build-system) - (inputs - `(("readline" ,readline))) - (native-inputs - `(("python-2" ,python-2))) ; for the tests - (synopsis "LOLCODE interpreter written in C") - (description - "@code{lci} is a LOLCODE interpreter written in C and is designed to be -correct, portable, fast, and precisely documented. -@enumerate -@item correct: Every effort has been made to test lci's conformance to the -LOLCODE language specification. Unit tests come packaged with the lci source code. -@item portable: lci follows the widely ported ANSI C specification allowing it -to compile on a broad range of systems. -@item fast: Much effort has gone into producing simple and efficient code -whenever possible to the extent that the above points are not compromized. -@end enumerate") - (home-page "http://lolcode.org/") - (license license:gpl3+))) diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm index 16996572d7..0a1ca19a6f 100644 --- a/gnu/packages/lua.scm +++ b/gnu/packages/lua.scm @@ -41,23 +41,23 @@ #:use-module (guix build-system meson) #:use-module (guix build-system trivial) #:use-module (gnu packages) - #:use-module (gnu packages gcc) + #:use-module (gnu packages boost) #:use-module (gnu packages build-tools) - #:use-module (gnu packages readline) - #:use-module (gnu packages m4) - #:use-module (gnu packages tls) - #:use-module (gnu packages xml) + #:use-module (gnu packages gcc) #:use-module (gnu packages glib) + #:use-module (gnu packages gtk) #:use-module (gnu packages libevent) #:use-module (gnu packages libffi) + #:use-module (gnu packages m4) + #:use-module (gnu packages ncurses) #:use-module (gnu packages pkg-config) - #:use-module (gnu packages boost) + #:use-module (gnu packages pretty-print) + #:use-module (gnu packages re2c) + #:use-module (gnu packages readline) #:use-module (gnu packages tls) - #:use-module (gnu packages ncurses) #:use-module (gnu packages vim) - #:use-module (gnu packages re2c) - #:use-module (gnu packages xorg) - #:use-module (gnu packages gtk)) + #:use-module (gnu packages xml) + #:use-module (gnu packages xorg)) (define-public lua (package @@ -1108,14 +1108,14 @@ shell command executions.") (define-public emilua (package (name "emilua") - (version "0.2.1") + (version "0.3.0") (source (origin (method git-fetch) (uri (git-reference (url "https://gitlab.com/emilua/emilua.git") (commit (string-append "v" version)) - ;; Current version requires bundled CLI11 and fmt, but at some - ;; future release the ones found in the system could be used + ;; Current version requires bundled CLI11, but at some future + ;; release the one found in the system could be used ;; instead. Current version also requires Trial.Protocol and ;; the HTTP lib developed as part of GSoC 2014 for Boost, but ;; these are dependencies unlikely to be "unbundled" in future @@ -1124,13 +1124,17 @@ shell command executions.") (file-name (git-file-name name version)) (sha256 (base32 - "1d6k5v6x85fbvz2ijq1imnfdwvqmsav4xp021a5v3ah4mgy7yann")))) + "124fj73722c03znwdyqp1i0jygwv3s11f6s1j9rzym513qrf7fnd")))) (build-system meson-build-system) (arguments `(#:meson ,meson-0.55 ;; Tests are disabled for now due to an issue that affecs guix: ;; <https://gitlab.com/emilua/emilua/-/issues/22> - #:configure-flags '("-Denable_http=false" "-Denable_tests=false"))) + #:configure-flags + (list "-Denable_http=true" + "-Denable_tests=false" + "-Denable_manpages=false" + "-Dversion_suffix=-guix1"))) (native-inputs `(("gcc" ,gcc-10) ; gcc-7 is too old for our C++17 needs ("luajit-lua52-openresty" ,luajit-lua52-openresty) @@ -1140,6 +1144,7 @@ shell command executions.") (inputs `(("boost" ,boost) ("boost-static" ,boost-static) + ("fmt" ,fmt) ;; LuaJIT has a 2GiB addressing limit[1] that has been fixed on OpenResty ;; fork. Emilua is severely affected by this limit, so the upstream package ;; is avoided. Emilua also depends on the -DLUAJIT_ENABLE_LUA52COMPAT @@ -1151,6 +1156,12 @@ shell command executions.") ("luajit-lua52-openresty" ,luajit-lua52-openresty) ("ncurses" ,ncurses) ("openssl" ,openssl))) + (native-search-paths + (list + (search-path-specification + (variable "EMILUA_PATH") + (files + (list (string-append "lib/emilua-" (version-major+minor version))))))) (home-page "https://gitlab.com/emilua/emilua") (synopsis "Lua execution engine") (description diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 9f8bb54815..c538d77aaf 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -41,6 +41,7 @@ ;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com> ;;; Copyright © 2020 divoplade <d@divoplade.fr> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;;; ;;; This file is part of GNU Guix. ;;; @@ -58,6 +59,7 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages mail) + #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages admin) #:use-module (gnu packages aspell) @@ -411,7 +413,7 @@ to run without any changes.") (define-public fetchmail (package (name "fetchmail") - (version "6.4.16") + (version "6.4.17") (source (origin (method url-fetch) @@ -419,7 +421,7 @@ to run without any changes.") (version-major+minor version) "/" "fetchmail-" version ".tar.xz")) (sha256 - (base32 "1fagi10fv8pdil6gss6a3ca3jbp3wbiyz7cp8ivsxyrsq059ljq4")))) + (base32 "1ijh9l7pg2yk5s5h1yj3vpd1az31giqy9bjrna10daj13gqws6x4")))) (build-system gnu-build-system) (inputs `(("openssl" ,openssl))) @@ -446,7 +448,7 @@ aliasing facilities to work just as they would on normal mail.") (define-public mutt (package (name "mutt") - (version "2.0.5") + (version "2.0.6") (source (origin (method url-fetch) (uri (list @@ -456,7 +458,7 @@ aliasing facilities to work just as they would on normal mail.") version ".tar.gz"))) (sha256 (base32 - "0k80s27sf7djb7zxj81ihksr8jkr71mfaa8976fzh41i1pn5l7g2")) + "165mpivdhvhavglykwlz0hss2akxd6i6l40rgxs29mjzi52irqw1")) (patches (search-patches "mutt-store-references.patch")))) (build-system gnu-build-system) (inputs @@ -1439,14 +1441,14 @@ pairs have previously synchronized.") (define-public getmail (package (name "getmail") - (version "5.14") + (version "5.15") (source (origin (method url-fetch) (uri (string-append "http://pyropus.ca/software/getmail/old-versions/" "getmail-" version ".tar.gz")) (sha256 - (base32 "1hcrd9h4g12f5gvl1djsbchcjry02ghq4icdr897s8v48pkrzagk")))) + (base32 "0ahn2jyj4ka996qzs99id59pwxv6sqxp61g7drcf53rzzigq0lyl")))) (build-system python-build-system) (arguments `(#:tests? #f ; no tests @@ -1475,7 +1477,7 @@ useful features.") (sha256 (base32 "0g7an003simfdn7ihg9yjv7hl2czsmjsndjrp39i7cad8icixscn")))) (build-system gnu-build-system) - (native-inputs `(("autoconf" ,autoconf-wrapper) + (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) ("libtool" ,libtool) ("pkg-config" ,pkg-config))) @@ -1592,14 +1594,14 @@ addons which can add many functionalities to the base client.") (define-public msmtp (package (name "msmtp") - (version "1.8.14") + (version "1.8.15") (source (origin (method url-fetch) (uri (string-append "https://marlam.de/msmtp/releases/" "/msmtp-" version ".tar.xz")) (sha256 - (base32 "1d3knxpwpglg20z4zcsi82mqv9285ah1b1b16k1fk1hlf5fhcvym")))) + (base32 "1klrj2a77671xb6xa0a0iyszhjb7swxhmzpzd4qdybmzkrixqr92")))) (build-system gnu-build-system) (inputs `(("libsecret" ,libsecret) @@ -3622,14 +3624,14 @@ tools and applications: (define-public balsa (package (name "balsa") - (version "2.6.1") + (version "2.6.2") (source (origin (method url-fetch) (uri (string-append "https://pawsa.fedorapeople.org/balsa/" "balsa-" version ".tar.bz2")) (sha256 - (base32 "1xkxx801p7sbfkn0bh3cz85wra4xf1z1zhjqqc80z1z1nln7fhb4")))) + (base32 "1w0239i01mw4wwwy7xh8gz7zgl5khwvfm5wy35x0swvvax021mai")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -3651,8 +3653,9 @@ tools and applications: ("gnutls" ,gnutls) ("gpgme" ,gpgme) ("gtk+" ,gtk+) - ("gtksourceview" ,gtksourceview-3) + ("gtksourceview" ,gtksourceview) ("gtkspell3" ,gtkspell3) + ("libassuan" ,libassuan) ; in gpgme.pc Requires ("libcanberra" ,libcanberra) ("libesmtp" ,libesmtp) ("libical" ,libical) @@ -3909,7 +3912,9 @@ It is a replacement for the @command{urlview} program.") (file-name (git-file-name name version)) (sha256 (base32 - "07h48s5qf08503pp9kafqbwipdqghiif22ghki7z8j67gyp04l6l")))) + "07h48s5qf08503pp9kafqbwipdqghiif22ghki7z8j67gyp04l6l")) + (patches (search-patches "ytnef-CVE-2021-3403.patch" + "ytnef-CVE-2021-3404.patch")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) @@ -3921,6 +3926,45 @@ It is a replacement for the @command{urlview} program.") related tools to process winmail.dat files.") (license license:gpl2+))) +(define-public l2md + ;; No official release. + (let ((commit "f7286b49bb5fce25c898c143712fe34ad4d7864e") + (revision "1")) + (package + (name "l2md") + (version (git-version "0.1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.kernel.org/pub/scm/linux/kernel/git/dborkman/l2md.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0hxz8i70v1xgv30zjclfvmjqszn073c7i8nwmswi2lr6vd7cklvp")))) + (build-system gnu-build-system) + (inputs + `(("libgit2" ,libgit2))) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure) ;no configure scripts + (delete 'check) ;no tests + (add-before 'install 'mkdir + (lambda* (#:key outputs #:allow-other-keys) + (let ((l2md (string-append (assoc-ref outputs "out") "/bin"))) + (mkdir-p l2md))))) + #:make-flags + (list ,(string-append "CC=" (cc-for-target)) + (string-append "PREFIX=" %output "/bin")))) + (home-page + "https://git.kernel.org/pub/scm/linux/kernel/git/dborkman/l2md.git") + (synopsis "Import public-inbox archives via Git") + (description + "The @command{l2md} command line tool imports public-inbox archives via +Git and exports them in maildir format or to an MDA through a pipe.") + (license license:gpl2)))) + (define-public public-inbox (package (name "public-inbox") diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm index 04fdbce429..f176e56711 100644 --- a/gnu/packages/make-bootstrap.scm +++ b/gnu/packages/make-bootstrap.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2018, 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2018, 2019, 2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com> ;;; @@ -589,7 +589,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." (name "mescc-tools-static") (arguments `(#:system "i686-linux" - ,@(substitute-keyword-arguments (package-arguments mescc-tools) + ,@(substitute-keyword-arguments (package-arguments mescc-tools-0.5.2) ((#:make-flags flags) `(cons "CC=gcc -static" ,flags))))))) diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm index 03905ba828..95382bf92d 100644 --- a/gnu/packages/man.scm +++ b/gnu/packages/man.scm @@ -31,6 +31,7 @@ #:use-module (guix packages) #:use-module (guix build-system gnu) #:use-module (guix build-system ruby) + #:use-module (guix utils) #:use-module (gnu packages dbm) #:use-module (gnu packages flex) #:use-module (gnu packages gawk) @@ -224,7 +225,7 @@ the traditional flat-text whatis databases.") (define-public man-pages (package (name "man-pages") - (version "5.10") + (version "5.11") (source (origin (method url-fetch) @@ -234,7 +235,7 @@ the traditional flat-text whatis databases.") (string-append "mirror://kernel.org/linux/docs/man-pages/Archive/" "man-pages-" version ".tar.xz"))) (sha256 - (base32 "0ql7fqs0w2nbwv1b6ffnzyjz1sysvkhq8kb77wi2z7qip8sja43m")))) + (base32 "1aiwn6yi19idg4jbf7x4x5i06macjv7r8d5fgp1rwnc4a775vniy")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'configure)) @@ -304,17 +305,18 @@ automatically.") (version "1.10.1") (source (origin - (method url-fetch) - (uri (string-append "https://git.sr.ht/%7Esircmpwn/scdoc/archive/" version - ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://git.sr.ht/~sircmpwn/scdoc") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 - "13x7g1r56bshvfmlvapvz35ywnbgsh337kywb5kcv8nc6b3j3q40")))) + (base32 "1xmh6fnp378xmiycslg4migs1vx7yly4i1cf2vbbnwim9c9g0aw7")))) (build-system gnu-build-system) (arguments `(#:make-flags - (list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out"))) + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" (assoc-ref %outputs "out"))) #:phases (modify-phases %standard-phases (delete 'configure)))) diff --git a/gnu/packages/markup.scm b/gnu/packages/markup.scm index 95a3eb269e..695eed67b1 100644 --- a/gnu/packages/markup.scm +++ b/gnu/packages/markup.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2020 EuAndreh <eu@euandre.org> +;;; Copyright © 2021 Noisytoot <noisytoot@disroot.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -31,6 +32,7 @@ #:use-module (guix build-system trivial) #:use-module (guix build-system cmake) #:use-module (guix build-system perl) + #:use-module (guix build-system python) #:use-module (guix utils) #:use-module (gnu packages compression) #:use-module (gnu packages) @@ -300,3 +302,25 @@ and smu is that smu doesn't support reference style links.") SAX-like interface. It is compliant to the CommonMark specification, with a few extensions.") (license expat))) + +(define-public python-mistletoe + (package + (name "python-mistletoe") + (version "0.7.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "mistletoe" version)) + (sha256 + (base32 "18z6hqfnfjqnrcgfgl5pkj9ggf9yx0yyy94azcn1qf7hqn6g3l14")))) + (build-system python-build-system) + (home-page "https://github.com/miyuchina/mistletoe") + (synopsis "Extensible Markdown parser in pure Python") + (description + "The @code{mistletoe} Markdown parser is a CommonMark-compliant Markdown +parser that supports definitions of custom tokens. + +Parsing Markdown into an abstract syntax tree also allows @code{mistletoe} to +swap out renderers for different output formats, without touching any of the +core components.") + (license expat))) diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm index 8360be0197..c90ce81baa 100644 --- a/gnu/packages/mate.scm +++ b/gnu/packages/mate.scm @@ -176,6 +176,8 @@ actions.") (setenv "CONFIG_SHELL" (which "sh")) (invoke "sh" "autogen.sh")))))) (native-inputs + ;; autoconf-wrapper is required due to the non-standard + ;; 'autoconf phase. `(("autoconf" ,autoconf-wrapper) ("automake" ,automake) ("intltool" ,intltool) @@ -679,6 +681,7 @@ mate-volume-control, a MATE volume control application and applet.") `(("dconf" ,dconf) ("cairo" ,cairo) ("dbus-glib" ,dbus-glib) + ("gtk-layer-shell" ,gtk-layer-shell) ("gtk+" ,gtk+) ("libcanberra" ,libcanberra) ("libice" ,libice) @@ -693,7 +696,8 @@ mate-volume-control, a MATE volume control application and applet.") ("mate-desktop" ,mate-desktop) ("mate-menus" ,mate-menus) ("pango" ,pango) - ("tzdata" ,tzdata))) + ("tzdata" ,tzdata) + ("wayland" ,wayland))) (home-page "https://mate-desktop.org/") (synopsis "Panel for MATE") (description @@ -1202,7 +1206,7 @@ Re-decorates windows on un-maximise. (("dbus-1") "")))))))) (native-inputs `(("automake" ,automake) - ("autoconf" ,autoconf-wrapper) + ("autoconf" ,autoconf) ("gettext" ,gettext-minimal) ("intltool" ,intltool) ("mate-common" ,mate-common) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index e44eef56ca..879af45dc7 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -3526,7 +3526,7 @@ point numbers.") (define-public wxmaxima (package (name "wxmaxima") - (version "21.01.0") + (version "21.02.0") (source (origin (method git-fetch) @@ -3535,7 +3535,7 @@ point numbers.") (commit (string-append "Version-" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1bnv9410xmk73adqi4r6w0qgbqk7qig0vr5219839c09xagyyd12")))) + (base32 "19sab596ydwz65151bwymnfilyfmr8qcxb0k8cxlnj1gmdldlyz6")))) (build-system cmake-build-system) (native-inputs `(("gettext" ,gettext-minimal))) diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm index 5ceb1c6151..b4b7bcb6b5 100644 --- a/gnu/packages/mes.scm +++ b/gnu/packages/mes.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017, 2018, 2019, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2017, 2018, 2019, 2020, 2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; @@ -117,6 +117,35 @@ $prefix/share/guile/site/$GUILE_EFFECTIVE_VERSION\n")) (inputs `(("guile" ,guile-3.0))))) +(define-public nyacc-1.00.2 + (package + (inherit nyacc) + (version "1.00.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://savannah/nyacc/nyacc-" + version ".tar.gz")) + (modules '((guix build utils))) + (snippet + '(begin + (substitute* (find-files "." "^Makefile\\.in$") + (("^SITE_SCM_DIR =.*") + "SITE_SCM_DIR = \ +@prefix@/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n") + (("^SITE_SCM_GO_DIR =.*") + "SITE_SCM_GO_DIR = \ +@prefix@/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n") + (("^INFODIR =.*") + "INFODIR = @prefix@/share/info\n") + (("^DOCDIR =.*") + "DOCDIR = @prefix@/share/doc/$(PACKAGE_TARNAME)\n")) + #t)) + (sha256 + (base32 + "065ksalfllbdrzl12dz9d9dcxrv97wqxblslngsc6kajvnvlyvpk")))) + (inputs + `(("guile" ,guile-2.2))))) + (define-public mes-0.19 ;; Mes used for bootstrap. (package @@ -165,17 +194,18 @@ Guile.") (define-public mes (package (inherit mes-0.19) - (version "0.22") + (version "0.23") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/mes/" "mes-" version ".tar.gz")) (sha256 (base32 - "0p1jsrrmcbc0zrvbvnjbb6iyxr0in71km293q8qj6gnar6bw09av")))) + "0mnryfkl0dwbr5gxp16j5s95gw7z1vm1fqa1pxabp0aiar1hw53s")))) + (supported-systems '("armhf-linux" "i686-linux" "x86_64-linux")) (propagated-inputs `(("mescc-tools" ,mescc-tools) - ("nyacc" ,nyacc-0.99))) + ("nyacc" ,nyacc-1.00.2))) (native-search-paths (list (search-path-specification (variable "C_INCLUDE_PATH") @@ -194,6 +224,15 @@ Guile.") (package (inherit mes) (name "mes-rb5") + (version "0.22") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/mes/" + "mes-" version ".tar.gz")) + (sha256 + (base32 + "0p1jsrrmcbc0zrvbvnjbb6iyxr0in71km293q8qj6gnar6bw09av")))) + (supported-systems '("i686-linux" "x86_64-linux")) (inputs '()) (propagated-inputs '()) (native-inputs @@ -293,21 +332,32 @@ get_machine.") (package (inherit mescc-tools-0.5.2) (name "mescc-tools") - (version "0.6.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://git.savannah.nongnu.org/r/mescc-tools.git") - (commit (string-append "Release_" version)))) - (file-name (string-append "mescc-tools-" version "-checkout")) - (sha256 - (base32 - "1cgxcdza6ws725x84i31la7jxmlk5a3nsij5shz1zljg0i36kj99")))) + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (string-append + "http://git.savannah.nongnu.org/cgit/mescc-tools.git/snapshot/" + name "-Release_" version + ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1p1ijia4rm3002f5sypidl9v5gq0mlch9b0n61rpxkdsaaxjqax3")))) + (supported-systems '("armhf-linux" "aarch64-linux" + "i686-linux" "x86_64-linux")) (arguments (substitute-keyword-arguments (package-arguments mescc-tools-0.5.2) ((#:make-flags _) `(list (string-append "PREFIX=" (assoc-ref %outputs "out")) - "CC=gcc")))))) + "CC=gcc")) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'patch-prefix + (lambda _ + (substitute* "sha256.sh" + (("/usr/bin/sha256sum") (which "sha256sum"))) + #t)))))))) (define-public m2-planet (let ((commit "b87ddb0051b168ea45f8d49a610dcd069263336a") diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 7d9683cfa7..af8122f1a9 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -78,10 +78,12 @@ #:use-module (gnu packages guile) #:use-module (gnu packages icu4c) #:use-module (gnu packages image) + #:use-module (gnu packages kde) #:use-module (gnu packages kerberos) #:use-module (gnu packages less) #:use-module (gnu packages libcanberra) #:use-module (gnu packages libidn) + #:use-module (gnu packages libreoffice) #:use-module (gnu packages linux) #:use-module (gnu packages logging) #:use-module (gnu packages lua) @@ -104,6 +106,7 @@ #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages readline) + #:use-module (gnu packages ruby) #:use-module (gnu packages sphinx) #:use-module (gnu packages sqlite) #:use-module (gnu packages tcl) @@ -131,10 +134,66 @@ #:use-module (guix packages) #:use-module (guix utils)) +(define-public psi + (package + (name "psi") + (version "1.5") + (source + (origin + (method url-fetch) + (uri + (string-append "mirror://sourceforge/psi/Psi/" + version "/psi-" version ".tar.xz")) + (modules '((guix build utils))) + (snippet + `(begin + (delete-file-recursively "3rdparty"))) + (sha256 + (base32 "1dxmm1d1zr0pfs51lba732ipm6hm2357jlfb934lvarzsh7karri")))) + (build-system qt-build-system) + (arguments + `(#:tests? #f ; No target + #:configure-flags + (list + "-DUSE_ENCHANT=ON" + "-DUSE_CCACHE=OFF") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-cmake + (lambda _ + (substitute* "cmake/modules/FindHunspell.cmake" + (("hunspell-1.6") + "hunspell-1.7")) + #t))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("python" ,python-wrapper) + ("ruby" ,ruby))) + (inputs + `(("aspell" ,aspell) + ("enchant" ,enchant-1.6) + ("hunspell" ,hunspell) + ("libidn" ,libidn) + ("qca" ,qca) + ("qtbase" ,qtbase) + ("qtmultimedia" ,qtmultimedia) + ("qtsvg" ,qtsvg) + ("qtwebkit" ,qtwebkit) + ("qtx11extras" ,qtx11extras) + ("x11" ,libx11) + ("xext" ,libxext) + ("xcb" ,libxcb) + ("zlib" ,zlib))) + (synopsis "Qt-based XMPP Client") + (description "Psi is a capable XMPP client aimed at experienced users. +Its design goals are simplicity and stability.") + (home-page "https://psi-im.org") + (license license:gpl2+))) + (define-public libgnt (package (name "libgnt") - (version "2.14.0") + (version "2.14.1") (source (origin (method url-fetch) @@ -142,7 +201,7 @@ (string-append "mirror://sourceforge/pidgin/libgnt/" version "/libgnt-" version ".tar.xz")) (sha256 - (base32 "1grs9fxl404rscscxk1ff55fzjnwjqrisjxbasbssmcp1h1s4zkb")))) + (base32 "1n2bxg0ignn53c08cp69pj4sdg53kwlqn23rincyjmpr327fdhsy")))) (build-system meson-build-system) (outputs '("out" "doc")) (arguments @@ -932,14 +991,14 @@ simultaneously and therefore appear under the same nickname on IRC.") (define-public python-nbxmpp (package (name "python-nbxmpp") - (version "2.0.1") + (version "2.0.2") (source (origin (method url-fetch) (uri (pypi-uri "nbxmpp" version)) (sha256 - (base32 "0184nklbpzriq081lghsfavw9m8jr5kc45qqy4v4rdnxn64j7njc")))) + (base32 "1482fva70i01w60fk70c0fhqmqgzi1fb4xflllz2v6c8mdqkd1m3")))) (build-system python-build-system) (native-inputs `(("glib:bin" ,glib "bin"))) @@ -958,13 +1017,10 @@ of xmpppy.") (home-page "https://dev.gajim.org/gajim/python-nbxmpp") (license license:gpl3+))) -(define-public python2-nbxmpp - (package-with-python2 python-nbxmpp)) - (define-public gajim (package (name "gajim") - (version "1.3.0") + (version "1.3.1") (source (origin (method url-fetch) @@ -973,7 +1029,7 @@ of xmpppy.") (version-major+minor version) "/gajim-" version ".tar.gz")) (sha256 - (base32 "1v0cx8r1zr9aj17ik5apxxfpr9rv5w8p1i7hfys6wp9292gc7s25")) + (base32 "070h1n3miq99z6ln77plk3jlisgfqfs2yyn4rhchpf25zd8is1ba")) (patches (search-patches "gajim-honour-GAJIM_PLUGIN_PATH.patch")))) (build-system python-build-system) (arguments @@ -989,7 +1045,9 @@ of xmpppy.") (modify-phases %standard-phases (add-after 'unpack 'disable-failing-tests (lambda _ - ;; https://dev.gajim.org/gajim/gajim/-/issues/10427 + ;; ModuleNotFoundError: No module named 'gajim.gui.emoji_data' + ;; https://dev.gajim.org/gajim/gajim/-/issues/10478 + (delete-file "test/lib/gajim_mocks.py") (delete-file "test/unit/test_gui_interface.py") #t)) (replace 'check @@ -2438,13 +2496,13 @@ QMatrixClient project.") (define-public hangups (package (name "hangups") - (version "0.4.11") + (version "0.4.13") (source (origin (method url-fetch) (uri (pypi-uri "hangups" version)) (sha256 - (base32 "165lravvlsgkv6pp3vgg785ihycvs43qzqxw2d2yygrc6pbhqlyv")))) + (base32 "015g635vnrxk5lf9n80rdcmh6chv8kmla1k2j7m1iijijs519ngn")))) (build-system python-build-system) (arguments `(#:phases @@ -2716,4 +2774,182 @@ as phones, embedded computers or microcontrollers.") ;; Dual licensed. (license (list license:epl1.0 license:edl1.0)))) +(define-public movim-desktop + (let ((commit "83d583b83629dbd2ec448da9a1ffd81f6c1fb295") + (revision "3")) + (package + (name "movim-desktop") + (version + (git-version "0.14.0" revision commit)) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/movim/movim_desktop") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1lsa3k3wx1d2lk0qs0k5jc5bmapnmpzwynprjf2wihh8c8y3iwlz")))) + (build-system qt-build-system) + (arguments + `(#:tests? #f ; No target + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda* (#:key outputs #:allow-other-keys) + (substitute* `("CMakeLists.txt" "movim.desktop") + (("/usr") + (assoc-ref outputs "out")) + (("\"build") + "\"../build")) + #t))))) + (inputs + `(("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtwebchannel" ,qtwebchannel))) + (propagated-inputs + `(("qtwebengine" ,qtwebengine))) + (home-page "https://movim.eu/") + (synopsis "Desktop Application for Movim") + (description + "Movim-Desktop is a desktop application, relying on Qt, for the Movim +social and chat platform.") + (license license:gpl3+)))) + +(define-public psi-plus + (package + (name "psi-plus") + (version "1.5.1482") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/psi-plus/psi-plus-snapshots") + (commit version))) + (file-name (git-file-name name version)) + (modules '((guix build utils))) + (snippet + `(begin + (delete-file-recursively "3rdparty"))) + (sha256 + (base32 "0lcx616hchwf492m1dm8ddb4qd2pmgf703ajnnb0y9ky99kgg8q2")))) + (build-system qt-build-system) + (arguments + `(#:tests? #f ; No target + #:imported-modules + (,@%qt-build-system-modules + (guix build glib-or-gtk-build-system)) + #:modules + ((guix build qt-build-system) + ((guix build glib-or-gtk-build-system) + #:prefix glib-or-gtk:) + (guix build utils)) + #:configure-flags + (list + "-DBUILD_PSIMEDIA=ON" ; For A/V support + "-DENABLE_PLUGINS=ON" + "-DUSE_HUNSPELL=OFF" ; Use Enchant instead + "-DUSE_ENCHANT=ON" + "-DUSE_CCACHE=OFF") ; Not required + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-source + (lambda _ + (substitute* "CMakeLists.txt" + (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/http-parser/http_parser.h") + "") + (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qhttp/qhttp.pro") + "") + (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qite/qite.pro") + "") + (("add_subdirectory\\( 3rdparty \\)") + "")) + (substitute* "src/CMakeLists.txt" + (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qite/libqite") + "") + (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/http-parser") + "") + (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qhttp/src/private") + "") + (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qhttp/src") + "") + (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty") + "") + (("add_dependencies\\(\\$\\{PROJECT_NAME\\} qhttp\\)") + "target_link_libraries(${PROJECT_NAME} qhttp)")) + (substitute* "src/src.cmake" + (("include\\(\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qite/libqite/libqite.cmake\\)") + "list(APPEND EXTRA_LIBS qite)")) + (substitute* '("src/filesharingmanager.h" "src/widgets/psirichtext.cpp" + "src/filesharingmanager.cpp" "src/widgets/psitextview.cpp" + "src/chatview_te.cpp" "src/msgmle.cpp") + (("qite.h") + "qite/qite.h") + (("qiteaudio.h") + "qite/qiteaudio.h") + (("qiteaudiorecorder.h") + "qite/qiteaudiorecorder.h")) + #t)) + (add-after 'install 'wrap-env + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (for-each + (lambda (name) + (let ((file (string-append out "/bin/" name)) + (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")) + (gi-typelib-path (getenv "GI_TYPELIB_PATH"))) + (wrap-program file + `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)) + `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))) + '("psi-plus"))) + #t)) + (add-after 'wrap-env 'glib-or-gtk-compile-schemas + (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas)) + (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap + (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))))) + (native-inputs + `(("glib:bin" ,glib "bin") + ("gobject-introspection" ,gobject-introspection) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python" ,python-wrapper) + ("ruby" ,ruby))) + (inputs + `(("blake2" ,libb2) + ("dbus" ,dbus) + ("enchant" ,enchant) + ("glib" ,glib) + ("gstreamer" ,gstreamer) + ("gst-plugins-base" ,gst-plugins-base) + ("http-parser" ,http-parser) + ("libgcrypt" ,libgcrypt) + ("libgpg-error" ,libgpg-error) + ("libidn" ,libidn) + ("libotr" ,libotr) + ("libsignal-protocol-c" ,libsignal-protocol-c) + ("libtidy" ,tidy-html) + ("openssl" ,openssl) + ("qca" ,qca) + ("qhttp" ,qhttp) + ("qite" ,qite) + ("qtbase" ,qtbase) + ("qtkeychain" ,qtkeychain) + ("qtmultimedia" ,qtmultimedia) + ("qtsvg" ,qtsvg) + ("qtx11extras" ,qtx11extras) + ("usrsctp" ,usrsctp) + ("x11" ,libx11) + ("xext" ,libxext) + ("xcb" ,libxcb) + ("xss" ,libxscrnsaver) + ("zlib" ,zlib))) + (home-page "https://psi-plus.com/") + (synopsis "Qt-based XMPP Client") + (description + "Psi+ is a spin-off of Psi XMPP client. It is a powerful XMPP client +designed for experienced users.") + (license license:gpl2+))) + ;;; messaging.scm ends here diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm index 34390d3696..675e18ed7e 100644 --- a/gnu/packages/mp3.scm +++ b/gnu/packages/mp3.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2017, 2019, 2020 Pierre Langlois <pierre.langlois@gmx.com> -;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; @@ -372,7 +372,7 @@ This package contains the binary.") (define-public mpg123 (package (name "mpg123") - (version "1.26.4") + (version "1.26.5") (source (origin (method url-fetch) @@ -382,7 +382,7 @@ This package contains the binary.") "https://www.mpg123.org/download/mpg123-" version ".tar.bz2"))) (sha256 - (base32 "0m34hjssgslcsns8lj1n7f32iyiw547qgba9j2r6d9pp1ma92688")))) + (base32 "01pgcqjbbi2r7nlg5118bkivl0gkv0hq0cw7v4vpxgimv7h9fajh")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--with-default-audio=pulse"))) (native-inputs @@ -408,7 +408,9 @@ command-line tool as well as a C library, libmpg123.") version "/mpg321-" version ".tar.gz")) (sha256 (base32 - "0ki8mh76bbmdh77qsiw682dvi8y468yhbdabqwg05igmwc1wqvq5")))) + "0ki8mh76bbmdh77qsiw682dvi8y468yhbdabqwg05igmwc1wqvq5")) + (patches + (search-patches "mpg321-CVE-2019-14247.patch")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--disable-alsa"))) (inputs diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm index 8fc51cfd61..02b9dec506 100644 --- a/gnu/packages/mpd.scm +++ b/gnu/packages/mpd.scm @@ -307,9 +307,6 @@ information about tracks being played to a scrobbler, such as Libre.FM.") interface for the Music Player Daemon.") (license license:lgpl3+))) -(define-public python2-mpd2 - (package-with-python2 python-mpd2)) - (define-public sonata (package (name "sonata") @@ -444,7 +441,7 @@ support") (native-inputs `(("pkg-config" ,pkg-config))) (inputs - `(("eudev", eudev) + `(("eudev" ,eudev) ("ffmpeg" ,ffmpeg) ("libcdio-paranoia" ,libcdio-paranoia) ("libebur128" ,libebur128) diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm index 2b73794409..c958ef3398 100644 --- a/gnu/packages/mpi.scm +++ b/gnu/packages/mpi.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015, 2018, 2019 Eric Bavier <bavier@member.fsf.org> -;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net> ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2017 Dave Love <fx@gnu.org> @@ -66,6 +66,12 @@ (sha256 (base32 "0za1b9lvrm3rhn0lrxja5f64r0aq1qs4m0pxn1ji2mbi8ndppyyx")))) + + (properties + ;; Tell the 'generic-html' updater to monitor this URL for updates. + `((release-monitoring-url + . "https://www-lb.open-mpi.org/software/hwloc/current"))) + (build-system gnu-build-system) (outputs '("out" ;'lstopo' & co., depends on Cairo, libx11, etc. "lib" ;small closure @@ -142,18 +148,18 @@ bind processes, and much more.") (license license:bsd-3))) (define-public hwloc-2 - ;; Note: 2.0 isn't the default yet, see above. + ;; Note: 2.x isn't the default yet, see above. (package (inherit hwloc-1) - (version "2.2.0") + (version "2.4.1") (source (origin (method url-fetch) - (uri (string-append "https://www.open-mpi.org/software/hwloc/v" + (uri (string-append "https://download.open-mpi.org/release/hwloc/v" (version-major+minor version) - "/downloads/hwloc-" version ".tar.bz2")) + "/hwloc-" version ".tar.bz2")) (sha256 (base32 - "0li27a3lnmb77qxpijj0kpblz32wmqd3b386sypq8ar7vy9vhw5f")))) + "0qyywmyns2jf3is3axrwmffvdd7ji7liy5axp650q4i6kzk2291r")))) ;; libnuma is no longer needed. (inputs (alist-delete "numactl" (package-inputs hwloc-1))) @@ -187,7 +193,7 @@ bind processes, and much more.") (define-public openmpi (package (name "openmpi") - (version "4.0.5") + (version "4.1.0") (source (origin (method url-fetch) @@ -195,8 +201,14 @@ bind processes, and much more.") (version-major+minor version) "/downloads/openmpi-" version ".tar.bz2")) (sha256 - (base32 "02f0r9d3xgs08svkmj8v7lzviyxqnkk4yd3z0wql550xnriki3y5")) + (base32 "1dfmkyilgml9w9s5p0jmfj3xcdwdccwqbjw5iim9p0chf2vnz1kk")) (patches (search-patches "openmpi-mtl-priorities.patch")))) + + (properties + ;; Tell the 'generic-html' updater to monitor this URL for updates. + `((release-monitoring-url + . "https://www.open-mpi.org/software/ompi/current"))) + (build-system gnu-build-system) (inputs `(("hwloc" ,hwloc-2 "lib") @@ -300,7 +312,7 @@ software vendors, application developers and computer science researchers.") ;; TODO: javadoc files contain timestamps. (define-public java-openmpi - (package (inherit openmpi) + (package/inherit openmpi (name "java-openmpi") (inputs `(("openmpi" ,openmpi) @@ -344,8 +356,7 @@ software vendors, application developers and computer science researchers.") (synopsis "Java bindings for MPI"))) (define-public openmpi-thread-multiple - (package - (inherit openmpi) + (package/inherit openmpi (name "openmpi-thread-multiple") (arguments (substitute-keyword-arguments (package-arguments openmpi) diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 6b4461fa47..042e4e7510 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -24,7 +24,7 @@ ;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org> ;;; Copyright © 2019 raingloom <raingloom@protonmail.com> ;;; Copyright © 2019 David Wilson <david@daviwil.com> -;;; Copyright © 2019, 2020 Alexandros Theodotou <alex@zrythm.org> +;;; Copyright © 2019, 2020, 2021 Alexandros Theodotou <alex@zrythm.org> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2020 Lars-Dominik Braun <lars@6xq.net> ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> @@ -1035,6 +1035,45 @@ are helpful when working in problem spaces where timing is important (such as audio and video).") (license license:bsd-2))) +(define-public fluida-lv2 + (package + (name "fluida-lv2") + (version "0.6") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/brummer10/Fluida.lv2") + (commit (string-append "v" version)) + (recursive? #t))) ; references specific commit of libxputty + (file-name (git-file-name name version)) + (sha256 + (base32 + "1v0bh4wcx79y832qigc3my8ixq0r4ica6z5fg2rg946pkh20x1a2")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no "check" target + #:make-flags + (list (string-append "INSTALL_DIR=" + (assoc-ref %outputs "out") "/lib/lv2") + "CC=gcc") + #:phases + (modify-phases %standard-phases + (delete 'configure)))) + (inputs + `(("cairo" ,cairo) + ("libx11" ,libx11) + ("lv2" ,lv2) + ("fluidsynth" ,fluidsynth))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "https://github.com/brummer10/Fluida.lv2") + (synopsis "Fluidsynth as an LV2 audio plugin") + (description "Fluida is an audio plugin in the LV2 format that acts as +a frontend for fluidsynth.") + (license license:gpl2+))) + (define-public surge-synth (package (name "surge-synth") @@ -1813,7 +1852,7 @@ for path in [path for path in sys.path if 'site-packages' in path]: site.addsite ("txt2man" ,txt2man) ("libxml2" ,libxml2) ; for tests ("ghostscript" ,ghostscript) - ("texinfo" ,texinfo))) + ("texinfo" ,texinfo-5))) (home-page "https://www.gnu.org/software/solfege/") (synopsis "Ear training") (description @@ -1917,7 +1956,7 @@ users to select LV2 plugins and run them with jalv.") (define-public synthv1 (package (name "synthv1") - (version "0.9.20") + (version "0.9.21") (source (origin (method url-fetch) (uri @@ -1925,7 +1964,7 @@ users to select LV2 plugins and run them with jalv.") "/synthv1-" version ".tar.gz")) (sha256 (base32 - "1g2i79gkl1j7i49djz6igkbvdmfwxhcg6kx97n63bcqcvvy03rqz")))) + "0wg4ywkqf307vln0y923p083xacb5ahr2ghzvb9gmqyszd7k2v15")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ; there are no tests @@ -1949,7 +1988,7 @@ oscillators and stereo effects.") (define-public drumkv1 (package (name "drumkv1") - (version "0.9.20") + (version "0.9.21") (source (origin (method url-fetch) (uri @@ -1957,7 +1996,7 @@ oscillators and stereo effects.") "/drumkv1-" version ".tar.gz")) (sha256 (base32 - "0y6njh1n0yai4g9dhg24hwc9khba44l4n5xizqcs6i4q7lyr9z48")))) + "1ym7kns7hfgxdwm2nzvpdm5vjxpkwb9dssjiic6rrpicv1p2v59m")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ; there are no tests @@ -1982,7 +2021,7 @@ effects.") (define-public samplv1 (package (name "samplv1") - (version "0.9.20") + (version "0.9.21") (source (origin (method url-fetch) (uri @@ -1990,7 +2029,7 @@ effects.") "/samplv1-" version ".tar.gz")) (sha256 (base32 - "06nni00dgn8fvbyam1v44aq4yfns1vf7hw1mwmwzv2vxapdbpngn")))) + "1kz8hcpzhrkvxpah6irz5gbah4m7knjhi4rk5hs1kwiikn7p6vgk")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ; there are no tests @@ -2015,7 +2054,7 @@ effects.") (define-public padthv1 (package (name "padthv1") - (version "0.9.20") + (version "0.9.21") (source (origin (method url-fetch) (uri @@ -2023,7 +2062,7 @@ effects.") "/padthv1-" version ".tar.gz")) (sha256 (base32 - "1x3qjkby29xd7y0dg22ms19c8h8drqf55m9nxz6jlc58sfha2ss0")))) + "0s28l8vp9b85s4bdm18qm57dh8dx8rx7659r05p44828g4053ipl")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ; there are no tests @@ -2991,14 +3030,14 @@ from the command line.") (define-public qtractor (package (name "qtractor") - (version "0.9.19") + (version "0.9.21") (source (origin (method url-fetch) (uri (string-append "https://downloads.sourceforge.net/qtractor/" "qtractor-" version ".tar.gz")) (sha256 (base32 - "0gdr1hvda56vmv4998z9xcqsp7da6lplj00f217x9g2i2snyvkzp")))) + "12hn17hqs3jndv6238wj8yhw07n99s0zachab4kfvhwa0qfflsbl")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ; no "check" target @@ -3300,9 +3339,6 @@ APEv2 tags can be edited regardless of audio format. It can also manipulate Ogg streams on an individual packet/page level.") (license license:gpl2))) ; "later version" never mentioned -(define-public python2-mutagen - (package-with-python2 python-mutagen)) - (define-public python-mediafile (package (name "python-mediafile") @@ -3738,14 +3774,14 @@ with a number of bugfixes and changes to improve IT playback.") (define-public sooperlooper (package (name "sooperlooper") - (version "1.7.4") + (version "1.7.6") (source (origin (method url-fetch) (uri (string-append "http://essej.net/sooperlooper/sooperlooper-" version ".tar.gz")) (sha256 - (base32 "1jjvq4aflbyr3nr8b318k1vkad16xfa1jkqn9ckzw4419qc6c1k5")))) + (base32 "0kbb1pj62rl32c88j6p7dg823kvs0gb5s42qy3bl6yg0wn10dksj")))) (build-system gnu-build-system) (arguments `(#:phases @@ -5816,6 +5852,51 @@ It can also play and mix samples.") (home-page "https://gitlab.com/iurie-sw/geonkick") (license license:gpl3+))) +(define-public mamba + (package + (name "mamba") + (version "2.1") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/brummer10/Mamba") + (commit (string-append "v" version)) + (recursive? #t))) ; references specific commit of libxputty + (file-name (git-file-name name version)) + (sha256 + (base32 + "1bq6sqsij3cdwcsj3wpsnivi4c7jl4l5gwfywhqnib70v60smdja")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no "check" target + #:make-flags + (list (string-append "PREFIX=" + (assoc-ref %outputs "out")) + "CC=gcc") + #:phases + (modify-phases %standard-phases + (delete 'configure)))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("cairo" ,cairo) + ("fluidsynth" ,fluidsynth) + ("jack" ,jack-1) + ("liblo" ,liblo) + ("libsigc++" ,libsigc++) + ("libsmf" ,libsmf) + ("libx11" ,libx11))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "https://github.com/brummer10/Mamba") + (synopsis "Virtual MIDI keyboard and MIDI file player/recorder for JACK") + (description "Mamba is a virtual MIDI keyboard and MIDI file +player/recorder for the JACK Audio Connection Kit. It comes with predefined +keymaps for QWERTZ, QWERTY and AZERTY keyboards and also allows custom +ones.") + (license license:bsd-0))) + (define-public dpf-plugins (package (name "dpf-plugins") diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 5bf2d9d225..ca37b58ab0 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -142,6 +142,35 @@ #:use-module (gnu packages xml) #:use-module (ice-9 match)) +(define-public usrsctp + (package + (name "usrsctp") + (version "0.9.5.0") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/sctplab/usrsctp") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "10ndzkip8blgkw572n3dicl6mgjaa7kygwn3vls80liq92vf1sa9")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config) + ("python" ,python-wrapper) + ("which" ,which))) + (home-page "https://github.com/sctplab/usrsctp/") + (synopsis "SCTP user-land implementation") + (description "UsrSCTP is a portable SCTP userland stack. SCTP is a message +oriented, reliable transport protocol with direct support for multihoming that +runs on top of IP or UDP, and supports both v4 and v6 versions.") + (license license:bsd-3))) + (define-public axel (package (name "axel") @@ -1357,14 +1386,14 @@ of the same name.") (define-public wireshark (package (name "wireshark") - (version "3.4.3") + (version "3.4.4") (source (origin (method url-fetch) (uri (string-append "https://www.wireshark.org/download/src/wireshark-" version ".tar.xz")) (sha256 - (base32 "0ar6pxzrcpxdriz437d6ziwlhb8k5wlvrkalp3hgqwzwy1vwqrzl")))) + (base32 "0aad3m8nh4i75dgjs68217135bzqmhmlgjklmpjh1ihmjwgd373j")))) (build-system cmake-build-system) (arguments `(#:phases @@ -2595,8 +2624,9 @@ does not use SSH and requires a pre-shared symmetric key.") (version "1.2.4") (source (origin (method url-fetch) - (uri (string-append "mirror://savannah/quagga/quagga-" - version ".tar.gz")) + ;; Use archived sources; see <http://issues.guix.gnu.org/47123>. + (uri (string-append "https://fossies.org/linux/misc/" + "quagga-" version ".tar.gz")) (sha256 (base32 "1lsksqxij5f1llqn86pkygrf5672kvrqn1kvxghi169hqf1c0r73")) @@ -3910,7 +3940,7 @@ network.") (define-public yggdrasil (package (name "yggdrasil") - (version "0.3.15") + (version "0.3.16") (source (origin (method git-fetch) @@ -3921,8 +3951,7 @@ network.") (recursive? #t))) (file-name (git-file-name name version)) (sha256 - (base32 - "0gk7gy8yq5nrnblv4imxzzm2hac4ri0hlw19ajfbc1zll5kj32gf")) + (base32 "0vyd7a333hwn6j1lv1g9sicw74a4qk982bsi3cfdhjlv6hsjwmil")) (patches (search-patches "yggdrasil-extra-config.patch")))) (build-system go-build-system) (arguments diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm index dec6cc2b7c..a0df3d2cad 100644 --- a/gnu/packages/node.scm +++ b/gnu/packages/node.scm @@ -212,8 +212,7 @@ devices.") (timeout . 21600))))) ;6h (define-public libnode - (package - (inherit node) + (package/inherit node (name "libnode") (arguments (substitute-keyword-arguments (package-arguments node) diff --git a/gnu/packages/onc-rpc.scm b/gnu/packages/onc-rpc.scm index 02c8be02fa..aeb2f6e115 100644 --- a/gnu/packages/onc-rpc.scm +++ b/gnu/packages/onc-rpc.scm @@ -71,8 +71,7 @@ IPv4 and IPv6. ONC RPC is notably used by the network file system (NFS).") (license bsd-3))) (define-public libtirpc/hurd - (package - (inherit libtirpc) + (package/inherit libtirpc (name "libtirpc-hurd") (source (origin (inherit (package-source libtirpc)) (patches (search-patches "libtirpc-hurd.patch")))) diff --git a/gnu/packages/opencl.scm b/gnu/packages/opencl.scm index ddc30ef037..e95d19db47 100644 --- a/gnu/packages/opencl.scm +++ b/gnu/packages/opencl.scm @@ -20,6 +20,7 @@ (define-module (gnu packages opencl) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) + #:use-module (guix build-system copy) #:use-module (guix build-system python) #:use-module (guix download) #:use-module (guix git-download) @@ -47,44 +48,35 @@ ;; tests that require such devices are all disabled. ;; Check https://lists.gnu.org/archive/html/guix-devel/2018-04/msg00293.html +(define-public opencl-headers + (package + (name "opencl-headers") + (version "2020.12.18") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/KhronosGroup/OpenCL-Headers") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1zslxfzvbb1mrzmsik4pjzj88ds8y3p94ry5nnrnkhv6qm4n4lw9")))) + (build-system copy-build-system) + (arguments + '(#:install-plan + '(("CL" "include/")))) ; TODO: add phase for tests + (synopsis "The Khronos OpenCL headers") + (description + "This package provides the C headers by Khronos for OpenCL programming.") + (home-page "https://www.khronos.org/registry/OpenCL/") + (license license:asl2.0))) + (define (make-opencl-headers major-version subversion) - (let ((commit "e986688daf750633898dfd3994e14a9e618f2aa5") - (revision "0")) - (package - (name "opencl-headers") - (version (git-version - (string-append major-version "." subversion ".0") - revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/KhronosGroup/OpenCL-Headers") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "176ydpbyws5nr4av6hf8p41pkhc0rc4m4vrah9w6gp2fw2i32838")))) - (build-system gnu-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (delete 'configure) - (delete 'build) - (delete 'check) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (copy-recursively (string-append "./opencl" (string-append - ,major-version - ,subversion) "/CL") - (string-append - (assoc-ref outputs "out") - "/include/CL"))))))) - (synopsis "The Khronos OpenCL headers") - (description - "This package provides the C headers by Khronos for OpenCL -programming.") - (home-page "https://www.khronos.org/registry/OpenCL/") - (license license:expat)))) + ;; The upstream OpenCL-Headers repository is no longer separating headers by + ;; version; instead, you are supposed to #define CL_TARGET_OPENCL_VERSION. + (deprecated-package (string-append "opencl-headers-" + major-version "." + subversion) opencl-headers)) (define-public opencl-headers-2.2 (make-opencl-headers "2" "2")) @@ -99,8 +91,6 @@ programming.") (define-public opencl-headers-1.0 (make-opencl-headers "1" "0")) -(define-public opencl-headers opencl-headers-2.2) - (define-public opencl-clhpp (package (name "opencl-clhpp") diff --git a/gnu/packages/openkinect.scm b/gnu/packages/openkinect.scm index 0cdecca3ab..89e6c69cfc 100644 --- a/gnu/packages/openkinect.scm +++ b/gnu/packages/openkinect.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech> +;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,7 +31,7 @@ #:use-module (gnu packages image-processing)) (define-public libfreenect - (let ((version "0.6.1")) + (let ((version "0.6.2")) (package (name "libfreenect") (version version) @@ -42,7 +43,7 @@ (file-name (git-file-name name version)) (sha256 (base32 - "0was1va167rqshmpn382h36yyprpfi9cwillb6ylppmnfdrfrhrr")))) + "02pb8mcl62kzdcgbnv3rw4nl0f08iw8pjiqqhfy3ycpkvyppw97w")))) (build-system cmake-build-system) (arguments '(#:tests? #f ; package has no tests diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 4c12e85a01..888f54322d 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -132,8 +132,8 @@ ;; Note: the 'update-guix-package.scm' script expects this definition to ;; start precisely like this. (let ((version "1.2.0") - (commit "112692c0d546d35cd67c5dc70dbd1dc609b18f64") - (revision 14)) + (commit "ec7fb669945bfb47c5e1fdf7de3a5d07f7002ccf") + (revision 17)) (package (name "guix") @@ -149,7 +149,7 @@ (commit commit))) (sha256 (base32 - "081m6zcgscmh3xbz1wrm7bjwj5d1fnwd8w89qbmd8z44a1iknf49")) + "1v9pwsqx8n4l6f7aj9vxv6m7vb4lyw8j5qg6mxf5zksia0qlcv2z")) (file-name (string-append "guix-" version "-checkout")))) (build-system gnu-build-system) (arguments @@ -304,6 +304,7 @@ $(prefix)/etc/init.d\n"))) '((assoc-ref inputs "guile")))) (avahi (assoc-ref inputs "guile-avahi")) (gcrypt (assoc-ref inputs "guile-gcrypt")) + (guile-lib (assoc-ref inputs "guile-lib")) (json (assoc-ref inputs "guile-json")) (sqlite (assoc-ref inputs "guile-sqlite3")) (zlib (assoc-ref inputs "guile-zlib")) @@ -367,6 +368,7 @@ $(prefix)/etc/init.d\n"))) `(("guile-avahi" ,guile-avahi))) ("guile-gcrypt" ,guile-gcrypt) ("guile-json" ,guile-json-4) + ("guile-lib" ,guile-lib) ("guile-sqlite3" ,guile-sqlite3) ("guile-zlib" ,guile-zlib) ("guile-lzlib" ,guile-lzlib) @@ -377,7 +379,7 @@ $(prefix)/etc/init.d\n"))) ;; XXX: Keep the development inputs here even though ;; they're unnecessary, just so that 'guix environment ;; guix' always contains them. - ("autoconf" ,autoconf-wrapper) + ("autoconf" ,autoconf) ("automake" ,automake) ("gettext" ,gettext-minimal) ("texinfo" ,texinfo) @@ -422,6 +424,7 @@ $(prefix)/etc/init.d\n"))) `(("guile-avahi" ,guile-avahi))) ("guile-gcrypt" ,guile-gcrypt) ("guile-json" ,guile-json-4) + ("guile-lib" ,guile-lib) ("guile-sqlite3" ,guile-sqlite3) ("guile-ssh" ,guile-ssh) ("guile-git" ,guile-git) @@ -702,7 +705,7 @@ features of Stow with some extensions.") (define-public rpm (package (name "rpm") - (version "4.16.1.2") + (version "4.16.1.3") (source (origin (method url-fetch) (uri (string-append "http://ftp.rpm.org/releases/rpm-" @@ -710,7 +713,7 @@ features of Stow with some extensions.") version ".tar.bz2")) (sha256 (base32 - "1k6ank2aad7r503w12m6m494mxr6iccj52wqhwbc94pwxsf34mw3")))) + "07g2g0adgjm29wqy94iqhpp5dk0hacfw1yf7kzycrrxnfbwwfgai")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--with-external-db" ;use the system's bdb @@ -1377,14 +1380,14 @@ the boot loader configuration.") (define-public flatpak (package (name "flatpak") - (version "1.10.1") + (version "1.10.2") (source (origin (method url-fetch) (uri (string-append "https://github.com/flatpak/flatpak/releases/download/" version "/flatpak-" version ".tar.xz")) (sha256 - (base32 "1dywvfpmszvp2wy5hvpzy8z6gz2gzmi9p302njp52p9vpx14ydf1")))) + (base32 "1r6xw7r3ir2vaa30n3mily6m7d51cf4qv22fkqlzzy3js0wjf5fv")))) ;; Wrap 'flatpak' so that GIO_EXTRA_MODULES is set, thereby allowing GIO to ;; find the TLS backend in glib-networking. diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm index ab4450c24e..05964cd038 100644 --- a/gnu/packages/parallel.scm +++ b/gnu/packages/parallel.scm @@ -7,10 +7,11 @@ ;;; Copyright © 2016, 2020, 2021 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com> -;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2020 Roel Janssen <roel@gnu.org> +;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at> ;;; ;;; This file is part of GNU Guix. ;;; @@ -35,6 +36,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module ((guix utils) #:select (target-64bit?)) #:use-module (guix packages) + #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages admin) #:use-module (gnu packages autotools) @@ -55,14 +57,14 @@ (define-public parallel (package (name "parallel") - (version "20210222") + (version "20210322") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/parallel/parallel-" version ".tar.bz2")) (sha256 - (base32 "0az73cpl04k3j9hwyxgych5cr95ls8qrsmy6zni4xxv2xc5b0saf")))) + (base32 "152np0jg4n94sbl2p2fzxjfnssiyp5sg7r5wx6s8p893b921pxwq")))) (build-system gnu-build-system) (arguments `(#:phases @@ -105,6 +107,34 @@ or more computers. Jobs can consist of single commands or of scripts and they are executed on lists of files, hosts, users or other items.") (license license:gpl3+))) +(define-public xe + (package + (name "xe") + (version "0.11") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/leahneukirchen/xe") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "04jr8f6jcijr0bsmn8ajm0aj35qh9my3xjsaq64h8lwg5bpyn29x")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f + #:make-flags (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)) + #:phases (modify-phases %standard-phases + (delete 'configure)))) + (synopsis "Execute a command for every argument") + (description + "The xe utility constructs command lines from specified arguments, +combining some of the best features of xargs(1) and apply(1). Parallel +execution is also possible.") + (home-page "https://github.com/leahneukirchen/xe") + (license license:public-domain))) + (define-public slurm (package (name "slurm") diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm index e241057cee..3969b23f1e 100644 --- a/gnu/packages/password-utils.scm +++ b/gnu/packages/password-utils.scm @@ -512,93 +512,100 @@ any X11 window.") (license license:gpl3+))) (define-public password-store - (package - (name "password-store") - (version "1.7.3") - (source (origin - (method url-fetch) - (uri - (string-append "https://git.zx2c4.com/password-store/snapshot/" - name "-" version ".tar.xz")) - (sha256 - (base32 - "1x53k5dn3cdmvy8m4fqdld4hji5n676ksl0ql4armkmsds26av1b")))) - (build-system gnu-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (delete 'configure) - (delete 'build) - (add-before 'install 'patch-system-extension-dir - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (extension-dir (string-append out "/lib/password-store/extensions"))) - (substitute* "src/password-store.sh" - (("^SYSTEM_EXTENSION_DIR=.*$") - ;; lead with whitespace to prevent 'make install' from - ;; overwriting it again - (string-append " SYSTEM_EXTENSION_DIR=\"" - "${PASSWORD_STORE_SYSTEM_EXTENSION_DIR:-" - extension-dir - "}\"\n")))) - #t)) - (add-before 'install 'patch-passmenu-path - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "contrib/dmenu/passmenu" - (("dmenu") (string-append (assoc-ref inputs "dmenu") - "/bin/dmenu")) - (("xdotool") (string-append (assoc-ref inputs "xdotool") - "/bin/xdotool"))) - #t)) - (add-after 'install 'install-passmenu - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin"))) - (install-file "contrib/dmenu/passmenu" bin) - #t))) - (add-after 'install 'wrap-path - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (path (map (lambda (pkg) - (string-append (assoc-ref inputs pkg) "/bin")) - '("coreutils" "getopt" "git" "gnupg" "qrencode" - "sed" "tree" "which" "xclip")))) - (wrap-program (string-append out "/bin/pass") - `("PATH" ":" prefix (,(string-join path ":")))) - #t)))) - #:make-flags (list "CC=gcc" (string-append "PREFIX=" %output) - "WITH_ALLCOMP=yes" - (string-append "BASHCOMPDIR=" - %output "/etc/bash_completion.d")) - ;; Parallel tests may cause a race condition leading to a - ;; timeout in some circumstances. - #:parallel-tests? #f - #:test-target "test")) - (native-search-paths - (list (search-path-specification - (variable "PASSWORD_STORE_SYSTEM_EXTENSION_DIR") - (separator #f) ;single entry - (files '("lib/password-store/extensions"))))) - (inputs - `(("dmenu" ,dmenu) - ("getopt" ,util-linux) - ("git" ,git) - ("gnupg" ,gnupg) - ("qrencode" ,qrencode) - ("sed" ,sed) - ("tree" ,tree) - ("which" ,which) - ("xclip" ,xclip) - ("xdotool" ,xdotool))) - (home-page "https://www.passwordstore.org/") - (synopsis "Encrypted password manager") - (description "Password-store is a password manager which uses GnuPG to + ;; The 1.7.3 release does not include support for wl-clipboard, which was + ;; added in b0b784b1a57c0b06936e6f5d6560712b4b810cd3. Instead, use the + ;; latest commit on master at the time of writing. + (let ((commit "918992c19231b33b3d4a3288a7288a620e608cb4") + (revision "1")) + (package + (name "password-store") + (version (git-version "1.7.3" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "git://git.zx2c4.com/password-store") + (commit commit))) + (sha256 + (base32 + "0ni62f4pq96g0i0q66bch1dl9k4zqwhg7xaf746k3gbbqxcdh3vi")) + (file-name (git-file-name name version)) )) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (add-before 'install 'patch-system-extension-dir + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (extension-dir (string-append out "/lib/password-store/extensions"))) + (substitute* "src/password-store.sh" + (("^SYSTEM_EXTENSION_DIR=.*$") + ;; lead with whitespace to prevent 'make install' from + ;; overwriting it again + (string-append " SYSTEM_EXTENSION_DIR=\"" + "${PASSWORD_STORE_SYSTEM_EXTENSION_DIR:-" + extension-dir + "}\"\n")))) + #t)) + (add-before 'install 'patch-passmenu-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "contrib/dmenu/passmenu" + (("dmenu") (string-append (assoc-ref inputs "dmenu") + "/bin/dmenu")) + (("xdotool") (string-append (assoc-ref inputs "xdotool") + "/bin/xdotool"))) + #t)) + (add-after 'install 'install-passmenu + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (install-file "contrib/dmenu/passmenu" bin) + #t))) + (add-after 'install 'wrap-path + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (path (map (lambda (pkg) + (string-append (assoc-ref inputs pkg) "/bin")) + '("coreutils" "getopt" "git" "gnupg" "qrencode" + "sed" "tree" "which" "wl-clipboard" "xclip")))) + (wrap-program (string-append out "/bin/pass") + `("PATH" ":" prefix (,(string-join path ":")))) + #t)))) + #:make-flags (list "CC=gcc" (string-append "PREFIX=" %output) + "WITH_ALLCOMP=yes" + (string-append "BASHCOMPDIR=" + %output "/etc/bash_completion.d")) + ;; Parallel tests may cause a race condition leading to a + ;; timeout in some circumstances. + #:parallel-tests? #f + #:test-target "test")) + (native-search-paths + (list (search-path-specification + (variable "PASSWORD_STORE_SYSTEM_EXTENSION_DIR") + (separator #f) ;single entry + (files '("lib/password-store/extensions"))))) + (inputs + `(("dmenu" ,dmenu) + ("getopt" ,util-linux) + ("git" ,git) + ("gnupg" ,gnupg) + ("qrencode" ,qrencode) + ("sed" ,sed) + ("tree" ,tree) + ("which" ,which) + ("wl-clipboard" ,wl-clipboard) + ("xclip" ,xclip) + ("xdotool" ,xdotool))) + (home-page "https://www.passwordstore.org/") + (synopsis "Encrypted password manager") + (description "Password-store is a password manager which uses GnuPG to store and retrieve passwords. The tool stores each password in its own GnuPG-encrypted file, allowing the program to be simple yet secure. Synchronization is possible using the integrated git support, which commits changes to your password database to a git repository that can be managed through the pass command.") - (license license:gpl2+))) + (license license:gpl2+)))) (define-public pass-otp (package diff --git a/gnu/packages/patches/abseil-cpp-fix-gtest.patch b/gnu/packages/patches/abseil-cpp-fix-gtest.patch new file mode 100644 index 0000000000..38971448f3 --- /dev/null +++ b/gnu/packages/patches/abseil-cpp-fix-gtest.patch @@ -0,0 +1,16 @@ +The GTEST_ALLOW_UNINSTANTIATED_PARAMTERIZED_TEST macro was added to googletest +in commit 0b024bd9 on master. It has been used in an abseil-cpp release before +a googletest release. + +--- a/absl/container/internal/unordered_map_modifiers_test.h ++++ b/absl/container/internal/unordered_map_modifiers_test.h +@@ -286,7 +286,9 @@ class UniquePtrModifiersTest : public ::testing::Test { + } + }; + ++#ifdef GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST + GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(UniquePtrModifiersTest); ++#endif + + TYPED_TEST_SUITE_P(UniquePtrModifiersTest); + diff --git a/gnu/packages/patches/abseil-cpp-fix-strerror_test.patch b/gnu/packages/patches/abseil-cpp-fix-strerror_test.patch new file mode 100644 index 0000000000..726149b015 --- /dev/null +++ b/gnu/packages/patches/abseil-cpp-fix-strerror_test.patch @@ -0,0 +1,42 @@ +From e2b1bab19a782cb62bb010d1c2925ab7314fb113 Mon Sep 17 00:00:00 2001 +diff --git a/absl/base/internal/strerror.cc b/absl/base/internal/strerror.cc +index d66ba120..0d6226fd 100644 +--- a/absl/base/internal/strerror.cc ++++ b/absl/base/internal/strerror.cc +@@ -51,7 +51,6 @@ const char* StrErrorAdaptor(int errnum, char* buf, size_t buflen) { + } + + std::string StrErrorInternal(int errnum) { +- absl::base_internal::ErrnoSaver errno_saver; + char buf[100]; + const char* str = StrErrorAdaptor(errnum, buf, sizeof buf); + if (*str == '\0') { +@@ -76,6 +75,7 @@ std::array<std::string, kSysNerr>* NewStrErrorTable() { + } // namespace + + std::string StrError(int errnum) { ++ absl::base_internal::ErrnoSaver errno_saver; + static const auto* table = NewStrErrorTable(); + if (errnum >= 0 && errnum < static_cast<int>(table->size())) { + return (*table)[errnum]; +diff --git a/absl/base/internal/strerror_test.cc b/absl/base/internal/strerror_test.cc +index a53da97f..e32d5b5c 100644 +--- a/absl/base/internal/strerror_test.cc ++++ b/absl/base/internal/strerror_test.cc +@@ -62,12 +62,14 @@ TEST(StrErrorTest, MultipleThreads) { + ++counter; + errno = ERANGE; + const std::string value = absl::base_internal::StrError(i); ++ // EXPECT_* could change errno. Stash it first. ++ int check_err = errno; ++ EXPECT_THAT(check_err, Eq(ERANGE)); + // Only the GNU implementation is guaranteed to provide the + // string "Unknown error nnn". POSIX doesn't say anything. + if (!absl::StartsWith(value, "Unknown error ")) { +- EXPECT_THAT(absl::base_internal::StrError(i), Eq(expected_strings[i])); ++ EXPECT_THAT(value, Eq(expected_strings[i])); + } +- EXPECT_THAT(errno, Eq(ERANGE)); + } + }; + diff --git a/gnu/packages/patches/aws-c-cal-cmake-prefix.patch b/gnu/packages/patches/aws-c-cal-cmake-prefix.patch new file mode 100644 index 0000000000..1ee7aa851d --- /dev/null +++ b/gnu/packages/patches/aws-c-cal-cmake-prefix.patch @@ -0,0 +1,13 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -10,6 +10,10 @@ endif() + + option(BYO_CRYPTO "Set this if you want to provide your own cryptography implementation. This will cause the defaults to not be compiled." OFF) + ++if (DEFINED ENV{CMAKE_PREFIX_PATH}) ++ set(CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH}) ++endif() ++ + if (DEFINED CMAKE_PREFIX_PATH) + file(TO_CMAKE_PATH "${CMAKE_PREFIX_PATH}" CMAKE_PREFIX_PATH) + endif() diff --git a/gnu/packages/patches/aws-c-io-cmake-prefix.patch b/gnu/packages/patches/aws-c-io-cmake-prefix.patch new file mode 100644 index 0000000000..da3e4eb4a5 --- /dev/null +++ b/gnu/packages/patches/aws-c-io-cmake-prefix.patch @@ -0,0 +1,13 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -6,6 +6,10 @@ if (POLICY CMP0069) + cmake_policy(SET CMP0069 NEW) # Enable LTO/IPO if available in the compiler, see AwsCFlags + endif() + ++if (DEFINED ENV{CMAKE_PREFIX_PATH}) ++ set(CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH}) ++endif() ++ + if (DEFINED CMAKE_PREFIX_PATH) + file(TO_CMAKE_PATH "${CMAKE_PREFIX_PATH}" CMAKE_PREFIX_PATH) + endif() diff --git a/gnu/packages/patches/aws-c-io-disable-networking-tests.patch b/gnu/packages/patches/aws-c-io-disable-networking-tests.patch new file mode 100644 index 0000000000..09fe11310c --- /dev/null +++ b/gnu/packages/patches/aws-c-io-disable-networking-tests.patch @@ -0,0 +1,81 @@ +--- a/tests/CMakeLists.txt ++++ b/tests/CMakeLists.txt +@@ -52,8 +52,8 @@ add_test_case(local_socket_communication) + add_net_test_case(tcp_socket_communication) + add_net_test_case(udp_socket_communication) + add_test_case(udp_bind_connect_communication) +-add_net_test_case(connect_timeout) +-add_net_test_case(connect_timeout_cancelation) ++#add_net_test_case(connect_timeout) ++#add_net_test_case(connect_timeout_cancelation) + if (USE_VSOCK) + add_test_case(vsock_loopback_socket_communication) + endif () +@@ -64,7 +64,7 @@ add_test_case(incoming_tcp_sock_errors) + add_test_case(incoming_duplicate_tcp_bind_errors) + add_test_case(incoming_udp_sock_errors) + add_test_case(wrong_thread_read_write_fails) +-add_net_test_case(cleanup_before_connect_or_timeout_doesnt_explode) ++#add_net_test_case(cleanup_before_connect_or_timeout_doesnt_explode) + add_test_case(cleanup_in_accept_doesnt_explode) + add_test_case(cleanup_in_write_cb_doesnt_explode) + add_test_case(sock_write_cb_is_async) +@@ -81,21 +81,21 @@ add_test_case(channel_tasks_run) + add_test_case(channel_rejects_post_shutdown_tasks) + add_test_case(channel_cancels_pending_tasks) + add_test_case(channel_duplicate_shutdown) +-add_net_test_case(channel_connect_some_hosts_timeout) ++#add_net_test_case(channel_connect_some_hosts_timeout) + +-add_net_test_case(test_default_with_ipv6_lookup) ++#add_net_test_case(test_default_with_ipv6_lookup) + add_test_case(test_resolver_ipv6_address_lookup) +-add_net_test_case(test_default_with_multiple_lookups) ++#add_net_test_case(test_default_with_multiple_lookups) + add_test_case(test_resolver_ipv4_address_lookup) +-add_net_test_case(test_default_with_ipv4_only_lookup) ++#add_net_test_case(test_default_with_ipv4_only_lookup) + add_test_case(test_resolver_ttls) + add_test_case(test_resolver_connect_failure_recording) + add_test_case(test_resolver_ttl_refreshes_on_resolve) + + add_net_test_case(test_resolver_listener_create_destroy) +-add_net_test_case(test_resolver_add_listener_before_host) +-add_net_test_case(test_resolver_add_listener_after_host) +-add_net_test_case(test_resolver_add_multiple_listeners_fn) ++#add_net_test_case(test_resolver_add_listener_before_host) ++#add_net_test_case(test_resolver_add_listener_after_host) ++#add_net_test_case(test_resolver_add_multiple_listeners_fn) + add_net_test_case(test_resolver_listener_host_re_add_fn) + add_net_test_case(test_resolver_listener_multiple_results) + add_net_test_case(test_resolver_listener_address_expired_fn) +@@ -119,20 +119,20 @@ add_test_case(socket_handler_close) + if (NOT BYO_CRYPTO) + add_net_test_case(test_concurrent_cert_import) + add_test_case(tls_channel_echo_and_backpressure_test) +- add_net_test_case(tls_client_channel_negotiation_error_expired) +- add_net_test_case(tls_client_channel_negotiation_error_wrong_host) +- add_net_test_case(tls_client_channel_negotiation_error_self_signed) +- add_net_test_case(tls_client_channel_negotiation_error_untrusted_root) ++ #add_net_test_case(tls_client_channel_negotiation_error_expired) ++ #add_net_test_case(tls_client_channel_negotiation_error_wrong_host) ++ #add_net_test_case(tls_client_channel_negotiation_error_self_signed) ++ #add_net_test_case(tls_client_channel_negotiation_error_untrusted_root) + #track these down in s2n and find out why that aren't failing. + #add_net_test_case(tls_client_channel_negotiation_error_revoked) + #add_net_test_case(tls_client_channel_negotiation_error_pinning) +- add_net_test_case(tls_client_channel_negotiation_error_socket_closed) +- add_net_test_case(tls_client_channel_negotiation_success) +- add_net_test_case(tls_client_channel_negotiation_success_ecc256) +- add_net_test_case(tls_client_channel_negotiation_success_ecc384) ++ #add_net_test_case(tls_client_channel_negotiation_error_socket_closed) ++ #add_net_test_case(tls_client_channel_negotiation_success) ++ #add_net_test_case(tls_client_channel_negotiation_success_ecc256) ++ #add_net_test_case(tls_client_channel_negotiation_success_ecc384) + add_net_test_case(tls_server_multiple_connections) + add_net_test_case(tls_server_hangup_during_negotiation) +- add_net_test_case(tls_client_channel_no_verify) ++ #add_net_test_case(tls_client_channel_no_verify) + add_net_test_case(test_tls_negotiation_timeout) + add_net_test_case(tls_double_channel) + add_net_test_case(alpn_successfully_negotiates) diff --git a/gnu/packages/patches/bsdiff-CVE-2014-9862.patch b/gnu/packages/patches/bsdiff-CVE-2014-9862.patch new file mode 100644 index 0000000000..7aab818090 --- /dev/null +++ b/gnu/packages/patches/bsdiff-CVE-2014-9862.patch @@ -0,0 +1,15 @@ +diff --git a/bspatch.c b/bspatch.c +index 8d95633..ab77722 100644 +--- a/bspatch.c ++++ b/bspatch.c + +@@ -187,6 +187,10 @@ + }; + + /* Sanity-check */ ++ if ((ctrl[0] < 0) || (ctrl[1] < 0)) ++ errx(1,"Corrupt patch\n"); ++ ++ /* Sanity-check */ + if(newpos+ctrl[0]>newsize) + errx(1,"Corrupt patch\n"); diff --git a/gnu/packages/patches/busybox-CVE-2021-28831.patch b/gnu/packages/patches/busybox-CVE-2021-28831.patch new file mode 100644 index 0000000000..da3107fbb1 --- /dev/null +++ b/gnu/packages/patches/busybox-CVE-2021-28831.patch @@ -0,0 +1,57 @@ +From f25d254dfd4243698c31a4f3153d4ac72aa9e9bd Mon Sep 17 00:00:00 2001 +From: Samuel Sapalski <samuel.sapalski@nokia.com> +Date: Wed, 3 Mar 2021 16:31:22 +0100 +Subject: decompress_gunzip: Fix DoS if gzip is corrupt + +On certain corrupt gzip files, huft_build will set the error bit on +the result pointer. If afterwards abort_unzip is called huft_free +might run into a segmentation fault or an invalid pointer to +free(p). + +In order to mitigate this, we check in huft_free if the error bit +is set and clear it before the linked list is freed. + +Signed-off-by: Samuel Sapalski <samuel.sapalski@nokia.com> +Signed-off-by: Peter Kaestle <peter.kaestle@nokia.com> +Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com> +--- + archival/libarchive/decompress_gunzip.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/archival/libarchive/decompress_gunzip.c b/archival/libarchive/decompress_gunzip.c +index eb3b64930..e93cd5005 100644 +--- a/archival/libarchive/decompress_gunzip.c ++++ b/archival/libarchive/decompress_gunzip.c +@@ -220,10 +220,20 @@ static const uint8_t border[] ALIGN1 = { + * each table. + * t: table to free + */ ++#define BAD_HUFT(p) ((uintptr_t)(p) & 1) ++#define ERR_RET ((huft_t*)(uintptr_t)1) + static void huft_free(huft_t *p) + { + huft_t *q; + ++ /* ++ * If 'p' has the error bit set we have to clear it, otherwise we might run ++ * into a segmentation fault or an invalid pointer to free(p) ++ */ ++ if (BAD_HUFT(p)) { ++ p = (huft_t*)((uintptr_t)(p) ^ (uintptr_t)(ERR_RET)); ++ } ++ + /* Go through linked list, freeing from the malloced (t[-1]) address. */ + while (p) { + q = (--p)->v.t; +@@ -289,8 +299,6 @@ static unsigned fill_bitbuffer(STATE_PARAM unsigned bitbuffer, unsigned *current + * or a valid pointer to a Huffman table, ORed with 0x1 if incompete table + * is given: "fixed inflate" decoder feeds us such data. + */ +-#define BAD_HUFT(p) ((uintptr_t)(p) & 1) +-#define ERR_RET ((huft_t*)(uintptr_t)1) + static huft_t* huft_build(const unsigned *b, const unsigned n, + const unsigned s, const struct cp_ext *cp_ext, + unsigned *m) +-- +cgit v1.2.1 + diff --git a/gnu/packages/patches/cairo-CVE-2018-19876.patch b/gnu/packages/patches/cairo-CVE-2018-19876.patch new file mode 100644 index 0000000000..c0fba2ecaa --- /dev/null +++ b/gnu/packages/patches/cairo-CVE-2018-19876.patch @@ -0,0 +1,37 @@ +Copied from Debian. + +From: Carlos Garcia Campos <cgarcia@igalia.com> +Date: Mon, 19 Nov 2018 12:33:07 +0100 +Subject: ft: Use FT_Done_MM_Var instead of free when available in + cairo_ft_apply_variations + +Fixes a crash when using freetype >= 2.9 + +[This is considered to be security-sensitive because WebKitGTK+ sets its +own memory allocator, which is not compatible with system free(), making +this a remotely triggerable denial of service or memory corruption.] + +Origin: upstream, commit:90e85c2493fdfa3551f202ff10282463f1e36645 +Bug: https://gitlab.freedesktop.org/cairo/cairo/merge_requests/5 +Bug-Debian: https://bugs.debian.org/916389 +Bug-CVE: CVE-2018-19876 +--- + src/cairo-ft-font.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c +index 325dd61..981973f 100644 +--- a/src/cairo-ft-font.c ++++ b/src/cairo-ft-font.c +@@ -2393,7 +2393,11 @@ skip: + done: + free (coords); + free (current_coords); ++#if HAVE_FT_DONE_MM_VAR ++ FT_Done_MM_Var (face->glyph->library, ft_mm_var); ++#else + free (ft_mm_var); ++#endif + } + } + diff --git a/gnu/packages/patches/cairo-CVE-2020-35492.patch b/gnu/packages/patches/cairo-CVE-2020-35492.patch new file mode 100644 index 0000000000..e8b90fa5c5 --- /dev/null +++ b/gnu/packages/patches/cairo-CVE-2020-35492.patch @@ -0,0 +1,49 @@ +Copied from Debian. + +From 03a820b173ed1fdef6ff14b4468f5dbc02ff59be Mon Sep 17 00:00:00 2001 +From: Heiko Lewin <heiko.lewin@worldiety.de> +Date: Tue, 15 Dec 2020 16:48:19 +0100 +Subject: [PATCH] Fix mask usage in image-compositor + +[trimmed test case, since not used in Debian build] + +--- + src/cairo-image-compositor.c | 8 ++-- + +--- cairo-1.16.0.orig/src/cairo-image-compositor.c ++++ cairo-1.16.0/src/cairo-image-compositor.c +@@ -2601,14 +2601,14 @@ _inplace_src_spans (void *abstract_rende + unsigned num_spans) + { + cairo_image_span_renderer_t *r = abstract_renderer; +- uint8_t *m; ++ uint8_t *m, *base = (uint8_t*)pixman_image_get_data(r->mask); + int x0; + + if (num_spans == 0) + return CAIRO_STATUS_SUCCESS; + + x0 = spans[0].x; +- m = r->_buf; ++ m = base; + do { + int len = spans[1].x - spans[0].x; + if (len >= r->u.composite.run_length && spans[0].coverage == 0xff) { +@@ -2646,7 +2646,7 @@ _inplace_src_spans (void *abstract_rende + spans[0].x, y, + spans[1].x - spans[0].x, h); + +- m = r->_buf; ++ m = base; + x0 = spans[1].x; + } else if (spans[0].coverage == 0x0) { + if (spans[0].x != x0) { +@@ -2675,7 +2675,7 @@ _inplace_src_spans (void *abstract_rende + #endif + } + +- m = r->_buf; ++ m = base; + x0 = spans[1].x; + } else { + *m++ = spans[0].coverage; diff --git a/gnu/packages/patches/cyrus-sasl-CVE-2019-19906.patch b/gnu/packages/patches/cyrus-sasl-CVE-2019-19906.patch new file mode 100644 index 0000000000..acdf682430 --- /dev/null +++ b/gnu/packages/patches/cyrus-sasl-CVE-2019-19906.patch @@ -0,0 +1,25 @@ +From dcc9f51cbd4ed622cfb0f9b1c141eb2ffe3b12f1 Mon Sep 17 00:00:00 2001 +From: Quanah Gibson-Mount <quanah@symas.com> +Date: Tue, 18 Feb 2020 19:05:12 +0000 +Subject: [PATCH] Fix #587 + +Off by one error in common.c, CVE-2019-19906. + +Thanks to Stephan Zeisberg for reporting +--- + lib/common.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/common.c b/lib/common.c +index bc3bf1df..9969d6aa 100644 +--- a/lib/common.c ++++ b/lib/common.c +@@ -190,7 +190,7 @@ int _sasl_add_string(char **out, size_t *alloclen, + + if (add==NULL) add = "(null)"; + +- addlen=strlen(add); /* only compute once */ ++ addlen=strlen(add)+1; /* only compute once */ + if (_buf_alloc(out, alloclen, (*outlen)+addlen)!=SASL_OK) + return SASL_NOMEM; + diff --git a/gnu/packages/patches/efibootmgr-remove-extra-decl.patch b/gnu/packages/patches/efibootmgr-remove-extra-decl.patch new file mode 100644 index 0000000000..eb68108f88 --- /dev/null +++ b/gnu/packages/patches/efibootmgr-remove-extra-decl.patch @@ -0,0 +1,27 @@ +From 99b578501643377e0b1994b2a068b790d189d5ad Mon Sep 17 00:00:00 2001 +From: Peter Jones <pjones@redhat.com> +Date: Wed, 13 Jun 2018 09:41:01 -0400 +Subject: [PATCH] remove extra decl + +Signed-off-by: Peter Jones <pjones@redhat.com> +--- + src/efibootmgr.c | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/src/efibootmgr.c b/src/efibootmgr.c +index de38f01..4e1a680 100644 +--- a/src/efibootmgr.c ++++ b/src/efibootmgr.c +@@ -1536,9 +1536,6 @@ parse_opts(int argc, char **argv) + "invalid numeric value %s\n", + optarg); + } +- /* XXX efivar-36 accidentally doesn't have a public +- * header for this */ +- extern int efi_set_verbose(int verbosity, FILE *errlog); + efi_set_verbose(opts.verbose - 2, stderr); + break; + case 'V': +-- +2.24.0 + diff --git a/gnu/packages/patches/evolution-CVE-2020-11879.patch b/gnu/packages/patches/evolution-CVE-2020-11879.patch new file mode 100644 index 0000000000..8c85895aab --- /dev/null +++ b/gnu/packages/patches/evolution-CVE-2020-11879.patch @@ -0,0 +1,122 @@ +From 6489f20d6905cc797e2b2581c415e558c457caa7 Mon Sep 17 00:00:00 2001 +From: Milan Crha <mcrha@redhat.com> +Date: Wed, 12 Feb 2020 18:59:52 +0100 +Subject: [PATCH] I#784 - Warn about and limit what can be attached using + mailto: URI + +Closes https://gitlab.gnome.org/GNOME/evolution/issues/784 +--- + src/composer/e-msg-composer.c | 58 +++++++++++++++++++++++++++++------ + src/e-util/e-system.error.xml | 7 ++++- + 2 files changed, 54 insertions(+), 11 deletions(-) + +diff --git a/src/composer/e-msg-composer.c b/src/composer/e-msg-composer.c +index e4c9ac095e..cd3168d882 100644 +--- a/src/composer/e-msg-composer.c ++++ b/src/composer/e-msg-composer.c +@@ -4761,7 +4761,8 @@ handle_mailto (EMsgComposer *composer, + gchar *header, *content, *buf; + gsize nread, nwritten; + const gchar *p; +- gint len, clen; ++ gint len, clen, has_attachments = 0; ++ gboolean has_blacklisted_attachment = FALSE; + + table = e_msg_composer_get_header_table (composer); + view = e_msg_composer_get_attachment_view (composer); +@@ -4844,22 +4845,36 @@ handle_mailto (EMsgComposer *composer, + } else if (!g_ascii_strcasecmp (header, "attach") || + !g_ascii_strcasecmp (header, "attachment")) { + EAttachment *attachment; ++ GFile *file; + + camel_url_decode (content); +- if (file_is_blacklisted (content)) +- e_alert_submit ( +- E_ALERT_SINK (e_msg_composer_get_editor (composer)), +- "mail:blacklisted-file", +- content, NULL); + if (g_ascii_strncasecmp (content, "file:", 5) == 0) + attachment = e_attachment_new_for_uri (content); + else + attachment = e_attachment_new_for_path (content); +- e_attachment_store_add_attachment (store, attachment); +- e_attachment_load_async ( +- attachment, (GAsyncReadyCallback) +- e_attachment_load_handle_error, composer); ++ file = e_attachment_ref_file (attachment); ++ if (!file || !g_file_peek_path (file) || ++ !g_file_test (g_file_peek_path (file), G_FILE_TEST_EXISTS) || ++ g_file_test (g_file_peek_path (file), G_FILE_TEST_IS_DIR)) { ++ /* Do nothing, simply ignore the attachment request */ ++ } else { ++ has_attachments++; ++ ++ if (file_is_blacklisted (content)) { ++ has_blacklisted_attachment = TRUE; ++ e_alert_submit ( ++ E_ALERT_SINK (e_msg_composer_get_editor (composer)), ++ "mail:blacklisted-file", ++ content, NULL); ++ } ++ ++ e_attachment_store_add_attachment (store, attachment); ++ e_attachment_load_async ( ++ attachment, (GAsyncReadyCallback) ++ e_attachment_load_handle_error, composer); ++ } + g_object_unref (attachment); ++ g_clear_object (&file); + } else if (!g_ascii_strcasecmp (header, "from")) { + /* Ignore */ + } else if (!g_ascii_strcasecmp (header, "reply-to")) { +@@ -4883,6 +4898,29 @@ handle_mailto (EMsgComposer *composer, + + g_free (buf); + ++ if (has_attachments && !has_blacklisted_attachment) { ++ const gchar *primary; ++ gchar *secondary; ++ ++ primary = g_dngettext (GETTEXT_PACKAGE, ++ "Review attachment before sending.", ++ "Review attachments before sending.", ++ has_attachments); ++ ++ secondary = g_strdup_printf (g_dngettext (GETTEXT_PACKAGE, ++ "There had been added %d attachment. Make sure it does not contain any sensitive information before sending the message.", ++ "There had been added %d attachments. Make sure they do not contain any sensitive information before sending the message.", ++ has_attachments), ++ has_attachments); ++ ++ e_alert_submit ( ++ E_ALERT_SINK (e_msg_composer_get_editor (composer)), ++ "system:generic-warning", ++ primary, secondary, NULL); ++ ++ g_free (secondary); ++ } ++ + merge_always_cc_and_bcc (table, to, &cc, &bcc); + + tov = destination_list_to_vector (to); +diff --git a/src/e-util/e-system.error.xml b/src/e-util/e-system.error.xml +index ddcf989fda..02facb7d26 100644 +--- a/src/e-util/e-system.error.xml ++++ b/src/e-util/e-system.error.xml +@@ -1,6 +1,11 @@ + <?xml version="1.0"?> + <error-list domain="system"> +- <error type="error" id="generic-error"> ++ <error id="generic-error" type="error"> ++ <primary>{0}</primary> ++ <secondary>{1}</secondary> ++ </error> ++ ++ <error id="generic-warning" type="warning"> + <primary>{0}</primary> + <secondary>{1}</secondary> + </error> +-- +GitLab + diff --git a/gnu/packages/patches/evolution-data-server-CVE-2020-14928.patch b/gnu/packages/patches/evolution-data-server-CVE-2020-14928.patch new file mode 100644 index 0000000000..421f292c9d --- /dev/null +++ b/gnu/packages/patches/evolution-data-server-CVE-2020-14928.patch @@ -0,0 +1,115 @@ +From ba82be72cfd427b5d72ff21f929b3a6d8529c4df Mon Sep 17 00:00:00 2001 +From: Milan Crha <mcrha@redhat.com> +Date: Mon, 22 Jun 2020 13:40:17 +0200 +Subject: [PATCH] I#226 - CVE-2020-14928: Response Injection via STARTTLS in + SMTP and POP3 + +Closes https://gitlab.gnome.org/GNOME/evolution-data-server/-/issues/226 +--- + src/camel/camel-stream-buffer.c | 19 +++++++++++++++++++ + src/camel/camel-stream-buffer.h | 1 + + src/camel/providers/pop3/camel-pop3-store.c | 2 ++ + src/camel/providers/pop3/camel-pop3-stream.c | 11 +++++++++++ + src/camel/providers/pop3/camel-pop3-stream.h | 1 + + .../providers/smtp/camel-smtp-transport.c | 2 ++ + 6 files changed, 36 insertions(+) + +diff --git a/src/camel/camel-stream-buffer.c b/src/camel/camel-stream-buffer.c +index 3e2e0dd36..a6f605ae5 100644 +--- a/src/camel/camel-stream-buffer.c ++++ b/src/camel/camel-stream-buffer.c +@@ -518,3 +518,22 @@ camel_stream_buffer_read_line (CamelStreamBuffer *sbf, + + return g_strdup ((gchar *) sbf->priv->linebuf); + } ++ ++/** ++ * camel_stream_buffer_discard_cache: ++ * @sbf: a #CamelStreamBuffer ++ * ++ * Discards any cached data in the @sbf. The next read reads ++ * from the stream. ++ * ++ * Since: 3.38 ++ **/ ++void ++camel_stream_buffer_discard_cache (CamelStreamBuffer *sbf) ++{ ++ g_return_if_fail (CAMEL_IS_STREAM_BUFFER (sbf)); ++ ++ sbf->priv->ptr = sbf->priv->buf; ++ sbf->priv->end = sbf->priv->buf; ++ sbf->priv->ptr[0] = '\0'; ++} +diff --git a/src/camel/camel-stream-buffer.h b/src/camel/camel-stream-buffer.h +index ef92cfd8e..094e9926b 100644 +--- a/src/camel/camel-stream-buffer.h ++++ b/src/camel/camel-stream-buffer.h +@@ -93,6 +93,7 @@ gint camel_stream_buffer_gets (CamelStreamBuffer *sbf, + gchar * camel_stream_buffer_read_line (CamelStreamBuffer *sbf, + GCancellable *cancellable, + GError **error); ++void camel_stream_buffer_discard_cache (CamelStreamBuffer *sbf); + + G_END_DECLS + +diff --git a/src/camel/providers/pop3/camel-pop3-store.c b/src/camel/providers/pop3/camel-pop3-store.c +index 81c370f0a..5c9eb1eaa 100644 +--- a/src/camel/providers/pop3/camel-pop3-store.c ++++ b/src/camel/providers/pop3/camel-pop3-store.c +@@ -205,6 +205,8 @@ connect_to_server (CamelService *service, + + if (tls_stream != NULL) { + camel_stream_set_base_stream (stream, tls_stream); ++ /* Truncate any left cached input from the insecure part of the session */ ++ camel_pop3_stream_discard_cache (pop3_engine->stream); + g_object_unref (tls_stream); + } else { + g_prefix_error ( +diff --git a/src/camel/providers/pop3/camel-pop3-stream.c b/src/camel/providers/pop3/camel-pop3-stream.c +index 74bb11e61..c485b9bd6 100644 +--- a/src/camel/providers/pop3/camel-pop3-stream.c ++++ b/src/camel/providers/pop3/camel-pop3-stream.c +@@ -457,3 +457,14 @@ camel_pop3_stream_getd (CamelPOP3Stream *is, + + return 1; + } ++ ++void ++camel_pop3_stream_discard_cache (CamelPOP3Stream *is) ++{ ++ if (is) { ++ is->ptr = is->end = is->buf; ++ is->lineptr = is->linebuf; ++ is->lineend = is->linebuf + CAMEL_POP3_STREAM_LINE_SIZE; ++ is->ptr[0] = '\n'; ++ } ++} +diff --git a/src/camel/providers/pop3/camel-pop3-stream.h b/src/camel/providers/pop3/camel-pop3-stream.h +index bb6dbb903..128c8c45a 100644 +--- a/src/camel/providers/pop3/camel-pop3-stream.h ++++ b/src/camel/providers/pop3/camel-pop3-stream.h +@@ -87,6 +87,7 @@ gint camel_pop3_stream_getd (CamelPOP3Stream *is, + guint *len, + GCancellable *cancellable, + GError **error); ++void camel_pop3_stream_discard_cache (CamelPOP3Stream *is); + + G_END_DECLS + +diff --git a/src/camel/providers/smtp/camel-smtp-transport.c b/src/camel/providers/smtp/camel-smtp-transport.c +index 035baf367..1fc0f3206 100644 +--- a/src/camel/providers/smtp/camel-smtp-transport.c ++++ b/src/camel/providers/smtp/camel-smtp-transport.c +@@ -323,6 +323,8 @@ connect_to_server (CamelService *service, + + if (tls_stream != NULL) { + camel_stream_set_base_stream (stream, tls_stream); ++ /* Truncate any left cached input from the insecure part of the session */ ++ camel_stream_buffer_discard_cache (transport->istream); + g_object_unref (tls_stream); + } else { + g_prefix_error ( +-- +GitLab + diff --git a/gnu/packages/patches/evolution-data-server-CVE-2020-16117.patch b/gnu/packages/patches/evolution-data-server-CVE-2020-16117.patch new file mode 100644 index 0000000000..b2c0622a90 --- /dev/null +++ b/gnu/packages/patches/evolution-data-server-CVE-2020-16117.patch @@ -0,0 +1,28 @@ +From 2cc39592b532cf0dc994fd3694b8e6bf924c9ab5 Mon Sep 17 00:00:00 2001 +From: Milan Crha <mcrha@redhat.com> +Date: Mon, 10 Feb 2020 10:00:32 +0100 +Subject: [PATCH] I#189 - Crash on malformed server response with minimal + capabilities + +Closes https://gitlab.gnome.org/GNOME/evolution-data-server/issues/189 +--- + src/camel/providers/imapx/camel-imapx-server.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/camel/providers/imapx/camel-imapx-server.c b/src/camel/providers/imapx/camel-imapx-server.c +index 3c38fb1e9..3883321ec 100644 +--- a/src/camel/providers/imapx/camel-imapx-server.c ++++ b/src/camel/providers/imapx/camel-imapx-server.c +@@ -3045,7 +3045,8 @@ connected: + + /* See if we got new capabilities + * in the STARTTLS response. */ +- imapx_free_capability (is->priv->cinfo); ++ if (is->priv->cinfo) ++ imapx_free_capability (is->priv->cinfo); + is->priv->cinfo = NULL; + if (ic->status->condition == IMAPX_CAPABILITY) { + is->priv->cinfo = ic->status->u.cinfo; +-- +GitLab + diff --git a/gnu/packages/patches/gdk-pixbuf-CVE-2020-29385.patch b/gnu/packages/patches/gdk-pixbuf-CVE-2020-29385.patch new file mode 100644 index 0000000000..e6ac4de00b --- /dev/null +++ b/gnu/packages/patches/gdk-pixbuf-CVE-2020-29385.patch @@ -0,0 +1,53 @@ +Fix CVE-2020-29385. Note that we omit the binary test file +tests/test-images/fail/hang_114.gif from the following commit, to avoid +requiring 'git' to apply the patch. + + +From bdd3acbd48a575d418ba6bf1b32d7bda2fae1c81 Mon Sep 17 00:00:00 2001 +From: Robert Ancell <robert.ancell@canonical.com> +Date: Mon, 30 Nov 2020 12:26:12 +1300 +Subject: [PATCH] gif: Fix LZW decoder accepting invalid LZW code. + +The code value after a reset wasn't being validated, which means we would +accept invalid codes. This could cause an infinite loop in the decoder. + +Fixes CVE-2020-29385 + +Fixes https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/issues/164 +--- + gdk-pixbuf/lzw.c | 13 +++++++------ + tests/test-images/fail/hang_114.gif | Bin 0 -> 5561 bytes + 2 files changed, 7 insertions(+), 6 deletions(-) + create mode 100644 tests/test-images/fail/hang_114.gif + +diff --git a/gdk-pixbuf/lzw.c b/gdk-pixbuf/lzw.c +index 9e052a6f7..105daf2b1 100644 +--- a/gdk-pixbuf/lzw.c ++++ b/gdk-pixbuf/lzw.c +@@ -195,19 +195,20 @@ lzw_decoder_feed (LZWDecoder *self, + if (self->last_code != self->clear_code && self->code_table_size < MAX_CODES) { + if (self->code < self->code_table_size) + add_code (self, self->code); +- else if (self->code == self->code_table_size) ++ else + add_code (self, self->last_code); +- else { +- /* Invalid code received - just stop here */ +- self->last_code = self->eoi_code; +- return output_length; +- } + + /* When table is full increase code size */ + if (self->code_table_size == (1 << self->code_size) && self->code_size < LZW_CODE_MAX) + self->code_size++; + } + ++ /* Invalid code received - just stop here */ ++ if (self->code >= self->code_table_size) { ++ self->last_code = self->eoi_code; ++ return output_length; ++ } ++ + /* Convert codeword into indexes */ + n_written += write_indexes (self, output + n_written, output_length - n_written); + } diff --git a/gnu/packages/patches/geary-CVE-2020-24661.patch b/gnu/packages/patches/geary-CVE-2020-24661.patch new file mode 100644 index 0000000000..6cbc224786 --- /dev/null +++ b/gnu/packages/patches/geary-CVE-2020-24661.patch @@ -0,0 +1,133 @@ +From d4e86dc91e1d8a940dc40872fe94ef9ac0fed1b5 Mon Sep 17 00:00:00 2001 +From: Michael Gratton <mike@vee.net> +Date: Tue, 25 Aug 2020 03:54:09 +0000 +Subject: [PATCH] Merge branch 'mjog/866-self-signed-certificates' into + 'mainline' + +Fix invalid certificate pinning when GCR support is unavailable + +Closes #866 + +See merge request GNOME/geary!529 + +(cherry picked from commit 423a55b00f1dc6bee9dc17e67c0aea6f42387a77) + +5088adfe Application.CertificateManager: Rename some methods for clarity +0d957559 Application.CertificateManager: Check locally pinned certs for equality +--- + .../application-certificate-manager.vala | 44 +++++++++---------- + 1 file changed, 22 insertions(+), 22 deletions(-) + +diff --git a/src/client/application/application-certificate-manager.vala b/src/client/application/application-certificate-manager.vala +index 4881d73c0..65f6af4fa 100644 +--- a/src/client/application/application-certificate-manager.vala ++++ b/src/client/application/application-certificate-manager.vala +@@ -381,8 +381,8 @@ private class Application.TlsDatabase : GLib.TlsDatabase { + GLib.TlsCertificateFlags ret = this.parent.verify_chain( + chain, purpose, identity, interaction, flags, cancellable + ); +- if (should_verify(ret, purpose, identity) && +- verify(chain, identity, cancellable)) { ++ if (check_pinned(ret, purpose, identity) && ++ is_pinned(chain, identity, cancellable)) { + ret = 0; + } + return ret; +@@ -399,16 +399,16 @@ private class Application.TlsDatabase : GLib.TlsDatabase { + GLib.TlsCertificateFlags ret = yield this.parent.verify_chain_async( + chain, purpose, identity, interaction, flags, cancellable + ); +- if (should_verify(ret, purpose, identity) && +- yield verify_async(chain, identity, cancellable)) { ++ if (check_pinned(ret, purpose, identity) && ++ yield is_pinned_async(chain, identity, cancellable)) { + ret = 0; + } + return ret; + } + +- private inline bool should_verify(GLib.TlsCertificateFlags parent_ret, +- string purpose, +- GLib.SocketConnectable? identity) { ++ private inline bool check_pinned(GLib.TlsCertificateFlags parent_ret, ++ string purpose, ++ GLib.SocketConnectable? identity) { + // If the parent didn't verify, check for a locally pinned + // cert if it looks like we should, but always reject revoked + // certs +@@ -420,22 +420,22 @@ private class Application.TlsDatabase : GLib.TlsDatabase { + ); + } + +- private bool verify(GLib.TlsCertificate chain, +- GLib.SocketConnectable identity, +- GLib.Cancellable? cancellable) ++ private bool is_pinned(GLib.TlsCertificate chain, ++ GLib.SocketConnectable identity, ++ GLib.Cancellable? cancellable) + throws GLib.Error { +- bool is_verified = false; ++ bool is_pinned = false; + string id = to_name(identity); + TrustContext? context = null; + lock (this.pinned_certs) { + context = this.pinned_certs.get(id); + if (context != null) { +- is_verified = true; ++ is_pinned = context.certificate.is_same(chain); + } else { + // Cert not found in memory, check with GCR if + // enabled. + if (this.use_gcr) { +- is_verified = gcr_trust_is_certificate_pinned( ++ is_pinned = gcr_trust_is_certificate_pinned( + new Gcr.SimpleCertificate(chain.certificate.data), + GLib.TlsDatabase.PURPOSE_AUTHENTICATE_SERVER, + id, +@@ -443,7 +443,7 @@ private class Application.TlsDatabase : GLib.TlsDatabase { + ); + } + +- if (!is_verified) { ++ if (!is_pinned) { + // Cert is not pinned in memory or in GCR, so look + // for it on disk. Do this even if GCR support is + // enabled, since if the cert was previously saved +@@ -453,7 +453,7 @@ private class Application.TlsDatabase : GLib.TlsDatabase { + this.store_dir, id, cancellable + ); + this.pinned_certs.set(id, context); +- is_verified = true; ++ is_pinned = context.certificate.is_same(chain); + } catch (GLib.IOError.NOT_FOUND err) { + // Cert was not found saved, so it not pinned + } catch (GLib.Error err) { +@@ -465,18 +465,18 @@ private class Application.TlsDatabase : GLib.TlsDatabase { + } + } + } +- return is_verified; ++ return is_pinned; + } + +- private async bool verify_async(GLib.TlsCertificate chain, +- GLib.SocketConnectable identity, +- GLib.Cancellable? cancellable) ++ private async bool is_pinned_async(GLib.TlsCertificate chain, ++ GLib.SocketConnectable identity, ++ GLib.Cancellable? cancellable) + throws GLib.Error { +- bool is_valid = false; ++ bool pinned = false; + yield Geary.Nonblocking.Concurrent.global.schedule_async(() => { +- is_valid = verify(chain, identity, cancellable); ++ pinned = is_pinned(chain, identity, cancellable); + }, cancellable); +- return is_valid; ++ return pinned; + } + + private TrustContext? lookup_id(string id) { +-- +GitLab + diff --git a/gnu/packages/patches/glib-CVE-2021-27218.patch b/gnu/packages/patches/glib-CVE-2021-27218.patch new file mode 100644 index 0000000000..00fa5ebf79 --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27218.patch @@ -0,0 +1,132 @@ +Backport of: + +From 0f384c88a241bbbd884487b1c40b7b75f1e638d3 Mon Sep 17 00:00:00 2001 +From: Krzesimir Nowak <qdlacz@gmail.com> +Date: Wed, 10 Feb 2021 23:51:07 +0100 +Subject: [PATCH] gbytearray: Do not accept too large byte arrays + +GByteArray uses guint for storing the length of the byte array, but it +also has a constructor (g_byte_array_new_take) that takes length as a +gsize. gsize may be larger than guint (64 bits for gsize vs 32 bits +for guint). It is possible to call the function with a value greater +than G_MAXUINT, which will result in silent length truncation. This +may happen as a result of unreffing GBytes into GByteArray, so rather +be loud about it. + +(Test case tweaked by Philip Withnall.) + +(Backport 2.66: Add #include gstrfuncsprivate.h in the test case for +`g_memdup2()`.) +--- + glib/garray.c | 6 ++++++ + glib/gbytes.c | 4 ++++ + glib/tests/bytes.c | 35 ++++++++++++++++++++++++++++++++++- + 3 files changed, 44 insertions(+), 1 deletion(-) + +diff --git a/glib/garray.c b/glib/garray.c +index 942e74c9f..fb1a42aaf 100644 +--- a/glib/garray.c ++++ b/glib/garray.c +@@ -2013,6 +2013,10 @@ g_byte_array_new (void) + * Create byte array containing the data. The data will be owned by the array + * and will be freed with g_free(), i.e. it could be allocated using g_strdup(). + * ++ * Do not use it if @len is greater than %G_MAXUINT. #GByteArray ++ * stores the length of its data in #guint, which may be shorter than ++ * #gsize. ++ * + * Since: 2.32 + * + * Returns: (transfer full): a new #GByteArray +@@ -2024,6 +2028,8 @@ g_byte_array_new_take (guint8 *data, + GByteArray *array; + GRealArray *real; + ++ g_return_val_if_fail (len <= G_MAXUINT, NULL); ++ + array = g_byte_array_new (); + real = (GRealArray *)array; + g_assert (real->data == NULL); +diff --git a/glib/gbytes.c b/glib/gbytes.c +index 7b72886e5..d56abe6c3 100644 +--- a/glib/gbytes.c ++++ b/glib/gbytes.c +@@ -519,6 +519,10 @@ g_bytes_unref_to_data (GBytes *bytes, + * g_bytes_new(), g_bytes_new_take() or g_byte_array_free_to_bytes(). In all + * other cases the data is copied. + * ++ * Do not use it if @bytes contains more than %G_MAXUINT ++ * bytes. #GByteArray stores the length of its data in #guint, which ++ * may be shorter than #gsize, that @bytes is using. ++ * + * Returns: (transfer full): a new mutable #GByteArray containing the same byte data + * + * Since: 2.32 +diff --git a/glib/tests/bytes.c b/glib/tests/bytes.c +index 5ea5c2b35..15a6aaad6 100644 +--- a/glib/tests/bytes.c ++++ b/glib/tests/bytes.c +@@ -10,12 +10,12 @@ + */ + + #undef G_DISABLE_ASSERT +-#undef G_LOG_DOMAIN + + #include <stdio.h> + #include <stdlib.h> + #include <string.h> + #include "glib.h" ++#include "glib/gstrfuncsprivate.h" + + /* Keep in sync with glib/gbytes.c */ + struct _GBytes +@@ -333,6 +333,38 @@ test_to_array_transferred (void) + g_byte_array_unref (array); + } + ++static void ++test_to_array_transferred_oversize (void) ++{ ++ g_test_message ("g_bytes_unref_to_array() can only take GBytes up to " ++ "G_MAXUINT in length; test that longer ones are rejected"); ++ ++ if (sizeof (guint) >= sizeof (gsize)) ++ { ++ g_test_skip ("Skipping test as guint is not smaller than gsize"); ++ } ++ else if (g_test_undefined ()) ++ { ++ GByteArray *array = NULL; ++ GBytes *bytes = NULL; ++ gpointer data = g_memdup2 (NYAN, N_NYAN); ++ gsize len = ((gsize) G_MAXUINT) + 1; ++ ++ bytes = g_bytes_new_take (data, len); ++ g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, ++ "g_byte_array_new_take: assertion 'len <= G_MAXUINT' failed"); ++ array = g_bytes_unref_to_array (g_steal_pointer (&bytes)); ++ g_test_assert_expected_messages (); ++ g_assert_null (array); ++ ++ g_free (data); ++ } ++ else ++ { ++ g_test_skip ("Skipping test as testing undefined behaviour is disabled"); ++ } ++} ++ + static void + test_to_array_two_refs (void) + { +@@ -410,6 +442,7 @@ main (int argc, char *argv[]) + g_test_add_func ("/bytes/to-array/transfered", test_to_array_transferred); + g_test_add_func ("/bytes/to-array/two-refs", test_to_array_two_refs); + g_test_add_func ("/bytes/to-array/non-malloc", test_to_array_non_malloc); ++ g_test_add_func ("/bytes/to-array/transferred/oversize", test_to_array_transferred_oversize); + g_test_add_func ("/bytes/null", test_null); + + return g_test_run (); +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-27219-01.patch b/gnu/packages/patches/glib-CVE-2021-27219-01.patch new file mode 100644 index 0000000000..5db360d468 --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27219-01.patch @@ -0,0 +1,176 @@ +Backport of: + +From 5e5f75a77e399c638be66d74e5daa8caeb433e00 Mon Sep 17 00:00:00 2001 +From: Philip Withnall <pwithnall@endlessos.org> +Date: Thu, 4 Feb 2021 13:30:52 +0000 +Subject: [PATCH 01/11] gstrfuncs: Add internal g_memdup2() function +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This will replace the existing `g_memdup()` function for use within +GLib. It has an unavoidable security flaw of taking its `byte_size` +argument as a `guint` rather than as a `gsize`. Most callers will +expect it to be a `gsize`, and may pass in large values which could +silently be truncated, resulting in an undersize allocation compared +to what the caller expects. + +This could lead to a classic buffer overflow vulnerability for many +callers of `g_memdup()`. + +`g_memdup2()`, in comparison, takes its `byte_size` as a `gsize`. + +Spotted by Kevin Backhouse of GHSL. + +In GLib 2.68, `g_memdup2()` will be a new public API. In this version +for backport to older stable releases, it’s a new `static inline` API +in a private header, so that use of `g_memdup()` within GLib can be +fixed without adding a new API in a stable release series. + +Signed-off-by: Philip Withnall <pwithnall@endlessos.org> +Helps: GHSL-2021-045 +Helps: #2319 +--- + docs/reference/glib/meson.build | 1 + + glib/gstrfuncsprivate.h | 55 +++++++++++++++++++++++++++++++++ + glib/meson.build | 1 + + glib/tests/strfuncs.c | 23 ++++++++++++++ + 4 files changed, 80 insertions(+) + create mode 100644 glib/gstrfuncsprivate.h + +diff --git a/docs/reference/glib/meson.build b/docs/reference/glib/meson.build +index bba7649f0..ee39f6d04 100644 +--- a/docs/reference/glib/meson.build ++++ b/docs/reference/glib/meson.build +@@ -22,6 +22,7 @@ if get_option('gtk_doc') + 'gprintfint.h', + 'gmirroringtable.h', + 'gscripttable.h', ++ 'gstrfuncsprivate.h', + 'glib-mirroring-tab', + 'gnulib', + 'pcre', +diff --git a/glib/gstrfuncsprivate.h b/glib/gstrfuncsprivate.h +new file mode 100644 +index 000000000..85c88328a +--- /dev/null ++++ b/glib/gstrfuncsprivate.h +@@ -0,0 +1,55 @@ ++/* GLIB - Library of useful routines for C programming ++ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * This library 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 ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, see <http://www.gnu.org/licenses/>. ++ */ ++ ++#include <glib.h> ++#include <string.h> ++ ++/* ++ * g_memdup2: ++ * @mem: (nullable): the memory to copy. ++ * @byte_size: the number of bytes to copy. ++ * ++ * Allocates @byte_size bytes of memory, and copies @byte_size bytes into it ++ * from @mem. If @mem is %NULL it returns %NULL. ++ * ++ * This replaces g_memdup(), which was prone to integer overflows when ++ * converting the argument from a #gsize to a #guint. ++ * ++ * This static inline version is a backport of the new public API from ++ * GLib 2.68, kept internal to GLib for backport to older stable releases. ++ * See https://gitlab.gnome.org/GNOME/glib/-/issues/2319. ++ * ++ * Returns: (nullable): a pointer to the newly-allocated copy of the memory, ++ * or %NULL if @mem is %NULL. ++ * Since: 2.68 ++ */ ++static inline gpointer ++g_memdup2 (gconstpointer mem, ++ gsize byte_size) ++{ ++ gpointer new_mem; ++ ++ if (mem && byte_size != 0) ++ { ++ new_mem = g_malloc (byte_size); ++ memcpy (new_mem, mem, byte_size); ++ } ++ else ++ new_mem = NULL; ++ ++ return new_mem; ++} +diff --git a/glib/meson.build b/glib/meson.build +index aaf5f00f5..5a6eea397 100644 +--- a/glib/meson.build ++++ b/glib/meson.build +@@ -268,6 +268,7 @@ glib_sources = files( + 'gslist.c', + 'gstdio.c', + 'gstrfuncs.c', ++ 'gstrfuncsprivate.h', + 'gstring.c', + 'gstringchunk.c', + 'gtestutils.c', +diff --git a/glib/tests/strfuncs.c b/glib/tests/strfuncs.c +index e1f9619c7..d968afff9 100644 +--- a/glib/tests/strfuncs.c ++++ b/glib/tests/strfuncs.c +@@ -32,6 +32,8 @@ + #include <string.h> + #include "glib.h" + ++#include "gstrfuncsprivate.h" ++ + #if defined (_MSC_VER) && (_MSC_VER <= 1800) + #define isnan(x) _isnan(x) + +@@ -219,6 +221,26 @@ test_memdup (void) + g_free (str_dup); + } + ++/* Testing g_memdup2() function with various positive and negative cases */ ++static void ++test_memdup2 (void) ++{ ++ gchar *str_dup = NULL; ++ const gchar *str = "The quick brown fox jumps over the lazy dog"; ++ ++ /* Testing negative cases */ ++ g_assert_null (g_memdup2 (NULL, 1024)); ++ g_assert_null (g_memdup2 (str, 0)); ++ g_assert_null (g_memdup2 (NULL, 0)); ++ ++ /* Testing normal usage cases */ ++ str_dup = g_memdup2 (str, strlen (str) + 1); ++ g_assert_nonnull (str_dup); ++ g_assert_cmpstr (str, ==, str_dup); ++ ++ g_free (str_dup); ++} ++ + /* Testing g_strpcpy() function with various positive and negative cases */ + static void + test_stpcpy (void) +@@ -2523,6 +2545,7 @@ main (int argc, + g_test_add_func ("/strfuncs/has-prefix", test_has_prefix); + g_test_add_func ("/strfuncs/has-suffix", test_has_suffix); + g_test_add_func ("/strfuncs/memdup", test_memdup); ++ g_test_add_func ("/strfuncs/memdup2", test_memdup2); + g_test_add_func ("/strfuncs/stpcpy", test_stpcpy); + g_test_add_func ("/strfuncs/str_match_string", test_str_match_string); + g_test_add_func ("/strfuncs/str_tokenize_and_fold", test_str_tokenize_and_fold); +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-27219-02.patch b/gnu/packages/patches/glib-CVE-2021-27219-02.patch new file mode 100644 index 0000000000..431959fa8f --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27219-02.patch @@ -0,0 +1,264 @@ +Backport of: + +From be8834340a2d928ece82025463ae23dee2c333d0 Mon Sep 17 00:00:00 2001 +From: Philip Withnall <pwithnall@endlessos.org> +Date: Thu, 4 Feb 2021 13:37:56 +0000 +Subject: [PATCH 02/11] gio: Use g_memdup2() instead of g_memdup() in obvious + places +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Convert all the call sites which use `g_memdup()`’s length argument +trivially (for example, by passing a `sizeof()`), so that they use +`g_memdup2()` instead. + +In almost all of these cases the use of `g_memdup()` would not have +caused problems, but it will soon be deprecated, so best port away from +it. + +Signed-off-by: Philip Withnall <pwithnall@endlessos.org> +Helps: #2319 +--- + gio/gdbusconnection.c | 5 +++-- + gio/gdbusinterfaceskeleton.c | 3 ++- + gio/gfile.c | 7 ++++--- + gio/gsettingsschema.c | 5 +++-- + gio/gwin32registrykey.c | 8 +++++--- + gio/tests/async-close-output-stream.c | 6 ++++-- + gio/tests/gdbus-export.c | 5 +++-- + gio/win32/gwinhttpfile.c | 9 +++++---- + 8 files changed, 29 insertions(+), 19 deletions(-) + +diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c +index f1f0921d4..d56453486 100644 +--- a/gio/gdbusconnection.c ++++ b/gio/gdbusconnection.c +@@ -110,6 +110,7 @@ + #include "gasyncinitable.h" + #include "giostream.h" + #include "gasyncresult.h" ++#include "gstrfuncsprivate.h" + #include "gtask.h" + #include "gmarshal-internal.h" + +@@ -3997,7 +3998,7 @@ _g_dbus_interface_vtable_copy (const GDBusInterfaceVTable *vtable) + /* Don't waste memory by copying padding - remember to update this + * when changing struct _GDBusInterfaceVTable in gdbusconnection.h + */ +- return g_memdup ((gconstpointer) vtable, 3 * sizeof (gpointer)); ++ return g_memdup2 ((gconstpointer) vtable, 3 * sizeof (gpointer)); + } + + static void +@@ -4014,7 +4015,7 @@ _g_dbus_subtree_vtable_copy (const GDBusSubtreeVTable *vtable) + /* Don't waste memory by copying padding - remember to update this + * when changing struct _GDBusSubtreeVTable in gdbusconnection.h + */ +- return g_memdup ((gconstpointer) vtable, 3 * sizeof (gpointer)); ++ return g_memdup2 ((gconstpointer) vtable, 3 * sizeof (gpointer)); + } + + static void +diff --git a/gio/gdbusinterfaceskeleton.c b/gio/gdbusinterfaceskeleton.c +index 4a06516c1..4a4b719a5 100644 +--- a/gio/gdbusinterfaceskeleton.c ++++ b/gio/gdbusinterfaceskeleton.c +@@ -28,6 +28,7 @@ + #include "gdbusmethodinvocation.h" + #include "gdbusconnection.h" + #include "gmarshal-internal.h" ++#include "gstrfuncsprivate.h" + #include "gtask.h" + #include "gioerror.h" + +@@ -701,7 +702,7 @@ add_connection_locked (GDBusInterfaceSkeleton *interface_, + * properly before building the hooked_vtable, so we create it + * once at the last minute. + */ +- interface_->priv->hooked_vtable = g_memdup (g_dbus_interface_skeleton_get_vtable (interface_), sizeof (GDBusInterfaceVTable)); ++ interface_->priv->hooked_vtable = g_memdup2 (g_dbus_interface_skeleton_get_vtable (interface_), sizeof (GDBusInterfaceVTable)); + interface_->priv->hooked_vtable->method_call = skeleton_intercept_handle_method_call; + } + +diff --git a/gio/gfile.c b/gio/gfile.c +index ba93f7c75..88b341e7d 100644 +--- a/gio/gfile.c ++++ b/gio/gfile.c +@@ -60,6 +60,7 @@ + #include "gasyncresult.h" + #include "gioerror.h" + #include "glibintl.h" ++#include "gstrfuncsprivate.h" + + + /** +@@ -7884,7 +7885,7 @@ measure_disk_usage_progress (gboolean reporting, + g_main_context_invoke_full (g_task_get_context (task), + g_task_get_priority (task), + measure_disk_usage_invoke_progress, +- g_memdup (&progress, sizeof progress), ++ g_memdup2 (&progress, sizeof progress), + g_free); + } + +@@ -7902,7 +7903,7 @@ measure_disk_usage_thread (GTask *task, + data->progress_callback ? measure_disk_usage_progress : NULL, task, + &result.disk_usage, &result.num_dirs, &result.num_files, + &error)) +- g_task_return_pointer (task, g_memdup (&result, sizeof result), g_free); ++ g_task_return_pointer (task, g_memdup2 (&result, sizeof result), g_free); + else + g_task_return_error (task, error); + } +@@ -7926,7 +7927,7 @@ g_file_real_measure_disk_usage_async (GFile *file, + + task = g_task_new (file, cancellable, callback, user_data); + g_task_set_source_tag (task, g_file_real_measure_disk_usage_async); +- g_task_set_task_data (task, g_memdup (&data, sizeof data), g_free); ++ g_task_set_task_data (task, g_memdup2 (&data, sizeof data), g_free); + g_task_set_priority (task, io_priority); + + g_task_run_in_thread (task, measure_disk_usage_thread); +diff --git a/gio/gsettingsschema.c b/gio/gsettingsschema.c +index 3a60b8c64..dded9b1ca 100644 +--- a/gio/gsettingsschema.c ++++ b/gio/gsettingsschema.c +@@ -20,6 +20,7 @@ + + #include "gsettingsschema-internal.h" + #include "gsettings.h" ++#include "gstrfuncsprivate.h" + + #include "gvdb/gvdb-reader.h" + #include "strinfo.c" +@@ -1058,9 +1059,9 @@ g_settings_schema_list_children (GSettingsSchema *schema) + + if (g_str_has_suffix (key, "/")) + { +- gint length = strlen (key); ++ gsize length = strlen (key); + +- strv[j] = g_memdup (key, length); ++ strv[j] = g_memdup2 (key, length); + strv[j][length - 1] = '\0'; + j++; + } +diff --git a/gio/gwin32registrykey.c b/gio/gwin32registrykey.c +index c19fede4e..619fd48af 100644 +--- a/gio/gwin32registrykey.c ++++ b/gio/gwin32registrykey.c +@@ -28,6 +28,8 @@ + #include <ntstatus.h> + #include <winternl.h> + ++#include "gstrfuncsprivate.h" ++ + #ifndef _WDMDDK_ + typedef enum _KEY_INFORMATION_CLASS { + KeyBasicInformation, +@@ -247,7 +249,7 @@ g_win32_registry_value_iter_copy (const GWin32RegistryValueIter *iter) + new_iter->value_name_size = iter->value_name_size; + + if (iter->value_data != NULL) +- new_iter->value_data = g_memdup (iter->value_data, iter->value_data_size); ++ new_iter->value_data = g_memdup2 (iter->value_data, iter->value_data_size); + + new_iter->value_data_size = iter->value_data_size; + +@@ -268,8 +270,8 @@ g_win32_registry_value_iter_copy (const GWin32RegistryValueIter *iter) + new_iter->value_data_expanded_charsize = iter->value_data_expanded_charsize; + + if (iter->value_data_expanded_u8 != NULL) +- new_iter->value_data_expanded_u8 = g_memdup (iter->value_data_expanded_u8, +- iter->value_data_expanded_charsize); ++ new_iter->value_data_expanded_u8 = g_memdup2 (iter->value_data_expanded_u8, ++ iter->value_data_expanded_charsize); + + new_iter->value_data_expanded_u8_size = iter->value_data_expanded_charsize; + +diff --git a/gio/tests/async-close-output-stream.c b/gio/tests/async-close-output-stream.c +index 5f6620275..d3f97a119 100644 +--- a/gio/tests/async-close-output-stream.c ++++ b/gio/tests/async-close-output-stream.c +@@ -24,6 +24,8 @@ + #include <stdlib.h> + #include <string.h> + ++#include "gstrfuncsprivate.h" ++ + #define DATA_TO_WRITE "Hello world\n" + + typedef struct +@@ -147,9 +149,9 @@ prepare_data (SetupData *data, + + data->expected_size = g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (data->data_stream)); + +- g_assert_cmpint (data->expected_size, >, 0); ++ g_assert_cmpuint (data->expected_size, >, 0); + +- data->expected_output = g_memdup (written, (guint)data->expected_size); ++ data->expected_output = g_memdup2 (written, data->expected_size); + + /* then recreate the streams and prepare them for the asynchronous close */ + destroy_streams (data); +diff --git a/gio/tests/gdbus-export.c b/gio/tests/gdbus-export.c +index 506c7458a..5513306f8 100644 +--- a/gio/tests/gdbus-export.c ++++ b/gio/tests/gdbus-export.c +@@ -23,6 +23,7 @@ + #include <string.h> + + #include "gdbus-tests.h" ++#include "gstrfuncsprivate.h" + + /* all tests rely on a shared mainloop */ + static GMainLoop *loop = NULL; +@@ -671,7 +672,7 @@ subtree_introspect (GDBusConnection *connection, + g_assert_not_reached (); + } + +- return g_memdup (interfaces, 2 * sizeof (void *)); ++ return g_memdup2 (interfaces, 2 * sizeof (void *)); + } + + static const GDBusInterfaceVTable * +@@ -727,7 +728,7 @@ dynamic_subtree_introspect (GDBusConnection *connection, + { + const GDBusInterfaceInfo *interfaces[2] = { &dyna_interface_info, NULL }; + +- return g_memdup (interfaces, 2 * sizeof (void *)); ++ return g_memdup2 (interfaces, 2 * sizeof (void *)); + } + + static const GDBusInterfaceVTable * +diff --git a/gio/win32/gwinhttpfile.c b/gio/win32/gwinhttpfile.c +index cf5eed31d..040ee8564 100644 +--- a/gio/win32/gwinhttpfile.c ++++ b/gio/win32/gwinhttpfile.c +@@ -29,6 +29,7 @@ + #include "gio/gfile.h" + #include "gio/gfileattribute.h" + #include "gio/gfileinfo.h" ++#include "gstrfuncsprivate.h" + #include "gwinhttpfile.h" + #include "gwinhttpfileinputstream.h" + #include "gwinhttpfileoutputstream.h" +@@ -393,10 +394,10 @@ g_winhttp_file_resolve_relative_path (GFile *file, + child = g_object_new (G_TYPE_WINHTTP_FILE, NULL); + child->vfs = winhttp_file->vfs; + child->url = winhttp_file->url; +- child->url.lpszScheme = g_memdup (winhttp_file->url.lpszScheme, (winhttp_file->url.dwSchemeLength+1)*2); +- child->url.lpszHostName = g_memdup (winhttp_file->url.lpszHostName, (winhttp_file->url.dwHostNameLength+1)*2); +- child->url.lpszUserName = g_memdup (winhttp_file->url.lpszUserName, (winhttp_file->url.dwUserNameLength+1)*2); +- child->url.lpszPassword = g_memdup (winhttp_file->url.lpszPassword, (winhttp_file->url.dwPasswordLength+1)*2); ++ child->url.lpszScheme = g_memdup2 (winhttp_file->url.lpszScheme, (winhttp_file->url.dwSchemeLength+1)*2); ++ child->url.lpszHostName = g_memdup2 (winhttp_file->url.lpszHostName, (winhttp_file->url.dwHostNameLength+1)*2); ++ child->url.lpszUserName = g_memdup2 (winhttp_file->url.lpszUserName, (winhttp_file->url.dwUserNameLength+1)*2); ++ child->url.lpszPassword = g_memdup2 (winhttp_file->url.lpszPassword, (winhttp_file->url.dwPasswordLength+1)*2); + child->url.lpszUrlPath = wnew_path; + child->url.dwUrlPathLength = wcslen (wnew_path); + child->url.lpszExtraInfo = NULL; +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-27219-03.patch b/gnu/packages/patches/glib-CVE-2021-27219-03.patch new file mode 100644 index 0000000000..99e849c43c --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27219-03.patch @@ -0,0 +1,136 @@ +From 6110caea45b235420b98cd41d845cc92238f6781 Mon Sep 17 00:00:00 2001 +From: Philip Withnall <pwithnall@endlessos.org> +Date: Thu, 4 Feb 2021 13:39:25 +0000 +Subject: [PATCH 03/11] gobject: Use g_memdup2() instead of g_memdup() in + obvious places +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Convert all the call sites which use `g_memdup()`’s length argument +trivially (for example, by passing a `sizeof()`), so that they use +`g_memdup2()` instead. + +In almost all of these cases the use of `g_memdup()` would not have +caused problems, but it will soon be deprecated, so best port away from +it. + +Signed-off-by: Philip Withnall <pwithnall@endlessos.org> +Helps: #2319 +--- + gobject/gsignal.c | 3 ++- + gobject/gtype.c | 9 +++++---- + gobject/gtypemodule.c | 3 ++- + gobject/tests/param.c | 4 +++- + 4 files changed, 12 insertions(+), 7 deletions(-) + +diff --git a/gobject/gsignal.c b/gobject/gsignal.c +index 77d8f211e..41c54ab57 100644 +--- a/gobject/gsignal.c ++++ b/gobject/gsignal.c +@@ -28,6 +28,7 @@ + #include <signal.h> + + #include "gsignal.h" ++#include "gstrfuncsprivate.h" + #include "gtype-private.h" + #include "gbsearcharray.h" + #include "gvaluecollector.h" +@@ -1730,7 +1731,7 @@ g_signal_newv (const gchar *signal_name, + node->single_va_closure_is_valid = FALSE; + node->flags = signal_flags & G_SIGNAL_FLAGS_MASK; + node->n_params = n_params; +- node->param_types = g_memdup (param_types, sizeof (GType) * n_params); ++ node->param_types = g_memdup2 (param_types, sizeof (GType) * n_params); + node->return_type = return_type; + node->class_closure_bsa = NULL; + if (accumulator) +diff --git a/gobject/gtype.c b/gobject/gtype.c +index 7d3789400..8441b90e9 100644 +--- a/gobject/gtype.c ++++ b/gobject/gtype.c +@@ -33,6 +33,7 @@ + + #include "glib-private.h" + #include "gconstructor.h" ++#include "gstrfuncsprivate.h" + + #ifdef G_OS_WIN32 + #include <windows.h> +@@ -1470,7 +1471,7 @@ type_add_interface_Wm (TypeNode *node, + iholder->next = iface_node_get_holders_L (iface); + iface_node_set_holders_W (iface, iholder); + iholder->instance_type = NODE_TYPE (node); +- iholder->info = info ? g_memdup (info, sizeof (*info)) : NULL; ++ iholder->info = info ? g_memdup2 (info, sizeof (*info)) : NULL; + iholder->plugin = plugin; + + /* create an iface entry for this type */ +@@ -1731,7 +1732,7 @@ type_iface_retrieve_holder_info_Wm (TypeNode *iface, + INVALID_RECURSION ("g_type_plugin_*", iholder->plugin, NODE_NAME (iface)); + + check_interface_info_I (iface, instance_type, &tmp_info); +- iholder->info = g_memdup (&tmp_info, sizeof (tmp_info)); ++ iholder->info = g_memdup2 (&tmp_info, sizeof (tmp_info)); + } + + return iholder; /* we don't modify write lock upon returning NULL */ +@@ -2016,10 +2017,10 @@ type_iface_vtable_base_init_Wm (TypeNode *iface, + IFaceEntry *pentry = type_lookup_iface_entry_L (pnode, iface); + + if (pentry) +- vtable = g_memdup (pentry->vtable, iface->data->iface.vtable_size); ++ vtable = g_memdup2 (pentry->vtable, iface->data->iface.vtable_size); + } + if (!vtable) +- vtable = g_memdup (iface->data->iface.dflt_vtable, iface->data->iface.vtable_size); ++ vtable = g_memdup2 (iface->data->iface.dflt_vtable, iface->data->iface.vtable_size); + entry->vtable = vtable; + vtable->g_type = NODE_TYPE (iface); + vtable->g_instance_type = NODE_TYPE (node); +diff --git a/gobject/gtypemodule.c b/gobject/gtypemodule.c +index 4ecaf8c88..20911fafd 100644 +--- a/gobject/gtypemodule.c ++++ b/gobject/gtypemodule.c +@@ -19,6 +19,7 @@ + + #include <stdlib.h> + ++#include "gstrfuncsprivate.h" + #include "gtypeplugin.h" + #include "gtypemodule.h" + +@@ -436,7 +437,7 @@ g_type_module_register_type (GTypeModule *module, + module_type_info->loaded = TRUE; + module_type_info->info = *type_info; + if (type_info->value_table) +- module_type_info->info.value_table = g_memdup (type_info->value_table, ++ module_type_info->info.value_table = g_memdup2 (type_info->value_table, + sizeof (GTypeValueTable)); + + return module_type_info->type; +diff --git a/gobject/tests/param.c b/gobject/tests/param.c +index 758289bf8..971cff162 100644 +--- a/gobject/tests/param.c ++++ b/gobject/tests/param.c +@@ -2,6 +2,8 @@ + #include <glib-object.h> + #include <stdlib.h> + ++#include "gstrfuncsprivate.h" ++ + static void + test_param_value (void) + { +@@ -851,7 +853,7 @@ main (int argc, char *argv[]) + test_path = g_strdup_printf ("/param/implement/subprocess/%d-%d-%d-%d", + data.change_this_flag, data.change_this_type, + data.use_this_flag, data.use_this_type); +- test_data = g_memdup (&data, sizeof (TestParamImplementData)); ++ test_data = g_memdup2 (&data, sizeof (TestParamImplementData)); + g_test_add_data_func_full (test_path, test_data, test_param_implement_child, g_free); + g_free (test_path); + } +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-27219-04.patch b/gnu/packages/patches/glib-CVE-2021-27219-04.patch new file mode 100644 index 0000000000..3ae01f34b1 --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27219-04.patch @@ -0,0 +1,308 @@ +Backport of: + +From 0736b7c1e7cf4232c5d7eb2b0fbfe9be81bd3baa Mon Sep 17 00:00:00 2001 +From: Philip Withnall <pwithnall@endlessos.org> +Date: Thu, 4 Feb 2021 13:41:21 +0000 +Subject: [PATCH 04/11] glib: Use g_memdup2() instead of g_memdup() in obvious + places +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Convert all the call sites which use `g_memdup()`’s length argument +trivially (for example, by passing a `sizeof()` or an existing `gsize` +variable), so that they use `g_memdup2()` instead. + +In almost all of these cases the use of `g_memdup()` would not have +caused problems, but it will soon be deprecated, so best port away from +it + +In particular, this fixes an overflow within `g_bytes_new()`, identified +as GHSL-2021-045 by GHSL team member Kevin Backhouse. + +Signed-off-by: Philip Withnall <pwithnall@endlessos.org> +Fixes: GHSL-2021-045 +Helps: #2319 +--- + glib/gbytes.c | 6 ++++-- + glib/gdir.c | 3 ++- + glib/ghash.c | 7 ++++--- + glib/giochannel.c | 3 ++- + glib/gslice.c | 3 ++- + glib/gtestutils.c | 3 ++- + glib/gvariant.c | 7 ++++--- + glib/gvarianttype.c | 3 ++- + glib/tests/array-test.c | 4 +++- + glib/tests/option-context.c | 6 ++++-- + 10 files changed, 29 insertions(+), 16 deletions(-) + +diff --git a/glib/gbytes.c b/glib/gbytes.c +index d56abe6c3..dee494820 100644 +--- a/glib/gbytes.c ++++ b/glib/gbytes.c +@@ -34,6 +34,8 @@ + + #include <string.h> + ++#include "gstrfuncsprivate.h" ++ + /** + * GBytes: + * +@@ -95,7 +97,7 @@ g_bytes_new (gconstpointer data, + { + g_return_val_if_fail (data != NULL || size == 0, NULL); + +- return g_bytes_new_take (g_memdup (data, size), size); ++ return g_bytes_new_take (g_memdup2 (data, size), size); + } + + /** +@@ -499,7 +501,7 @@ g_bytes_unref_to_data (GBytes *bytes, + * Copy: Non g_malloc (or compatible) allocator, or static memory, + * so we have to copy, and then unref. + */ +- result = g_memdup (bytes->data, bytes->size); ++ result = g_memdup2 (bytes->data, bytes->size); + *size = bytes->size; + g_bytes_unref (bytes); + } +diff --git a/glib/gdir.c b/glib/gdir.c +index 6b85e99c8..6747a8c6f 100644 +--- a/glib/gdir.c ++++ b/glib/gdir.c +@@ -37,6 +37,7 @@ + #include "gconvert.h" + #include "gfileutils.h" + #include "gstrfuncs.h" ++#include "gstrfuncsprivate.h" + #include "gtestutils.h" + #include "glibintl.h" + +@@ -112,7 +113,7 @@ g_dir_open_with_errno (const gchar *path, + return NULL; + #endif + +- return g_memdup (&dir, sizeof dir); ++ return g_memdup2 (&dir, sizeof dir); + } + + /** +diff --git a/glib/ghash.c b/glib/ghash.c +index e61b03788..26f26062b 100644 +--- a/glib/ghash.c ++++ b/glib/ghash.c +@@ -34,6 +34,7 @@ + #include "gmacros.h" + #include "glib-private.h" + #include "gstrfuncs.h" ++#include "gstrfuncsprivate.h" + #include "gatomic.h" + #include "gtestutils.h" + #include "gslice.h" +@@ -964,7 +965,7 @@ g_hash_table_ensure_keyval_fits (GHashTable *hash_table, gpointer key, gpointer + if (hash_table->have_big_keys) + { + if (key != value) +- hash_table->values = g_memdup (hash_table->keys, sizeof (gpointer) * hash_table->size); ++ hash_table->values = g_memdup2 (hash_table->keys, sizeof (gpointer) * hash_table->size); + /* Keys and values are both big now, so no need for further checks */ + return; + } +@@ -972,7 +973,7 @@ g_hash_table_ensure_keyval_fits (GHashTable *hash_table, gpointer key, gpointer + { + if (key != value) + { +- hash_table->values = g_memdup (hash_table->keys, sizeof (guint) * hash_table->size); ++ hash_table->values = g_memdup2 (hash_table->keys, sizeof (guint) * hash_table->size); + is_a_set = FALSE; + } + } +@@ -1000,7 +1001,7 @@ g_hash_table_ensure_keyval_fits (GHashTable *hash_table, gpointer key, gpointer + + /* Just split if necessary */ + if (is_a_set && key != value) +- hash_table->values = g_memdup (hash_table->keys, sizeof (gpointer) * hash_table->size); ++ hash_table->values = g_memdup2 (hash_table->keys, sizeof (gpointer) * hash_table->size); + + #endif + } +diff --git a/glib/giochannel.c b/glib/giochannel.c +index 1956e9dc6..15927c391 100644 +--- a/glib/giochannel.c ++++ b/glib/giochannel.c +@@ -37,6 +37,7 @@ + #include "giochannel.h" + + #include "gstrfuncs.h" ++#include "gstrfuncsprivate.h" + #include "gtestutils.h" + #include "glibintl.h" + +@@ -892,7 +893,7 @@ g_io_channel_set_line_term (GIOChannel *channel, + length = strlen (line_term); + + g_free (channel->line_term); +- channel->line_term = line_term ? g_memdup (line_term, length) : NULL; ++ channel->line_term = line_term ? g_memdup2 (line_term, length) : NULL; + channel->line_term_len = length; + } + +diff --git a/glib/gslice.c b/glib/gslice.c +index 4c758c3be..bcdbb8853 100644 +--- a/glib/gslice.c ++++ b/glib/gslice.c +@@ -41,6 +41,7 @@ + #include "gmain.h" + #include "gmem.h" /* gslice.h */ + #include "gstrfuncs.h" ++#include "gstrfuncsprivate.h" + #include "gutils.h" + #include "gtrashstack.h" + #include "gtestutils.h" +@@ -350,7 +351,7 @@ g_slice_get_config_state (GSliceConfig ckey, + array[i++] = allocator->contention_counters[address]; + array[i++] = allocator_get_magazine_threshold (allocator, address); + *n_values = i; +- return g_memdup (array, sizeof (array[0]) * *n_values); ++ return g_memdup2 (array, sizeof (array[0]) * *n_values); + default: + return NULL; + } +diff --git a/glib/gtestutils.c b/glib/gtestutils.c +index dd789482f..5887ecc36 100644 +--- a/glib/gtestutils.c ++++ b/glib/gtestutils.c +@@ -49,6 +49,7 @@ + #include "gpattern.h" + #include "grand.h" + #include "gstrfuncs.h" ++#include "gstrfuncsprivate.h" + #include "gtimer.h" + #include "gslice.h" + #include "gspawn.h" +@@ -3798,7 +3799,7 @@ g_test_log_extract (GTestLogBuffer *tbuffer) + if (p <= tbuffer->data->str + mlength) + { + g_string_erase (tbuffer->data, 0, mlength); +- tbuffer->msgs = g_slist_prepend (tbuffer->msgs, g_memdup (&msg, sizeof (msg))); ++ tbuffer->msgs = g_slist_prepend (tbuffer->msgs, g_memdup2 (&msg, sizeof (msg))); + return TRUE; + } + +diff --git a/glib/gvariant.c b/glib/gvariant.c +index b61bf7278..d6f68a9ea 100644 +--- a/glib/gvariant.c ++++ b/glib/gvariant.c +@@ -33,6 +33,7 @@ + + #include <string.h> + ++#include "gstrfuncsprivate.h" + + /** + * SECTION:gvariant +@@ -725,7 +726,7 @@ g_variant_new_variant (GVariant *value) + g_variant_ref_sink (value); + + return g_variant_new_from_children (G_VARIANT_TYPE_VARIANT, +- g_memdup (&value, sizeof value), ++ g_memdup2 (&value, sizeof value), + 1, g_variant_is_trusted (value)); + } + +@@ -1229,7 +1230,7 @@ g_variant_new_fixed_array (const GVariantType *element_type, + return NULL; + } + +- data = g_memdup (elements, n_elements * element_size); ++ data = g_memdup2 (elements, n_elements * element_size); + value = g_variant_new_from_data (array_type, data, + n_elements * element_size, + FALSE, g_free, data); +@@ -1908,7 +1909,7 @@ g_variant_dup_bytestring (GVariant *value, + if (length) + *length = size; + +- return g_memdup (original, size + 1); ++ return g_memdup2 (original, size + 1); + } + + /** +diff --git a/glib/gvarianttype.c b/glib/gvarianttype.c +index 1a228f73b..07659ff12 100644 +--- a/glib/gvarianttype.c ++++ b/glib/gvarianttype.c +@@ -28,6 +28,7 @@ + + #include <string.h> + ++#include "gstrfuncsprivate.h" + + /** + * SECTION:gvarianttype +@@ -1181,7 +1182,7 @@ g_variant_type_new_tuple (const GVariantType * const *items, + g_assert (offset < sizeof buffer); + buffer[offset++] = ')'; + +- return (GVariantType *) g_memdup (buffer, offset); ++ return (GVariantType *) g_memdup2 (buffer, offset); + } + + /** +diff --git a/glib/tests/array-test.c b/glib/tests/array-test.c +index 3fcf1136a..11982f822 100644 +--- a/glib/tests/array-test.c ++++ b/glib/tests/array-test.c +@@ -29,6 +29,8 @@ + #include <string.h> + #include "glib.h" + ++#include "gstrfuncsprivate.h" ++ + /* Test data to be passed to any function which calls g_array_new(), providing + * the parameters for that call. Most #GArray tests should be repeated for all + * possible values of #ArrayTestData. */ +@@ -1642,7 +1644,7 @@ byte_array_new_take (void) + GByteArray *gbarray; + guint8 *data; + +- data = g_memdup ("woooweeewow", 11); ++ data = g_memdup2 ("woooweeewow", 11); + gbarray = g_byte_array_new_take (data, 11); + g_assert (gbarray->data == data); + g_assert_cmpuint (gbarray->len, ==, 11); +diff --git a/glib/tests/option-context.c b/glib/tests/option-context.c +index 149d22353..88d2b80d1 100644 +--- a/glib/tests/option-context.c ++++ b/glib/tests/option-context.c +@@ -27,6 +27,8 @@ + #include <string.h> + #include <locale.h> + ++#include "gstrfuncsprivate.h" ++ + static GOptionEntry main_entries[] = { + { "main-switch", 0, 0, + G_OPTION_ARG_NONE, NULL, +@@ -256,7 +258,7 @@ join_stringv (int argc, char **argv) + static char ** + copy_stringv (char **argv, int argc) + { +- return g_memdup (argv, sizeof (char *) * (argc + 1)); ++ return g_memdup2 (argv, sizeof (char *) * (argc + 1)); + } + + static void +@@ -2323,7 +2325,7 @@ test_group_parse (void) + g_option_context_add_group (context, group); + + argv = split_string ("program --test arg1 -f arg2 --group-test arg3 --frob arg4 -z arg5", &argc); +- orig_argv = g_memdup (argv, (argc + 1) * sizeof (char *)); ++ orig_argv = g_memdup2 (argv, (argc + 1) * sizeof (char *)); + + retval = g_option_context_parse (context, &argc, &argv, &error); + +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-27219-05.patch b/gnu/packages/patches/glib-CVE-2021-27219-05.patch new file mode 100644 index 0000000000..62bce1b188 --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27219-05.patch @@ -0,0 +1,47 @@ +From 0cbad673215ec8a049b7fe2ff44b0beed31b376e Mon Sep 17 00:00:00 2001 +From: Philip Withnall <pwithnall@endlessos.org> +Date: Thu, 4 Feb 2021 16:12:24 +0000 +Subject: [PATCH 05/11] gwinhttpfile: Avoid arithmetic overflow when + calculating a size +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The members of `URL_COMPONENTS` (`winhttp_file->url`) are `DWORD`s, i.e. +32-bit unsigned integers. Adding to and multiplying them may cause them +to overflow the unsigned integer bounds, even if the result is passed to +`g_memdup2()` which accepts a `gsize`. + +Cast the `URL_COMPONENTS` members to `gsize` first to ensure that the +arithmetic is done in terms of `gsize`s rather than unsigned integers. + +Spotted by Sebastian Dröge. + +Signed-off-by: Philip Withnall <pwithnall@endlessos.org> +Helps: #2319 +--- + gio/win32/gwinhttpfile.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/gio/win32/gwinhttpfile.c b/gio/win32/gwinhttpfile.c +index 040ee8564..246ec0578 100644 +--- a/gio/win32/gwinhttpfile.c ++++ b/gio/win32/gwinhttpfile.c +@@ -394,10 +394,10 @@ g_winhttp_file_resolve_relative_path (GFile *file, + child = g_object_new (G_TYPE_WINHTTP_FILE, NULL); + child->vfs = winhttp_file->vfs; + child->url = winhttp_file->url; +- child->url.lpszScheme = g_memdup2 (winhttp_file->url.lpszScheme, (winhttp_file->url.dwSchemeLength+1)*2); +- child->url.lpszHostName = g_memdup2 (winhttp_file->url.lpszHostName, (winhttp_file->url.dwHostNameLength+1)*2); +- child->url.lpszUserName = g_memdup2 (winhttp_file->url.lpszUserName, (winhttp_file->url.dwUserNameLength+1)*2); +- child->url.lpszPassword = g_memdup2 (winhttp_file->url.lpszPassword, (winhttp_file->url.dwPasswordLength+1)*2); ++ child->url.lpszScheme = g_memdup2 (winhttp_file->url.lpszScheme, ((gsize) winhttp_file->url.dwSchemeLength + 1) * 2); ++ child->url.lpszHostName = g_memdup2 (winhttp_file->url.lpszHostName, ((gsize) winhttp_file->url.dwHostNameLength + 1) * 2); ++ child->url.lpszUserName = g_memdup2 (winhttp_file->url.lpszUserName, ((gsize) winhttp_file->url.dwUserNameLength + 1) * 2); ++ child->url.lpszPassword = g_memdup2 (winhttp_file->url.lpszPassword, ((gsize) winhttp_file->url.dwPasswordLength + 1) * 2); + child->url.lpszUrlPath = wnew_path; + child->url.dwUrlPathLength = wcslen (wnew_path); + child->url.lpszExtraInfo = NULL; +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-27219-06.patch b/gnu/packages/patches/glib-CVE-2021-27219-06.patch new file mode 100644 index 0000000000..4e2435f5fd --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27219-06.patch @@ -0,0 +1,94 @@ +From f9ee2275cbc312c0b4cdbc338a4fbb76eb36fb9a Mon Sep 17 00:00:00 2001 +From: Philip Withnall <pwithnall@endlessos.org> +Date: Thu, 4 Feb 2021 13:49:00 +0000 +Subject: [PATCH 06/11] gdatainputstream: Handle stop_chars_len internally as + gsize + +Previously it was handled as a `gssize`, which meant that if the +`stop_chars` string was longer than `G_MAXSSIZE` there would be an +overflow. + +Signed-off-by: Philip Withnall <pwithnall@endlessos.org> +Helps: #2319 +--- + gio/gdatainputstream.c | 25 +++++++++++++++++-------- + 1 file changed, 17 insertions(+), 8 deletions(-) + +diff --git a/gio/gdatainputstream.c b/gio/gdatainputstream.c +index 2e7750cb5..2cdcbda19 100644 +--- a/gio/gdatainputstream.c ++++ b/gio/gdatainputstream.c +@@ -27,6 +27,7 @@ + #include "gioenumtypes.h" + #include "gioerror.h" + #include "glibintl.h" ++#include "gstrfuncsprivate.h" + + #include <string.h> + +@@ -856,7 +857,7 @@ static gssize + scan_for_chars (GDataInputStream *stream, + gsize *checked_out, + const char *stop_chars, +- gssize stop_chars_len) ++ gsize stop_chars_len) + { + GBufferedInputStream *bstream; + const char *buffer; +@@ -952,7 +953,7 @@ typedef struct + gsize checked; + + gchar *stop_chars; +- gssize stop_chars_len; ++ gsize stop_chars_len; + gsize length; + } GDataInputStreamReadData; + +@@ -1078,12 +1079,17 @@ g_data_input_stream_read_async (GDataInputStream *stream, + { + GDataInputStreamReadData *data; + GTask *task; ++ gsize stop_chars_len_unsigned; + + data = g_slice_new0 (GDataInputStreamReadData); +- if (stop_chars_len == -1) +- stop_chars_len = strlen (stop_chars); +- data->stop_chars = g_memdup (stop_chars, stop_chars_len); +- data->stop_chars_len = stop_chars_len; ++ ++ if (stop_chars_len < 0) ++ stop_chars_len_unsigned = strlen (stop_chars); ++ else ++ stop_chars_len_unsigned = (gsize) stop_chars_len; ++ ++ data->stop_chars = g_memdup2 (stop_chars, stop_chars_len_unsigned); ++ data->stop_chars_len = stop_chars_len_unsigned; + data->last_saw_cr = FALSE; + + task = g_task_new (stream, cancellable, callback, user_data); +@@ -1338,17 +1344,20 @@ g_data_input_stream_read_upto (GDataInputStream *stream, + gssize found_pos; + gssize res; + char *data_until; ++ gsize stop_chars_len_unsigned; + + g_return_val_if_fail (G_IS_DATA_INPUT_STREAM (stream), NULL); + + if (stop_chars_len < 0) +- stop_chars_len = strlen (stop_chars); ++ stop_chars_len_unsigned = strlen (stop_chars); ++ else ++ stop_chars_len_unsigned = (gsize) stop_chars_len; + + bstream = G_BUFFERED_INPUT_STREAM (stream); + + checked = 0; + +- while ((found_pos = scan_for_chars (stream, &checked, stop_chars, stop_chars_len)) == -1) ++ while ((found_pos = scan_for_chars (stream, &checked, stop_chars, stop_chars_len_unsigned)) == -1) + { + if (g_buffered_input_stream_get_available (bstream) == + g_buffered_input_stream_get_buffer_size (bstream)) +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-27219-07.patch b/gnu/packages/patches/glib-CVE-2021-27219-07.patch new file mode 100644 index 0000000000..dad3d285f4 --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27219-07.patch @@ -0,0 +1,118 @@ +Backport of: + +From 2aaf593a9eb96d84fe3be740aca2810a97d95592 Mon Sep 17 00:00:00 2001 +From: Philip Withnall <pwithnall@endlessos.org> +Date: Thu, 4 Feb 2021 13:50:37 +0000 +Subject: [PATCH 07/11] gwin32: Use gsize internally in g_wcsdup() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This allows it to handle strings up to length `G_MAXSIZE` — previously +it would overflow with such strings. + +Update the several copies of it identically. + +Signed-off-by: Philip Withnall <pwithnall@endlessos.org> +Helps: #2319 +--- + gio/gwin32appinfo.c | 33 ++++++++++++++++++++++++++------- + gio/gwin32registrykey.c | 34 ++++++++++++++++++++++++++-------- + 2 files changed, 52 insertions(+), 15 deletions(-) + +diff --git a/gio/gwin32appinfo.c b/gio/gwin32appinfo.c +index 9f335b370..dd7a96a4a 100644 +--- a/gio/gwin32appinfo.c ++++ b/gio/gwin32appinfo.c +@@ -464,15 +464,34 @@ static GWin32RegistryKey *applications_key; + /* Watch this key */ + static GWin32RegistryKey *classes_root_key; + ++static gsize ++g_utf16_len (const gunichar2 *str) ++{ ++ gsize result; ++ ++ for (result = 0; str[0] != 0; str++, result++) ++ ; ++ ++ return result; ++} ++ + static gunichar2 * +-g_wcsdup (const gunichar2 *str, gssize str_size) ++g_wcsdup (const gunichar2 *str, gssize str_len) + { +- if (str_size == -1) +- { +- str_size = wcslen (str) + 1; +- str_size *= sizeof (gunichar2); +- } +- return g_memdup (str, str_size); ++ gsize str_len_unsigned; ++ gsize str_size; ++ ++ g_return_val_if_fail (str != NULL, NULL); ++ ++ if (str_len < 0) ++ str_len_unsigned = g_utf16_len (str); ++ else ++ str_len_unsigned = (gsize) str_len; ++ ++ g_assert (str_len_unsigned <= G_MAXSIZE / sizeof (gunichar2) - 1); ++ str_size = (str_len_unsigned + 1) * sizeof (gunichar2); ++ ++ return g_memdup2 (str, str_size); + } + + #define URL_ASSOCIATIONS L"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\" +diff --git a/gio/gwin32registrykey.c b/gio/gwin32registrykey.c +index 619fd48af..fbd65311a 100644 +--- a/gio/gwin32registrykey.c ++++ b/gio/gwin32registrykey.c +@@ -127,16 +127,34 @@ typedef enum + G_WIN32_REGISTRY_UPDATED_PATH = 1, + } GWin32RegistryKeyUpdateFlag; + ++static gsize ++g_utf16_len (const gunichar2 *str) ++{ ++ gsize result; ++ ++ for (result = 0; str[0] != 0; str++, result++) ++ ; ++ ++ return result; ++} ++ + static gunichar2 * +-g_wcsdup (const gunichar2 *str, +- gssize str_size) ++g_wcsdup (const gunichar2 *str, gssize str_len) + { +- if (str_size == -1) +- { +- str_size = wcslen (str) + 1; +- str_size *= sizeof (gunichar2); +- } +- return g_memdup (str, str_size); ++ gsize str_len_unsigned; ++ gsize str_size; ++ ++ g_return_val_if_fail (str != NULL, NULL); ++ ++ if (str_len < 0) ++ str_len_unsigned = g_utf16_len (str); ++ else ++ str_len_unsigned = (gsize) str_len; ++ ++ g_assert (str_len_unsigned <= G_MAXSIZE / sizeof (gunichar2) - 1); ++ str_size = (str_len_unsigned + 1) * sizeof (gunichar2); ++ ++ return g_memdup2 (str, str_size); + } + + /** +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-27219-08.patch b/gnu/packages/patches/glib-CVE-2021-27219-08.patch new file mode 100644 index 0000000000..2c021ad317 --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27219-08.patch @@ -0,0 +1,94 @@ +From ba8ca443051f93a74c0d03d62e70402036f967a5 Mon Sep 17 00:00:00 2001 +From: Philip Withnall <pwithnall@endlessos.org> +Date: Thu, 4 Feb 2021 13:58:32 +0000 +Subject: [PATCH 08/11] gkeyfilesettingsbackend: Handle long keys when + converting paths + +Previously, the code in `convert_path()` could not handle keys longer +than `G_MAXINT`, and would overflow if that was exceeded. + +Convert the code to use `gsize` and `g_memdup2()` throughout, and +change from identifying the position of the final slash in the string +using a signed offset `i`, to using a pointer to the character (and +`strrchr()`). This allows the slash to be at any position in a +`G_MAXSIZE`-long string, without sacrificing a bit of the offset for +indicating whether a slash was found. + +Signed-off-by: Philip Withnall <pwithnall@endlessos.org> +Helps: #2319 +--- + gio/gkeyfilesettingsbackend.c | 21 ++++++++++----------- + 1 file changed, 10 insertions(+), 11 deletions(-) + +diff --git a/gio/gkeyfilesettingsbackend.c b/gio/gkeyfilesettingsbackend.c +index cd5765afd..25b057672 100644 +--- a/gio/gkeyfilesettingsbackend.c ++++ b/gio/gkeyfilesettingsbackend.c +@@ -33,6 +33,7 @@ + #include "gfilemonitor.h" + #include "gsimplepermission.h" + #include "gsettingsbackendinternal.h" ++#include "gstrfuncsprivate.h" + #include "giomodule-priv.h" + #include "gportalsupport.h" + +@@ -145,8 +146,8 @@ convert_path (GKeyfileSettingsBackend *kfsb, + gchar **group, + gchar **basename) + { +- gint key_len = strlen (key); +- gint i; ++ gsize key_len = strlen (key); ++ const gchar *last_slash; + + if (key_len < kfsb->prefix_len || + memcmp (key, kfsb->prefix, kfsb->prefix_len) != 0) +@@ -155,38 +156,36 @@ convert_path (GKeyfileSettingsBackend *kfsb, + key_len -= kfsb->prefix_len; + key += kfsb->prefix_len; + +- for (i = key_len; i >= 0; i--) +- if (key[i] == '/') +- break; ++ last_slash = strrchr (key, '/'); + + if (kfsb->root_group) + { + /* if a root_group was specified, make sure the user hasn't given + * a path that ghosts that group name + */ +- if (i == kfsb->root_group_len && memcmp (key, kfsb->root_group, i) == 0) ++ if (last_slash != NULL && (last_slash - key) == kfsb->root_group_len && memcmp (key, kfsb->root_group, last_slash - key) == 0) + return FALSE; + } + else + { + /* if no root_group was given, ensure that the user gave a path */ +- if (i == -1) ++ if (last_slash == NULL) + return FALSE; + } + + if (group) + { +- if (i >= 0) ++ if (last_slash != NULL) + { +- *group = g_memdup (key, i + 1); +- (*group)[i] = '\0'; ++ *group = g_memdup2 (key, (last_slash - key) + 1); ++ (*group)[(last_slash - key)] = '\0'; + } + else + *group = g_strdup (kfsb->root_group); + } + + if (basename) +- *basename = g_memdup (key + i + 1, key_len - i); ++ *basename = g_memdup2 (last_slash + 1, key_len - (last_slash - key)); + + return TRUE; + } +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-27219-09.patch b/gnu/packages/patches/glib-CVE-2021-27219-09.patch new file mode 100644 index 0000000000..4de0c1b349 --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27219-09.patch @@ -0,0 +1,98 @@ +From 65ec7f4d6e8832c481f6e00e2eb007b9a60024ce Mon Sep 17 00:00:00 2001 +From: Philip Withnall <pwithnall@endlessos.org> +Date: Thu, 4 Feb 2021 14:00:53 +0000 +Subject: [PATCH 09/11] gsocket: Use gsize to track native sockaddr's size +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Don’t use an `int`, that’s potentially too small. In practical terms, +this is not a problem, since no socket address is going to be that big. + +By making these changes we can use `g_memdup2()` without warnings, +though. Fewer warnings is good. + +Signed-off-by: Philip Withnall <pwithnall@endlessos.org> +Helps: #2319 +--- + gio/gsocket.c | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +diff --git a/gio/gsocket.c b/gio/gsocket.c +index 66073af83..a3af149e8 100644 +--- a/gio/gsocket.c ++++ b/gio/gsocket.c +@@ -75,6 +75,7 @@ + #include "gcredentialsprivate.h" + #include "glibintl.h" + #include "gioprivate.h" ++#include "gstrfuncsprivate.h" + + #ifdef G_OS_WIN32 + /* For Windows XP runtime compatibility, but use the system's if_nametoindex() if available */ +@@ -174,7 +175,7 @@ static gboolean g_socket_datagram_based_condition_wait (GDatagramBased + GError **error); + + static GSocketAddress * +-cache_recv_address (GSocket *socket, struct sockaddr *native, int native_len); ++cache_recv_address (GSocket *socket, struct sockaddr *native, size_t native_len); + + static gssize + g_socket_receive_message_with_timeout (GSocket *socket, +@@ -260,7 +261,7 @@ struct _GSocketPrivate + struct { + GSocketAddress *addr; + struct sockaddr *native; +- gint native_len; ++ gsize native_len; + guint64 last_used; + } recv_addr_cache[RECV_ADDR_CACHE_SIZE]; + }; +@@ -5211,14 +5212,14 @@ g_socket_send_messages_with_timeout (GSocket *socket, + } + + static GSocketAddress * +-cache_recv_address (GSocket *socket, struct sockaddr *native, int native_len) ++cache_recv_address (GSocket *socket, struct sockaddr *native, size_t native_len) + { + GSocketAddress *saddr; + gint i; + guint64 oldest_time = G_MAXUINT64; + gint oldest_index = 0; + +- if (native_len <= 0) ++ if (native_len == 0) + return NULL; + + saddr = NULL; +@@ -5226,7 +5227,7 @@ cache_recv_address (GSocket *socket, struct sockaddr *native, int native_len) + { + GSocketAddress *tmp = socket->priv->recv_addr_cache[i].addr; + gpointer tmp_native = socket->priv->recv_addr_cache[i].native; +- gint tmp_native_len = socket->priv->recv_addr_cache[i].native_len; ++ gsize tmp_native_len = socket->priv->recv_addr_cache[i].native_len; + + if (!tmp) + continue; +@@ -5256,7 +5257,7 @@ cache_recv_address (GSocket *socket, struct sockaddr *native, int native_len) + g_free (socket->priv->recv_addr_cache[oldest_index].native); + } + +- socket->priv->recv_addr_cache[oldest_index].native = g_memdup (native, native_len); ++ socket->priv->recv_addr_cache[oldest_index].native = g_memdup2 (native, native_len); + socket->priv->recv_addr_cache[oldest_index].native_len = native_len; + socket->priv->recv_addr_cache[oldest_index].addr = g_object_ref (saddr); + socket->priv->recv_addr_cache[oldest_index].last_used = g_get_monotonic_time (); +@@ -5404,6 +5405,9 @@ g_socket_receive_message_with_timeout (GSocket *socket, + /* do it */ + while (1) + { ++ /* addrlen has to be of type int because that’s how WSARecvFrom() is defined */ ++ G_STATIC_ASSERT (sizeof addr <= G_MAXINT); ++ + addrlen = sizeof addr; + if (address) + result = WSARecvFrom (socket->priv->fd, +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-27219-10.patch b/gnu/packages/patches/glib-CVE-2021-27219-10.patch new file mode 100644 index 0000000000..36198b8eef --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27219-10.patch @@ -0,0 +1,52 @@ +From 777b95a88f006d39d9fe6d3321db17e7b0d4b9a4 Mon Sep 17 00:00:00 2001 +From: Philip Withnall <pwithnall@endlessos.org> +Date: Thu, 4 Feb 2021 14:07:39 +0000 +Subject: [PATCH 10/11] gtlspassword: Forbid very long TLS passwords +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The public API `g_tls_password_set_value_full()` (and the vfunc it +invokes) can only accept a `gssize` length. Ensure that nul-terminated +strings passed to `g_tls_password_set_value()` can’t exceed that length. +Use `g_memdup2()` to avoid an overflow if they’re longer than +`G_MAXUINT` similarly. + +Signed-off-by: Philip Withnall <pwithnall@endlessos.org> +Helps: #2319 +--- + gio/gtlspassword.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/gio/gtlspassword.c b/gio/gtlspassword.c +index 1e437a7b6..dbcec41a8 100644 +--- a/gio/gtlspassword.c ++++ b/gio/gtlspassword.c +@@ -23,6 +23,7 @@ + #include "glibintl.h" + + #include "gioenumtypes.h" ++#include "gstrfuncsprivate.h" + #include "gtlspassword.h" + + #include <string.h> +@@ -287,9 +288,14 @@ g_tls_password_set_value (GTlsPassword *password, + g_return_if_fail (G_IS_TLS_PASSWORD (password)); + + if (length < 0) +- length = strlen ((gchar *)value); ++ { ++ /* FIXME: g_tls_password_set_value_full() doesn’t support unsigned gsize */ ++ gsize length_unsigned = strlen ((gchar *) value); ++ g_return_if_fail (length_unsigned > G_MAXSSIZE); ++ length = (gssize) length_unsigned; ++ } + +- g_tls_password_set_value_full (password, g_memdup (value, length), length, g_free); ++ g_tls_password_set_value_full (password, g_memdup2 (value, (gsize) length), length, g_free); + } + + /** +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-27219-11.patch b/gnu/packages/patches/glib-CVE-2021-27219-11.patch new file mode 100644 index 0000000000..4413cb9827 --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27219-11.patch @@ -0,0 +1,57 @@ +From ecdf91400e9a538695a0895b95ad7e8abcdf1749 Mon Sep 17 00:00:00 2001 +From: Philip Withnall <pwithnall@endlessos.org> +Date: Thu, 4 Feb 2021 14:09:40 +0000 +Subject: [PATCH 11/11] giochannel: Forbid very long line terminator strings +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The public API `GIOChannel.line_term_len` is only a `guint`. Ensure that +nul-terminated strings passed to `g_io_channel_set_line_term()` can’t +exceed that length. Use `g_memdup2()` to avoid a warning (`g_memdup()` +is due to be deprecated), but not to avoid a bug, since it’s also +limited to `G_MAXUINT`. + +Signed-off-by: Philip Withnall <pwithnall@endlessos.org> +Helps: #2319 +--- + glib/giochannel.c | 17 +++++++++++++---- + 1 file changed, 13 insertions(+), 4 deletions(-) + +diff --git a/glib/giochannel.c b/glib/giochannel.c +index 15927c391..66c6591f0 100644 +--- a/glib/giochannel.c ++++ b/glib/giochannel.c +@@ -884,16 +884,25 @@ g_io_channel_set_line_term (GIOChannel *channel, + const gchar *line_term, + gint length) + { ++ guint length_unsigned; ++ + g_return_if_fail (channel != NULL); + g_return_if_fail (line_term == NULL || length != 0); /* Disallow "" */ + + if (line_term == NULL) +- length = 0; +- else if (length < 0) +- length = strlen (line_term); ++ length_unsigned = 0; ++ else if (length >= 0) ++ length_unsigned = (guint) length; ++ else ++ { ++ /* FIXME: We’re constrained by line_term_len being a guint here */ ++ gsize length_size = strlen (line_term); ++ g_return_if_fail (length_size > G_MAXUINT); ++ length_unsigned = (guint) length_size; ++ } + + g_free (channel->line_term); +- channel->line_term = line_term ? g_memdup2 (line_term, length) : NULL; ++ channel->line_term = line_term ? g_memdup2 (line_term, length_unsigned) : NULL; + channel->line_term_len = length; + } + +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-27219-12.patch b/gnu/packages/patches/glib-CVE-2021-27219-12.patch new file mode 100644 index 0000000000..4fdbb81750 --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27219-12.patch @@ -0,0 +1,30 @@ +From f8273b9aded135fe07094faebd527e43851aaf6e Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> +Date: Sun, 7 Feb 2021 23:32:40 +0100 +Subject: [PATCH 1/5] giochannel: Fix length_size bounds check + +The inverted condition is an obvious error introduced by ecdf91400e9a. + +Fixes https://gitlab.gnome.org/GNOME/glib/-/issues/2323 + +(cherry picked from commit a149bf2f9030168051942124536e303af8ba6176) +--- + glib/giochannel.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/glib/giochannel.c b/glib/giochannel.c +index 66c6591f0..0d9d5f223 100644 +--- a/glib/giochannel.c ++++ b/glib/giochannel.c +@@ -897,7 +897,7 @@ g_io_channel_set_line_term (GIOChannel *channel, + { + /* FIXME: We’re constrained by line_term_len being a guint here */ + gsize length_size = strlen (line_term); +- g_return_if_fail (length_size > G_MAXUINT); ++ g_return_if_fail (length_size <= G_MAXUINT); + length_unsigned = (guint) length_size; + } + +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-27219-13.patch b/gnu/packages/patches/glib-CVE-2021-27219-13.patch new file mode 100644 index 0000000000..6a287cc3a2 --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27219-13.patch @@ -0,0 +1,32 @@ +From e069c50467712e6d607822afd6b6c15c2c343dff Mon Sep 17 00:00:00 2001 +From: Simon McVittie <smcv@collabora.com> +Date: Mon, 8 Feb 2021 10:34:50 +0000 +Subject: [PATCH 2/5] giochannel: Don't store negative line_term_len in + GIOChannel struct + +Adding test coverage indicated that this was another bug in 0cc11f74. + +Fixes: 0cc11f74 "giochannel: Forbid very long line terminator strings" +Resolves: https://gitlab.gnome.org/GNOME/glib/-/issues/2323 +Signed-off-by: Simon McVittie <smcv@collabora.com> +(cherry picked from commit 5dc8b0014c03e7491d93b90275ab442e888a9628) +--- + glib/giochannel.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/glib/giochannel.c b/glib/giochannel.c +index 0d9d5f223..4c39b9dc0 100644 +--- a/glib/giochannel.c ++++ b/glib/giochannel.c +@@ -903,7 +903,7 @@ g_io_channel_set_line_term (GIOChannel *channel, + + g_free (channel->line_term); + channel->line_term = line_term ? g_memdup2 (line_term, length_unsigned) : NULL; +- channel->line_term_len = length; ++ channel->line_term_len = length_unsigned; + } + + /** +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-27219-14.patch b/gnu/packages/patches/glib-CVE-2021-27219-14.patch new file mode 100644 index 0000000000..78de2846da --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27219-14.patch @@ -0,0 +1,32 @@ +From 4506d1859a863087598c8d122740bae25b65b099 Mon Sep 17 00:00:00 2001 +From: Simon McVittie <smcv@collabora.com> +Date: Mon, 8 Feb 2021 10:04:48 +0000 +Subject: [PATCH 4/5] gtlspassword: Fix inverted assertion + +The intention here was to assert that the length of the password fits +in a gssize. Passwords more than half the size of virtual memory are +probably excessive. + +Fixes: a8b204ff "gtlspassword: Forbid very long TLS passwords" +Signed-off-by: Simon McVittie <smcv@collabora.com> +(cherry picked from commit 61bb52ec42de1082bfb06ce1c737fc295bfe60b8) +--- + gio/gtlspassword.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gio/gtlspassword.c b/gio/gtlspassword.c +index dbcec41a8..bd86a6dfe 100644 +--- a/gio/gtlspassword.c ++++ b/gio/gtlspassword.c +@@ -291,7 +291,7 @@ g_tls_password_set_value (GTlsPassword *password, + { + /* FIXME: g_tls_password_set_value_full() doesn’t support unsigned gsize */ + gsize length_unsigned = strlen ((gchar *) value); +- g_return_if_fail (length_unsigned > G_MAXSSIZE); ++ g_return_if_fail (length_unsigned <= G_MAXSSIZE); + length = (gssize) length_unsigned; + } + +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-27219-15.patch b/gnu/packages/patches/glib-CVE-2021-27219-15.patch new file mode 100644 index 0000000000..37ef85b4fa --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27219-15.patch @@ -0,0 +1,95 @@ +From 3d1550354c3c6a8491c39881752d51cb7515f2c2 Mon Sep 17 00:00:00 2001 +From: Simon McVittie <smcv@collabora.com> +Date: Mon, 8 Feb 2021 10:22:39 +0000 +Subject: [PATCH 5/5] tls-interaction: Add test coverage for various ways to + set the password + +Signed-off-by: Simon McVittie <smcv@collabora.com> +(cherry picked from commit df4501316ca3903072400504a5ea76498db19538) +--- + gio/tests/tls-interaction.c | 55 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 55 insertions(+) + +diff --git a/gio/tests/tls-interaction.c b/gio/tests/tls-interaction.c +index 4f0737d7e..5661e8e0d 100644 +--- a/gio/tests/tls-interaction.c ++++ b/gio/tests/tls-interaction.c +@@ -174,6 +174,38 @@ test_interaction_ask_password_finish_failure (GTlsInteraction *interaction, + } + + ++/* Return a copy of @str that is allocated in a silly way, to exercise ++ * custom free-functions. The returned pointer points to a copy of @str ++ * in a buffer of the form "BEFORE \0 str \0 AFTER". */ ++static guchar * ++special_dup (const char *str) ++{ ++ GString *buf = g_string_new ("BEFORE"); ++ guchar *ret; ++ ++ g_string_append_c (buf, '\0'); ++ g_string_append (buf, str); ++ g_string_append_c (buf, '\0'); ++ g_string_append (buf, "AFTER"); ++ ret = (guchar *) g_string_free (buf, FALSE); ++ return ret + strlen ("BEFORE") + 1; ++} ++ ++ ++/* Free a copy of @str that was made with special_dup(), after asserting ++ * that it has not been corrupted. */ ++static void ++special_free (gpointer p) ++{ ++ gchar *s = p; ++ gchar *buf = s - strlen ("BEFORE") - 1; ++ ++ g_assert_cmpstr (buf, ==, "BEFORE"); ++ g_assert_cmpstr (s + strlen (s) + 1, ==, "AFTER"); ++ g_free (buf); ++} ++ ++ + static GTlsInteractionResult + test_interaction_ask_password_sync_success (GTlsInteraction *interaction, + GTlsPassword *password, +@@ -181,6 +213,8 @@ test_interaction_ask_password_sync_success (GTlsInteraction *interaction, + GError **error) + { + TestInteraction *self; ++ const guchar *value; ++ gsize len; + + g_assert (TEST_IS_INTERACTION (interaction)); + self = TEST_INTERACTION (interaction); +@@ -192,6 +226,27 @@ test_interaction_ask_password_sync_success (GTlsInteraction *interaction, + g_assert (error != NULL); + g_assert (*error == NULL); + ++ /* Exercise different ways to set the value */ ++ g_tls_password_set_value (password, (const guchar *) "foo", 4); ++ len = 0; ++ value = g_tls_password_get_value (password, &len); ++ g_assert_cmpmem (value, len, "foo", 4); ++ ++ g_tls_password_set_value (password, (const guchar *) "bar", -1); ++ len = 0; ++ value = g_tls_password_get_value (password, &len); ++ g_assert_cmpmem (value, len, "bar", 3); ++ ++ g_tls_password_set_value_full (password, special_dup ("baa"), 4, special_free); ++ len = 0; ++ value = g_tls_password_get_value (password, &len); ++ g_assert_cmpmem (value, len, "baa", 4); ++ ++ g_tls_password_set_value_full (password, special_dup ("baz"), -1, special_free); ++ len = 0; ++ value = g_tls_password_get_value (password, &len); ++ g_assert_cmpmem (value, len, "baz", 3); ++ + /* Don't do this in real life. Include a null terminator for testing */ + g_tls_password_set_value (password, (const guchar *)"the password", 13); + return G_TLS_INTERACTION_HANDLED; +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-27219-16.patch b/gnu/packages/patches/glib-CVE-2021-27219-16.patch new file mode 100644 index 0000000000..43635e72ed --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27219-16.patch @@ -0,0 +1,43 @@ +From cb9ee701ef46c1819eed4e2a4dc181682bdfc176 Mon Sep 17 00:00:00 2001 +From: Philip Withnall <pwithnall@endlessos.org> +Date: Wed, 10 Feb 2021 21:16:39 +0000 +Subject: [PATCH 1/3] gkeyfilesettingsbackend: Fix basename handling when group + is unset + +Fix an effective regression in commit +7781a9cbd2fd0aa84bee0f4eee88470640ff6706, which happens when +`convert_path()` is called with a `key` which contains no slashes. In +that case, the `key` is entirely the `basename`. + +Prior to commit 7781a9cb, the code worked through a fluke of `i == -1` +cancelling out with the various additions in the `g_memdup()` call, and +effectively resulting in `g_strdup (key)`. + +Spotted by Guido Berhoerster. + +Signed-off-by: Philip Withnall <pwithnall@endlessos.org> +--- + gio/gkeyfilesettingsbackend.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/gio/gkeyfilesettingsbackend.c b/gio/gkeyfilesettingsbackend.c +index 25b057672..861c3a661 100644 +--- a/gio/gkeyfilesettingsbackend.c ++++ b/gio/gkeyfilesettingsbackend.c +@@ -185,7 +185,12 @@ convert_path (GKeyfileSettingsBackend *kfsb, + } + + if (basename) +- *basename = g_memdup2 (last_slash + 1, key_len - (last_slash - key)); ++ { ++ if (last_slash != NULL) ++ *basename = g_memdup2 (last_slash + 1, key_len - (last_slash - key)); ++ else ++ *basename = g_strdup (key); ++ } + + return TRUE; + } +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-27219-17.patch b/gnu/packages/patches/glib-CVE-2021-27219-17.patch new file mode 100644 index 0000000000..3153979071 --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27219-17.patch @@ -0,0 +1,37 @@ +From 31e0d403ba635dbbacbfbff74295e5db02558d76 Mon Sep 17 00:00:00 2001 +From: Philip Withnall <pwithnall@endlessos.org> +Date: Wed, 10 Feb 2021 21:19:30 +0000 +Subject: [PATCH 2/3] gkeyfilesettingsbackend: Disallow empty key or group + names + +These should never have been allowed; they will result in precondition +failures from the `GKeyFile` later on in the code. + +A test will be added for this shortly. + +Signed-off-by: Philip Withnall <pwithnall@endlessos.org> +--- + gio/gkeyfilesettingsbackend.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/gio/gkeyfilesettingsbackend.c b/gio/gkeyfilesettingsbackend.c +index 861c3a661..de216e615 100644 +--- a/gio/gkeyfilesettingsbackend.c ++++ b/gio/gkeyfilesettingsbackend.c +@@ -158,6 +158,13 @@ convert_path (GKeyfileSettingsBackend *kfsb, + + last_slash = strrchr (key, '/'); + ++ /* Disallow empty group names or key names */ ++ if (key_len == 0 || ++ (last_slash != NULL && ++ (*(last_slash + 1) == '\0' || ++ last_slash == key))) ++ return FALSE; ++ + if (kfsb->root_group) + { + /* if a root_group was specified, make sure the user hasn't given +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-27219-18.patch b/gnu/packages/patches/glib-CVE-2021-27219-18.patch new file mode 100644 index 0000000000..c18d44ddeb --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-27219-18.patch @@ -0,0 +1,232 @@ +Backport of: + +From 221c26685354dea2b2732df94404e8e5e77a1591 Mon Sep 17 00:00:00 2001 +From: Philip Withnall <pwithnall@endlessos.org> +Date: Wed, 10 Feb 2021 21:21:36 +0000 +Subject: [PATCH 3/3] tests: Add tests for key name handling in the keyfile + backend + +This tests the two recent commits. + +Signed-off-by: Philip Withnall <pwithnall@endlessos.org> +--- + gio/tests/gsettings.c | 171 +++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 170 insertions(+), 1 deletion(-) + +diff --git a/gio/tests/gsettings.c b/gio/tests/gsettings.c +index baadca8f5..afe594a23 100644 +--- a/gio/tests/gsettings.c ++++ b/gio/tests/gsettings.c +@@ -1,3 +1,4 @@ ++#include <errno.h> + #include <stdlib.h> + #include <locale.h> + #include <libintl.h> +@@ -1740,6 +1741,14 @@ key_changed_cb (GSettings *settings, const gchar *key, gpointer data) + (*b) = TRUE; + } + ++typedef struct ++{ ++ const gchar *path; ++ const gchar *root_group; ++ const gchar *keyfile_group; ++ const gchar *root_path; ++} KeyfileTestData; ++ + /* + * Test that using a keyfile works + */ +@@ -1834,7 +1843,11 @@ test_keyfile (Fixture *fixture, + g_free (str); + + g_settings_set (settings, "farewell", "s", "cheerio"); +- ++ ++ /* Check that empty keys/groups are not allowed. */ ++ g_assert_false (g_settings_is_writable (settings, "")); ++ g_assert_false (g_settings_is_writable (settings, "/")); ++ + /* When executing as root, changing the mode of the keyfile will have + * no effect on the writability of the settings. + */ +@@ -1866,6 +1879,149 @@ test_keyfile (Fixture *fixture, + g_free (keyfile_path); + } + ++/* ++ * Test that using a keyfile works with a schema with no path set. ++ */ ++static void ++test_keyfile_no_path (Fixture *fixture, ++ gconstpointer user_data) ++{ ++ const KeyfileTestData *test_data = user_data; ++ GSettingsBackend *kf_backend; ++ GSettings *settings; ++ GKeyFile *keyfile; ++ gboolean writable; ++ gchar *key = NULL; ++ GError *error = NULL; ++ gchar *keyfile_path = NULL, *store_path = NULL; ++ ++ keyfile_path = g_build_filename (fixture->tmp_dir, "keyfile", NULL); ++ store_path = g_build_filename (keyfile_path, "gsettings.store", NULL); ++ kf_backend = g_keyfile_settings_backend_new (store_path, test_data->root_path, test_data->root_group); ++ settings = g_settings_new_with_backend_and_path ("org.gtk.test.no-path", kf_backend, test_data->path); ++ g_object_unref (kf_backend); ++ ++ g_settings_reset (settings, "test-boolean"); ++ g_assert_true (g_settings_get_boolean (settings, "test-boolean")); ++ ++ writable = g_settings_is_writable (settings, "test-boolean"); ++ g_assert_true (writable); ++ g_settings_set (settings, "test-boolean", "b", FALSE); ++ ++ g_assert_false (g_settings_get_boolean (settings, "test-boolean")); ++ ++ g_settings_delay (settings); ++ g_settings_set (settings, "test-boolean", "b", TRUE); ++ g_settings_apply (settings); ++ ++ keyfile = g_key_file_new (); ++ g_assert_true (g_key_file_load_from_file (keyfile, store_path, 0, NULL)); ++ ++ g_assert_true (g_key_file_get_boolean (keyfile, test_data->keyfile_group, "test-boolean", NULL)); ++ ++ g_key_file_free (keyfile); ++ ++ g_settings_reset (settings, "test-boolean"); ++ g_settings_apply (settings); ++ keyfile = g_key_file_new (); ++ g_assert_true (g_key_file_load_from_file (keyfile, store_path, 0, NULL)); ++ ++ g_assert_false (g_key_file_get_string (keyfile, test_data->keyfile_group, "test-boolean", &error)); ++ g_assert_error (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND); ++ g_clear_error (&error); ++ ++ /* Check that empty keys/groups are not allowed. */ ++ g_assert_false (g_settings_is_writable (settings, "")); ++ g_assert_false (g_settings_is_writable (settings, "/")); ++ ++ /* Keys which ghost the root group name are not allowed. This can only be ++ * tested when the path is `/` as otherwise it acts as a prefix and prevents ++ * any ghosting. */ ++ if (g_str_equal (test_data->path, "/")) ++ { ++ key = g_strdup_printf ("%s/%s", test_data->root_group, ""); ++ g_assert_false (g_settings_is_writable (settings, key)); ++ g_free (key); ++ ++ key = g_strdup_printf ("%s/%s", test_data->root_group, "/"); ++ g_assert_false (g_settings_is_writable (settings, key)); ++ g_free (key); ++ ++ key = g_strdup_printf ("%s/%s", test_data->root_group, "test-boolean"); ++ g_assert_false (g_settings_is_writable (settings, key)); ++ g_free (key); ++ } ++ ++ g_key_file_free (keyfile); ++ g_object_unref (settings); ++ ++ /* Clean up the temporary directory. */ ++ g_assert_cmpint (g_chmod (keyfile_path, 0777) == 0 ? 0 : errno, ==, 0); ++ g_assert_cmpint (g_remove (store_path) == 0 ? 0 : errno, ==, 0); ++ g_assert_cmpint (g_rmdir (keyfile_path) == 0 ? 0 : errno, ==, 0); ++ g_free (store_path); ++ g_free (keyfile_path); ++} ++ ++/* ++ * Test that a keyfile rejects writes to keys outside its root path. ++ */ ++static void ++test_keyfile_outside_root_path (Fixture *fixture, ++ gconstpointer user_data) ++{ ++ GSettingsBackend *kf_backend; ++ GSettings *settings; ++ gchar *keyfile_path = NULL, *store_path = NULL; ++ ++ keyfile_path = g_build_filename (fixture->tmp_dir, "keyfile", NULL); ++ store_path = g_build_filename (keyfile_path, "gsettings.store", NULL); ++ kf_backend = g_keyfile_settings_backend_new (store_path, "/tests/basic-types/", "root"); ++ settings = g_settings_new_with_backend_and_path ("org.gtk.test.no-path", kf_backend, "/tests/"); ++ g_object_unref (kf_backend); ++ ++ g_assert_false (g_settings_is_writable (settings, "test-boolean")); ++ ++ g_object_unref (settings); ++ ++ /* Clean up the temporary directory. The keyfile probably doesn’t exist, so ++ * don’t error on failure. */ ++ g_remove (store_path); ++ g_assert_cmpint (g_rmdir (keyfile_path) == 0 ? 0 : errno, ==, 0); ++ g_free (store_path); ++ g_free (keyfile_path); ++} ++ ++/* ++ * Test that a keyfile rejects writes to keys in the root if no root group is set. ++ */ ++static void ++test_keyfile_no_root_group (Fixture *fixture, ++ gconstpointer user_data) ++{ ++ GSettingsBackend *kf_backend; ++ GSettings *settings; ++ gchar *keyfile_path = NULL, *store_path = NULL; ++ ++ keyfile_path = g_build_filename (fixture->tmp_dir, "keyfile", NULL); ++ store_path = g_build_filename (keyfile_path, "gsettings.store", NULL); ++ kf_backend = g_keyfile_settings_backend_new (store_path, "/", NULL); ++ settings = g_settings_new_with_backend_and_path ("org.gtk.test.no-path", kf_backend, "/"); ++ g_object_unref (kf_backend); ++ ++ g_assert_false (g_settings_is_writable (settings, "test-boolean")); ++ g_assert_true (g_settings_is_writable (settings, "child/test-boolean")); ++ ++ g_object_unref (settings); ++ ++ /* Clean up the temporary directory. The keyfile probably doesn’t exist, so ++ * don’t error on failure. */ ++ g_remove (store_path); ++ g_assert_cmpint (g_rmdir (keyfile_path) == 0 ? 0 : errno, ==, 0); ++ g_free (store_path); ++ g_free (keyfile_path); ++} ++ + /* Test that getting child schemas works + */ + static void +@@ -2844,6 +3000,14 @@ main (int argc, char *argv[]) + gchar *override_text; + gchar *enums; + gint result; ++ const KeyfileTestData keyfile_test_data_explicit_path = { "/tests/", "root", "tests", "/" }; ++ const KeyfileTestData keyfile_test_data_empty_path = { "/", "root", "root", "/" }; ++ const KeyfileTestData keyfile_test_data_long_path = { ++ "/tests/path/is/very/long/and/this/makes/some/comparisons/take/a/different/branch/", ++ "root", ++ "tests/path/is/very/long/and/this/makes/some/comparisons/take/a/different/branch", ++ "/" ++ }; + + /* Meson build sets this */ + #ifdef TEST_LOCALE_PATH +@@ -2967,6 +3131,11 @@ main (int argc, char *argv[]) + } + + g_test_add ("/gsettings/keyfile", Fixture, NULL, setup, test_keyfile, teardown); ++ g_test_add ("/gsettings/keyfile/explicit-path", Fixture, &keyfile_test_data_explicit_path, setup, test_keyfile_no_path, teardown); ++ g_test_add ("/gsettings/keyfile/empty-path", Fixture, &keyfile_test_data_empty_path, setup, test_keyfile_no_path, teardown); ++ g_test_add ("/gsettings/keyfile/long-path", Fixture, &keyfile_test_data_long_path, setup, test_keyfile_no_path, teardown); ++ g_test_add ("/gsettings/keyfile/outside-root-path", Fixture, NULL, setup, test_keyfile_outside_root_path, teardown); ++ g_test_add ("/gsettings/keyfile/no-root-group", Fixture, NULL, setup, test_keyfile_no_root_group, teardown); + g_test_add_func ("/gsettings/child-schema", test_child_schema); + g_test_add_func ("/gsettings/strinfo", test_strinfo); + g_test_add_func ("/gsettings/enums", test_enums); +-- +2.30.1 + diff --git a/gnu/packages/patches/glib-CVE-2021-28153.patch b/gnu/packages/patches/glib-CVE-2021-28153.patch new file mode 100644 index 0000000000..54443186d9 --- /dev/null +++ b/gnu/packages/patches/glib-CVE-2021-28153.patch @@ -0,0 +1,283 @@ +Backport of: + +From 317b3b587058a05dca95d56dac26568c5b098d33 Mon Sep 17 00:00:00 2001 +From: Philip Withnall <pwithnall@endlessos.org> +Date: Wed, 24 Feb 2021 17:35:40 +0000 +Subject: [PATCH] glocalfileoutputstream: Fix CREATE_REPLACE_DESTINATION + with symlinks +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The `G_FILE_CREATE_REPLACE_DESTINATION` flag is equivalent to unlinking +the destination file and re-creating it from scratch. That did +previously work, but in the process the code would call `open(O_CREAT)` +on the file. If the file was a dangling symlink, this would create the +destination file (empty). That’s not an intended side-effect, and has +security implications if the symlink is controlled by a lower-privileged +process. + +Fix that by not opening the destination file if it’s a symlink, and +adjusting the rest of the code to cope with + - the fact that `fd == -1` is not an error iff `is_symlink` is true, + - and that `original_stat` will contain the `lstat()` results for the + symlink now, rather than the `stat()` results for its target (again, + iff `is_symlink` is true). + +This means that the target of the dangling symlink is no longer created, +which was the bug. The symlink itself continues to be replaced (as +before) with the new file — this is the intended behaviour of +`g_file_replace()`. + +The behaviour for non-symlink cases, or cases where the symlink was not +dangling, should be unchanged. + +Includes a unit test. + +Signed-off-by: Philip Withnall <pwithnall@endlessos.org> + +Fixes: #2325 +--- + gio/glocalfileoutputstream.c | 70 ++++++++++++++++------- + gio/tests/file.c | 108 +++++++++++++++++++++++++++++++++++ + 2 files changed, 158 insertions(+), 20 deletions(-) + +diff --git a/gio/glocalfileoutputstream.c b/gio/glocalfileoutputstream.c +index a3dd62172..553fcbbae 100644 +--- a/gio/glocalfileoutputstream.c ++++ b/gio/glocalfileoutputstream.c +@@ -874,16 +874,22 @@ handle_overwrite_open (const char *filename, + /* Could be a symlink, or it could be a regular ELOOP error, + * but then the next open will fail too. */ + is_symlink = TRUE; +- fd = g_open (filename, open_flags, mode); ++ if (!(flags & G_FILE_CREATE_REPLACE_DESTINATION)) ++ fd = g_open (filename, open_flags, mode); + } +-#else +- fd = g_open (filename, open_flags, mode); +- errsv = errno; ++#else /* if !O_NOFOLLOW */ + /* This is racy, but we do it as soon as possible to minimize the race */ + is_symlink = g_file_test (filename, G_FILE_TEST_IS_SYMLINK); ++ ++ if (!is_symlink || !(flags & G_FILE_CREATE_REPLACE_DESTINATION)) ++ { ++ fd = g_open (filename, open_flags, mode); ++ errsv = errno; ++ } + #endif + +- if (fd == -1) ++ if (fd == -1 && ++ (!is_symlink || !(flags & G_FILE_CREATE_REPLACE_DESTINATION))) + { + char *display_name = g_filename_display_name (filename); + g_set_error (error, G_IO_ERROR, +@@ -893,13 +899,25 @@ handle_overwrite_open (const char *filename, + g_free (display_name); + return -1; + } +- ++ ++ if (!is_symlink) ++ { + #ifdef G_OS_WIN32 +- res = GLIB_PRIVATE_CALL (g_win32_fstat) (fd, &original_stat); ++ res = GLIB_PRIVATE_CALL (g_win32_fstat) (fd, &original_stat); + #else +- res = fstat (fd, &original_stat); ++ res = fstat (fd, &original_stat); + #endif +- errsv = errno; ++ errsv = errno; ++ } ++ else ++ { ++#ifdef G_OS_WIN32 ++ res = GLIB_PRIVATE_CALL (g_win32_lstat_utf8) (filename, &original_stat); ++#else ++ res = g_lstat (filename, &original_stat); ++#endif ++ errsv = errno; ++ } + + if (res != 0) + { +@@ -916,16 +934,27 @@ handle_overwrite_open (const char *filename, + if (!S_ISREG (original_stat.st_mode)) + { + if (S_ISDIR (original_stat.st_mode)) +- g_set_error_literal (error, +- G_IO_ERROR, +- G_IO_ERROR_IS_DIRECTORY, +- _("Target file is a directory")); +- else +- g_set_error_literal (error, +- G_IO_ERROR, +- G_IO_ERROR_NOT_REGULAR_FILE, +- _("Target file is not a regular file")); +- goto err_out; ++ { ++ g_set_error_literal (error, ++ G_IO_ERROR, ++ G_IO_ERROR_IS_DIRECTORY, ++ _("Target file is a directory")); ++ goto err_out; ++ } ++ else if (!is_symlink || ++#ifdef S_ISLNK ++ !S_ISLNK (original_stat.st_mode) ++#else ++ FALSE ++#endif ++ ) ++ { ++ g_set_error_literal (error, ++ G_IO_ERROR, ++ G_IO_ERROR_NOT_REGULAR_FILE, ++ _("Target file is not a regular file")); ++ goto err_out; ++ } + } + + if (etag != NULL) +@@ -1006,7 +1035,8 @@ handle_overwrite_open (const char *filename, + } + } + +- g_close (fd, NULL); ++ if (fd >= 0) ++ g_close (fd, NULL); + *temp_filename = tmp_filename; + return tmpfd; + } +diff --git a/gio/tests/file.c b/gio/tests/file.c +index efb2eaadd..bc55f3af4 100644 +--- a/gio/tests/file.c ++++ b/gio/tests/file.c +@@ -804,6 +804,113 @@ test_replace_cancel (void) + g_object_unref (tmpdir); + } + ++static void ++test_replace_symlink (void) ++{ ++#ifdef G_OS_UNIX ++ gchar *tmpdir_path = NULL; ++ GFile *tmpdir = NULL, *source_file = NULL, *target_file = NULL; ++ GFileOutputStream *stream = NULL; ++ const gchar *new_contents = "this is a test message which should be written to source and not target"; ++ gsize n_written; ++ GFileEnumerator *enumerator = NULL; ++ GFileInfo *info = NULL; ++ gchar *contents = NULL; ++ gsize length = 0; ++ GError *local_error = NULL; ++ ++ g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/2325"); ++ g_test_summary ("Test that G_FILE_CREATE_REPLACE_DESTINATION doesn’t follow symlinks"); ++ ++ /* Create a fresh, empty working directory. */ ++ tmpdir_path = g_dir_make_tmp ("g_file_replace_symlink_XXXXXX", &local_error); ++ g_assert_no_error (local_error); ++ tmpdir = g_file_new_for_path (tmpdir_path); ++ ++ g_test_message ("Using temporary directory %s", tmpdir_path); ++ g_free (tmpdir_path); ++ ++ /* Create symlink `source` which points to `target`. */ ++ source_file = g_file_get_child (tmpdir, "source"); ++ target_file = g_file_get_child (tmpdir, "target"); ++ g_file_make_symbolic_link (source_file, "target", NULL, &local_error); ++ g_assert_no_error (local_error); ++ ++ /* Ensure that `target` doesn’t exist */ ++ g_assert_false (g_file_query_exists (target_file, NULL)); ++ ++ /* Replace the `source` symlink with a regular file using ++ * %G_FILE_CREATE_REPLACE_DESTINATION, which should replace it *without* ++ * following the symlink */ ++ stream = g_file_replace (source_file, NULL, FALSE /* no backup */, ++ G_FILE_CREATE_REPLACE_DESTINATION, NULL, &local_error); ++ g_assert_no_error (local_error); ++ ++ g_output_stream_write_all (G_OUTPUT_STREAM (stream), new_contents, strlen (new_contents), ++ &n_written, NULL, &local_error); ++ g_assert_no_error (local_error); ++ g_assert_cmpint (n_written, ==, strlen (new_contents)); ++ ++ g_output_stream_close (G_OUTPUT_STREAM (stream), NULL, &local_error); ++ g_assert_no_error (local_error); ++ ++ g_clear_object (&stream); ++ ++ /* At this point, there should still only be one file: `source`. It should ++ * now be a regular file. `target` should not exist. */ ++ enumerator = g_file_enumerate_children (tmpdir, ++ G_FILE_ATTRIBUTE_STANDARD_NAME "," ++ G_FILE_ATTRIBUTE_STANDARD_TYPE, ++ G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL, &local_error); ++ g_assert_no_error (local_error); ++ ++ info = g_file_enumerator_next_file (enumerator, NULL, &local_error); ++ g_assert_no_error (local_error); ++ g_assert_nonnull (info); ++ ++ g_assert_cmpstr (g_file_info_get_name (info), ==, "source"); ++ g_assert_cmpint (g_file_info_get_file_type (info), ==, G_FILE_TYPE_REGULAR); ++ ++ g_clear_object (&info); ++ ++ info = g_file_enumerator_next_file (enumerator, NULL, &local_error); ++ g_assert_no_error (local_error); ++ g_assert_null (info); ++ ++ g_file_enumerator_close (enumerator, NULL, &local_error); ++ g_assert_no_error (local_error); ++ g_clear_object (&enumerator); ++ ++ /* Double-check that `target` doesn’t exist */ ++ g_assert_false (g_file_query_exists (target_file, NULL)); ++ ++ /* Check the content of `source`. */ ++ g_file_load_contents (source_file, ++ NULL, ++ &contents, ++ &length, ++ NULL, ++ &local_error); ++ g_assert_no_error (local_error); ++ g_assert_cmpstr (contents, ==, new_contents); ++ g_assert_cmpuint (length, ==, strlen (new_contents)); ++ g_free (contents); ++ ++ /* Tidy up. */ ++ g_file_delete (source_file, NULL, &local_error); ++ g_assert_no_error (local_error); ++ ++ g_file_delete (tmpdir, NULL, &local_error); ++ g_assert_no_error (local_error); ++ ++ g_clear_object (&target_file); ++ g_clear_object (&source_file); ++ g_clear_object (&tmpdir); ++#else /* if !G_OS_UNIX */ ++ g_test_skip ("Symlink replacement tests can only be run on Unix") ++#endif ++} ++ + static void + on_file_deleted (GObject *object, + GAsyncResult *result, +@@ -1754,6 +1861,7 @@ main (int argc, char *argv[]) + g_test_add_data_func ("/file/async-create-delete/4096", GINT_TO_POINTER (4096), test_create_delete); + g_test_add_func ("/file/replace-load", test_replace_load); + g_test_add_func ("/file/replace-cancel", test_replace_cancel); ++ g_test_add_func ("/file/replace-symlink", test_replace_symlink); + g_test_add_func ("/file/async-delete", test_async_delete); + #ifdef G_OS_UNIX + g_test_add_func ("/file/copy-preserve-mode", test_copy_preserve_mode); +-- +2.30.1 + diff --git a/gnu/packages/patches/glibc-ldd-powerpc.patch b/gnu/packages/patches/glibc-ldd-powerpc.patch new file mode 100644 index 0000000000..8e899ee99b --- /dev/null +++ b/gnu/packages/patches/glibc-ldd-powerpc.patch @@ -0,0 +1,10 @@ +diff -r -U3 a/sysdeps/unix/sysv/linux/powerpc/ldd-rewrite.sed b/sysdeps/unix/sysv/linux/powerpc/ldd-rewrite.sed +--- a/sysdeps/unix/sysv/linux/powerpc/ldd-rewrite.sed 1970-01-01 01:00:00.000000000 +0100 ++++ b/sysdeps/unix/sysv/linux/powerpc/ldd-rewrite.sed 2020-02-29 00:15:41.080000000 +0100 +@@ -11,5 +11,5 @@ + # this works for /lib64/ld64.so.x and /lib/ld.so.x as input + s_lib64_lib_ + s_64\.so_\.so_ +-s_^RTLDLIST=\(.*lib\)\(/[^/]*\)\(\.so\.[0-9.]*\)[[:blank:]]*$_RTLDLIST="\1\2\3 \164\264\3"_ ++s_^RTLDLIST=\(.*lib\)\(/[^/]*\)\(\.so\.[0-9.]*\)[[:blank:]]*$_RTLDLIST="\1\2\3 \1\264\3"_ + diff --git a/gnu/packages/patches/gnome-shell-CVE-2020-17489.patch b/gnu/packages/patches/gnome-shell-CVE-2020-17489.patch new file mode 100644 index 0000000000..4b7748950e --- /dev/null +++ b/gnu/packages/patches/gnome-shell-CVE-2020-17489.patch @@ -0,0 +1,46 @@ +From 05b7aec747282f62212b605249d518280ff80059 Mon Sep 17 00:00:00 2001 +From: Ray Strode <rstrode@redhat.com> +Date: Mon, 27 Jul 2020 10:58:22 -0400 +Subject: [PATCH] loginDialog: Reset auth prompt on vt switch before fade in + +At the moment, if a user switches to the login screen vt, +the login screen fades in whatever was on screen prior, and +then does a reset. + +It makes more sense to reset first, so we fade in what the +user is going to interact with instead of what they interacted +with before. + +Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2997 +--- + js/gdm/loginDialog.js | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js +index c3f90dc58..6b35ebb16 100644 +--- a/js/gdm/loginDialog.js ++++ b/js/gdm/loginDialog.js +@@ -920,16 +920,15 @@ var LoginDialog = GObject.registerClass({ + if (this.opacity == 255 && this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING) + return; + ++ if (this._authPrompt.verificationStatus !== AuthPrompt.AuthPromptStatus.NOT_VERIFYING) ++ this._authPrompt.reset(); ++ + this._bindOpacity(); + this.ease({ + opacity: 255, + duration: _FADE_ANIMATION_TIME, + mode: Clutter.AnimationMode.EASE_OUT_QUAD, +- onComplete: () => { +- if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.NOT_VERIFYING) +- this._authPrompt.reset(); +- this._unbindOpacity(); +- } ++ onComplete: () => this._unbindOpacity(), + }); + } + +-- +2.30.1 + diff --git a/gnu/packages/patches/gnutls-CVE-2021-20231.patch b/gnu/packages/patches/gnutls-CVE-2021-20231.patch new file mode 100644 index 0000000000..5186522eee --- /dev/null +++ b/gnu/packages/patches/gnutls-CVE-2021-20231.patch @@ -0,0 +1,62 @@ +From 15beb4b193b2714d88107e7dffca781798684e7e Mon Sep 17 00:00:00 2001 +From: Daiki Ueno <ueno@gnu.org> +Date: Fri, 29 Jan 2021 14:06:05 +0100 +Subject: [PATCH 1/2] key_share: avoid use-after-free around realloc + +Signed-off-by: Daiki Ueno <ueno@gnu.org> +--- + lib/ext/key_share.c | 12 +++++------- + 1 file changed, 5 insertions(+), 7 deletions(-) + +diff --git a/lib/ext/key_share.c b/lib/ext/key_share.c +index ab8abf8fe..a8c4bb5cf 100644 +--- a/lib/ext/key_share.c ++++ b/lib/ext/key_share.c +@@ -664,14 +664,14 @@ key_share_send_params(gnutls_session_t session, + { + unsigned i; + int ret; +- unsigned char *lengthp; +- unsigned int cur_length; + unsigned int generated = 0; + const gnutls_group_entry_st *group; + const version_entry_st *ver; + + /* this extension is only being sent on client side */ + if (session->security_parameters.entity == GNUTLS_CLIENT) { ++ unsigned int length_pos; ++ + ver = _gnutls_version_max(session); + if (unlikely(ver == NULL || ver->key_shares == 0)) + return 0; +@@ -679,16 +679,13 @@ key_share_send_params(gnutls_session_t session, + if (!have_creds_for_tls13(session)) + return 0; + +- /* write the total length later */ +- lengthp = &extdata->data[extdata->length]; ++ length_pos = extdata->length; + + ret = + _gnutls_buffer_append_prefix(extdata, 16, 0); + if (ret < 0) + return gnutls_assert_val(ret); + +- cur_length = extdata->length; +- + if (session->internals.hsk_flags & HSK_HRR_RECEIVED) { /* we know the group */ + group = get_group(session); + if (unlikely(group == NULL)) +@@ -736,7 +733,8 @@ key_share_send_params(gnutls_session_t session, + } + + /* copy actual length */ +- _gnutls_write_uint16(extdata->length - cur_length, lengthp); ++ _gnutls_write_uint16(extdata->length - length_pos - 2, ++ &extdata->data[length_pos]); + + } else { /* server */ + ver = get_version(session); +-- +2.30.2 + diff --git a/gnu/packages/patches/gnutls-CVE-2021-20232.patch b/gnu/packages/patches/gnutls-CVE-2021-20232.patch new file mode 100644 index 0000000000..dc3a0be690 --- /dev/null +++ b/gnu/packages/patches/gnutls-CVE-2021-20232.patch @@ -0,0 +1,60 @@ +From 75a937d97f4fefc6f9b08e3791f151445f551cb3 Mon Sep 17 00:00:00 2001 +From: Daiki Ueno <ueno@gnu.org> +Date: Fri, 29 Jan 2021 14:06:23 +0100 +Subject: [PATCH 2/2] pre_shared_key: avoid use-after-free around realloc + +Signed-off-by: Daiki Ueno <ueno@gnu.org> +--- + lib/ext/pre_shared_key.c | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +diff --git a/lib/ext/pre_shared_key.c b/lib/ext/pre_shared_key.c +index a042c6488..380bf39ed 100644 +--- a/lib/ext/pre_shared_key.c ++++ b/lib/ext/pre_shared_key.c +@@ -267,7 +267,7 @@ client_send_params(gnutls_session_t session, + size_t spos; + gnutls_datum_t username = {NULL, 0}; + gnutls_datum_t user_key = {NULL, 0}, rkey = {NULL, 0}; +- gnutls_datum_t client_hello; ++ unsigned client_hello_len; + unsigned next_idx; + const mac_entry_st *prf_res = NULL; + const mac_entry_st *prf_psk = NULL; +@@ -428,8 +428,7 @@ client_send_params(gnutls_session_t session, + assert(extdata->length >= sizeof(mbuffer_st)); + assert(ext_offset >= (ssize_t)sizeof(mbuffer_st)); + ext_offset -= sizeof(mbuffer_st); +- client_hello.data = extdata->data+sizeof(mbuffer_st); +- client_hello.size = extdata->length-sizeof(mbuffer_st); ++ client_hello_len = extdata->length-sizeof(mbuffer_st); + + next_idx = 0; + +@@ -440,6 +439,11 @@ client_send_params(gnutls_session_t session, + } + + if (prf_res && rkey.size > 0) { ++ gnutls_datum_t client_hello; ++ ++ client_hello.data = extdata->data+sizeof(mbuffer_st); ++ client_hello.size = client_hello_len; ++ + ret = compute_psk_binder(session, prf_res, + binders_len, binders_pos, + ext_offset, &rkey, &client_hello, 1, +@@ -474,6 +478,11 @@ client_send_params(gnutls_session_t session, + } + + if (prf_psk && user_key.size > 0 && info) { ++ gnutls_datum_t client_hello; ++ ++ client_hello.data = extdata->data+sizeof(mbuffer_st); ++ client_hello.size = client_hello_len; ++ + ret = compute_psk_binder(session, prf_psk, + binders_len, binders_pos, + ext_offset, &user_key, &client_hello, 0, +-- +2.30.2 + diff --git a/gnu/packages/patches/hplip-remove-imageprocessor.patch b/gnu/packages/patches/hplip-remove-imageprocessor.patch index cde3ecba2d..c9d27a4d1d 100644 --- a/gnu/packages/patches/hplip-remove-imageprocessor.patch +++ b/gnu/packages/patches/hplip-remove-imageprocessor.patch @@ -1,4 +1,5 @@ -This patch is based heavily on the Debian patch. +This patch is based heavily on the Debian patch, but was updated to +apply to subsequent upstream changes not yet in Debian. https://salsa.debian.org/printing-team/hplip/raw/debian/3.18.10+dfsg0-1/debian/patches/0025-Remove-all-ImageProcessor-functionality-which-is-clo.patch @@ -175,55 +176,67 @@ index 5b282d8..0bacfaf 100644 #include <signal.h> #include <sys/wait.h> -@@ -637,16 +636,10 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster) - +@@ -651,21 +650,8 @@ sprintf(hpPreProcessedRasterFile, "%s/hp_%s_cups_SwapedPagesXXXXXX",CUPS_TMP_DIR, m_JA.user_name); -- image_processor_t* imageProcessor = imageProcessorCreate(); - + +- image_processor_t* imageProcessor=NULL; +- IMAGE_PROCESSOR_ERROR result; +- //added if condition to check if pinter language is "ljzjstream" +- //If so, then bypass imageprocessing functions while running HPCUPS filter. +- if(strncmp(m_JA.printer_platform, "ljzjstream",10) == 0){ +- imageProcessor = imageProcessorCreate(); +- } while (cupsRasterReadHeader2(cups_raster, &cups_header)) { - -- IMAGE_PROCESSOR_ERROR result = imageProcessorStartPage(imageProcessor, &cups_header); +- if(strncmp(m_JA.printer_platform, "ljzjstream",10) == 0){ +- result = imageProcessorStartPage(imageProcessor, &cups_header); - if (result != IPE_SUCCESS){ - dbglog("DEBUG: imageProcessorStartPage failed result = %d\n", result); - } -- +- } current_page_number++; if (current_page_number == 1) { -@@ -745,12 +738,6 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster) +@@ -764,14 +750,6 @@ color_raster = rgbRaster; black_raster = kRaster; +- if(strncmp(m_JA.printer_platform, "ljzjstream",10) == 0) +- { - result = imageProcessorProcessLine(imageProcessor, m_pPrinterBuffer, cups_header.cupsBytesPerLine); - if (result != IPE_SUCCESS){ - dbglog("DEBUG: imageProcessorProcessLine failed result = %d\n", result); - } -- +- } - if ((y == 0) && !is_ljmono) { //For ljmono, make sure that first line is not a blankRaster line.Otherwise printer //may not skip blank lines before actual data -@@ -780,12 +767,6 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster) +@@ -801,14 +779,6 @@ } } // for() loop end +- if(strncmp(m_JA.printer_platform, "ljzjstream",10) == 0) +- { - result = imageProcessorEndPage(imageProcessor); - if (result != IPE_SUCCESS){ - dbglog("DEBUG: imageProcessorEndPage failed result = %d\n", result); - } -- +- } - m_Job.NewPage(); if (err != NO_ERROR) { break; -@@ -800,8 +781,6 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster) +@@ -823,11 +793,6 @@ rgbRaster = NULL; } +- +- if(strncmp(m_JA.printer_platform, "ljzjstream",10) == 0) +- { - imageProcessorDestroy(imageProcessor); -- +- } unlink(hpPreProcessedRasterFile); return ret_status; } diff --git a/gnu/packages/patches/libcaca-CVE-2021-3410-pt1.patch b/gnu/packages/patches/libcaca-CVE-2021-3410-pt1.patch new file mode 100644 index 0000000000..b23b01d33a --- /dev/null +++ b/gnu/packages/patches/libcaca-CVE-2021-3410-pt1.patch @@ -0,0 +1,137 @@ +https://github.com/cacalabs/libcaca/commit/46b4ea7cea72d6b3ffe65d33e604b1774dcc2bbd.patch + +From 46b4ea7cea72d6b3ffe65d33e604b1774dcc2bbd Mon Sep 17 00:00:00 2001 +From: Sam Hocevar <sam@hocevar.net> +Date: Fri, 26 Feb 2021 10:55:38 +0100 +Subject: [PATCH] canvas: fix an integer overflow in caca_resize(). + +Fixes: #52 (CVE-2021-3410) +--- + caca/canvas.c | 13 +++++++++++-- + caca/codec/import.c | 1 + + caca/codec/text.c | 21 ++++++++++++++------- + 3 files changed, 26 insertions(+), 9 deletions(-) + +diff --git a/caca/canvas.c b/caca/canvas.c +index 3fdd37ae..d0715392 100644 +--- a/caca/canvas.c ++++ b/caca/canvas.c +@@ -45,6 +45,7 @@ static int caca_resize(caca_canvas_t *, int, int); + * + * If an error occurs, NULL is returned and \b errno is set accordingly: + * - \c EINVAL Specified width or height is invalid. ++ * - \c EOVERFLOW Specified width and height overflowed. + * - \c ENOMEM Not enough memory for the requested canvas size. + * + * \param width The desired canvas width +@@ -200,6 +201,7 @@ int caca_unmanage_canvas(caca_canvas_t *cv, int (*callback)(void *), void *p) + * + * If an error occurs, -1 is returned and \b errno is set accordingly: + * - \c EINVAL Specified width or height is invalid. ++ * - \c EOVERFLOW Specified width and height overflowed. + * - \c EBUSY The canvas is in use by a display driver and cannot be resized. + * - \c ENOMEM Not enough memory for the requested canvas size. If this + * happens, the canvas handle becomes invalid and should not be used. +@@ -363,7 +365,7 @@ int caca_rand(int min, int max) + + int caca_resize(caca_canvas_t *cv, int width, int height) + { +- int x, y, f, old_width, old_height, new_size, old_size; ++ int x, y, f, old_width, old_height, old_size; + + old_width = cv->width; + old_height = cv->height; +@@ -375,7 +377,14 @@ int caca_resize(caca_canvas_t *cv, int width, int height) + * dirty rectangle handling */ + cv->width = width; + cv->height = height; +- new_size = width * height; ++ int new_size = width * height; ++ ++ /* Check for overflow */ ++ if (new_size / width != height) ++ { ++ seterrno(EOVERFLOW); ++ return -1; ++ } + + /* If width or height is smaller (or both), we have the opportunity to + * reduce or even remove dirty rectangles */ +diff --git a/caca/codec/import.c b/caca/codec/import.c +index 8836fd08..2dafe3cf 100644 +--- a/caca/codec/import.c ++++ b/caca/codec/import.c +@@ -61,6 +61,7 @@ static ssize_t import_caca(caca_canvas_t *, void const *, size_t); + * + * If an error occurs, -1 is returned and \b errno is set accordingly: + * - \c ENOMEM Not enough memory to allocate canvas. ++ * - \c EOVERFLOW Importing data caused a value overflow. + * - \c EINVAL Invalid format requested. + * + * \param cv A libcaca canvas in which to import the file. +diff --git a/caca/codec/text.c b/caca/codec/text.c +index 358b7224..94a2a4d7 100644 +--- a/caca/codec/text.c ++++ b/caca/codec/text.c +@@ -46,7 +46,7 @@ ssize_t _import_text(caca_canvas_t *cv, void const *data, size_t size) + char const *text = (char const *)data; + unsigned int width = 0, height = 0, x = 0, y = 0, i; + +- caca_set_canvas_size(cv, width, height); ++ caca_set_canvas_size(cv, 0, 0); + + for(i = 0; i < size; i++) + { +@@ -70,15 +70,19 @@ ssize_t _import_text(caca_canvas_t *cv, void const *data, size_t size) + if(y >= height) + height = y + 1; + +- caca_set_canvas_size(cv, width, height); ++ if (caca_set_canvas_size(cv, width, height) < 0) ++ return -1; + } + + caca_put_char(cv, x, y, ch); + x++; + } + +- if(y > height) +- caca_set_canvas_size(cv, width, height = y); ++ if (y > height) ++ { ++ if (caca_set_canvas_size(cv, width, height = y) < 0) ++ return -1; ++ } + + return (ssize_t)size; + } +@@ -431,7 +435,8 @@ ssize_t _import_ansi(caca_canvas_t *cv, void const *data, size_t size, int utf8) + { + savedattr = caca_get_attr(cv, -1, -1); + caca_set_attr(cv, im.clearattr); +- caca_set_canvas_size(cv, width = x + wch, height); ++ if (caca_set_canvas_size(cv, width = x + wch, height) < 0) ++ return -1; + caca_set_attr(cv, savedattr); + } + else +@@ -448,7 +453,8 @@ ssize_t _import_ansi(caca_canvas_t *cv, void const *data, size_t size, int utf8) + caca_set_attr(cv, im.clearattr); + if(growy) + { +- caca_set_canvas_size(cv, width, height = y + 1); ++ if (caca_set_canvas_size(cv, width, height = y + 1) < 0) ++ return -1; + } + else + { +@@ -480,7 +486,8 @@ ssize_t _import_ansi(caca_canvas_t *cv, void const *data, size_t size, int utf8) + { + savedattr = caca_get_attr(cv, -1, -1); + caca_set_attr(cv, im.clearattr); +- caca_set_canvas_size(cv, width, height = y); ++ if (caca_set_canvas_size(cv, width, height = y)) ++ return -1; + caca_set_attr(cv, savedattr); + } + diff --git a/gnu/packages/patches/libcaca-CVE-2021-3410-pt2.patch b/gnu/packages/patches/libcaca-CVE-2021-3410-pt2.patch new file mode 100644 index 0000000000..e6fd506b37 --- /dev/null +++ b/gnu/packages/patches/libcaca-CVE-2021-3410-pt2.patch @@ -0,0 +1,96 @@ +https://github.com/cacalabs/libcaca/commit/e4968ba6e93e9fd35429eb16895c785c51072015.patch +Patch adjusted to remove the lines modifying caca/t/canvas.cpp. This file does not exist in the current release. + +From e4968ba6e93e9fd35429eb16895c785c51072015 Mon Sep 17 00:00:00 2001 +From: Sam Hocevar <sam@hocevar.net> +Date: Fri, 26 Feb 2021 12:40:06 +0100 +Subject: [PATCH] Fix a problem in the caca_resize() overflow detection and add + several unit tests. + +--- + caca/canvas.c | 16 ++++++++-------- + caca/t/canvas.cpp | 18 +++++++++++++++--- + tools/makefont.c | 22 +++++++++++++++++++--- + 3 files changed, 42 insertions(+), 14 deletions(-) + +diff --git a/caca/canvas.c b/caca/canvas.c +index d0715392..08c628c9 100644 +--- a/caca/canvas.c ++++ b/caca/canvas.c +@@ -367,6 +367,14 @@ int caca_resize(caca_canvas_t *cv, int width, int height) + { + int x, y, f, old_width, old_height, old_size; + ++ /* Check for overflow */ ++ int new_size = width * height; ++ if (new_size < 0 || (width > 0 && new_size / width != height)) ++ { ++ seterrno(EOVERFLOW); ++ return -1; ++ } ++ + old_width = cv->width; + old_height = cv->height; + old_size = old_width * old_height; +@@ -377,14 +385,6 @@ int caca_resize(caca_canvas_t *cv, int width, int height) + * dirty rectangle handling */ + cv->width = width; + cv->height = height; +- int new_size = width * height; +- +- /* Check for overflow */ +- if (new_size / width != height) +- { +- seterrno(EOVERFLOW); +- return -1; +- } + + /* If width or height is smaller (or both), we have the opportunity to + * reduce or even remove dirty rectangles */ +diff --git a/tools/makefont.c b/tools/makefont.c +index 226c8838..66718605 100644 +--- a/tools/makefont.c ++++ b/tools/makefont.c +@@ -40,7 +40,8 @@ + * and the UTF-8 glyphs necessary for canvas rotation and mirroring. */ + static unsigned int const blocklist[] = + { +- 0x0000, 0x0080, /* Basic latin: A, B, C, a, b, c */ ++ 0x0020, 0x0080, /* Basic latin: A, B, C, a, b, c */ ++#if 0 + 0x0080, 0x0100, /* Latin-1 Supplement: Ä, Ç, å, ß */ + 0x0100, 0x0180, /* Latin Extended-A: Ā č Ō œ */ + 0x0180, 0x0250, /* Latin Extended-B: Ǝ Ƹ */ +@@ -63,6 +64,7 @@ static unsigned int const blocklist[] = + 0x30a0, 0x3100, /* Katakana: ロ ル */ + 0xff00, 0xfff0, /* Halfwidth and Fullwidth Forms: A, B, C, a, b, c */ + 0x10400, 0x10450, /* Deseret: 𐐒 𐐋 */ ++#endif + 0, 0 + }; + +@@ -317,8 +319,22 @@ int main(int argc, char *argv[]) + printf_unicode(>ab[n]); + + if(gtab[n].same_as == n) +- printf_hex(" */ %s\n", +- glyph_data + gtab[n].data_offset, gtab[n].data_size); ++ { ++ char const *lut = " .:nmW@"; ++ printf("\n"); ++ for (int y = 0; y < height; ++y) ++ { ++ for (int x = 0; x < gtab[n].data_width; ++x) ++ { ++ int val = glyph_data[gtab[n].data_offset + y * gtab[n].data_width + x]; ++ char ch = lut[val * val * 7 / 256 / 256]; ++ printf("%c%c", ch, ch); ++ } ++ printf("\n"); ++ } ++ //printf_hex(" */ %s\n", ++ // glyph_data + gtab[n].data_offset, gtab[n].data_size); ++ } + else + { + printf(" is "); diff --git a/gnu/packages/patches/libcroco-CVE-2020-12825.patch b/gnu/packages/patches/libcroco-CVE-2020-12825.patch new file mode 100644 index 0000000000..35005a6a19 --- /dev/null +++ b/gnu/packages/patches/libcroco-CVE-2020-12825.patch @@ -0,0 +1,187 @@ +From 7b64eb285dd937b34df71c95188301be50dd1409 Mon Sep 17 00:00:00 2001 +From: Michael Catanzaro <mcatanzaro@gnome.org> +Date: Wed, 12 Aug 2020 13:54:15 -0500 +Subject: [PATCH] libcroco: Limit recursion in block and any productions + (CVE-2020-12825) + +If we don't have any limits, we can recurse forever and overflow the +stack. + +This is per https://gitlab.gnome.org/Archive/libcroco/-/issues/8 + +https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1404 +--- + src/st/croco/cr-parser.c | 44 ++++++++++++++++++++++++++-------------- + 1 file changed, 29 insertions(+), 15 deletions(-) + +diff --git a/src/st/croco/cr-parser.c b/src/st/croco/cr-parser.c +index 07f4ed9e8b..8304b75614 100644 +--- a/src/cr-parser.c ++++ b/src/cr-parser.c +@@ -136,6 +136,8 @@ struct _CRParserPriv { + + #define CHARS_TAB_SIZE 12 + ++#define RECURSIVE_CALLERS_LIMIT 100 ++ + /** + * IS_NUM: + *@a_char: the char to test. +@@ -343,9 +345,11 @@ static enum CRStatus cr_parser_parse_selector_core (CRParser * a_this); + + static enum CRStatus cr_parser_parse_declaration_core (CRParser * a_this); + +-static enum CRStatus cr_parser_parse_any_core (CRParser * a_this); ++static enum CRStatus cr_parser_parse_any_core (CRParser * a_this, ++ guint n_calls); + +-static enum CRStatus cr_parser_parse_block_core (CRParser * a_this); ++static enum CRStatus cr_parser_parse_block_core (CRParser * a_this, ++ guint n_calls); + + static enum CRStatus cr_parser_parse_value_core (CRParser * a_this); + +@@ -783,7 +787,7 @@ cr_parser_parse_atrule_core (CRParser * a_this) + cr_parser_try_to_skip_spaces_and_comments (a_this); + + do { +- status = cr_parser_parse_any_core (a_this); ++ status = cr_parser_parse_any_core (a_this, 0); + } while (status == CR_OK); + + status = cr_tknzr_get_next_token (PRIVATE (a_this)->tknzr, +@@ -794,7 +798,7 @@ cr_parser_parse_atrule_core (CRParser * a_this) + cr_tknzr_unget_token (PRIVATE (a_this)->tknzr, + token); + token = NULL; +- status = cr_parser_parse_block_core (a_this); ++ status = cr_parser_parse_block_core (a_this, 0); + CHECK_PARSING_STATUS (status, + FALSE); + goto done; +@@ -929,11 +933,11 @@ cr_parser_parse_selector_core (CRParser * a_this) + + RECORD_INITIAL_POS (a_this, &init_pos); + +- status = cr_parser_parse_any_core (a_this); ++ status = cr_parser_parse_any_core (a_this, 0); + CHECK_PARSING_STATUS (status, FALSE); + + do { +- status = cr_parser_parse_any_core (a_this); ++ status = cr_parser_parse_any_core (a_this, 0); + + } while (status == CR_OK); + +@@ -955,10 +959,12 @@ cr_parser_parse_selector_core (CRParser * a_this) + *in chapter 4.1 of the css2 spec. + *block ::= '{' S* [ any | block | ATKEYWORD S* | ';' ]* '}' S*; + *@param a_this the current instance of #CRParser. ++ *@param n_calls used to limit recursion depth + *FIXME: code this function. + */ + static enum CRStatus +-cr_parser_parse_block_core (CRParser * a_this) ++cr_parser_parse_block_core (CRParser * a_this, ++ guint n_calls) + { + CRToken *token = NULL; + CRInputPos init_pos; +@@ -966,6 +972,9 @@ cr_parser_parse_block_core (CRParser * a_this) + + g_return_val_if_fail (a_this && PRIVATE (a_this), CR_BAD_PARAM_ERROR); + ++ if (n_calls > RECURSIVE_CALLERS_LIMIT) ++ return CR_ERROR; ++ + RECORD_INITIAL_POS (a_this, &init_pos); + + status = cr_tknzr_get_next_token (PRIVATE (a_this)->tknzr, &token); +@@ -995,13 +1004,13 @@ cr_parser_parse_block_core (CRParser * a_this) + } else if (token->type == CBO_TK) { + cr_tknzr_unget_token (PRIVATE (a_this)->tknzr, token); + token = NULL; +- status = cr_parser_parse_block_core (a_this); ++ status = cr_parser_parse_block_core (a_this, n_calls + 1); + CHECK_PARSING_STATUS (status, FALSE); + goto parse_block_content; + } else { + cr_tknzr_unget_token (PRIVATE (a_this)->tknzr, token); + token = NULL; +- status = cr_parser_parse_any_core (a_this); ++ status = cr_parser_parse_any_core (a_this, n_calls + 1); + CHECK_PARSING_STATUS (status, FALSE); + goto parse_block_content; + } +@@ -1108,7 +1117,7 @@ cr_parser_parse_value_core (CRParser * a_this) + status = cr_tknzr_unget_token (PRIVATE (a_this)->tknzr, + token); + token = NULL; +- status = cr_parser_parse_block_core (a_this); ++ status = cr_parser_parse_block_core (a_this, 0); + CHECK_PARSING_STATUS (status, FALSE); + ref++; + goto continue_parsing; +@@ -1122,7 +1131,7 @@ cr_parser_parse_value_core (CRParser * a_this) + status = cr_tknzr_unget_token (PRIVATE (a_this)->tknzr, + token); + token = NULL; +- status = cr_parser_parse_any_core (a_this); ++ status = cr_parser_parse_any_core (a_this, 0); + if (status == CR_OK) { + ref++; + goto continue_parsing; +@@ -1161,10 +1170,12 @@ cr_parser_parse_value_core (CRParser * a_this) + * | FUNCTION | DASHMATCH | '(' any* ')' | '[' any* ']' ] S*; + * + *@param a_this the current instance of #CRParser. ++ *@param n_calls used to limit recursion depth + *@return CR_OK upon successfull completion, an error code otherwise. + */ + static enum CRStatus +-cr_parser_parse_any_core (CRParser * a_this) ++cr_parser_parse_any_core (CRParser * a_this, ++ guint n_calls) + { + CRToken *token1 = NULL, + *token2 = NULL; +@@ -1173,6 +1184,9 @@ cr_parser_parse_any_core (CRParser * a_this) + + g_return_val_if_fail (a_this, CR_BAD_PARAM_ERROR); + ++ if (n_calls > RECURSIVE_CALLERS_LIMIT) ++ return CR_ERROR; ++ + RECORD_INITIAL_POS (a_this, &init_pos); + + status = cr_tknzr_get_next_token (PRIVATE (a_this)->tknzr, &token1); +@@ -1211,7 +1225,7 @@ cr_parser_parse_any_core (CRParser * a_this) + *We consider parameter as being an "any*" production. + */ + do { +- status = cr_parser_parse_any_core (a_this); ++ status = cr_parser_parse_any_core (a_this, n_calls + 1); + } while (status == CR_OK); + + ENSURE_PARSING_COND (status == CR_PARSING_ERROR); +@@ -1236,7 +1250,7 @@ cr_parser_parse_any_core (CRParser * a_this) + } + + do { +- status = cr_parser_parse_any_core (a_this); ++ status = cr_parser_parse_any_core (a_this, n_calls + 1); + } while (status == CR_OK); + + ENSURE_PARSING_COND (status == CR_PARSING_ERROR); +@@ -1264,7 +1278,7 @@ cr_parser_parse_any_core (CRParser * a_this) + } + + do { +- status = cr_parser_parse_any_core (a_this); ++ status = cr_parser_parse_any_core (a_this, n_calls + 1); + } while (status == CR_OK); + + ENSURE_PARSING_COND (status == CR_PARSING_ERROR); +-- +GitLab + diff --git a/gnu/packages/patches/mongodb-support-unknown-linux-distributions.patch b/gnu/packages/patches/mongodb-support-unknown-linux-distributions.patch deleted file mode 100644 index 6057ebeb08..0000000000 --- a/gnu/packages/patches/mongodb-support-unknown-linux-distributions.patch +++ /dev/null @@ -1,55 +0,0 @@ -From e724bb7018a482640c4f194f88b554af2c59d76e Mon Sep 17 00:00:00 2001 -From: Mark Benvenuto <mark.benvenuto@mongodb.com> -Date: Wed, 20 Sep 2017 11:50:02 -0400 -Subject: [PATCH] SERVER-30857 Support unknown Linux distributions - ---- - src/mongo/rpc/metadata/client_metadata.cpp | 6 ------ - src/mongo/util/processinfo_linux.cpp | 9 ++++++--- - 2 files changed, 6 insertions(+), 9 deletions(-) - -diff --git a/src/mongo/rpc/metadata/client_metadata.cpp b/src/mongo/rpc/metadata/client_metadata.cpp -index 845a315dd74..a959a4e31e9 100644 ---- a/src/mongo/rpc/metadata/client_metadata.cpp -+++ b/src/mongo/rpc/metadata/client_metadata.cpp -@@ -302,9 +302,6 @@ void ClientMetadata::serializePrivate(StringData driverName, - StringData osArchitecture, - StringData osVersion, - BSONObjBuilder* builder) { -- invariant(!driverName.empty() && !driverVersion.empty() && !osType.empty() && !osName.empty() && -- !osArchitecture.empty() && !osVersion.empty()); -- - BSONObjBuilder metaObjBuilder(builder->subobjStart(kMetadataDocumentName)); - - { -@@ -347,9 +344,6 @@ Status ClientMetadata::serializePrivate(StringData driverName, - StringData osVersion, - StringData appName, - BSONObjBuilder* builder) { -- invariant(!driverName.empty() && !driverVersion.empty() && !osType.empty() && !osName.empty() && -- !osArchitecture.empty() && !osVersion.empty()); -- - if (appName.size() > kMaxApplicationNameByteLength) { - return Status(ErrorCodes::ClientMetadataAppNameTooLarge, - str::stream() << "The '" << kApplication << "." << kName -diff --git a/src/mongo/util/processinfo_linux.cpp b/src/mongo/util/processinfo_linux.cpp -index c3debf377bd..c2813b026b0 100644 ---- a/src/mongo/util/processinfo_linux.cpp -+++ b/src/mongo/util/processinfo_linux.cpp -@@ -376,10 +376,13 @@ class LinuxSysHelper { - if ((nl = name.find('\n', nl)) != string::npos) - // stop at first newline - name.erase(nl); -- // no standard format for name and version. use kernel version -- version = "Kernel "; -- version += LinuxSysHelper::readLineFromFile("/proc/sys/kernel/osrelease"); -+ } else { -+ name = "unknown"; - } -+ -+ // There is no standard format for name and version so use the kernel version. -+ version = "Kernel "; -+ version += LinuxSysHelper::readLineFromFile("/proc/sys/kernel/osrelease"); - } - - /** diff --git a/gnu/packages/patches/mpg321-CVE-2019-14247.patch b/gnu/packages/patches/mpg321-CVE-2019-14247.patch new file mode 100644 index 0000000000..03afaccc67 --- /dev/null +++ b/gnu/packages/patches/mpg321-CVE-2019-14247.patch @@ -0,0 +1,23 @@ +This patch was downloaded from https://sourceforge.net/p/mpg321/bugs/51/ and +fixes CVE-2019-14247. + +Description: Handle illegal bitrate value +Author: Chrysostomos Nanakos <cnanakos@debian.org> +Bug-Debian: https://bugs.debian.org/870406 +Bug-Debian: https://bugs.debian.org/887057 + +--- mpg321-0.3.2.orig/mad.c ++++ mpg321-0.3.2/mad.c +@@ -574,6 +574,12 @@ void scan(void const *ptr, ssize_t len, + + if (!is_vbr) + { ++ if (header.bitrate <= 0) ++ { ++ fprintf(stderr, "Illegal bit allocation value\n"); ++ return; ++ } ++ + double time = (len * 8.0) / (header.bitrate); /* time in seconds */ + double timefrac = (double)time - ((long)(time)); + long nsamples = 32 * MAD_NSBSAMPLES(&header); /* samples per frame */ diff --git a/gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch b/gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch index 9503ab6f31..760ab97568 100644 --- a/gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch +++ b/gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch @@ -1,28 +1,28 @@ -From 951f2269f67d618d376656db831796c119f4f6b3 Mon Sep 17 00:00:00 2001 +From 0c57874ebb5982154da127ae338f9190b1581804 Mon Sep 17 00:00:00 2001 From: Leo Prikler <leo.prikler@student.tugraz.at> Date: Fri, 26 Jun 2020 18:20:04 +0200 Subject: [PATCH] ppsspp: disable upgrade and gold --- - Core/Config.cpp | 11 ------- + Core/Config.cpp | 11 ------ Core/Config.h | 2 -- Qt/QtMain.cpp | 6 ---- SDL/SDLMain.cpp | 6 ---- UI/DevScreens.cpp | 3 -- UI/GameSettingsScreen.cpp | 1 - - UI/MainScreen.cpp | 63 +------------------------------------ - UI/MiscScreens.cpp | 31 ++---------------- + UI/MainScreen.cpp | 70 +------------------------------------ + UI/MiscScreens.cpp | 31 ++-------------- UWP/PPSSPP_UWPMain.cpp | 6 ---- Windows/MainWindowMenu.cpp | 2 +- Windows/main.cpp | 6 ---- android/jni/app-android.cpp | 6 ---- - 12 files changed, 5 insertions(+), 138 deletions(-) + 12 files changed, 5 insertions(+), 145 deletions(-) diff --git a/Core/Config.cpp b/Core/Config.cpp -index 214aeb433..04e3b151d 100644 +index 1c53e8e57..2fa74a6b8 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp -@@ -428,7 +428,6 @@ static ConfigSetting generalSettings[] = { +@@ -439,7 +439,6 @@ static ConfigSetting generalSettings[] = { ConfigSetting("IgnoreBadMemAccess", &g_Config.bIgnoreBadMemAccess, true, true), ConfigSetting("CurrentDirectory", &g_Config.currentDirectory, ""), ConfigSetting("ShowDebuggerOnLoad", &g_Config.bShowDebuggerOnLoad, false), @@ -30,7 +30,7 @@ index 214aeb433..04e3b151d 100644 ConfigSetting("Language", &g_Config.sLanguageIni, &DefaultLangRegion), ConfigSetting("ForceLagSync2", &g_Config.bForceLagSync, false, true, true), ConfigSetting("DiscordPresence", &g_Config.bDiscordPresence, true, true, false), // Or maybe it makes sense to have it per-game? Race conditions abound... -@@ -1229,16 +1228,6 @@ void Config::Load(const char *iniFileName, const char *controllerIniFilename) { +@@ -1293,16 +1292,6 @@ void Config::Load(const char *iniFileName, const char *controllerIniFilename) { upgradeMessage = ""; } @@ -48,29 +48,29 @@ index 214aeb433..04e3b151d 100644 bSaveSettings = true; diff --git a/Core/Config.h b/Core/Config.h -index 084eacc94..e7134cab5 100644 +index 13bce8a36..70d6c8aaf 100644 --- a/Core/Config.h +++ b/Core/Config.h -@@ -99,7 +99,6 @@ struct Config { - bool bIgnoreBadMemAccess; +@@ -101,7 +101,6 @@ struct Config { + bool bFastMemory; int iCpuCore; - bool bCheckForNewVersion; bool bForceLagSync; bool bFuncReplacements; bool bHideSlowWarnings; -@@ -521,4 +520,3 @@ std::string CreateRandMAC(); +@@ -540,4 +539,3 @@ std::string CreateRandMAC(); // TODO: Find a better place for this. extern http::Downloader g_DownloadManager; extern Config g_Config; - diff --git a/Qt/QtMain.cpp b/Qt/QtMain.cpp -index 7713b6587..1d92d1175 100644 +index 5be0cefa0..b11cb1c64 100644 --- a/Qt/QtMain.cpp +++ b/Qt/QtMain.cpp -@@ -194,12 +194,6 @@ bool System_GetPropertyBool(SystemProperty prop) { - return true; +@@ -218,12 +218,6 @@ bool System_GetPropertyBool(SystemProperty prop) { case SYSPROP_HAS_FILE_BROWSER: + case SYSPROP_HAS_FOLDER_BROWSER: return true; - case SYSPROP_APP_GOLD: -#ifdef GOLD @@ -82,10 +82,10 @@ index 7713b6587..1d92d1175 100644 return false; } diff --git a/SDL/SDLMain.cpp b/SDL/SDLMain.cpp -index 52028d087..d8697d210 100644 +index 98b56fe91..6af0fcb1a 100644 --- a/SDL/SDLMain.cpp +++ b/SDL/SDLMain.cpp -@@ -356,12 +356,6 @@ bool System_GetPropertyBool(SystemProperty prop) { +@@ -380,12 +380,6 @@ bool System_GetPropertyBool(SystemProperty prop) { switch (prop) { case SYSPROP_HAS_BACK_BUTTON: return true; @@ -99,10 +99,10 @@ index 52028d087..d8697d210 100644 return false; } diff --git a/UI/DevScreens.cpp b/UI/DevScreens.cpp -index f146d099e..625ee124c 100644 +index 8daac5bc8..c0c09ce79 100644 --- a/UI/DevScreens.cpp +++ b/UI/DevScreens.cpp -@@ -603,9 +603,6 @@ void SystemInfoScreen::CreateViews() { +@@ -605,9 +605,6 @@ void SystemInfoScreen::CreateViews() { #ifdef _M_SSE buildConfig->Add(new InfoItem("_M_SSE", StringFromFormat("0x%x", _M_SSE))); #endif @@ -113,35 +113,35 @@ index f146d099e..625ee124c 100644 ViewGroup *cpuExtensionsScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT)); cpuExtensionsScroll->SetTag("DevSystemInfoCPUExt"); diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp -index 8202870c7..81112f822 100644 +index 2f1e157ee..38c586b06 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp -@@ -796,7 +796,6 @@ void GameSettingsScreen::CreateViews() { +@@ -914,7 +914,6 @@ void GameSettingsScreen::CreateViews() { + } } #endif - - systemSettings->Add(new CheckBox(&g_Config.bCheckForNewVersion, sy->T("VersionCheck", "Check for new versions of PPSSPP"))); const std::string bgPng = GetSysDirectory(DIRECTORY_SYSTEM) + "background.png"; const std::string bgJpg = GetSysDirectory(DIRECTORY_SYSTEM) + "background.jpg"; if (File::Exists(bgPng) || File::Exists(bgJpg)) { diff --git a/UI/MainScreen.cpp b/UI/MainScreen.cpp -index 43535913d..36834020d 100644 +index ca870ab8f..84cde88ac 100644 --- a/UI/MainScreen.cpp +++ b/UI/MainScreen.cpp -@@ -1054,11 +1054,7 @@ void MainScreen::CreateViews() { +@@ -1064,11 +1064,7 @@ void MainScreen::CreateViews() { sprintf(versionString, "%s", PPSSPP_GIT_VERSION); rightColumnItems->SetSpacing(0.0f); - LinearLayout *logos = new LinearLayout(ORIENT_HORIZONTAL); + AnchorLayout *logos = new AnchorLayout(new AnchorLayoutParams(FILL_PARENT, 60.0f, false)); - if (System_GetPropertyBool(SYSPROP_APP_GOLD)) { -- logos->Add(new ImageView(ImageID("I_ICONGOLD"), IS_DEFAULT, new AnchorLayoutParams(64, 64, 10, 10, NONE, NONE, false))); +- logos->Add(new ImageView(ImageID("I_ICONGOLD"), IS_DEFAULT, new AnchorLayoutParams(64, 64, 0, 0, NONE, NONE, false))); - } else { -- logos->Add(new ImageView(ImageID("I_ICON"), IS_DEFAULT, new AnchorLayoutParams(64, 64, 10, 10, NONE, NONE, false))); +- logos->Add(new ImageView(ImageID("I_ICON"), IS_DEFAULT, new AnchorLayoutParams(64, 64, 0, 0, NONE, NONE, false))); - } -+ logos->Add(new ImageView(ImageID("I_ICON"), IS_DEFAULT, new AnchorLayoutParams(64, 64, 10, 10, NONE, NONE, false))); - logos->Add(new ImageView(ImageID("I_LOGO"), IS_DEFAULT, new LinearLayoutParams(Margins(-12, 0, 0, 0)))); - rightColumnItems->Add(logos); - TextView *ver = rightColumnItems->Add(new TextView(versionString, new LinearLayoutParams(Margins(70, -6, 0, 0)))); -@@ -1070,11 +1066,6 @@ void MainScreen::CreateViews() { ++ logos->Add(new ImageView(ImageID("I_ICON"), IS_DEFAULT, new AnchorLayoutParams(64, 64, 0, 0, NONE, NONE, false))); + logos->Add(new ImageView(ImageID("I_LOGO"), IS_DEFAULT, new AnchorLayoutParams(180, 64, 64, -5.0f, NONE, NONE, false))); + + #if !defined(MOBILE_DEVICE) +@@ -1089,11 +1085,6 @@ void MainScreen::CreateViews() { rightColumnItems->Add(new Choice(mm->T("Game Settings", "Settings")))->OnClick.Handle(this, &MainScreen::OnGameSettings); rightColumnItems->Add(new Choice(mm->T("Credits")))->OnClick.Handle(this, &MainScreen::OnCredits); rightColumnItems->Add(new Choice(mm->T("www.ppsspp.org")))->OnClick.Handle(this, &MainScreen::OnPPSSPPOrg); @@ -153,7 +153,7 @@ index 43535913d..36834020d 100644 #if !PPSSPP_PLATFORM(UWP) // Having an exit button is against UWP guidelines. -@@ -1099,28 +1090,6 @@ void MainScreen::CreateViews() { +@@ -1118,32 +1109,6 @@ void MainScreen::CreateViews() { } else if (tabHolder_->GetVisibility() != V_GONE) { root_->SetDefaultFocusView(tabHolder_); } @@ -169,7 +169,11 @@ index 43535913d..36834020d 100644 - UI::Drawable solid(0xFFbd9939); - upgradeBar_->SetBG(solid); - upgradeBar_->Add(new TextView(u->T("New version of PPSSPP available") + std::string(": ") + g_Config.upgradeVersion, new LinearLayoutParams(1.0f, textMargins))); +-#if PPSSPP_PLATFORM(ANDROID) || PPSSPP_PLATFORM(WINDOWS) - upgradeBar_->Add(new Button(u->T("Download"), new LinearLayoutParams(buttonMargins)))->OnClick.Handle(this, &MainScreen::OnDownloadUpgrade); +-#else +- upgradeBar_->Add(new Button(u->T("Details"), new LinearLayoutParams(buttonMargins)))->OnClick.Handle(this, &MainScreen::OnDownloadUpgrade); +-#endif - upgradeBar_->Add(new Button(u->T("Dismiss"), new LinearLayoutParams(buttonMargins)))->OnClick.Handle(this, &MainScreen::OnDismissUpgrade); - - // Slip in under root_ @@ -182,7 +186,7 @@ index 43535913d..36834020d 100644 } UI::EventReturn MainScreen::OnAllowStorage(UI::EventParams &e) { -@@ -1128,27 +1097,6 @@ UI::EventReturn MainScreen::OnAllowStorage(UI::EventParams &e) { +@@ -1151,30 +1116,6 @@ UI::EventReturn MainScreen::OnAllowStorage(UI::EventParams &e) { return UI::EVENT_DONE; } @@ -194,9 +198,12 @@ index 43535913d..36834020d 100644 - } else { - LaunchBrowser("market://details?id=org.ppsspp.ppsspp"); - } +-#elif PPSSPP_PLATFORM(WINDOWS) +- LaunchBrowser("https://www.ppsspp.org/downloads.html"); -#else - // Go directly to ppsspp.org and let the user sort it out -- LaunchBrowser("https://www.ppsspp.org/downloads.html"); +- // (for details and in case downloads doesn't have their platform.) +- LaunchBrowser("https://www.ppsspp.org/"); -#endif - return UI::EVENT_DONE; -} @@ -210,7 +217,7 @@ index 43535913d..36834020d 100644 void MainScreen::sendMessage(const char *message, const char *value) { // Always call the base class method first to handle the most common messages. UIScreenWithBackground::sendMessage(message, value); -@@ -1319,15 +1267,6 @@ UI::EventReturn MainScreen::OnCredits(UI::EventParams &e) { +@@ -1390,15 +1331,6 @@ UI::EventReturn MainScreen::OnCredits(UI::EventParams &e) { return UI::EVENT_DONE; } @@ -227,10 +234,10 @@ index 43535913d..36834020d 100644 LaunchBrowser("https://www.ppsspp.org"); return UI::EVENT_DONE; diff --git a/UI/MiscScreens.cpp b/UI/MiscScreens.cpp -index a6542c65d..f5f101594 100644 +index a7284654b..2413d6c89 100644 --- a/UI/MiscScreens.cpp +++ b/UI/MiscScreens.cpp -@@ -498,11 +498,7 @@ void LogoScreen::render() { +@@ -539,11 +539,7 @@ void LogoScreen::render() { char temp[256]; // Manually formatting UTF-8 is fun. \xXX doesn't work everywhere. snprintf(temp, sizeof(temp), "%s Henrik Rydg%c%crd", cr->T("created", "Created by"), 0xC3, 0xA5); @@ -243,7 +250,7 @@ index a6542c65d..f5f101594 100644 dc.Draw()->DrawImage(ImageID("I_LOGO"), bounds.centerX() + 40, bounds.centerY() - 30, 1.5f, textColor, ALIGN_CENTER); //dc.Draw()->DrawTextShadow(UBUNTU48, "PPSSPP", xres / 2, yres / 2 - 30, textColor, ALIGN_CENTER); dc.SetFontScale(1.0f, 1.0f); -@@ -538,10 +534,6 @@ void CreditsScreen::CreateViews() { +@@ -579,10 +575,6 @@ void CreditsScreen::CreateViews() { // Really need to redo this whole layout with some linear layouts... int rightYOffset = 0; @@ -254,7 +261,7 @@ index a6542c65d..f5f101594 100644 root_->Add(new Button(cr->T("PPSSPP Forums"), new AnchorLayoutParams(260, 64, 10, NONE, NONE, 158, false)))->OnClick.Handle(this, &CreditsScreen::OnForums); root_->Add(new Button(cr->T("Discord"), new AnchorLayoutParams(260, 64, 10, NONE, NONE, 232, false)))->OnClick.Handle(this, &CreditsScreen::OnDiscord); root_->Add(new Button("www.ppsspp.org", new AnchorLayoutParams(260, 64, 10, NONE, NONE, 10, false)))->OnClick.Handle(this, &CreditsScreen::OnPPSSPPOrg); -@@ -550,20 +542,7 @@ void CreditsScreen::CreateViews() { +@@ -591,20 +583,7 @@ void CreditsScreen::CreateViews() { #if PPSSPP_PLATFORM(ANDROID) || PPSSPP_PLATFORM(IOS) root_->Add(new Button(cr->T("Share PPSSPP"), new AnchorLayoutParams(260, 64, NONE, NONE, 10, rightYOffset + 158, false)))->OnClick.Handle(this, &CreditsScreen::OnShare); #endif @@ -276,7 +283,7 @@ index a6542c65d..f5f101594 100644 } UI::EventReturn CreditsScreen::OnTwitter(UI::EventParams &e) { -@@ -747,11 +726,7 @@ void CreditsScreen::render() { +@@ -794,11 +773,7 @@ void CreditsScreen::render() { // TODO: This is kinda ugly, done on every frame... char temp[256]; @@ -290,10 +297,10 @@ index a6542c65d..f5f101594 100644 UIContext &dc = *screenManager()->getUIContext(); diff --git a/UWP/PPSSPP_UWPMain.cpp b/UWP/PPSSPP_UWPMain.cpp -index 24f3b964d..1d66ba7ee 100644 +index 0ba7fac4b..d1b687c47 100644 --- a/UWP/PPSSPP_UWPMain.cpp +++ b/UWP/PPSSPP_UWPMain.cpp -@@ -399,12 +399,6 @@ bool System_GetPropertyBool(SystemProperty prop) { +@@ -433,12 +433,6 @@ bool System_GetPropertyBool(SystemProperty prop) { return false; case SYSPROP_HAS_BACK_BUTTON: return true; @@ -307,10 +314,10 @@ index 24f3b964d..1d66ba7ee 100644 return false; } diff --git a/Windows/MainWindowMenu.cpp b/Windows/MainWindowMenu.cpp -index b5e1bb0eb..71b29b48a 100644 +index 979a60ecb..a57927544 100644 --- a/Windows/MainWindowMenu.cpp +++ b/Windows/MainWindowMenu.cpp -@@ -1377,7 +1377,7 @@ namespace MainWindow { +@@ -1393,7 +1393,7 @@ namespace MainWindow { { W32Util::CenterWindow(hDlg); HWND versionBox = GetDlgItem(hDlg, IDC_VERSION); @@ -320,10 +327,10 @@ index b5e1bb0eb..71b29b48a 100644 SetWindowText(versionBox, ConvertUTF8ToWString(windowText).c_str()); } diff --git a/Windows/main.cpp b/Windows/main.cpp -index 3795597e2..fd98d0453 100644 +index 4d948cfe5..e609cc1e0 100644 --- a/Windows/main.cpp +++ b/Windows/main.cpp -@@ -268,12 +268,6 @@ bool System_GetPropertyBool(SystemProperty prop) { +@@ -301,12 +301,6 @@ bool System_GetPropertyBool(SystemProperty prop) { return true; case SYSPROP_HAS_BACK_BUTTON: return true; @@ -337,13 +344,13 @@ index 3795597e2..fd98d0453 100644 return false; } diff --git a/android/jni/app-android.cpp b/android/jni/app-android.cpp -index 086371085..0a340c0ae 100644 +index 10fdf97e5..736b1fa66 100644 --- a/android/jni/app-android.cpp +++ b/android/jni/app-android.cpp -@@ -372,12 +372,6 @@ bool System_GetPropertyBool(SystemProperty prop) { - return true; - case SYSPROP_HAS_IMAGE_BROWSER: - return true; +@@ -437,12 +437,6 @@ bool System_GetPropertyBool(SystemProperty prop) { + case SYSPROP_HAS_FOLDER_BROWSER: + // Uses OPEN_DOCUMENT_TREE to let you select a folder. + return androidVersion >= 21; - case SYSPROP_APP_GOLD: -#ifdef GOLD - return true; @@ -354,5 +361,5 @@ index 086371085..0a340c0ae 100644 return false; } -- -2.26.2 +2.30.1 diff --git a/gnu/packages/patches/python-shouldbe-0.1.2-cpy3.8.patch b/gnu/packages/patches/python-shouldbe-0.1.2-cpy3.8.patch deleted file mode 100644 index f3b56e42d6..0000000000 --- a/gnu/packages/patches/python-shouldbe-0.1.2-cpy3.8.patch +++ /dev/null @@ -1,82 +0,0 @@ -Fix compatibility with Python 3.8. - -Upstream issue: https://github.com/DirectXMan12/should_be/pull/5 - -diff -x '*.pyc' -Naur shouldbe-0.1.2/should_be/core.py shouldbe-0.1.2.patched/should_be/core.py ---- shouldbe-0.1.2/should_be/core.py 2019-03-06 07:38:22.000000000 +0100 -+++ shouldbe-0.1.2.patched/should_be/core.py 2020-05-18 08:44:24.214664704 +0200 -@@ -103,7 +103,7 @@ - return resf - - --def buildCode(baseCode, argcount=None, kwonlyargcount=None, -+def buildCode(baseCode, argcount=None, posonlyargcount=None, kwonlyargcount=None, - nlocals=None, stacksize=None, flags=None, - code=None, consts=None, names=None, - varnames=None, filename=None, name=None, -@@ -121,6 +121,24 @@ - nlocals or baseCode.co_nlocals, - stacksize or baseCode.co_stacksize, - flags or baseCode.co_flags, -+ code or baseCode.co_code, -+ consts or baseCode.co_consts, -+ names or baseCode.co_names, -+ varnames or baseCode.co_varnames, -+ filename or baseCode.co_filename, -+ name or baseCode.co_name, -+ firstlineno or baseCode.co_firstlineno, -+ lnotab or baseCode.co_lnotab, -+ freevars or baseCode.co_freevars, -+ cellvars or baseCode.co_cellvars) -+ elif hasattr(baseCode, 'co_posonlyargcount'): -+ # Python 3.8 -+ resc = CodeType(argcount or baseCode.co_argcount, -+ posonlyargcount or baseCode.co_posonlyargcount, -+ kwonlyargcount or baseCode.co_kwonlyargcount, -+ nlocals or baseCode.co_nlocals, -+ stacksize or baseCode.co_stacksize, -+ flags or baseCode.co_flags, - code or baseCode.co_code, - consts or baseCode.co_consts, - names or baseCode.co_names, -diff -x '*.pyc' -Naur shouldbe-0.1.2/should_be/tests/test_container_mixin.py shouldbe-0.1.2.patched/should_be/tests/test_container_mixin.py ---- shouldbe-0.1.2/should_be/tests/test_container_mixin.py 2019-03-01 06:38:16.000000000 +0100 -+++ shouldbe-0.1.2.patched/should_be/tests/test_container_mixin.py 2020-05-18 09:00:51.372531064 +0200 -@@ -7,31 +7,31 @@ - self.lst = [1, 2, 3] - - def test_should_include_iter(self): -- err_msg = (r'[a-zA-Z0-9.]+ should have included \[.+?\]' -+ err_msg = (r'[a-zA-Z0-9.()]+ should have included \[.+?\]' - r', but did not have items .+') -- self.assertRaisesRegexp(AssertionError, err_msg, -+ self.assertRaisesRegex(AssertionError, err_msg, - self.lst.should_include, [4]) - - self.lst.should_include([1, 2, 3]) - - def test_should_include_item(self): -- err_msg = (r'[a-zA-Z0-9.]+ should have included .+?' -+ err_msg = (r'[a-zA-Z0-9.()]+ should have included .+?' - r', but did not') -- self.assertRaisesRegexp(AssertionError, err_msg, -+ self.assertRaisesRegex(AssertionError, err_msg, - self.lst.should_include, 4) - - self.lst.should_include(3) - - def test_shouldnt_include_iter(self): - err_msg = 'should not have included' -- self.assertRaisesRegexp(AssertionError, err_msg, -+ self.assertRaisesRegex(AssertionError, err_msg, - self.lst.shouldnt_include, [2, 3]) - - self.lst.shouldnt_include([4, 5]) - - def test_shouldnt_include_item(self): - err_msg = 'should not have included' -- self.assertRaisesRegexp(AssertionError, err_msg, -+ self.assertRaisesRegex(AssertionError, err_msg, - self.lst.shouldnt_include, 3) - - self.lst.shouldnt_include(4) diff --git a/gnu/packages/patches/qemu-build-info-manual.patch b/gnu/packages/patches/qemu-build-info-manual.patch index d57b26ea00..c837040d45 100644 --- a/gnu/packages/patches/qemu-build-info-manual.patch +++ b/gnu/packages/patches/qemu-build-info-manual.patch @@ -1,90 +1,29 @@ -From 07303a0a4daa83a0555ac4abad7a5d65584307ad Mon Sep 17 00:00:00 2001 +From 2793f47c066ed396b38893c10533202fceb1a05f Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer <maxim.cournoyer@gmail.com> Date: Thu, 17 Sep 2020 13:28:19 -0400 -Subject: [PATCH] build: Build and install the info manual. +Subject: [PATCH] build: Build and install a Texinfo version of the manual. Take advantage of the Sphinx texinfo backend to generate a QEMU info -manual. The texinfo format allows for more structure and info readers +manual. The Texinfo format allows for more structure and info readers provide more advanced navigation capabilities compared to manpages readers. -* configure (infodir): Add the --infodir option, which allows +* configure (infodir): Add an --infodir option, which allows configuring the directory under which the info manuals are installed. -* docs/index.rst: Include the top level documents to prevent -warnings (treated as errors by sphinx-build). -* Makefile (sphinxdocs-info, $(MANUAL_BUILDDIR)/QEMU.texi)): New targets. -(info): Depend on sphinxdocs-info. -(install-doc): Install the info manual. +* docs/meson.build (texi, info): New targets. + +Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> --- - Makefile | 13 +++++++++++-- - configure | 7 +++++++ - docs/index.rst | 2 ++ - 3 files changed, 20 insertions(+), 2 deletions(-) + configure | 7 ++++++- + docs/meson.build | 21 +++++++++++++++++++++ + meson.build | 2 ++ + 3 files changed, 29 insertions(+), 1 deletion(-) -diff --git a/Makefile b/Makefile -index 13dd708c..da78612d 100644 ---- a/Makefile -+++ b/Makefile -@@ -864,12 +864,14 @@ endef - # Note that we deliberately do not install the "devel" manual: it is - # for QEMU developers, and not interesting to our users. - .PHONY: install-sphinxdocs --install-sphinxdocs: sphinxdocs -+install-sphinxdocs: sphinxdocs sphinxdocs-info - $(call install-manual,interop) - $(call install-manual,specs) - $(call install-manual,system) - $(call install-manual,tools) - $(call install-manual,user) -+ $(INSTALL_DIR) "$(DESTDIR)$(infodir)" -+ $(INSTALL_DATA) $(MANUAL_BUILDDIR)/QEMU.info "$(DESTDIR)$(infodir)" - - install-doc: $(DOCS) install-sphinxdocs - $(INSTALL_DIR) "$(DESTDIR)$(qemu_docdir)" -@@ -1067,6 +1069,13 @@ sphinxdocs: $(MANUAL_BUILDDIR)/devel/index.html \ - $(MANUAL_BUILDDIR)/tools/index.html \ - $(MANUAL_BUILDDIR)/user/index.html - -+# Build the complete info manual. -+.PHONE: sphinxdocs-info -+sphinxdocs-info: $(MANUAL_BUILDDIR)/QEMU.info -+ -+$(MANUAL_BUILDDIR)/QEMU.texi: $(call manual-deps,*) $(wildcard $(SRC_PATH)/docs/*.rst) -+ $(call build-manual,,texinfo) -+ - # Canned command to build a single manual - # Arguments: $1 = manual name, $2 = Sphinx builder ('html' or 'man') - # Note the use of different doctree for each (manual, builder) tuple; -@@ -1126,7 +1135,7 @@ docs/interop/qemu-ga-qapi.texi: qga/qapi-generated/qga-qapi-doc.texi - @cp -p $< $@ - - html: docs/interop/qemu-qmp-ref.html docs/interop/qemu-ga-ref.html sphinxdocs --info: docs/interop/qemu-qmp-ref.info docs/interop/qemu-ga-ref.info -+info: docs/interop/qemu-qmp-ref.info docs/interop/qemu-ga-ref.info sphinxdocs-info - pdf: docs/interop/qemu-qmp-ref.pdf docs/interop/qemu-ga-ref.pdf - txt: docs/interop/qemu-qmp-ref.txt docs/interop/qemu-ga-ref.txt - diff --git a/configure b/configure -index 2acc4d14..3691bd2e 100755 +index 18c26e0389..d1ab2c19d1 100755 --- a/configure +++ b/configure -@@ -415,6 +415,7 @@ LDFLAGS_SHARED="-shared" - modules="no" - module_upgrades="no" - prefix="/usr/local" -+infodir="\${prefix}/share/info" - mandir="\${prefix}/share/man" - datadir="\${prefix}/share" - firmwarepath="\${prefix}/share/qemu-firmware" -@@ -987,6 +988,7 @@ if test "$mingw32" = "yes" ; then - LIBS="-liberty $LIBS" - fi - prefix="c:/Program Files/QEMU" -+ infodir="\${prefix}" - mandir="\${prefix}" - datadir="\${prefix}" - qemu_docdir="\${prefix}" -@@ -1087,6 +1089,8 @@ for opt do +@@ -948,6 +948,8 @@ for opt do static="yes" QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS" ;; @@ -93,47 +32,89 @@ index 2acc4d14..3691bd2e 100755 --mandir=*) mandir="$optarg" ;; --bindir=*) bindir="$optarg" -@@ -1780,6 +1784,7 @@ Advanced options (experts only): +@@ -975,7 +977,7 @@ for opt do + --host=*|--build=*|\ + --disable-dependency-tracking|\ + --sbindir=*|--sharedstatedir=*|\ +- --oldincludedir=*|--datarootdir=*|--infodir=*|\ ++ --oldincludedir=*|--datarootdir=*|\ + --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*) + # These switches are silently ignored, for compatibility with + # autoconf-generated configure scripts. This allows QEMU's +@@ -1540,6 +1542,7 @@ includedir="${includedir:-$prefix/include}" + if test "$mingw32" = "yes" ; then + mandir="$prefix" + datadir="$prefix" ++ infodir="$prefix" + docdir="$prefix" + bindir="$prefix" + sysconfdir="$prefix" +@@ -1547,6 +1550,7 @@ if test "$mingw32" = "yes" ; then + else + mandir="${mandir:-$prefix/share/man}" + datadir="${datadir:-$prefix/share}" ++ infodir="${infodir:-$datadir/info}" + docdir="${docdir:-$prefix/share/doc}" + bindir="${bindir:-$prefix/bin}" + sysconfdir="${sysconfdir:-$prefix/etc}" +@@ -1683,6 +1687,7 @@ Advanced options (experts only): --smbd=SMBD use specified smbd [$smbd] --with-git=GIT use specified git [$git] --static enable static build [$static] + --infodir=PATH install info manual in PATH --mandir=PATH install man pages in PATH - --datadir=PATH install firmware in PATH$confsuffix - --docdir=PATH install documentation in PATH$confsuffix -@@ -6836,6 +6841,7 @@ echo "include directory $(eval echo $includedir)" - echo "config directory $(eval echo $sysconfdir)" - if test "$mingw32" = "no" ; then - echo "local state directory $(eval echo $local_statedir)" -+echo "Info manual directory $(eval echo $infodir)" - echo "Manual directory $(eval echo $mandir)" - echo "ELF interp prefix $interp_prefix" - else -@@ -7059,6 +7065,7 @@ echo "bindir=$bindir" >> $config_host_mak - echo "libdir=$libdir" >> $config_host_mak - echo "libexecdir=$libexecdir" >> $config_host_mak - echo "includedir=$includedir" >> $config_host_mak -+echo "infodir=$infodir" >> $config_host_mak - echo "mandir=$mandir" >> $config_host_mak - echo "sysconfdir=$sysconfdir" >> $config_host_mak - echo "qemu_confdir=$qemu_confdir" >> $config_host_mak -diff --git a/docs/index.rst b/docs/index.rst -index 763e3d04..4f155b51 100644 ---- a/docs/index.rst -+++ b/docs/index.rst -@@ -9,6 +9,7 @@ Welcome to QEMU's documentation! - .. toctree:: - :maxdepth: 2 - :caption: Contents: -+ :glob: + --datadir=PATH install firmware in PATH/$qemu_suffix + --localedir=PATH install translation in PATH/$qemu_suffix +diff --git a/docs/meson.build b/docs/meson.build +index ebd85d59f9..1243839461 100644 +--- a/docs/meson.build ++++ b/docs/meson.build +@@ -114,4 +114,25 @@ if build_docs + alias_target('sphinxdocs', sphinxdocs) + alias_target('html', sphinxdocs) + alias_target('man', sphinxmans) ++ ++ # Generate a Texinfo version of the QEMU manual. ++ makeinfo = find_program(['texi2any', 'makeinfo']) ++ if makeinfo.found() ++ sphinxtexi = custom_target( ++ 'QEMU manual generated texinfo source', ++ output: ['QEMU.texi', 'sphinxtexi.stamp'], ++ depfile: 'sphinxtexi.d', ++ command: [SPHINX_ARGS, '-Ddepfile=@DEPFILE@', ++ '-Ddepfile_stamp=@OUTPUT1@', '-b', 'texinfo', ++ meson.current_source_dir(), meson.current_build_dir()]) ++ sphinxinfo = custom_target( ++ 'QEMU info manual', ++ input: sphinxtexi, ++ output: 'QEMU.info', ++ install: true, ++ install_dir: get_option('infodir'), ++ command: [makeinfo, '@INPUT0@', '--output=@OUTPUT@']) ++ alias_target('texi', sphinxtexi) ++ alias_target('info', sphinxinfo) ++ endif + endif +diff --git a/meson.build b/meson.build +index e3386196ba..d64a125ad9 100644 +--- a/meson.build ++++ b/meson.build +@@ -32,6 +32,7 @@ endif + qemu_confdir = get_option('sysconfdir') / get_option('qemu_suffix') + qemu_datadir = get_option('datadir') / get_option('qemu_suffix') + qemu_docdir = get_option('docdir') / get_option('qemu_suffix') ++qemu_infodir = get_option('infodir') / get_option('qemu_suffix') + qemu_moddir = get_option('libdir') / get_option('qemu_suffix') - system/index - user/index -@@ -16,3 +17,4 @@ Welcome to QEMU's documentation! - interop/index - specs/index - devel/index -+ * + qemu_desktopdir = get_option('datadir') / 'applications' +@@ -1995,6 +1996,7 @@ else + summary_info += {'local state directory': 'queried at runtime'} + endif + summary_info += {'Doc directory': get_option('docdir')} ++summary_info += {'Info directory': get_option('infodir')} + summary_info += {'Build directory': meson.current_build_dir()} + summary_info += {'Source path': meson.current_source_dir()} + summary_info += {'GIT binary': config_host['GIT']} -- -2.28.0 +2.30.1 diff --git a/gnu/packages/patches/sdcc-disable-non-free-code.patch b/gnu/packages/patches/sdcc-disable-non-free-code.patch index ad9a3e7a9e..1c823c3c18 100644 --- a/gnu/packages/patches/sdcc-disable-non-free-code.patch +++ b/gnu/packages/patches/sdcc-disable-non-free-code.patch @@ -15,10 +15,10 @@ remove instructions that encourage the use of SDCC with non-free software. diff --git a/Makefile.common.in b/Makefile.common.in -index 412fd5a..81bbd61 100644 +index 926b761..0362fd5 100644 --- a/Makefile.common.in +++ b/Makefile.common.in -@@ -69,7 +69,6 @@ OPT_DISABLE_PACKIHX = @OPT_DISABLE_PACKIHX@ +@@ -71,7 +71,6 @@ OPT_DISABLE_PACKIHX = @OPT_DISABLE_PACKIHX@ OPT_DISABLE_SDBINUTILS = @OPT_DISABLE_SDBINUTILS@ OPT_DISABLE_SDCPP = @OPT_DISABLE_SDCPP@ OPT_DISABLE_UCSIM = @OPT_DISABLE_UCSIM@ @@ -27,7 +27,7 @@ index 412fd5a..81bbd61 100644 SLIB = $(top_builddir)/support/util diff --git a/Makefile.in b/Makefile.in -index f3b028d..cfdf06d 100644 +index 5485074..3071472 100644 --- a/Makefile.in +++ b/Makefile.in @@ -100,9 +100,6 @@ endif @@ -73,7 +73,7 @@ index f3b028d..cfdf06d 100644 # doc depends on latex and latex2html diff --git a/configure b/configure -index 43ccb6f..d345f54 100755 +index 4c2226b..b8a9251 100755 --- a/configure +++ b/configure @@ -632,7 +632,6 @@ LATEX @@ -84,7 +84,7 @@ index 43ccb6f..d345f54 100755 OPT_DISABLE_SDBINUTILS OPT_DISABLE_SDCDB OPT_DISABLE_SDCPP -@@ -659,10 +658,7 @@ OPT_DISABLE_R2K +@@ -661,10 +660,7 @@ OPT_DISABLE_R2K OPT_DISABLE_Z180 OPT_DISABLE_Z80 OPT_DISABLE_MCS51 @@ -95,7 +95,7 @@ index 43ccb6f..d345f54 100755 include_dir_suffix inclib_dir_suffix LIB_TYPE -@@ -780,7 +776,6 @@ enable_packihx +@@ -785,7 +781,6 @@ enable_packihx enable_sdcpp enable_sdcdb enable_sdbinutils @@ -103,7 +103,7 @@ index 43ccb6f..d345f54 100755 enable_doc enable_libgc ' -@@ -801,10 +796,7 @@ sdccconf_h_dir_separator +@@ -806,10 +801,7 @@ sdccconf_h_dir_separator LIB_TYPE inclib_dir_suffix include_dir_suffix @@ -114,7 +114,7 @@ index 43ccb6f..d345f54 100755 docdir' ac_subdirs_all='support/cpp support/packihx -@@ -812,9 +804,7 @@ sim/ucsim +@@ -817,9 +809,7 @@ sim/ucsim debugger/mcs51 support/sdbinutils device/lib/pic14 @@ -125,7 +125,7 @@ index 43ccb6f..d345f54 100755 # Initialize some variables set by options. ac_init_help= -@@ -1455,7 +1445,6 @@ Optional Features: +@@ -1473,7 +1463,6 @@ Optional Features: --disable-sdcpp Disables building sdcpp --disable-sdcdb Disables building sdcdb --disable-sdbinutils Disables configuring and building of sdbinutils @@ -133,7 +133,7 @@ index 43ccb6f..d345f54 100755 --enable-doc Enables building the documentation --enable-libgc Use the Bohem memory allocator. Lower runtime footprint. -@@ -1484,16 +1473,8 @@ Some influential environment variables: +@@ -1502,16 +1491,8 @@ Some influential environment variables: appended to datadir to define SDCC's include/lib directory include_dir_suffix appended to datadir to define SDCC's include directory @@ -150,7 +150,7 @@ index 43ccb6f..d345f54 100755 docdir documentation installation directory Use these variables to override the choices made by `configure' or to help -@@ -7134,19 +7115,6 @@ if test "${include_dir_suffix}" = ""; then +@@ -7156,19 +7137,6 @@ if test "${include_dir_suffix}" = ""; then include_dir_suffix="${inclib_dir_suffix}/include" fi @@ -170,7 +170,7 @@ index 43ccb6f..d345f54 100755 # lib_dir_suffix: # *nix default: "sdcc/lib" -@@ -7154,13 +7122,6 @@ if test "${lib_dir_suffix}" = ""; then +@@ -7176,13 +7144,6 @@ if test "${lib_dir_suffix}" = ""; then lib_dir_suffix="${inclib_dir_suffix}/lib" fi @@ -184,7 +184,7 @@ index 43ccb6f..d345f54 100755 # docdir: # *nix default: "${datadir}/sdcc/doc" -@@ -7327,24 +7288,6 @@ cat >>confdefs.h <<_ACEOF +@@ -7349,24 +7310,6 @@ cat >>confdefs.h <<_ACEOF #define INCLUDE_DIR_SUFFIX DIR_SEPARATOR_STRING "${norm_inc_dir_suffix}" _ACEOF @@ -209,7 +209,7 @@ index 43ccb6f..d345f54 100755 norm_lib_dir_suffix=${lib_dir_suffix} case ":$norm_lib_dir_suffix:" in -@@ -7364,24 +7307,6 @@ cat >>confdefs.h <<_ACEOF +@@ -7386,24 +7329,6 @@ cat >>confdefs.h <<_ACEOF #define LIB_DIR_SUFFIX DIR_SEPARATOR_STRING "${norm_lib_dir_suffix}" _ACEOF @@ -234,7 +234,7 @@ index 43ccb6f..d345f54 100755 # relative paths for _lcl_i in expanded_bindir:expanded_datadir:bin2data_dir; do -@@ -8439,28 +8364,6 @@ _ACEOF +@@ -8513,28 +8438,6 @@ _ACEOF @@ -263,7 +263,7 @@ index 43ccb6f..d345f54 100755 # Check whether --enable-doc was given. if test "${enable_doc+set}" = set; then : -@@ -8855,20 +8758,12 @@ if test $OPT_DISABLE_PIC14 = 0; then +@@ -8929,20 +8832,12 @@ if test $OPT_DISABLE_PIC14 = 0; then test $OPT_DISABLE_DEVICE_LIB = 0 && subdirs="$subdirs device/lib/pic14" @@ -283,8 +283,8 @@ index 43ccb6f..d345f54 100755 - fi - if test $OPT_DISABLE_Z80 = 0 || test $OPT_DISABLE_Z180 = 0 || test $OPT_DISABLE_R2K = 0 || test $OPT_DISABLE_R3KA = 0 || test $OPT_DISABLE_GBZ80 = 0 || test $OPT_DISABLE_TLCS90 = 0 || test $OPT_DISABLE_EZ80_Z80 = 0; then -@@ -8945,15 +8840,9 @@ fi + if test $OPT_DISABLE_Z80 = 0 || test $OPT_DISABLE_Z180 = 0 || test $OPT_DISABLE_R2K = 0 || test $OPT_DISABLE_R2KA = 0 || test $OPT_DISABLE_R3KA = 0 || test $OPT_DISABLE_GBZ80 = 0 || test $OPT_DISABLE_TLCS90 = 0 || test $OPT_DISABLE_EZ80_Z80 = 0 || test $OPT_DISABLE_Z80N = 0; then +@@ -9019,15 +8914,9 @@ fi test $OPT_DISABLE_DEVICE_LIB = 0 && ac_config_files="$ac_config_files device/lib/Makefile" @@ -300,7 +300,7 @@ index 43ccb6f..d345f54 100755 cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure -@@ -9692,7 +9581,6 @@ do +@@ -9768,7 +9657,6 @@ do "device/lib/pdk15-stack-auto/Makefile") CONFIG_FILES="$CONFIG_FILES device/lib/pdk15-stack-auto/Makefile" ;; "sdas/aspdk16/Makefile") CONFIG_FILES="$CONFIG_FILES sdas/aspdk16/Makefile" ;; "device/lib/Makefile") CONFIG_FILES="$CONFIG_FILES device/lib/Makefile" ;; @@ -308,7 +308,7 @@ index 43ccb6f..d345f54 100755 "main.mk") CONFIG_FILES="$CONFIG_FILES main.mk:main_in.mk" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "device/include/Makefile") CONFIG_FILES="$CONFIG_FILES device/include/Makefile" ;; -@@ -9704,7 +9592,6 @@ do +@@ -9780,7 +9668,6 @@ do "support/regression/ports/host/spec.mk") CONFIG_FILES="$CONFIG_FILES support/regression/ports/host/spec.mk:support/regression/ports/host/spec.mk.in" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "Makefile.common") CONFIG_FILES="$CONFIG_FILES Makefile.common:Makefile.common.in" ;; @@ -316,7 +316,7 @@ index 43ccb6f..d345f54 100755 *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac -@@ -10513,54 +10400,6 @@ esac +@@ -10589,54 +10476,6 @@ esac incPath3=`echo "$incPath3" | sed 's,\\\\\\\\,\\\\,g'` @@ -371,7 +371,7 @@ index 43ccb6f..d345f54 100755 libPath1=`echo "/${prefix2data_dir}/${norm_lib_dir_suffix}" | sed 's,/\./,/,g'` case ":$libPath1:" in -@@ -10610,54 +10449,6 @@ esac +@@ -10686,54 +10525,6 @@ esac libPath3=`echo "$libPath3" | sed 's,\\\\\\\\,\\\\,g'` @@ -426,7 +426,7 @@ index 43ccb6f..d345f54 100755 { $as_echo "$as_me:${as_lineno-$LINENO}: result: sdcc ${VERSION} is now configured for -@@ -10694,7 +10485,6 @@ sdcc ${VERSION} is now configured for +@@ -10772,7 +10563,6 @@ sdcc ${VERSION} is now configured for pdk15 ${enable_pdk15_port} pdk16 ${enable_pdk16_port} @@ -434,7 +434,7 @@ index 43ccb6f..d345f54 100755 Disable packihx: ${OPT_DISABLE_PACKIHX} Disable ucsim: ${OPT_DISABLE_UCSIM} Disable device lib: ${OPT_DISABLE_DEVICE_LIB} -@@ -10709,9 +10499,6 @@ sdcc ${VERSION} is now configured for +@@ -10787,9 +10577,6 @@ sdcc ${VERSION} is now configured for include/library files: ${datadir}/${inclib_dir_suffix} include files: ${datadir}/${include_dir_suffix} library files: ${datadir}/${lib_dir_suffix} @@ -444,7 +444,7 @@ index 43ccb6f..d345f54 100755 documentation: ${docdir} prefix: ${prefix} -@@ -10723,15 +10510,9 @@ sdcc ${VERSION} is now configured for +@@ -10801,15 +10588,9 @@ sdcc ${VERSION} is now configured for include files: ${incPath1} path(argv[0])${incPath2} ${incPath3} @@ -460,7 +460,7 @@ index 43ccb6f..d345f54 100755 " >&5 $as_echo " sdcc ${VERSION} is now configured for -@@ -10769,7 +10550,6 @@ sdcc ${VERSION} is now configured for +@@ -10849,7 +10630,6 @@ sdcc ${VERSION} is now configured for pdk15 ${enable_pdk15_port} pdk16 ${enable_pdk16_port} @@ -468,7 +468,7 @@ index 43ccb6f..d345f54 100755 Disable packihx: ${OPT_DISABLE_PACKIHX} Disable ucsim: ${OPT_DISABLE_UCSIM} Disable device lib: ${OPT_DISABLE_DEVICE_LIB} -@@ -10784,9 +10564,6 @@ sdcc ${VERSION} is now configured for +@@ -10864,9 +10644,6 @@ sdcc ${VERSION} is now configured for include/library files: ${datadir}/${inclib_dir_suffix} include files: ${datadir}/${include_dir_suffix} library files: ${datadir}/${lib_dir_suffix} @@ -478,7 +478,7 @@ index 43ccb6f..d345f54 100755 documentation: ${docdir} prefix: ${prefix} -@@ -10798,14 +10575,8 @@ sdcc ${VERSION} is now configured for +@@ -10878,14 +10655,8 @@ sdcc ${VERSION} is now configured for include files: ${incPath1} path(argv[0])${incPath2} ${incPath3} @@ -494,10 +494,10 @@ index 43ccb6f..d345f54 100755 " >&6; } # End of configure/configure.in diff --git a/configure.ac b/configure.ac -index 2185793..76ab155 100644 +index 455fee1..48e0a20 100644 --- a/configure.ac +++ b/configure.ac -@@ -544,19 +544,6 @@ if test "${include_dir_suffix}" = ""; then +@@ -548,19 +548,6 @@ if test "${include_dir_suffix}" = ""; then include_dir_suffix="${inclib_dir_suffix}/include" fi @@ -517,7 +517,7 @@ index 2185793..76ab155 100644 # lib_dir_suffix: # *nix default: "sdcc/lib" AC_ARG_VAR([lib_dir_suffix], [appended to datadir to define SDCC's library root directory]) -@@ -564,13 +551,6 @@ if test "${lib_dir_suffix}" = ""; then +@@ -568,13 +555,6 @@ if test "${lib_dir_suffix}" = ""; then lib_dir_suffix="${inclib_dir_suffix}/lib" fi @@ -531,7 +531,7 @@ index 2185793..76ab155 100644 # docdir: # *nix default: "${datadir}/sdcc/doc" AC_ARG_VAR([docdir], [documentation installation directory]) -@@ -611,19 +591,11 @@ norm_inc_dir_suffix=${include_dir_suffix} +@@ -615,19 +595,11 @@ norm_inc_dir_suffix=${include_dir_suffix} adl_NORMALIZE_PATH([norm_inc_dir_suffix], [$sdccconf_h_dir_separator]) AC_DEFINE_UNQUOTED(INCLUDE_DIR_SUFFIX, DIR_SEPARATOR_STRING "${norm_inc_dir_suffix}", [XXX]) @@ -551,7 +551,7 @@ index 2185793..76ab155 100644 # relative paths adl_COMPUTE_RELATIVE_PATHS([expanded_bindir:expanded_datadir:bin2data_dir]) -@@ -797,7 +769,6 @@ AC_DO_DISABLER(packihx, PACKIHX, [Disables building packihx]) +@@ -803,7 +775,6 @@ AC_DO_DISABLER(packihx, PACKIHX, [Disables building packihx]) AC_DO_DISABLER(sdcpp, SDCPP, [Disables building sdcpp]) AC_DO_DISABLER(sdcdb, SDCDB, [Disables building sdcdb]) AC_DO_DISABLER(sdbinutils, SDBINUTILS, [Disables configuring and building of sdbinutils]) @@ -559,7 +559,7 @@ index 2185793..76ab155 100644 AC_DO_ENABLER(doc, DOC, [Enables building the documentation]) AC_CHECK_PROG([LYX], [lyx], [lyx], [:]) -@@ -868,16 +839,10 @@ if test $OPT_DISABLE_PIC14 = 0; then +@@ -874,16 +845,10 @@ if test $OPT_DISABLE_PIC14 = 0; then AC_CONFIG_FILES(src/pic14/Makefile) test $OPT_DISABLE_DEVICE_LIB = 0 && AC_CONFIG_SUBDIRS(device/lib/pic14) fi @@ -574,9 +574,9 @@ index 2185793..76ab155 100644 - test $OPT_DISABLE_DEVICE_LIB = 0 && AC_CONFIG_SUBDIRS(device/non-free/lib/pic16) -fi - if test $OPT_DISABLE_Z80 = 0 || test $OPT_DISABLE_Z180 = 0 || test $OPT_DISABLE_R2K = 0 || test $OPT_DISABLE_R3KA = 0 || test $OPT_DISABLE_GBZ80 = 0 || test $OPT_DISABLE_TLCS90 = 0 || test $OPT_DISABLE_EZ80_Z80 = 0; then + if test $OPT_DISABLE_Z80 = 0 || test $OPT_DISABLE_Z180 = 0 || test $OPT_DISABLE_R2K = 0 || test $OPT_DISABLE_R2KA = 0 || test $OPT_DISABLE_R3KA = 0 || test $OPT_DISABLE_GBZ80 = 0 || test $OPT_DISABLE_TLCS90 = 0 || test $OPT_DISABLE_EZ80_Z80 = 0 || test $OPT_DISABLE_Z80N = 0; then AC_CONFIG_FILES([src/z80/Makefile]) -@@ -939,7 +904,6 @@ fi +@@ -947,7 +912,6 @@ fi test $OPT_DISABLE_DEVICE_LIB = 0 && AC_CONFIG_FILES([device/lib/Makefile]) @@ -584,7 +584,7 @@ index 2185793..76ab155 100644 AC_CONFIG_FILES([main.mk:main_in.mk src/Makefile -@@ -953,9 +917,6 @@ support/regression/ports/host/spec.mk:support/regression/ports/host/spec.mk.in +@@ -961,9 +925,6 @@ support/regression/ports/host/spec.mk:support/regression/ports/host/spec.mk.in Makefile Makefile.common:Makefile.common.in ]) @@ -594,7 +594,7 @@ index 2185793..76ab155 100644 AC_OUTPUT # I found no better place -@@ -973,16 +934,10 @@ adl_NORMALIZE_PATH_MSG(/${prefix2bin_dir}, [binPath], [ +@@ -981,16 +942,10 @@ adl_NORMALIZE_PATH_MSG(/${prefix2bin_dir}, [binPath], [ adl_NORMALIZE_PATH_MSG(/${prefix2data_dir}/${norm_inc_dir_suffix}, [incPath1], [$dirch]) adl_NORMALIZE_PATH_MSG(/${bin2data_dir}/${norm_inc_dir_suffix}, [incPath2], [$dirch]) adl_NORMALIZE_PATH_MSG(${expanded_datadir}/${norm_inc_dir_suffix}, [incPath3], [$dirch]) @@ -611,7 +611,7 @@ index 2185793..76ab155 100644 AC_MSG_RESULT([ sdcc ${VERSION} is now configured for -@@ -1020,7 +975,6 @@ sdcc ${VERSION} is now configured for +@@ -1030,7 +985,6 @@ sdcc ${VERSION} is now configured for pdk15 ${enable_pdk15_port} pdk16 ${enable_pdk16_port} @@ -619,7 +619,7 @@ index 2185793..76ab155 100644 Disable packihx: ${OPT_DISABLE_PACKIHX} Disable ucsim: ${OPT_DISABLE_UCSIM} Disable device lib: ${OPT_DISABLE_DEVICE_LIB} -@@ -1035,9 +989,6 @@ sdcc ${VERSION} is now configured for +@@ -1045,9 +999,6 @@ sdcc ${VERSION} is now configured for include/library files: ${datadir}/${inclib_dir_suffix} include files: ${datadir}/${include_dir_suffix} library files: ${datadir}/${lib_dir_suffix} @@ -629,7 +629,7 @@ index 2185793..76ab155 100644 documentation: ${docdir} prefix: ${prefix} -@@ -1049,14 +1000,8 @@ sdcc ${VERSION} is now configured for +@@ -1059,14 +1010,8 @@ sdcc ${VERSION} is now configured for include files: ${incPath1} path(argv[[0]])${incPath2} ${incPath3} @@ -675,7 +675,7 @@ index 019fe0f..da3389d 100644 ############################################################ # Common actions diff --git a/device/lib/pic14/Makefile.in b/device/lib/pic14/Makefile.in -index 39b6cb0..ae3e37b 100644 +index 039c0cb..90510fd 100644 --- a/device/lib/pic14/Makefile.in +++ b/device/lib/pic14/Makefile.in @@ -335,13 +335,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR)) @@ -704,7 +704,7 @@ index 39b6cb0..ae3e37b 100644 # extensions generated by the build process CLEAN_EXTENSIONS = .asm .lst .sym .d .p .g .v .adb diff --git a/device/lib/pic14/libc/Makefile.in b/device/lib/pic14/libc/Makefile.in -index 0efeeb0..d4dd8e6 100644 +index 1283cbb..70e82d0 100644 --- a/device/lib/pic14/libc/Makefile.in +++ b/device/lib/pic14/libc/Makefile.in @@ -878,13 +878,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR)) @@ -733,7 +733,7 @@ index 0efeeb0..d4dd8e6 100644 # extensions generated by the build process CLEAN_EXTENSIONS = .asm .lst .sym .d .p .g .v .adb diff --git a/device/lib/pic14/libm/Makefile.in b/device/lib/pic14/libm/Makefile.in -index f0dc9ca..98ed2cf 100644 +index 409835d..e9fdef8 100644 --- a/device/lib/pic14/libm/Makefile.in +++ b/device/lib/pic14/libm/Makefile.in @@ -511,13 +511,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR)) @@ -762,7 +762,7 @@ index f0dc9ca..98ed2cf 100644 # extensions generated by the build process CLEAN_EXTENSIONS = .asm .lst .sym .d .p .g .v .adb diff --git a/device/lib/pic14/libsdcc/enhanced-no-xinst/Makefile.in b/device/lib/pic14/libsdcc/enhanced-no-xinst/Makefile.in -index 098ec94..d1240ba 100644 +index c82f7ba..780fa77 100644 --- a/device/lib/pic14/libsdcc/enhanced-no-xinst/Makefile.in +++ b/device/lib/pic14/libsdcc/enhanced-no-xinst/Makefile.in @@ -518,13 +518,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR)) @@ -791,7 +791,7 @@ index 098ec94..d1240ba 100644 # extensions generated by the build process CLEAN_EXTENSIONS = .asm .lst .sym .d .p .g .v .adb diff --git a/device/lib/pic14/libsdcc/enhanced/Makefile.in b/device/lib/pic14/libsdcc/enhanced/Makefile.in -index d2dba9c..0857601 100644 +index 33b8299..f4e0398 100644 --- a/device/lib/pic14/libsdcc/enhanced/Makefile.in +++ b/device/lib/pic14/libsdcc/enhanced/Makefile.in @@ -518,13 +518,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR)) @@ -820,7 +820,7 @@ index d2dba9c..0857601 100644 # extensions generated by the build process CLEAN_EXTENSIONS = .asm .lst .sym .d .p .g .v .adb diff --git a/device/lib/pic14/libsdcc/regular/Makefile.in b/device/lib/pic14/libsdcc/regular/Makefile.in -index 3c9bccd..9430fb5 100644 +index 6586b7d..7010287 100644 --- a/device/lib/pic14/libsdcc/regular/Makefile.in +++ b/device/lib/pic14/libsdcc/regular/Makefile.in @@ -511,13 +511,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR)) @@ -875,7 +875,7 @@ index 01ad950..62839b9 100644 clean-local: diff --git a/device/lib/pic16/Makefile.in b/device/lib/pic16/Makefile.in -index 15d2e1d..9664ad4 100644 +index e4e3abb..730066b 100644 --- a/device/lib/pic16/Makefile.in +++ b/device/lib/pic16/Makefile.in @@ -87,10 +87,7 @@ PRE_UNINSTALL = : @@ -915,7 +915,7 @@ index 15d2e1d..9664ad4 100644 all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive diff --git a/device/lib/pic16/configure b/device/lib/pic16/configure -index c8f5b98..76f93a8 100755 +index ed8ad06..65baa93 100755 --- a/device/lib/pic16/configure +++ b/device/lib/pic16/configure @@ -3657,7 +3657,6 @@ fi @@ -942,7 +942,7 @@ index 3966c11..cdbffc7 100644 # Checks for header files. diff --git a/device/lib/pic16/debug/Makefile.in b/device/lib/pic16/debug/Makefile.in -index df593e3..8cb5137 100644 +index 8d5eb80..9dd8bb2 100644 --- a/device/lib/pic16/debug/Makefile.in +++ b/device/lib/pic16/debug/Makefile.in @@ -88,10 +88,7 @@ PRE_UNINSTALL = : @@ -982,7 +982,7 @@ index df593e3..8cb5137 100644 .SUFFIXES: diff --git a/device/lib/pic16/libc/Makefile.in b/device/lib/pic16/libc/Makefile.in -index 85bec90..c0ea488 100644 +index 659db72..cbb73bf 100644 --- a/device/lib/pic16/libc/Makefile.in +++ b/device/lib/pic16/libc/Makefile.in @@ -88,10 +88,7 @@ PRE_UNINSTALL = : @@ -1022,7 +1022,7 @@ index 85bec90..c0ea488 100644 .SUFFIXES: diff --git a/device/lib/pic16/libio/Makefile.in b/device/lib/pic16/libio/Makefile.in -index 06fff29..78fe388 100644 +index 128ffcc..b298c7c 100644 --- a/device/lib/pic16/libio/Makefile.in +++ b/device/lib/pic16/libio/Makefile.in @@ -481,10 +481,7 @@ POST_UNINSTALL = : @@ -1107,7 +1107,7 @@ index 211604e..e8896bf 100755 include \$(top_srcdir)/Makefile.common diff --git a/device/lib/pic16/libm/Makefile.in b/device/lib/pic16/libm/Makefile.in -index 6728a39..495459e 100644 +index af29662..05f1c24 100644 --- a/device/lib/pic16/libm/Makefile.in +++ b/device/lib/pic16/libm/Makefile.in @@ -88,10 +88,7 @@ PRE_UNINSTALL = : @@ -1147,7 +1147,7 @@ index 6728a39..495459e 100644 .SUFFIXES: diff --git a/device/lib/pic16/libsdcc/Makefile.in b/device/lib/pic16/libsdcc/Makefile.in -index 331aea0..63565be 100644 +index d384631..01129e3 100644 --- a/device/lib/pic16/libsdcc/Makefile.in +++ b/device/lib/pic16/libsdcc/Makefile.in @@ -88,10 +88,7 @@ PRE_UNINSTALL = : @@ -1187,7 +1187,7 @@ index 331aea0..63565be 100644 .SUFFIXES: diff --git a/device/lib/pic16/startup/Makefile.in b/device/lib/pic16/startup/Makefile.in -index 2e59220..b213866 100644 +index 6169096..0172a25 100644 --- a/device/lib/pic16/startup/Makefile.in +++ b/device/lib/pic16/startup/Makefile.in @@ -89,10 +89,7 @@ PRE_UNINSTALL = : @@ -1227,7 +1227,7 @@ index 2e59220..b213866 100644 .SUFFIXES: diff --git a/doc/INSTALL.txt b/doc/INSTALL.txt -index 76a6f42..0f92463 100644 +index d630b99..8cd747f 100644 --- a/doc/INSTALL.txt +++ b/doc/INSTALL.txt @@ -18,9 +18,7 @@ To install: @@ -1279,7 +1279,7 @@ index 88f8c98..a36db81 100644 See: diff --git a/doc/sdccman.lyx b/doc/sdccman.lyx -index d18a509..b95bf61 100644 +index c8f8e73..e4afb0c 100644 --- a/doc/sdccman.lyx +++ b/doc/sdccman.lyx @@ -1092,54 +1092,9 @@ A possible exception are pic device libraries and header files which are @@ -1340,7 +1340,7 @@ index d18a509..b95bf61 100644 \end_layout \begin_layout Itemize -@@ -2870,18 +2825,6 @@ include_dir_suffix environment variable, see table below +@@ -2890,18 +2845,6 @@ include_dir_suffix environment variable, see table below \end_inset @@ -1359,7 +1359,7 @@ index d18a509..b95bf61 100644 \begin_inset space ~ \end_inset -@@ -2894,22 +2837,6 @@ lib_dir_suffix environment variable, see table below +@@ -2914,22 +2857,6 @@ lib_dir_suffix environment variable, see table below \end_inset @@ -1382,7 +1382,7 @@ index d18a509..b95bf61 100644 \begin_inset space ~ \end_inset -@@ -3408,7 +3335,7 @@ These defaults are: +@@ -3428,7 +3355,7 @@ These defaults are: \begin_layout Standard \align center \begin_inset Tabular @@ -1391,7 +1391,7 @@ index d18a509..b95bf61 100644 <features tabularvalignment="middle"> <column alignment="block" valignment="top" width="0in"> <column alignment="block" valignment="top" width="0in"> -@@ -3692,68 +3619,6 @@ sdcc/include +@@ -3712,68 +3639,6 @@ sdcc/include include \end_layout @@ -1460,7 +1460,7 @@ index d18a509..b95bf61 100644 \end_inset </cell> </row> -@@ -3764,7 +3629,7 @@ lib +@@ -3784,7 +3649,7 @@ lib \begin_layout Plain Layout \emph on @@ -1469,7 +1469,7 @@ index d18a509..b95bf61 100644 \end_layout \end_inset -@@ -3773,7 +3638,7 @@ NON_FREE_LIB_DIR_SUFFIX +@@ -3793,7 +3658,7 @@ NON_FREE_LIB_DIR_SUFFIX \begin_inset Text \begin_layout Plain Layout @@ -1478,7 +1478,7 @@ index d18a509..b95bf61 100644 \end_layout \end_inset -@@ -3782,7 +3647,7 @@ sdcc/non-free/lib +@@ -3802,7 +3667,7 @@ sdcc/non-free/lib \begin_inset Text \begin_layout Plain Layout @@ -1487,7 +1487,7 @@ index d18a509..b95bf61 100644 \end_layout \end_inset -@@ -4181,20 +4046,6 @@ include +@@ -4201,20 +4066,6 @@ include \end_inset @@ -1508,7 +1508,7 @@ index d18a509..b95bf61 100644 \backslash \begin_inset Newline newline -@@ -4209,20 +4060,6 @@ lib +@@ -4229,20 +4080,6 @@ lib \end_inset @@ -1529,7 +1529,7 @@ index d18a509..b95bf61 100644 \backslash \begin_inset Newline newline -@@ -4403,20 +4240,6 @@ include +@@ -4423,20 +4260,6 @@ include \end_inset @@ -1550,7 +1550,7 @@ index d18a509..b95bf61 100644 \backslash \begin_inset Newline newline -@@ -4431,20 +4254,6 @@ lib +@@ -4451,20 +4274,6 @@ lib \end_inset @@ -1571,7 +1571,7 @@ index d18a509..b95bf61 100644 \backslash \begin_inset Newline newline -@@ -4541,7 +4350,7 @@ Install paths +@@ -4561,7 +4370,7 @@ Install paths \begin_layout Standard \align center \begin_inset Tabular @@ -1580,7 +1580,7 @@ index d18a509..b95bf61 100644 <features tabularvalignment="middle"> <column alignment="left" valignment="top"> <column alignment="left" valignment="top" width="4.5cm"> -@@ -4697,64 +4506,6 @@ include +@@ -4717,64 +4526,6 @@ include <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> \begin_inset Text @@ -1645,7 +1645,7 @@ index d18a509..b95bf61 100644 \begin_layout Plain Layout Library file** \end_layout -@@ -4804,64 +4555,6 @@ sdcc +@@ -4824,64 +4575,6 @@ sdcc lib \end_layout @@ -1710,7 +1710,7 @@ index d18a509..b95bf61 100644 \end_inset </cell> </row> -@@ -5184,7 +4877,7 @@ $PATH +@@ -5204,7 +4897,7 @@ $PATH \begin_layout Standard \align center \begin_inset Tabular @@ -1719,7 +1719,7 @@ index d18a509..b95bf61 100644 <features tabularvalignment="middle"> <column alignment="block" valignment="top" width="0.5cm"> <column alignment="block" valignment="top" width="4.8cm"> -@@ -5462,203 +5155,13 @@ include +@@ -5482,203 +5175,13 @@ include </cell> </row> <row> @@ -1924,7 +1924,7 @@ index d18a509..b95bf61 100644 \end_inset </cell> <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none"> -@@ -5674,21 +5177,13 @@ $DATADIR/ +@@ -5694,21 +5197,13 @@ $DATADIR/ \end_inset @@ -1947,7 +1947,7 @@ index d18a509..b95bf61 100644 \begin_inset Text \begin_layout Plain Layout -@@ -5696,7 +5191,7 @@ $INCLUDE_DIR_SUFFIX +@@ -5716,7 +5211,7 @@ $INCLUDE_DIR_SUFFIX \begin_inset Newline newline \end_inset @@ -1956,7 +1956,7 @@ index d18a509..b95bf61 100644 \end_layout \end_inset -@@ -5794,7 +5289,7 @@ model +@@ -5814,7 +5309,7 @@ model \begin_layout Standard \align center \begin_inset Tabular @@ -1965,7 +1965,7 @@ index d18a509..b95bf61 100644 <features tabularvalignment="middle"> <column alignment="block" valignment="top" width="0.5cm"> <column alignment="block" valignment="top" width="4.5cm"> -@@ -6074,7 +5569,7 @@ lib +@@ -6094,7 +5589,7 @@ lib </cell> </row> <row> @@ -1974,7 +1974,7 @@ index d18a509..b95bf61 100644 \begin_inset Text \begin_layout Plain Layout -@@ -6083,7 +5578,7 @@ lib +@@ -6103,7 +5598,7 @@ lib \end_inset </cell> @@ -1983,7 +1983,7 @@ index d18a509..b95bf61 100644 \begin_inset Text \begin_layout Plain Layout -@@ -6114,7 +5609,7 @@ $LIB_DIR_SUFFIX/ +@@ -6134,7 +5629,7 @@ $LIB_DIR_SUFFIX/ \end_inset </cell> @@ -1992,7 +1992,7 @@ index d18a509..b95bf61 100644 \begin_inset Text \begin_layout Plain Layout -@@ -6129,7 +5624,7 @@ lib/ +@@ -6149,7 +5644,7 @@ lib/ \end_inset </cell> @@ -2001,7 +2001,7 @@ index d18a509..b95bf61 100644 \begin_inset Text \begin_layout Plain Layout -@@ -6152,308 +5647,6 @@ lib +@@ -6172,308 +5667,6 @@ lib <model> \end_layout @@ -2310,7 +2310,7 @@ index d18a509..b95bf61 100644 \end_inset </cell> </row> -@@ -8717,14 +7910,6 @@ In <installdir>/share/sdcc/include +@@ -8737,14 +7930,6 @@ In <installdir>/share/sdcc/include the include files \end_layout @@ -2325,7 +2325,7 @@ index d18a509..b95bf61 100644 \begin_layout Standard In <installdir>/share/sdcc/lib \end_layout -@@ -8733,14 +7918,6 @@ In <installdir>/share/sdcc/lib +@@ -8753,14 +7938,6 @@ In <installdir>/share/sdcc/lib the src and target subdirectories with the precompiled relocatables. \end_layout @@ -2340,7 +2340,7 @@ index d18a509..b95bf61 100644 \begin_layout Standard In <installdir>/share/sdcc/doc \end_layout -@@ -15254,66 +14431,6 @@ splint +@@ -15274,66 +14451,6 @@ splint myprogram.c \end_layout @@ -2407,7 +2407,7 @@ index d18a509..b95bf61 100644 \begin_layout Subsection Linker Options \begin_inset Index idx -@@ -44656,66 +43773,9 @@ http://sourceforge.net/projects/gputils +@@ -44653,66 +43770,9 @@ http://sourceforge.net/projects/gputils Pic device specific header and c source files are automatically generated from MPLAB include files, which are published by Microchip with a special requirement that they are only to be used with authentic Microchip devices. @@ -2477,7 +2477,7 @@ index d18a509..b95bf61 100644 \begin_inset Newline newline \end_inset -@@ -44769,7 +43829,7 @@ Makefile +@@ -44766,7 +43826,7 @@ Makefile \begin_inset space ~ \end_inset @@ -2486,7 +2486,7 @@ index d18a509..b95bf61 100644 \begin_inset Newline newline \end_inset -@@ -44863,7 +43923,7 @@ Makefile +@@ -44860,7 +43920,7 @@ Makefile \begin_inset space ~ \end_inset @@ -2495,7 +2495,7 @@ index d18a509..b95bf61 100644 \begin_inset Newline newline \end_inset -@@ -45145,47 +44205,6 @@ status collapsed +@@ -45142,47 +44202,6 @@ status collapsed \begin_layout Plain Layout @@ -2543,7 +2543,7 @@ index d18a509..b95bf61 100644 \backslash / \end_layout -@@ -46058,47 +45077,6 @@ status collapsed +@@ -46055,47 +45074,6 @@ status collapsed -all-callee-saves \end_layout @@ -2591,7 +2591,7 @@ index d18a509..b95bf61 100644 \begin_layout Subsection Port Specific Options \begin_inset Index idx -@@ -47375,188 +46353,6 @@ Linker +@@ -47372,188 +46350,6 @@ Linker \end_inset @@ -2780,7 +2780,7 @@ index d18a509..b95bf61 100644 \end_layout \begin_layout Subsection -@@ -48252,66 +47048,9 @@ name "subsec:PIC16_Header-Files-and-Libraries" +@@ -48249,66 +47045,9 @@ name "subsec:PIC16_Header-Files-and-Libraries" Pic device specific header and c source files are automatically generated from MPLAB include files, which are published by Microchip with a special requirement that they are only to be used with authentic Microchip devices. @@ -2850,7 +2850,7 @@ index d18a509..b95bf61 100644 \end_layout \begin_layout Subsection -@@ -48557,195 +47296,6 @@ vfprintf.c +@@ -48554,195 +47293,6 @@ vfprintf.c should also work, but is untested. \end_layout @@ -3046,7 +3046,7 @@ index d18a509..b95bf61 100644 \begin_layout Subsection Memory Models \end_layout -@@ -73531,6 +72081,12 @@ This document was initially written by Sandeep Dutta and updated by SDCC +@@ -73528,6 +72078,12 @@ This document was initially written by Sandeep Dutta and updated by SDCC developers. \end_layout @@ -3060,10 +3060,10 @@ index d18a509..b95bf61 100644 All product names mentioned herein may be trademarks \begin_inset Index idx diff --git a/sdcc.spec b/sdcc.spec -index b8baa92..be90a84 100644 +index 3609ffe..4b4a5cb 100644 --- a/sdcc.spec +++ b/sdcc.spec -@@ -83,15 +83,15 @@ rm -rf $RPM_BUILD_ROOT +@@ -89,9 +89,7 @@ rm -rf $RPM_BUILD_ROOT %files common %defattr(-,root,root) /usr/share/sdcc/include @@ -3073,12 +3073,13 @@ index b8baa92..be90a84 100644 %files doc %defattr(-,root,root) - %doc %{_defaultdocdir} - +@@ -100,6 +98,8 @@ rm -rf $RPM_BUILD_ROOT %changelog + * Sat Feb 20 2021 - pkk AT spth.de + - version updated to 4.0.0 +* Tue Dec 08 2020 - simon AT simonsouth.net +- removed non-free include and lib directories - * Sat Jan 18 2029 - pkk AT spth.de + * Sat Jan 18 2020 - pkk AT spth.de - version updated to 4.0.0 * Fri Apr 05 2019 - krauseph AT informatik.uni-freiburg.de diff --git a/sdcc_vc.h.in b/sdcc_vc.h.in @@ -3095,10 +3096,10 @@ index 06d8cca..736c325 100644 #define BIN2DATA_DIR "\\.." #define PREFIX2BIN_DIR "\\bin" diff --git a/sdccconf_in.h b/sdccconf_in.h -index aeb2724..9c1df9d 100644 +index eb6f48b..9f5b003 100644 --- a/sdccconf_in.h +++ b/sdccconf_in.h -@@ -97,12 +97,6 @@ +@@ -100,12 +100,6 @@ /* XXX */ #undef LIB_DIR_SUFFIX @@ -3111,7 +3112,7 @@ index aeb2724..9c1df9d 100644 /* Define to 1 to disable the AVR port */ #undef OPT_DISABLE_AVR -@@ -127,9 +121,6 @@ +@@ -130,9 +124,6 @@ /* XXX */ #undef OPT_DISABLE_MCS51 @@ -3122,11 +3123,11 @@ index aeb2724..9c1df9d 100644 #undef OPT_DISABLE_PACKIHX diff --git a/src/SDCCglobl.h b/src/SDCCglobl.h -index b8d156b..db81fd7 100644 +index 9383f68..c2f0b42 100644 --- a/src/SDCCglobl.h +++ b/src/SDCCglobl.h @@ -288,7 +288,6 @@ struct options - int no_pack_iram; /* MCS51/DS390 - Deprecated: Tells the linker not to pack variables in internal ram */ + int stack_size; /* MCS51/DS390 - Tells the linker to allocate this space for stack */ int acall_ajmp; /* MCS51 - Use acall/ajmp instead of lcall/ljmp */ int no_ret_without_call; /* MCS51 - Do not use ret independent of acall/lcall */ - int use_non_free; /* Search / include non-free licensed libraries and header files */ @@ -3134,10 +3135,10 @@ index b8d156b..db81fd7 100644 int xstack_loc; /* initial location of external stack */ int stack_loc; /* initial value of internal stack pointer */ diff --git a/src/SDCCmain.c b/src/SDCCmain.c -index d4598a5..cd36f3d 100644 +index 2a7a711..f46370f 100644 --- a/src/SDCCmain.c +++ b/src/SDCCmain.c -@@ -142,7 +142,6 @@ char buffer[PATH_MAX * 2]; +@@ -151,7 +151,6 @@ char buffer[PATH_MAX * 2]; #define OPTION_DATA_SEG "--dataseg" #define OPTION_DOLLARS_IN_IDENT "--fdollars-in-identifiers" #define OPTION_SIGNED_CHAR "--fsigned-char" @@ -3145,7 +3146,7 @@ index d4598a5..cd36f3d 100644 #define OPTION_PEEP_RETURN "--peep-return" #define OPTION_NO_PEEP_RETURN "--no-peep-return" #define OPTION_NO_OPTSDCC_IN_ASM "--no-optsdcc-in-asm" -@@ -197,7 +196,6 @@ static const OPTION optionsTable[] = { +@@ -207,7 +206,6 @@ static const OPTION optionsTable[] = { {0, OPTION_STD_SDCC2X, NULL, "Use ISO C2X standard with SDCC extensions"}, {0, OPTION_DOLLARS_IN_IDENT, &options.dollars_in_ident, "Permit '$' as an identifier character"}, {0, OPTION_SIGNED_CHAR, &options.signed_char, "Make \"char\" signed by default"}, @@ -3153,7 +3154,7 @@ index d4598a5..cd36f3d 100644 {0, NULL, NULL, "Code generation options"}, {'m', NULL, NULL, "Set the port to use e.g. -mz80."}, -@@ -2084,10 +2082,6 @@ preProcess (char **envp) +@@ -2113,10 +2111,6 @@ preProcess (char **envp) else addSet (&preArgvSet, Safe_strdup ("-D__SDCC_CHAR_UNSIGNED")); @@ -3164,7 +3165,7 @@ index d4598a5..cd36f3d 100644 /* set the macro for large model */ switch (options.model) { -@@ -2301,12 +2295,6 @@ setIncludePath (void) +@@ -2336,12 +2330,6 @@ setIncludePath (void) * 6. - $SDCC_HOME/PREFIX2DATA_DIR/INCLUDE_DIR_SUFFIX * 7. - path(argv[0])/BIN2DATA_DIR/INCLUDE_DIR_SUFFIX * 8. - DATADIR/INCLUDE_DIR_SUFFIX (only on *nix) @@ -3177,8 +3178,8 @@ index d4598a5..cd36f3d 100644 */ if (!options.nostdinc) -@@ -2319,17 +2307,6 @@ setIncludePath (void) - includeDirsSet = processStrSet (includeDirsSet, NULL, port->target, NULL); +@@ -2357,17 +2345,6 @@ setIncludePath (void) + includeDirsSet = processStrSet (includeDirsSet, NULL, port->target, NULL); mergeSets (&includeDirsSet, tempSet); - if (options.use_non_free) @@ -3195,7 +3196,7 @@ index d4598a5..cd36f3d 100644 if ((p = getenv (SDCC_INCLUDE_NAME)) != NULL) { struct dbuf_s dbuf; -@@ -2354,9 +2331,6 @@ setLibPath (void) +@@ -2392,9 +2369,6 @@ setLibPath (void) * 3. - $SDCC_HOME/PREFIX2DATA_DIR/LIB_DIR_SUFFIX/<model> * 4. - path(argv[0])/BIN2DATA_DIR/LIB_DIR_SUFFIX/<model> * 5. - DATADIR/LIB_DIR_SUFFIX/<model> (only on *nix) @@ -3205,7 +3206,7 @@ index d4598a5..cd36f3d 100644 */ if (!options.nostdlib) -@@ -2373,13 +2347,6 @@ setLibPath (void) +@@ -2411,13 +2385,6 @@ setLibPath (void) dbuf_makePath (&dbuf, LIB_DIR_SUFFIX, port->general.get_model ? port->general.get_model () : targetname); libDirsSet = processStrSet (dataDirsSet, NULL, dbuf_c_str (&dbuf), NULL); @@ -3273,7 +3274,7 @@ index cdfbba0..5877f09 100644 extern pic16_options_t pic16_options; diff --git a/src/pic16/main.c b/src/pic16/main.c -index 61d9cfb..75d1182 100644 +index d416642..bfe514d 100644 --- a/src/pic16/main.c +++ b/src/pic16/main.c @@ -655,7 +655,6 @@ OPTION pic16_optionsTable[]= { @@ -3495,10 +3496,10 @@ index 6db417a..4b35225 100755 ); diff --git a/support/scripts/sdcc.nsi b/support/scripts/sdcc.nsi -index 68e9035..92e5784 100644 +index da63063..dae8d8d 100644 --- a/support/scripts/sdcc.nsi +++ b/support/scripts/sdcc.nsi -@@ -483,11 +483,6 @@ ${Section} "SDCC include files" SEC05 +@@ -479,11 +479,6 @@ ${Section} "SDCC include files" SEC05 SetOutPath "$INSTDIR\include" File "${DEV_ROOT}\include\*.h" @@ -3510,7 +3511,7 @@ index 68e9035..92e5784 100644 ${SectionEnd} ${Section} "SDCC DS390 library" SEC06 -@@ -585,18 +580,12 @@ ${Section} "SDCC PIC16 library" SEC21 +@@ -581,18 +576,12 @@ ${Section} "SDCC PIC16 library" SEC21 SetOutPath "$INSTDIR\lib\pic16" File "${DEV_ROOT}\lib\pic16\*.o" File "${DEV_ROOT}\lib\pic16\*.lib" @@ -3551,7 +3552,7 @@ index 68e9035..92e5784 100644 SetOutPath "$INSTDIR\lib\src\pic16\libio" File "${DEV_ROOT}\lib\src\pic16\libio\*.ignore" # File "${DEV_ROOT}\lib\src\pic16\libio\Makefile" -@@ -1074,13 +1055,9 @@ ${Section} Uninstall SECUNINSTALL +@@ -1105,13 +1086,9 @@ ${Section} Uninstall SECUNINSTALL Delete "$INSTDIR\lib\pic14\*.lib" @@ -3565,7 +3566,7 @@ index 68e9035..92e5784 100644 Delete "$INSTDIR\lib\hc08\*.lib" Delete "$INSTDIR\lib\s08\*.lib" -@@ -1144,9 +1121,7 @@ ${Section} Uninstall SECUNINSTALL +@@ -1182,9 +1159,7 @@ ${Section} Uninstall SECUNINSTALL Delete "$INSTDIR\include\pic14\*.h" Delete "$INSTDIR\include\pic14\*.txt" Delete "$INSTDIR\include\pic14\*.inc" @@ -3575,7 +3576,7 @@ index 68e9035..92e5784 100644 Delete "$INSTDIR\include\pic16\*.txt" Delete "$INSTDIR\include\mcs51\*.h" Delete "$INSTDIR\include\hc08\*.h" -@@ -1208,9 +1183,7 @@ ${Section} Uninstall SECUNINSTALL +@@ -1246,9 +1221,7 @@ ${Section} Uninstall SECUNINSTALL Delete "$INSTDIR\uninstall.exe" RMDir /r "$INSTDIR\lib\src\pic14" @@ -3585,9 +3586,9 @@ index 68e9035..92e5784 100644 RMDir "$INSTDIR\lib\src\small" RMDir "$INSTDIR\lib\src\medium" RMDir "$INSTDIR\lib\src\large" -@@ -1233,12 +1206,9 @@ ${Section} Uninstall SECUNINSTALL - RMDir "$INSTDIR\lib\src\pdk15" - RMDir "$INSTDIR\lib\src\pdk15-stack-auto" +@@ -1274,12 +1247,9 @@ ${Section} Uninstall SECUNINSTALL + RMDir "$INSTDIR\lib\src\tlcs90" + RMDir "$INSTDIR\lib\src\z80n" RMDir "$INSTDIR\lib\src" - RMDir "$INSTDIR\non-free\lib\src" @@ -3598,17 +3599,15 @@ index 68e9035..92e5784 100644 RMDir "$INSTDIR\lib\z80" RMDir "$INSTDIR\lib\z180" RMDir "$INSTDIR\lib\r2k" -@@ -1261,7 +1231,6 @@ ${Section} Uninstall SECUNINSTALL - RMDir "$INSTDIR\lib\pdk15" - RMDir "$INSTDIR\lib\pdk15-stack-auto" +@@ -1305,15 +1275,12 @@ ${Section} Uninstall SECUNINSTALL + RMDir "$INSTDIR\lib\tlcs90" + RMDir "$INSTDIR\lib\z80n" RMDir "$INSTDIR\lib" - RMDir "$INSTDIR\non-free\lib" RMDir "$INSTDIR\include\asm\z80" - RMDir "$INSTDIR\include\asm\z180" -@@ -1269,9 +1238,7 @@ ${Section} Uninstall SECUNINSTALL + RMDir "$INSTDIR\include\asm\r2k" RMDir "$INSTDIR\include\asm\r3ka" - RMDir "$INSTDIR\include\asm\ez80_z80" RMDir "$INSTDIR\include\asm\pic16" - RMDir "$INSTDIR\non-free\include\asm\pic16" RMDir "$INSTDIR\include\asm\pic14" @@ -3616,7 +3615,7 @@ index 68e9035..92e5784 100644 RMDir "$INSTDIR\include\asm\mcs51" RMDir "$INSTDIR\include\asm\gbz80" RMDir "$INSTDIR\include\asm\ds390" -@@ -1280,17 +1247,12 @@ ${Section} Uninstall SECUNINSTALL +@@ -1322,17 +1289,12 @@ ${Section} Uninstall SECUNINSTALL RMDir "$INSTDIR\include\asm" RMDir "$INSTDIR\include\z180" RMDir "$INSTDIR\include\pic14" diff --git a/gnu/packages/patches/ungoogled-chromium-system-opus.patch b/gnu/packages/patches/ungoogled-chromium-system-opus.patch new file mode 100644 index 0000000000..6f887a31a4 --- /dev/null +++ b/gnu/packages/patches/ungoogled-chromium-system-opus.patch @@ -0,0 +1,27 @@ +Add missing build dependency on Opus so that system headers are found. + +Taken from upstream: +https://chromium-review.googlesource.com/c/chromium/src/+/2644623 + +diff --git a/third_party/blink/renderer/modules/webcodecs/BUILD.gn b/third_party/blink/renderer/modules/webcodecs/BUILD.gn +--- a/third_party/blink/renderer/modules/webcodecs/BUILD.gn ++++ b/third_party/blink/renderer/modules/webcodecs/BUILD.gn +@@ -65,6 +65,7 @@ blink_modules_sources("webcodecs") { + "//media/mojo/clients", + "//media/mojo/mojom", + "//third_party/libyuv:libyuv", ++ "//third_party/opus", + ] + if (media_use_openh264) { + deps += [ "//third_party/openh264:encoder" ] +diff --git a/third_party/blink/renderer/modules/webcodecs/DEPS b/third_party/blink/renderer/modules/webcodecs/DEPS +--- a/third_party/blink/renderer/modules/webcodecs/DEPS ++++ b/third_party/blink/renderer/modules/webcodecs/DEPS +@@ -19,6 +19,7 @@ include_rules = [ + + "+third_party/libyuv", + "+third_party/openh264", ++ "+third_party/opus", + + "+ui/gfx/color_space.h", + "+ui/gfx/geometry/rect.h", diff --git a/gnu/packages/patches/unzip-32bit-zipbomb-fix.patch b/gnu/packages/patches/unzip-32bit-zipbomb-fix.patch new file mode 100644 index 0000000000..ad6a157c56 --- /dev/null +++ b/gnu/packages/patches/unzip-32bit-zipbomb-fix.patch @@ -0,0 +1,50 @@ +From 13f0260beae851f7d5dd96e9ef757d8d6d7daac1 Mon Sep 17 00:00:00 2001 +From: Mark Adler <madler@alumni.caltech.edu> +Date: Sun, 9 Feb 2020 07:20:13 -0800 +Subject: [PATCH] Fix false overlapped components detection on 32-bit systems. + +32-bit systems with ZIP64_SUPPORT enabled could have different +size types for zoff_t and zusz_t. That resulted in bad parameter +passing to the bound tracking functions, itself due to the lack of +use of C function prototypes in unzip. This commit assures that +parameters are cast properly for those calls. + +This problem occurred only for ill-chosen make options, which give +a 32-bit zoff_t. A proper build will result in a zoff_t of 64 bits, +even on 32-bit systems. +--- + extract.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/extract.c b/extract.c +index 1b73cb0..d9866f9 100644 +--- a/extract.c ++++ b/extract.c +@@ -329,7 +329,7 @@ static ZCONST char Far OverlappedComponents[] = + + + /* A growable list of spans. */ +-typedef zoff_t bound_t; ++typedef zusz_t bound_t; + typedef struct { + bound_t beg; /* start of the span */ + bound_t end; /* one past the end of the span */ +@@ -518,7 +518,8 @@ int extract_or_test_files(__G) /* return PK-type error code */ + return PK_MEM; + } + if ((G.extra_bytes != 0 && +- cover_add((cover_t *)G.cover, 0, G.extra_bytes) != 0) || ++ cover_add((cover_t *)G.cover, ++ (bound_t)0, (bound_t)G.extra_bytes) != 0) || + (G.ecrec.have_ecr64 && + cover_add((cover_t *)G.cover, G.ecrec.ec64_start, + G.ecrec.ec64_end) != 0) || +@@ -1216,7 +1217,7 @@ static int extract_or_test_entrylist(__G__ numchunk, + + /* seek_zipf(__G__ pInfo->offset); */ + request = G.pInfo->offset + G.extra_bytes; +- if (cover_within((cover_t *)G.cover, request)) { ++ if (cover_within((cover_t *)G.cover, (bound_t)request)) { + Info(slide, 0x401, ((char *)slide, + LoadFarString(OverlappedComponents))); + return PK_BOMB; diff --git a/gnu/packages/patches/unzip-COVSCAN-fix-unterminated-string.patch b/gnu/packages/patches/unzip-COVSCAN-fix-unterminated-string.patch new file mode 100644 index 0000000000..717377119b --- /dev/null +++ b/gnu/packages/patches/unzip-COVSCAN-fix-unterminated-string.patch @@ -0,0 +1,131 @@ +From 06d1b08aef94984256cad3c5a54cedb10295681f Mon Sep 17 00:00:00 2001 +From: Jakub Martisko <jamartis@redhat.com> +Date: Thu, 8 Nov 2018 09:31:18 +0100 +Subject: [PATCH] Possible unterminated string fix + +--- + unix/unix.c | 4 +++- + unix/unxcfg.h | 2 +- + unzip.c | 12 ++++++++---- + zipinfo.c | 12 ++++++++---- + 4 files changed, 20 insertions(+), 10 deletions(-) + +diff --git a/unix/unix.c b/unix/unix.c +index 59b622d..cd57f80 100644 +--- a/unix/unix.c ++++ b/unix/unix.c +@@ -1945,7 +1945,9 @@ void init_conversion_charsets() + for(i = 0; i < sizeof(dos_charset_map)/sizeof(CHARSET_MAP); i++) + if(!strcasecmp(local_charset, dos_charset_map[i].local_charset)) { + strncpy(OEM_CP, dos_charset_map[i].archive_charset, +- sizeof(OEM_CP)); ++ MAX_CP_NAME - 1); ++ ++ OEM_CP[MAX_CP_NAME - 1] = '\0'; + break; + } + } +diff --git a/unix/unxcfg.h b/unix/unxcfg.h +index 8729de2..9ee8cfe 100644 +--- a/unix/unxcfg.h ++++ b/unix/unxcfg.h +@@ -228,7 +228,7 @@ typedef struct stat z_stat; + /* and notfirstcall are used by do_wild(). */ + + +-#define MAX_CP_NAME 25 ++#define MAX_CP_NAME 25 + 1 + + #ifdef SETLOCALE + # undef SETLOCALE +diff --git a/unzip.c b/unzip.c +index 2d94a38..a485f2b 100644 +--- a/unzip.c ++++ b/unzip.c +@@ -1561,7 +1561,8 @@ int uz_opts(__G__ pargc, pargv) + "error: a valid character encoding should follow the -I argument")); + return(PK_PARAM); + } +- strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ strncpy(ISO_CP, s, MAX_CP_NAME - 1); ++ ISO_CP[MAX_CP_NAME - 1] = '\0'; + } else { /* -I charset */ + ++argv; + if(!(--argc > 0 && *argv != NULL && **argv != '-')) { +@@ -1570,7 +1571,8 @@ int uz_opts(__G__ pargc, pargv) + return(PK_PARAM); + } + s = *argv; +- strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ strncpy(ISO_CP, s, MAX_CP_NAME - 1); ++ ISO_CP[MAX_CP_NAME - 1] = '\0'; + } + while(*(++s)); /* No params straight after charset name */ + } +@@ -1665,7 +1667,8 @@ int uz_opts(__G__ pargc, pargv) + "error: a valid character encoding should follow the -I argument")); + return(PK_PARAM); + } +- strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ strncpy(OEM_CP, s, MAX_CP_NAME - 1); ++ OEM_CP[MAX_CP_NAME - 1] = '\0'; + } else { /* -O charset */ + ++argv; + if(!(--argc > 0 && *argv != NULL && **argv != '-')) { +@@ -1674,7 +1677,8 @@ int uz_opts(__G__ pargc, pargv) + return(PK_PARAM); + } + s = *argv; +- strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ strncpy(OEM_CP, s, MAX_CP_NAME - 1); ++ OEM_CP[MAX_CP_NAME - 1] = '\0'; + } + while(*(++s)); /* No params straight after charset name */ + } +diff --git a/zipinfo.c b/zipinfo.c +index accca2a..cb7e08d 100644 +--- a/zipinfo.c ++++ b/zipinfo.c +@@ -519,7 +519,8 @@ int zi_opts(__G__ pargc, pargv) + "error: a valid character encoding should follow the -I argument")); + return(PK_PARAM); + } +- strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ strncpy(ISO_CP, s, MAX_CP_NAME - 1); ++ ISO_CP[MAX_CP_NAME - 1] = '\0'; + } else { /* -I charset */ + ++argv; + if(!(--argc > 0 && *argv != NULL && **argv != '-')) { +@@ -528,7 +529,8 @@ int zi_opts(__G__ pargc, pargv) + return(PK_PARAM); + } + s = *argv; +- strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ strncpy(ISO_CP, s, MAX_CP_NAME - 1); ++ ISO_CP[MAX_CP_NAME - 1] = '\0'; + } + while(*(++s)); /* No params straight after charset name */ + } +@@ -568,7 +570,8 @@ int zi_opts(__G__ pargc, pargv) + "error: a valid character encoding should follow the -I argument")); + return(PK_PARAM); + } +- strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ strncpy(OEM_CP, s, MAX_CP_NAME - 1); ++ OEM_CP[MAX_CP_NAME - 1] = '\0'; + } else { /* -O charset */ + ++argv; + if(!(--argc > 0 && *argv != NULL && **argv != '-')) { +@@ -577,7 +580,8 @@ int zi_opts(__G__ pargc, pargv) + return(PK_PARAM); + } + s = *argv; +- strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ strncpy(OEM_CP, s, MAX_CP_NAME - 1); ++ OEM_CP[MAX_CP_NAME - 1] = '\0'; + } + while(*(++s)); /* No params straight after charset name */ + } +-- +2.14.5 + diff --git a/gnu/packages/patches/unzip-CVE-2016-9844.patch b/gnu/packages/patches/unzip-CVE-2016-9844.patch new file mode 100644 index 0000000000..0e4a173397 --- /dev/null +++ b/gnu/packages/patches/unzip-CVE-2016-9844.patch @@ -0,0 +1,39 @@ +From 754137e70cf58a64ad524b704a86b651ba0cde07 Mon Sep 17 00:00:00 2001 +From: Petr Stodulka <pstodulk@redhat.com> +Date: Wed, 14 Dec 2016 16:30:36 +0100 +Subject: [PATCH] Fix CVE-2016-9844 (rhbz#1404283) + +Fixes buffer overflow in zipinfo in similar way like fix for +CVE-2014-9913 provided by upstream. +--- + zipinfo.c | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +diff --git a/zipinfo.c b/zipinfo.c +index c03620e..accca2a 100644 +--- a/zipinfo.c ++++ b/zipinfo.c +@@ -1984,7 +1984,19 @@ static int zi_short(__G) /* return PK-type error code */ + ush dnum=(ush)((G.crec.general_purpose_bit_flag>>1) & 3); + methbuf[3] = dtype[dnum]; + } else if (methnum >= NUM_METHODS) { /* unknown */ +- sprintf(&methbuf[1], "%03u", G.crec.compression_method); ++ /* 2016-12-05 SMS. ++ * https://launchpad.net/bugs/1643750 ++ * Unexpectedly large compression methods overflow ++ * &methbuf[]. Use the old, three-digit decimal format ++ * for values which fit. Otherwise, sacrifice the "u", ++ * and use four-digit hexadecimal. ++ */ ++ if (G.crec.compression_method <= 999) { ++ sprintf( &methbuf[ 1], "%03u", G.crec.compression_method); ++ } else { ++ sprintf( &methbuf[ 0], "%04X", G.crec.compression_method); ++ } ++ + } + + for (k = 0; k < 15; ++k) +-- +2.5.5 + diff --git a/gnu/packages/patches/unzip-CVE-2018-1000035.patch b/gnu/packages/patches/unzip-CVE-2018-1000035.patch new file mode 100644 index 0000000000..8ca713865c --- /dev/null +++ b/gnu/packages/patches/unzip-CVE-2018-1000035.patch @@ -0,0 +1,34 @@ +--- a/fileio.c 2014-12-05 05:06:05 -0600 ++++ b/fileio.c 2017-11-14 01:06:28 -0600 +@@ -1,5 +1,5 @@ + /* +- Copyright (c) 1990-2009 Info-ZIP. All rights reserved. ++ Copyright (c) 1990-2017 Info-ZIP. All rights reserved. + + See the accompanying file LICENSE, version 2009-Jan-02 or later + (the contents of which are also included in unzip.h) for terms of use. +@@ -1582,6 +1582,8 @@ + int r = IZ_PW_ENTERED; + char *m; + char *prompt; ++ char *ep; ++ char *zp; + + #ifndef REENTRANT + /* tell picky compilers to shut up about "unused variable" warnings */ +@@ -1590,9 +1592,12 @@ + + if (*rcnt == 0) { /* First call for current entry */ + *rcnt = 2; +- if ((prompt = (char *)malloc(2*FILNAMSIZ + 15)) != (char *)NULL) { +- sprintf(prompt, LoadFarString(PasswPrompt), +- FnFilter1(zfn), FnFilter2(efn)); ++ zp = FnFilter1( zfn); ++ ep = FnFilter2( efn); ++ prompt = (char *)malloc( /* Slightly too long (2* "%s"). */ ++ sizeof( PasswPrompt)+ strlen( zp)+ strlen( ep)); ++ if (prompt != (char *)NULL) { ++ sprintf(prompt, LoadFarString(PasswPrompt), zp, ep); + m = prompt; + } else + m = (char *)LoadFarString(PasswPrompt2); diff --git a/gnu/packages/patches/unzip-CVE-2018-18384.patch b/gnu/packages/patches/unzip-CVE-2018-18384.patch new file mode 100644 index 0000000000..54d4b8cb64 --- /dev/null +++ b/gnu/packages/patches/unzip-CVE-2018-18384.patch @@ -0,0 +1,35 @@ +--- unzip60/list.c ++++ unzip60/list.c +@@ -97,7 +97,7 @@ int list_files(__G) /* return PK-type + { + int do_this_file=FALSE, cfactor, error, error_in_archive=PK_COOL; + #ifndef WINDLL +- char sgn, cfactorstr[13]; ++ char sgn, cfactorstr[1+10+1+1]; /* <sgn><int>%NUL */ + int longhdr=(uO.vflag>1); + #endif + int date_format; +@@ -389,9 +389,9 @@ int list_files(__G) /* return PK-type + } + #else /* !WINDLL */ + if (cfactor == 100) +- sprintf(cfactorstr, LoadFarString(CompFactor100)); ++ snprintf(cfactorstr, sizeof(cfactorstr), LoadFarString(CompFactor100)); + else +- sprintf(cfactorstr, LoadFarString(CompFactorStr), sgn, cfactor); ++ snprintf(cfactorstr, sizeof(cfactorstr), LoadFarString(CompFactorStr), sgn, cfactor); + if (longhdr) + Info(slide, 0, ((char *)slide, LoadFarString(LongHdrStats), + FmZofft(G.crec.ucsize, "8", "u"), methbuf, +@@ -471,9 +471,9 @@ int list_files(__G) /* return PK-type + + #else /* !WINDLL */ + if (cfactor == 100) +- sprintf(cfactorstr, LoadFarString(CompFactor100)); ++ snprintf(cfactorstr, sizeof(cfactorstr), LoadFarString(CompFactor100)); + else +- sprintf(cfactorstr, LoadFarString(CompFactorStr), sgn, cfactor); ++ snprintf(cfactorstr, sizeof(cfactorstr), LoadFarString(CompFactorStr), sgn, cfactor); + if (longhdr) { + Info(slide, 0, ((char *)slide, LoadFarString(LongFileTrailer), + FmZofft(tot_ucsize, "8", "u"), FmZofft(tot_csize, "8", "u"), diff --git a/gnu/packages/patches/unzip-alt-iconv-utf8-print.patch b/gnu/packages/patches/unzip-alt-iconv-utf8-print.patch new file mode 100644 index 0000000000..0b0153ba54 --- /dev/null +++ b/gnu/packages/patches/unzip-alt-iconv-utf8-print.patch @@ -0,0 +1,381 @@ +From ca0212ba19b64488b9e8459a762c11ecd6e7d0bd Mon Sep 17 00:00:00 2001 +From: Petr Stodulka <pstodulk@redhat.com> +Date: Tue, 24 Nov 2015 17:56:11 +0100 +Subject: [PATCH] print correctly non-ascii filenames + +--- + extract.c | 289 ++++++++++++++++++++++++++++++++++++++++++++++++-------------- + unzpriv.h | 7 ++ + 2 files changed, 233 insertions(+), 63 deletions(-) + +diff --git a/extract.c b/extract.c +index 0ee4e93..741b7e0 100644 +--- a/extract.c ++++ b/extract.c +@@ -2648,8 +2648,21 @@ static void set_deferred_symlink(__G__ slnk_entry) + } /* end function set_deferred_symlink() */ + #endif /* SYMLINKS */ + ++/* ++ * If Unicode is supported, assume we have what we need to do this ++ * check using wide characters, avoiding MBCS issues. ++ */ + +- ++#ifndef UZ_FNFILTER_REPLACECHAR ++ /* A convenient choice for the replacement of unprintable char codes is ++ * the "single char wildcard", as this character is quite unlikely to ++ * appear in filenames by itself. The following default definition ++ * sets the replacement char to a question mark as the most common ++ * "single char wildcard"; this setting should be overridden in the ++ * appropiate system-specific configuration header when needed. ++ */ ++# define UZ_FNFILTER_REPLACECHAR '?' ++#endif + + /*************************/ + /* Function fnfilter() */ /* here instead of in list.c for SFX */ +@@ -2661,48 +2674,168 @@ char *fnfilter(raw, space, size) /* convert name to safely printable form */ + extent size; + { + #ifndef NATIVE /* ASCII: filter ANSI escape codes, etc. */ +- ZCONST uch *r=(ZCONST uch *)raw; ++ ZCONST uch *r; // =(ZCONST uch *)raw; + uch *s=space; + uch *slim=NULL; + uch *se=NULL; + int have_overflow = FALSE; + +- if (size > 0) { +- slim = space + size +-#ifdef _MBCS +- - (MB_CUR_MAX - 1) +-#endif +- - 4; ++# if defined( UNICODE_SUPPORT) && defined( _MBCS) ++/* If Unicode support is enabled, and we have multi-byte characters, ++ * then do the isprint() checks by first converting to wide characters ++ * and checking those. This avoids our having to parse multi-byte ++ * characters for ourselves. After the wide-char replacements have been ++ * made, the wide string is converted back to the local character set. ++ */ ++ wchar_t *wstring; /* wchar_t version of raw */ ++ size_t wslen; /* length of wstring */ ++ wchar_t *wostring; /* wchar_t version of output string */ ++ size_t woslen; /* length of wostring */ ++ char *newraw; /* new raw */ ++ ++ /* 2012-11-06 SMS. ++ * Changed to check the value returned by mbstowcs(), and bypass the ++ * Unicode processing if it fails. This seems to fix a problem ++ * reported in the SourceForge forum, but it's not clear that we ++ * should be doing any Unicode processing without some evidence that ++ * the name actually is Unicode. (Check bit 11 in the flags before ++ * coming here?) ++ * http://sourceforge.net/p/infozip/bugs/40/ ++ */ ++ ++ if (MB_CUR_MAX <= 1) ++ { ++ /* There's no point to converting multi-byte chars if there are ++ * no multi-byte chars. ++ */ ++ wslen = (size_t)-1; + } +- while (*r) { +- if (size > 0 && s >= slim && se == NULL) { +- se = s; ++ else ++ { ++ /* Get Unicode wide character count (for storage allocation). */ ++ wslen = mbstowcs( NULL, raw, 0); ++ } ++ ++ if (wslen != (size_t)-1) ++ { ++ /* Apparently valid Unicode. Allocate wide-char storage. */ ++ wstring = (wchar_t *)malloc((wslen + 1) * sizeof(wchar_t)); ++ if (wstring == NULL) { ++ strcpy( (char *)space, raw); ++ return (char *)space; + } +-#ifdef QDOS +- if (qlflag & 2) { +- if (*r == '/' || *r == '.') { ++ wostring = (wchar_t *)malloc(2 * (wslen + 1) * sizeof(wchar_t)); ++ if (wostring == NULL) { ++ free(wstring); ++ strcpy( (char *)space, raw); ++ return (char *)space; ++ } ++ ++ /* Convert the multi-byte Unicode to wide chars. */ ++ wslen = mbstowcs(wstring, raw, wslen + 1); ++ ++ /* Filter the wide-character string. */ ++ fnfilterw( wstring, wostring, (2 * (wslen + 1) * sizeof(wchar_t))); ++ ++ /* Convert filtered wide chars back to multi-byte. */ ++ woslen = wcstombs( NULL, wostring, 0); ++ if ((newraw = malloc(woslen + 1)) == NULL) { ++ free(wstring); ++ free(wostring); ++ strcpy( (char *)space, raw); ++ return (char *)space; ++ } ++ woslen = wcstombs( newraw, wostring, (woslen * MB_CUR_MAX) + 1); ++ ++ if (size > 0) { ++ slim = space + size - 4; ++ } ++ r = (ZCONST uch *)newraw; ++ while (*r) { ++ if (size > 0 && s >= slim && se == NULL) { ++ se = s; ++ } ++# ifdef QDOS ++ if (qlflag & 2) { ++ if (*r == '/' || *r == '.') { ++ if (se != NULL && (s > (space + (size-3)))) { ++ have_overflow = TRUE; ++ break; ++ } ++ ++r; ++ *s++ = '_'; ++ continue; ++ } ++ } else ++# endif ++ { + if (se != NULL && (s > (space + (size-3)))) { + have_overflow = TRUE; + break; + } +- ++r; +- *s++ = '_'; +- continue; ++ *s++ = *r++; + } +- } else ++ } ++ if (have_overflow) { ++ strcpy((char *)se, "..."); ++ } else { ++ *s = '\0'; ++ } ++ ++ free(wstring); ++ free(wostring); ++ free(newraw); ++ } ++ else ++# endif /* defined( UNICODE_SUPPORT) && defined( _MBCS) */ ++ { ++ /* No Unicode support, or apparently invalid Unicode. */ ++ r = (ZCONST uch *)raw; ++ ++ if (size > 0) { ++ slim = space + size ++#ifdef _MBCS ++ - (MB_CUR_MAX - 1) ++#endif ++ - 4; ++ } ++ while (*r) { ++ if (size > 0 && s >= slim && se == NULL) { ++ se = s; ++ } ++#ifdef QDOS ++ if (qlflag & 2) { ++ if (*r == '/' || *r == '.') { ++ if (se != NULL && (s > (space + (size-3)))) { ++ have_overflow = TRUE; ++ break; ++ } ++ ++r; ++ *s++ = '_'; ++ continue; ++ } ++ } else + #endif + #ifdef HAVE_WORKING_ISPRINT +-# ifndef UZ_FNFILTER_REPLACECHAR +- /* A convenient choice for the replacement of unprintable char codes is +- * the "single char wildcard", as this character is quite unlikely to +- * appear in filenames by itself. The following default definition +- * sets the replacement char to a question mark as the most common +- * "single char wildcard"; this setting should be overridden in the +- * appropiate system-specific configuration header when needed. +- */ +-# define UZ_FNFILTER_REPLACECHAR '?' +-# endif +- if (!isprint(*r)) { ++ if (!isprint(*r)) { ++ if (*r < 32) { ++ /* ASCII control codes are escaped as "^{letter}". */ ++ if (se != NULL && (s > (space + (size-4)))) { ++ have_overflow = TRUE; ++ break; ++ } ++ *s++ = '^', *s++ = (uch)(64 + *r++); ++ } else { ++ /* Other unprintable codes are replaced by the ++ * placeholder character. */ ++ if (se != NULL && (s > (space + (size-3)))) { ++ have_overflow = TRUE; ++ break; ++ } ++ *s++ = UZ_FNFILTER_REPLACECHAR; ++ INCSTR(r); ++ } ++#else /* !HAVE_WORKING_ISPRINT */ + if (*r < 32) { + /* ASCII control codes are escaped as "^{letter}". */ + if (se != NULL && (s > (space + (size-4)))) { +@@ -2710,47 +2843,30 @@ char *fnfilter(raw, space, size) /* convert name to safely printable form */ + break; + } + *s++ = '^', *s++ = (uch)(64 + *r++); ++#endif /* ?HAVE_WORKING_ISPRINT */ + } else { +- /* Other unprintable codes are replaced by the +- * placeholder character. */ ++#ifdef _MBCS ++ unsigned i = CLEN(r); ++ if (se != NULL && (s > (space + (size-i-2)))) { ++ have_overflow = TRUE; ++ break; ++ } ++ for (; i > 0; i--) ++ *s++ = *r++; ++#else + if (se != NULL && (s > (space + (size-3)))) { + have_overflow = TRUE; + break; + } +- *s++ = UZ_FNFILTER_REPLACECHAR; +- INCSTR(r); +- } +-#else /* !HAVE_WORKING_ISPRINT */ +- if (*r < 32) { +- /* ASCII control codes are escaped as "^{letter}". */ +- if (se != NULL && (s > (space + (size-4)))) { +- have_overflow = TRUE; +- break; +- } +- *s++ = '^', *s++ = (uch)(64 + *r++); +-#endif /* ?HAVE_WORKING_ISPRINT */ +- } else { +-#ifdef _MBCS +- unsigned i = CLEN(r); +- if (se != NULL && (s > (space + (size-i-2)))) { +- have_overflow = TRUE; +- break; +- } +- for (; i > 0; i--) + *s++ = *r++; +-#else +- if (se != NULL && (s > (space + (size-3)))) { +- have_overflow = TRUE; +- break; +- } +- *s++ = *r++; + #endif +- } +- } +- if (have_overflow) { +- strcpy((char *)se, "..."); +- } else { +- *s = '\0'; ++ } ++ } ++ if (have_overflow) { ++ strcpy((char *)se, "..."); ++ } else { ++ *s = '\0'; ++ } + } + + #ifdef WINDLL +@@ -2772,6 +2888,53 @@ char *fnfilter(raw, space, size) /* convert name to safely printable form */ + } /* end function fnfilter() */ + + ++#if defined( UNICODE_SUPPORT) && defined( _MBCS) ++ ++/****************************/ ++/* Function fnfilter[w]() */ /* (Here instead of in list.c for SFX.) */ ++/****************************/ ++ ++/* fnfilterw() - Convert wide name to safely printable form. */ ++ ++/* fnfilterw() - Convert wide-character name to safely printable form. */ ++ ++wchar_t *fnfilterw( src, dst, siz) ++ ZCONST wchar_t *src; /* Pointer to source char (string). */ ++ wchar_t *dst; /* Pointer to destination char (string). */ ++ extent siz; /* Not used (!). */ ++{ ++ wchar_t *dsx = dst; ++ ++ /* Filter the wide chars. */ ++ while (*src) ++ { ++ if (iswprint( *src)) ++ { ++ /* Printable code. Copy it. */ ++ *dst++ = *src; ++ } ++ else ++ { ++ /* Unprintable code. Substitute something printable for it. */ ++ if (*src < 32) ++ { ++ /* Replace ASCII control code with "^{letter}". */ ++ *dst++ = (wchar_t)'^'; ++ *dst++ = (wchar_t)(64 + *src); ++ } ++ else ++ { ++ /* Replace other unprintable code with the placeholder. */ ++ *dst++ = (wchar_t)UZ_FNFILTER_REPLACECHAR; ++ } ++ } ++ src++; ++ } ++ *dst = (wchar_t)0; /* NUL-terminate the destination string. */ ++ return dsx; ++} /* fnfilterw(). */ ++ ++#endif /* defined( UNICODE_SUPPORT) && defined( _MBCS) */ + + + #ifdef SET_DIR_ATTRIB +diff --git a/unzpriv.h b/unzpriv.h +index 22d3923..e48a652 100644 +--- a/unzpriv.h ++++ b/unzpriv.h +@@ -1212,6 +1212,7 @@ + # ifdef UNICODE_WCHAR + # if !(defined(_WIN32_WCE) || defined(POCKET_UNZIP)) + # include <wchar.h> ++# include <wctype.h> + # endif + # endif + # ifndef _MBCS /* no need to include <locale.h> twice, see below */ +@@ -2410,6 +2411,12 @@ int memflush OF((__GPRO__ ZCONST uch *rawbuf, ulg size)); + char *fnfilter OF((ZCONST char *raw, uch *space, + extent size)); + ++# if defined( UNICODE_SUPPORT) && defined( _MBCS) ++wchar_t *fnfilterw OF((ZCONST wchar_t *src, wchar_t *dst, ++ extent siz)); ++#endif ++ ++ + /*--------------------------------------------------------------------------- + Decompression functions: + ---------------------------------------------------------------------------*/ +-- +2.4.3 + diff --git a/gnu/packages/patches/unzip-alt-iconv-utf8.patch b/gnu/packages/patches/unzip-alt-iconv-utf8.patch new file mode 100644 index 0000000000..b9e37774e2 --- /dev/null +++ b/gnu/packages/patches/unzip-alt-iconv-utf8.patch @@ -0,0 +1,398 @@ +From: Giovanni Scafora <giovanni.archlinux.org> +Subject: unzip files encoded with non-latin, non-unicode file names +Last-Update: 2015-02-11 + +Updated 2015-02-11 by Marc Deslauriers <marc.deslauriers@canonical.com> +to fix buffer overflow in charset_to_intern() + +Index: unzip-6.0/unix/unix.c +=================================================================== +--- unzip-6.0.orig/unix/unix.c 2015-02-11 08:46:43.675324290 -0500 ++++ unzip-6.0/unix/unix.c 2015-02-11 09:18:04.902081319 -0500 +@@ -30,6 +30,9 @@ + #define UNZIP_INTERNAL + #include "unzip.h" + ++#include <iconv.h> ++#include <langinfo.h> ++ + #ifdef SCO_XENIX + # define SYSNDIR + #else /* SCO Unix, AIX, DNIX, TI SysV, Coherent 4.x, ... */ +@@ -1874,3 +1877,102 @@ + } + } + #endif /* QLZIP */ ++ ++ ++typedef struct { ++ char *local_charset; ++ char *archive_charset; ++} CHARSET_MAP; ++ ++/* A mapping of local <-> archive charsets used by default to convert filenames ++ * of DOS/Windows Zip archives. Currently very basic. */ ++static CHARSET_MAP dos_charset_map[] = { ++ { "ANSI_X3.4-1968", "CP850" }, ++ { "ISO-8859-1", "CP850" }, ++ { "CP1252", "CP850" }, ++ { "UTF-8", "CP866" }, ++ { "KOI8-R", "CP866" }, ++ { "KOI8-U", "CP866" }, ++ { "ISO-8859-5", "CP866" } ++}; ++ ++char OEM_CP[MAX_CP_NAME] = ""; ++char ISO_CP[MAX_CP_NAME] = ""; ++ ++/* Try to guess the default value of OEM_CP based on the current locale. ++ * ISO_CP is left alone for now. */ ++void init_conversion_charsets() ++{ ++ const char *local_charset; ++ int i; ++ ++ /* Make a guess only if OEM_CP not already set. */ ++ if(*OEM_CP == '\0') { ++ local_charset = nl_langinfo(CODESET); ++ for(i = 0; i < sizeof(dos_charset_map)/sizeof(CHARSET_MAP); i++) ++ if(!strcasecmp(local_charset, dos_charset_map[i].local_charset)) { ++ strncpy(OEM_CP, dos_charset_map[i].archive_charset, ++ sizeof(OEM_CP)); ++ break; ++ } ++ } ++} ++ ++/* Convert a string from one encoding to the current locale using iconv(). ++ * Be as non-intrusive as possible. If error is encountered during covertion ++ * just leave the string intact. */ ++static void charset_to_intern(char *string, char *from_charset) ++{ ++ iconv_t cd; ++ char *s,*d, *buf; ++ size_t slen, dlen, buflen; ++ const char *local_charset; ++ ++ if(*from_charset == '\0') ++ return; ++ ++ buf = NULL; ++ local_charset = nl_langinfo(CODESET); ++ ++ if((cd = iconv_open(local_charset, from_charset)) == (iconv_t)-1) ++ return; ++ ++ slen = strlen(string); ++ s = string; ++ ++ /* Make sure OUTBUFSIZ + 1 never ends up smaller than FILNAMSIZ ++ * as this function also gets called with G.outbuf in fileio.c ++ */ ++ buflen = FILNAMSIZ; ++ if (OUTBUFSIZ + 1 < FILNAMSIZ) ++ { ++ buflen = OUTBUFSIZ + 1; ++ } ++ ++ d = buf = malloc(buflen); ++ if(!d) ++ goto cleanup; ++ ++ bzero(buf,buflen); ++ dlen = buflen - 1; ++ ++ if(iconv(cd, &s, &slen, &d, &dlen) == (size_t)-1) ++ goto cleanup; ++ strncpy(string, buf, buflen); ++ ++ cleanup: ++ free(buf); ++ iconv_close(cd); ++} ++ ++/* Convert a string from OEM_CP to the current locale charset. */ ++inline void oem_intern(char *string) ++{ ++ charset_to_intern(string, OEM_CP); ++} ++ ++/* Convert a string from ISO_CP to the current locale charset. */ ++inline void iso_intern(char *string) ++{ ++ charset_to_intern(string, ISO_CP); ++} +Index: unzip-6.0/unix/unxcfg.h +=================================================================== +--- unzip-6.0.orig/unix/unxcfg.h 2015-02-11 08:46:43.675324290 -0500 ++++ unzip-6.0/unix/unxcfg.h 2015-02-11 08:46:43.671324260 -0500 +@@ -228,4 +228,30 @@ + /* wild_dir, dirname, wildname, matchname[], dirnamelen, have_dirname, */ + /* and notfirstcall are used by do_wild(). */ + ++ ++#define MAX_CP_NAME 25 ++ ++#ifdef SETLOCALE ++# undef SETLOCALE ++#endif ++#define SETLOCALE(category, locale) setlocale(category, locale) ++#include <locale.h> ++ ++#ifdef _ISO_INTERN ++# undef _ISO_INTERN ++#endif ++#define _ISO_INTERN(str1) iso_intern(str1) ++ ++#ifdef _OEM_INTERN ++# undef _OEM_INTERN ++#endif ++#ifndef IZ_OEM2ISO_ARRAY ++# define IZ_OEM2ISO_ARRAY ++#endif ++#define _OEM_INTERN(str1) oem_intern(str1) ++ ++void iso_intern(char *); ++void oem_intern(char *); ++void init_conversion_charsets(void); ++ + #endif /* !__unxcfg_h */ +Index: unzip-6.0/unzip.c +=================================================================== +--- unzip-6.0.orig/unzip.c 2015-02-11 08:46:43.675324290 -0500 ++++ unzip-6.0/unzip.c 2015-02-11 08:46:43.675324290 -0500 +@@ -327,11 +327,21 @@ + -2 just filenames but allow -h/-t/-z -l long Unix \"ls -l\" format\n\ + -v verbose, multi-page format\n"; + ++#ifndef UNIX + static ZCONST char Far ZipInfoUsageLine3[] = "miscellaneous options:\n\ + -h print header line -t print totals for listed files or for all\n\ + -z print zipfile comment -T print file times in sortable decimal format\ + \n -C be case-insensitive %s\ + -x exclude filenames that follow from listing\n"; ++#else /* UNIX */ ++static ZCONST char Far ZipInfoUsageLine3[] = "miscellaneous options:\n\ ++ -h print header line -t print totals for listed files or for all\n\ ++ -z print zipfile comment %c-T%c print file times in sortable decimal format\ ++\n %c-C%c be case-insensitive %s\ ++ -x exclude filenames that follow from listing\n\ ++ -O CHARSET specify a character encoding for DOS, Windows and OS/2 archives\n\ ++ -I CHARSET specify a character encoding for UNIX and other archives\n"; ++#endif /* !UNIX */ + #ifdef MORE + static ZCONST char Far ZipInfoUsageLine4[] = + " -M page output through built-in \"more\"\n"; +@@ -664,6 +674,17 @@ + -U use escapes for all non-ASCII Unicode -UU ignore any Unicode fields\n\ + -C match filenames case-insensitively -L make (some) names \ + lowercase\n %-42s -V retain VMS version numbers\n%s"; ++#elif (defined UNIX) ++static ZCONST char Far UnzipUsageLine4[] = "\ ++modifiers:\n\ ++ -n never overwrite existing files -q quiet mode (-qq => quieter)\n\ ++ -o overwrite files WITHOUT prompting -a auto-convert any text files\n\ ++ -j junk paths (do not make directories) -aa treat ALL files as text\n\ ++ -U use escapes for all non-ASCII Unicode -UU ignore any Unicode fields\n\ ++ -C match filenames case-insensitively -L make (some) names \ ++lowercase\n %-42s -V retain VMS version numbers\n%s\ ++ -O CHARSET specify a character encoding for DOS, Windows and OS/2 archives\n\ ++ -I CHARSET specify a character encoding for UNIX and other archives\n\n"; + #else /* !VMS */ + static ZCONST char Far UnzipUsageLine4[] = "\ + modifiers:\n\ +@@ -802,6 +823,10 @@ + #endif /* UNICODE_SUPPORT */ + + ++#ifdef UNIX ++ init_conversion_charsets(); ++#endif ++ + #if (defined(__IBMC__) && defined(__DEBUG_ALLOC__)) + extern void DebugMalloc(void); + +@@ -1335,6 +1360,11 @@ + argc = *pargc; + argv = *pargv; + ++#ifdef UNIX ++ extern char OEM_CP[MAX_CP_NAME]; ++ extern char ISO_CP[MAX_CP_NAME]; ++#endif ++ + while (++argv, (--argc > 0 && *argv != NULL && **argv == '-')) { + s = *argv + 1; + while ((c = *s++) != 0) { /* "!= 0": prevent Turbo C warning */ +@@ -1516,6 +1546,35 @@ + } + break; + #endif /* MACOS */ ++#ifdef UNIX ++ case ('I'): ++ if (negative) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: encodings can't be negated")); ++ return(PK_PARAM); ++ } else { ++ if(*s) { /* Handle the -Icharset case */ ++ /* Assume that charsets can't start with a dash to spot arguments misuse */ ++ if(*s == '-') { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ } else { /* -I charset */ ++ ++argv; ++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ s = *argv; ++ strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ } ++ while(*(++s)); /* No params straight after charset name */ ++ } ++ break; ++#endif /* ?UNIX */ + case ('j'): /* junk pathnames/directory structure */ + if (negative) + uO.jflag = FALSE, negative = 0; +@@ -1591,6 +1650,35 @@ + } else + ++uO.overwrite_all; + break; ++#ifdef UNIX ++ case ('O'): ++ if (negative) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: encodings can't be negated")); ++ return(PK_PARAM); ++ } else { ++ if(*s) { /* Handle the -Ocharset case */ ++ /* Assume that charsets can't start with a dash to spot arguments misuse */ ++ if(*s == '-') { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ } else { /* -O charset */ ++ ++argv; ++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -O argument")); ++ return(PK_PARAM); ++ } ++ s = *argv; ++ strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ } ++ while(*(++s)); /* No params straight after charset name */ ++ } ++ break; ++#endif /* ?UNIX */ + case ('p'): /* pipes: extract to stdout, no messages */ + if (negative) { + uO.cflag = FALSE; +Index: unzip-6.0/unzpriv.h +=================================================================== +--- unzip-6.0.orig/unzpriv.h 2015-02-11 08:46:43.675324290 -0500 ++++ unzip-6.0/unzpriv.h 2015-02-11 08:46:43.675324290 -0500 +@@ -3008,7 +3008,7 @@ + !(((islochdr) || (isuxatt)) && \ + ((hostver) == 25 || (hostver) == 26 || (hostver) == 40))) || \ + (hostnum) == FS_HPFS_ || \ +- ((hostnum) == FS_NTFS_ && (hostver) == 50)) { \ ++ ((hostnum) == FS_NTFS_ /* && (hostver) == 50 */ )) { \ + _OEM_INTERN((string)); \ + } else { \ + _ISO_INTERN((string)); \ +Index: unzip-6.0/zipinfo.c +=================================================================== +--- unzip-6.0.orig/zipinfo.c 2015-02-11 08:46:43.675324290 -0500 ++++ unzip-6.0/zipinfo.c 2015-02-11 08:46:43.675324290 -0500 +@@ -457,6 +457,10 @@ + int tflag_slm=TRUE, tflag_2v=FALSE; + int explicit_h=FALSE, explicit_t=FALSE; + ++#ifdef UNIX ++ extern char OEM_CP[MAX_CP_NAME]; ++ extern char ISO_CP[MAX_CP_NAME]; ++#endif + + #ifdef MACOS + uO.lflag = LFLAG; /* reset default on each call */ +@@ -501,6 +505,35 @@ + uO.lflag = 0; + } + break; ++#ifdef UNIX ++ case ('I'): ++ if (negative) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: encodings can't be negated")); ++ return(PK_PARAM); ++ } else { ++ if(*s) { /* Handle the -Icharset case */ ++ /* Assume that charsets can't start with a dash to spot arguments misuse */ ++ if(*s == '-') { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ } else { /* -I charset */ ++ ++argv; ++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ s = *argv; ++ strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ } ++ while(*(++s)); /* No params straight after charset name */ ++ } ++ break; ++#endif /* ?UNIX */ + case 'l': /* longer form of "ls -l" type listing */ + if (negative) + uO.lflag = -2, negative = 0; +@@ -521,6 +554,35 @@ + G.M_flag = TRUE; + break; + #endif ++#ifdef UNIX ++ case ('O'): ++ if (negative) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: encodings can't be negated")); ++ return(PK_PARAM); ++ } else { ++ if(*s) { /* Handle the -Ocharset case */ ++ /* Assume that charsets can't start with a dash to spot arguments misuse */ ++ if(*s == '-') { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ } else { /* -O charset */ ++ ++argv; ++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -O argument")); ++ return(PK_PARAM); ++ } ++ s = *argv; ++ strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ } ++ while(*(++s)); /* No params straight after charset name */ ++ } ++ break; ++#endif /* ?UNIX */ + case 's': /* default: shorter "ls -l" type listing */ + if (negative) + uO.lflag = -2, negative = 0; diff --git a/gnu/packages/patches/unzip-case-insensitive.patch b/gnu/packages/patches/unzip-case-insensitive.patch new file mode 100644 index 0000000000..3cb68450b9 --- /dev/null +++ b/gnu/packages/patches/unzip-case-insensitive.patch @@ -0,0 +1,131 @@ +diff --git a/match.c b/match.c +index 6cd656f..4e569f5 100644 +--- a/match.c ++++ b/match.c +@@ -190,10 +190,10 @@ char *___tmp_ptr; + + #endif + +-static int recmatch(p, s, cs) ++static int recmatch(p, s, ci) + ZCONST char *p; /* sh pattern to match */ + ZCONST char *s; /* string to match it to */ +-int cs; /* flag: force case-sensitive matching */ ++int ci; /* flag: force case-insensitive matching */ + /* Recursively compare the sh pattern p with the string s and return 1 if + they match, and 0 or 2 if they don't or if there is a syntax error in the + pattern. This routine recurses on itself no deeper than the number of +@@ -214,7 +214,7 @@ int cs; /* flag: force case-sensitive matching */ + if (CLEN(p) == 2) { + if (CLEN(s) == 2) { + return (*p == *s && *(p+1) == *(s+1)) ? +- recmatch(p + 2, s + 2, cs) : 0; ++ recmatch(p + 2, s + 2, ci) : 0; + } else { + return 0; + } +@@ -230,9 +230,9 @@ int cs; /* flag: force case-sensitive matching */ + /* '?' (or '%' or '#') matches any character (but not an empty string) */ + if (c == WILDCHR_SINGLE) { + if (wild_stop_at_dir) +- return (*s && *s != DIRSEP_CHR) ? recmatch(p, s + CLEN(s), cs) : 0; ++ return (*s && *s != DIRSEP_CHR) ? recmatch(p, s + CLEN(s), ci) : 0; + else +- return *s ? recmatch(p, s + CLEN(s), cs) : 0; ++ return *s ? recmatch(p, s + CLEN(s), ci) : 0; + } + + /* WILDCHR_MULTI ('*') matches any number of characters, including zero */ +@@ -253,14 +253,14 @@ int cs; /* flag: force case-sensitive matching */ + # endif /* ?AMIGA */ + /* Single WILDCHR_MULTI ('*'): this doesn't match slashes */ + for (; *s && *s != DIRSEP_CHR; INCSTR(s)) +- if ((c = recmatch(p, s, cs)) != 0) ++ if ((c = recmatch(p, s, ci)) != 0) + return c; + /* end of pattern: matched if at end of string, else continue */ + if (*p == 0) + return (*s == 0); + /* continue to match if at DIRSEP_CHR in pattern, else give up */ + return (*p == DIRSEP_CHR || (*p == '\\' && p[1] == DIRSEP_CHR)) +- ? recmatch(p, s, cs) : 2; ++ ? recmatch(p, s, ci) : 2; + } + /* Two consecutive WILDCHR_MULTI ("**"): this matches DIRSEP_CHR ('/') */ + p++; /* move p past the second WILDCHR_MULTI */ +@@ -308,17 +308,17 @@ int cs; /* flag: force case-sensitive matching */ + */ + if (q != srest) + return 0; +- return ((cs ? strcmp(p, q) : namecmp(p, q)) == 0); ++ return ((!ci ? strcmp(p, q) : namecmp(p, q)) == 0); + } + #else /* !_MBCS */ +- return ((cs ? strcmp(p, srest) : namecmp(p, srest)) == 0); ++ return ((!ci ? strcmp(p, srest) : namecmp(p, srest)) == 0); + #endif /* ?_MBCS */ + } + else + { + /* pattern contains more wildcards, continue with recursion... */ + for (; *s; INCSTR(s)) +- if ((c = recmatch(p, s, cs)) != 0) ++ if ((c = recmatch(p, s, ci)) != 0) + return c; + return 2; /* 2 means give up--shmatch will return false */ + } +@@ -353,17 +353,17 @@ int cs; /* flag: force case-sensitive matching */ + c = *(p-1); + else + { +- uch cc = (cs ? (uch)*s : case_map((uch)*s)); ++ uch cc = (!ci ? (uch)*s : to_up((uch)*s)); + uch uc = (uch) c; + if (*(p+1) != '-') + for (uc = uc ? uc : (uch)*p; uc <= (uch)*p; uc++) + /* compare range */ +- if ((cs ? uc : case_map(uc)) == cc) +- return r ? 0 : recmatch(q + CLEN(q), s + CLEN(s), cs); ++ if ((!ci ? uc : to_up(uc)) == cc) ++ return r ? 0 : recmatch(q + CLEN(q), s + CLEN(s), ci); + c = e = 0; /* clear range, escape flags */ + } + } +- return r ? recmatch(q + CLEN(q), s + CLEN(s), cs) : 0; ++ return r ? recmatch(q + CLEN(q), s + CLEN(s), ci) : 0; + /* bracket match failed */ + } + #endif /* !VMS */ +@@ -382,18 +382,18 @@ int cs; /* flag: force case-sensitive matching */ + { + /* Match "...]" with "]". Continue after "]" in both. */ + if ((*(p+ 2* CLEN( p)) == ']') && (*s == ']')) +- return recmatch( (p+ 3* CLEN( p)), (s+ CLEN( s)), cs); ++ return recmatch( (p+ 3* CLEN( p)), (s+ CLEN( s)), ci); + + /* Else, look for a reduced match in s, until "]" in or end of s. */ + for (; *s && (*s != ']'); INCSTR(s)) + if (*s == '.') + /* If reduced match, then continue after "..." in p, "." in s. */ +- if ((c = recmatch( (p+ CLEN( p)), s, cs)) != 0) ++ if ((c = recmatch( (p+ CLEN( p)), s, ci)) != 0) + return (int)c; + + /* Match "...]" with "]". Continue after "]" in both. */ + if ((*(p+ 2* CLEN( p)) == ']') && (*s == ']')) +- return recmatch( (p+ 3* CLEN( p)), (s+ CLEN( s)), cs); ++ return recmatch( (p+ 3* CLEN( p)), (s+ CLEN( s)), ci); + + /* No reduced match. Quit. */ + return 2; +@@ -402,8 +402,8 @@ int cs; /* flag: force case-sensitive matching */ + #endif /* def VMS */ + + /* Just a character--compare it */ +- return (cs ? c == *s : case_map((uch)c) == case_map((uch)*s)) ? +- recmatch(p, s + CLEN(s), cs) : 0; ++ return (!ci ? c == *s : to_up((uch)c) == to_up((uch)*s)) ? ++ recmatch(p, s + CLEN(s), ci) : 0; + } + + diff --git a/gnu/packages/patches/unzip-close.patch b/gnu/packages/patches/unzip-close.patch new file mode 100644 index 0000000000..9a238a9006 --- /dev/null +++ b/gnu/packages/patches/unzip-close.patch @@ -0,0 +1,176 @@ +diff -up unzip60/extract.c.close unzip60/extract.c +--- unzip60/extract.c.close 2009-03-14 02:32:52.000000000 +0100 ++++ unzip60/extract.c 2009-11-19 08:17:23.481263496 +0100 +@@ -1924,24 +1924,21 @@ static int extract_or_test_member(__G) + + #ifdef VMS /* VMS: required even for stdout! (final flush) */ + if (!uO.tflag) /* don't close NULL file */ +- close_outfile(__G); ++ error = close_outfile(__G); + #else + #ifdef DLL + if (!uO.tflag && (!uO.cflag || G.redirect_data)) { + if (G.redirect_data) + FINISH_REDIRECT(); + else +- close_outfile(__G); ++ error = close_outfile(__G); + } + #else + if (!uO.tflag && !uO.cflag) /* don't close NULL file or stdout */ +- close_outfile(__G); ++ error = close_outfile(__G); + #endif + #endif /* VMS */ + +- /* GRR: CONVERT close_outfile() TO NON-VOID: CHECK FOR ERRORS! */ +- +- + if (G.disk_full) { /* set by flush() */ + if (G.disk_full > 1) { + #if (defined(DELETE_IF_FULL) && defined(HAVE_UNLINK)) +diff -up unzip60/unix/unix.c.close unzip60/unix/unix.c +--- unzip60/unix/unix.c.close 2009-01-24 00:31:26.000000000 +0100 ++++ unzip60/unix/unix.c 2009-11-19 08:33:25.568389171 +0100 +@@ -1096,10 +1096,41 @@ static int get_extattribs(__G__ pzt, z_u + #ifndef MTS + + /****************************/ ++/* Function CloseError() */ ++/***************************/ ++ ++int CloseError(__G) ++ __GDEF ++{ ++ int errval = PK_OK; ++ ++ if (fclose(G.outfile) < 0) { ++ switch (errno) { ++ case ENOSPC: ++ /* Do we need this on fileio.c? */ ++ Info(slide, 0x4a1, ((char *)slide, "%s: write error (disk full?). Continue? (y/n/^C) ", ++ FnFilter1(G.filename))); ++ fgets(G.answerbuf, 9, stdin); ++ if (*G.answerbuf == 'y') /* stop writing to this file */ ++ G.disk_full = 1; /* pass to next */ ++ else ++ G.disk_full = 2; /* no: exit program */ ++ ++ errval = PK_DISK; ++ break; ++ ++ default: ++ errval = PK_WARN; ++ } ++ } ++ return errval; ++} /* End of CloseError() */ ++ ++/****************************/ + /* Function close_outfile() */ + /****************************/ + +-void close_outfile(__G) /* GRR: change to return PK-style warning level */ ++int close_outfile(__G) + __GDEF + { + union { +@@ -1108,6 +1139,7 @@ void close_outfile(__G) /* GRR: chang + } zt; + ulg z_uidgid[2]; + int have_uidgid_flg; ++ int errval = PK_OK; + + have_uidgid_flg = get_extattribs(__G__ &(zt.t3), z_uidgid); + +@@ -1141,16 +1173,16 @@ void close_outfile(__G) /* GRR: chang + Info(slide, 0x201, ((char *)slide, + "warning: symbolic link (%s) failed: mem alloc overflow\n", + FnFilter1(G.filename))); +- fclose(G.outfile); +- return; ++ errval = CloseError(G.outfile, G.filename); ++ return errval ? errval : PK_WARN; + } + + if ((slnk_entry = (slinkentry *)malloc(slnk_entrysize)) == NULL) { + Info(slide, 0x201, ((char *)slide, + "warning: symbolic link (%s) failed: no mem\n", + FnFilter1(G.filename))); +- fclose(G.outfile); +- return; ++ errval = CloseError(G.outfile, G.filename); ++ return errval ? errval : PK_WARN; + } + slnk_entry->next = NULL; + slnk_entry->targetlen = ucsize; +@@ -1174,10 +1206,10 @@ void close_outfile(__G) /* GRR: chang + "warning: symbolic link (%s) failed\n", + FnFilter1(G.filename))); + free(slnk_entry); +- fclose(G.outfile); +- return; ++ errval = CloseError(G.outfile, G.filename); ++ return errval ? errval : PK_WARN; + } +- fclose(G.outfile); /* close "link" file for good... */ ++ errval = CloseError(G.outfile, G.filename); /* close "link" file for good... */ + slnk_entry->target[ucsize] = '\0'; + if (QCOND2) + Info(slide, 0, ((char *)slide, "-> %s ", +@@ -1188,7 +1220,7 @@ void close_outfile(__G) /* GRR: chang + else + G.slink_head = slnk_entry; + G.slink_last = slnk_entry; +- return; ++ return errval; + } + #endif /* SYMLINKS */ + +@@ -1201,7 +1233,7 @@ void close_outfile(__G) /* GRR: chang + #endif + + #if (defined(NO_FCHOWN)) +- fclose(G.outfile); ++ errval = CloseError(G.outfile, G.filename); + #endif + + /* if -X option was specified and we have UID/GID info, restore it */ +@@ -1227,7 +1259,7 @@ void close_outfile(__G) /* GRR: chang + } + + #if (!defined(NO_FCHOWN) && defined(NO_FCHMOD)) +- fclose(G.outfile); ++ errval = CloseError(G.outfile, G.filename); + #endif + + #if (!defined(NO_FCHOWN) && !defined(NO_FCHMOD)) +@@ -1239,7 +1271,7 @@ void close_outfile(__G) /* GRR: chang + if (fchmod(fileno(G.outfile), filtattr(__G__ G.pInfo->file_attr))) + perror("fchmod (file attributes) error"); + +- fclose(G.outfile); ++ errval = CloseError(G.outfile, G.filename); + #endif /* !NO_FCHOWN && !NO_FCHMOD */ + + /* skip restoring time stamps on user's request */ +@@ -1267,6 +1299,7 @@ void close_outfile(__G) /* GRR: chang + #endif + #endif /* NO_FCHOWN || NO_FCHMOD */ + ++ return errval; + } /* end function close_outfile() */ + + #endif /* !MTS */ +diff -up unzip60/unzpriv.h.close unzip60/unzpriv.h +--- unzip60/unzpriv.h.close 2009-04-20 01:59:26.000000000 +0200 ++++ unzip60/unzpriv.h 2009-11-19 08:19:08.610388618 +0100 +@@ -2604,7 +2604,7 @@ char *GetLoadPath OF((__GPRO)); + int SetFileSize OF((FILE *file, zusz_t filesize)); /* local */ + #endif + #ifndef MTS /* macro in MTS */ +- void close_outfile OF((__GPRO)); /* local */ ++ int close_outfile OF((__GPRO)); /* local */ + #endif + #ifdef SET_SYMLINK_ATTRIBS + int set_symlnk_attribs OF((__GPRO__ slinkentry *slnk_entry)); /* local */ diff --git a/gnu/packages/patches/unzip-exec-shield.patch b/gnu/packages/patches/unzip-exec-shield.patch new file mode 100644 index 0000000000..74500aa5d4 --- /dev/null +++ b/gnu/packages/patches/unzip-exec-shield.patch @@ -0,0 +1,10 @@ +diff -up unzip60/crc_i386.S.exec-shield unzip60/crc_i386.S +--- unzip60/crc_i386.S.exec-shield 2007-01-07 06:02:58.000000000 +0100 ++++ unzip60/crc_i386.S 2009-11-18 11:16:39.630389312 +0100 +@@ -302,3 +302,6 @@ _crc32: /* ulg c + #endif /* i386 || _i386 || _I386 || __i386 */ + + #endif /* !USE_ZLIB && !CRC_TABLE_ONLY */ ++ ++.section .note.GNU-stack, "", @progbits ++.previous diff --git a/gnu/packages/patches/unzip-fix-recmatch.patch b/gnu/packages/patches/unzip-fix-recmatch.patch new file mode 100644 index 0000000000..2a8583c8ca --- /dev/null +++ b/gnu/packages/patches/unzip-fix-recmatch.patch @@ -0,0 +1,477 @@ +diff -up unzip60/match.c.recmatch unzip60/match.c +--- unzip60/match.c.recmatch 2005-08-14 13:00:36.000000000 -0400 ++++ unzip60/match.c 2013-05-28 10:29:57.949077543 -0400 +@@ -27,16 +27,14 @@ + + --------------------------------------------------------------------------- + +- Copyright on recmatch() from Zip's util.c (although recmatch() was almost +- certainly written by Mark Adler...ask me how I can tell :-) ): ++ Copyright on recmatch() from Zip's util.c ++ Copyright (c) 1990-2005 Info-ZIP. All rights reserved. + +- Copyright (C) 1990-1992 Mark Adler, Richard B. Wales, Jean-loup Gailly, +- Kai Uwe Rommel and Igor Mandrichenko. ++ See the accompanying file LICENSE, version 2004-May-22 or later ++ for terms of use. ++ If, for some reason, both of these files are missing, the Info-ZIP license ++ also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html + +- Permission is granted to any individual or institution to use, copy, +- or redistribute this software so long as all of the original files are +- included unmodified, that it is not sold for profit, and that this copy- +- right notice is retained. + + --------------------------------------------------------------------------- + +@@ -53,7 +51,7 @@ + + A set is composed of characters or ranges; a range looks like ``character + hyphen character'' (as in 0-9 or A-Z). [0-9a-zA-Z_] is the minimal set of +- characters allowed in the [..] pattern construct. Other characters are ++ characters ALlowed in the [..] pattern construct. Other characters are + allowed (i.e., 8-bit characters) if your system will support them. + + To suppress the special syntactic significance of any of ``[]*?!^-\'', in- +@@ -101,8 +99,32 @@ + # define WILDCHAR '?' + # define BEG_RANGE '[' + # define END_RANGE ']' ++# define WILDCHR_SINGLE '?' ++# define DIRSEP_CHR '/' ++# define WILDCHR_MULTI '*' + #endif + ++#ifdef WILD_STOP_AT_DIR ++ int wild_stop_at_dir = 1; /* default wildcards do not include / in matches */ ++#else ++ int wild_stop_at_dir = 0; /* default wildcards do include / in matches */ ++#endif ++ ++ ++ ++/* ++ * case mapping functions. case_map is used to ignore case in comparisons, ++ * to_up is used to force upper case even on Unix (for dosify option). ++ */ ++#ifdef USE_CASE_MAP ++# define case_map(c) upper[(c) & 0xff] ++# define to_up(c) upper[(c) & 0xff] ++#else ++# define case_map(c) (c) ++# define to_up(c) ((c) >= 'a' && (c) <= 'z' ? (c)-'a'+'A' : (c)) ++#endif /* USE_CASE_MAP */ ++ ++ + #if 0 /* GRR: add this to unzip.h someday... */ + #if !(defined(MSDOS) && defined(DOSWILD)) + #ifdef WILD_STOP_AT_DIR +@@ -114,8 +136,8 @@ int recmatch OF((ZCONST uch *pattern, ZC + int ignore_case __WDLPRO)); + #endif + #endif /* 0 */ +-static int recmatch OF((ZCONST uch *pattern, ZCONST uch *string, +- int ignore_case __WDLPRO)); ++static int recmatch OF((ZCONST char *, ZCONST char *, ++ int)); + static char *isshexp OF((ZCONST char *p)); + static int namecmp OF((ZCONST char *s1, ZCONST char *s2)); + +@@ -154,192 +176,240 @@ int match(string, pattern, ignore_case _ + } + dospattern[j-1] = '\0'; /* nuke the end "." */ + } +- j = recmatch((uch *)dospattern, (uch *)string, ignore_case __WDL); ++ j = recmatch(dospattern, string, ignore_case); + free(dospattern); + return j == 1; + } else + #endif /* MSDOS && DOSWILD */ +- return recmatch((uch *)pattern, (uch *)string, ignore_case __WDL) == 1; ++ return recmatch(pattern, string, ignore_case) == 1; + } + ++#ifdef _MBCS ++ ++char *___tmp_ptr; + ++#endif + +-static int recmatch(p, s, ic __WDL) +- ZCONST uch *p; /* sh pattern to match */ +- ZCONST uch *s; /* string to which to match it */ +- int ic; /* true for case insensitivity */ +- __WDLDEF /* directory sepchar for WildStopAtDir mode, or 0 */ ++static int recmatch(p, s, cs) ++ZCONST char *p; /* sh pattern to match */ ++ZCONST char *s; /* string to match it to */ ++int cs; /* flag: force case-sensitive matching */ + /* Recursively compare the sh pattern p with the string s and return 1 if +- * they match, and 0 or 2 if they don't or if there is a syntax error in the +- * pattern. This routine recurses on itself no more deeply than the number +- * of characters in the pattern. */ ++ they match, and 0 or 2 if they don't or if there is a syntax error in the ++ pattern. This routine recurses on itself no deeper than the number of ++ characters in the pattern. */ + { +- unsigned int c; /* pattern char or start of range in [-] loop */ ++ int c; /* pattern char or start of range in [-] loop */ ++ /* Get first character, the pattern for new recmatch calls follows */ ++ /* borrowed from Zip's global.c */ ++ int no_wild = 0; ++ int allow_regex=1; ++ /* This fix provided by akt@m5.dion.ne.jp for Japanese. ++ See 21 July 2006 mail. ++ It only applies when p is pointing to a doublebyte character and ++ things like / and wildcards are not doublebyte. This probably ++ should not be needed. */ + +- /* Get first character, the pattern for new recmatch calls follows */ +- c = *p; INCSTR(p); ++#ifdef _MBCS ++ if (CLEN(p) == 2) { ++ if (CLEN(s) == 2) { ++ return (*p == *s && *(p+1) == *(s+1)) ? ++ recmatch(p + 2, s + 2, cs) : 0; ++ } else { ++ return 0; ++ } ++ } ++#endif /* ?_MBCS */ + +- /* If that was the end of the pattern, match if string empty too */ +- if (c == 0) +- return *s == 0; ++ c = *POSTINCSTR(p); + +- /* '?' (or '%') matches any character (but not an empty string). */ +- if (c == WILDCHAR) +-#ifdef WILD_STOP_AT_DIR +- /* If uO.W_flag is non-zero, it won't match '/' */ +- return (*s && (!sepc || *s != (uch)sepc)) +- ? recmatch(p, s + CLEN(s), ic, sepc) : 0; +-#else +- return *s ? recmatch(p, s + CLEN(s), ic) : 0; +-#endif ++ /* If that was the end of the pattern, match if string empty too */ ++ if (c == 0) ++ return *s == 0; ++ ++ /* '?' (or '%' or '#') matches any character (but not an empty string) */ ++ if (c == WILDCHR_SINGLE) { ++ if (wild_stop_at_dir) ++ return (*s && *s != DIRSEP_CHR) ? recmatch(p, s + CLEN(s), cs) : 0; ++ else ++ return *s ? recmatch(p, s + CLEN(s), cs) : 0; ++ } + +- /* '*' matches any number of characters, including zero */ ++ /* WILDCHR_MULTI ('*') matches any number of characters, including zero */ + #ifdef AMIGA +- if (c == '#' && *p == '?') /* "#?" is Amiga-ese for "*" */ +- c = '*', p++; ++ if (!no_wild && c == '#' && *p == '?') /* "#?" is Amiga-ese for "*" */ ++ c = WILDCHR_MULTI, p++; + #endif /* AMIGA */ +- if (c == '*') { +-#ifdef WILD_STOP_AT_DIR +- if (sepc) { +- /* check for single "*" or double "**" */ +-# ifdef AMIGA +- if ((c = p[0]) == '#' && p[1] == '?') /* "#?" is Amiga-ese for "*" */ +- c = '*', p++; +- if (c != '*') { +-# else /* !AMIGA */ +- if (*p != '*') { +-# endif /* ?AMIGA */ +- /* single "*": this doesn't match the dirsep character */ +- for (; *s && *s != (uch)sepc; INCSTR(s)) +- if ((c = recmatch(p, s, ic, sepc)) != 0) +- return (int)c; +- /* end of pattern: matched if at end of string, else continue */ +- if (*p == '\0') +- return (*s == 0); +- /* continue to match if at sepc in pattern, else give up */ +- return (*p == (uch)sepc || (*p == '\\' && p[1] == (uch)sepc)) +- ? recmatch(p, s, ic, sepc) : 2; +- } +- /* "**": this matches slashes */ +- ++p; /* move p behind the second '*' */ +- /* and continue with the non-W_flag code variant */ +- } +-#endif /* WILD_STOP_AT_DIR */ ++ if (!no_wild && c == WILDCHR_MULTI) ++ { ++ if (wild_stop_at_dir) { ++ /* Check for an immediately following WILDCHR_MULTI */ ++# ifdef AMIGA ++ if ((c = p[0]) == '#' && p[1] == '?') /* "#?" is Amiga-ese for "*" */ ++ c = WILDCHR_MULTI, p++; ++ if (c != WILDCHR_MULTI) { ++# else /* !AMIGA */ ++ if (*p != WILDCHR_MULTI) { ++# endif /* ?AMIGA */ ++ /* Single WILDCHR_MULTI ('*'): this doesn't match slashes */ ++ for (; *s && *s != DIRSEP_CHR; INCSTR(s)) ++ if ((c = recmatch(p, s, cs)) != 0) ++ return c; ++ /* end of pattern: matched if at end of string, else continue */ + if (*p == 0) +- return 1; +- if (isshexp((ZCONST char *)p) == NULL) { +- /* Optimization for rest of pattern being a literal string: +- * If there are no other shell expression chars in the rest +- * of the pattern behind the multi-char wildcard, then just +- * compare the literal string tail. +- */ +- ZCONST uch *srest; +- +- srest = s + (strlen((ZCONST char *)s) - strlen((ZCONST char *)p)); +- if (srest - s < 0) +- /* remaining literal string from pattern is longer than rest +- * of test string, there can't be a match +- */ +- return 0; +- else +- /* compare the remaining literal pattern string with the last +- * bytes of the test string to check for a match +- */ ++ return (*s == 0); ++ /* continue to match if at DIRSEP_CHR in pattern, else give up */ ++ return (*p == DIRSEP_CHR || (*p == '\\' && p[1] == DIRSEP_CHR)) ++ ? recmatch(p, s, cs) : 2; ++ } ++ /* Two consecutive WILDCHR_MULTI ("**"): this matches DIRSEP_CHR ('/') */ ++ p++; /* move p past the second WILDCHR_MULTI */ ++ /* continue with the normal non-WILD_STOP_AT_DIR code */ ++ } /* wild_stop_at_dir */ ++ ++ /* Not wild_stop_at_dir */ ++ if (*p == 0) ++ return 1; ++ if (!isshexp((char *)p)) ++ { ++ /* optimization for rest of pattern being a literal string */ ++ ++ /* optimization to handle patterns like *.txt */ ++ /* if the first char in the pattern is '*' and there */ ++ /* are no other shell expression chars, i.e. a literal string */ ++ /* then just compare the literal string at the end */ ++ ++ ZCONST char *srest; ++ ++ srest = s + (strlen(s) - strlen(p)); ++ if (srest - s < 0) ++ /* remaining literal string from pattern is longer than rest of ++ test string, there can't be a match ++ */ ++ return 0; ++ else ++ /* compare the remaining literal pattern string with the last bytes ++ of the test string to check for a match */ + #ifdef _MBCS +- { +- ZCONST uch *q = s; ++ { ++ ZCONST char *q = s; + +- /* MBCS-aware code must not scan backwards into a string from +- * the end. +- * So, we have to move forward by character from our well-known +- * character position s in the test string until we have +- * advanced to the srest position. +- */ +- while (q < srest) +- INCSTR(q); +- /* In case the byte *srest is a trailing byte of a multibyte +- * character in the test string s, we have actually advanced +- * past the position (srest). +- * For this case, the match has failed! +- */ +- if (q != srest) +- return 0; +- return ((ic +- ? namecmp((ZCONST char *)p, (ZCONST char *)q) +- : strcmp((ZCONST char *)p, (ZCONST char *)q) +- ) == 0); +- } ++ /* MBCS-aware code must not scan backwards into a string from ++ * the end. ++ * So, we have to move forward by character from our well-known ++ * character position s in the test string until we have advanced ++ * to the srest position. ++ */ ++ while (q < srest) ++ INCSTR(q); ++ /* In case the byte *srest is a trailing byte of a multibyte ++ * character, we have actually advanced past the position (srest). ++ * For this case, the match has failed! ++ */ ++ if (q != srest) ++ return 0; ++ return ((cs ? strcmp(p, q) : namecmp(p, q)) == 0); ++ } + #else /* !_MBCS */ +- return ((ic +- ? namecmp((ZCONST char *)p, (ZCONST char *)srest) +- : strcmp((ZCONST char *)p, (ZCONST char *)srest) +- ) == 0); ++ return ((cs ? strcmp(p, srest) : namecmp(p, srest)) == 0); + #endif /* ?_MBCS */ +- } else { +- /* pattern contains more wildcards, continue with recursion... */ +- for (; *s; INCSTR(s)) +- if ((c = recmatch(p, s, ic __WDL)) != 0) +- return (int)c; +- return 2; /* 2 means give up--match will return false */ +- } + } +- +- /* Parse and process the list of characters and ranges in brackets */ +- if (c == BEG_RANGE) { +- int e; /* flag true if next char to be taken literally */ +- ZCONST uch *q; /* pointer to end of [-] group */ +- int r; /* flag true to match anything but the range */ +- +- if (*s == 0) /* need a character to match */ +- return 0; +- p += (r = (*p == '!' || *p == '^')); /* see if reverse */ +- for (q = p, e = 0; *q; INCSTR(q)) /* find closing bracket */ +- if (e) +- e = 0; +- else +- if (*q == '\\') /* GRR: change to ^ for MS-DOS, OS/2? */ +- e = 1; +- else if (*q == END_RANGE) +- break; +- if (*q != END_RANGE) /* nothing matches if bad syntax */ +- return 0; +- for (c = 0, e = (*p == '-'); p < q; INCSTR(p)) { +- /* go through the list */ +- if (!e && *p == '\\') /* set escape flag if \ */ +- e = 1; +- else if (!e && *p == '-') /* set start of range if - */ +- c = *(p-1); +- else { +- unsigned int cc = Case(*s); +- +- if (*(p+1) != '-') +- for (c = c ? c : *p; c <= *p; c++) /* compare range */ +- if ((unsigned)Case(c) == cc) /* typecast for MSC bug */ +- return r ? 0 : recmatch(q + 1, s + 1, ic __WDL); +- c = e = 0; /* clear range, escape flags */ +- } +- } +- return r ? recmatch(q + CLEN(q), s + CLEN(s), ic __WDL) : 0; +- /* bracket match failed */ ++ else ++ { ++ /* pattern contains more wildcards, continue with recursion... */ ++ for (; *s; INCSTR(s)) ++ if ((c = recmatch(p, s, cs)) != 0) ++ return c; ++ return 2; /* 2 means give up--shmatch will return false */ + } ++ } + +- /* if escape ('\\'), just compare next character */ +- if (c == '\\' && (c = *p++) == 0) /* if \ at end, then syntax error */ +- return 0; ++#ifndef VMS /* No bracket matching in VMS */ ++ /* Parse and process the list of characters and ranges in brackets */ ++ if (!no_wild && allow_regex && c == '[') ++ { ++ int e; /* flag true if next char to be taken literally */ ++ ZCONST char *q; /* pointer to end of [-] group */ ++ int r; /* flag true to match anything but the range */ ++ ++ if (*s == 0) /* need a character to match */ ++ return 0; ++ p += (r = (*p == '!' || *p == '^')); /* see if reverse */ ++ for (q = p, e = 0; *q; q++) /* find closing bracket */ ++ if (e) ++ e = 0; ++ else ++ if (*q == '\\') ++ e = 1; ++ else if (*q == ']') ++ break; ++ if (*q != ']') /* nothing matches if bad syntax */ ++ return 0; ++ for (c = 0, e = *p == '-'; p < q; p++) /* go through the list */ ++ { ++ if (e == 0 && *p == '\\') /* set escape flag if \ */ ++ e = 1; ++ else if (e == 0 && *p == '-') /* set start of range if - */ ++ c = *(p-1); ++ else ++ { ++ uch cc = (cs ? (uch)*s : case_map((uch)*s)); ++ uch uc = (uch) c; ++ if (*(p+1) != '-') ++ for (uc = uc ? uc : (uch)*p; uc <= (uch)*p; uc++) ++ /* compare range */ ++ if ((cs ? uc : case_map(uc)) == cc) ++ return r ? 0 : recmatch(q + CLEN(q), s + CLEN(s), cs); ++ c = e = 0; /* clear range, escape flags */ ++ } ++ } ++ return r ? recmatch(q + CLEN(q), s + CLEN(s), cs) : 0; ++ /* bracket match failed */ ++ } ++#endif /* !VMS */ + +- /* just a character--compare it */ +-#ifdef QDOS +- return QMatch(Case((uch)c), Case(*s)) ? +- recmatch(p, s + CLEN(s), ic __WDL) : 0; +-#else +- return Case((uch)c) == Case(*s) ? +- recmatch(p, s + CLEN(s), ic __WDL) : 0; +-#endif ++ /* If escape ('\'), just compare next character */ ++ if (!no_wild && c == '\\') ++ if ((c = *p++) == '\0') /* if \ at end, then syntax error */ ++ return 0; ++ ++#ifdef VMS ++ /* 2005-11-06 SMS. ++ Handle "..." wildcard in p with "." or "]" in s. ++ */ ++ if ((c == '.') && (*p == '.') && (*(p+ CLEN( p)) == '.') && ++ ((*s == '.') || (*s == ']'))) ++ { ++ /* Match "...]" with "]". Continue after "]" in both. */ ++ if ((*(p+ 2* CLEN( p)) == ']') && (*s == ']')) ++ return recmatch( (p+ 3* CLEN( p)), (s+ CLEN( s)), cs); ++ ++ /* Else, look for a reduced match in s, until "]" in or end of s. */ ++ for (; *s && (*s != ']'); INCSTR(s)) ++ if (*s == '.') ++ /* If reduced match, then continue after "..." in p, "." in s. */ ++ if ((c = recmatch( (p+ CLEN( p)), s, cs)) != 0) ++ return (int)c; ++ ++ /* Match "...]" with "]". Continue after "]" in both. */ ++ if ((*(p+ 2* CLEN( p)) == ']') && (*s == ']')) ++ return recmatch( (p+ 3* CLEN( p)), (s+ CLEN( s)), cs); ++ ++ /* No reduced match. Quit. */ ++ return 2; ++ } ++ ++#endif /* def VMS */ ++ ++ /* Just a character--compare it */ ++ return (cs ? c == *s : case_map((uch)c) == case_map((uch)*s)) ? ++ recmatch(p, s + CLEN(s), cs) : 0; ++} + +-} /* end function recmatch() */ + + + ++/*************************************************************************************************/ + static char *isshexp(p) + ZCONST char *p; + /* If p is a sh expression, a pointer to the first special character is diff --git a/gnu/packages/patches/unzip-manpage-fix.patch b/gnu/packages/patches/unzip-manpage-fix.patch new file mode 100644 index 0000000000..ec06516bbb --- /dev/null +++ b/gnu/packages/patches/unzip-manpage-fix.patch @@ -0,0 +1,11 @@ +--- unzip60/man/unzip.1 2011-01-11 11:59:59.000000000 +0000 ++++ unzip60/man/unzip_new 2011-02-05 18:45:55.000000000 +0000 +@@ -424,7 +424,7 @@ + .\" Amiga support possible eventually, but not yet + [MS-DOS, OS/2, NT] restore the volume label if the extraction medium is + removable (e.g., a diskette). Doubling the option (\fB\-$$\fP) allows fixed +-media (hard disks) to be labelled as well. By default, volume labels are ++media (hard disks) to be labeled as well. By default, volume labels are + ignored. + .IP \fB\-/\fP\ \fIextensions\fP + [Acorn only] overrides the extension list supplied by Unzip$Ext environment diff --git a/gnu/packages/patches/unzip-overflow.patch b/gnu/packages/patches/unzip-overflow.patch new file mode 100644 index 0000000000..228c28377f --- /dev/null +++ b/gnu/packages/patches/unzip-overflow.patch @@ -0,0 +1,25 @@ +diff --git a/extract.c b/extract.c +index a0a4929..9ef80b3 100644 +--- a/extract.c ++++ b/extract.c +@@ -2214,6 +2214,7 @@ static int test_compr_eb(__G__ eb, eb_size, compr_offset, test_uc_ebdata) + ulg eb_ucsize; + uch *eb_ucptr; + int r; ++ ush method; + + if (compr_offset < 4) /* field is not compressed: */ + return PK_OK; /* do nothing and signal OK */ +@@ -2223,6 +2224,12 @@ static int test_compr_eb(__G__ eb, eb_size, compr_offset, test_uc_ebdata) + eb_size <= (compr_offset + EB_CMPRHEADLEN))) + return IZ_EF_TRUNC; /* no compressed data! */ + ++ method = makeword(eb + (EB_HEADSIZE + compr_offset)); ++ if ((method == STORED) && (eb_size != compr_offset + EB_CMPRHEADLEN + eb_ucsize)) ++ return PK_ERR; /* compressed & uncompressed ++ * should match in STORED ++ * method */ ++ + if ( + #ifdef INT_16BIT + (((ulg)(extent)eb_ucsize) != eb_ucsize) || diff --git a/gnu/packages/patches/unzip-timestamp.patch b/gnu/packages/patches/unzip-timestamp.patch new file mode 100644 index 0000000000..2aa9424eb8 --- /dev/null +++ b/gnu/packages/patches/unzip-timestamp.patch @@ -0,0 +1,41 @@ +From: "Steven M. Schweda" <sms@antinode.info> +Subject: Do not ignore extra fields containing Unix Timestamps +Bug-Debian: https://bugs.debian.org/842993 +X-Debian-version: 6.0-21 + +--- a/process.c ++++ b/process.c +@@ -2914,10 +2914,13 @@ + break; + + case EF_IZUNIX2: +- if (have_new_type_eb == 0) { +- flags &= ~0x0ff; /* ignore any previous IZUNIX field */ ++ if (have_new_type_eb == 0) { /* (< 1) */ + have_new_type_eb = 1; + } ++ if (have_new_type_eb <= 1) { ++ /* Ignore any prior (EF_IZUNIX/EF_PKUNIX) UID/GID. */ ++ flags &= 0x0ff; ++ } + #ifdef IZ_HAVE_UXUIDGID + if (have_new_type_eb > 1) + break; /* IZUNIX3 overrides IZUNIX2 e.f. block ! */ +@@ -2933,6 +2936,8 @@ + /* new 3rd generation Unix ef */ + have_new_type_eb = 2; + ++ /* Ignore any prior EF_IZUNIX/EF_PKUNIX/EF_IZUNIX2 UID/GID. */ ++ flags &= 0x0ff; + /* + Version 1 byte version of this extra field, currently 1 + UIDSize 1 byte Size of UID field +@@ -2953,8 +2958,6 @@ + uid_size = *((EB_HEADSIZE + 1) + ef_buf); + gid_size = *((EB_HEADSIZE + uid_size + 2) + ef_buf); + +- flags &= ~0x0ff; /* ignore any previous UNIX field */ +- + if ( read_ux3_value((EB_HEADSIZE + 2) + ef_buf, + uid_size, &z_uidgid[0]) + && diff --git a/gnu/packages/patches/unzip-valgrind.patch b/gnu/packages/patches/unzip-valgrind.patch new file mode 100644 index 0000000000..41a752023b --- /dev/null +++ b/gnu/packages/patches/unzip-valgrind.patch @@ -0,0 +1,26 @@ +diff --git a/fileio.c b/fileio.c +index ba0a1d0..03fc4be 100644 +--- a/fileio.c ++++ b/fileio.c +@@ -2006,6 +2006,7 @@ int do_string(__G__ length, option) /* return PK-type error code */ + unsigned comment_bytes_left; + unsigned int block_len; + int error=PK_OK; ++ unsigned int length2; + #ifdef AMIGA + char tmp_fnote[2 * AMIGA_FILENOTELEN]; /* extra room for squozen chars */ + #endif +@@ -2292,8 +2293,12 @@ int do_string(__G__ length, option) /* return PK-type error code */ + seek_zipf(__G__ G.cur_zipfile_bufstart - G.extra_bytes + + (G.inptr-G.inbuf) + length); + } else { +- if (readbuf(__G__ (char *)G.extra_field, length) == 0) ++ if ((length2 = readbuf(__G__ (char *)G.extra_field, length)) == 0) + return PK_EOF; ++ if(length2 < length) { ++ memset (__G__ (char *)G.extra_field+length2, 0 , length-length2); ++ length = length2; ++ } + /* Looks like here is where extra fields are read */ + getZip64Data(__G__ G.extra_field, length); + #ifdef UNICODE_SUPPORT diff --git a/gnu/packages/patches/unzip-x-option.patch b/gnu/packages/patches/unzip-x-option.patch new file mode 100644 index 0000000000..72c77aeb78 --- /dev/null +++ b/gnu/packages/patches/unzip-x-option.patch @@ -0,0 +1,28 @@ +--- ./process.c.orig 2009-03-06 02:25:10.000000000 +0100 ++++ ./process.c 2013-09-12 10:51:16.000000000 +0200 +@@ -2901,9 +2901,9 @@ + */ + + #ifdef IZ_HAVE_UXUIDGID +- if (eb_len >= EB_UX3_MINLEN +- && z_uidgid != NULL +- && (*((EB_HEADSIZE + 0) + ef_buf) == 1) ++ if ((eb_len >= EB_UX3_MINLEN) ++ && (z_uidgid != NULL) ++ && ((*((EB_HEADSIZE + 0) + ef_buf) == 1))) + /* only know about version 1 */ + { + uch uid_size; +@@ -2915,10 +2915,10 @@ + flags &= ~0x0ff; /* ignore any previous UNIX field */ + + if ( read_ux3_value((EB_HEADSIZE + 2) + ef_buf, +- uid_size, z_uidgid[0]) ++ uid_size, &z_uidgid[0]) + && + read_ux3_value((EB_HEADSIZE + uid_size + 3) + ef_buf, +- gid_size, z_uidgid[1]) ) ++ gid_size, &z_uidgid[1]) ) + { + flags |= EB_UX2_VALID; /* signal success */ + } diff --git a/gnu/packages/patches/unzip-zipbomb-manpage.patch b/gnu/packages/patches/unzip-zipbomb-manpage.patch new file mode 100644 index 0000000000..cdeeea5c93 --- /dev/null +++ b/gnu/packages/patches/unzip-zipbomb-manpage.patch @@ -0,0 +1,25 @@ +From 6fe72291a5563cdbcd2bdd87e36528537b7cdcfb Mon Sep 17 00:00:00 2001 +From: Jakub Martisko <jamartis@redhat.com> +Date: Mon, 18 Nov 2019 14:17:46 +0100 +Subject: [PATCH] update the man page + +--- + man/unzip.1 | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/man/unzip.1 b/man/unzip.1 +index 21816d1..4d66073 100644 +--- a/man/unzip.1 ++++ b/man/unzip.1 +@@ -850,6 +850,8 @@ the specified zipfiles were not found. + invalid options were specified on the command line. + .IP 11 + no matching files were found. ++.IP 12 ++invalid zip file with overlapped components (possible zip bomb). + .IP 50 + the disk is (or was) full during extraction. + .IP 51 +-- +2.23.0 + diff --git a/gnu/packages/patches/unzip-zipbomb-part1.patch b/gnu/packages/patches/unzip-zipbomb-part1.patch new file mode 100644 index 0000000000..35cf856522 --- /dev/null +++ b/gnu/packages/patches/unzip-zipbomb-part1.patch @@ -0,0 +1,25 @@ +From 41beb477c5744bc396fa1162ee0c14218ec12213 Mon Sep 17 00:00:00 2001 +From: Mark Adler <madler@alumni.caltech.edu> +Date: Mon, 27 May 2019 08:20:32 -0700 +Subject: [PATCH] Fix bug in undefer_input() that misplaced the input state. + +--- + fileio.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/fileio.c b/fileio.c +index c042987..bc00d74 100644 +--- a/fileio.c ++++ b/fileio.c +@@ -530,8 +530,10 @@ void undefer_input(__G) + * This condition was checked when G.incnt_leftover was set > 0 in + * defer_leftover_input(), and it is NOT allowed to touch G.csize + * before calling undefer_input() when (G.incnt_leftover > 0) +- * (single exception: see read_byte()'s "G.csize <= 0" handling) !! ++ * (single exception: see readbyte()'s "G.csize <= 0" handling) !! + */ ++ if (G.csize < 0L) ++ G.csize = 0L; + G.incnt = G.incnt_leftover + (int)G.csize; + G.inptr = G.inptr_leftover - (int)G.csize; + G.incnt_leftover = 0; diff --git a/gnu/packages/patches/unzip-zipbomb-part2.patch b/gnu/packages/patches/unzip-zipbomb-part2.patch new file mode 100644 index 0000000000..903c845763 --- /dev/null +++ b/gnu/packages/patches/unzip-zipbomb-part2.patch @@ -0,0 +1,349 @@ +From 47b3ceae397d21bf822bc2ac73052a4b1daf8e1c Mon Sep 17 00:00:00 2001 +From: Mark Adler <madler@alumni.caltech.edu> +Date: Tue, 11 Jun 2019 22:01:18 -0700 +Subject: [PATCH] Detect and reject a zip bomb using overlapped entries. + +This detects an invalid zip file that has at least one entry that +overlaps with another entry or with the central directory to the +end of the file. A Fifield zip bomb uses overlapped local entries +to vastly increase the potential inflation ratio. Such an invalid +zip file is rejected. + +See https://www.bamsoftware.com/hacks/zipbomb/ for David Fifield's +analysis, construction, and examples of such zip bombs. + +The detection maintains a list of covered spans of the zip files +so far, where the central directory to the end of the file and any +bytes preceding the first entry at zip file offset zero are +considered covered initially. Then as each entry is decompressed +or tested, it is considered covered. When a new entry is about to +be processed, its initial offset is checked to see if it is +contained by a covered span. If so, the zip file is rejected as +invalid. + +This commit depends on a preceding commit: "Fix bug in +undefer_input() that misplaced the input state." +--- + extract.c | 190 +++++++++++++++++++++++++++++++++++++++++++++++++++++- + globals.c | 1 + + globals.h | 3 + + process.c | 11 ++++ + unzip.h | 1 + + 5 files changed, 205 insertions(+), 1 deletion(-) + +diff --git a/extract.c b/extract.c +index 1acd769..0973a33 100644 +--- a/extract.c ++++ b/extract.c +@@ -319,6 +319,125 @@ static ZCONST char Far UnsupportedExtraField[] = + "\nerror: unsupported extra-field compression type (%u)--skipping\n"; + static ZCONST char Far BadExtraFieldCRC[] = + "error [%s]: bad extra-field CRC %08lx (should be %08lx)\n"; ++static ZCONST char Far NotEnoughMemCover[] = ++ "error: not enough memory for bomb detection\n"; ++static ZCONST char Far OverlappedComponents[] = ++ "error: invalid zip file with overlapped components (possible zip bomb)\n"; ++ ++ ++ ++ ++ ++/* A growable list of spans. */ ++typedef zoff_t bound_t; ++typedef struct { ++ bound_t beg; /* start of the span */ ++ bound_t end; /* one past the end of the span */ ++} span_t; ++typedef struct { ++ span_t *span; /* allocated, distinct, and sorted list of spans */ ++ size_t num; /* number of spans in the list */ ++ size_t max; /* allocated number of spans (num <= max) */ ++} cover_t; ++ ++/* ++ * Return the index of the first span in cover whose beg is greater than val. ++ * If there is no such span, then cover->num is returned. ++ */ ++static size_t cover_find(cover, val) ++ cover_t *cover; ++ bound_t val; ++{ ++ size_t lo = 0, hi = cover->num; ++ while (lo < hi) { ++ size_t mid = (lo + hi) >> 1; ++ if (val < cover->span[mid].beg) ++ hi = mid; ++ else ++ lo = mid + 1; ++ } ++ return hi; ++} ++ ++/* Return true if val lies within any one of the spans in cover. */ ++static int cover_within(cover, val) ++ cover_t *cover; ++ bound_t val; ++{ ++ size_t pos = cover_find(cover, val); ++ return pos > 0 && val < cover->span[pos - 1].end; ++} ++ ++/* ++ * Add a new span to the list, but only if the new span does not overlap any ++ * spans already in the list. The new span covers the values beg..end-1. beg ++ * must be less than end. ++ * ++ * Keep the list sorted and merge adjacent spans. Grow the allocated space for ++ * the list as needed. On success, 0 is returned. If the new span overlaps any ++ * existing spans, then 1 is returned and the new span is not added to the ++ * list. If the new span is invalid because beg is greater than or equal to ++ * end, then -1 is returned. If the list needs to be grown but the memory ++ * allocation fails, then -2 is returned. ++ */ ++static int cover_add(cover, beg, end) ++ cover_t *cover; ++ bound_t beg; ++ bound_t end; ++{ ++ size_t pos; ++ int prec, foll; ++ ++ if (beg >= end) ++ /* The new span is invalid. */ ++ return -1; ++ ++ /* Find where the new span should go, and make sure that it does not ++ overlap with any existing spans. */ ++ pos = cover_find(cover, beg); ++ if ((pos > 0 && beg < cover->span[pos - 1].end) || ++ (pos < cover->num && end > cover->span[pos].beg)) ++ return 1; ++ ++ /* Check for adjacencies. */ ++ prec = pos > 0 && beg == cover->span[pos - 1].end; ++ foll = pos < cover->num && end == cover->span[pos].beg; ++ if (prec && foll) { ++ /* The new span connects the preceding and following spans. Merge the ++ following span into the preceding span, and delete the following ++ span. */ ++ cover->span[pos - 1].end = cover->span[pos].end; ++ cover->num--; ++ memmove(cover->span + pos, cover->span + pos + 1, ++ (cover->num - pos) * sizeof(span_t)); ++ } ++ else if (prec) ++ /* The new span is adjacent only to the preceding span. Extend the end ++ of the preceding span. */ ++ cover->span[pos - 1].end = end; ++ else if (foll) ++ /* The new span is adjacent only to the following span. Extend the ++ beginning of the following span. */ ++ cover->span[pos].beg = beg; ++ else { ++ /* The new span has gaps between both the preceding and the following ++ spans. Assure that there is room and insert the span. */ ++ if (cover->num == cover->max) { ++ size_t max = cover->max == 0 ? 16 : cover->max << 1; ++ span_t *span = realloc(cover->span, max * sizeof(span_t)); ++ if (span == NULL) ++ return -2; ++ cover->span = span; ++ cover->max = max; ++ } ++ memmove(cover->span + pos + 1, cover->span + pos, ++ (cover->num - pos) * sizeof(span_t)); ++ cover->num++; ++ cover->span[pos].beg = beg; ++ cover->span[pos].end = end; ++ } ++ return 0; ++} + + + +@@ -374,6 +493,29 @@ int extract_or_test_files(__G) /* return PK-type error code */ + } + #endif /* !SFX || SFX_EXDIR */ + ++ /* One more: initialize cover structure for bomb detection. Start with a ++ span that covers the central directory though the end of the file. */ ++ if (G.cover == NULL) { ++ G.cover = malloc(sizeof(cover_t)); ++ if (G.cover == NULL) { ++ Info(slide, 0x401, ((char *)slide, ++ LoadFarString(NotEnoughMemCover))); ++ return PK_MEM; ++ } ++ ((cover_t *)G.cover)->span = NULL; ++ ((cover_t *)G.cover)->max = 0; ++ } ++ ((cover_t *)G.cover)->num = 0; ++ if ((G.extra_bytes != 0 && ++ cover_add((cover_t *)G.cover, 0, G.extra_bytes) != 0) || ++ cover_add((cover_t *)G.cover, ++ G.extra_bytes + G.ecrec.offset_start_central_directory, ++ G.ziplen) != 0) { ++ Info(slide, 0x401, ((char *)slide, ++ LoadFarString(NotEnoughMemCover))); ++ return PK_MEM; ++ } ++ + /*--------------------------------------------------------------------------- + The basic idea of this function is as follows. Since the central di- + rectory lies at the end of the zipfile and the member files lie at the +@@ -591,7 +733,8 @@ int extract_or_test_files(__G) /* return PK-type error code */ + if (error > error_in_archive) + error_in_archive = error; + /* ...and keep going (unless disk full or user break) */ +- if (G.disk_full > 1 || error_in_archive == IZ_CTRLC) { ++ if (G.disk_full > 1 || error_in_archive == IZ_CTRLC || ++ error == PK_BOMB) { + /* clear reached_end to signal premature stop ... */ + reached_end = FALSE; + /* ... and cancel scanning the central directory */ +@@ -1060,6 +1203,11 @@ static int extract_or_test_entrylist(__G__ numchunk, + + /* seek_zipf(__G__ pInfo->offset); */ + request = G.pInfo->offset + G.extra_bytes; ++ if (cover_within((cover_t *)G.cover, request)) { ++ Info(slide, 0x401, ((char *)slide, ++ LoadFarString(OverlappedComponents))); ++ return PK_BOMB; ++ } + inbuf_offset = request % INBUFSIZ; + bufstart = request - inbuf_offset; + +@@ -1591,6 +1739,18 @@ static int extract_or_test_entrylist(__G__ numchunk, + return IZ_CTRLC; /* cancel operation by user request */ + } + #endif ++ error = cover_add((cover_t *)G.cover, request, ++ G.cur_zipfile_bufstart + (G.inptr - G.inbuf)); ++ if (error < 0) { ++ Info(slide, 0x401, ((char *)slide, ++ LoadFarString(NotEnoughMemCover))); ++ return PK_MEM; ++ } ++ if (error != 0) { ++ Info(slide, 0x401, ((char *)slide, ++ LoadFarString(OverlappedComponents))); ++ return PK_BOMB; ++ } + #ifdef MACOS /* MacOS is no preemptive OS, thus call event-handling by hand */ + UserStop(); + #endif +@@ -1992,6 +2152,34 @@ static int extract_or_test_member(__G) /* return PK-type error code */ + } + + undefer_input(__G); ++ ++ if ((G.lrec.general_purpose_bit_flag & 8) != 0) { ++ /* skip over data descriptor (harder than it sounds, due to signature ++ * ambiguity) ++ */ ++# define SIG 0x08074b50 ++# define LOW 0xffffffff ++ uch buf[12]; ++ unsigned shy = 12 - readbuf((char *)buf, 12); ++ ulg crc = shy ? 0 : makelong(buf); ++ ulg clen = shy ? 0 : makelong(buf + 4); ++ ulg ulen = shy ? 0 : makelong(buf + 8); /* or high clen if ZIP64 */ ++ if (crc == SIG && /* if not SIG, no signature */ ++ (G.lrec.crc32 != SIG || /* if not SIG, have signature */ ++ (clen == SIG && /* if not SIG, no signature */ ++ ((G.lrec.csize & LOW) != SIG || /* if not SIG, have signature */ ++ (ulen == SIG && /* if not SIG, no signature */ ++ (G.zip64 ? G.lrec.csize >> 32 : G.lrec.ucsize) != SIG ++ /* if not SIG, have signature */ ++ ))))) ++ /* skip four more bytes to account for signature */ ++ shy += 4 - readbuf((char *)buf, 4); ++ if (G.zip64) ++ shy += 8 - readbuf((char *)buf, 8); /* skip eight more for ZIP64 */ ++ if (shy) ++ error = PK_ERR; ++ } ++ + return error; + + } /* end function extract_or_test_member() */ +diff --git a/globals.c b/globals.c +index fa8cca5..1e0f608 100644 +--- a/globals.c ++++ b/globals.c +@@ -181,6 +181,7 @@ Uz_Globs *globalsCtor() + # if (!defined(NO_TIMESTAMPS)) + uO.D_flag=1; /* default to '-D', no restoration of dir timestamps */ + # endif ++ G.cover = NULL; /* not allocated yet */ + #endif + + uO.lflag=(-1); +diff --git a/globals.h b/globals.h +index 11b7215..2bdcdeb 100644 +--- a/globals.h ++++ b/globals.h +@@ -260,12 +260,15 @@ typedef struct Globals { + ecdir_rec ecrec; /* used in unzip.c, extract.c */ + z_stat statbuf; /* used by main, mapname, check_for_newer */ + ++ int zip64; /* true if Zip64 info in extra field */ ++ + int mem_mode; + uch *outbufptr; /* extract.c static */ + ulg outsize; /* extract.c static */ + int reported_backslash; /* extract.c static */ + int disk_full; + int newfile; ++ void **cover; /* used in extract.c for bomb detection */ + + int didCRlast; /* fileio static */ + ulg numlines; /* fileio static: number of lines printed */ +diff --git a/process.c b/process.c +index 1e9a1e1..d2e4dc3 100644 +--- a/process.c ++++ b/process.c +@@ -637,6 +637,13 @@ void free_G_buffers(__G) /* releases all memory allocated in global vars */ + } + #endif + ++ /* Free the cover span list and the cover structure. */ ++ if (G.cover != NULL) { ++ free(*(G.cover)); ++ free(G.cover); ++ G.cover = NULL; ++ } ++ + } /* end function free_G_buffers() */ + + +@@ -1890,6 +1897,8 @@ int getZip64Data(__G__ ef_buf, ef_len) + #define Z64FLGS 0xffff + #define Z64FLGL 0xffffffff + ++ G.zip64 = FALSE; ++ + if (ef_len == 0 || ef_buf == NULL) + return PK_COOL; + +@@ -1927,6 +1936,8 @@ int getZip64Data(__G__ ef_buf, ef_len) + #if 0 + break; /* Expect only one EF_PKSZ64 block. */ + #endif /* 0 */ ++ ++ G.zip64 = TRUE; + } + + /* Skip this extra field block. */ +diff --git a/unzip.h b/unzip.h +index 5b2a326..ed24a5b 100644 +--- a/unzip.h ++++ b/unzip.h +@@ -645,6 +645,7 @@ typedef struct _Uzp_cdir_Rec { + #define PK_NOZIP 9 /* zipfile not found */ + #define PK_PARAM 10 /* bad or illegal parameters specified */ + #define PK_FIND 11 /* no files found */ ++#define PK_BOMB 12 /* likely zip bomb */ + #define PK_DISK 50 /* disk full */ + #define PK_EOF 51 /* unexpected EOF */ + diff --git a/gnu/packages/patches/unzip-zipbomb-part3.patch b/gnu/packages/patches/unzip-zipbomb-part3.patch new file mode 100644 index 0000000000..3b8d67b773 --- /dev/null +++ b/gnu/packages/patches/unzip-zipbomb-part3.patch @@ -0,0 +1,112 @@ +From 6d351831be705cc26d897db44f878a978f4138fc Mon Sep 17 00:00:00 2001 +From: Mark Adler <madler@alumni.caltech.edu> +Date: Thu, 25 Jul 2019 20:43:17 -0700 +Subject: [PATCH] Do not raise a zip bomb alert for a misplaced central + directory. + +There is a zip-like file in the Firefox distribution, omni.ja, +which is a zip container with the central directory placed at the +start of the file instead of after the local entries as required +by the zip standard. This commit marks the actual location of the +central directory, as well as the end of central directory records, +as disallowed locations. This now permits such containers to not +raise a zip bomb alert, where in fact there are no overlaps. +--- + extract.c | 25 +++++++++++++++++++------ + process.c | 6 ++++++ + unzpriv.h | 10 ++++++++++ + 3 files changed, 35 insertions(+), 6 deletions(-) + +diff --git a/extract.c b/extract.c +index 0973a33..1b73cb0 100644 +--- a/extract.c ++++ b/extract.c +@@ -493,8 +493,11 @@ int extract_or_test_files(__G) /* return PK-type error code */ + } + #endif /* !SFX || SFX_EXDIR */ + +- /* One more: initialize cover structure for bomb detection. Start with a +- span that covers the central directory though the end of the file. */ ++ /* One more: initialize cover structure for bomb detection. Start with ++ spans that cover any extra bytes at the start, the central directory, ++ the end of central directory record (including the Zip64 end of central ++ directory locator, if present), and the Zip64 end of central directory ++ record, if present. */ + if (G.cover == NULL) { + G.cover = malloc(sizeof(cover_t)); + if (G.cover == NULL) { +@@ -506,15 +509,25 @@ int extract_or_test_files(__G) /* return PK-type error code */ + ((cover_t *)G.cover)->max = 0; + } + ((cover_t *)G.cover)->num = 0; +- if ((G.extra_bytes != 0 && +- cover_add((cover_t *)G.cover, 0, G.extra_bytes) != 0) || +- cover_add((cover_t *)G.cover, ++ if (cover_add((cover_t *)G.cover, + G.extra_bytes + G.ecrec.offset_start_central_directory, +- G.ziplen) != 0) { ++ G.extra_bytes + G.ecrec.offset_start_central_directory + ++ G.ecrec.size_central_directory) != 0) { + Info(slide, 0x401, ((char *)slide, + LoadFarString(NotEnoughMemCover))); + return PK_MEM; + } ++ if ((G.extra_bytes != 0 && ++ cover_add((cover_t *)G.cover, 0, G.extra_bytes) != 0) || ++ (G.ecrec.have_ecr64 && ++ cover_add((cover_t *)G.cover, G.ecrec.ec64_start, ++ G.ecrec.ec64_end) != 0) || ++ cover_add((cover_t *)G.cover, G.ecrec.ec_start, ++ G.ecrec.ec_end) != 0) { ++ Info(slide, 0x401, ((char *)slide, ++ LoadFarString(OverlappedComponents))); ++ return PK_BOMB; ++ } + + /*--------------------------------------------------------------------------- + The basic idea of this function is as follows. Since the central di- +diff --git a/process.c b/process.c +index d2e4dc3..d75d405 100644 +--- a/process.c ++++ b/process.c +@@ -1408,6 +1408,10 @@ static int find_ecrec64(__G__ searchlen) /* return PK-class error */ + + /* Now, we are (almost) sure that we have a Zip64 archive. */ + G.ecrec.have_ecr64 = 1; ++ G.ecrec.ec_start -= ECLOC64_SIZE+4; ++ G.ecrec.ec64_start = ecrec64_start_offset; ++ G.ecrec.ec64_end = ecrec64_start_offset + ++ 12 + makeint64(&byterec[ECREC64_LENGTH]); + + /* Update the "end-of-central-dir offset" for later checks. */ + G.real_ecrec_offset = ecrec64_start_offset; +@@ -1542,6 +1546,8 @@ static int find_ecrec(__G__ searchlen) /* return PK-class error */ + makelong(&byterec[OFFSET_START_CENTRAL_DIRECTORY]); + G.ecrec.zipfile_comment_length = + makeword(&byterec[ZIPFILE_COMMENT_LENGTH]); ++ G.ecrec.ec_start = G.real_ecrec_offset; ++ G.ecrec.ec_end = G.ecrec.ec_start + 22 + G.ecrec.zipfile_comment_length; + + /* Now, we have to read the archive comment, BEFORE the file pointer + is moved away backwards to seek for a Zip64 ECLOC64 structure. +diff --git a/unzpriv.h b/unzpriv.h +index dc9eff5..297b3c7 100644 +--- a/unzpriv.h ++++ b/unzpriv.h +@@ -2185,6 +2185,16 @@ typedef struct VMStimbuf { + int have_ecr64; /* valid Zip64 ecdir-record exists */ + int is_zip64_archive; /* Zip64 ecdir-record is mandatory */ + ush zipfile_comment_length; ++ zusz_t ec_start, ec_end; /* offsets of start and end of the ++ end of central directory record, ++ including if present the Zip64 ++ end of central directory locator, ++ which immediately precedes the ++ end of central directory record */ ++ zusz_t ec64_start, ec64_end; /* if have_ecr64 is true, then these ++ are the offsets of the start and ++ end of the Zip64 end of central ++ directory record */ + } ecdir_rec; + + diff --git a/gnu/packages/patches/vtk-fix-freetypetools-build-failure.patch b/gnu/packages/patches/vtk-fix-freetypetools-build-failure.patch new file mode 100644 index 0000000000..6988e65872 --- /dev/null +++ b/gnu/packages/patches/vtk-fix-freetypetools-build-failure.patch @@ -0,0 +1,36 @@ +This fixes a build failure in VTK when building against recent versions +of freetype. + + https://gitlab.kitware.com/vtk/vtk/-/merge_requests/7432 + +Patch by Ben Boeckel <ben.boeckel@kitware.com> + +Subject: [PATCH] vtkFreeTypeTools: avoid using an internal macro + +This macro has been removed upstream as it was always intended to be +private. +--- + Rendering/FreeType/vtkFreeTypeTools.cxx | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +diff --git a/Rendering/FreeType/vtkFreeTypeTools.cxx b/Rendering/FreeType/vtkFreeTypeTools.cxx +index c54289dc60..03b899c4da 100644 +--- a/Rendering/FreeType/vtkFreeTypeTools.cxx ++++ b/Rendering/FreeType/vtkFreeTypeTools.cxx +@@ -387,11 +387,8 @@ FTC_CMapCache* vtkFreeTypeTools::GetCMapCache() + } + + //---------------------------------------------------------------------------- +-FT_CALLBACK_DEF(FT_Error) +-vtkFreeTypeToolsFaceRequester(FTC_FaceID face_id, +- FT_Library lib, +- FT_Pointer request_data, +- FT_Face* face) ++static FT_Error vtkFreeTypeToolsFaceRequester( ++ FTC_FaceID face_id, FT_Library lib, FT_Pointer request_data, FT_Face* face) + { + #if VTK_FTFC_DEBUG_CD + printf("vtkFreeTypeToolsFaceRequester()\n"); +-- +2.30.1 + diff --git a/gnu/packages/patches/ytnef-CVE-2021-3403.patch b/gnu/packages/patches/ytnef-CVE-2021-3403.patch new file mode 100644 index 0000000000..4b1c9d659f --- /dev/null +++ b/gnu/packages/patches/ytnef-CVE-2021-3403.patch @@ -0,0 +1,32 @@ +From f2380a53fb84d370eaf6e6c3473062c54c57fac7 Mon Sep 17 00:00:00 2001 +From: Oliver Giles <ohw.giles@gmail.com> +Date: Mon, 1 Feb 2021 10:12:16 +1300 +Subject: [PATCH] Prevent potential double-free in TNEFSubjectHandler + +If TNEFSubjectHandler is called multiple times, but the last time +failed due to the PREALLOCCHECK, the subject.data member will be +a freed, but invalid pointer. To prevent a double-free next time +TNEFSubjectHandler is entered, set it to zero after freeing. + +Resolves: #85 +Reported-by: jasperla +--- + lib/ytnef.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/lib/ytnef.c b/lib/ytnef.c +index b148719..b06c807 100644 +--- a/lib/ytnef.c ++++ b/lib/ytnef.c +@@ -301,8 +301,10 @@ int TNEFFromHandler STD_ARGLIST { + } + // ----------------------------------------------------------------------------- + int TNEFSubjectHandler STD_ARGLIST { +- if (TNEF->subject.data) ++ if (TNEF->subject.data) { + free(TNEF->subject.data); ++ TNEF->subject.data = NULL; ++ } + + PREALLOCCHECK(size, 100); + TNEF->subject.data = calloc(size+1, sizeof(BYTE)); diff --git a/gnu/packages/patches/ytnef-CVE-2021-3404.patch b/gnu/packages/patches/ytnef-CVE-2021-3404.patch new file mode 100644 index 0000000000..e991d6aff1 --- /dev/null +++ b/gnu/packages/patches/ytnef-CVE-2021-3404.patch @@ -0,0 +1,30 @@ +From f9ff4a203b8c155d51a208cadadb62f224fba715 Mon Sep 17 00:00:00 2001 +From: Oliver Giles <ohw.giles@gmail.com> +Date: Mon, 1 Feb 2021 10:18:17 +1300 +Subject: [PATCH] Ensure the size of the version field is 4 bytes + +A corrupted version field size can cause TNEFVersion to access outside +of allocated memory. Check the version is the expected size and raise +an error if not. + +Resolves: #86 +Reported-by: jasperla +--- + lib/ytnef.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/lib/ytnef.c b/lib/ytnef.c +index b148719..ffede44 100644 +--- a/lib/ytnef.c ++++ b/lib/ytnef.c +@@ -335,6 +335,10 @@ int TNEFRendData STD_ARGLIST { + int TNEFVersion STD_ARGLIST { + WORD major; + WORD minor; ++ if (size != 2 * sizeof(WORD)) { ++ printf("Incorrect size of version field, suspected corruption\n"); ++ return -1; ++ } + minor = SwapWord((BYTE*)data, size); + major = SwapWord((BYTE*)data + 2, size - 2); + diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index e81c3caf87..437000b7c0 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -1276,7 +1276,7 @@ python-pypdf2 instead.") (define-public pdfarranger (package (name "pdfarranger") - (version "1.7.0") + (version "1.7.1") (source (origin (method git-fetch) @@ -1285,7 +1285,7 @@ python-pypdf2 instead.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0dmgmvpghsm938iznalbg8h8k17a5h3q466yfc67mcll428n4nx3")))) + (base32 "1c2mafnz8pv32wzkc2wx4q8y2x7xffpn6ag12dj7ga5n772fb6s3")))) (build-system python-build-system) (arguments '(#:tests? #f ;no tests diff --git a/gnu/packages/pep.scm b/gnu/packages/pep.scm index 2bcedf9979..289796a377 100644 --- a/gnu/packages/pep.scm +++ b/gnu/packages/pep.scm @@ -81,21 +81,6 @@ shell provides options to redirect the output into a pipe or a file.") (file-name (string-append name "-" version)) (sha256 (base32 checksum))))))) -(define sequoia4pEp - ;; Currently pEp Engine requires sequoia in not-so-current version - (package/inherit sequoia - (name "sequoia") - (version "0.15.0-pEp") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.com/sequoia-pgp/sequoia.git") - (commit "0eb1b6cd846ea8c36b3dfdf01ec88383fc64f2fe"))) - (sha256 - (base32 "06dqs9whwp9lfibwp8dqm0aw4nm3s3v4jp2n4fz51zcvsld40nfh")) - (file-name (git-file-name name version)))))) - (define-public pep-engine (package (name "pep-engine") diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index e3c0a6f777..4f2507286c 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -15,7 +15,7 @@ ;;; Copyright © 2017 Raoul J.P. Bonnal <ilpuccio.febo@gmail.com> ;;; Copyright © 2017, 2018, 2020 Marius Bakke <marius@gnu.org> ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com> -;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2017, 2018–2021 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> @@ -6824,14 +6824,14 @@ private methods are not.") (define-public perl-moosex-getopt (package (name "perl-moosex-getopt") - (version "0.74") + (version "0.75") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/" "MooseX-Getopt-" version ".tar.gz")) (sha256 - (base32 "091crga5gjyhj2lz55w3ba37xq6pmjg5dx5xccsrzghy8cxxzq0x")))) + (base32 "1j7b2jnf0blxr4czp3vfcnv1h5zj601mrfdm92g1wf5wn9dvxwv3")))) (build-system perl-build-system) (native-inputs `(("perl-module-build" ,perl-module-build) diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index d0c8f276ff..3dc3d7b3b6 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2015, 2017 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Roel Janssen <roel@gnu.org> -;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Leo Famulari <leo@famulari.name> ;;; Copyright © 2020 Sebastian Schott <sschott@mailbox.org> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> @@ -585,7 +585,7 @@ and enhance them.") (define-public photoflare (package (name "photoflare") - (version "1.6.6") + (version "1.6.7") (source (origin (method git-fetch) @@ -594,7 +594,7 @@ and enhance them.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "07lrlxagv1bljj607s8m0zsbzx9jrvi18bnxahnm7r4i5car5x2d")))) + (base32 "0rh5gvnc1zwx4p9h599s82m69gsxp19nnfcxsblx3b2ddwzxh78v")))) (build-system gnu-build-system) (arguments '(#:tests? #f ;no tests diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm index 655acfebf0..0b2c24c743 100644 --- a/gnu/packages/plotutils.scm +++ b/gnu/packages/plotutils.scm @@ -206,14 +206,14 @@ colors, styles, options and details.") (define-public asymptote (package (name "asymptote") - (version "2.69") + (version "2.70") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/asymptote/" version "/asymptote-" version ".src.tgz")) (sha256 - (base32 "17gp9n0cgwlbsy16jya07cjw18drbg2gqhdghlvmkybpfh3mcr26")))) + (base32 "0gqcm0m916kjzyfswlplhyyvmqhg9hsishmbg4pyjcwchlx93k7m")))) (build-system gnu-build-system) ;; Note: The 'asy' binary retains a reference to docdir for use with its ;; "help" command in interactive mode, so adding a "doc" output is not diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm index 88dff5c7b4..af02fd91a9 100644 --- a/gnu/packages/pretty-print.scm +++ b/gnu/packages/pretty-print.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2019 Meiyo Peng <meiyo@riseup.net> ;;; Copyright © 2020 Paul Garlick <pgarlick@tourbillion-technology.com> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> +;;; Copyright © 2021 Greg Hogan <code@greghogan.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -166,14 +167,14 @@ different programming languages.") (define-public fmt (package (name "fmt") - (version "7.0.3") + (version "7.1.3") (source (origin (method url-fetch) (uri (string-append "https://github.com/fmtlib/fmt/releases/download/" version "/fmt-" version ".zip")) (sha256 - (base32 "0kgajl3qsrdyj0csqsz8b8h84kasdy0pnh16byl0y1vlsaddzkyy")))) + (base32 "17sc10hfg087z0s774lnn05wwy3bfzmcv7j448p92pr0s02cb62x")))) (build-system cmake-build-system) (arguments '(#:configure-flags '("-DBUILD_SHARED_LIBS=ON"))) diff --git a/gnu/packages/prolog.scm b/gnu/packages/prolog.scm index 9e0fe2a829..a5c57cd37c 100644 --- a/gnu/packages/prolog.scm +++ b/gnu/packages/prolog.scm @@ -86,7 +86,7 @@ manner. It also features an interactive interpreter.") (define-public swi-prolog (package (name "swi-prolog") - (version "8.3.10") + (version "8.3.20") (source (origin (method git-fetch) (uri (git-reference @@ -96,7 +96,7 @@ manner. It also features an interactive interpreter.") (file-name (git-file-name name version)) (sha256 (base32 - "15q40qpxz472lp190zbk0lyap2xgaxzib55l0c3qwgf9haz46j1p")))) + "1g0v9cmz8zvzc1n0si7sn6522xwzbhj2b8967ibs6prinrpjc8d6")))) (build-system cmake-build-system) (arguments `(#:parallel-build? #t diff --git a/gnu/packages/python-build.scm b/gnu/packages/python-build.scm index 140629ca43..95d0b3653d 100644 --- a/gnu/packages/python-build.scm +++ b/gnu/packages/python-build.scm @@ -150,13 +150,13 @@ order to make bootstrapping easier.") (define-public python-poetry-core (package (name "python-poetry-core") - (version "1.0.0") + (version "1.0.2") (source (origin (method url-fetch) (uri (pypi-uri "poetry-core" version)) (sha256 - (base32 "1mgv276h1iphn5fqhp2sgkgd5d0c39hs33vgaf157x5ri7rlyrka")))) + (base32 "0wgfc51dgymnfg23mvsxl4iqbdrppysxi4s3z3xhzx3cd9jmsl7z")))) (build-system python-build-system) (home-page "https://github.com/python-poetry/poetry-core") (synopsis "Poetry PEP 517 build back-end") diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm index f98a6bb37b..f7342c6436 100644 --- a/gnu/packages/python-check.scm +++ b/gnu/packages/python-check.scm @@ -29,7 +29,9 @@ (define-module (gnu packages python-check) #:use-module (gnu packages) #:use-module (gnu packages check) + #:use-module (gnu packages django) #:use-module (gnu packages openstack) + #:use-module (gnu packages python-build) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages web) @@ -41,6 +43,31 @@ #:use-module (guix download) #:use-module (guix build-system python)) +(define-public python-testfixtures + (package + (name "python-testfixtures") + (version "6.17.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "testfixtures" version)) + (sha256 + (base32 "1nlv2hz20czjp4a811ichl5kwg99rh84l0mw9wq4rk3idzfs1hsy")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ; PyTest-Django fails to build in master + (native-inputs + `(("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) + ;;("python-pytest-django" ,python-pytest-django) + ("python-twine" ,python-twine) + ("python-wheel" ,python-wheel))) + (synopsis "Tests components for Python") + (description "Testfixtures is a collection of helpers and mock objects that +are useful when writing automated tests in Python.") + (home-page "https://testfixtures.readthedocs.io/en/latest/") + (license license:expat))) + (define-public python-coveralls (package (name "python-coveralls") @@ -1289,22 +1316,23 @@ help in debugging failures and optimizing the scheduler to improve speed.") (define-public python-pytest-sanic (package (name "python-pytest-sanic") - (version "1.6.2") + (version "1.7.0") (source (origin (method url-fetch) (uri (pypi-uri "pytest-sanic" version)) (sha256 (base32 - "02ajd8z77ahi69kzkz200qgxrb4s2j4qb6k8j9ds1kz6qa6fsa34")))) + "0hm7im77dgqfk8k34qbbfhimg8hifl4zwpa2s3mgbknrjvyw5qpx")))) (build-system python-build-system) (arguments ;; Tests depend on python-sanic. `(#:tests? #f)) (propagated-inputs - `(("python-aiohttp" ,python-aiohttp) + `(("python-httpx" ,python-httpx) ("python-async-generator" ,python-async-generator) - ("python-pytest" ,python-pytest))) + ("python-pytest" ,python-pytest) + ("python-websockets" ,python-websockets))) (home-page "https://github.com/yunstanford/pytest-sanic") (synopsis "Pytest plugin for Sanic") diff --git a/gnu/packages/python-compression.scm b/gnu/packages/python-compression.scm index 6b2da5f925..2065e6e38f 100644 --- a/gnu/packages/python-compression.scm +++ b/gnu/packages/python-compression.scm @@ -202,8 +202,7 @@ algorithm within the Numpy framework.") (license license:expat))) (define-public bitshuffle-for-snappy - (package - (inherit bitshuffle) + (package/inherit bitshuffle (name "bitshuffle-for-snappy") (build-system gnu-build-system) (arguments diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm index 0a1ace6328..900b6ddfe6 100644 --- a/gnu/packages/python-crypto.scm +++ b/gnu/packages/python-crypto.scm @@ -335,7 +335,7 @@ etc.). The package is structured to make adding new modules easy.") (define-public python2-pycrypto (let ((pycrypto (package-with-python2 python-pycrypto))) - (package (inherit pycrypto) + (package/inherit pycrypto (inputs `(("python" ,python-2) ,@(alist-delete @@ -554,7 +554,7 @@ message digests and key derivation functions.") (define-public python2-cryptography (let ((crypto (package-with-python2 (strip-python2-variant python-cryptography)))) - (package (inherit crypto) + (package/inherit crypto (propagated-inputs `(("python2-ipaddress" ,python2-ipaddress) ("python2-backport-ssl-match-hostname" @@ -1091,6 +1091,10 @@ provides drop-in compatibility with PyCrypto."))) (sha256 (base32 "09yirf3w77w6f49q6nxhrjm9c3a4y9s30s1k09chqrw8zdgx8sjc")))) (build-system python-build-system) + (arguments + `(;; FIXME: Tests start failing with time due to date checks in TLS + ;; certificates. + #:tests? #f)) (inputs `(("openssl" ,openssl))) (native-inputs `(("swig" ,swig))) (home-page "https://gitlab.com/m2crypto/m2crypto") @@ -1108,7 +1112,7 @@ through the Engine interface.") (define-public python2-m2crypto (let ((m2crypto (package-with-python2 (strip-python2-variant python-m2crypto)))) - (package (inherit m2crypto) + (package/inherit m2crypto (propagated-inputs `(("python2-typing" ,python2-typing)))))) diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm index a1e2b57669..79ee7c8bb2 100644 --- a/gnu/packages/python-science.scm +++ b/gnu/packages/python-science.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2016, 2020 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2016, 2020, 2021 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> @@ -9,7 +9,7 @@ ;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com> -;;; Copyright © 2020 Vinicius Monego <monego@posteo.net> +;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2021 Greg Hogan <code@greghogan.com> ;;; ;;; This file is part of GNU Guix. @@ -36,6 +36,8 @@ #:use-module (gnu packages maths) #:use-module (gnu packages perl) #:use-module (gnu packages python) + #:use-module (gnu packages python-build) + #:use-module (gnu packages python-check) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages sphinx) @@ -240,18 +242,34 @@ logic, also known as grey logic.") (define-public python-scikit-image (package (name "python-scikit-image") - (version "0.17.2") + (version "0.18.1") (source (origin (method url-fetch) (uri (pypi-uri "scikit-image" version)) (sha256 - (base32 "1cyqqbcbrg3prc36wis0sm3q5rjhd7h9bp33jwfyixzhi02lr5dx")))) + (base32 "0wgisa03smhrphcjnhq7waa5vyyd32b67hblapjbqrqqj751idpv")))) (build-system python-build-system) (arguments - ;; TODO: Some tests require running X11 server. Disable them? - '(#:tests? #f)) - ;; See DEPENDS.txt for the list of build and run time requiremnts + `(#:phases + (modify-phases %standard-phases + (add-before 'build 'change-home-dir + (lambda _ + ;; Change from /homeless-shelter to /tmp for write permission. + (setenv "HOME" "/tmp") + #t)) + (replace 'build + (lambda _ + (invoke "make"))) + (replace 'check + (lambda _ + ;; The following tests require online data. + (invoke "python" "-m" "pytest" "skimage" "--doctest-modules" "-k" + (string-append "not test_ndim" + " and not test_skin"))))))) + ;; See requirements/ for the list of build and run time requirements. + ;; NOTE: scikit-image has an optional dependency on python-pooch, however + ;; propagating it would enable many more tests that require online data. (propagated-inputs `(("python-cloudpickle" ,python-cloudpickle) ("python-dask" ,python-dask) @@ -262,10 +280,15 @@ logic, also known as grey logic.") ("python-pillow" ,python-pillow) ("python-pywavelets" ,python-pywavelets) ("python-scipy" ,python-scipy) - ("python-six" ,python-six) ("python-tifffile" ,python-tifffile))) (native-inputs - `(("python-cython" ,python-cython))) + `(("python-codecov" ,python-codecov) + ("python-cython" ,python-cython) + ("python-flake8" ,python-flake8) + ("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) + ("python-pytest-localserver" ,python-pytest-localserver) + ("python-wheel" ,python-wheel))) (home-page "https://scikit-image.org/") (synopsis "Image processing in Python") (description @@ -531,3 +554,66 @@ serialization and deserialization of numerical and array data types provided by numpy using the highly efficient @code{msgpack} format. Serialization of Python's native complex data types is also supported.") (license license:bsd-3))) + +(define-public python-statannot + (package + (name "python-statannot") + (version "0.2.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "statannot" version)) + (sha256 + (base32 + "1f8c2sylzr7lpjbyqxsqlp9xi8rj3d8c9hfh98x4jbb83zxc4026")))) + (build-system python-build-system) + (propagated-inputs + `(("python-numpy" ,python-numpy) + ("python-seaborn" ,python-seaborn) + ("python-matplotlib" ,python-matplotlib) + ("python-pandas" ,python-pandas) + ("python-scipy" ,python-scipy))) + (home-page + "https://github.com/webermarcolivier/statannot") + (synopsis "Add annotations to existing plots generated by seaborn") + (description + "This is a Python package to compute statistical test and add statistical +annotations on an existing boxplots and barplots generated by seaborn.") + (license license:expat))) + +(define-public python-upsetplot + (package + (name "python-upsetplot") + (version "0.4.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "UpSetPlot" version)) + (sha256 + (base32 + "0kwljcmsvrxm33y3ssham2bwv4a5m31mv96y9h18va0cv7s3mqn1")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-versioning + (lambda _ + (substitute* "setup.py" + (("pytest-cov<2.6") "pytest-cov")))) + (replace 'check + (lambda* (#:key inputs outputs #:allow-other-keys) + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "-v" "--doctest-modules")))))) + (propagated-inputs + `(("python-matplotlib" ,python-matplotlib) + ("python-pandas" ,python-pandas))) + (native-inputs + `(("python-pytest-runner" ,python-pytest-runner) + ("python-pytest-cov" ,python-pytest-cov))) + (home-page "https://upsetplot.readthedocs.io") + (synopsis "Draw UpSet plots with Pandas and Matplotlib") + (description + "This is a Python implementation of UpSet plots by Lex et al. +UpSet plots are used to visualize set overlaps; like Venn diagrams but more +readable.") + (license license:bsd-3))) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index c7437316cc..4e06d5ed85 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -9,7 +9,7 @@ ;;; Copyright © 2017 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016, 2017, 2020 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> -;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org> +;;; Copyright © 2014, 2017, 2021 Eric Bavier <bavier@posteo.net> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com> ;;; Copyright © 2015, 2016, 2017, 2019 Leo Famulari <leo@famulari.name> @@ -91,6 +91,74 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (srfi srfi-1)) +(define-public python-prawcore + (package + (name "python-prawcore") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "prawcore" version)) + (sha256 + (base32 "1l9nrn4s03xl8fvkyybdk86bm9cyyk43alkxf9g014a9ynvdk65l")))) + (build-system python-build-system) + (native-inputs + `(("python-betamax" ,python-betamax) + ("python-betamax-matchers" ,python-betamax-matchers) + ("python-betamax-serializers" ,python-betamax-serializers) + ("python-mock" ,python-mock) + ("python-pytest" ,python-pytest) + ("python-testfixtures" ,python-testfixtures))) + (propagated-inputs + `(("python-requests" ,python-requests))) + (synopsis "Core component of PRAW") + (description "PRAWcore is a low-level communication layer used by PRAW.") + (home-page "https://praw.readthedocs.io/en/latest/") + (license license:bsd-2))) + +(define-public python-praw + (package + (name "python-praw") + (version "7.2.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "praw" version)) + (sha256 + (base32 "0ll1a0n8xs8gykizdsfrw63jp6bc39ab0pk3yzwcak96fyxh0ij3")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-failing-tests + (lambda _ + (with-directory-excursion "tests" + ;; Require networking. + (for-each delete-file-recursively + '("integration/models" "unit/models")) + ;; https://github.com/praw-dev/praw/issues/1699 + ;; #issuecomment-795336704 + (delete-file "unit/test_config.py")) + #t)) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest")) + #t))))) + (native-inputs + `(("python-betamax" ,python-betamax) + ("python-betamax-matchers" ,python-betamax-matchers) + ("python-pytest" ,python-pytest))) + (propagated-inputs + `(("python-prawcore" ,python-prawcore) + ("python-websocket-client" ,python-websocket-client))) + (synopsis "Python Reddit API Wrapper") + (description "PRAW is a Python package that allows for simple access to +Reddit’s API. It aims to be easy to use and internally follows all of Reddit’s +API rules.") + (home-page "https://praw.readthedocs.io/en/latest/") + (license license:bsd-2))) + (define-public python-aiohttp (package (name "python-aiohttp") @@ -541,9 +609,6 @@ over a different origin than that of the web application.") @code{urllib} and @code{urlparse} modules for manipulating URLs.") (license license:unlicense))) -(define-public python2-furl - (package-with-python2 python-furl)) - (define-public python-httplib2 (package (name "python-httplib2") @@ -626,8 +691,7 @@ Swartz.") (define-public python2-html2text (let ((base (package-with-python2 python-html2text))) - (package - (inherit base) + (package/inherit base ;; This is the last version with support for Python 2. (version "2019.8.11") (source (origin @@ -933,9 +997,6 @@ support for Flask. This is based on the Python babel module as well as pytz - both of which are installed automatically if you install this library.") (license license:bsd-3))) -(define-public python2-flask-babel - (package-with-python2 python-flask-babel)) - (define-public python-flask-cors (package (name "python-flask-cors") @@ -1637,7 +1698,7 @@ connection to each user.") (define-public python2-tornado (let ((tornado (package-with-python2 (strip-python2-variant python-tornado)))) - (package (inherit tornado) + (package/inherit tornado (propagated-inputs `(("python2-backport-ssl-match-hostname" ,python2-backport-ssl-match-hostname) @@ -1696,7 +1757,7 @@ term.js Javascript terminal emulator library.") (define-public python2-terminado (let ((terminado (package-with-python2 (strip-python2-variant python-terminado)))) - (package (inherit terminado) + (package/inherit terminado (propagated-inputs `(("python2-backport-ssl-match-hostname" ,python2-backport-ssl-match-hostname) @@ -2283,7 +2344,7 @@ verification of the SSL peer.") ;; python2-openssl requires special care, so package-with-python2 is ;; insufficient. (define-public python2-ndg-httpsclient - (package (inherit python-ndg-httpsclient) + (package/inherit python-ndg-httpsclient (name "python2-ndg-httpsclient") (arguments (substitute-keyword-arguments (package-arguments python-ndg-httpsclient) @@ -2315,8 +2376,7 @@ WebSocket usage in Python programs.") (define-public python2-websocket-client (let ((base (package-with-python2 (strip-python2-variant python-websocket-client)))) - (package - (inherit base) + (package/inherit base (native-inputs `(("python2-backport-ssl-match-hostname" ,python2-backport-ssl-match-hostname) @@ -2622,8 +2682,7 @@ authenticated session objects providing things like keep-alive.") (define-public python2-rauth (let ((base (package-with-python2 (strip-python2-variant python-rauth)))) - (package - (inherit base) + (package/inherit base (native-inputs `(("python2-unittest2" ,python2-unittest2) ,@(package-native-inputs base)))))) @@ -2638,6 +2697,7 @@ authenticated session objects providing things like keep-alive.") (sha256 (base32 "024yldjwjavps39yb77sc422z8fa9bn20wcqrcncjwrqjab8y60r")))) + (replacement python-urllib3/fixed) (build-system python-build-system) (arguments `(#:tests? #f)) (propagated-inputs @@ -2656,6 +2716,17 @@ supports url redirection and retries, and also gzip and deflate decoding.") (properties `((python2-variant . ,(delay python2-urllib3)))) (license license:expat))) +(define python-urllib3/fixed + (package/inherit python-urllib3 + (version "1.26.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "urllib3" version)) + (sha256 + (base32 + "0dw9w9bs3hmr5dp3r3h43jyzzb1g1046ag7lj8pqf58i4kvj3c77")))))) + ;; Some software requires an older version of urllib3, notably Docker. (define-public python-urllib3-1.24 (package (inherit python-urllib3) @@ -2836,9 +2907,6 @@ and Jinja2 template engine. It is called a micro framework because it does not presume or force a developer to use a particular tool or library.") (license license:bsd-3))) -(define-public python2-flask - (package-with-python2 python-flask)) - (define-public python-flask-wtf (package (name "python-flask-wtf") @@ -2869,9 +2937,6 @@ presume or force a developer to use a particular tool or library.") upload, and reCAPTCHA.") (license license:bsd-3))) -(define-public python2-flask-wtf - (package-with-python2 python-flask-wtf)) - (define-public python-flask-multistatic (package (name "python-flask-multistatic") @@ -2892,9 +2957,6 @@ upload, and reCAPTCHA.") for overriding static files.") (license license:gpl3+))) -(define-public python2-flask-multistatic - (package-with-python2 python-flask-multistatic)) - (define-public python-cookies (package (name "python-cookies") @@ -3107,7 +3169,7 @@ provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients." (define-public python2-url (let ((base (package-with-python2 (strip-python2-variant python-url)))) - (package (inherit base) + (package/inherit base (propagated-inputs `(("python2-publicsuffix" ,python2-publicsuffix)))))) @@ -3204,6 +3266,26 @@ Betamax.") (define-public python2-betamax-matchers (package-with-python2 python-betamax-matchers)) +(define-public python-betamax-serializers + (package + (name "python-betamax-serializers") + (version "0.2.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "betamax-serializers" version)) + (sha256 + (base32 "0ja9isbjmzzhxdj69s0kdsvw8nkp073w6an6a4liy5vk3fdl2p1l")))) + (build-system python-build-system) + (propagated-inputs + `(("python-betamax" ,python-betamax) + ("python-pyyaml" ,python-pyyaml))) + (synopsis "Set of third-party serializers for Betamax") + (description "Betamax-Serializers are an experimental set of Serializers for +Betamax that may possibly end up in the main package.") + (home-page "https://gitlab.com/betamax/serializers") + (license license:asl2.0))) + (define-public python-s3transfer (package (name "python-s3transfer") @@ -3249,8 +3331,7 @@ transfers.") (define-public python2-s3transfer (let ((base (package-with-python2 (strip-python2-variant python-s3transfer)))) - (package - (inherit base) + (package/inherit base (native-inputs `(("python2-futures" ,python2-futures) ,@(package-native-inputs base)))))) @@ -3490,9 +3571,6 @@ It comes with safe defaults and easily configurable options.") "Minify @code{text/html} MIME type responses when using @code{Flask}.") (license license:bsd-3))) -(define-public python2-flask-htmlmin - (package-with-python2 python-flask-htmlmin)) - (define-public python-jsmin (package (name "python-jsmin") @@ -3546,9 +3624,6 @@ handles the common tasks of logging in, logging out, and remembering your users' sessions over extended periods of time.") (license license:expat))) -(define-public python2-flask-login - (package-with-python2 python-flask-login)) - (define-public python-oauth2client (package (name "python-oauth2client") @@ -3690,6 +3765,29 @@ this it tries to be opinion-free and very extendable.") (define-public python2-elasticsearch (package-with-python2 python-elasticsearch)) +(define-public python-engineio + (package + (name "python-engineio") + (version "4.0.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "python-engineio" version)) + (sha256 + (base32 + "0xqkjjxbxakz9fd7v94rkr2r5r9nrkap2c3gf3abbd0j6ld5qmxv")))) + (build-system python-build-system) + (propagated-inputs + `(("python-aiohttp" ,python-aiohttp) + ("python-requests" ,python-requests) + ("python-websocket-client" ,python-websocket-client))) + (arguments '(#:tests? #f)) ; Tests not included in release tarball. + (home-page "https://github.com/miguelgrinberg/python-engineio/") + (synopsis "Engine.IO server") + (description "Python implementation of the Engine.IO realtime client and +server.") + (license license:expat))) + (define-public python-flask-script (package (name "python-flask-script") @@ -5355,6 +5453,27 @@ decorators and tools to describe your API and expose its documentation properly Swagger.") (license license:bsd-3))) +(define-public python-flask-socketio + (package + (name "python-flask-socketio") + (version "5.0.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "Flask-SocketIO" version)) + (sha256 + (base32 + "09r2gpj2nbn72v2zaf6xsvlazln77pgqzp2pg2021nja47sijhsw")))) + (build-system python-build-system) + (propagated-inputs + `(("python-flask" ,python-flask) + ("python-socketio" ,python-socketio))) + (arguments '(#:tests? #f)) ; Tests not included in release tarball. + (home-page "https://github.com/miguelgrinberg/Flask-SocketIO/") + (synopsis "Socket.IO integration for Flask applications") + (description "Socket.IO integration for Flask applications") + (license license:expat))) + (define-public python-manuel (package (name "python-manuel") @@ -5635,14 +5754,14 @@ as a Python package.") (define-public python-sanic (package (name "python-sanic") - (version "20.9.1") + (version "20.12.2") (source (origin (method url-fetch) (uri (pypi-uri "sanic" version)) (sha256 (base32 - "06p0lsxqbfbka2yaqlpp0bg5pf7ma44zi6kq7qbb6hhry48dp1w6")))) + "1c02gdp1j18xny9jd33fp0w57qqi7g66zwmaykv2dhcks96f5mxr")))) (build-system python-build-system) (arguments '(#:phases @@ -5651,9 +5770,8 @@ as a Python package.") ;; Allow using recent dependencies. (lambda* (#:key inputs #:allow-other-keys) (substitute* "setup.py" - (("httpcore==0.3.0") "httpcore") (("pytest==5.2.1") "pytest") - (("multidict==5.0.0") "multidict") + (("multidict>=5.0,<6.0") "multidict") (("httpx==0\\.15\\.4") "httpx")) #t)) (replace 'check @@ -5679,19 +5797,46 @@ as a Python package.") ("python-pytest-benchmark" ,python-pytest-benchmark) ("python-pytest-sanic" ,python-pytest-sanic) ("python-pytest-sugar" ,python-pytest-sugar) + ("python-pytest-asyncio" ,python-pytest-asyncio) ("python-urllib3" ,python-urllib3) ("python-uvicorn" ,python-uvicorn))) (home-page - "https://github.com/huge-success/sanic/") + "https://github.com/sanic-org/sanic/") (synopsis - "Async Python 3.6+ web server/framework") + "Async Python web server/framework") (description - "Sanic is a Python 3.6+ web server and web framework + "Sanic is a Python web server and web framework that's written to go fast. It allows the usage of the @code{async/await} syntax added in Python 3.5, which makes your code non-blocking and speedy.") (license license:expat))) +(define-public python-socketio + (package + (name "python-socketio") + (version "5.1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "python-socketio" version)) + (sha256 + (base32 + "14vhpxdn54lz54mhcqlgcks0ssbws9gd1y7ii16a2g3gpfdc531k")))) + (build-system python-build-system) + (propagated-inputs + `(("python-aiohttp" ,python-aiohttp) + ("python-bidict" ,python-bidict) + ("python-engineio" ,python-engineio) + ("python-requests" ,python-requests) + ("python-websocket-client" ,python-websocket-client) + ("python-websockets" ,python-websockets))) + (arguments '(#:tests? #f)) ; Tests not included in release tarball. + (home-page "https://github.com/miguelgrinberg/python-socketio/") + (synopsis "Python Socket.IO server") + (description + "Python implementation of the Socket.IO realtime client and server.") + (license license:expat))) + (define-public python-socks (package (name "python-socks") diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 789e83728f..92ac335272 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016, 2019 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org> +;;; Copyright © 2014, 2017, 2021 Eric Bavier <bavier@posteo.net> ;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com> ;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu> @@ -27,7 +27,7 @@ ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org> ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Marius Bakke <marius@gnu.org> -;;; Copyright © 2016, 2017 Stefan Reichör <stefan@xsteve.at> +;;; Copyright © 2016, 2017, 2021 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2016, 2017, 2019 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016, 2017, 2018, 2020, 2021 Julien Lepiller <julien@lepiller.eu> @@ -98,6 +98,7 @@ ;;; Copyright © 2020 EuAndreh <eu@euandre.org> ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com> ;;; Copyright © 2021 Ellis Kenyő <me@elken.dev> +;;; Copyright © 2021 LibreMiami <packaging-guix@libremiami.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -569,8 +570,7 @@ iotop, uptime, pidof, tty, taskset, pmap.") (define-public python2-psutil (let ((base (package-with-python2 (strip-python2-variant python-psutil)))) - (package - (inherit base) + (package/inherit base (propagated-inputs `(("python2-enum34" ,python2-enum34) ;optional ,@(package-propagated-inputs base)))))) @@ -652,25 +652,31 @@ module and then similar looking characters are removed.") (define-public python-logwrap (package (name "python-logwrap") - (version "3.2.1") + (version "8.2.0.post0") (source (origin (method url-fetch) - (uri (pypi-uri "logwrap" version ".zip")) + (uri (pypi-uri "logwrap" version)) (sha256 (base32 - "1d2k0hvpbi51vl410y8fbs5m0nxnlh2k7gr2nrh3k81ibhzscsra")))) + "1dv7gny3rfci5cal2ipr6d0pcz3yhka7af96dfsd3ir1mxy8p1j9")))) (build-system python-build-system) - (propagated-inputs - `(("python-six" ,python-six) - ("python-typing" ,python-typing))) + (arguments + `(#:tests? #f ; Tests not included in pypi release. + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest")) + #t))))) (native-inputs - `(("unzip" ,unzip) - ("python-cython" ,python-cython) + `(("python-cython" ,python-cython) ("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-runner" ,python-pytest-runner))) - (home-page "https://github.com/penguinolog/logwrap") + ("python-setuptools-scm" ,python-setuptools-scm) + ("python-toml" ,python-toml) + ("python-wheel" ,python-wheel))) + (home-page "https://github.com/python-useful-helpers/logwrap") (synopsis "Decorator for logging function arguments") (description "This package provides a decorator to log function arguments and function call return values in a human-readable way.") @@ -763,6 +769,47 @@ certificate returned by the server to which a connection has been established, and verifies that it matches the intended target hostname.") (license license:psfl))) +(define-public python-bidict + (package + (name "python-bidict") + (version "0.21.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "bidict" version)) + (sha256 + (base32 + "02dy0b1k7qlhn7ajyzkrvxhyhjj0hzcq6ws3zjml9hkdz5znz92g")))) + (build-system python-build-system) + (native-inputs + `(("python-coverage" ,python-coverage) + ("python-hypothesis" ,python-hypothesis) + ("python-pre-commit" ,python-pre-commit) + ("python-py" ,python-py) + ("python-pytest" ,python-pytest) + ("python-pytest-benchmark" ,python-pytest-benchmark) + ("python-pytest-cov" ,python-pytest-cov) + ("python-setuptools-scm" ,python-setuptools-scm) + ("python-sortedcollections" ,python-sortedcollections) + ("python-sortedcontainers" ,python-sortedcontainers) + ("python-sphinx" ,python-sphinx) + ("python-sphinx-autodoc-typehints" ,python-sphinx-autodoc-typehints) + ("python-tox" ,python-tox))) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'relax-reqs + (lambda _ + (substitute* "setup.py" + (("sortedcollections < 2") "sortedcollections")) + #t)) + (replace 'check + (lambda _ (invoke "./run_tests.py")))))) + (home-page "https://bidict.readthedocs.io") + (synopsis "Bidirectional mapping library") + (description "The @code{bidict} library provides several data structures +for working with bidirectional mappings in Python.") + (license license:mpl2.0))) + (define-public python-bitarray (package (name "python-bitarray") @@ -928,9 +975,6 @@ concepts.") @code{subprocess} feature.") (license license:expat))) -(define-public python2-sh - (package-with-python2 python-sh)) - (define-public python-cftime (package (name "python-cftime") @@ -1118,8 +1162,7 @@ other machines, such as over the network.") (define-public python2-serpent (let ((base (package-with-python2 (strip-python2-variant python-serpent)))) - (package - (inherit base) + (package/inherit base (propagated-inputs `(("python-enum34" ,python2-enum34) ,@(package-propagated-inputs base)))))) @@ -1292,7 +1335,7 @@ helpers.") (define-public python2-humanfriendly (let ((base (package-with-python2 (strip-python2-variant python-humanfriendly)))) - (package (inherit base) + (package/inherit base (propagated-inputs `(("python2-monotonic" ,python2-monotonic) ,@(package-propagated-inputs base)))))) @@ -1814,7 +1857,9 @@ standard.") "1hgz8jq19wlz8vwqj900ry8cjv578nz4scc91mlc8944yid6573c")))) (build-system python-build-system) (propagated-inputs - `(("python-greenlet" ,python-greenlet))) + `(("python-dnspython" ,python-dnspython) + ("python-greenlet" ,python-greenlet) + ("python-monotonic" ,python-monotonic))) (arguments ;; TODO: Requires unpackaged 'enum-compat'. '(#:tests? #f)) @@ -2116,8 +2161,7 @@ commands.") (define-public python2-empy (let ((base (package-with-python2 (strip-python2-variant python-empy)))) - (package - (inherit base) + (package/inherit base (arguments `(,@(package-arguments base) #:tests? #t))))) @@ -2246,7 +2290,7 @@ backported for previous versions of Python from 2.4 to 3.3.") (define-public python2-parse-type (let ((base (package-with-python2 (strip-python2-variant python-parse-type)))) - (package (inherit base) + (package/inherit base (propagated-inputs `(("python2-enum34" ,python2-enum34) ,@(package-propagated-inputs base)))))) @@ -2295,8 +2339,7 @@ existing ones.") (define-public python2-polib (let ((base (package-with-python2 (strip-python2-variant python-polib)))) - (package - (inherit base) + (package/inherit base (arguments `(,@(package-arguments base) ;; Tests don't work with python2. #:tests? #f))))) @@ -2878,7 +2921,7 @@ compare, diff, and patch JSON and JSON-like structures in Python.") (define-public python2-jsonschema (let ((jsonschema (package-with-python2 (strip-python2-variant python-jsonschema)))) - (package (inherit jsonschema) + (package/inherit jsonschema (propagated-inputs `(("python2-functools32" ,python2-functools32) ,@(package-propagated-inputs jsonschema)))))) @@ -3381,15 +3424,16 @@ logic-free templating system Mustache.") (properties `((python2-variant . ,(delay python2-pystache)))))) (define-public python2-pystache - (package (inherit (package-with-python2 - (strip-python2-variant python-pystache))) - (arguments - `(#:python ,python-2 - #:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "python" "test_pystache.py")))))))) + (let ((base (package-with-python2 + (strip-python2-variant python-pystache)))) + (package/inherit base + (arguments + `(#:python ,python-2 + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "python" "test_pystache.py"))))))))) (define-public python-joblib (package @@ -3728,7 +3772,7 @@ to deprecate classes, functions or methods.") (define-public python-pygithub (package (name "python-pygithub") - (version "1.43.8") + (version "1.54.1") (source ;; We fetch from the Git repo because there are no tests in the PyPI ;; archive. @@ -3739,27 +3783,24 @@ to deprecate classes, functions or methods.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1625v558xga5mwhl9jqmibywy5qafmg1vqrirqz6zfq1la1d22mw")))) + (base32 "1nl74bp5ikdnrc8xq0qr25ryl1mvarf0xi43k8w5jzlrllhq0nkq")))) (build-system python-build-system) (arguments - `(#:phases (modify-phases %standard-phases - ;; Some tests rely on the network. - (add-after 'unpack 'disable-failing-tests - (lambda _ - (substitute* "tests/Issue142.py" - (("testDecodeJson") - "disabled_testDecodeJson")))) - (add-before 'check 'prepare-for-tests - (lambda _ - (for-each (lambda (f) - (chmod f #o666)) - (find-files "./tests")) - (system* "python" "-m" "lib2to3" "-w" "-n" "tests")))))) + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest")) + #t))))) (propagated-inputs - `(("python-deprecated" ,python-deprecated) + `(("python-cryptography" ,python-cryptography) + ("python-deprecated" ,python-deprecated) ("python-pyjwt" ,python-pyjwt) ("python-requests" ,python-requests))) - (native-inputs `(("python-httpretty" ,python-httpretty))) + (native-inputs + `(("python-httpretty" ,python-httpretty) + ("python-pytest" ,python-pytest))) (home-page "https://pygithub.readthedocs.io/en/latest/") (synopsis "Python library for the GitHub API") (description "This library allows managing GitHub resources such as @@ -4450,8 +4491,7 @@ writing C extensions for Python as easy as Python itself.") (define-public python2-cython (let ((base (package-with-python2 (strip-python2-variant python-cython)))) - (package - (inherit base) + (package/inherit base (name "python2-cython") (inputs `(("python-2" ,python-2))) ;this is not automatically changed @@ -5001,8 +5041,7 @@ that client code uses to construct the grammar directly in Python code.") (define-public python2-numpydoc (let ((base (package-with-python2 (strip-python2-variant python-numpydoc)))) - (package - (inherit base) + (package/inherit base (propagated-inputs `(("python2-jinja2" ,python2-jinja2) ,@(package-propagated-inputs base)))))) @@ -5769,13 +5808,13 @@ the OleFileIO module from PIL, the Python Image Library.") (define-public python-pikepdf (package (name "python-pikepdf") - (version "2.8.0") + (version "2.9.1") (source (origin (method url-fetch) (uri (pypi-uri "pikepdf" version)) (sha256 - (base32 "1dfc8a7gp6ib6a2gdx6fz2zvvk4yx8vr2m7b6044rk91vpyrdzvl")))) + (base32 "1n53fhdgnq9yxvm2m039vl8l2kg3fkln3pm0wv4rzj0gvpq9rhcr")))) (build-system python-build-system) (arguments `(#:tests? #false)) ;require python-xmp-toolkit @@ -6335,9 +6374,6 @@ graphics library with support for multiple backends including image buffers, PNG, PostScript, PDF, and SVG file output.") (license license:bsd-3))) -(define-public python2-cairocffi - (package-with-python2 python-cairocffi)) - (define-public python-decorator (package (name "python-decorator") @@ -7031,8 +7067,7 @@ CLI scripts: (define-public python2-ipyparallel (let ((ipyparallel (package-with-python2 python-ipyparallel))) - (package - (inherit ipyparallel) + (package/inherit ipyparallel (propagated-inputs `(("python2-futures" ,python2-futures) ,@(package-propagated-inputs ipyparallel)))))) @@ -7121,8 +7156,7 @@ without using the configuration machinery.") (define-public python2-traitlets (let ((traitlets (package-with-python2 (strip-python2-variant python-traitlets)))) - (package - (inherit traitlets) + (package/inherit traitlets (propagated-inputs `(("python2-enum34" ,python2-enum34) ,@(package-propagated-inputs traitlets)))))) @@ -7674,7 +7708,7 @@ implementation of D-Bus.") (license license:expat))) (define-public python2-dbus - (package (inherit python-dbus) + (package/inherit python-dbus (name "python2-dbus") (inputs `(("python" ,python-2) ,@(alist-delete "python" @@ -7748,10 +7782,10 @@ converts incoming documents to Unicode and outgoing documents to UTF-8.") (properties `((python2-variant . ,(delay python2-beautifulsoup4)))))) (define-public python2-beautifulsoup4 - (package - (inherit (package-with-python2 - (strip-python2-variant python-beautifulsoup4))) - (arguments `(#:python ,python-2)))) + (let ((base (package-with-python2 + (strip-python2-variant python-beautifulsoup4)))) + (package/inherit base + (arguments `(#:python ,python-2))))) (define-public python-soupsieve (package @@ -7895,16 +7929,81 @@ of the structure, dynamics, and functions of complex networks.") Python.") (license license:lgpl2.1+))) +(define-public python-amply + (package + (name "python-amply") + (version "0.1.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "amply" version)) + (sha256 + (base32 + "0f1db9zp0rsfzxvaz55xwh8h5rfdgr9a2a715g06ic8nknsdq4nb")))) + (build-system python-build-system) + (propagated-inputs + `(("python-docutils" ,python-docutils) + ("python-pyparsing" ,python-pyparsing))) + (native-inputs + `(("python-setuptools-scm" ,python-setuptools-scm))) + (home-page "https://github.com/willu47/amply") + (synopsis "Load and manipulate AMPL/GLPK data as Python data structures") + (description + "Amply allows you to load and manipulate AMPL/GLPK data as Python data +structures.") + (license license:epl1.0))) + +(define-public python-pulp + (package + (name "python-pulp") + (version "2.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "PuLP" version)) + (sha256 + (base32 + "1dammrg0f1v0r028i3rpxbf2bsyxmjq0q6ihb4x2wsdki44z3bxj")))) + (build-system python-build-system) + (propagated-inputs + `(("python-amply" ,python-amply))) + (home-page "https://github.com/coin-or/pulp") + (synopsis "Linear Programming modeler") + (description + "PuLP is a Linear Programming modeler written in Python. PuLP can +generate MPS or LP files and call GLPK, COIN CLP/CBC, CPLEX, and GUROBI to +solve linear problems.") + (license license:expat))) + +(define-public python-toposort + (package + (name "python-toposort") + (version "1.6") + (source + (origin + (method url-fetch) + (uri (pypi-uri "toposort" version)) + (sha256 + (base32 + "1b2hppzjg3p006qya3yfdnp76dwq8frl97lypdam0kw4xxb8yhm7")))) + (build-system python-build-system) + (home-page "https://gitlab.com/ericvsmith/toposort") + (synopsis "Topological sort algorithm") + (description + "This package provides an implementation of a topological sort +algorithm.") + (license license:asl2.0))) + (define-public snakemake (package (name "snakemake") - (version "5.7.1") + (version "5.32.2") (source (origin (method url-fetch) (uri (pypi-uri "snakemake" version)) (sha256 - (base32 "1pnpvvn8n2a78cg360wz3ldmpqrsm2wzi0c0dmvki9fnsw6fxdas")))) + (base32 "13013gdavwvyj1qr9xfi9fpwhb3km8c3z53bja5b7ic3sb2z6dgz")))) (build-system python-build-system) (arguments ;; TODO: Package missing test dependencies. @@ -7916,7 +8015,7 @@ Python.") ;; this by calling the snakemake wrapper instead. (add-after 'unpack 'call-wrapper-not-wrapped-snakemake (lambda* (#:key outputs #:allow-other-keys) - (substitute* "snakemake/executors.py" + (substitute* "snakemake/executors/__init__.py" (("\\{sys.executable\\} -m snakemake") (string-append (assoc-ref outputs "out") "/bin/snakemake"))) @@ -7929,11 +8028,14 @@ Python.") ("python-gitpython" ,python-gitpython) ("python-jinja2" ,python-jinja2) ("python-jsonschema" ,python-jsonschema) + ("python-nbformat" ,python-nbformat) ("python-networkx" ,python-networkx) ("python-psutil" ,python-psutil) + ("python-pulp" ,python-pulp) ("python-pyyaml" ,python-pyyaml) ("python-ratelimiter" ,python-ratelimiter) ("python-requests" ,python-requests) + ("python-toposort" ,python-toposort) ("python-wrapt" ,python-wrapt))) (home-page "https://snakemake.readthedocs.io") (synopsis "Python-based execution environment for make-like workflows") @@ -8403,8 +8505,7 @@ PEP 8.") (define-public python2-pep517 (let ((base (package-with-python2 (strip-python2-variant python-pep517)))) - (package - (inherit base) + (package/inherit base (name "python2-pep517") (arguments `(#:tests? #f @@ -8496,7 +8597,7 @@ cyclomatic complexity of Python source code.") (define-public python2-flake8 (let ((base (package-with-python2 (strip-python2-variant python-flake8)))) - (package (inherit base) + (package/inherit base (propagated-inputs `(("python2-configparser" ,python2-configparser) ("python2-enum34" ,python2-enum34) @@ -9019,9 +9120,10 @@ third-party code.") (properties `((python2-variant . ,(delay python2-llfuse)))))) (define-public python2-llfuse - (package (inherit (package-with-python2 - (strip-python2-variant python-llfuse))) - (propagated-inputs `(("python2-contextlib2" ,python2-contextlib2))))) + (let ((base (package-with-python2 + (strip-python2-variant python-llfuse)))) + (package/inherit base + (propagated-inputs `(("python2-contextlib2" ,python2-contextlib2)))))) (define-public python-msgpack (package @@ -9367,9 +9469,6 @@ tasks, sockets, files, locks, and queues.") designed to efficiently cope with extremely large amounts of data.") (license license:bsd-3))) -(define-public python2-tables - (package-with-python2 python-tables)) - (define-public python-sniffio (package (name "python-sniffio") @@ -9763,8 +9862,7 @@ a hash value.") (license license:asl2.0))) (define-public python2-tlsh - (package - (inherit python-tlsh) + (package/inherit python-tlsh (name "python2-tlsh") (inputs `(("python" ,python-2))))) @@ -9853,8 +9951,7 @@ Python's @code{ctypes} foreign function interface (FFI).") (package-with-python2 python-libarchive-c)) (define-public python-file - (package - (inherit file) + (package/inherit file (name "python-file") (build-system python-build-system) (arguments @@ -10212,7 +10309,7 @@ interactive computing.") (define-public python2-notebook (let ((base (package-with-python2 (strip-python2-variant python-notebook)))) - (package (inherit base) + (package/inherit base (native-inputs `(("python2-mock" ,python2-mock) ,@(package-native-inputs base))) @@ -10253,9 +10350,6 @@ interactive computing.") notebooks.") (license license:bsd-3))) -(define-public python2-widgetsnbextension - (package-with-python2 python-widgetsnbextension)) - (define-public python-ipywidgets (package (name "python-ipywidgets") @@ -10283,9 +10377,6 @@ widgets are used. Users gain control of their data and can visualize changes in the data.") (license license:bsd-3))) -(define-public python2-ipywidgets - (package-with-python2 python-ipywidgets)) - (define-public python-jupyter-console (package (name "python-jupyter-console") @@ -10346,8 +10437,7 @@ Jupyter kernels such as IJulia and IRKernel.") ;; the functionality in both packages working, strip down the ;; python-jupyter-console package when using it as an input to python-ipython. (define python-jupyter-console-minimal - (package - (inherit python-jupyter-console) + (package/inherit python-jupyter-console (name "python-jupyter-console-minimal") (arguments (substitute-keyword-arguments @@ -10687,8 +10777,7 @@ the standard library.") (define-public python2-contextlib2 (let ((base (package-with-python2 (strip-python2-variant python-contextlib2)))) - (package - (inherit base) + (package/inherit base (arguments (substitute-keyword-arguments (package-arguments base) ((#:phases phases) @@ -10797,6 +10886,27 @@ applications.") (home-page "https://github.com/click-contrib/click-log") (license license:expat))) +(define-public python-click-default-group + (package + (name "python-click-default-group") + (version "1.2.2") + (source (origin + (method url-fetch) + (uri (pypi-uri "click-default-group" version)) + (sha256 + (base32 + "015r78jk8gznfw0dphpwaqcx5mhg5822b55w5xbb6i7sin70wmnr")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ; no target + (propagated-inputs + `(("python-click" ,python-click))) + (synopsis "Extends click.Group") + (description "This package extends click.Group to invoke a command without +explicit subcommand name.") + (home-page "https://github.com/click-contrib/click-default-group") + (license license:bsd-3))) + (define-public python-structlog (package (name "python-structlog") @@ -11138,7 +11248,7 @@ concurrent.futures package from Python 3.2") (define-public python2-promise (let ((promise (package-with-python2 (strip-python2-variant python-promise)))) - (package (inherit promise) + (package/inherit promise (arguments (substitute-keyword-arguments (package-arguments promise) ((#:tests? _) #t))) (native-inputs @@ -11437,6 +11547,85 @@ document.") manipulation library.") (license license:expat))) +(define-public python-uncertainties + (package + (name "python-uncertainties") + (version "3.1.5") + (source + (origin + (method url-fetch) + (uri (pypi-uri "uncertainties" version)) + (sha256 + (base32 + "00z9xl40czmqk0vmxjvmjvwb41r893l4dad7nj1nh6blw3kw28li")))) + (build-system python-build-system) + ;; While there are test files, there is no "tests" directory, so the tests + ;; fail. + (arguments '(#:tests? #false)) + (propagated-inputs + `(("python-future" ,python-future))) + (native-inputs + `(("python-nose" ,python-nose) + ("python-numpy" ,python-numpy))) + (home-page "https://uncertainties-python-package.readthedocs.io/") + (synopsis "Calculations with uncertainties") + (description + "The uncertainties package transparently handles calculations with +numbers with uncertainties. It can also yield the derivatives of any +expression.") + (license license:bsd-3))) + +(define-public python-asteval + (package + (name "python-asteval") + (version "0.9.23") + (source + (origin + (method url-fetch) + (uri (pypi-uri "asteval" version)) + (sha256 + (base32 + "0f54sd4w1a72ij1bcxs2x7dk9xf8bzclawijf1z18bqx9f96l2gm")))) + (build-system python-build-system) + (native-inputs + `(("python-pytest" ,python-pytest))) + (home-page "https://github.com/newville/asteval") + (synopsis "Minimalistic evaluator of Python expressions") + (description + "This package provides a minimalistic evaluator of Python expression +using the @code{ast} module") + (license license:expat))) + +(define-public python-lmfit + (package + (name "python-lmfit") + (version "1.0.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "lmfit" version)) + (sha256 + (base32 + "0iab33jjb60f8kn0k0cqb0vjp1mdskks2n3kpn97zkw5cvjhq2b7")))) + (build-system python-build-system) + (propagated-inputs + `(("python-asteval" ,python-asteval) + ("python-numpy" ,python-numpy) + ("python-scipy" ,python-scipy) + ("python-uncertainties" ,python-uncertainties))) + (native-inputs + `(("python-pytest" ,python-pytest))) + (home-page "https://lmfit.github.io/lmfit-py/") + (synopsis "Least-Squares minimization with bounds and constraints") + (description + "Lmfit provides a high-level interface to non-linear optimization and +curve fitting problems for Python. It builds on and extends many of the +optimization methods of @code{scipy.optimize}. Initially inspired by (and +named for) extending the Levenberg-Marquardt method from +@code{scipy.optimize.leastsq}, lmfit now provides a number of useful +enhancements to optimization and data fitting problems.") + (license license:bsd-3))) + (define-public python-boto (package (name "python-boto") @@ -11761,8 +11950,7 @@ and provides a uniform API regardless of which JSON implementation is used.") (define-public python2-anyjson (let ((anyjson (package-with-python2 (strip-python2-variant python-anyjson)))) - (package - (inherit anyjson) + (package/inherit anyjson (arguments `(;; Unlike the python 3 variant, we do run tests. See above! #:tests? #t ,@(package-arguments anyjson))) @@ -11799,8 +11987,7 @@ alternative when librabbitmq is not available.") (define-public python2-amqp (let ((amqp (package-with-python2 (strip-python2-variant python-amqp)))) - (package - (inherit amqp) + (package/inherit amqp (arguments `(;; Tries to run coverage tests with nose-cover3, which seems ;; unmaintained. Weirdly, does not do this on the python 3 ;; version? @@ -11872,8 +12059,7 @@ RabbitMQ messaging server is the most popular implementation.") (define-public python2-kombu (let ((kombu (package-with-python2 (strip-python2-variant python-kombu)))) - (package - (inherit kombu) + (package/inherit kombu (arguments `(;; FIXME: 'TestTransport.test_del_sync' fails on python2. ;; It works fine on the python3 variant. #:tests? #f @@ -11910,8 +12096,7 @@ Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.") (define-public python2-billiard (let ((billiard (package-with-python2 (strip-python2-variant python-billiard)))) - (package - (inherit billiard) + (package/inherit billiard (native-inputs `(("python2-unittest2" ,python2-unittest2) ("python2-mock" ,python2-mock) ,@(package-native-inputs billiard)))))) @@ -11961,8 +12146,7 @@ synchronously (wait until ready).") (define-public python2-celery (let ((celery (package-with-python2 (strip-python2-variant python-celery)))) - (package - (inherit celery) + (package/inherit celery (native-inputs `(("python2-unittest2" ,python2-unittest2) ("python2-mock" ,python2-mock) ,@(package-native-inputs celery)))))) @@ -12116,7 +12300,7 @@ checking library.") (define-public python2-whoosh (let ((whoosh (package-with-python2 (strip-python2-variant python-whoosh)))) - (package (inherit whoosh) + (package/inherit whoosh (propagated-inputs `(("python2-backport-ssl-match-hostname" ,python2-backport-ssl-match-hostname) @@ -12230,7 +12414,7 @@ encoding algorithms to do fuzzy string matching.") (define-public python2-jellyfish (let ((jellyfish (package-with-python2 (strip-python2-variant python-jellyfish)))) - (package (inherit jellyfish) + (package/inherit jellyfish (native-inputs `(("python2-unicodecsv" ,python2-unicodecsv) ,@(package-native-inputs jellyfish)))))) @@ -12645,8 +12829,7 @@ to occurrences in strings and comments.") (license license:gpl2))) (define-public python-rope - (package - (inherit python2-rope) + (package/inherit python2-rope (name "python-rope") (arguments `(#:python ,python-wrapper ;; XXX: Only partial python3 support, results in some failing @@ -13408,7 +13591,7 @@ database, file, dict stores. Cachy supports python versions 2.7+ and 3.2+.") (define-public poetry (package (name "poetry") - (version "1.1.4") + (version "1.1.5") ;; Poetry can only be built from source with Poetry. (source (origin @@ -13416,7 +13599,7 @@ database, file, dict stores. Cachy supports python versions 2.7+ and 3.2+.") (uri (pypi-uri "poetry" version)) (sha256 (base32 - "1a2kgfiw66fvxhlqk5qc83s6l38czfh5hcsrbiy7qq5yfc8mlsll")))) + "1dvx08ksv5wnsj45db23921rj136akmcnxa0kmlsddf3wbh6wcka")))) (build-system python-build-system) (arguments `(#:tests? #f ;; Pypi does not have tests. @@ -13951,8 +14134,7 @@ etc.") (define-public ptpython-2 (let ((base (package-with-python2 (strip-python2-variant ptpython)))) - (package - (inherit base) + (package/inherit base (name "ptpython2")))) (define-public python-stem @@ -13987,9 +14169,6 @@ control protocol to script against the Tor process and read descriptor data relays publish about themselves.") (license license:lgpl3))) -(define-public python2-stem - (package-with-python2 python-stem)) - (define-public python-pyserial (package (name "python-pyserial") @@ -14095,7 +14274,7 @@ binary or text.") (define-public python2-binaryornot (let ((base (package-with-python2 (strip-python2-variant python-binaryornot)))) - (package (inherit base) + (package/inherit base (propagated-inputs `(("python2-enum34" ,python2-enum34) ,@(package-propagated-inputs base)))))) @@ -14324,13 +14503,13 @@ command @command{natsort} that exposes this functionality in the command line.") (define-public glances (package (name "glances") - (version "3.1.4") + (version "3.1.6") (source (origin (method url-fetch) (uri (pypi-uri "Glances" version)) (sha256 - (base32 "0dc47gbvp9a3wxppdqihxpglxxaxbj3hcvzgcxxq8zcsciah3plq")) + (base32 "11xbm8jgcxha191ly7q76nab1ilabiz14mqf6i3y6aw5xvgg017c")) (modules '((guix build utils))) (snippet '(begin @@ -14394,9 +14573,6 @@ This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js} to Python.") (license license:expat))) -(define-public python2-graphql-core - (package-with-python2 python-graphql-core)) - (define-public python-graphql-relay (package (name "python-graphql-relay") @@ -14592,8 +14768,7 @@ is used by PostgreSQL and the OpenSSH Server for example.") (define-public python2-setproctitle (let ((base (package-with-python2 (strip-python2-variant python-setproctitle)))) - (package - (inherit base) + (package/inherit base (native-inputs `(("python2-nose" ,python2-nose) ,@(package-native-inputs base)))))) @@ -14770,8 +14945,7 @@ network.") (define-public python2-argcomplete (let ((variant (package-with-python2 (strip-python2-variant python-argcomplete)))) - (package - (inherit variant) + (package/inherit variant (arguments (substitute-keyword-arguments (package-arguments variant) ((#:phases phases '%standard-phases) @@ -14895,8 +15069,7 @@ possible on all supported Python versions.") (define-public python2-xopen (let ((base (package-with-python2 (strip-python2-variant python-xopen)))) - (package - (inherit base) + (package/inherit base (propagated-inputs `(("python2-bz2file" ,python2-bz2file) ,@(package-propagated-inputs base)))))) @@ -15010,9 +15183,6 @@ protocols written in pure Python.") ;; Can be used with either license. (license (list license:asl2.0 license:gpl2+)))) -(define-public python2-dulwich - (package-with-python2 python-dulwich)) - (define-public python-pbkdf2 (package (name "python-pbkdf2") @@ -15782,7 +15952,16 @@ version, is suitable to be include as a dependency in other projects.") imports alphabetically, and automatically separated into sections. It provides a command line utility, a python library and plugins for various editors.") - (license license:expat))) + (license license:expat) + (properties `((python2-variant . ,(delay python2-isort)))))) + +(define-public python2-isort + (let ((base (package-with-python2 + (strip-python2-variant python-isort)))) + (package/inherit base + (native-inputs + `(("python2-futures" ,python2-futures) + ,@(package-native-inputs base)))))) (define-public python2-backports-functools-lru-cache (package @@ -16018,9 +16197,6 @@ exception message with a traceback that points to the culprit.") make common patterns shorter and easier.") (license license:bsd-2))) -(define-public python2-utils - (package-with-python2 python-utils)) - (define-public python-diff-match-patch (package (name "python-diff-match-patch") @@ -16362,8 +16538,7 @@ Supported metrics are: (define-public python2-radon (let ((base (package-with-python2 (strip-python2-variant python-radon)))) - (package - (inherit base) + (package/inherit base (propagated-inputs `(("python-configparser" ,python2-configparser) ("python-future" ,python2-future) @@ -16650,8 +16825,7 @@ and integration into other projects.") (define-public python2-rfc6555 (let ((base (package-with-python2 (strip-python2-variant python-rfc6555)))) - (package - (inherit base) + (package/inherit base (propagated-inputs `(("python2-selectors2" ,python2-selectors2)))))) @@ -17768,8 +17942,7 @@ such as figshare or Zenodo.") (define-public python2-activepapers (let ((base (package-with-python2 (strip-python2-variant python-activepapers)))) - (package - (inherit base) + (package/inherit base (arguments (substitute-keyword-arguments (package-arguments base) ((#:phases phases) @@ -18003,7 +18176,18 @@ user's @file{~/Trash} directory.") (license license:bsd-3))) (define-public python2-send2trash - (package-with-python2 (strip-python2-variant python-send2trash))) + (let ((base (package-with-python2 + (strip-python2-variant python-send2trash)))) + (package/inherit base + (arguments + (substitute-keyword-arguments (package-arguments python-send2trash) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'check 'setenv + (lambda _ + (setenv "PYTHONPATH" + (string-append (getcwd) ":" (getenv "PYTHONPATH"))) + #t))))))))) (define-public python-pyfavicon (package @@ -19148,6 +19332,31 @@ library: to minimize boilerplate code in traditional extension modules by inferring type information using compile-time introspection.") (license license:bsd-3))) +(define-public python-pooch + (package + (name "python-pooch") + (version "1.3.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pooch" version)) + (sha256 + (base32 "1618adsg9r8fsv422sv35z1i723q3a1iir5v7dv2sklh4pl4im1h")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ;requires online data + (propagated-inputs + `(("python-appdirs" ,python-appdirs) + ("python-packaging" ,python-packaging) + ("python-requests" ,python-requests))) + (home-page "https://github.com/fatiando/pooch") + (synopsis "Manage your Python library's sample data files") + (description + "Pooch manages your Python library's sample data files: it automatically +downloads and stores them in a local directory, with support for versioning +and corruption checks.") + (license license:bsd-3))) + (define-public python-fasteners (package (name "python-fasteners") @@ -19724,6 +19933,26 @@ main differences are that @code{cytoolz} is faster and cytoolz offers a C API that is accessible to other projects developed in Cython.") (license license:bsd-3))) +(define-public python-sortedcollections + (package + (name "python-sortedcollections") + (version "2.1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "sortedcollections" version)) + (sha256 + (base32 + "1kfabpnjyjm5ml2zspry9jy3xq49aybchgaa4ahic2jqdjfn1sfq")))) + (build-system python-build-system) + (propagated-inputs + `(("python-sortedcontainers" ,python-sortedcontainers))) + (arguments '(#:tests? #f)) ; Tests not included in release tarball. + (home-page "http://www.grantjenks.com/docs/sortedcollections/") + (synopsis "Python Sorted Collections") + (description "Sorted Collections is a Python sorted collections library.") + (license license:asl2.0))) + (define-public python-sortedcontainers (package (name "python-sortedcontainers") @@ -19792,8 +20021,7 @@ data.") (define-public python2-cloudpickle (let ((base (package-with-python2 (strip-python2-variant python-cloudpickle)))) - (package - (inherit base) + (package/inherit base (native-inputs `(("python-mock" ,python2-mock) ,@(package-native-inputs base))) @@ -20033,7 +20261,7 @@ on regular expressions.") (define-public python2-reparser (let ((reparser (package-with-python2 (strip-python2-variant python-reparser)))) - (package (inherit reparser) + (package/inherit reparser (propagated-inputs `(("python2-enum34" ,python2-enum34) ,@(package-propagated-inputs reparser)))))) @@ -20994,14 +21222,14 @@ register custom encoders and decoders.") (define-public python-ujson (package (name "python-ujson") - (version "4.0.1") + (version "4.0.2") (source (origin (method url-fetch) (uri (pypi-uri "ujson" version)) (sha256 (base32 - "1lr9lbm76y3ah1463jggwg2hjcb709mpns5f752wxxbgnd0n5kr6")) + "0k9w0kypy7vlskzzp2vsjswaw8lbqdrplzkbflxki9vqwglsj5f6")) (modules '((guix build utils))) (snippet '(begin (delete-file-recursively "deps") #t)))) @@ -21439,29 +21667,6 @@ and cuts down boilerplate code when testing libraries for asyncio.") (description "This project allows Python code to extend built-in types.") (license (list license:gpl3+ license:expat)))) -(define-public python-shouldbe - (package - (name "python-shouldbe") - (version "0.1.2") - (source - (origin - (method url-fetch) - (uri (pypi-uri "shouldbe" version)) - (sha256 - (base32 - "16zbvjxf71dl4yfbgcr6idyim3mdrfvix1dv8b95p0s9z07372pj")) - (patches (search-patches "python-shouldbe-0.1.2-cpy3.8.patch")))) - (build-system python-build-system) - (propagated-inputs - `(("python-forbiddenfruit" ,python-forbiddenfruit))) - (native-inputs - `(("python-nose" ,python-nose))) - (home-page "https://github.com/directxman12/should_be") - (synopsis "Python Assertion Helpers inspired by Shouldly") - (description - "Python Assertion Helpers inspired by Shouldly.") - (license license:isc))) - (define-public python-k5test (package (name "python-k5test") @@ -21499,31 +21704,15 @@ tests.") (define-public python-gssapi (package (name "python-gssapi") - (version "1.6.9") + (version "1.6.12") (source (origin (method url-fetch) (uri (pypi-uri "gssapi" version)) (sha256 (base32 - "1fa78pn5jzfbwf3y6mj4fc8sh11wjf1hwh5qv39cdlxb71qsq2hb")))) + "1j2idrbrbczykzlb56q1bn0ivc9c0rjjljpk4yz86xn3gxfkpv8n")))) (build-system python-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - ;; Work around - ;; https://github.com/pythongssapi/python-gssapi/issues/220. - (add-before 'check 'disable-failing-tests - (lambda _ - (let ((reason "Disabled failing test (see: \ -https://github.com/pythongssapi/python-gssapi/issues/220).")) - (substitute* "gssapi/tests/test_high_level.py" - ((".*def test_add_with_impersonate.*" all) - (string-append all " self.skipTest('" reason "')\n"))) - (substitute* "gssapi/tests/test_raw.py" - ((".*def test_.*impersonate_name.*" all) - (string-append all " self.skipTest('" reason "')\n"))) - #t)))))) (propagated-inputs `(("python-decorator" ,python-decorator) ("python-six" ,python-six))) @@ -21531,8 +21720,7 @@ https://github.com/pythongssapi/python-gssapi/issues/220).")) `(("mit-krb5" ,mit-krb5))) ;; for tests (native-inputs - `(("python-shouldbe" ,python-shouldbe) - ("python-parameterized" ,python-parameterized) + `(("python-parameterized" ,python-parameterized) ("python-k5test" ,python-k5test) ("python-nose" ,python-nose))) (home-page "https://github.com/pythongssapi/python-gssapi") @@ -23515,14 +23703,14 @@ process.") (define-public python-aiofiles (package (name "python-aiofiles") - (version "0.5.0") + (version "0.6.0") (source (origin (method url-fetch) (uri (pypi-uri "aiofiles" version)) (sha256 (base32 - "1bqmv019x16qa3zah0z915cw6z4va3fjs60fk2s7vyah3gyvrrlq")))) + "14m01kjxm2j7zyljjj6xlhlgygcsriymbx730gc5jp9xglaina70")))) (build-system python-build-system) (home-page "https://github.com/Tinche/aiofiles") (synopsis "File support for @code{asyncio}") @@ -23903,3 +24091,48 @@ and frame grabber interface.") "This package provides a command-line interface (CLI) to the Jinja2 template engine.") (license license:bsd-3))) + +(define-public python-readability + (package + (name "python-readability") + (version "0.3.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "readability" version)) + (sha256 + (base32 + "1b8gq3g2zwvx0aivvdg56cc0bn7xw6f2v6psmxdx9aiipkw0s0zr")))) + (build-system python-build-system) + (home-page + "https://github.com/andreasvc/readability/") + (synopsis + "Measure the readability of a given text using surface +characteristics") + (description + "This package provides a Python library that is an implementation of +traditional readability measures based on simple surface +characteristics. These measures are basically linear regressions based on the +number of words, syllables, and sentences.") + (license license:asl2.0))) + +(define-public python-listparser + (package + (name "python-listparser") + (version "0.18") + (source + (origin + (method url-fetch) + (uri (pypi-uri "listparser" version)) + (sha256 + (base32 + "0hdqs1mmayw1r8yla43hgb4d9y3zqs5483vgf8j9ygczkd2wrq2b")))) + (build-system python-build-system) + (home-page + "https://github.com/kurtmckee/listparser") + (synopsis + "Parse subscription lists in Python") + (description + "This package provides a Python library that can parse OPML, FOAF, and +iGoogle subscription lists.") + (license license:expat))) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 49d43ab008..7e139322e5 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -32,7 +32,7 @@ ;;; Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016, 2017, 2018 Julien Lepiller <julien@lepiller.eu> -;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2016–2018, 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au> ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com> @@ -393,8 +393,7 @@ data types.") ;; Both 2.x and 3.x used to be called "python". In commit ;; a7714d42de2c3082f3609d1e63c83d703fb39cf9 (March 2018), we renamed the ;; Python 2.x package to "python2". - (package - (inherit python-2) + (package/inherit python-2 (name "python") (properties `((superseded . ,python-2))))) @@ -618,15 +617,15 @@ To function properly, this package should not be installed together with the (define-public micropython (package (name "micropython") - (version "1.13") + (version "1.14") (source (origin (method url-fetch) (uri (string-append "https://github.com/micropython/micropython/" "releases/download/v" version - "/micropython-" version ".tar.gz")) + "/micropython-" version ".tar.xz")) (sha256 - (base32 "0lfl7dv5v9rqckslrjqy5swjri29x1nj5d79wxnjys4sq6r2xcws")) + (base32 "0k6ri3rxxnnmvcbi7z7x59r21f4vj9dcf9j64jhj1cgazmb62c4p")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 11e69ff5db..d718b520bd 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -105,6 +105,39 @@ #:use-module (gnu packages xml) #:use-module (srfi srfi-1)) +(define-public qite + (let ((commit "75fb3b6bbd5c6a5a8fc35e08a6efbfb588ed546a") + (revision "74")) + (package + (name "qite") + (version (git-version "0" revision commit)) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/Ri0n/qite") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0jmmgy9pvk9hwwph1nwy7hxhczy8drhl4ymhnjjn6yx7bckssvsq")))) + (build-system qt-build-system) + (arguments + `(#:tests? #f ; no target + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "libqite") + #t))))) + (inputs + `(("qtbase" ,qtbase) + ("qtmultimedia" ,qtmultimedia))) + (home-page "https://github.com/Ri0n/qite/") + (synopsis "Qt Interactive Text Elements") + (description "Qite allows to manage interactive elements on QTextEdit.") + (license license:asl2.0)))) + (define-public qt5ct (package (name "qt5ct") @@ -2030,7 +2063,7 @@ module provides support functions to the automatically generated code.") (license license:gpl3))) (define-public python2-sip - (package (inherit python-sip) + (package/inherit python-sip (name "python2-sip") (native-inputs `(("python" ,python-2))))) @@ -2215,13 +2248,13 @@ itself.") ;; Ultimately, it would be nicer to have a more modular set of python-pyqt-* ;; packages that could be used together. (define-public python-pyqt-without-qtwebkit - (package (inherit python-pyqt) + (package/inherit python-pyqt (name "python-pyqt-without-qtwebkit") (inputs (alist-delete "qtwebkit" (package-inputs python-pyqt))))) (define-public python2-pyqt - (package (inherit python-pyqt) + (package/inherit python-pyqt (name "python2-pyqt") (propagated-inputs `(("python-enum34" ,python2-enum34) @@ -2367,7 +2400,7 @@ indicators, code completion and call tips.") (license license:gpl3+))) (define-public python-qscintilla - (package (inherit qscintilla) + (package/inherit qscintilla (name "python-qscintilla") (arguments `(#:configure-flags @@ -2415,7 +2448,7 @@ This package provides the Python bindings."))) ;; variables such as PYTHONPATH, so we need to build a union package to make ;; it work. (define-public python-pyqt+qscintilla - (package (inherit python-pyqt) + (package/inherit python-pyqt (name "python-pyqt+qscintilla") (source #f) (build-system trivial-build-system) @@ -2473,6 +2506,117 @@ This package provides the Python bindings."))) securely. It will not store any data unencrypted unless explicitly requested.") (license license:bsd-3))) +(define-public qtsolutions + (let ((commit "9568abd142d581b67b86a5f63d823a34b0612702") + (revision "53")) + (package + (name "qtsolutions") + (version (git-version "0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/qtproject/qt-solutions") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "17fnmassflm3vxi0krpr6fff368jy38cby31a48rban4nqqmgx7n")) + (modules '((guix build utils) + (ice-9 ftw) + (srfi srfi-1))) + (snippet + ;; Unvendor QtLockFile from QtSingleApplication. + '(begin + (with-directory-excursion "qtsingleapplication/src" + (for-each delete-file + (find-files "." "qtlockedfile.*\\.(h|cpp)")) + (substitute* "qtsingleapplication.pri" + ;; Add include path of LockedFile. + (("INCLUDEPATH \\+=") + "INCLUDEPATH += ../../qtlockedfile/src") + ;; Link library of LockedFile. + (("LIBS \\+=") + "LIBS += -lQtSolutions_LockedFile")) + (substitute* '("qtlocalpeer.h" "qtlocalpeer.cpp") + (("#include \"qtlockedfile.*\\.cpp\"") "") + ;; Unwrap namespace added in the vendoring process. + (("QtLP_Private::QtLockedFile") + "QtLockedFile"))) + #t)))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; No target + #:imported-modules + ((guix build copy-build-system) + ,@%gnu-build-system-modules) + #:modules + (((guix build copy-build-system) #:prefix copy:) + (guix build gnu-build-system) + (guix build utils)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-source + (lambda* (#:key outputs #:allow-other-keys) + (substitute* (find-files "." "common.pri") + ;; Remove unnecessary prefixes/suffixes in library names. + (("qt5") "qt") + (("-head") "")) + ;; Disable building of examples. + (substitute* (find-files "." "\\.pro$") + (("SUBDIRS\\+=examples") "")) + ;; Fix deprecated functions. + (substitute* "qtsoap/src/qtsoap.cpp" + (("toAscii") "toUtf8")) + #t)) + (replace 'configure + (lambda _ + (for-each (lambda (solution) + (with-directory-excursion solution + (invoke "./configure" "-library") + (invoke "qmake"))) + '("qtlockedfile" "qtpropertybrowser" "qtservice" + "qtsingleapplication" "qtsoap")) + #t)) + (replace 'build + (lambda _ + (for-each (lambda (solution) + (with-directory-excursion solution + (invoke "make"))) + '("qtlockedfile" "qtpropertybrowser" "qtservice" + "qtsingleapplication" "qtsoap")) + #t)) + (replace 'install + (lambda args + (for-each (lambda (solution) + (with-directory-excursion solution + (apply + (assoc-ref copy:%standard-phases 'install) + #:install-plan + '(("src" "include" #:include-regexp ("\\.h$")) + ("lib" "lib")) + args))) + '("qtlockedfile" "qtpropertybrowser" "qtservice" + "qtsingleapplication" "qtsoap"))))))) + (inputs + `(("qtbase" ,qtbase))) + (synopsis "Collection of Qt extensions") + (description "QtSolutions is a set of components extending Qt. +@itemize +@item QtLockedFile: A class that extends QFile with advisory locking functions. +@item QtPropertyBrowser: A framework that enables the user to edit a set of +properties. +@item QtService: A helper for writing services such as Unix daemons. +@item QtSingleApplication: A component that provides support for applications +that can be only started once per user. +@item QtSoap: A component that provides basic web service support with version +1.1 of the SOAP protocol. +@end itemize\n") + (home-page "https://doc.qt.io/archives/qq/qq09-qt-solutions.html") + (license (list license:bsd-3 + ;; QScriptParser and QScriptGrammar specifically allow + ;; redistribution under GPL3 or LGPL2.1 + license:gpl3 license:lgpl2.1))))) + (define-public qwt (package (name "qwt") diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm index c99c4f7282..ff694cecd8 100644 --- a/gnu/packages/radio.scm +++ b/gnu/packages/radio.scm @@ -35,14 +35,19 @@ #:use-module (gnu packages bash) #:use-module (gnu packages boost) #:use-module (gnu packages check) + #:use-module (gnu packages curl) + #:use-module (gnu packages databases) #:use-module (gnu packages documentation) #:use-module (gnu packages engineering) #:use-module (gnu packages fltk) #:use-module (gnu packages gcc) #:use-module (gnu packages gd) + #:use-module (gnu packages geo) #:use-module (gnu packages gettext) #:use-module (gnu packages ghostscript) #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) + #:use-module (gnu packages golang) #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) #:use-module (gnu packages image) @@ -68,11 +73,13 @@ #:use-module (gnu packages tex) #:use-module (gnu packages texinfo) #:use-module (gnu packages video) + #:use-module (gnu packages xiph) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) #: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 go) #:use-module (guix build-system python) #:use-module (guix build-system qt)) @@ -1240,3 +1247,156 @@ It can perform as: @item APRStt gateway @end itemize\n") (license license:gpl2+))) + +(define-public aldo + (package + (name "aldo") + (version "0.7.7") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://savannah/aldo/aldo-" version ".tar.bz2")) + (sha256 + (base32 "14lzgldqzbbzydsy1cai3wln3hpyj1yhj8ji3wygyzr616fq9f7i")))) + (build-system gnu-build-system) + (inputs + `(("ao" ,ao))) + (home-page "https://www.nongnu.org/aldo/") + (synopsis "Morse code tutor") + (description + "Aldo is a morse code learning tool providing four type of training +methods: + +@itemize +@item Classic exercice, +@item Koch method, +@item Read from file, +@item Callsign exercice. +@end itemize\n") + (license license:gpl3+))) + +(define-public unixcw + (package + (name "unixcw") + (version "3.6.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/unixcw/unixcw-" + version ".tar.gz")) + (sha256 + (base32 "15wriwv91583kmmyijbzam3dpclzmg4qjyfzjv5f75x9b0gqabxm")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("ncurses" ,ncurses) + ("pulseaudio" ,pulseaudio) + ("qtbase" ,qtbase))) + (arguments + `(#:configure-flags '("--disable-static") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* '("configure" + "src/config.h.in" + "src/cwcp/Makefile.am" + "src/cwcp/Makefile.in") + (("-lcurses") + "-lncurses")) + (substitute* "src/libcw/libcw_pa.c" + (("libpulse-simple.so" all) + (string-append (assoc-ref inputs "pulseaudio") + "/lib/" all)))))))) + (home-page "http://unixcw.sourceforge.net/") + (synopsis "Morse code library and programs") + (description + "@code{unixcw} is a project providing the libcw library and a set of +programs using the library: cw, cwgen, cwcp and xcwcp. The programs are +intended for people who want to learn receiving and sending morse code.") + (license license:gpl2+))) + +(define-public gnuais + (package + (name "gnuais") + (version "0.3.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rubund/gnuais") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1rik5fdfslszdn3yvj769jzmnv9pirzf76ki33bjjzk7nkabbnlm")))) + (build-system cmake-build-system) + (native-inputs + `(("mariadb-dev" ,mariadb "dev") + ("pkg-config" ,pkg-config))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("curl" ,curl) + ("gtk+" ,gtk+) + ("libsoup" ,libsoup-minimal) + ("mariadb-lib" ,mariadb "lib") + ("osm-gps-map" ,osm-gps-map) + ("pulseaudio" ,pulseaudio))) + (arguments + `(#:tests? #f ; No test suite + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "src/cfgfile.c" + (("/usr/share/") + (string-append (assoc-ref outputs "out") "/share/")))))))) + (home-page "http://gnuais.sourceforge.net/") + (synopsis "AIS message demodulator and decoder") + (description + "This program contains algorithms to demodulate and decode AIS (Automatic +Identification System) messages sent by ships and coast stations.") + (license license:gpl2+))) + +(define-public kappanhang + (package + (name "kappanhang") + (version "1.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nonoo/kappanhang") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ycy8avq5s7zspfi0d9klqcwwkpmcaz742cigd7pmcnbbhspcicp")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/nonoo/kappanhang" + #:install-source? #f)) + (inputs + `(("go-github-com-akosmarton-papipes",go-github-com-akosmarton-papipes) + ("go-github-com-fatih-color" ,go-github-com-fatih-color) + ("go-github-com-google-goterm" ,go-github-com-google-goterm) + ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty) + ("go-github-com-mesilliac-pulse-simple" + ,go-github-com-mesilliac-pulse-simple) + ("go-github-com-pborman-getopt" ,go-github-com-pborman-getopt) + ("go-go-uber-org-multierr" ,go-go-uber-org-multierr) + ("go-go-uber-org-zap" ,go-go-uber-org-zap))) + (home-page "https://github.com/nonoo/kappanhang") + (synopsis "Client for Icom RS-BA1 server") + (description + "Kappanhang remotely opens audio channels and a serial port to an Icom +RS-BA1 server. The application is mainly developed for connecting to the Icom +IC-705 transceiver, which has built-in WiFi and RS-BA1 server. + +Compatible hardware/software: +@itemize +@item Icom RS-BA1 server software, +@item Icom IC-705 +@item Icom IC-9700 +@end itemize\n") + (license license:expat))) diff --git a/gnu/packages/raspberry-pi.scm b/gnu/packages/raspberry-pi.scm index cdea392fc7..bb38b8b218 100644 --- a/gnu/packages/raspberry-pi.scm +++ b/gnu/packages/raspberry-pi.scm @@ -59,7 +59,7 @@ `(#:tests? #f)) ; Would need to be root ;; doc/html docs would not be installed anyway. ;(native-inputs - ; `(("doxygen", doxygen))) + ; `(("doxygen" ,doxygen))) (synopsis "C library for Broadcom BCM 2835 as used in Raspberry Pi") (description "This package provides a C library for Broadcom BCM 2835 as used in the Raspberry Pi") diff --git a/gnu/packages/rpc.scm b/gnu/packages/rpc.scm index 8036998910..4a279874ce 100644 --- a/gnu/packages/rpc.scm +++ b/gnu/packages/rpc.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org> ;;; Copyright © 2021 Greg Hogan <code@greghogan.com> +;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -208,7 +209,7 @@ with the HTTP/2-based RPC framework gRPC.") (define-public apache-thrift (package (name "apache-thrift") - (version "0.14.0") + (version "0.14.1") (source (origin (method git-fetch) @@ -217,8 +218,7 @@ with the HTTP/2-based RPC framework gRPC.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "09s8j95vc18117ahyl34gbd0gdxijkf0krrd3mp47vl08lcvi4kc")))) + (base32 "1mj3c5jhjbg2sfkx9k9jqg88h1c5rswr9b606s02ny9ydf3akcny")))) (build-system gnu-build-system) (arguments '(#:tests? #f diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index ea17c91457..7452745b37 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -415,13 +415,13 @@ announcement.") (define-public ruby-rake-compiler (package (name "ruby-rake-compiler") - (version "1.1.0") + (version "1.1.1") (source (origin (method url-fetch) (uri (rubygems-uri "rake-compiler" version)) (sha256 (base32 - "0l4hg21v0phfrfsc2hilgmwvn2imxr0byqh8dv16bya1s5d3km0q")))) + "11sxgw10jrd6a4irb51jjwam9wikixn5kss11pw4b80cmh32yvpf")))) (build-system ruby-build-system) (arguments '(#:tests? #f)) ; needs cucumber @@ -6112,13 +6112,13 @@ interface so that Terraform can be more easily invoked from Ruby code.") (define-public ruby-pstree (package (name "ruby-pstree") - (version "0.1.0") + (version "0.3.0") (source (origin (method url-fetch) (uri (rubygems-uri "pstree" version)) (sha256 (base32 - "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1")))) + "0ld3ng37y92kv9vqnachw1l3n07hsc8hrnjs9d840liw0mysf1vp")))) (build-system ruby-build-system) (native-inputs `(("ruby-gem-hadar" ,ruby-gem-hadar) @@ -7342,7 +7342,6 @@ run.") #t))))) (native-inputs `(("ruby-bump" ,ruby-bump) - ("ruby-memory-profiler" ,ruby-memory-profiler) ("ruby-pry" ,ruby-pry) ("ruby-rake" ,ruby-rake) ("ruby-rspec" ,ruby-rspec) @@ -7807,8 +7806,6 @@ Profiling multiple threads simultaneously is supported. (base32 "07yqv11q68xg2fqkrhs6ysngryk8b9zq6qzh24rgx9xqv6qfnj0w")))) (build-system ruby-build-system) - (native-inputs - `(("ruby-rake" ,ruby-rake))) (synopsis "Memory profiling routines for Ruby") (description "This package provides memory profiling routines for Ruby.") @@ -11057,13 +11054,13 @@ functionality from Prawn.") (define-public ruby-kramdown (package (name "ruby-kramdown") - (version "2.3.0") + (version "2.3.1") (source (origin (method url-fetch) (uri (rubygems-uri "kramdown" version)) (sha256 (base32 - "1vmw752c26ny2jwl0npn0gbyqwgz4hdmlpxnsld9qi9xhk5b1qh7")))) + "0jdbcjv4v7sj888bv3vc6d1dg4ackkh7ywlmn9ln2g9alk7kisar")))) (build-system ruby-build-system) (arguments `(#:tests? #f)); FIXME: some test failures (native-inputs diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index f0b74c8d40..5f14768b87 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -236,7 +236,7 @@ external dependencies.") ("cmocka" ,cmocka) ("cups" ,cups) ("gamin" ,gamin) - ("dbus", dbus) + ("dbus" ,dbus) ("gpgme" ,gpgme) ("gnutls" ,gnutls) ("heimdal" ,heimdal) @@ -265,7 +265,7 @@ external dependencies.") ("docbook-xml" ,docbook-xml-4.2) ("docbook-xsl" ,docbook-xsl) ("xsltproc" ,libxslt) - ("libxml2", libxml2))) ;for XML_CATALOG_FILES + ("libxml2" ,libxml2))) ;for XML_CATALOG_FILES (home-page "https://www.samba.org/") (synopsis "The standard Windows interoperability suite of programs for GNU and Unix") diff --git a/gnu/packages/sawfish.scm b/gnu/packages/sawfish.scm index 26d8eba3b6..4162fe43cd 100644 --- a/gnu/packages/sawfish.scm +++ b/gnu/packages/sawfish.scm @@ -53,7 +53,7 @@ `(("makeinfo" ,texinfo) ("pkg-config" ,pkg-config) - ("autoconf" ,autoconf-wrapper) + ("autoconf" ,autoconf) ("automake" ,automake) ("libtool" ,libtool))) (inputs diff --git a/gnu/packages/scanner.scm b/gnu/packages/scanner.scm index e3ff4243bc..9b405a59af 100644 --- a/gnu/packages/scanner.scm +++ b/gnu/packages/scanner.scm @@ -147,8 +147,7 @@ package contains the library, but no drivers.") ;; support for HP scanners whose backends are not maintained by the SANE ;; project, and builds all of those backends. (define-public sane-backends - (package - (inherit sane-backends-minimal) + (package/inherit sane-backends-minimal (name "sane-backends") (inputs `(("hplip" ,(@ (gnu packages cups) hplip-minimal)) diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index e4e452fec5..8db731bbc4 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -648,8 +648,7 @@ interface.") (license lgpl3+))) (define-public guile3.0-sdl2 - (package - (inherit guile-sdl2) + (package/inherit guile-sdl2 (name "guile3.0-sdl2") (native-inputs `(("guile" ,guile-3.0) diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm index c1641e8b5f..accab82419 100644 --- a/gnu/packages/security-token.scm +++ b/gnu/packages/security-token.scm @@ -104,7 +104,7 @@ readers and is needed to communicate with such devices through the (define-public eid-mw (package (name "eid-mw") - (version "5.0.11") + (version "5.0.14") (source (origin (method git-fetch) @@ -113,7 +113,7 @@ readers and is needed to communicate with such devices through the (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0590cz00cny749p99srv880gpgzvxaf9fwm2lghv3nw0qdsilss8")))) + (base32 "1hyxsbxjjn9hh5p7jlcfb5yplf3n8dg49dfgi8fjp95phis3gbd4")))) (build-system glib-or-gtk-build-system) (native-inputs `(("autoconf" ,autoconf) @@ -631,9 +631,6 @@ implementing a Relying Party.") ;; files for internal use, so they are not really a bundled dependency. (license (list license:bsd-2 license:asl2.0)))) -(define-public python2-fido2 - (package-with-python2 python-fido2)) - (define-public python-yubikey-manager (package (name "python-yubikey-manager") @@ -670,6 +667,3 @@ that after installing this package, you might still need to add appropriate udev rules to your system configuration to be able to configure the YubiKey as an unprivileged user.") (license license:bsd-2))) - -(define-public python2-yubikey-manager - (package-with-python2 python-yubikey-manager)) diff --git a/gnu/packages/selinux.scm b/gnu/packages/selinux.scm index 558a64a13b..4c2228871f 100644 --- a/gnu/packages/selinux.scm +++ b/gnu/packages/selinux.scm @@ -101,7 +101,7 @@ boolean settings).") (license license:lgpl2.1+))) (define-public checkpolicy - (package (inherit libsepol) + (package/inherit libsepol (name "checkpolicy") (arguments `(#:tests? #f ; there is no check target @@ -139,7 +139,7 @@ module into a binary representation.") (license license:gpl2))) (define-public libselinux - (package (inherit libsepol) + (package/inherit libsepol (name "libselinux") (outputs '("out" "python")) (arguments @@ -193,7 +193,7 @@ the core SELinux management utilities.") (license license:public-domain))) (define-public libsemanage - (package (inherit libsepol) + (package/inherit libsepol (name "libsemanage") (arguments (substitute-keyword-arguments (package-arguments libsepol) @@ -241,7 +241,7 @@ binary policies.") (license license:lgpl2.1+))) (define-public secilc - (package (inherit libsepol) + (package/inherit libsepol (name "secilc") (arguments (substitute-keyword-arguments (package-arguments libsepol) @@ -268,7 +268,7 @@ binary policies.") (license license:bsd-2))) (define-public python-sepolgen - (package (inherit libsepol) + (package/inherit libsepol (name "python-sepolgen") (arguments `(#:modules ((srfi srfi-1) @@ -373,7 +373,7 @@ tools, and libraries designed to facilitate SELinux policy analysis.") license:gpl2+)))) (define-public policycoreutils - (package (inherit libsepol) + (package/inherit libsepol (name "policycoreutils") (arguments `(#:test-target "test" diff --git a/gnu/packages/sequoia.scm b/gnu/packages/sequoia.scm index a075452647..eb8a788449 100644 --- a/gnu/packages/sequoia.scm +++ b/gnu/packages/sequoia.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019, 2020 Hartmut Goebel <h.goebel@crazy-compilers.com> +;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,6 +23,7 @@ #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) + #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages check) ;; python-pytest #:use-module (gnu packages crates-io) @@ -203,3 +205,77 @@ several crates, providing both a low-level and a high-level API for dealing with OpenPGP data.") (license license:gpl2+))) + +(define-public sequoia4pEp + ;; Currently pEp Engine requires sequoia in not-so-current version + (package/inherit sequoia + (name "sequoia") + (version "0.15.0-pEp") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/sequoia-pgp/sequoia.git") + (commit "0eb1b6cd846ea8c36b3dfdf01ec88383fc64f2fe"))) + (sha256 + (base32 "06dqs9whwp9lfibwp8dqm0aw4nm3s3v4jp2n4fz51zcvsld40nfh")) + (file-name (git-file-name name version)))) + (arguments + (substitute-keyword-arguments (package-arguments sequoia) + ((#:cargo-inputs _) + `(("rust-anyhow" ,rust-anyhow-1) + ("rust-base64" ,rust-base64-0.11) + ("rust-bzip2" ,rust-bzip2-0.3) + ("rust-capnp" ,rust-capnp-0.10) + ("rust-capnp-rpc" ,rust-capnp-rpc-0.10) + ("rust-chrono" ,rust-chrono-0.4) + ("rust-clap" ,rust-clap-2) + ("rust-crossterm" ,rust-crossterm-0.13) + ("rust-dirs" ,rust-dirs-2) + ("rust-flate2" ,rust-flate2-1) + ("rust-fs2" ,rust-fs2-0.4) + ("rust-futures" ,rust-futures-0.1) + ("rust-http" ,rust-http-0.1) + ("rust-hyper" ,rust-hyper-0.12) + ("rust-hyper-tls" ,rust-hyper-tls-0.3) + ("rust-idna" ,rust-idna-0.2) + ("rust-itertools" ,rust-itertools-0.8) + ("rust-lalrpop" ,rust-lalrpop-0.17) + ("rust-lalrpop-util" ,rust-lalrpop-util-0.17) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-libc" ,rust-libc-0.2) + ("rust-memsec" ,rust-memsec-0.5) + ("rust-native-tls" ,rust-native-tls-0.2) + ("rust-nettle" ,rust-nettle-7) + ("rust-percent-encoding" ,rust-percent-encoding-2) + ("rust-prettytable-rs" ,rust-prettytable-rs-0.8) + ("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quickcheck" ,rust-quickcheck-0.9) + ("rust-quote" ,rust-quote-1) + ("rust-rand" ,rust-rand-0.7) + ("rust-regex" ,rust-regex-1) + ("rust-rpassword" ,rust-rpassword-4) + ("rust-rusqlite" ,rust-rusqlite-0.19) + ("rust-sha2" ,rust-sha2-0.8) + ("rust-syn" ,rust-syn-1) + ("rust-tempfile" ,rust-tempfile-3) + ("rust-thiserror" ,rust-thiserror-1) + ("rust-tokio" ,rust-tokio-0.1) + ("rust-tokio-core" ,rust-tokio-core-0.1) + ("rust-tokio-io" ,rust-tokio-io-0.1) + ("rust-unicode-normalization" ,rust-unicode-normalization-0.1) + ("rust-url" ,rust-url-2) + ("rust-zbase32" ,rust-zbase32-0.1))) + ((#:cargo-development-inputs _) + `(("rust-assert-cli" ,rust-assert-cli-0.6) + ("rust-colored" ,rust-colored-1) + ("rust-filetime" ,rust-filetime-0.2))) + ((#:phases phases) + `(modify-phases ,phases + (replace 'unpin-deps + (lambda _ + (substitute* (find-files "." "Cargo.toml") + (("= \"<") "= \"") + (("= \"=") "= \"")) + #t)))))) + (properties `((hidden? . #t))))) diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm index 86f6ac6a1c..be1606a4fb 100644 --- a/gnu/packages/serialization.scm +++ b/gnu/packages/serialization.scm @@ -221,7 +221,7 @@ that implements both the msgpack and msgpack-rpc specifications.") (synopsis "Lua bindings for the libmpack binary serialization library"))) (define-public lua5.1-libmpack - (package (inherit lua-libmpack) + (package/inherit lua-libmpack (name "lua5.1-libmpack") (arguments (substitute-keyword-arguments (package-arguments lua-libmpack) @@ -241,7 +241,7 @@ that implements both the msgpack and msgpack-rpc specifications.") `(("lua" ,lua-5.1))))) (define-public lua5.2-libmpack - (package (inherit lua-libmpack) + (package/inherit lua-libmpack (name "lua5.2-libmpack") (arguments (substitute-keyword-arguments (package-arguments lua-libmpack) diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm index da3d4438f2..6cd2f861b5 100644 --- a/gnu/packages/shells.scm +++ b/gnu/packages/shells.scm @@ -535,13 +535,13 @@ ksh, and tcsh.") (define-public xonsh (package (name "xonsh") - (version "0.9.26") + (version "0.9.27") (source (origin (method url-fetch) (uri (pypi-uri "xonsh" version)) (sha256 - (base32 "00cfhl17hvycqv4vly8cdfj82949hn7572d910z7qkkqy6yy9957")) + (base32 "1maz7yvb5py91n699yqsna81x2i25mvrqkrcn7h7870nxd87ral2")) (modules '((guix build utils))) (snippet `(begin @@ -836,14 +836,14 @@ Shell (pdksh).") (define-public oil (package (name "oil") - (version "0.8.7") + (version "0.8.8") (source (origin (method url-fetch) (uri (string-append "https://www.oilshell.org/download/oil-" version ".tar.gz")) (sha256 - (base32 "0yxd020jkwhhvq2l8hd9npp2vn6fvm11f0izfzwdl2npbnc976jr")))) + (base32 "1g3xk160x9k5smfc9k8nnxcj7w1nacmnhnpmm72am9rjp1vpv9h1")))) (build-system gnu-build-system) (arguments `(#:strip-binaries? #f ; strip breaks the binary @@ -951,7 +951,7 @@ files and text.") (define-public nushell (package (name "nushell") - (version "0.27.1") + (version "0.28.0") (source (origin (method git-fetch) @@ -960,7 +960,7 @@ files and text.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "19l42qdqmc9g2qxy4b856z0xlq2g4qrfxj8l7dmdv99vymyfik9j")))) + (base32 "0kbynyk4c0r2qi78mdchx6d0d0c7phz2sxj5cqwsz4gjziibhr7j")))) (build-system cargo-build-system) (arguments `(#:rust ,rust-1.47 @@ -972,38 +972,38 @@ files and text.") ("rust-futures" ,rust-futures-0.3) ("rust-itertools" ,rust-itertools-0.10) ("rust-log" ,rust-log-0.4) - ("rust-nu-cli" ,rust-nu-cli-0.27) - ("rust-nu-command" ,rust-nu-command-0.27) - ("rust-nu-data" ,rust-nu-data-0.27) - ("rust-nu-engine" ,rust-nu-engine-0.27) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-parser" ,rust-nu-parser-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) - ("rust-nu-value-ext" ,rust-nu-value-ext-0.27) - ("rust-nu-plugin-binaryview" ,rust-nu-plugin-binaryview-0.27) - ("rust-nu-plugin-chart" ,rust-nu-plugin-chart-0.27) - ("rust-nu-plugin-fetch" ,rust-nu-plugin-fetch-0.27) - ("rust-nu-plugin-from-bson" ,rust-nu-plugin-from-bson-0.27) - ("rust-nu-plugin-from-sqlite" ,rust-nu-plugin-from-sqlite-0.27) - ("rust-nu-plugin-inc" ,rust-nu-plugin-inc-0.27) - ("rust-nu-plugin-match" ,rust-nu-plugin-match-0.27) - ("rust-nu-plugin-post" ,rust-nu-plugin-post-0.27) - ("rust-nu-plugin-ps" ,rust-nu-plugin-ps-0.27) - ("rust-nu-plugin-s3" ,rust-nu-plugin-s3-0.27) - ("rust-nu-plugin-selector" ,rust-nu-plugin-selector-0.27) - ("rust-nu-plugin-start" ,rust-nu-plugin-start-0.27) - ("rust-nu-plugin-sys" ,rust-nu-plugin-sys-0.27) - ("rust-nu-plugin-textview" ,rust-nu-plugin-textview-0.27) - ("rust-nu-plugin-to-bson" ,rust-nu-plugin-to-bson-0.27) - ("rust-nu-plugin-to-sqlite" ,rust-nu-plugin-to-sqlite-0.27) - ("rust-nu-plugin-tree" ,rust-nu-plugin-tree-0.27) - ("rust-nu-plugin-xpath" ,rust-nu-plugin-xpath-0.27) + ("rust-nu-cli" ,rust-nu-cli-0.28) + ("rust-nu-command" ,rust-nu-command-0.28) + ("rust-nu-data" ,rust-nu-data-0.28) + ("rust-nu-engine" ,rust-nu-engine-0.28) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-parser" ,rust-nu-parser-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) + ("rust-nu-value-ext" ,rust-nu-value-ext-0.28) + ("rust-nu-plugin-binaryview" ,rust-nu-plugin-binaryview-0.28) + ("rust-nu-plugin-chart" ,rust-nu-plugin-chart-0.28) + ("rust-nu-plugin-fetch" ,rust-nu-plugin-fetch-0.28) + ("rust-nu-plugin-from-bson" ,rust-nu-plugin-from-bson-0.28) + ("rust-nu-plugin-from-sqlite" ,rust-nu-plugin-from-sqlite-0.28) + ("rust-nu-plugin-inc" ,rust-nu-plugin-inc-0.28) + ("rust-nu-plugin-match" ,rust-nu-plugin-match-0.28) + ("rust-nu-plugin-post" ,rust-nu-plugin-post-0.28) + ("rust-nu-plugin-ps" ,rust-nu-plugin-ps-0.28) + ("rust-nu-plugin-s3" ,rust-nu-plugin-s3-0.28) + ("rust-nu-plugin-selector" ,rust-nu-plugin-selector-0.28) + ("rust-nu-plugin-start" ,rust-nu-plugin-start-0.28) + ("rust-nu-plugin-sys" ,rust-nu-plugin-sys-0.28) + ("rust-nu-plugin-textview" ,rust-nu-plugin-textview-0.28) + ("rust-nu-plugin-to-bson" ,rust-nu-plugin-to-bson-0.28) + ("rust-nu-plugin-to-sqlite" ,rust-nu-plugin-to-sqlite-0.28) + ("rust-nu-plugin-tree" ,rust-nu-plugin-tree-0.28) + ("rust-nu-plugin-xpath" ,rust-nu-plugin-xpath-0.28) ("rust-pretty-env-logger" ,rust-pretty-env-logger-0.4)) #:cargo-development-inputs (("rust-dunce" ,rust-dunce-1) - ("rust-nu-test-support" ,rust-nu-test-support-0.27) + ("rust-nu-test-support" ,rust-nu-test-support-0.28) ("rust-serial-test" ,rust-serial-test-0.5)))) (native-inputs `(("pkg-config" ,pkg-config) @@ -1027,23 +1027,46 @@ directory. These values can be piped through a series of steps, in a series of commands called a ``pipeline''.") (license license:expat))) -(define-public rust-nu-cli-0.27 +(define-public rust-nu-ansi-term-0.28 + (package + (name "rust-nu-ansi-term") + (version "0.28.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "nu-ansi-term" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0j4ybp1bmlj9lakrp21i180c26x0i9ird08xshsr6607g8nvc73f")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-serde" ,rust-serde-1) + ("rust-winapi" ,rust-winapi-0.3)))) + (home-page "https://www.nushell.sh") + (synopsis "Library for ANSI terminal colors and styles (bold, underline)") + (description + "This package is a library for ANSI terminal colors and styles (bold, +underline).") + (license license:expat))) + +(define-public rust-nu-cli-0.28 (package (name "rust-nu-cli") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu-cli" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "0rv4g5vfs81gans9npa2yyz893jqnd1yqcc16h0w6xlbsgdx2712")))) + (base32 "0wz3n4b7sz5zynwhs2gn11w1b9cji231f613r23j64a8y26hdzhn")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs - (("rust-ansi-term" ,rust-ansi-term-0.12) - ("rust-arboard" ,rust-arboard-1) + (("rust-arboard" ,rust-arboard-1) ("rust-async-recursion" ,rust-async-recursion-0.3) ("rust-async-trait" ,rust-async-trait-0.1) ("rust-base64" ,rust-base64-0.13) @@ -1080,19 +1103,20 @@ of commands called a ``pipeline''.") ("rust-lazy-static" ,rust-lazy-static-1) ("rust-log" ,rust-log-0.4) ("rust-meval" ,rust-meval-0.2) - ("rust-nu-command" ,rust-nu-command-0.27) - ("rust-nu-data" ,rust-nu-data-0.27) - ("rust-nu-engine" ,rust-nu-engine-0.27) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-json" ,rust-nu-json-0.27) - ("rust-nu-parser" ,rust-nu-parser-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) - ("rust-nu-stream" ,rust-nu-stream-0.27) - ("rust-nu-table" ,rust-nu-table-0.27) - ("rust-nu-test-support" ,rust-nu-test-support-0.27) - ("rust-nu-value-ext" ,rust-nu-value-ext-0.27) + ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.28) + ("rust-nu-command" ,rust-nu-command-0.28) + ("rust-nu-data" ,rust-nu-data-0.28) + ("rust-nu-engine" ,rust-nu-engine-0.28) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-json" ,rust-nu-json-0.28) + ("rust-nu-parser" ,rust-nu-parser-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) + ("rust-nu-stream" ,rust-nu-stream-0.28) + ("rust-nu-table" ,rust-nu-table-0.28) + ("rust-nu-test-support" ,rust-nu-test-support-0.28) + ("rust-nu-value-ext" ,rust-nu-value-ext-0.28) ("rust-num-bigint" ,rust-num-bigint-0.3) ("rust-num-format" ,rust-num-format-0.4) ("rust-num-traits" ,rust-num-traits-0.2) @@ -1143,23 +1167,22 @@ of commands called a ``pipeline''.") (description "CLI for nushell") (license license:expat))) -(define-public rust-nu-command-0.27 +(define-public rust-nu-command-0.28 (package (name "rust-nu-command") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu-command" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1kpf72fw310mnywv3y678cgxkdzhfss14228p0ndhr2knxz8gdki")))) + (base32 "0n6967w99m4zi52lfb57ycckammcc4im92yl5v2a2r6avnxrby1d")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs - (("rust-ansi-term" ,rust-ansi-term-0.12) - ("rust-arboard" ,rust-arboard-1) + (("rust-arboard" ,rust-arboard-1) ("rust-async-recursion" ,rust-async-recursion-0.3) ("rust-async-trait" ,rust-async-trait-0.1) ("rust-base64" ,rust-base64-0.13) @@ -1171,6 +1194,7 @@ of commands called a ``pipeline''.") ("rust-chrono-tz" ,rust-chrono-tz-0.5) ("rust-clap" ,rust-clap-2) ("rust-codespan-reporting" ,rust-codespan-reporting-0.11) + ("rust-crossterm" ,rust-crossterm-0.19) ("rust-csv" ,rust-csv-1) ("rust-ctrlc" ,rust-ctrlc-3) ("rust-derive-new" ,rust-derive-new-0.5) @@ -1196,19 +1220,20 @@ of commands called a ``pipeline''.") ("rust-lazy-static" ,rust-lazy-static-1) ("rust-log" ,rust-log-0.4) ("rust-meval" ,rust-meval-0.2) - ("rust-nu-data" ,rust-nu-data-0.27) - ("rust-nu-engine" ,rust-nu-engine-0.27) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-json" ,rust-nu-json-0.27) - ("rust-nu-parser" ,rust-nu-parser-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) - ("rust-nu-stream" ,rust-nu-stream-0.27) - ("rust-nu-table" ,rust-nu-table-0.27) - ("rust-nu-test-support" - ,rust-nu-test-support-0.27) - ("rust-nu-value-ext" ,rust-nu-value-ext-0.27) + ("rust-minus" ,rust-minus-3) + ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.28) + ("rust-nu-data" ,rust-nu-data-0.28) + ("rust-nu-engine" ,rust-nu-engine-0.28) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-json" ,rust-nu-json-0.28) + ("rust-nu-parser" ,rust-nu-parser-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) + ("rust-nu-stream" ,rust-nu-stream-0.28) + ("rust-nu-table" ,rust-nu-table-0.28) + ("rust-nu-test-support" ,rust-nu-test-support-0.28) + ("rust-nu-value-ext" ,rust-nu-value-ext-0.28) ("rust-num-bigint" ,rust-num-bigint-0.3) ("rust-num-format" ,rust-num-format-0.4) ("rust-num-traits" ,rust-num-traits-0.2) @@ -1256,23 +1281,22 @@ of commands called a ``pipeline''.") (description "CLI for nushell") (license license:expat))) -(define-public rust-nu-data-0.27 +(define-public rust-nu-data-0.28 (package (name "rust-nu-data") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu-data" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "0v7rkbrbzjy9794isz1z3dz1kpciadgg7hdfr6107i3qw11j8pq3")))) + (base32 "1gq0izbpaw4lp92ia3d3i14x649r1s6jscabm6xdi2qcxfb420kz")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs - (("rust-ansi-term" ,rust-ansi-term-0.12) - ("rust-bigdecimal" ,rust-bigdecimal-0.2) + (("rust-bigdecimal" ,rust-bigdecimal-0.2) ("rust-byte-unit" ,rust-byte-unit-4) ("rust-chrono" ,rust-chrono-0.4) ("rust-derive-new" ,rust-derive-new-0.5) @@ -1281,16 +1305,16 @@ of commands called a ``pipeline''.") ("rust-getset" ,rust-getset-0.1) ("rust-indexmap" ,rust-indexmap-1) ("rust-log" ,rust-log-0.4) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) - ("rust-nu-table" ,rust-nu-table-0.27) - ("rust-nu-test-support" ,rust-nu-test-support-0.27) - ("rust-nu-value-ext" ,rust-nu-value-ext-0.27) + ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.28) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) + ("rust-nu-table" ,rust-nu-table-0.28) + ("rust-nu-test-support" ,rust-nu-test-support-0.28) + ("rust-nu-value-ext" ,rust-nu-value-ext-0.28) ("rust-num-bigint" ,rust-num-bigint-0.3) ("rust-num-format" ,rust-num-format-0.4) ("rust-num-traits" ,rust-num-traits-0.2) - ("rust-parking-lot" ,rust-parking-lot-0.11) ("rust-query-interface" ,rust-query-interface-0.3) ("rust-serde" ,rust-serde-1) ("rust-toml" ,rust-toml-0.5) @@ -1300,23 +1324,22 @@ of commands called a ``pipeline''.") (description "CLI for nushell") (license license:expat))) -(define-public rust-nu-engine-0.27 +(define-public rust-nu-engine-0.28 (package (name "rust-nu-engine") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu-engine" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "0a1b8j7k2rawdimxr7yknw6yk0pbs69qj5p73sg4a24pyx0f7zkp")))) + (base32 "135bwcqvb8vhg417yzz90bj396f9hwpbqrdi9kw8fvmfz573z32s")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs - (("rust-ansi-term" ,rust-ansi-term-0.12) - ("rust-async-recursion" ,rust-async-recursion-0.3) + (("rust-async-recursion" ,rust-async-recursion-0.3) ("rust-async-trait" ,rust-async-trait-0.1) ("rust-bytes" ,rust-bytes-0.5) ("rust-derive-new" ,rust-derive-new-0.5) @@ -1333,14 +1356,15 @@ of commands called a ``pipeline''.") ("rust-indexmap" ,rust-indexmap-1) ("rust-itertools" ,rust-itertools-0.10) ("rust-log" ,rust-log-0.4) - ("rust-nu-data" ,rust-nu-data-0.27) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-parser" ,rust-nu-parser-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) - ("rust-nu-stream" ,rust-nu-stream-0.27) - ("rust-nu-value-ext" ,rust-nu-value-ext-0.27) + ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.28) + ("rust-nu-data" ,rust-nu-data-0.28) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-parser" ,rust-nu-parser-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) + ("rust-nu-stream" ,rust-nu-stream-0.28) + ("rust-nu-value-ext" ,rust-nu-value-ext-0.28) ("rust-parking-lot" ,rust-parking-lot-0.11) ("rust-rayon" ,rust-rayon-1) ("rust-serde" ,rust-serde-1) @@ -1348,6 +1372,7 @@ of commands called a ``pipeline''.") ("rust-tempfile" ,rust-tempfile-3) ("rust-term-size" ,rust-term-size-0.3) ("rust-termcolor" ,rust-termcolor-1) + ("rust-trash" ,rust-trash-1) ("rust-umask" ,rust-umask-1) ("rust-users" ,rust-users-0.11)))) (home-page "https://www.nushell.sh") @@ -1355,28 +1380,28 @@ of commands called a ``pipeline''.") (description "Core commands for nushell") (license license:expat))) -(define-public rust-nu-errors-0.27 +(define-public rust-nu-errors-0.28 (package (name "rust-nu-errors") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu-errors" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "0h81034cmlra627bnq7kp46s3k61j5xhzbbk61lxybmyg1m5dr74")))) + (base32 "1zb5mmhzjh5cd27ry4z0vgw99ic9k3badxy3ywjk72nzpr5ra303")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs - (("rust-ansi-term" ,rust-ansi-term-0.12) - ("rust-bigdecimal" ,rust-bigdecimal-0.2) + (("rust-bigdecimal" ,rust-bigdecimal-0.2) ("rust-codespan-reporting" ,rust-codespan-reporting-0.11) ("rust-derive-new" ,rust-derive-new-0.5) ("rust-getset" ,rust-getset-0.1) ("rust-glob" ,rust-glob-0.3) - ("rust-nu-source" ,rust-nu-source-0.27) + ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) ("rust-num-bigint" ,rust-num-bigint-0.3) ("rust-num-traits" ,rust-num-traits-0.2) ("rust-serde" ,rust-serde-1) @@ -1388,41 +1413,42 @@ of commands called a ``pipeline''.") (description "Core error subsystem for Nushell") (license license:expat))) -(define-public rust-nu-json-0.27 +(define-public rust-nu-json-0.28 (package (name "rust-nu-json") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu-json" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1ymdiv606kiw6m79rr7blflk1m7cnk96ahxx5j82ygamkr4mckf3")))) + (base32 "02w1lp7mp1fg7rf5zpdzllvsmd0jlgmig50xxag6a901ic85ddr7")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-lazy-static" ,rust-lazy-static-1) + ("rust-linked-hash-map" ,rust-linked-hash-map-0.5) ("rust-num-traits" ,rust-num-traits-0.2) ("rust-regex" ,rust-regex-1) - ("rust-serde" ,rust-serde-0.8)))) + ("rust-serde" ,rust-serde-1)))) (home-page "https://www.nushell.sh") (synopsis "Fork of @code{serde-hjson}") (description "This package is a fork of @code{serde-hjson}.") (license license:expat))) -(define-public rust-nu-parser-0.27 +(define-public rust-nu-parser-0.28 (package (name "rust-nu-parser") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu-parser" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1zv68yzkrgdk8c50bbsrx3jfsg46621522zgg1glbv0809gcns5p")))) + (base32 "0sixgfj7nsg66gmsqchydkqbhf3dzg5igvcri7dz6qdadi578wb5")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t @@ -1435,10 +1461,10 @@ of commands called a ``pipeline''.") ("rust-indexmap" ,rust-indexmap-1) ("rust-itertools" ,rust-itertools-0.10) ("rust-log" ,rust-log-0.4) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) - ("rust-nu-test-support" ,rust-nu-test-support-0.27) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) + ("rust-nu-test-support" ,rust-nu-test-support-0.28) ("rust-num-bigint" ,rust-num-bigint-0.3) ("rust-num-traits" ,rust-num-traits-0.2) ("rust-serde" ,rust-serde-1) @@ -1449,10 +1475,10 @@ of commands called a ``pipeline''.") (description "Nushell parser") (license license:expat))) -(define-public rust-nu-plugin-0.27 +(define-public rust-nu-plugin-0.28 (package (name "rust-nu-plugin") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) @@ -1460,18 +1486,19 @@ of commands called a ``pipeline''.") (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "12x01n7x9bqn0pp5pymmaxmd32gjm6lcs3hd3zhp1y15swrj2kr9")))) + (base32 "1bkxkffcywaam8r55v8ciq42mgimgxzl4x8vb5qzx49a5gjb1831")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-bigdecimal" ,rust-bigdecimal-0.2) ("rust-indexmap" ,rust-indexmap-1) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) - ("rust-nu-test-support" ,rust-nu-test-support-0.27) - ("rust-nu-value-ext" ,rust-nu-value-ext-0.27) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) + ("rust-nu-test-support" + ,rust-nu-test-support-0.28) + ("rust-nu-value-ext" ,rust-nu-value-ext-0.28) ("rust-num-bigint" ,rust-num-bigint-0.3) ("rust-serde" ,rust-serde-1) ("rust-serde-json" ,rust-serde-json-1)))) @@ -1480,29 +1507,29 @@ of commands called a ``pipeline''.") (description "Nushell Plugin") (license license:expat))) -(define-public rust-nu-plugin-binaryview-0.27 +(define-public rust-nu-plugin-binaryview-0.28 (package (name "rust-nu-plugin-binaryview") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu_plugin_binaryview" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "0py5wzzf0527dj43k5lah2da9ws9w4n4mi2i6dprswmy4pvplhq1")))) + (base32 "055pc3idf1jsrks0hpx55vazaivxdjfncvbqjjsp89dk1011a3yp")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs - (("rust-ansi-term" ,rust-ansi-term-0.12) - ("rust-crossterm" ,rust-crossterm-0.19) + (("rust-crossterm" ,rust-crossterm-0.19) ("rust-image" ,rust-image-0.22) ("rust-neso" ,rust-neso-0.5) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) + ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.28) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) ("rust-pretty-hex" ,rust-pretty-hex-0.2) ("rust-rawkey" ,rust-rawkey-0.1)))) (home-page "https://www.nushell.sh") @@ -1511,29 +1538,29 @@ of commands called a ``pipeline''.") "This package provides a binary viewer plugin for Nushell.") (license license:expat))) -(define-public rust-nu-plugin-chart-0.27 +(define-public rust-nu-plugin-chart-0.28 (package (name "rust-nu-plugin-chart") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu_plugin_chart" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "07im3fcd9lxfnj3b81j1jky3yl1sfx3gqgcf8n46gfqh5gmgismb")))) + (base32 "114kg6vspympi2fr14sgvwnlinwa7s2vwv8f9a9p1kwqg4qa281s")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-crossterm" ,rust-crossterm-0.19) - ("rust-nu-cli" ,rust-nu-cli-0.27) - ("rust-nu-data" ,rust-nu-data-0.27) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) - ("rust-nu-value-ext" ,rust-nu-value-ext-0.27) + ("rust-nu-cli" ,rust-nu-cli-0.28) + ("rust-nu-data" ,rust-nu-data-0.28) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) + ("rust-nu-value-ext" ,rust-nu-value-ext-0.28) ("rust-tui" ,rust-tui-0.14)))) (home-page "https://www.nushell.sh") (synopsis "Plugin to display charts") @@ -1541,56 +1568,57 @@ of commands called a ``pipeline''.") "This package provides a plugin to display charts in Nushell.") (license license:expat))) -(define-public rust-nu-plugin-fetch-0.27 +(define-public rust-nu-plugin-fetch-0.28 (package (name "rust-nu-plugin-fetch") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu_plugin_fetch" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "06mgd7vis7g3br3acswq24v4ffi15zq5fi0i7v65jz418vapvmzp")))) + (base32 "1v7pc58m8gi5zscvyviy8j5zbn30hxqlb37c0grgda7635vqhq31")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-base64" ,rust-base64-0.13) ("rust-futures" ,rust-futures-0.3) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) - ("rust-surf" ,rust-surf-1) + ("rust-mime" ,rust-mime-0.3) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) + ("rust-surf" ,rust-surf-2) ("rust-url" ,rust-url-2)))) (home-page "https://www.nushell.sh") (synopsis "URL fetch plugin for Nushell") (description "This package provides a URL fetch plugin for Nushell.") (license license:expat))) -(define-public rust-nu-plugin-from-bson-0.27 +(define-public rust-nu-plugin-from-bson-0.28 (package (name "rust-nu-plugin-from-bson") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu_plugin_from_bson" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "16ksyzsxyy2wd138y1zz9sdq6s5zvrh7rrsvyhwdd4w7irk2q474")))) + (base32 "13k11dh2pc48181qcbqwwgwwqh5d2g99p0rq4ly75l5jwyyazi73")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-bigdecimal" ,rust-bigdecimal-0.2) ("rust-bson" ,rust-bson-0.14) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) - ("rust-nu-value-ext" ,rust-nu-value-ext-0.27) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) + ("rust-nu-value-ext" ,rust-nu-value-ext-0.28) ("rust-num-traits" ,rust-num-traits-0.2)))) (home-page "https://www.nushell.sh") (synopsis "Converter plugin to the bson format for Nushell") @@ -1599,27 +1627,27 @@ of commands called a ``pipeline''.") Nushell.") (license license:expat))) -(define-public rust-nu-plugin-from-sqlite-0.27 +(define-public rust-nu-plugin-from-sqlite-0.28 (package (name "rust-nu-plugin-from-sqlite") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu_plugin_from_sqlite" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "0z35aw6n2w4lmwp2797zd85ix64ch1msn5d0g3g2kdrihbpymxj2")))) + (base32 "0mpaz3vn7zf1ijccfd9rgrzl0fr3fci6j16w7a81x6dh7pqavxgn")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-bigdecimal" ,rust-bigdecimal-0.2) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) - ("rust-nu-value-ext" ,rust-nu-value-ext-0.27) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) + ("rust-nu-value-ext" ,rust-nu-value-ext-0.28) ("rust-num-traits" ,rust-num-traits-0.2) ("rust-rusqlite" ,rust-rusqlite-0.24) ("rust-tempfile" ,rust-tempfile-3)))) @@ -1630,27 +1658,28 @@ Nushell.") Nushell.") (license license:expat))) -(define-public rust-nu-plugin-inc-0.27 +(define-public rust-nu-plugin-inc-0.28 (package (name "rust-nu-plugin-inc") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu_plugin_inc" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1ykrfixf642zv0h6349mxsidm9m7j933imnw978v96ymzp7hdalk")))) + (base32 "1dbayv8gcjpz46xgvh9b1pka2ygyhyalk1xzh43cvaccqn4qafrb")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs - (("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) - ("rust-nu-test-support" ,rust-nu-test-support-0.27) - ("rust-nu-value-ext" ,rust-nu-value-ext-0.27) + (("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) + ("rust-nu-test-support" + ,rust-nu-test-support-0.28) + ("rust-nu-value-ext" ,rust-nu-value-ext-0.28) ("rust-semver" ,rust-semver-0.11)))) (home-page "https://www.nushell.sh") (synopsis "Version incrementer plugin for Nushell") @@ -1659,25 +1688,25 @@ Nushell.") Nushell.") (license license:expat))) -(define-public rust-nu-plugin-match-0.27 +(define-public rust-nu-plugin-match-0.28 (package (name "rust-nu-plugin-match") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu_plugin_match" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "0ax8aanmr8clvz3abbc4mwhpp2bwwzfh03vydwa50dadnrhrh51s")))) + (base32 "1d19hwrrmbwxx3nn7gjs2wvzf6wfhdai9jsq35n7bgjx2qyip0ma")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs - (("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) + (("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) ("rust-regex" ,rust-regex-1)))) (home-page "https://www.nushell.sh") (synopsis "Regex match plugin for Nushell") @@ -1685,27 +1714,27 @@ Nushell.") "This package provides a regex match plugin for Nushell.") (license license:expat))) -(define-public rust-nu-plugin-post-0.27 +(define-public rust-nu-plugin-post-0.28 (package (name "rust-nu-plugin-post") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu_plugin_post" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "19zsvddd5lb1y1jm1wldk8padxl3a4w55xh82hpxz4igvjblpcz6")))) + (base32 "1jha85gl422p9knr0m4xdx353nmm00zrj5yh9w2gdyzs6hbzf80q")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-base64" ,rust-base64-0.13) ("rust-futures" ,rust-futures-0.3) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) ("rust-num-traits" ,rust-num-traits-0.2) ("rust-serde-json" ,rust-serde-json-1) ("rust-surf" ,rust-surf-1) @@ -1715,27 +1744,27 @@ Nushell.") (description "This package is an HTTP POST plugin for Nushell.") (license license:expat))) -(define-public rust-nu-plugin-ps-0.27 +(define-public rust-nu-plugin-ps-0.28 (package (name "rust-nu-plugin-ps") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu_plugin_ps" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1d8i1hfpcjpiwikdi5i2gdnxxm43nnmmyfz1y7zivx5hzha1qjg1")))) + (base32 "0akgz7wi85ny2cfkcs9bn4hc97d4wdh9ayrzd6zasmird5kl1lv8")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-futures" ,rust-futures-0.3) ("rust-futures-timer" ,rust-futures-timer-3) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) ("rust-num-bigint" ,rust-num-bigint-0.3) ("rust-sysinfo" ,rust-sysinfo-0.16)))) (home-page "https://www.nushell.sh") @@ -1744,80 +1773,80 @@ Nushell.") "This package provides a process list plugin for Nushell.") (license license:expat))) -(define-public rust-nu-plugin-s3-0.27 +(define-public rust-nu-plugin-s3-0.28 (package (name "rust-nu-plugin-s3") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu_plugin_s3" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "14kk07rm62am24fp7cks8gcfp7h67zlcmfzpixh0rfwkfgr87mwq")))) + (base32 "02b71ljsi7z2nbpm9djaxvdg7ql6xn0mqibpnzql0d39wfb0bxc2")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-futures" ,rust-futures-0.3) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) ("rust-s3handler" ,rust-s3handler-0.6)))) (home-page "https://www.nushell.sh") (synopsis "S3 plugin for Nushell") (description "This package is an S3 plugin for Nushell.") (license license:expat))) -(define-public rust-nu-plugin-selector-0.27 +(define-public rust-nu-plugin-selector-0.28 (package (name "rust-nu-plugin-selector") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu_plugin_selector" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1nvqp8lzyiyk3n8c5gqr6wrk2pirzpyxpwc4r67fr9rsllyrfhw2")))) + (base32 "0g1sjlvylclhhp41h6xx6vaa10478albjgh3n7kg3p0s6i8db5a7")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-nipper" ,rust-nipper-0.1) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27)))) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28)))) (home-page "https://www.nushell.sh") (synopsis "Web scraping using CSS selector") (description "This package provides web scraping using CSS selector.") (license license:expat))) -(define-public rust-nu-plugin-start-0.27 +(define-public rust-nu-plugin-start-0.28 (package (name "rust-nu-plugin-start") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu_plugin_start" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1kznb1npqbbak3xk9w6m6ng6h7ir164il7xydrhwrl45mll2g4yw")))) + (base32 "1gqn6b1jpxcfx81c5c4yfs52gzxp9viyqj7hjs7fqvf5czi0bmz7")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-glob" ,rust-glob-0.3) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) ("rust-open" ,rust-open-1) ("rust-url" ,rust-url-2)))) (home-page "https://www.nushell.sh") @@ -1827,10 +1856,10 @@ Nushell.") Nushell.") (license license:expat))) -(define-public rust-nu-plugin-sys-0.27 +(define-public rust-nu-plugin-sys-0.28 (package (name "rust-nu-plugin-sys") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) @@ -1838,17 +1867,17 @@ Nushell.") (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1bdd745w5gmignfclp5fzwpyjfpqsmf6hrry3chn3jzdpl5gvgiw")))) + (base32 "16igj4z9f7kfy3x71ki3vaqdx6064l3k718vqfpabffjkz9qpfp5")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-futures" ,rust-futures-0.3) ("rust-futures-util" ,rust-futures-util-0.3) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) ("rust-num-bigint" ,rust-num-bigint-0.3) ("rust-sysinfo" ,rust-sysinfo-0.16)))) (home-page "https://www.nushell.sh") @@ -1856,28 +1885,28 @@ Nushell.") (description "This package provides a system info plugin for Nushell.") (license license:expat))) -(define-public rust-nu-plugin-textview-0.27 +(define-public rust-nu-plugin-textview-0.28 (package (name "rust-nu-plugin-textview") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu_plugin_textview" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "10w5isqgc5mf7rhs49rglm3s6pcij0ch12xkvrq4930y8pr6cy9l")))) + (base32 "07m3x9bkq1qliicnshgs6yi6q5fbl6d6gxcd60kqcavkvdknnf8m")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs - (("rust-ansi-term" ,rust-ansi-term-0.12) - ("rust-bat" ,rust-bat-0.17) - ("rust-nu-data" ,rust-nu-data-0.27) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) + (("rust-bat" ,rust-bat-0.17) + ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.28) + ("rust-nu-data" ,rust-nu-data-0.28) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) ("rust-term-size" ,rust-term-size-0.3) ("rust-url" ,rust-url-2)))) (home-page "https://www.nushell.sh") @@ -1886,27 +1915,27 @@ Nushell.") Nushell.") (license license:expat))) -(define-public rust-nu-plugin-to-bson-0.27 +(define-public rust-nu-plugin-to-bson-0.28 (package (name "rust-nu-plugin-to-bson") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu_plugin_to_bson" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1x90r11wg46i2wx21gk42pyjjcpib66rrqgxrc690y376dn9ivlr")))) + (base32 "1rq2kwzrby8rh57gq4s4ljj4fgfgblrhjncjycpmkw2jzn7sa6xi")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-bson" ,rust-bson-0.14) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) - ("rust-nu-value-ext" ,rust-nu-value-ext-0.27) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) + ("rust-nu-value-ext" ,rust-nu-value-ext-0.28) ("rust-num-traits" ,rust-num-traits-0.2)))) (home-page "https://www.nushell.sh") (synopsis "Converter plugin to the bson format for Nushell") @@ -1915,27 +1944,27 @@ Nushell.") Nushell.") (license license:expat))) -(define-public rust-nu-plugin-to-sqlite-0.27 +(define-public rust-nu-plugin-to-sqlite-0.28 (package (name "rust-nu-plugin-to-sqlite") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu_plugin_to_sqlite" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "055k5sksxv7q4ivy74c1ndxps30c5c97rz6v7dibckh9c0q1vbhk")))) + (base32 "0q07fv4i4rkzjna54mkcri5bfngqkkmpfj3vmiyzib0x84pvzfjf")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-hex" ,rust-hex-0.4) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) - ("rust-nu-value-ext" ,rust-nu-value-ext-0.27) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) + ("rust-nu-value-ext" ,rust-nu-value-ext-0.28) ("rust-num-traits" ,rust-num-traits-0.2) ("rust-rusqlite" ,rust-rusqlite-0.24) ("rust-tempfile" ,rust-tempfile-3)))) @@ -1946,26 +1975,26 @@ Nushell.") Nushell.") (license license:expat))) -(define-public rust-nu-plugin-tree-0.27 +(define-public rust-nu-plugin-tree-0.28 (package (name "rust-nu-plugin-tree") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu_plugin_tree" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "0bjir9f5fraz5n9bj99ba7djmnzb8ws0dbvdhwn5hz9lmb5ss0mg")))) + (base32 "0xifcyg0z025n6w0cqjnmrjcbynv437dkxpsxgbvm4iybj558590")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-derive-new" ,rust-derive-new-0.5) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) ("rust-ptree" ,rust-ptree-0.3)))) (home-page "https://www.nushell.sh") (synopsis "Tree viewer plugin for Nushell") @@ -1973,27 +2002,27 @@ Nushell.") Nushell.") (license license:expat))) -(define-public rust-nu-plugin-xpath-0.27 +(define-public rust-nu-plugin-xpath-0.28 (package (name "rust-nu-plugin-xpath") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu_plugin_xpath" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1cyq7qb8bzzf599fq24pg7z0svsdffkd26fplggdg4nihjv28clv")))) + (base32 "0mwajr07489kgv2yhxsk0laydf8m8p736npvkcbsjxaxydnv5a5a")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-bigdecimal" ,rust-bigdecimal-0.2) ("rust-indexmap" ,rust-indexmap-1) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-plugin" ,rust-nu-plugin-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-plugin" ,rust-nu-plugin-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) ("rust-sxd-document" ,rust-sxd-document-0.3) ("rust-sxd-xpath" ,rust-sxd-xpath-0.4)))) (home-page "https://www.nushell.sh") @@ -2001,17 +2030,17 @@ Nushell.") (description "Traverses XML") (license license:expat))) -(define-public rust-nu-protocol-0.27 +(define-public rust-nu-protocol-0.28 (package (name "rust-nu-protocol") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu-protocol" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1031mysphq7qczmilmdshcm4h6wh0132cvdc0346qz2q2b3qmrjr")))) + (base32 "0khpg2dnapyyimyq4ys1nfs1xzysxq2nb1ka2lmjfgdxrbwzrqnj")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t @@ -2023,8 +2052,8 @@ Nushell.") ("rust-getset" ,rust-getset-0.1) ("rust-indexmap" ,rust-indexmap-1) ("rust-log" ,rust-log-0.4) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) ("rust-num-bigint" ,rust-num-bigint-0.3) ("rust-num-integer" ,rust-num-integer-0.1) ("rust-num-traits" ,rust-num-traits-0.2) @@ -2038,17 +2067,17 @@ Nushell.") (description "Core values and protocols for Nushell") (license license:expat))) -(define-public rust-nu-source-0.27 +(define-public rust-nu-source-0.28 (package (name "rust-nu-source") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu-source" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1akfcn7138sfaawb7sl5311vgmcba32c79lnkmdzpb48xdr9ybp8")))) + (base32 "13a590iff8bg6p38xs1hh5krmii6qz2w5k7ak57dyh3r3vbhvmmd")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t @@ -2065,46 +2094,46 @@ Nushell.") Nushell.") (license license:expat))) -(define-public rust-nu-stream-0.27 +(define-public rust-nu-stream-0.28 (package (name "rust-nu-stream") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu-stream" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "09xm93mk0kyi4nd6f1x89yfk3139ahamirs2zwnzr97f7xng216v")))) + (base32 "02dl4d9gzl2jhg71hfc04x9j4p29iwwcyvm6m9pihwfpwb3q2bhj")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-futures" ,rust-futures-0.3) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27)))) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28)))) (home-page "https://www.nushell.sh") (synopsis "Nushell stream") (description "This package provides Nushell stream.") (license license:expat))) -(define-public rust-nu-table-0.27 +(define-public rust-nu-table-0.28 (package (name "rust-nu-table") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu-table" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1vkn0kf7rwywrj8d31mr4j64rwjay9syjsvg94yi9rdxbccd5jf2")))) + (base32 "15yd0wrl0y0rmjdvq2gmk97nxppdy5r424vy8v85gk876g82gi1s")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs - (("rust-ansi-term" ,rust-ansi-term-0.12) + (("rust-nu-ansi-term" ,rust-nu-ansi-term-0.28) ("rust-regex" ,rust-regex-1) ("rust-unicode-width" ,rust-unicode-width-0.1)))) (home-page "https://www.nushell.sh") @@ -2112,17 +2141,17 @@ Nushell.") (description "Nushell table printing") (license license:expat))) -(define-public rust-nu-test-support-0.27 +(define-public rust-nu-test-support-0.28 (package (name "rust-nu-test-support") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) (uri (crate-uri "nu-test-support" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "0yk1368by0s9p7j2diw5mdk88by00cw6q6wspasbprcr684g5kvn")))) + (base32 "1qphsvr1wpn26ak5g4bj106csm8bia12srpv1dwy4zif42if57gm")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t @@ -2133,10 +2162,10 @@ Nushell.") ("rust-getset" ,rust-getset-0.1) ("rust-glob" ,rust-glob-0.3) ("rust-indexmap" ,rust-indexmap-1) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) - ("rust-nu-value-ext" ,rust-nu-value-ext-0.27) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) + ("rust-nu-value-ext" ,rust-nu-value-ext-0.28) ("rust-num-bigint" ,rust-num-bigint-0.3) ("rust-tempfile" ,rust-tempfile-3)))) (home-page "https://www.nushell.sh") @@ -2145,10 +2174,10 @@ Nushell.") tests.") (license license:expat))) -(define-public rust-nu-value-ext-0.27 +(define-public rust-nu-value-ext-0.28 (package (name "rust-nu-value-ext") - (version "0.27.1") + (version "0.28.0") (source (origin (method url-fetch) @@ -2156,16 +2185,16 @@ tests.") (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1yhzqzafg0l1fj4pwlbjl0h74b0rj0x4gdx2rgc3nzndc7j00axn")))) + (base32 "0kwx2s4gyss8gmj72kl0y2yzq5injwv9g9n53bal339b81dd7v90")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs (("rust-indexmap" ,rust-indexmap-1) ("rust-itertools" ,rust-itertools-0.10) - ("rust-nu-errors" ,rust-nu-errors-0.27) - ("rust-nu-protocol" ,rust-nu-protocol-0.27) - ("rust-nu-source" ,rust-nu-source-0.27) + ("rust-nu-errors" ,rust-nu-errors-0.28) + ("rust-nu-protocol" ,rust-nu-protocol-0.28) + ("rust-nu-source" ,rust-nu-source-0.28) ("rust-num-traits" ,rust-num-traits-0.2)))) (home-page "https://www.nushell.sh") (synopsis "@code{Extension} traits for values in Nushell") diff --git a/gnu/packages/simulation.scm b/gnu/packages/simulation.scm index fe93e68076..ed9a4b8f2e 100644 --- a/gnu/packages/simulation.scm +++ b/gnu/packages/simulation.scm @@ -591,7 +591,7 @@ user interface to the FEniCS core components and external libraries.") license:lgpl3+)))) (define-public fenics - (package (inherit fenics-dolfin) + (package/inherit fenics-dolfin (name "fenics") (build-system python-build-system) (inputs diff --git a/gnu/packages/skarnet.scm b/gnu/packages/skarnet.scm index 8e8abffbfb..4ada54a842 100644 --- a/gnu/packages/skarnet.scm +++ b/gnu/packages/skarnet.scm @@ -30,14 +30,14 @@ (define-public skalibs (package (name "skalibs") - (version "2.10.0.1") + (version "2.10.0.2") (source (origin (method url-fetch) (uri (string-append "https://skarnet.org/software/skalibs/skalibs-" version ".tar.gz")) (sha256 - (base32 "1chwjzlh13jbrldk77h3i4qjqv8hjpvvd3papcb8j46mvj7sxysg")))) + (base32 "03qyi77wgcw3nzy7i932wd98d6j7nnzxc8ddl973vf5sa1v3vflb")))) (build-system gnu-build-system) (arguments '(#:tests? #f ; no tests exist @@ -62,14 +62,14 @@ and file system operations. It is used by all skarnet.org software.") (define-public execline (package (name "execline") - (version "2.7.0.1") + (version "2.8.0.0") (source (origin (method url-fetch) (uri (string-append "https://skarnet.org/software/execline/execline-" version ".tar.gz")) (sha256 - (base32 "1pfwiynr3vk7ajzknjqs5mpzb78m97aqcsd3mc34lxkzz5j13xnd")))) + (base32 "0vbn4pdazy6x6213vn42k0khcij5bvkbrcfg7nw6inhf8154nx77")))) (build-system gnu-build-system) (inputs `(("skalibs" ,skalibs))) (arguments @@ -104,14 +104,14 @@ complexity."))) (define-public s6 (package (name "s6") - (version "2.10.0.1") + (version "2.10.0.2") (source (origin (method url-fetch) (uri (string-append "https://skarnet.org/software/s6/s6-" version ".tar.gz")) (sha256 - (base32 "1xfil1a138k7a83rqmrgmhklmasgspgdqszn8nyyn3vrnh7ny0nh")))) + (base32 "08bcrp7ck1l3wmjyzxi3vgk6j0n2jfymxs4rjjw4if40f3lgqfmj")))) (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.4.0.0") + (version "2.4.1.0") (source (origin (method url-fetch) - (uri (string-append "https://skarnet.org/software/s6-networking/s6-networking-" - version ".tar.gz")) + (uri (string-append "https://skarnet.org/software/s6-networking/" + "s6-networking-" version ".tar.gz")) (sha256 - (base32 "1yqykwfl5jnkxgr6skfj5kzd896pknij0hi5m7lj0r18jpfs5zgq")))) + (base32 "023wnayv1gddklnsh3qv7i5jfy2fisbp24wa0nzjg0nfq3p807yc")))) (build-system gnu-build-system) (inputs `(("skalibs" ,skalibs) ("execline" ,execline) @@ -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.6.0") + (version "1.0.6.1") (source (origin (method url-fetch) @@ -303,7 +303,7 @@ systems and other constrained environments, but they work everywhere."))) "https://skarnet.org/software/s6-linux-init/s6-linux-init-" version ".tar.gz")) (sha256 - (base32 "0kzif3dqhm7h4h7c6npzdbcy7w756222g8ysw116fgb8j385dr6w")))) + (base32 "0sq8ya39a1qs61cdjns8ijwrvxnqd4snk2ab4j5wl9a87i7wixhn")))) (build-system gnu-build-system) (inputs `(("execline" ,execline) diff --git a/gnu/packages/sphinx.scm b/gnu/packages/sphinx.scm index e046885a6b..e85e4a0f7e 100644 --- a/gnu/packages/sphinx.scm +++ b/gnu/packages/sphinx.scm @@ -14,6 +14,7 @@ ;;; Copyright © 2019 Alexandros Theodotou <alex@zrythm.org> ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org> ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> +;;; Copyright © 2021 Eric Bavier <bavier@posteo.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -43,6 +44,7 @@ #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) #:use-module (gnu packages python-build) + #:use-module (gnu packages python-crypto) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages time)) @@ -669,6 +671,33 @@ documentation when a change is detected. It also includes a livereload enabled web server.") (license license:expat))) +(define-public python-sphinx-autodoc-typehints + (package + (name "python-sphinx-autodoc-typehints") + (version "1.11.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "sphinx-autodoc-typehints" version)) + (sha256 + (base32 + "086v9mg21pvfx0lfqjx2xf36hnzrsripfg345xi59f7xwb9scjr4")))) + (build-system python-build-system) + (propagated-inputs + `(("python-setuptools-scm" ,python-setuptools-scm) + ("python-sphinx" ,python-sphinx))) + (native-inputs + `(("python-dataclasses" ,python-dataclasses) + ("python-pytest" ,python-pytest) + ("python-sphinx" ,python-sphinx) + ("python-sphobjinv" ,python-sphobjinv) + ("python-typing-extensions" ,python-typing-extensions))) + (home-page "https://pypi.org/project/sphinx-autodoc-typehints/") + (synopsis "Type hints for the Sphinx autodoc extension") + (description "This extension allows you to use Python 3 annotations for +documenting acceptable argument types and return value types of functions.") + (license license:expat))) + (define-public python-nbsphinx (package (name "python-nbsphinx") @@ -697,3 +726,26 @@ their results) in both HTML and LaTeX output. Un-evaluated notebooks - i.e. notebooks without stored output cells - will be automatically executed during the Sphinx build process.") (license license:expat))) + +(define-public python-sphobjinv + (package + (name "python-sphobjinv") + (version "2.0.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "sphobjinv" version)) + (sha256 + (base32 + "126lgm54c94ay3fci512ap4l607gak90pbz0fk98syxvj5izrrzx")))) + (build-system python-build-system) + (propagated-inputs + `(("python-attrs" ,python-attrs) + ("python-certifi" ,python-certifi) + ("python-fuzzywuzzy" ,python-fuzzywuzzy) + ("python-jsonschema" ,python-jsonschema) + ("python-levenshtein" ,python-levenshtein))) + (home-page "https://github.com/bskinn/sphobjinv") + (synopsis "Sphinx cross-reference tool") + (description "Sphinx objects.inv inspection/manipulation tool.") + (license license:expat))) diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index f4598ff2b3..c0e0bd87d8 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -781,14 +781,14 @@ shell services and remote host selection.") (define-public python-asyncssh (package (name "python-asyncssh") - (version "2.3.0") + (version "2.5.0") (source (origin (method url-fetch) (uri (pypi-uri "asyncssh" version)) (sha256 (base32 - "0pi6npmsgx7l9r1qrfvg8mxx3i23ipff492xz4yhrw13f56a7ga4")))) + "02xpzir9rmw7b7k07m3f912h6jvy9yzan9yn3ckrmqx2ffpy4r8b")))) (build-system python-build-system) (propagated-inputs `(("python-cryptography" ,python-cryptography) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 8964c85c9c..915eaeac18 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -417,14 +417,14 @@ available, greatly increasing its breadth and scope.") (define-public r-boot (package (name "r-boot") - (version "1.3-26") + (version "1.3-27") (source (origin (method url-fetch) (uri (cran-uri "boot" version)) (sha256 (base32 - "161l3q3kdmi7s3xwl3xxg3x3zx8787hsvsr2mmawwxq2cad131fl")))) + "1v9anpxj4p83kd40gyfy8a454b2jmn11incrzym7wdvh8mdxpcil")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/boot") (synopsis "Bootstrap functions for R") @@ -438,14 +438,14 @@ D.V. Hinkley (1997, CUP), originally written by Angelo Canty for S.") (define-public r-mass (package (name "r-mass") - (version "7.3-53") + (version "7.3-53.1") (source (origin (method url-fetch) (uri (cran-uri "MASS" version)) (sha256 (base32 - "0f2bwsbqr3nzsqxva051lg8wd068naqif3vc48hac0m3mmq4x0j1")))) + "0ra46441y4iwcpd8px7j7vcjfj09fawl5khilaivjbg3gswiwnz4")))) (properties `((upstream-name . "MASS"))) (build-system r-build-system) (home-page "http://www.stats.ox.ac.uk/pub/MASS4/") @@ -481,14 +481,14 @@ k-nearest neighbour, Learning Vector Quantization and Self-Organizing Maps.") (define-public r-cluster (package (name "r-cluster") - (version "2.1.0") + (version "2.1.1") (source (origin (method url-fetch) (uri (cran-uri "cluster" version)) (sha256 (base32 - "055af3yz2biqbsbwm4arwr1yqnj4gicpzv2i6dbfl5pnz2z5byga")))) + "0qw06n1f7771mszc9y1f1c9zngd82zlf2s2z30p9514vxh4wgf5x")))) (build-system r-build-system) (native-inputs `(("gfortran" ,gfortran))) @@ -630,13 +630,13 @@ nonlinear mixed-effects models.") (define-public r-mgcv (package (name "r-mgcv") - (version "1.8-33") + (version "1.8-34") (source (origin (method url-fetch) (uri (cran-uri "mgcv" version)) (sha256 - (base32 "1x1bdzz2b2f05626xygwqp30b4rhblgg76hs15j9ab4fjan7pjwq")))) + (base32 "1pkky9xb3wsinqd75gkfbgw270vx8zh52id6bf1xj9njnzrkmc8m")))) (build-system r-build-system) (propagated-inputs `(("r-matrix" ,r-matrix) @@ -711,14 +711,14 @@ analysis.") (define-public r-survival (package (name "r-survival") - (version "3.2-7") + (version "3.2-9") (source (origin (method url-fetch) (uri (cran-uri "survival" version)) (sha256 (base32 - "0ila864g5b9yhjhk3jirgdpi06sksc0axa78890dmkvyv9rwsmjk")))) + "1dkpdci2lvx141193wd69445y65w8k2pa89lc3l83i5jaj56svdn")))) (build-system r-build-system) (propagated-inputs `(("r-matrix" ,r-matrix))) @@ -1203,19 +1203,21 @@ and to generate base64 encoded string from raster matrix.") (define-public r-svglite (package (name "r-svglite") - (version "1.2.3.2") + (version "2.0.0") (source (origin (method url-fetch) (uri (cran-uri "svglite" version)) (sha256 (base32 - "00n8bg4iligl0h24v42cka417w26zmcxrr4r6k8wdal1riwhgmi5")))) + "19ggknw5322yw7r1bzhw0bqggcrpn0qxddk7kblpqnra2zz2brkn")))) (build-system r-build-system) + (inputs + `(("libpng" ,libpng) + ("zlib" ,zlib))) (propagated-inputs - `(("r-bh" ,r-bh) - ("r-gdtools" ,r-gdtools) - ("r-rcpp" ,r-rcpp))) + `(("r-cpp11" ,r-cpp11) + ("r-systemfonts" ,r-systemfonts))) (native-inputs `(("r-knitr" ,r-knitr))) (home-page "https://github.com/hadley/svglite") @@ -1328,14 +1330,16 @@ adapted for other output formats, such as HTML or LaTeX.") (define-public r-formatr (package (name "r-formatr") - (version "1.7") + (version "1.8") (source (origin (method url-fetch) (uri (cran-uri "formatR" version)) (sha256 (base32 - "1nsxbrx31k3y6yql30qkrvdfyznlia2qfvwv95mfiy7m7wdn4rm3")))) + "04q6y53ji7ll131khbwiz584wl8sinhh3z82p6r8dqa9f618ay6z")))) (build-system r-build-system) + (native-inputs + `(("r-knitr" ,r-knitr))) (home-page "https://yihui.org/formatr/") (synopsis "Format R code automatically") (description @@ -1367,13 +1371,13 @@ supported via Andre Simon's highlight package.") (define-public r-mime (package (name "r-mime") - (version "0.9") + (version "0.10") (source (origin (method url-fetch) (uri (cran-uri "mime" version)) (sha256 (base32 - "107sqarmyhxlch5nrg796i5z03p9mshskisiq2fm628ajk99gkrc")))) + "1xz37fizlx4w3g8kbim7vr5slqd6cmaq5sa0s4q7ayl1bahk6ckq")))) (build-system r-build-system) (home-page "https://github.com/yihui/mime") (synopsis "R package to map filenames to MIME types") @@ -1584,13 +1588,13 @@ R packages that praise their users.") (define-public r-testthat (package (name "r-testthat") - (version "3.0.1") + (version "3.0.2") (source (origin (method url-fetch) (uri (cran-uri "testthat" version)) (sha256 (base32 - "1l1s4jgmgbsf711ma5i58ssgkz98an7hijcxvwfz314nf5fc8zr9")))) + "03sbk36vrjhzfap6a9czxw93r7h06rh3mb01inbrhrh5r2pd00qq")))) (build-system r-build-system) (propagated-inputs `(("r-brio" ,r-brio) @@ -1664,19 +1668,17 @@ like tidy evaluation.") (define-public r-tibble (package (name "r-tibble") - (version "3.0.6") + (version "3.1.0") (source (origin (method url-fetch) (uri (cran-uri "tibble" version)) (sha256 (base32 - "0f41gnq0wwmy1z96lg3gicvm54jh685f7i3ag8yfk39r3ql2vzpv")))) + "0khmypf49la8n5gx72n7gr6dl6r6ja404i578g6sg0ail3g2i7lm")))) (build-system r-build-system) (propagated-inputs - `(("r-cli" ,r-cli) - ("r-crayon" ,r-crayon) - ("r-ellipsis" ,r-ellipsis) + `(("r-ellipsis" ,r-ellipsis) ("r-fansi" ,r-fansi) ("r-lifecycle" ,r-lifecycle) ("r-magrittr" ,r-magrittr) @@ -1696,13 +1698,13 @@ and printing capabilities than traditional data frames.") (define-public r-dplyr (package (name "r-dplyr") - (version "1.0.4") + (version "1.0.5") (source (origin (method url-fetch) (uri (cran-uri "dplyr" version)) (sha256 (base32 - "0fh9ivw4jgdhcdz2mcs0b869jb479cjzr2c0s2x3552is5qqzxlv")))) + "0w3fr6sn0mw5mjs27669czpc8vpjj6ayrjavw8v0gd7ccsfa0hbm")))) (build-system r-build-system) (propagated-inputs `(("r-ellipsis" ,r-ellipsis) @@ -1853,13 +1855,13 @@ times.") (define-public r-data-table (package (name "r-data-table") - (version "1.13.6") + (version "1.14.0") (source (origin (method url-fetch) (uri (cran-uri "data.table" version)) (sha256 (base32 - "16ryrpzl86krww5nx7a97i09y5xqld4lw4d9pa1vzjl99x6ds36m")))) + "0kgbvap5v2spnkz3dwfm4jh4qcpvbzdn9s8bzfnhzabz9qjdxw8k")))) (build-system r-build-system) (inputs `(("zlib" ,zlib))) @@ -1980,7 +1982,7 @@ inference for statistical models.") (define-public python2-statsmodels (let ((stats (package-with-python2 python-statsmodels))) - (package (inherit stats) + (package/inherit stats (propagated-inputs `(("python2-pytz" ,python2-pytz) ("python2-numpy" ,python2-numpy) @@ -2268,18 +2270,17 @@ module, Java Server Pages, and Python's psp module.") (define-public r-desc (package (name "r-desc") - (version "1.2.0") + (version "1.3.0") (source (origin (method url-fetch) (uri (cran-uri "desc" version)) (sha256 (base32 - "1s6s13fk6sxwcj8wzkwxl9vr33153xx11p5wi9avqx3rzkabavz6")))) + "1sw4vya3l971gpccq4gnjywgbl73bgx8la18l0wy617qv94f905y")))) (build-system r-build-system) (propagated-inputs - `(("r-assertthat" ,r-assertthat) - ("r-crayon" ,r-crayon) + `(("r-crayon" ,r-crayon) ("r-r6" ,r-r6) ("r-rprojroot" ,r-rprojroot))) (home-page "https://github.com/r-pkgs/desc") @@ -2635,13 +2636,13 @@ well as additional utilities such as panel and axis annotation functions.") (define-public r-rcpparmadillo (package (name "r-rcpparmadillo") - (version "0.10.2.1.0") + (version "0.10.2.2.0") (source (origin (method url-fetch) (uri (cran-uri "RcppArmadillo" version)) (sha256 (base32 - "03i9npq2mcv08ppp1ab2vzr412d4q9vldcc87nz2djbh9ai3xnv5")))) + "193smj6vp3cn3qjhrx2llgi5c7hs069crhvi85xj2vzx80fx6r9q")))) (properties `((upstream-name . "RcppArmadillo"))) (build-system r-build-system) (propagated-inputs @@ -2727,13 +2728,13 @@ certain criterion, e.g., it contains a certain regular file.") (define-public r-rmarkdown (package (name "r-rmarkdown") - (version "2.6") + (version "2.7") (source (origin (method url-fetch) (uri (cran-uri "rmarkdown" version)) (sha256 - (base32 "1c7nrpnv2v43msv7nia90rjh6s5x9m5wlb3mpiwy04fyfb29krz6")))) + (base32 "0shj637qhpcf30il3lhl3k5bxi5l3x3gf612hbqlakp1qrgrf8lm")))) (properties `((upstream-name . "rmarkdown"))) (build-system r-build-system) (propagated-inputs @@ -2842,13 +2843,13 @@ a column in data frame.") (define-public r-rsqlite (package (name "r-rsqlite") - (version "2.2.3") + (version "2.2.4") (source (origin (method url-fetch) (uri (cran-uri "RSQLite" version)) (sha256 (base32 - "1sps1qn1x5r5l216rx0yfda7zk365b2xyzii3zv6f78nzdsgadbj")))) + "050s7gv42v43d15yqj2sdrh82iikfpm32idfnw4nbjjjnlcg7wxf")))) (properties `((upstream-name . "RSQLite"))) (build-system r-build-system) (propagated-inputs @@ -2900,7 +2901,7 @@ if (certs != \"\") { .opts = merge.list(.opts, list(cainfo=certs)) } `(("libcurl" ,curl))) (propagated-inputs `(("r-bitops" ,r-bitops))) - (home-page "http://www.omegahat.org/RCurl") + (home-page "http://www.omegahat.net/RCurl") (synopsis "General network client interface for R") (description "The package allows one to compose general HTTP requests and provides @@ -2931,7 +2932,7 @@ ldap, and also supports cookies, redirects, authentication, etc.") ("zlib" ,zlib))) (native-inputs `(("pkg-config" ,pkg-config))) - (home-page "http://www.omegahat.org/RSXML") + (home-page "http://www.omegahat.net/RSXML") (synopsis "Tools for parsing and generating XML within R") (description "Many approaches for both reading and creating XML (and HTML) @@ -3039,14 +3040,14 @@ statements.") (define-public r-segmented (package (name "r-segmented") - (version "1.3-2") + (version "1.3-3") (source (origin (method url-fetch) (uri (cran-uri "segmented" version)) (sha256 (base32 - "00fc5lcq5qqmw2c2cimrxw8jmd0jysx2p238c2ycykkb13jdwm5n")))) + "16036lp0dq7qqzy8wc4qsgv58zksz6hmgw51v88gl6xclryc670y")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/segmented") (synopsis "Regression models with breakpoints estimation") @@ -3080,13 +3081,13 @@ worker processes and collect and return the results on the master.") (define-public r-sparsem (package (name "r-sparsem") - (version "1.78") + (version "1.81") (source (origin (method url-fetch) (uri (cran-uri "SparseM" version)) (sha256 (base32 - "0cmlm0lps3daalvp5jzjnjfys388hgkyc8yw0g5r2351h749xdyn")))) + "0csbqd9wm6r4162mday1iaigzf9wv2rp1zq8hnihys6f38w8z0xx")))) (properties `((upstream-name . "SparseM"))) (native-inputs @@ -3278,13 +3279,13 @@ analysis of large sparse or dense matrices.") (define-public r-glmnet (package (name "r-glmnet") - (version "4.1") + (version "4.1-1") (source (origin (method url-fetch) (uri (cran-uri "glmnet" version)) (sha256 - (base32 "1js01qnznm20h4pslaw1ragxhrzk0w4nw7r6ryg7i27l344za2lg")))) + (base32 "0zpfq0m1y5zks5p9r28553ykywwrhrb3ds8m6b7sm6hj4n1c4csd")))) (build-system r-build-system) (native-inputs `(("gfortran" ,gfortran) @@ -3747,14 +3748,14 @@ selection.") (define-public r-tidyr (package (name "r-tidyr") - (version "1.1.2") + (version "1.1.3") (source (origin (method url-fetch) (uri (cran-uri "tidyr" version)) (sha256 (base32 - "0v7x1pgmwmjypzdr4j2ig2klgrrgryi3qvw8hwqv65a5h9kwpz08")))) + "0cpbrvr759z8p7r9lpkjhj2dcdymsbnaib0rma9b4jb7i3qzmh2a")))) (build-system r-build-system) (propagated-inputs `(("r-cpp11" ,r-cpp11) @@ -4035,13 +4036,13 @@ package instead.") (define-public r-hmisc (package (name "r-hmisc") - (version "4.4-2") + (version "4.5-0") (source (origin (method url-fetch) (uri (cran-uri "Hmisc" version)) (sha256 - (base32 "1j7vkckmahdh90ndcl646sjpxq82y4x55ngxqvkni22mv16wc2j9")))) + (base32 "11qj73zj16p113jpwn2vv06l99kqlcxcmrldbpyi5s7pwing9jnx")))) (properties `((upstream-name . "Hmisc"))) (build-system r-build-system) (native-inputs @@ -4354,13 +4355,13 @@ within a category based on their density using quasirandom noise.") (define-public r-beeswarm (package (name "r-beeswarm") - (version "0.2.3") + (version "0.3.1") (source (origin (method url-fetch) (uri (cran-uri "beeswarm" version)) (sha256 (base32 - "0hy89bwv7jixlg91li1fywa77916am2whqp1m1fx1khd45g44581")))) + "1jsggypyww77hkcic03kdb3fp8h938qs142xi0lapzh62bkn2pjj")))) (build-system r-build-system) (home-page "https://www.cbs.dtu.dk/~eklund/beeswarm/") (synopsis "Implementation of bee swarm plots") @@ -5089,14 +5090,14 @@ metrics for evaluating models.") (define-public r-matrixmodels (package (name "r-matrixmodels") - (version "0.4-1") + (version "0.5-0") (source (origin (method url-fetch) (uri (cran-uri "MatrixModels" version)) (sha256 (base32 - "0cyfvhci2p1vr2x52ymkyqqs63x1qchn856dh2j94yb93r08x1zy")))) + "1va6i6bpkq71rzl9i4xgyc5x7qcksa3nfzihlaggf6aj30dayzx8")))) (properties `((upstream-name . "MatrixModels"))) (build-system r-build-system) (propagated-inputs @@ -5111,13 +5112,13 @@ using modular prediction and response module classes.") (define-public r-quantreg (package (name "r-quantreg") - (version "5.83") + (version "5.85") (source (origin (method url-fetch) (uri (cran-uri "quantreg" version)) (sha256 - (base32 "05vbnz88qxk141dfxwl6ql2zshw15h0hddf8ajnsk2dxfdb6vdkp")))) + (base32 "1y8sgl16yby1k7g23y6bdnfllwnxj3iik3fqp96iwm5jd8blb7q4")))) (build-system r-build-system) (native-inputs `(("gfortran" ,gfortran))) @@ -5201,14 +5202,14 @@ C++ library for numerical linear algebra and RcppEigen glue.") (define-public r-pbkrtest (package (name "r-pbkrtest") - (version "0.5-0.1") + (version "0.5.1") (source (origin (method url-fetch) (uri (cran-uri "pbkrtest" version)) (sha256 (base32 - "0sgl8r74cknmp8lnq5jvc1w181274ylgk6w4pxf4mzkfii42argm")))) + "1if7msv9i7jhg1as1f7m81a95dnwhwj3yfs24bqr0f6r0ch4b8xj")))) (build-system r-build-system) (propagated-inputs `(("r-broom" ,r-broom) @@ -5508,14 +5509,14 @@ is supported.") (define-public r-lubridate (package (name "r-lubridate") - (version "1.7.9.2") + (version "1.7.10") (source (origin (method url-fetch) (uri (cran-uri "lubridate" version)) (sha256 (base32 - "0yfvlgksasmia7rsp83lsipjpgvlly5qkldcfxj68lfaz9l2sspf")))) + "1s653d6rnpf9bkynxmbq4fdjdcz7r9ma19aph8f5y9ck70his4hm")))) (build-system r-build-system) (propagated-inputs `(("r-generics" ,r-generics) @@ -5923,3 +5924,155 @@ popular stats packages like SAS, Stata and SPSS.") (home-page "https://github.com/WizardMac/ReadStat") (license license:expat))) +(define-public r-quantpsyc + (package + (name "r-quantpsyc") + (version "1.5") + (source + (origin + (method url-fetch) + (uri (cran-uri "QuantPsyc" version)) + (sha256 + (base32 + "1i9bh88r8zxndzjqsj14qw64gnvm5a9kvhjhzk3qsrvl3qzjgh93")))) + (properties `((upstream-name . "QuantPsyc"))) + (build-system r-build-system) + (propagated-inputs + `(("r-boot" ,r-boot) ("r-mass" ,r-mass))) + (home-page "https://cran.r-project.org/web/packages/QuantPsyc/") + (synopsis "Quantitative Psychology Tools") + (description + "Contains functions useful for data screening, testing moderation, +mediation and estimating power.") + (license license:gpl2+))) + +(define-public r-clubsandwich + (package + (name "r-clubsandwich") + (version "0.5.3") + (source + (origin + (method url-fetch) + (uri (cran-uri "clubSandwich" version)) + (sha256 + (base32 + "0jazgka18bb5n58d5sn94q7rc9sac82qrpl2i5b4rkx9q2pb39cn")))) + (properties `((upstream-name . "clubSandwich"))) + (build-system r-build-system) + (propagated-inputs + `(("r-sandwich" ,r-sandwich))) + (native-inputs `(("r-knitr" ,r-knitr))) + (home-page "https://github.com/jepusto/clubSandwich") + (synopsis "Cluster-Robust (Sandwich) Variance Estimators with Small-Sample +Corrections") + (description + "Provides several cluster-robust variance estimators (i.e., +sandwich estimators) for ordinary and weighted least squares linear regression +models, including the bias-reduced linearization estimator introduced by Bell +and McCaffrey (2002) +@url{http://www.statcan.gc.ca/pub/12-001-x/2002002/article/9058-eng.pdf} and +developed further by Pustejovsky and Tipton (2017) +@url{doi:10.1080/07350015.2016.1247004}. The package includes functions for estimating +the variance- covariance matrix and for testing single- and multiple- +contrast hypotheses based on Wald test statistics. Tests of single regression +coefficients use Satterthwaite or saddle-point corrections. Tests of multiple- +contrast hypotheses use an approximation to Hotelling's T-squared distribution. +Methods are provided for a variety of fitted models, including @code{lm()} and +@code{mlm} objects, @code{glm()}, ivreg (from package @code{AER}), @code{plm()} +(from package @code{plm}), @code{gls()} and @code{lme()} (from @code{nlme}), +@code{robu()} (from @code{robumeta}), and @code{rma.uni()} and @code{rma.mv()} +(from @code{metafor}).") + (license license:gpl3))) + +(define-public r-puniform + (package + (name "r-puniform") + (version "0.2.4") + (source + (origin + (method url-fetch) + (uri (cran-uri "puniform" version)) + (sha256 + (base32 + "0v2977y9cwjx74xk0ig745g09wn7nrcsrg4f6v315sglsm18iaa8")))) + (properties `((upstream-name . "puniform"))) + (build-system r-build-system) + (propagated-inputs + `(("r-adgoftest" ,r-adgoftest) + ("r-metafor" ,r-metafor) + ("r-rcpp" ,r-rcpp) + ("r-rcpparmadillo" ,r-rcpparmadillo))) + (home-page + "https://github.com/RobbievanAert/puniform") + (synopsis + "Meta-Analysis Methods Correcting for Publication Bias") + (description + "This package provides meta-analysis methods that correct for publication +bias and outcome reporting bias. Four methods and a visual tool are currently +included in the package. + +@enumerate +@item The p-uniform method as described in van Assen, van Aert, and Wicherts +(2015) @url{doi:10.1037/met0000025} can be used for estimating the average +effect size, testing the null hypothesis of no effect, and testing for +publication bias using only the statistically significant effect sizes of +primary studies. + +@item The p-uniform* method as described in van Aert and van Assen (2019) +@url{doi:10.31222/osf.io/zqjr9}. This method is an extension of the p-uniform +method that allows for estimation of the average effect size and the +between-study variance in a meta-analysis, and uses both the statistically +significant and nonsignificant effect sizes. + +@item The hybrid method as described in van Aert and van Assen (2017) +@url{doi:10.3758/s13428-017-0967-6}. The hybrid method is a meta-analysis +method for combining an original study and replication and while taking into +account statistical significance of the original study. The p-uniform and +hybrid method are based on the statistical theory that the distribution of +p-values is uniform conditional on the population effect size. + +@item +The fourth method in the package is the Snapshot Bayesian Hybrid Meta-Analysis +Method as described in van Aert and van Assen (2018) +@url{doi:10.1371/journal.pone.0175302}. This method computes posterior +probabilities for four true effect sizes (no, small, medium, and large) based +on an original study and replication while taking into account publication bias +in the original study. The method can also be used for computing the required +sample size of the replication akin to power analysis in null hypothesis +significance testing. +@end enumerate + +The meta-plot is a visual tool for meta-analysis that +provides information on the primary studies in the meta-analysis, the results +of the meta-analysis, and characteristics of the research on the effect under +study (van Assen and others, 2020). + +Helper functions to apply the Correcting for Outcome Reporting Bias (CORB) +method to correct for outcome reporting bias in a meta-analysis (van Aert & +Wicherts, 2020).") + (license license:gpl2+))) + +(define-public r-esc + (package + (name "r-esc") + (version "0.5.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "esc" version)) + (sha256 + (base32 + "0gns7gz55p6pha05413r3hlvd7f2v1amxkg13d197mab1ypqic7q")))) + (properties `((upstream-name . "esc"))) + (build-system r-build-system) + (home-page "https://strengejacke.github.io/esc/") + (synopsis + "Effect Size Computation for Meta Analysis") + (description + "Implementation of the web-based +@url{http://www.campbellcollaboration.org/escalc/html/EffectSizeCalculator-Home.php,'Practical +Meta-Analysis Effect Size Calculator'} from David B. Wilson in R. Based on the +input, the effect size can be returned as standardized mean difference, Cohen's +f, Hedges' g, Pearson's r or Fisher's transformation z, odds ratio or log odds, +or eta squared effect size.") + (license license:gpl3))) diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm index d7c9009f3b..2b64117dc6 100644 --- a/gnu/packages/sync.scm +++ b/gnu/packages/sync.scm @@ -30,6 +30,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system go) #:use-module (guix build-system meson) + #:use-module (guix build-system qt) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix packages) @@ -42,8 +43,11 @@ #:use-module (gnu packages crypto) #:use-module (gnu packages curl) #:use-module (gnu packages documentation) + #:use-module (gnu packages freedesktop) #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) #:use-module (gnu packages golang) + #:use-module (gnu packages graphviz) #:use-module (gnu packages image) #:use-module (gnu packages kde-frameworks) #:use-module (gnu packages linux) @@ -52,15 +56,165 @@ #:use-module (gnu packages pcre) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages readline) #:use-module (gnu packages rsync) + #:use-module (gnu packages ruby) #:use-module (gnu packages selinux) #:use-module (gnu packages shells) #:use-module (gnu packages sphinx) #:use-module (gnu packages sqlite) #:use-module (gnu packages tls)) +(define-public nextcloud-client + (package + (name "nextcloud-client") + (version "3.1.3") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/nextcloud/desktop") + (commit (string-append "v" version)))) + (file-name + (git-file-name name version)) + (sha256 + (base32 "15ymk3gvfmgwzmqbhlw7jjy9y65ib3391h1dlmpll65iaj2miajk")) + (modules '((guix build utils) + (ice-9 ftw) + (srfi srfi-1))) + (snippet + '(begin + ;; Not available in Guix. + (let* ((keep '("QProgressIndicator" "qtokenizer"))) + (with-directory-excursion "src/3rdparty" + (for-each delete-file-recursively + (lset-difference string=? + (scandir ".") + (cons* "." ".." keep))))) + (with-directory-excursion "src/gui" + (substitute* "CMakeLists.txt" + ;; Remove references of deleted 3rdparties. + (("[ \t]*\\.\\./3rdparty/qtlockedfile/?.*\\.cpp") + "") + (("[ \t]*\\.\\./3rdparty/qtsingleapplication/?.*\\.cpp") + "") + (("[ \t]*\\.\\./3rdparty/kmessagewidget/?.*\\.cpp") + "") + (("[ \t]*list\\(APPEND 3rdparty_SRC \\.\\./3rdparty/?.*\\)") + "") + (("\\$\\{CMAKE_SOURCE_DIR\\}/src/3rdparty/qtlockedfile") + "") + (("\\$\\{CMAKE_SOURCE_DIR\\}/src/3rdparty/qtsingleapplication") + "") + (("\\$\\{CMAKE_SOURCE_DIR\\}/src/3rdparty/kmessagewidget") + ;; For this, we rely on build inputs, so let's just replace + ;; them by an autoconf-style variable. + "@kwidgetsaddons@") + ;; Expand libraries, that used to be statically linked, but + ;; no longer are post-vendoring. + (("\\$\\{synclib_NAME\\}") + (string-append "${synclib_NAME} " + "QtSolutions_LockedFile " + "QtSolutions_SingleApplication " + "KF5WidgetsAddons"))) + ;; Fix compatibility with QtSingleApplication from QtSolutions. + (substitute* '("application.h" "application.cpp") + (("SharedTools::QtSingleApplication") + "QtSingleApplication") + (("slotParseMessage\\(const QString &(msg)?.*\\)") + "slotParseMessage(const QString &msg)"))) + #t)))) + (build-system qt-build-system) + (arguments + `(#:configure-flags + (list + "-DUNIT_TESTING=ON" + ;; Upstream Bug: https://github.com/nextcloud/desktop/issues/2885 + "-DNO_SHIBBOLETH=ON") + #:imported-modules + ((guix build glib-or-gtk-build-system) + ,@%qt-build-system-modules) + #:modules + (((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:) + (guix build qt-build-system) + (guix build utils)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-cmake + (lambda* (#:key inputs #:allow-other-keys) + ;; Patch install directory for dbus service files. + (substitute* "shell_integration/libcloudproviders/CMakeLists.txt" + (("PKGCONFIG_GETVAR\\(.+ _install_dir\\)") + (string-append "set(_install_dir \"${CMAKE_INSTALL_PREFIX}" + "/share/dbus-1/services\")"))) + (substitute* "shell_integration/dolphin/CMakeLists.txt" + ;; Make sure, that Qt modules are installed under $prefix. + (("ON CACHE") "OFF CACHE")) + (substitute* "src/gui/CMakeLists.txt" + (("@kwidgetsaddons@") + (string-append (assoc-ref inputs "kwidgetsaddons") + "/include/KF5/KWidgetsAddons/"))) + #t)) + (add-before 'check 'pre-check + (lambda _ + ;; Tests write to $HOME. + (setenv "HOME" (getcwd)) + #t)) + (add-after 'install 'glib-or-gtk-compile-schemas + (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas)) + (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap + (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))))) + (native-inputs + `(("cmocka" ,cmocka) + ("dot" ,graphviz) + ("doxygen" ,doxygen) + ("extra-cmake-modules" ,extra-cmake-modules) + ("glib:bin" ,glib "bin") + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python" ,python-wrapper) + ("qttools" ,qttools) + ("ruby" ,ruby))) + (inputs + `(("appstream" ,appstream) + ("desktop-file-utils" ,desktop-file-utils) + ("glib" ,glib) + ("kconfig" ,kconfig) + ("kcoreaddons" ,kcoreaddons) + ("kio" ,kio) + ("kjs" ,kjs) + ("kwidgetsaddons" ,kwidgetsaddons) + ("libcloudproviders" ,libcloudproviders) + ("libzip" ,libzip) + ("openssl" ,openssl) + ("python-nautilus" ,python-nautilus) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtgraphicaleffects" ,qtgraphicaleffects) + ("qtkeychain" ,qtkeychain) + ("qtquickcontrols2" ,qtquickcontrols2) + ("qtsolutions" ,qtsolutions) + ("qtsvg" ,qtsvg) + ("qtwebchannel" ,qtwebchannel) + ("qtwebsockets" ,qtwebsockets) + ("qtwebkit" ,qtwebkit) + ("sqlite" ,sqlite) + ("xdg-utils" ,xdg-utils) + ("zlib" ,zlib))) + (propagated-inputs + `(("qtwebengine" ,qtwebengine))) + (synopsis "Desktop sync client for Nextcloud") + (description "Nextcloud-Desktop is a tool to synchronize files from +Nextcloud Server with your computer.") + (home-page "https://nextcloud.com") + (license (list license:expat ; QProgressIndicator + license:lgpl2.1+ ; qtokenizer + license:gpl2+)))) + (define-public megacmd (package (name "megacmd") diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm index f34a59ac17..e4915b2496 100644 --- a/gnu/packages/syndication.scm +++ b/gnu/packages/syndication.scm @@ -24,10 +24,11 @@ #:use-module (guix git-download) #:use-module (guix packages) #:use-module (guix build-system cargo) - #:use-module (guix build-system qt) #: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 qt) #:use-module (gnu packages) #:use-module (gnu packages autotools) #:use-module (gnu packages base) @@ -50,7 +51,9 @@ #:use-module (gnu packages qt) #:use-module (gnu packages ruby) #:use-module (gnu packages sqlite) + #:use-module (gnu packages time) #:use-module (gnu packages tls) + #:use-module (gnu packages video) #:use-module (gnu packages web) #:use-module (gnu packages webkit) #:use-module (gnu packages xml) @@ -87,6 +90,7 @@ (guix build utils) ((guix build gnu-build-system) #:prefix gnu:)) #:vendor-dir "vendor" + #:install-source? #f #:cargo-inputs (("rust-backtrace" ,rust-backtrace-0.3) ("rust-bitflags" ,rust-bitflags-1) @@ -415,3 +419,65 @@ formats, including all versions of RSS and Atom.") (description "QuiteRSS is an RSS/Atom news feeds reader written on Qt/C++ that aims to be quite fast and comfortable to it's user.") (license license:gpl3+))) + +(define-public gfeeds + (package + (name "gfeeds") + (version "0.16.2") + (source (origin + (method url-fetch) + (uri + (string-append + "https://gitlab.gnome.org/World/gfeeds/-/archive/" version + "/gfeeds-" version ".tar.bz2")) + (sha256 + (base32 + "05gwwzqfz29m477imd5vh84jfla1wnklwpc2sdxnqli72wg08fli")))) + (build-system meson-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-mpv-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "gfeeds/confManager.py" + (("mpv") (string-append (assoc-ref inputs "mpv") "/bin/mpv"))) + #t)) + (add-after 'install 'wrap-gfeeds + (lambda* (#:key outputs #:allow-other-keys) + (wrap-program (string-append + (assoc-ref outputs "out") "/bin/gfeeds") + `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))) + `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH"))) + `("XDG_DATA_DIRS" ":" prefix (,(getenv "XDG_DATA_DIRS")))) + #t))))) + (native-inputs + `(("glib:bin" ,glib "bin") + ("gobject-introspection" ,gobject-introspection) + ("gtk+:bin" ,gtk+ "bin") + ("pkg-config" ,pkg-config))) + (inputs + `(("glib" ,glib) + ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) + ("gtk+" ,gtk+) + ("hicolor-icon-theme" ,hicolor-icon-theme) + ("libhandy" ,libhandy) + ("mpv" ,mpv) + ("python" ,python) + ("python-beautifulsoup4" ,python-beautifulsoup4) + ("python-dateutil" ,python-dateutil) + ("python-feedparser" ,python-feedparser) + ("python-html5lib" ,python-html5lib) + ("python-listparser" ,python-listparser) + ("python-lxml" ,python-lxml) + ("python-pillow" ,python-pillow) + ("python-pygments" ,python-pygments) + ("python-pytz" ,python-pytz) + ("python-readability" ,python-readability) + ("python-requests" ,python-requests) + ("webkitgtk" ,webkitgtk) + ("python-pygobject" ,python-pygobject))) + (home-page "https://gfeeds.gabmus.org/") + (synopsis "Easy-to-use GTK+ RSS/Atom feed reader") + (description "Feeds is an RSS/Atom feed reader made with GTK+ +and it has an easy-to-use graphical user interface.") + (license license:gpl3+))) diff --git a/gnu/packages/task-management.scm b/gnu/packages/task-management.scm index 49094ddaa1..fda0530616 100644 --- a/gnu/packages/task-management.scm +++ b/gnu/packages/task-management.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2021 Eric Bavier <bavier@posteo.net> ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at> +;;; Copyright © 2021 LibreMiami <packaging-guix@libremiami.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -32,13 +33,71 @@ #:use-module (gnu packages lua) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz) #:use-module (gnu packages tls) #:use-module (guix download) #:use-module (guix git-download) + #:use-module (guix hg-download) #:use-module (guix utils) #:use-module (guix build-system cmake) #:use-module (guix build-system go) - #:use-module (guix build-system meson)) + #:use-module (guix build-system meson) + #:use-module (guix build-system python)) + +(define-public clikan + (let ((commit "90fd60e485b46e49fcec7d029384fe1471c4443a") + (revision "0")) + (package + (name "clikan") + (version + (git-version "0.1.3" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kitplummer/clikan/") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "113kizm05v4cvyhdlg9zami54wk9qaiizq19mx36qvq9w7pg7a3k")))) + (build-system python-build-system) + (inputs + `(("click" ,python-click) + ("click-default-group" ,python-click-default-group) + ("pyyaml" ,python-pyyaml) + ("terminaltables" ,python-terminaltables))) + (synopsis "Command-line kanban (boarding) utility") + (description + "Clikan is a super simple command-line utility for tracking tasks +following the Japanese kanban (boarding) style.") + (home-page "https://github.com/kitplummer/clikan/") + (license license:expat)))) + +(define-public t-todo-manager + ;; Last release is more than 10 years old. Using latest commit. + (let ((changeset "89ad444c000b") + (revision "97")) + (package + (name "t-todo-manager") + (version (git-version "1.2.0" revision changeset)) + (source + (origin + (method hg-fetch) + (uri (hg-reference + (url "https://hg.stevelosh.com/t") + (changeset changeset))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 "0c8zn7l0xq65wp07h7mxnb5ww56d1443l2vkjvx5sj6wpcchfn0s")))) + (build-system python-build-system) + (native-inputs + `(("python-cram" ,python-cram))) + (synopsis "Command-line todo list manager") + (description + "@command{t} is a command-line todo list manager for people that want +to finish tasks, not organize them.") + (home-page "https://stevelosh.com/projects/t/") + (license license:expat)))) (define-public taskwarrior (package diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm index f17e138bdb..709b3dd603 100644 --- a/gnu/packages/tcl.scm +++ b/gnu/packages/tcl.scm @@ -95,6 +95,56 @@ (description "The Tcl (Tool Command Language) scripting language.") (license license:tcl/tk))) +(define-public itcl + (package + (name "itcl") + (version "4.2.0") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/incrtcl/%5Bincr%20Tcl_Tk%5D-4-source/itcl%20" + version "/itcl" version ".tar.gz")) + (file-name (string-append "incrtcl-" version ".tar.gz")) + (sha256 + (base32 "0w28v0zaraxcq1s9pa6cihqqwqvvwfgz275lks7w4gl7hxjxmasw")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list + (string-append + "--exec-prefix=" (assoc-ref %outputs "out")) + (string-append + "--with-tclinclude=" (assoc-ref %build-inputs "tcl") "/include") + (string-append + "--with-tcl=" (assoc-ref %build-inputs "tcl") "/lib")) + #:test-target "test" + #:phases + (modify-phases %standard-phases + (add-after 'install 'cleanup-bin-and-lib + (lambda* (#:key outputs #:allow-other-keys) + ;; NOTE: (Sharlatan-20210213T204336+0000): libraries appearer in + ;; "out/lib/itcl{{version}}" and there are no binaries, some extra + ;; rename and remove spells are to be applied. + (let ((out (assoc-ref outputs "out"))) + (rmdir + (string-append out "/bin")) + (rename-file + (string-append out "/lib/itcl" ,version) (string-append out "/libtmp")) + (rename-file + (string-append out "/libtmp") (string-append out "/lib"))) + #t))))) + (native-inputs + `(("tcl" ,tcl))) + (inputs + `(("tcllib" ,tcllib))) + (home-page "http://incrtcl.sourceforge.net/") + (synopsis "Object Oriented programming (OOP) extension for Tcl") + (description + "[incr Tcl] is a widely used object-oriented system for Tcl. The name is +a play on C++, and [incr Tcl] provides a similar object model, including +multiple inheritence and public and private classes and variables.") + (license license:public-domain))) (define-public expect (package diff --git a/gnu/packages/telegram.scm b/gnu/packages/telegram.scm index daff57a544..82d1dc463c 100644 --- a/gnu/packages/telegram.scm +++ b/gnu/packages/telegram.scm @@ -561,7 +561,7 @@ Telegram project, for its use in telegram desktop client.") `(("dconf" ,dconf))) (synopsis "Telegram Desktop") (description "Telegram desktop is the official desktop version of the -Telegram instant messager.") +Telegram instant messenger.") (home-page "https://desktop.telegram.org/") (license (list diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index 53cc127e48..5c8d247e68 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -19,6 +19,7 @@ ;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org> ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> +;;; Copyright © 2021 LibreMiami <packaging-guix@libremiami.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -525,26 +526,27 @@ address of one of the participants.") (sha256 (base32 "14v0rgy1a5alxmz7ly95y38bdj0hx79yysgkcd8r8p9qqfzlwpv1")) - (modules '((guix build utils))) + (modules '((guix build utils) + (ice-9 ftw) + (srfi srfi-1))) (snippet `(begin - ;; Remove bundled software. Keep arc4random, celt-0.7.0, - ;; celt-0.11.0, qqbonjour, rnnoise, smallft. - (for-each - delete-file-recursively - '("3rdparty/GL" ; in mesa - "3rdparty/mach-override-build" ; for macx - "3rdparty/mach-override-src" - "3rdparty/minhook-build" ; for win32 - "3rdparty/minhook-src" - "3rdparty/opus-build" ; in opus - "3rdparty/opus-src" - "3rdparty/speex-build" ; in speex - "3rdparty/speex-src" - "3rdparty/speexdsp-src" ; in speexdsp - "3rdparty/xinputcheck-build" ; for win32 - "3rdparty/xinputcheck-src")) - #t)))) + (let ((keep + '("arc4random-src" + "celt-0.7.0-build" + "celt-0.7.0-src" + "celt-0.11.0-build" + "celt-0.11.0-src" + "qqbonjour-src" + "rnnoise-build" + "rnnoise-src" + "smallft-src"))) + (with-directory-excursion "3rdparty" + (for-each delete-file-recursively + (lset-difference string=? + (scandir ".") + (cons* "." ".." keep)))) + #t))))) (build-system qt-build-system) (arguments `(#:tests? #f ; no "check" target diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm index 291a241473..3fe580589d 100644 --- a/gnu/packages/terminals.scm +++ b/gnu/packages/terminals.scm @@ -824,6 +824,43 @@ programmer to write text-based user interfaces.") usable with any list--including files, command history, processes and more.") (license license:expat))) +(define-public fzf + (package + (inherit go-github-com-junegunn-fzf) + (name "fzf") + (arguments + (ensure-keyword-arguments + (package-arguments go-github-com-junegunn-fzf) + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'copy-binaries + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (with-directory-excursion "src/github.com/junegunn/fzf" + (install-file "bin/fzf-tmux" + (string-append out "/bin")))))) + (add-after 'copy-binaries 'wrap-programs + (lambda* (#:key outputs inputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (ncurses (assoc-ref inputs "ncurses"))) + (wrap-program (string-append out "/bin/fzf-tmux") + `("PATH" ":" prefix (,(string-append ncurses "/bin"))))))) + (add-after 'install 'install-completions + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bash-completion (string-append out "/etc/bash_completion.d")) + (zsh-completion (string-append out "/share/zsh/site-functions"))) + (with-directory-excursion "src/github.com/junegunn/fzf" + (mkdir-p bash-completion) + (copy-file "shell/completion.bash" + (string-append bash-completion "/fzf")) + (mkdir-p zsh-completion) + (copy-file "shell/completion.zsh" + (string-append zsh-completion "/_fzf")))))))))) + (inputs + `(,@(package-inputs go-github-com-junegunn-fzf) + ("ncurses" ,ncurses))))) + (define-public go-github.com-howeyc-gopass (let ((commit "bf9dde6d0d2c004a008c27aaee91170c786f6db8") (revision "0")) @@ -1220,23 +1257,21 @@ made by suckless.") (base32 "1b9hy3ya72hhpl8nkayc7dy4f97xp75np48dm5na5pgyv8b45agi")))) (build-system cargo-build-system) (arguments - `(#:cargo-test-flags '("--release" "--" "--skip=config_read_eof") + `(#:install-source? #f ; virtual manifest + #:cargo-test-flags '("--release" "--" "--skip=config_read_eof") #:cargo-inputs (("rust-alacritty-config-derive" ,rust-alacritty-config-derive-0.1) ("rust-alacritty-terminal" ,rust-alacritty-terminal-0.12) - ("rust-bitflags" ,rust-bitflags-1) ("rust-clap" ,rust-clap-2) ("rust-cocoa" ,rust-cocoa-0.24) ("rust-copypasta" ,rust-copypasta-0.7) ("rust-crossfont" ,rust-crossfont-0.2) - ("rust-dirs" ,rust-dirs-2) ("rust-embed-resource" ,rust-embed-resource-1) ("rust-fnv" ,rust-fnv-1) ("rust-gl-generator" ,rust-gl-generator-0.14) ;; XXX: Adjust `add-absolute-library-references' phase when updating ;; glutin input. ("rust-glutin" ,rust-glutin-0.26) - ("rust-libc" ,rust-libc-0.2) ("rust-log" ,rust-log-0.4) ("rust-notify" ,rust-notify-4) ("rust-objc" ,rust-objc-0.2) @@ -1247,10 +1282,7 @@ made by suckless.") ("rust-serde-json" ,rust-serde-json-1) ("rust-serde-yaml" ,rust-serde-yaml-0.8) ("rust-time" ,rust-time-0.1) - ("rust-unicode-width" ,rust-unicode-width-0.1) ("rust-urlocator" ,rust-urlocator-0.1) - ("rust-wayland-client" ,rust-wayland-client-0.28) - ("rust-winapi" ,rust-winapi-0.3) ("rust-x11-dl" ,rust-x11-dl-2) ("rust-xdg" ,rust-xdg-2)) #:phases @@ -1268,13 +1300,7 @@ made by suckless.") (smithay-client-toolkit-src (string-append smithay-client-toolkit-name "-" smithay-client-toolkit-version ".tar.gz/src")) - (wayland-sys-name ,(package-name rust-wayland-sys-0.28)) - (wayland-sys-version ,(package-version rust-wayland-sys-0.28)) - (wayland-sys-src (string-append wayland-sys-name "-" - wayland-sys-version - ".tar.gz/src")) (libxkbcommon (assoc-ref inputs "libxkbcommon")) - (libwayland (assoc-ref inputs "wayland")) (mesa (assoc-ref inputs "mesa"))) ;; Fix dlopen()ing some libraries on pure Wayland (no $DISPLAY): ;; Failed to initialize any backend! Wayland status: NoWaylandLib @@ -1287,22 +1313,6 @@ made by suckless.") "/seat/keyboard/ffi.rs") (("libxkbcommon\\.so") (string-append libxkbcommon "/lib/libxkbcommon.so"))) - (substitute* (string-append vendor-dir "/" wayland-sys-src - "/server.rs") - (("libwayland-server\\.so") - (string-append libwayland "/lib/libwayland-server.so"))) - (substitute* (string-append vendor-dir "/" wayland-sys-src - "/cursor.rs") - (("libwayland-cursor\\.so") - (string-append libwayland "/lib/libwayland-cursor.so"))) - (substitute* (string-append vendor-dir "/" wayland-sys-src - "/egl.rs") - (("libwayland-egl\\.so") - (string-append libwayland "/lib/libwayland-egl.so"))) - (substitute* (string-append vendor-dir "/" wayland-sys-src - "/client.rs") - (("libwayland-client\\.so") - (string-append libwayland "/lib/libwayland-client.so"))) ;; Mesa is needed everywhere. (substitute* @@ -1366,8 +1376,14 @@ made by suckless.") ("libxkbcommon" ,libxkbcommon) ("libxrandr" ,libxrandr) ("libxxf86vm" ,libxxf86vm) - ("wayland" ,wayland) - ("mesa" ,mesa))) + ("mesa" ,mesa) + ("rust-bitflags" ,rust-bitflags-1) + ("rust-dirs" ,rust-dirs-2) + ("rust-libc" ,rust-libc-0.2) + ("rust-unicode-width" ,rust-unicode-width-0.1) + ("rust-wayland-client" ,rust-wayland-client-0.28) + ("rust-winapi" ,rust-winapi-0.3) + ("wayland" ,wayland))) (native-search-paths ;; FIXME: This should only be located in 'ncurses'. Nonetheless it is ;; provided for usability reasons. See <https://bugs.gnu.org/22138>. diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index 5155abe4d0..d90e41c533 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Roel Janssen <roel@gnu.org> -;;; Copyright © 2016, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> @@ -15,6 +15,7 @@ ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2020, 2021 Paul Garlick <pgarlick@tourbillion-technology.com> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2021 Leo Le Bouter <lle-bout@zaclys.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -350,14 +351,23 @@ files from LOCATIONS with expected checksum HASH. CODE is not currently in use. "--with-system-teckit" "--with-system-xpdf" "--with-system-zlib" - "--with-system-zziplib") - - ;; Disable tests on mips64/aarch64 to cope with a failure of luajiterr.test. - ;; XXX FIXME fix luajit properly on mips64 and aarch64. - #:tests? ,(let ((s (or (%current-target-system) - (%current-system)))) - (not (or (string-prefix? "aarch64" s) - (string-prefix? "mips64" s)))) + "--with-system-zziplib" + ;; LuaJIT is not ported to powerpc64le* yet. + ,@(if (string-prefix? "powerpc64le" (or (%current-target-system) + (%current-system))) + '("--disable-luajittex" + "--disable-mfluajit") + '())) + + ;; Disable tests on some architectures to cope with a failure of + ;; luajiterr.test. + ;; XXX FIXME fix luajit properly on these architectures. + #:tests? ,(let ((s (or (%current-target-system) + (%current-system)))) + (not (or (string-prefix? "aarch64" s) + (string-prefix? "mips64" s) + (string-prefix? "powerpc64le" s)))) + #:phases (modify-phases %standard-phases (add-after 'unpack 'configure-ghostscript-executable @@ -2639,6 +2649,10 @@ formats.") "eptex eptex" "ptex ptex" "pdfxmltex pdftex" "platex eptex" "csplain pdftex" "mf mf-nowin" "mex pdftex" "pdfmex pdftex" "luacsplain luatex" + ,@(if (string-prefix? "powerpc64le" + (or (%current-target-system) + (%current-system))) + '("luajittex") '()) "cont-en xetex" "cont-en pdftex" "pdfcsplain xetex" "pdfcsplain pdftex" "pdfcsplain luatex" "cslatex pdftex" "mptopdf pdftex" "uplatex euptex" "jadetex pdftex" diff --git a/gnu/packages/texinfo.scm b/gnu/packages/texinfo.scm index b53b56fbf2..f9c40b3450 100644 --- a/gnu/packages/texinfo.scm +++ b/gnu/packages/texinfo.scm @@ -153,8 +153,7 @@ is on expressing the content semantically, avoiding physical markup commands.") (define-public info-reader ;; The idea of this package is to have the standalone Info reader without ;; the dependency on Perl that 'makeinfo' drags. - (package - (inherit texinfo) + (package/inherit texinfo (name "info-reader") (arguments `(,@(substitute-keyword-arguments (package-arguments texinfo) diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm index b86df89af6..91e37b16d7 100644 --- a/gnu/packages/text-editors.scm +++ b/gnu/packages/text-editors.scm @@ -80,15 +80,15 @@ (define-public vis (package (name "vis") - (version "0.6") ; also update the vis-test input + (version "0.7") ; also update the vis-test input (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/martanne/vis") + (url "https://git.sr.ht/~martanne/vis") (commit (string-append "v" version)))) (sha256 - (base32 "1zjm89cn3rfq8fxpwp66khy53s6vqlmw6q103qyyvix8ydzxdmsh")) + (base32 "1g05ncsnk57kcqm9wsv6sz8b24kyzj8r5rfpa1wfwj8qkjzx3vji")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments @@ -136,10 +136,10 @@ ,(origin (method git-fetch) (uri (git-reference - (url "https://github.com/martanne/vis-test") - (commit "4c4f6645de77f697a45899e8645e0c2bbdc7208a"))) + (url "https://git.sr.ht/~martanne/vis-test") + (commit "bbd2f34ff788e87a51a74069069273ad83c44f1f"))) (sha256 - (base32 "10vh1pxsqw88a5xwh5irkm85xr66dbycmgpmabyw9h0vm14cvcz2")) + (base32 "1jsvg2lg3xqfgi79x08kx94mc34mh62ivca10vsci6fqsk68jbd0")) (file-name (git-file-name "vis-test" version)))))) (inputs `(("lua" ,lua) ("ncurses" ,ncurses) @@ -807,14 +807,14 @@ editors.") (define-public texmacs (package (name "texmacs") - (version "1.99.18") + (version "1.99.19") (source (origin (method url-fetch) (uri (string-append "https://www.texmacs.org/Download/ftp/tmftp/" "source/TeXmacs-" version "-src.tar.gz")) (sha256 - (base32 "0il3fwgw20421aj90wg8kyhkwk6lbgb3bb2g5qamh5lk90yj725i")))) + (base32 "1izwqb0z4gqiglv57mjswk6sjivny73kd2sxrf3nmj7wr12pn5m8")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -1048,7 +1048,7 @@ card. It offers: (substitute* "src/makefile" (("-lcurses") "-lncurses")) #t))))) - (home-page "http://ne.di.unimi.it/") + (home-page "https://ne.di.unimi.it/") (synopsis "Text editor with menu bar") (description "This package provides a modeless text editor with menu bar. It supports syntax highlighting, regular expressions, configurable menus, diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm index 34da04d0d8..c2eb7ca1da 100644 --- a/gnu/packages/textutils.scm +++ b/gnu/packages/textutils.scm @@ -60,6 +60,7 @@ #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-build) #:use-module (gnu packages python-xyz) #:use-module (gnu packages readline) #:use-module (gnu packages slang) @@ -1051,36 +1052,79 @@ OpenDocument presentations (*.odp).") (define-public opencc (package (name "opencc") - (version "1.0.5") + (version "1.1.1") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/BYVoid/OpenCC") - (commit (string-append "ver." version)))) + (url "https://github.com/BYVoid/OpenCC") + (commit (string-append "ver." version)))) (file-name (git-file-name name version)) (sha256 (base32 - "1pv5md225qwhbn8ql932zdg6gh1qlx3paiajaks8gfsa07yzvhr4")) + "07y0pvxjlmpcnym229j87qcfwnfm7vi10dad0a20xy6as55a9j3d")) (modules '((guix build utils))) (snippet '(begin ;; TODO: Unbundle tclap, darts-clone, gtest - (delete-file-recursively "deps/rapidjson-0.11") #t)))) + (delete-file-recursively "deps/rapidjson-1.1.0") #t)))) (build-system cmake-build-system) (arguments - '(#:phases + ;; Required to locate the install script properly. + `(#:out-of-source? #f + #:parallel-build? #f ;occasionally failed. + #:imported-modules + (,@%cmake-build-system-modules + (guix build python-build-system)) + #:modules ((guix build cmake-build-system) + ((guix build python-build-system) #:prefix python:) + (guix build utils)) + #:phases (modify-phases %standard-phases + (add-after 'unpack 'prevent-rebuild-during-installation + (lambda _ + (substitute* "python/setup.py" + (("'build_py': BuildPyCommand,") "")) + #t)) (add-after 'unpack 'patch-3rd-party-references (lambda* (#:key inputs #:allow-other-keys) (let ((rapidjson (assoc-ref inputs "rapidjson"))) (substitute* "src/CMakeLists.txt" - (("../deps/rapidjson-0.11") + (("../deps/rapidjson-1.1.0") (string-append rapidjson "/include/rapidjson"))) - #t)))))) + #t))) + (add-before 'configure 'patch-python-binding-installation + (lambda* (#:key outputs inputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "python/opencc/__init__.py" + (("(_libopenccfile =).*$" _ prefix) + (format #f "~a os.path.join('~a/lib', _libopenccfilename)~%" + prefix out)) + (("(_opencc_share_dir =).*$" _ prefix) + (format #f "~a '~a/share/opencc'~%" prefix out)))) + #t)) + (add-after 'install 'install-python-binding + (lambda* (#:key outputs inputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (dist (string-append + out "/lib/python" + ,(version-major+minor (package-version python)) + "/site-packages"))) + (chdir "python") + (mkdir-p dist) + (setenv "PYTHONPATH" + (string-append dist ":" (getenv "PYTHONPATH"))) + (invoke "python" "setup.py" "install" + "--root=/" "--single-version-externally-managed" + (string-append "--prefix=" out)) + #t))) + (add-before 'install-python-binding 'enable-bytecode-determinism + (assoc-ref python:%standard-phases 'enable-bytecode-determinism))))) (native-inputs `(("python" ,python-wrapper) - ("rapidjson" ,rapidjson))) + ("rapidjson" ,rapidjson) + ("python-setuptools" ,python-setuptools) + ("python-wheel" ,python-wheel))) (home-page "https://github.com/BYVoid/OpenCC") (synopsis "Convert between Traditional Chinese and Simplified Chinese") (description "Open Chinese Convert (OpenCC) converts between Traditional diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm index 73e7f04834..be37ea980e 100644 --- a/gnu/packages/time.scm +++ b/gnu/packages/time.scm @@ -18,6 +18,7 @@ ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org> ;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org> +;;; Copyright © 2021 Ryan Prior <rprior@protonmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -35,18 +36,22 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages time) - #:use-module (guix licenses) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix git-download) - #:use-module (guix build-system gnu) - #:use-module (guix build-system python) - #:use-module (gnu packages) #:use-module (gnu packages check) #:use-module (gnu packages compression) + #:use-module (gnu packages golang) #:use-module (gnu packages perl) #:use-module (gnu packages python) - #:use-module (gnu packages python-xyz)) + #:use-module (gnu packages python-xyz) + #:use-module (gnu packages terminals) + #:use-module (gnu packages textutils) + #:use-module (gnu packages) + #:use-module (guix build-system gnu) + #:use-module (guix build-system go) + #:use-module (guix build-system python) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix licenses) + #:use-module (guix packages)) (define-public time (package @@ -443,9 +448,6 @@ converting dates, times, and timestamps. It implements and updates the datetime type.") (license asl2.0))) -(define-public python2-arrow - (package-with-python2 python-arrow)) - (define-public python-aniso8601 (package (name "python-aniso8601") @@ -510,3 +512,30 @@ datetime type.") modifies the @code{time}, @code{gettimeofday} and @code{clock_gettime} system calls.") (license gpl2))) + +(define-public countdown + (package + (name "countdown") + (version "1.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/antonmedv/countdown") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0pdaw1krr0bsl4amhwx03v2b02iznvwvqn7af5zp4fkzjaj14cdw")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/antonmedv/countdown")) + (native-inputs + `(("runewidth" ,go-github.com-mattn-go-runewidth) + ("termbox" ,go-github.com-nsf-termbox-go))) + (home-page "https://github.com/antonmedv/countdown") + (synopsis "Counts to zero with a text user interface") + (description + "Countdown provides a fancy text display while it counts down to zero +from a starting point you provide. The user can pause and resume the +countdown from the text user interface.") + (license expat))) diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index fad62d9614..39ed7d74af 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2014, 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2021 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net> ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015 David Thompson <davet@gnu.org> @@ -167,6 +167,7 @@ living in the same process.") (package (name "gnutls") (version "3.6.15") + (replacement gnutls/fixed) (source (origin (method url-fetch) ;; Note: Releases are no longer on ftp.gnu.org since the @@ -282,6 +283,15 @@ required structures.") (properties '((ftp-server . "ftp.gnutls.org") (ftp-directory . "/gcrypt/gnutls"))))) +(define gnutls/fixed + (package + (inherit gnutls) + (source (origin + (inherit (package-source gnutls)) + (patches (append (search-patches "gnutls-CVE-2021-20231.patch" + "gnutls-CVE-2021-20232.patch") + (origin-patches (package-source gnutls)))))))) + (define-public gnutls/guile-2.0 ;; GnuTLS for Guile 2.0. (package/inherit gnutls @@ -300,8 +310,7 @@ required structures.") ,@(package-inputs gnutls))))) (define-public guile2.2-gnutls - (package - (inherit gnutls) + (package/inherit gnutls (name "guile2.2-gnutls") (inputs `(("guile" ,guile-2.2) ,@(alist-delete "guile" @@ -313,6 +322,7 @@ required structures.") (define-public openssl (package (name "openssl") + (replacement openssl/fixed) (version "1.1.1i") (source (origin (method url-fetch) @@ -387,7 +397,8 @@ required structures.") ;; PREFIX/ssl. Change that to something more ;; conventional. (string-append "--openssldir=" out - "/share/openssl-" ,version) + "/share/openssl-" + ,(package-version this-package)) (string-append "--prefix=" out) (string-append "-Wl,-rpath," lib) @@ -427,7 +438,8 @@ required structures.") ;; scripts. Remove them to avoid retaining a reference on Perl. (let ((out (assoc-ref outputs "out"))) (delete-file-recursively (string-append out "/share/openssl-" - ,version "/misc")) + ,(package-version this-package) + "/misc")) #t)))))) (native-search-paths (list (search-path-specification @@ -445,6 +457,24 @@ required structures.") (license license:openssl) (home-page "https://www.openssl.org/"))) +(define-public openssl/fixed + (package + (inherit openssl) + (version "1.1.1j") + (source (origin + (method url-fetch) + (uri (list (string-append "https://www.openssl.org/source/openssl-" + version ".tar.gz") + (string-append "ftp://ftp.openssl.org/source/" + "openssl-" version ".tar.gz") + (string-append "ftp://ftp.openssl.org/source/old/" + (string-trim-right version char-set:letter) + "/openssl-" version ".tar.gz"))) + (patches (search-patches "openssl-1.1-c-rehash-in.patch")) + (sha256 + (base32 + "1gw17520vh13izy1xf5q0a2fqgcayymjjj5bk0dlkxndfnszrwma")))))) + (define-public openssl-1.0 (package (inherit openssl) @@ -583,13 +613,13 @@ netcat implementation that supports TLS.") (package (name "python-acme") ;; Remember to update the hash of certbot when updating python-acme. - (version "1.12.0") + (version "1.13.0") (source (origin (method url-fetch) (uri (pypi-uri "acme" version)) (sha256 (base32 - "1wn2jvkg18z31nd060hfcp2yqvxjxykim2ybgaidv7qfsms38dma")))) + "1260a7bcgmha19drqzn6syz3cy61482b3w6lihgg1md6svgmfhkb")))) (build-system python-build-system) (arguments `(#:phases @@ -606,8 +636,7 @@ netcat implementation that supports TLS.") (install-file "docs/_build/man/acme-python.1" man) #t)))))) (native-inputs - `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest) + `(("python-pytest" ,python-pytest) ;; For documentation ("python-sphinx" ,python-sphinx) ("python-sphinxcontrib-programoutput" ,python-sphinxcontrib-programoutput) @@ -615,7 +644,6 @@ netcat implementation that supports TLS.") ("texinfo" ,texinfo))) (propagated-inputs `(("python-josepy" ,python-josepy) - ("python-six" ,python-six) ("python-requests" ,python-requests) ("python-requests-toolbelt" ,python-requests-toolbelt) ("python-pytz" ,python-pytz) @@ -639,20 +667,12 @@ netcat implementation that supports TLS.") (uri (pypi-uri "certbot" version)) (sha256 (base32 - "0nfzk6fzyfqy8lgs5lmxfndrdh5c2ljdvzj39rwvgg3r6ivkirsy")))) + "0n7lwajmlypkqgsd2cv74j41f5ag381skjlzhjfpsrppgnsl3kv4")))) (build-system python-build-system) (arguments `(,@(substitute-keyword-arguments (package-arguments python-acme) ((#:phases phases) `(modify-phases ,phases - (replace 'build-documentation - (lambda _ - ;; Fix building the manual page in 1.12.0: - ;; https://github.com/certbot/certbot/issues/8633 - ;; TODO Remove the substitution in later releases. - (substitute* "docs/conf.py" - (("'man',") "")) - (invoke "make" "-C" "docs" "man" "info"))) (replace 'install-documentation (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -683,7 +703,6 @@ netcat implementation that supports TLS.") ("python-distro" ,python-distro) ("python-zope-component" ,python-zope-component) ("python-parsedatetime" ,python-parsedatetime) - ("python-six" ,python-six) ("python-psutil" ,python-psutil) ("python-requests" ,python-requests) ("python-pytz" ,python-pytz))) @@ -1056,3 +1075,30 @@ relatively simple Bash script.") derived from Mozilla's collection.") (home-page "https://certifi.io") (license license:mpl2.0)))) + +(define-public s2n + (package + (name "s2n") + (version "1.0.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url (string-append "https://github.com/awslabs/" name)) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1q6kmgwb8jxmc4ijzk9pkqzz8lsbfsv9hyzqvy944w7306zx1r5h")))) + (build-system cmake-build-system) + (arguments + '(#:tests? #f ; tests fail to build for static library + #:configure-flags + '("-DBUILD_TESTING=OFF" + "-DBUILD_SHARED_LIBS=ON"))) + (propagated-inputs + `(("openssl" ,openssl) + ("openssl:static" ,openssl "static"))) + (synopsis "SSL/TLS implementation") + (description "This library provides a C99 implementation of SSL/TLS.") + (home-page "https://github.com/awslabs/s2n") + (license license:asl2.0))) diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm index 2284483ca3..d85c11aec0 100644 --- a/gnu/packages/tor.scm +++ b/gnu/packages/tor.scm @@ -1,10 +1,10 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2016, 2017, 2018, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017, 2018, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2017, 2018, 2019 Eric Bavier <bavier@member.fsf.org> +;;; Copyright © 2017, 2018, 2019, 2021 Eric Bavier <bavier@posteo.net> ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> @@ -54,14 +54,14 @@ (define-public tor (package (name "tor") - (version "0.4.5.6") + (version "0.4.5.7") (source (origin (method url-fetch) (uri (string-append "https://dist.torproject.org/tor-" version ".tar.gz")) (sha256 (base32 - "0cz78pjw2bc3kl3ziip1nhhbq89crv315rf1my3zmmgd9xws7jr2")))) + "0x7hhl0svfc4yh9xvq7kkzgmwjcw1ak9i0794wjg4biy2fmclzs4")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -221,10 +221,10 @@ tastes. It has application for both stand-alone systems and multi-user networks.") (license license:gpl2+))) -(define-public onionshare +(define-public onionshare-cli (package - (name "onionshare") - (version "2.2") + (name "onionshare-cli") + (version "2.3.1") (source (origin (method git-fetch) @@ -233,53 +233,141 @@ networks.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0m8ygxcyp3nfzzhxs2dfnpqwh1vx0aws44lszpnnczz4fks3a5j4")))) + (base32 "1llvnvb676s2cs6a4y7isxdj75ddfvskw1p93v5m35vsw7f72kqz")))) (build-system python-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-install-path - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (onionshare (string-append out "/share/onionshare"))) - (substitute* '("setup.py" "onionshare/common.py") - (("sys.prefix,") (string-append "'" out "',"))) - (substitute* "setup.py" - ;; For the nautilus plugin. - (("/usr/share/nautilus") "share/nautilus")) - (substitute* "install/org.onionshare.OnionShare.desktop" - (("/usr") out)) - #t))) - (delete 'check) - (add-before 'strip 'check - ;; After all the patching we run the tests after installing. - (lambda _ - (setenv "HOME" "/tmp") ; Some tests need a writable homedir - (invoke "pytest" "tests/") - #t))))) (native-inputs `(("python-pytest" ,python-pytest))) (inputs - `(("python-pycryptodome" ,python-pycryptodome) + ;; TODO: obfs4proxy + `(("python-click" ,python-click) + ("python-eventlet" ,python-eventlet) ("python-flask" ,python-flask) ("python-flask-httpauth" ,python-flask-httpauth) - ("python-nautilus" ,python-nautilus) - ("python-sip" ,python-sip) - ("python-stem" ,python-stem) + ("python-flask-socketio" ,python-flask-socketio) + ("python-psutil" ,python-psutil) + ("python-pycryptodome" ,python-pycryptodome) ("python-pysocks" ,python-pysocks) - ("python-pyqt" ,python-pyqt))) + ("python-requests" ,python-requests) + ("python-stem" ,python-stem) + ("python-unidecode" ,python-unidecode) + ("python-urllib3" ,python-urllib3) + ("tor" ,tor))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'bake-tor + (lambda* (#:key inputs #:allow-other-keys) + (substitute* (list "cli/onionshare_cli/common.py" + "desktop/src/onionshare/gui_common.py") + (("shutil\\.which\\(\\\"tor\\\"\\)") + (string-append "\"" (which "tor") "\""))) + #t)) + (add-before 'build 'change-directory + (lambda _ (chdir "cli") #t)) + (replace 'check + (lambda _ + (setenv "HOME" "/tmp") + ;; Greendns is not needed for testing, and if eventlet tries to + ;; load it, an OSError is thrown when getprotobyname is called. + ;; Thankfully there is an environment variable to disable the + ;; greendns import, so use it: + (setenv "EVENTLET_NO_GREENDNS" "yes") + (invoke "pytest" "-v" "./tests")))))) (home-page "https://onionshare.org/") (synopsis "Securely and anonymously share files") - (description "OnionShare is a tool for securely and anonymously sending -and receiving files using Tor onion services. It works by starting a web -server directly on your computer and making it accessible as an unguessable -Tor web address that others can load in a Tor-enabled web browser to download -files from you, or upload files to you. It doesn't require setting up a -separate server, using a third party file-sharing service, or even logging -into an account.") - ;; Bundled, minified jquery is expat licensed. + (description "OnionShare lets you securely and anonymously share files, +host websites, and chat with friends using the Tor network. + +This package contains @code{onionshare-cli}, a command-line interface to +OnionShare.") + ;; Bundled, minified jquery and socket.io are expat licensed. (license (list license:gpl3+ license:expat)))) +(define-public onionshare + (package (inherit onionshare-cli) + (name "onionshare") + (arguments + (substitute-keyword-arguments (package-arguments onionshare-cli) + ((#:phases phases) + `(modify-phases ,phases + (replace 'change-directory + (lambda _ (chdir "desktop/src") #t)) + (add-after 'unpack 'patch-tests + (lambda _ + ;; Disable tests that require starting servers, which will hang + ;; during build: + ;; - test_autostart_and_autostop_timer_mismatch + ;; - test_autostart_timer + ;; - test_autostart_timer_too_short + ;; - test_autostop_timer_too_short + (substitute* "desktop/tests/test_gui_share.py" + (("( *)def test_autost(art|op)_(timer(_too_short)?|and_[^(]*)\\(" & >) + (string-append > "@pytest.mark.skip\n" &))) + ;; - test_13_quit_with_server_started_should_warn + (substitute* "desktop/tests/test_gui_tabs.py" + (("( *)def test_13" & >) + (string-append > "@pytest.mark.skip\n" &))) + ;; Remove multiline load-path adjustment, so that onionshare-cli + ;; modules are loaded from input + (use-modules (ice-9 regex) + (ice-9 rdelim)) + (with-atomic-file-replacement "desktop/tests/conftest.py" + (let ((start-rx (make-regexp "^# Allow importing"))) + (lambda (in out) + (let loop () + (let ((line (read-line in 'concat))) + (if (regexp-exec start-rx line) + (begin ; slurp until closing paren + (let slurp () + (let ((line (read-line in 'concat))) + (if (string=? line ")\n") + (dump-port in out) ; done + (slurp))))) + (begin + (display line out) + (loop)))))))))) + (replace 'check + (lambda _ + ;; Some tests need a writable homedir: + (setenv "HOME" "/tmp") + ;; Ensure installed modules can be found: + (setenv "PYTHONPATH" + (string-append %output "/lib/python" + ,(version-major+minor (package-version python)) + "/site-packages:" + (getenv "PYTHONPATH"))) + ;; Avoid `getprotobyname` issues: + (setenv "EVENTLET_NO_GREENDNS" "yes") + ;; Make Qt render "offscreen": + (setenv "QT_QPA_PLATFORM" "offscreen") + ;; Must be run from "desktop" dir: + (chdir "..") + (invoke "./tests/run.sh"))) + (add-after 'install 'install-data + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (share (string-append out "/share"))) + (install-file "org.onionshare.OnionShare.svg" + (string-append share "/icons/hicolor/scalable/apps")) + (install-file "org.onionshare.OnionShare.desktop" + (string-append share "/applications")) + #t))))))) + (native-inputs + `(("python-pytest" ,python-pytest))) + (inputs + ;; TODO: obfs4proxy + `(("onionshare-cli" ,onionshare-cli) + ("python-shiboken-2" ,python-shiboken-2) + ("python-pyside-2" ,python-pyside-2) + ("python-qrcode" ,python-qrcode) + ;; The desktop client uses onionshare-cli like a python module. But + ;; propagating onionshare-cli's inputs is not great, since a user would + ;; not expect to have those installed when using onionshare-cli as a + ;; standalone utility. So add onionshare-cli's inputs here. + ,@(package-inputs onionshare-cli))) + (description "OnionShare lets you securely and anonymously share files, +host websites, and chat with friends using the Tor network."))) + (define-public nyx (package (name "nyx") diff --git a/gnu/packages/toys.scm b/gnu/packages/toys.scm index 6387e84a3d..f88ea68436 100644 --- a/gnu/packages/toys.scm +++ b/gnu/packages/toys.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com> ;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si> ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2021 Leo Famulari <leo@famulari.name> ;;; ;;; This file is part of GNU Guix. ;;; @@ -236,3 +237,41 @@ and various scenery elements.") "This is an animated, color, ANSI-text telnet server that renders a loop of the Nyan Cat / Poptart Cat animation.") (license license:ncsa))) + +(define-public cbonsai + (package + (name "cbonsai") + (version "1.0.4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/jallbrit/cbonsai.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0a5lqc0il0dq26j4wxg1z2siqanra2905x9akwi86zriq65ayb77")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; No test suite + #:make-flags + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (delete 'configure) ; No ./configure script + (add-after 'install 'install-doc + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (string-append out "/share/doc/" ,name "-" + ,(package-version this-package)))) + (install-file "README.md" doc))))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("ncurses" ,ncurses))) + (home-page "https://gitlab.com/jallbrit/cbonsai") + (synopsis "Grow bonsai trees in a terminal") + (description "Cbonsai is a bonsai tree generator using ASCII art. It +creates, colors, and positions a bonsai tree, and is configurable.") + (license license:gpl3+))) diff --git a/gnu/packages/upnp.scm b/gnu/packages/upnp.scm index 8f4e9952f2..33f3fb21c0 100644 --- a/gnu/packages/upnp.scm +++ b/gnu/packages/upnp.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in> ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> -;;; Copyright © 2016, 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2016, 2017, 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Theodoros Foradis <theodoros@foradis.org> ;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk> ;;; Copyright © 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl> @@ -96,15 +96,14 @@ over IRC, instant messaging, network games, and most server software.") (define-public libupnp (package (name "libupnp") - (version "1.14.0") + (version "1.14.2") (source (origin (method url-fetch) (uri (string-append "https://github.com/pupnp/pupnp/releases/download" "/release-" version "/libupnp-" version".tar.bz2")) (sha256 - (base32 - "1sswsdqzarrd6h9mld2lncbcrfhd4p16zcafvmxqm34nj513vcpc")))) + (base32 "0w62sn95fnp12qwz5nid6ksg2h9k0k6rinz00p8m3jd4j5dh9qzz")))) (native-inputs `(("pkg-config" ,pkg-config))) (build-system gnu-build-system) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 9a1b794a7e..4d4b276a10 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2016, 2019 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2015, 2018, 2020 Kyle Meyer <kyle@kyleam.com> +;;; Copyright © 2015, 2018, 2020, 2021 Kyle Meyer <kyle@kyleam.com> ;;; Copyright © 2015, 2017, 2018, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016, 2017, 2018 Nikita <nikita@n0.is> @@ -36,6 +36,8 @@ ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2021 Léo Le Bouter <lle-bout@zaclys.net> +;;; Copyright © 2021 LibreMiami <packaging-guix@libremiami.org> +;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;;; ;;; This file is part of GNU Guix. ;;; @@ -170,14 +172,14 @@ as well as the classic centralized workflow.") (define-public git (package (name "git") - (version "2.30.1") + (version "2.31.0") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/software/scm/git/git-" version ".tar.xz")) (sha256 (base32 - "0rwlbps9x8kgk2hsm0bvsrkpsk9bnbnz8alknbd7i688jnhai27r")))) + "0h4sg3xqa9pd2agrd7m18sqg319ls978d39qswyf30rjvg5n5wg8")))) (build-system gnu-build-system) (native-inputs `(("native-perl" ,perl) @@ -194,7 +196,7 @@ as well as the classic centralized workflow.") version ".tar.xz")) (sha256 (base32 - "015rqnz3ly1h6z6k9hfikgh401s3mzkmys8srai1kfv4v75pxz1h")))) + "1v40wwj130k76xf2w6vwhvfpkk765q1gcy5bqcrqssxf66ydqp8q")))) ;; For subtree documentation. ("asciidoc" ,asciidoc-py3) ("docbook-xsl" ,docbook-xsl) @@ -599,6 +601,31 @@ everything from small to very large projects with speed and efficiency.") ("perl" ,perl) ("zlib" ,zlib))))) +(define-public git2cl + (let ((commit "1d74d4c0d933fc69ed5cec838c73502584dead05")) + (package + (name "git2cl") + (version (string-append "20120919." (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.nongnu.org/git/git2cl.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0wnnbm2sjvfj0qrksj89jlnl69miwl0vk3wrrvgvpclgys3na2g1")))) + (build-system copy-build-system) + (inputs + `(("perl" ,perl))) + (arguments + `(#:install-plan '(("git2cl" "bin/git2cl")))) + (home-page "https://savannah.nongnu.org/projects/git2cl") + (synopsis "Convert Git logs to GNU ChangeLog format") + (description "@code{git2cl} is a command line tool for converting Git +logs to GNU ChangeLog format.") + (license license:gpl2+)))) + (define-public gitless (package (name "gitless") @@ -2196,7 +2223,7 @@ from Subversion to any supported Distributed Version Control System (DVCS).") (define-public tig (package (name "tig") - (version "2.5.1") + (version "2.5.3") (source (origin (method url-fetch) (uri (string-append @@ -2204,7 +2231,7 @@ from Subversion to any supported Distributed Version Control System (DVCS).") version "/tig-" version ".tar.gz")) (sha256 (base32 - "0r4y9hyvpkplaxrzslws3asz652d83qh3bjwvmp8assga8s5s3ah")))) + "1p1575yh4daxjifywxkd0hgyfwciylqcm2qakawvwn6mk620ca75")))) (build-system gnu-build-system) (native-inputs `(("asciidoc" ,asciidoc) @@ -2347,7 +2374,15 @@ based on a manifest file published by servers.") (method url-fetch) (uri (pypi-uri "b4" version)) (sha256 - (base32 "1j904dy9cwxl85k2ngc498q5cdnqwsmw3jibjr1m55w8aqdck68z")))) + (base32 "1j904dy9cwxl85k2ngc498q5cdnqwsmw3jibjr1m55w8aqdck68z")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Fixes issue with dependency requirements being too strict. See upstream commit: + ;; https://git.kernel.org/pub/scm/utils/b4/b4.git/commit/?id=31348a14afdb1d39e7faf9576eaddea1ced76e19 + (substitute* "setup.py" + (("~=") ">=")) + #t)))) (build-system python-build-system) (arguments '(#:tests? #f)) ; No tests. (inputs diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 48c5f726d2..6a2de91227 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2014, 2015, 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2014, 2015, 2016, 2018, 2020 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> -;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015 Andy Patterson <ajpatter@uwaterloo.ca> ;;; Copyright © 2015, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com> @@ -707,7 +707,7 @@ old-fashioned output methods with powerful ascii-art renderer.") (define-public celluloid (package (name "celluloid") - (version "0.20") + (version "0.21") (source (origin (method url-fetch) @@ -715,7 +715,7 @@ old-fashioned output methods with powerful ascii-art renderer.") "/releases/download/v" version "/celluloid-" version ".tar.xz")) (sha256 - (base32 "0kjjv2pcdvwcn4yi8kbpsca7pnx6cx6xdznv7ppqm0fssx68qyb3")))) + (base32 "1dvyf21iv9hrgv99szc24386vkacmhidm5b4d31hqqjs3b6di692")))) (build-system glib-or-gtk-build-system) (native-inputs `(("intltool" ,intltool) @@ -772,7 +772,7 @@ television and DVD. It is also known as AC-3.") (define-public libaom (package (name "libaom") - (version "2.0.1") + (version "2.0.2") (source (origin (method git-fetch) (uri (git-reference @@ -781,7 +781,7 @@ television and DVD. It is also known as AC-3.") (file-name (git-file-name name version)) (sha256 (base32 - "1vakwmcwvmmrdw7460m8hzq96y71lxqix8b2g07c6s12br0rrdhl")))) + "0f3i983s9yvh9zc6mpy1ck5sjcg9l09lpw9v4md3mv8gbih9f0z0")))) (build-system cmake-build-system) (native-inputs `(("perl" ,perl) @@ -1014,7 +1014,7 @@ H.264 (MPEG-4 AVC) video streams.") (define-public straw-viewer (package (name "straw-viewer") - (version "0.1.2") + (version "0.1.3") (source (origin (method git-fetch) @@ -1023,7 +1023,7 @@ H.264 (MPEG-4 AVC) video streams.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1s6w8m9377ajy21x7lf6mbgp5yk5i70nhzmqscibjnarr3xfg9zs")))) + (base32 "1n21byn7hqykpm94jmmnir1fwsskq6dp9wgj0bd2qf0qx5nq33cl")))) (build-system perl-build-system) (native-inputs `(("perl-module-build" ,perl-module-build) @@ -1234,7 +1234,9 @@ ASS/SSA (Advanced Substation Alpha/SubStation Alpha) subtitle format.") version ".tar.gz")) (sha256 (base32 - "1x3j6yfyxl52adgnabycr0n38j9hx2j74la0hz0n8cnh9ry4d2qj")))) + "1x3j6yfyxl52adgnabycr0n38j9hx2j74la0hz0n8cnh9ry4d2qj")) + (patches (search-patches "libcaca-CVE-2021-3410-pt1.patch" + "libcaca-CVE-2021-3410-pt2.patch")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--disable-static"))) @@ -1610,27 +1612,6 @@ convert and stream audio and video. It includes the libavcodec audio/video codec library.") (license license:gpl2+))) -;; ungoogled-chromium crashes with ffmpeg 4.3, so stick with this version for -;; now. See <https://issues.guix.gnu.org/41987>. -(define-public ffmpeg-4.2 - (package - (inherit ffmpeg) - (version "4.2.3") - (source (origin - (method url-fetch) - (uri (string-append "https://ffmpeg.org/releases/ffmpeg-" - version ".tar.xz")) - (sha256 - (base32 - "0cddkb5sma9dzy8i59sfls19rhjlq40zn9mh3x666dqkxl5ckxlx")))) - (arguments - (substitute-keyword-arguments (package-arguments ffmpeg) - ((#:configure-flags flags) - `(delete "--enable-librav1e" ,flags)))) - (inputs (fold alist-delete - (package-inputs ffmpeg) - '("rav1e"))))) - (define-public ffmpeg-3.4 (package (inherit ffmpeg) @@ -1790,6 +1771,7 @@ videoformats depend on the configuration flags of ffmpeg.") (inputs `(("alsa-lib" ,alsa-lib) ("avahi" ,avahi) + ("dav1d" ,dav1d) ("dbus" ,dbus) ("eudev" ,eudev) ("flac" ,flac) @@ -2197,14 +2179,14 @@ To load this plugin, specify the following option when starting mpv: (define-public youtube-dl (package (name "youtube-dl") - (version "2021.03.03") + (version "2021.03.14") (source (origin (method url-fetch) (uri (string-append "https://youtube-dl.org/downloads/latest/" "youtube-dl-" version ".tar.gz")) (sha256 (base32 - "11z2v8mdii0bl13850mc6hgz80d0kgzb4hdxyikc3wa4jqfwrq7f")) + "1bh74f9q6dv17ah5x8zcxw03dq6jbh959xd39kw374cf9ifrgnd3")) (snippet '(begin ;; Delete the pre-generated files, except for the man page @@ -2664,7 +2646,7 @@ device without having to bother about the decryption.") (define-public srt2vtt (package (name "srt2vtt") - (version "0.1") + (version "0.2") (source (origin (method url-fetch) (uri (string-append @@ -2672,10 +2654,29 @@ device without having to bother about the decryption.") version ".tar.gz")) (sha256 (base32 - "16b377znjm6qlga5yb8aj7b7bcisa1ghcnj2lrb1d30lvxp4liif")))) + "1ravl635x81fcai4h2xnsn926i69pafgr6zkghq6319iprkw8ffv")))) (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'wrap-srt2vtt + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (version ,(let ((v (package-version guile-3.0))) + (string-append (car (string-split v #\.)) + ".0"))) + (site (string-append out "/share/guile/site/" version)) + (compiled (string-append + out "/lib/guile/" version + "/site-ccache"))) + (wrap-program (string-append bin "/srt2vtt") + `("GUILE_LOAD_PATH" ":" prefix (,site)) + `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,compiled))))))))) + (native-inputs + `(("pkg-config" ,pkg-config))) (inputs - `(("guile" ,guile-2.0))) + `(("guile" ,guile-3.0))) (synopsis "SubRip to WebVTT subtitle converter") (description "srt2vtt converts SubRip formatted subtitles to WebVTT format for use with HTML5 video.") @@ -4283,7 +4284,7 @@ It counts more than 100 plugins.") (file-name (git-file-name name version)))) (build-system gnu-build-system) (native-inputs - `(("autoconf" ,autoconf-wrapper) + `(("autoconf" ,autoconf) ("automake" ,automake) ("gettext" ,gettext-minimal) ("pkg-config" ,pkg-config))) @@ -4569,7 +4570,7 @@ transitions, and effects and then export your film to many common formats.") (define-public dav1d (package (name "dav1d") - (version "0.8.1") + (version "0.8.2") (source (origin (method git-fetch) @@ -4578,7 +4579,7 @@ transitions, and effects and then export your film to many common formats.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1820fpmmq1vxjzjmza6ydk4fgxipb8gmcc5skybki64qn7410v7x")))) + (base32 "0plmnxpz66yv3nqv1kgbyyfnwfqi9dqs0zbsdj488i6464a1m6si")))) (build-system meson-build-system) (native-inputs `(("nasm" ,nasm))) (home-page "https://code.videolan.org/videolan/dav1d") @@ -4798,7 +4799,7 @@ applications. It only supports Intel-compatible CPUs (x86).") (sha256 (base32 "1ypdiw4cq22llvm8jyszxdq6r1aydkj80dsxjarjn5b7c1f2q3ar")))) - ;; SVT-AV1 only supports 64-bit Intel-compatible CPUs. + ;; SVT-VP9 only supports 64-bit Intel-compatible CPUs. (supported-systems '("x86_64-linux")) (build-system cmake-build-system) (arguments @@ -5032,7 +5033,7 @@ brightness, contrast, and frame rate.") (define-public get-iplayer (package (name "get-iplayer") - (version "3.26") + (version "3.27") (source (origin (method git-fetch) @@ -5041,11 +5042,10 @@ brightness, contrast, and frame rate.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "0lsz5hz1ia5j612540rb0f31y7j2k5gf7x5i43l8k06b90wi73d6")))) + (base32 "077y31gg020wjpx5pcivqgkqawcjxh5kjnvq97x2gd7i3wwc30qi")))) (build-system perl-build-system) (arguments - `(#:tests? #f ; no tests + `(#:tests? #f ; no tests #:phases (modify-phases %standard-phases (delete 'configure) diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm index 372d470e09..9a3547bbc9 100644 --- a/gnu/packages/vim.scm +++ b/gnu/packages/vim.scm @@ -4,11 +4,12 @@ ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> -;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 HiPhish <hiphish@posteo.de> ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2019, 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us> +;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -70,7 +71,7 @@ (define-public vim (package (name "vim") - (version "8.2.2067") + (version "8.2.2632") (source (origin (method git-fetch) (uri (git-reference @@ -79,7 +80,7 @@ (file-name (git-file-name name version)) (sha256 (base32 - "02cd953h69k9klrcwi756namwg39ka7if9ccc399ihb1l5f3kr66")))) + "0f80im1swja58n99696zslyzapsx8pyf545pmpzvy173ymnvm6nq")))) (build-system gnu-build-system) (arguments `(#:test-target "test" @@ -131,6 +132,8 @@ ((".*Test_open_term_from_cmd.*" line) (string-append line "return\n")) ((".*Test_terminal_postponed_scrollback.*" line) + (string-append line "return\n")) + ((".*Test_combining_double_width.*" line) (string-append line "return\n"))) (substitute* "src/testdir/test_popupwin.vim" ((".*Test_popup_drag_termwin.*" line) @@ -216,11 +219,14 @@ with the editor vim."))) "--enable-xim" "--disable-selinux" "--enable-gui") - ;; This flag fixes the following error: - ;; .../libpython3.7m.a(pyexpat.o): undefined reference to symbol 'XML_FreeContentModel' - ;; .../libexpat.so.1: error adding symbols: DSO missing from command line - #:make-flags '("LDFLAGS=-lexpat") ,@(substitute-keyword-arguments (package-arguments vim) + ;; This flag fixes the following error: + ;; .../libpython3.7m.a(pyexpat.o): undefined reference to symbol 'XML_FreeContentModel' + ;; .../libexpat.so.1: error adding symbols: DSO missing from command line + ((#:make-flags flags) + `(append + (list "LDFLAGS=-lexpat") + (delete "CFLAGS=-D_REENTRANT" ,flags))) ((#:phases phases) `(modify-phases ,phases (add-before 'check 'start-xserver diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index de23bd0dc0..a2d348ab2c 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -17,6 +17,7 @@ ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org> +;;; Copyright © 2021 Leo Famulari <leo@famulari.name> ;;; ;;; This file is part of GNU Guix. ;;; @@ -42,6 +43,7 @@ #:use-module (gnu packages backup) #:use-module (gnu packages base) #:use-module (gnu packages bison) + #:use-module (gnu packages build-tools) #:use-module (gnu packages check) #:use-module (gnu packages cmake) #:use-module (gnu packages compression) @@ -80,9 +82,11 @@ #:use-module (gnu packages ncurses) #:use-module (gnu packages nettle) #:use-module (gnu packages networking) + #:use-module (gnu packages ninja) #:use-module (gnu packages onc-rpc) #:use-module (gnu packages package-management) #:use-module (gnu packages perl) + #:use-module (gnu packages pcre) #:use-module (gnu packages pkg-config) #:use-module (gnu packages polkit) #:use-module (gnu packages protobuf) @@ -118,6 +122,7 @@ #:use-module (guix packages) #:use-module (guix utils) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) #:use-module (ice-9 match)) (define (qemu-patch commit file-name sha256-bv) @@ -133,48 +138,58 @@ (define-public qemu (package (name "qemu") - (version "5.1.0") - (source (origin - (method url-fetch) - (uri (string-append "https://download.qemu.org/qemu-" - version ".tar.xz")) - (sha256 - (base32 - "1rd41wwlvp0vpialjp2czs6i3lsc338xc72l3zkbb7ixjfslw5y9")) - (patches (search-patches "qemu-build-info-manual.patch" - "qemu-CVE-2021-20203.patch")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Fix a bug in the do_ioctl_ifconf() function of qemu to - ;; make ioctl(…, SIOCGIFCONF, …) work for emulated 64 bit - ;; architectures. The size of struct ifreq is handled - ;; incorrectly. - ;; https://lists.nongnu.org/archive/html/qemu-devel/2021-01/msg01545.html - (substitute* '("linux-user/syscall.c") - (("^([[:blank:]]*)const argtype ifreq_arg_type.*$" line indent) - (string-append line indent - "const argtype ifreq_max_type[] = { MK_STRUCT(STRUCT_ifmap_ifreq) };\n")) - (("^([[:blank:]]*)target_ifreq_size[[:blank:]]=.*$" _ indent) - (string-append indent "target_ifreq_size = thunk_type_size(ifreq_max_type, 0);"))) - #t)))) - (outputs '("out" "doc")) ;4.7 MiB of HTML docs - (build-system gnu-build-system) - (arguments - `(;; FIXME: Disable tests on i686 to work around - ;; <https://bugs.gnu.org/40527>. - #:tests? ,(or (%current-target-system) + (version "5.2.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://download.qemu.org/qemu-" + version ".tar.xz")) + (sha256 + (base32 + "1g0pvx4qbirpcn9mni704y03n3lvkmw2c0rbcwvydyr8ns4xh66b")) + (patches (search-patches "qemu-CVE-2021-20203.patch" + "qemu-build-info-manual.patch")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Fix a bug in the do_ioctl_ifconf() function of qemu to + ;; make ioctl(…, SIOCGIFCONF, …) work for emulated 64 bit + ;; architectures. The size of struct ifreq is handled + ;; incorrectly. + ;; https://lists.nongnu.org/archive/html/qemu-devel/2021-01/msg01545.html + (substitute* '("linux-user/syscall.c") + (("^([[:blank:]]*)const argtype ifreq_arg_type.*$" line indent) + (string-append line indent "const argtype ifreq_max_type[] = " + "{ MK_STRUCT(STRUCT_ifmap_ifreq) };\n")) + (("^([[:blank:]]*)target_ifreq_size[[:blank:]]=.*$" _ indent) + (string-append indent "target_ifreq_size = " + "thunk_type_size(ifreq_max_type, 0);"))) + ;; Delete the bundled meson copy. + (delete-file-recursively "meson"))))) + (outputs '("out" "static" "doc")) ;5.3 MiB of HTML docs + (build-system gnu-build-system) + (arguments + ;; FIXME: Disable tests on i686 to work around + ;; <https://bugs.gnu.org/40527>. + `(#:tests? ,(or (%current-target-system) (not (string=? "i686-linux" (%current-system)))) - - #:configure-flags (list "--enable-usb-redir" "--enable-opengl" - "--enable-docs" - (string-append "--smbd=" - (assoc-ref %outputs "out") - "/libexec/samba-wrapper") - "--audio-drv-list=alsa,pa,sdl") + #:configure-flags + (let ((gcc (string-append (assoc-ref %build-inputs "gcc") "/bin/gcc")) + (out (assoc-ref %outputs "out"))) + (list (string-append "--cc=" gcc) + ;; Some architectures insist on using HOST_CC. + (string-append "--host-cc=" gcc) + (string-append "--prefix=" out) + "--sysconfdir=/etc" + (string-append "--smbd=" out "/libexec/samba-wrapper") + "--disable-debug-info" ;for space considerations + ;; The binaries need to be linked against -lrt. + (string-append "--extra-ldflags=-lrt"))) ;; Make build and test output verbose to facilitate investigation upon failure. #:make-flags '("V=1") #:modules ((srfi srfi-1) + (srfi srfi-26) + (ice-9 ftw) (ice-9 match) ,@%gnu-build-system-modules) #:phases @@ -194,8 +209,7 @@ inputs))) (set-path-environment-variable "C_INCLUDE_PATH" '("include") - input-directories) - #t))) + input-directories)))) (add-after 'unpack 'extend-test-time-outs (lambda _ ;; These tests can time out on heavily-loaded and/or slow storage. @@ -205,62 +219,88 @@ (string-append match "9"))))) (add-after 'unpack 'disable-unusable-tests (lambda _ - (substitute* "tests/Makefile.include" + (substitute* "tests/meson.build" ;; Comment out the test-qga test, which needs /sys and ;; fails within the build environment. - (("check-unit-.* tests/test-qga" all) + (("tests.*test-qga.*$" all) (string-append "# " all)) ;; Comment out the test-char test, which needs networking and ;; fails within the build environment. (("check-unit-.* tests/test-char" all) - (string-append "# " all))) - (substitute* "tests/qtest/Makefile.include" - ;; Disable the following test, which triggers a crash on some - ;; x86 CPUs (see https://issues.guix.info/43048 and - ;; https://bugs.launchpad.net/qemu/+bug/1896263). - (("check-qtest-i386-y \\+= bios-tables-test" all) - (string-append "# " all))) - #t)) - (add-after 'patch-source-shebangs 'patch-/bin/sh-references + (string-append "# " all))))) + (add-after 'patch-source-shebangs 'patch-embedded-shebangs (lambda _ ;; Ensure the executables created by these source files reference ;; /bin/sh from the store so they work inside the build container. (substitute* '("block/cloop.c" "migration/exec.c" "net/tap.c" "tests/qtest/libqtest.c") (("/bin/sh") (which "sh"))) - #t)) + (substitute* "Makefile" + (("SHELL = /usr/bin/env bash -o pipefail") + "SHELL = bash -o pipefail")) + (substitute* "tests/qemu-iotests/check" + (("#!/usr/bin/env python3") + (string-append "#!" (which "python3")))))) + (add-before 'configure 'fix-optionrom-makefile + (lambda _ + ;; Work around the inability of the rules defined in this + ;; Makefile to locate the firmware files (e.g.: No rule to make + ;; target 'multiboot.bin') by extending the VPATH. + (substitute* "pc-bios/optionrom/Makefile" + (("^VPATH = \\$\\(SRC_DIR\\)") + "VPATH = $(SRC_DIR):$(TOPSRC_DIR)/pc-bios")))) + ;; XXX ./configure is being re-run at beginning of build phase... (replace 'configure - (lambda* (#:key inputs outputs (configure-flags '()) - #:allow-other-keys) + (lambda* (#:key inputs outputs configure-flags #:allow-other-keys) ;; The `configure' script doesn't understand some of the ;; GNU options. Thus, add a new phase that's compatible. (let ((out (assoc-ref outputs "out"))) (setenv "SHELL" (which "bash")) - - ;; While we're at it, patch for tests. - (substitute* "tests/qemu-iotests/check" - (("#!/usr/bin/env python3") - (string-append "#!" (which "python3")))) - ;; Ensure config.status gets the correct shebang off the bat. ;; The build system gets confused if we change it later and - ;; attempts to re-run the whole configury, and fails. + ;; attempts to re-run the whole configuration, and fails. (substitute* "configure" (("#!/bin/sh") (string-append "#!" (which "sh")))) - - ;; The binaries need to be linked against -lrt. - (setenv "LDFLAGS" "-lrt") - (apply invoke - `("./configure" - ,(string-append "--cc=" (which "gcc")) - ;; Some architectures insist on using HOST_CC - ,(string-append "--host-cc=" (which "gcc")) - "--disable-debug-info" ; save build space - "--enable-virtfs" ; just to be sure - ,(string-append "--prefix=" out) - ,(string-append "--sysconfdir=/etc") - ,@configure-flags))))) + (mkdir-p "b/qemu") + (chdir "b/qemu") + (apply invoke "../../configure" configure-flags)))) + ;; Configure, build and install QEMU user-emulation static binaries. + (add-after 'configure 'configure-user-static + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((gcc (string-append (assoc-ref inputs "gcc") "/bin/gcc")) + (static (assoc-ref outputs "static")) + ;; This is the common set of configure flags; it is + ;; duplicated here to isolate this phase from manipulations + ;; to the #:configure-flags build argument, as done in + ;; derived packages such as qemu-minimal. + (configure-flags (list (string-append "--cc=" gcc) + (string-append "--host-cc=" gcc) + "--sysconfdir=/etc" + "--disable-debug-info"))) + (mkdir-p "../user-static") + (with-directory-excursion "../user-static" + (apply invoke "../../configure" + "--static" + "--disable-docs" ;already built + "--disable-system" + "--enable-linux-user" + (string-append "--prefix=" static) + configure-flags))))) + (add-after 'build 'build-user-static + (lambda args + (with-directory-excursion "../user-static" + (apply (assoc-ref %standard-phases 'build) args)))) + (add-after 'install 'install-user-static + (lambda* (#:key outputs #:allow-other-keys) + (let* ((static (assoc-ref outputs "static")) + (bin (string-append static "/bin"))) + (with-directory-excursion "../user-static" + (for-each (cut install-file <> bin) + (append-map (cut find-files <> "^qemu-" #:stat stat) + (scandir "." + (cut string-suffix? + "-linux-user" <>)))))))) ;; Create a wrapper for Samba. This allows QEMU to use Samba without ;; pulling it in as an input. Note that you need to explicitly install ;; Samba in your Guix profile for Samba support. @@ -273,8 +313,7 @@ (format port "#!/bin/sh exec smbd $@"))) (chmod "samba-wrapper" #o755) - (install-file "samba-wrapper" libexec)) - #t)) + (install-file "samba-wrapper" libexec)))) (add-after 'install 'move-html-doc (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -282,23 +321,22 @@ exec smbd $@"))) (qemu-doc (string-append doc "/share/doc/qemu-" ,version))) (mkdir-p qemu-doc) (rename-file (string-append out "/share/doc/qemu") - (string-append qemu-doc "/html"))) - #t))))) - (inputs ; TODO: Add optional inputs. + (string-append qemu-doc "/html")))))))) + (inputs ; TODO: Add optional inputs. `(("alsa-lib" ,alsa-lib) ("attr" ,attr) ("glib" ,glib) ("gtk+" ,gtk+) ("libaio" ,libaio) ("libattr" ,attr) - ("libcacard" ,libcacard) ; smartcard support - ("libcap-ng" ,libcap-ng) ; virtfs support requires libcap-ng & libattr + ("libcacard" ,libcacard) ; smartcard support + ("libcap-ng" ,libcap-ng) ; virtfs support requires libcap-ng & libattr ("libdrm" ,libdrm) ("libepoxy" ,libepoxy) ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libseccomp" ,libseccomp) - ("libusb" ,libusb) ;USB pass-through support + ("libusb" ,libusb) ;USB pass-through support ("mesa" ,mesa) ("ncurses" ,ncurses) ;; ("pciutils" ,pciutils) @@ -316,10 +354,18 @@ exec smbd $@"))) ("perl" ,perl) ("flex" ,flex) ("bison" ,bison) + ;; Using meson 0.57.1 enables reproducible QEMU builds. + ("meson" ,meson-next) + ("ninja" ,ninja) ("pkg-config" ,pkg-config) ("python-wrapper" ,python-wrapper) ("python-sphinx" ,python-sphinx) - ("texinfo" ,texinfo))) + ("texinfo" ,texinfo) + ;; The following static libraries are required to build + ;; the static output of QEMU. + ("glib-static" ,glib-static) + ("pcre:static" ,pcre "static") + ("zlib:static" ,zlib "static"))) (home-page "https://www.qemu.org") (synopsis "Machine emulator and virtualizer") (description @@ -344,46 +390,49 @@ server and embedded PowerPC, and S390 guests.") (define-public qemu-minimal ;; QEMU without GUI support, only supporting the host's architecture - (package (inherit qemu) + (package + (inherit qemu) (name "qemu-minimal") (synopsis "Machine emulator and virtualizer (without GUI) for the host architecture") (arguments (substitute-keyword-arguments (package-arguments qemu) - ((#:configure-flags _ '(list)) + ((#:configure-flags configure-flags '(list)) ;; Restrict to the host's architecture. - (let ((system (or (%current-target-system) - (%current-system)))) - (cond - ((string-prefix? "i686" system) - '(list "--target-list=i386-softmmu")) - ((string-prefix? "xasdf86_64" system) - '(list "--target-list=i386-softmmu,x86_64-softmmu")) - ((string-prefix? "mips64" system) - '(list (string-append "--target-list=mips-softmmu,mipsel-softmmu," - "mips64-softmmu,mips64el-softmmu"))) - ((string-prefix? "mips" system) - '(list "--target-list=mips-softmmu,mipsel-softmmu")) - ((string-prefix? "aarch64" system) - '(list "--target-list=arm-softmmu,aarch64-softmmu")) - ((string-prefix? "arm" system) - '(list "--target-list=arm-softmmu")) - ((string-prefix? "alpha" system) - '(list "--target-list=alpha-softmmu")) - ((string-prefix? "powerpc64" system) - '(list "--target-list=ppc-softmmu,ppc64-softmmu")) - ((string-prefix? "powerpc" system) - '(list "--target-list=ppc-softmmu")) - ((string-prefix? "s390" system) - '(list "--target-list=s390x-softmmu")) - ((string-prefix? "riscv" system) - '(list "--target-list=riscv32-softmmu,riscv64-softmmu")) - (else ; An empty list actually builds all the targets. - ''())))))) + (let* ((system (or (%current-target-system) + (%current-system))) + (target-list-arg + (match system + ((? (cut string-prefix? "i686" <>)) + "--target-list=i386-softmmu") + ((? (cut string-prefix? "x86_64" <>)) + "--target-list=i386-softmmu,x86_64-softmmu") + ((? (cut string-prefix? "mips64" <>)) + (string-append "--target-list=mips-softmmu,mipsel-softmmu," + "mips64-softmmu,mips64el-softmmu")) + ((? (cut string-prefix? "mips" <>)) + "--target-list=mips-softmmu,mipsel-softmmu") + ((? (cut string-prefix? "aarch64" <>)) + "--target-list=arm-softmmu,aarch64-softmmu") + ((? (cut string-prefix? "arm" <>)) + "--target-list=arm-softmmu") + ((? (cut string-prefix? "alpha" <>)) + "--target-list=alpha-softmmu") + ((? (cut string-prefix? "powerpc64" <>)) + "--target-list=ppc-softmmu,ppc64-softmmu") + ((? (cut string-prefix? "powerpc" <>)) + "--target-list=ppc-softmmu") + ((? (cut string-prefix? "s390" <>)) + "--target-list=s390x-softmmu") + ((? (cut string-prefix? "riscv" <>)) + "--target-list=riscv32-softmmu,riscv64-softmmu") + (else ; An empty list actually builds all the targets. + '())))) + `(cons ,target-list-arg ,configure-flags))))) ;; Remove dependencies on optional libraries, notably GUI libraries. (native-inputs (fold alist-delete (package-native-inputs qemu) - '("gettext"))) + '("gettext"))) (inputs (fold alist-delete (package-inputs qemu) '("libusb" "mesa" "sdl2" "spice" "virglrenderer" "gtk+" "usbredir" "libdrm" "libepoxy" "pulseaudio" "vde2" diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm index 76af7582fc..2ea04acaa2 100644 --- a/gnu/packages/vpn.scm +++ b/gnu/packages/vpn.scm @@ -388,7 +388,7 @@ this process. It is compatible with Fortinet VPNs.") (define-public openvpn (package (name "openvpn") - (version "2.4.10") + (version "2.5.1") (source (origin (method url-fetch) (uri (string-append @@ -396,7 +396,7 @@ this process. It is compatible with Fortinet VPNs.") version ".tar.xz")) (sha256 (base32 - "0xx378ja2rdfaayc257z0z5ddsp8h0jcpqnd1a6bdw3rlsam6a6g")))) + "157ikzap2bbkzx34hkh33bpk2i14xjx1x3pkadhmzh1pr24h94s0")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--enable-iproute2=yes"))) @@ -683,7 +683,7 @@ WireGuard was added to Linux 5.6.") (define-public wireguard-tools (package (name "wireguard-tools") - (version "1.0.20200827") + (version "1.0.20210223") (source (origin (method git-fetch) @@ -692,7 +692,7 @@ WireGuard was added to Linux 5.6.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1h351hn531z6z85sx9ya27xjz1jszgn1pkwibacjj49mds15f7gn")))) + (base32 "1pz7rir7bzj7rv1lqy45pqnr6jxsb4war31f9492757fql7kcrf4")))) (build-system gnu-build-system) (arguments `(#:make-flags diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index 5a83a4ef95..e5e726ad19 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -16,6 +16,7 @@ ;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz> ;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro> ;;; Copyright © 2021 Cage <cage-dev@twistfold.it> +;;; Copyright © 2021 Benoit Joly <benoit@benoitj.ca> ;;; ;;; This file is part of GNU Guix. ;;; @@ -477,7 +478,7 @@ interface.") (define-public qutebrowser (package (name "qutebrowser") - (version "1.14.1") + (version "2.0.2") (source (origin (method url-fetch) @@ -485,13 +486,14 @@ interface.") "qutebrowser/releases/download/v" version "/" "qutebrowser-" version ".tar.gz")) (sha256 - (base32 "15l7jphy1qjsh6y6kd5mgkxsl6ymm9564g1yypa946jbyrgi8k2m")))) + (base32 "0fxkazz4ykmkiww27l92yr96hq00qn5vvjmknxcy4cl97d2pxa28")))) (build-system python-build-system) (native-inputs `(("python-attrs" ,python-attrs))) ; for tests (inputs `(("python-colorama" ,python-colorama) ("python-cssutils" ,python-cssutils) + ("python-importlib-resources" ,python-importlib-resources) ("python-jinja2" ,python-jinja2) ("python-markupsafe" ,python-markupsafe) ("python-pygments" ,python-pygments) @@ -589,40 +591,12 @@ vim editor and also easily configurable during runtime. Vimb is mostly keyboard driven and does not detract you from your daily work.") (license license:gpl3+))) -;; Nyxt 2 pre-release 5 is incompatible with the new nickname "class*" of defclass-star. -;; Use the older commit then. -(define sbcl-hu.dwim.defclass-star--no-nickname - (let ((commit "2cf30b37006824ec912cf7732fe6c4f4b414597f")) - (package - (name "sbcl-hu.dwim.defclass-star") - ;; We used to set version from the date when it was a darcs repo, so we - ;; keep the year so that package gets updated on previous installs. - (version (git-version "2015-07-09" "1" commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/hu-dwim/hu.dwim.defclass-star") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0zmzvwgcp6lpkqxnfphd05v20xqsvz392mx1v98469kavh4zd7hf")))) - (build-system asdf-build-system/sbcl) - (native-inputs - `(("hu.dwim.asdf" ,sbcl-hu.dwim.asdf))) - (arguments - '(#:tests? #f)) - (home-page "https://github.com/hu-dwim/hu.dwim.defclass-star") - (synopsis "See sbcl-hu.dwim.defclass-star") - (description "See sbcl-hu.dwim.defclass-star.") - (license license:public-domain)))) - (define-public nyxt (package (name "nyxt") ;; Package the pre-release because latest stable 1.5.0 does not build ;; anymore. - (version "2-pre-release-5") + (version "2-pre-release-6") (source (origin (method git-fetch) @@ -633,7 +607,7 @@ driven and does not detract you from your daily work.") (commit version))) (sha256 (base32 - "1sdafyhiicasd4wyzqnzdyrr16mz55y4b2hf5ya6i7nvm2vyhywl")) + "0kcqp3p070i6x2jj27h8pxzvmhrzsl4kl3vkc8m76abkxc9lvn03")) (file-name (git-file-name "nyxt" version)))) (build-system gnu-build-system) (arguments @@ -694,6 +668,8 @@ driven and does not detract you from your daily work.") ("cl-calispel" ,sbcl-calispel) ("cl-containers" ,sbcl-cl-containers) ("cl-css" ,sbcl-cl-css) + ("cl-custom-hash-table" ,sbcl-custom-hash-table) + ("cl-html-diff" ,sbcl-cl-html-diff) ("cl-json" ,sbcl-cl-json) ("cl-markup" ,sbcl-cl-markup) ("cl-ppcre" ,sbcl-cl-ppcre) @@ -702,16 +678,15 @@ driven and does not detract you from your daily work.") ("cluffer" ,sbcl-cluffer) ("dexador" ,sbcl-dexador) ("enchant" ,sbcl-enchant) + ("file-attributes" ,sbcl-file-attributes) ("fset" ,sbcl-fset) - ;; TODO: Use latest upstream for 2 pre-release 6 onward. - ("hu.dwim.defclass-star" ,sbcl-hu.dwim.defclass-star--no-nickname) + ("hu.dwim.defclass-star" ,sbcl-hu.dwim.defclass-star) ("iolib" ,sbcl-iolib) ("local-time" ,sbcl-local-time) ("log4cl" ,sbcl-log4cl) ("mk-string-metrics" ,sbcl-mk-string-metrics) ("moptilities" ,sbcl-moptilities) ("named-readtables" ,sbcl-named-readtables) - ("osicat" ,sbcl-osicat) ("parenscript" ,sbcl-parenscript) ("plump" ,sbcl-plump) ("quri" ,sbcl-quri) @@ -724,7 +699,6 @@ driven and does not detract you from your daily work.") ("trivial-package-local-nicknames" ,sbcl-trivial-package-local-nicknames) ("trivial-types" ,sbcl-trivial-types) ("unix-opts" ,sbcl-unix-opts) - ("usocket" ,sbcl-usocket) ;; WebKitGTK deps ("cl-cffi-gtk" ,sbcl-cl-cffi-gtk) ("cl-webkit" ,sbcl-cl-webkit) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index b5cbec951a..4a7a3bb233 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -10,7 +10,7 @@ ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org> -;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org> @@ -78,6 +78,7 @@ #:use-module (guix build-system ant) #:use-module (guix build-system cargo) #:use-module (guix build-system cmake) + #:use-module (guix build-system copy) #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system gnu) #:use-module (guix build-system go) @@ -171,6 +172,79 @@ #:use-module (gnu packages xml) #:use-module ((srfi srfi-1) #:select (delete-duplicates))) +(define-public qhttp + (package + (name "qhttp") + (version "3.1") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/azadkuh/qhttp") + (commit (string-append "version-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0cx23g4y4k4v9p5ph6h7gfhp8sfy1gcdv1g6bl44hppar1y0zfdq")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no target + #:imported-modules + ((guix build copy-build-system) + ,@%gnu-build-system-modules) + #:modules + (((guix build copy-build-system) #:prefix copy:) + (guix build gnu-build-system) + (guix build utils)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-source + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "commondir.pri" + (("\\$\\$PRJDIR/xbin") + (string-append (assoc-ref outputs "out") "/lib")) + (("-L") + "-lhttp_parser -L") + (("\\$\\$PRJDIR/3rdparty") + "")) + (substitute* "src/src.pro" + (("SOURCES \\+= \\$\\$PRJDIR/3rdparty/http-parser/http_parser.c") + "") + (("HEADERS \\+= \\$\\$PRJDIR/3rdparty/http-parser/http_parser.h") + "")) + (substitute* '("src/private/qhttpbase.hpp" "src/qhttpabstracts.cpp") + (("http-parser/http_parser.h") + "http_parser.h")) + #t)) + (replace 'configure + (lambda _ (invoke "qmake"))) + (replace 'install + (lambda args + (apply (assoc-ref copy:%standard-phases 'install) + #:install-plan + '(("src" "include" + #:include-regexp ("\\.hpp$"))) + args))) + (add-after 'install 'remove-examples + (lambda* (#:key outputs #:allow-other-keys) + (with-directory-excursion + (string-append (assoc-ref outputs "out") "/lib") + (for-each delete-file + (list + "basic-server" + "helloworld" + "postcollector"))) + #t))))) + (inputs + `(("http-parser" ,http-parser) + ("qtbase" ,qtbase))) + (home-page "https://github.com/azadkuh/qhttp/") + (synopsis "Qt-based HTTP Library") + (description + "Qhttp is a light-weight and asynchronous HTTP library +(both server & client) in Qt5 and C++14.") + (license license:expat))) + (define-public httpd (package (name "httpd") @@ -243,7 +317,7 @@ Interface} specification.") (define-public monolith (package (name "monolith") - (version "2.4.0") + (version "2.4.1") (source (origin (method git-fetch) @@ -252,17 +326,18 @@ Interface} specification.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "18c6bsv9m3spiyfhqp08v807m93r6n9hrlv4qbfiqp4kw5aryb4h")))) + (base32 "1z0bcvk2cvx2cd0hs8addzcb070xvrkcxvg25691xw0ikiynpkwz")))) (build-system cargo-build-system) (arguments `(#:cargo-inputs - (("rust-base64" ,rust-base64-0.13) + (("rust-atty" ,rust-atty-0.2) + ("rust-base64" ,rust-base64-0.13) ("rust-chrono" ,rust-chrono-0.4) ("rust-clap" ,rust-clap-2) - ("rust-cssparser" ,rust-cssparser-0.27) + ("rust-cssparser" ,rust-cssparser-0.28) ("rust-html5ever" ,rust-html5ever-0.24) ("rust-regex" ,rust-regex-1) - ("rust-reqwest" ,rust-reqwest-0.10) + ("rust-reqwest" ,rust-reqwest-0.11) ("rust-sha2" ,rust-sha2-0.9) ("rust-url" ,rust-url-2)) #:cargo-development-inputs @@ -293,14 +368,14 @@ the same, being completely separated from the Internet.") ;; ’stable’ and recommends that “in general you deploy the NGINX mainline ;; branch at all times” (https://www.nginx.com/blog/nginx-1-6-1-7-released/) ;; Consider updating the nginx-documentation package together with this one. - (version "1.19.6") + (version "1.19.8") (source (origin (method url-fetch) (uri (string-append "https://nginx.org/download/nginx-" version ".tar.gz")) (sha256 (base32 - "1d9kzks8x1226prjbpdin4dz93fjnv304zlqybfqachx5fh9a4di")))) + "01cb6hsaik1sfjihbrldmwrcn54gk4plfy350sl1b4rml6qik29h")))) (build-system gnu-build-system) (inputs `(("openssl" ,openssl) ("pcre" ,pcre) @@ -383,9 +458,9 @@ and as a proxy to reduce the load on back-end HTTP or mail servers.") (define-public nginx-documentation ;; This documentation should be relevant for the current nginx package. - (let ((version "1.19.6") - (revision 2636) - (changeset "a0824dab33ff")) + (let ((version "1.19.8") + (revision 2673) + (changeset "4398fd0f0341")) (package (name "nginx-documentation") (version (simple-format #f "~A-~A-~A" version revision changeset)) @@ -397,7 +472,7 @@ and as a proxy to reduce the load on back-end HTTP or mail servers.") (file-name (string-append name "-" version)) (sha256 (base32 - "06w6fg33pnkqpaagzp9rqizill61vj7db7083mrd6i6by0j7cp1b")))) + "1pds76h19fadmymyr6pnfh72ql6vizpv2628lqcrpqhxgwa6hcbg")))) (build-system gnu-build-system) (arguments '(#:tests? #f ; no test suite @@ -3995,7 +4070,7 @@ is limited to http and https.") (define-public perl-net-http (package (name "perl-net-http") - (version "6.20") + (version "6.21") (source (origin (method url-fetch) (uri (string-append @@ -4003,7 +4078,7 @@ is limited to http and https.") "Net-HTTP-" version ".tar.gz")) (sha256 (base32 - "07lzfycza7qqxli18xgsnqwiwxapl0b64z33wfw62aai4hm7nllj")))) + "1i7fk6q1iaxzgf82mjd5hg77hvy7dbb79488cijg16dyfrds6nip")))) (build-system perl-build-system) (propagated-inputs `(("perl-io-socket-ssl" ,perl-io-socket-ssl) @@ -5936,14 +6011,14 @@ configuration language.") (package (name "varnish-modules") (home-page "https://github.com/varnish/varnish-modules") - (version "0.17.0") + (version "0.17.1") (source (origin (method git-fetch) (uri (git-reference (url home-page) (commit version))) (file-name (git-file-name name version)) (sha256 (base32 - "0zg8y2sgkygdani70zp9rbx278431fmssj26d47c5qsiw939i519")))) + "1mzkad9r4rpm1fi7j7skwrsyzzbwcapfnlvvl1ls3rng2djcqb5j")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -6133,9 +6208,6 @@ response. This exists to cover all kinds of HTTP scenarios. All endpoint respo JSON-encoded.") (license license:isc))) -(define-public python2-httpbin - (package-with-python2 python-httpbin)) - (define-public python-pytest-httpbin (package (name "python-pytest-httpbin") @@ -6235,27 +6307,31 @@ message stream (in a web server that is per connection).") (define-public python-httpretty (package (name "python-httpretty") - (version "0.9.6") + (version "1.0.5") (source (origin (method url-fetch) (uri (pypi-uri "httpretty" version)) (sha256 - (base32 "1p1rb4mpngh0632xrmdfhvc8yink519yfkqz97d2ww3y0x2jvd81")))) + (base32 "1dg0nfl7i9kjnq98ww98x2afzav4mpgiwzvjc43ily1x9my94g75")))) (build-system python-build-system) - (propagated-inputs - `(("python-six" ,python-six))) + (arguments + `(#:tests? #f ; Tests require network access. + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "nosetests")) + #t))))) (native-inputs `(("python-coverage" ,python-coverage) - ("python-httplib2" ,python-httplib2) - ("python-mock" ,python-mock) + ("python-eventlet" ,python-eventlet) ("python-nose" ,python-nose) - ("python-nose-randomly" ,python-nose-randomly) ("python-rednose" ,python-rednose) ("python-requests" ,python-requests) ("python-sure" ,python-sure) - ("python-tornado" ,python-tornado) - ("python-urllib3" ,python-urllib3))) + ("python-tornado" ,python-tornado))) (home-page "https://httpretty.readthedocs.io") (synopsis "HTTP client mock for Python") (description "@code{httpretty} is a helper for faking web requests, diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm index 9ad6682880..89eee74def 100644 --- a/gnu/packages/webkit.scm +++ b/gnu/packages/webkit.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com> ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> ;;; @@ -122,7 +122,7 @@ engine that uses Wayland for graphics output.") (define-public wpewebkit (package (name "wpewebkit") - (version "2.28.3") + (version "2.30.5") (source (origin (method url-fetch) @@ -130,7 +130,7 @@ engine that uses Wayland for graphics output.") (string-append "https://wpewebkit.org/releases/" name "-" version ".tar.xz")) (sha256 - (base32 "12z9457ja1xm93kl3gpd6nvd5xn11mvm8pr0w2zhmh3k9lx2cf95")))) + (base32 "16imr0kmzhs7dz6jva9750xbsdz9v50playnagabajy30x7pymsb")))) (build-system cmake-build-system) (outputs '("out" "doc")) (arguments @@ -140,8 +140,10 @@ engine that uses Wayland for graphics output.") "-DPORT=WPE" ;; XXX: To be enabled. ;; "-DENABLE_ACCELERATED_2D_CANVAS=ON" - "-DENABLE_ENCRYPTED_MEDIA=ON" - "-DENABLE_GTKDOC=ON") + "-DUSE_SYSTEMD=OFF" + "-DENABLE_ENCRYPTED_MEDIA=OFF" + "-DENABLE_GTKDOC=ON" + "-DUSE_GSTREAMER_GL=OFF") #:phases (modify-phases %standard-phases (add-after 'unpack 'setenv @@ -224,14 +226,14 @@ acceleration in mind, leveraging common 3D graphics APIs for best performance.") (define-public webkitgtk (package (name "webkitgtk") - (version "2.30.5") + (version "2.30.6") (source (origin (method url-fetch) (uri (string-append "https://www.webkitgtk.org/releases/" "webkitgtk-" version ".tar.xz")) (sha256 (base32 - "07vzbbnvz69rn9pciji4axfpclp98bpj4a0br2z0gbn5wc4an3bx")) + "07kwkn7gnlfw4idl5vyyzhzbj2bjzvjrclbikn9vaw0pm73nwwsh")) (patches (search-patches "webkitgtk-share-store.patch" "webkitgtk-bind-all-fonts.patch")))) (build-system cmake-build-system) @@ -254,12 +256,7 @@ acceleration in mind, leveraging common 3D graphics APIs for best performance.") ;; included. More investigation is needed. For ;; now, we explicitly disable it to prevent an error ;; at configuration time. - "-DUSE_GSTREAMER_GL=OFF" - - ;; XXX Disable WOFF2 ‘web fonts’. These were never - ;; supported in our previous builds. Enabling them - ;; requires building libwoff2 and possibly woff2dec. - "-DUSE_WOFF2=OFF") + "-DUSE_GSTREAMER_GL=OFF") #:phases (modify-phases %standard-phases (add-after 'unpack 'configure-bubblewrap-store-directory @@ -336,6 +333,7 @@ acceleration in mind, leveraging common 3D graphics APIs for best performance.") ("mesa" ,mesa) ("openjpeg" ,openjpeg) ("sqlite" ,sqlite) + ("woff2" ,woff2) ("wpebackend-fdo" ,wpebackend-fdo) ("xdg-dbus-proxy" ,xdg-dbus-proxy))) (home-page "https://www.webkitgtk.org/") diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index e0c4d1db84..3d85392394 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -31,7 +31,7 @@ ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org> ;;; Copyright © 2019 Noodles! <nnoodle@chiru.no> ;;; Copyright © 2019, 2020 Alexandru-Sergiu Marton <brown121407@member.fsf.org> -;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> +;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2020 Boris A. Dekshteyn <harlequin78@gmail.com> ;;; Copyright © 2020 Marcin Karpezo <sirmacik@wioo.waw.pl> @@ -39,9 +39,11 @@ ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com> -;; Copyright © 2020 Niklas Eklund <niklas.eklund@posteo.net> +;;; Copyright © 2020 Niklas Eklund <niklas.eklund@posteo.net> ;;; Copyright © 2020 Robert Smith <robertsmith@posteo.net> ;;; Copyright © 2021 Zheng Junjie <873216071@qq.com> +;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com> +;;; Copyright © 2021 qblade <qblade@protonmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -1343,14 +1345,14 @@ its size (define-public polybar (package (name "polybar") - (version "3.5.4") + (version "3.5.5") (source (origin (method url-fetch) (uri (string-append "https://github.com/polybar/polybar/releases/" "download/" version "/polybar-" version ".tar.gz")) (sha256 - (base32 "0awwjp3l0y9yhmrl914710ipawp2xr43jxrvmnanahlznblg8fhk")))) + (base32 "1c8br9972x1qw7l2shj9aqzv0gsx58fdh3r0f1z5i1bqdwxmsqky")))) (build-system cmake-build-system) (arguments ;; Test is disabled because it requires downloading googletest from the @@ -1783,8 +1785,8 @@ productive, customizable lisp based systems.") (delete 'cleanup))))))) (define stumpwm-contrib - (let ((commit "920f8fc1488f7953f205e1dda4c2ecbbbda56d63") - (revision "2")) + (let ((commit "a7dc1c663d04e6c73a4772c8a6ad56a34381096a") + (revision "3")) (package (name "stumpwm-contrib") (version (git-version "0.0.1" revision commit)) ;no upstream release @@ -1796,7 +1798,7 @@ productive, customizable lisp based systems.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "0giac390bq95ag41xkxqp8jjrhfx1wpgglz7jg5rkm0wjhcwmyml")))) + (base32 "09akdaaya7lga5lzbq1aj1filsyjwvflghkidpmr0nk0jz5xx1g7")))) (build-system asdf-build-system/sbcl) (inputs `(("stumpwm" ,stumpwm "lib"))) @@ -2019,6 +2021,26 @@ layouts in StumpWM.") (description "Modeline support for CPU info.") (license license:gpl3+))) +(define-public sbcl-stumpwm-disk + (package + (inherit stumpwm-contrib) + (name "sbcl-stumpwm-disk") + (arguments + '(#:asd-systems '("disk") + #:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ (chdir "modeline/disk") #t))))) + (inputs + `(("stumpwm" ,stumpwm "lib") + ("cl-diskspace" ,sbcl-cl-diskspace) + ("cl-mount-info" ,sbcl-cl-mount-info))) + (home-page "https://github.com/stumpwm/stumpwm-contrib") + (synopsis "StumpWM modeline support to show disk usage") + (description "StumpWM modeline support to show disk usage") + (license (list license:gpl2+ license:gpl3+)))) + (define-public sbcl-stumpwm-mem (package (inherit stumpwm-contrib) @@ -2325,7 +2347,7 @@ shows a notification for the user on the screen.") (define-public cagebreak (package (name "cagebreak") - (version "1.4.4") + (version "1.6.0") (source (origin (method git-fetch) (uri (git-reference @@ -2334,7 +2356,7 @@ shows a notification for the user on the screen.") (file-name (git-file-name name version)) (sha256 (base32 - "0mnxs1m7jrqdl0asx39nxfzvkp7d4jqpdchi63w2yd1igpj2frb2")))) + "02gxmypfj75amdd8lwdkkk7imw7lwmghpyk8h9asljy9aq6ymdqp")))) (build-system meson-build-system) (arguments '(#:configure-flags '("-Dxwayland=true"))) (native-inputs @@ -2350,3 +2372,31 @@ shows a notification for the user on the screen.") for wayland conceptually based on the X11 window manager @command{ratpoison}.") (license license:expat))) + +(define-public libucl + (package + (name "libucl") + (version "0.8.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/vstakhov/libucl/") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1h52ldxankyhbbm1qbqz1f2q0j03c1b4mig7343bs3mc6fpm18gf")))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config) + ("libtool" ,libtool))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f)) ;; no tests + (home-page "https://github.com/vstakhov/libucl") + (synopsis "Universal configuration language (UCL) parser") + (description "libucl implements a configuration language that is easy to +read and write, and compatible with JSON.") + (license license:bsd-2))) diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm index f3a7fdd7a4..423da37a3c 100644 --- a/gnu/packages/wxwidgets.scm +++ b/gnu/packages/wxwidgets.scm @@ -152,7 +152,7 @@ and many other languages.") #t))))))) (define-public wxwidgets-gtk2 - (package (inherit wxwidgets) + (package/inherit wxwidgets (inputs `(("gtk+" ,gtk+-2) ,@(alist-delete "gtk+" @@ -183,7 +183,7 @@ and many other languages.") `(cons "--enable-mediactrl" ,flags)))))) (define-public wxwidgets-gtk2-3.1 - (package (inherit wxwidgets-3.1) + (package/inherit wxwidgets-3.1 (inputs `(("gtk+" ,gtk+-2) ,@(alist-delete "gtk+" diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index 88275d8894..d5d0a2deb8 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -705,7 +705,7 @@ move windows, switch between desktops, etc.).") (define-public scrot (package (name "scrot") - (version "1.4") + (version "1.5") (source (origin (method git-fetch) @@ -715,8 +715,7 @@ move windows, switch between desktops, etc.).") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 - "12xq6glg70icwsvbnfw9gm4dahlbnrc7b6adpd0mpf89h4sj2gds")))) + (base32 "0x64b7xqi5cbq29pb8s8r2kzbxaday1f5k0j70n3s2p7sahjxy72")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) @@ -725,8 +724,8 @@ move windows, switch between desktops, etc.).") (inputs `(("giblib" ,giblib) ("libx11" ,libx11) - ("libXcursor" ,libxcursor) ("libxcomposite" ,libxcomposite) + ("libxext" ,libxext) ("libXfixes" ,libxfixes))) (home-page "https://github.com/resurrecting-open-source-projects/scrot") (synopsis "Command-line screen capture utility for X Window System") @@ -2710,7 +2709,7 @@ such as sway, similar to @command{rofi}.") (delete 'configure)) #:tests? #f)) (inputs - `(("python", python))) + `(("python" ,python))) (native-inputs `(("python-sphinx" ,python-sphinx))) (home-page "https://github.com/jceb/dex") diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index 738f375ac9..ac356cb78d 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -28,6 +28,7 @@ ;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2021 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2021 Julien Lepiller <julien@lepiller.eu> ;;; ;;; This file is part of GNU Guix. ;;; @@ -1201,8 +1202,7 @@ Libxml2).") "See 'COPYING' in the distribution.")))) (define-public xmlsec-nss - (package - (inherit xmlsec) + (package/inherit xmlsec (name "xmlsec-nss") (native-inputs ;; For tests. @@ -2017,6 +2017,60 @@ efficiently all input elements (for example in SOAP processors). This package is in maintenance mode.") (license (license:non-copyleft "file:///LICENSE.txt")))) +(define-public java-xmlpull-api-v1 + (package + (name "java-xmlpull-api-v1") + (version "1.1.3.4b") + (source (origin + ;; The package is originally from Extreme! Lab, but the website + ;; is now gone. This repositories contains the sources of the + ;; latest version. + (method git-fetch) + (uri (git-reference + (url "https://github.com/aslom/xmlpull-api-v1") + ;; No releases, this is the latest commit + (commit "abeaa4aa87b2625af70c32f658f44e11355fe568"))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "15bdqxfncnakskna4m9gsh4f9iczxy83qxn2anqiqd15z406a5ih")) + (modules '((guix build utils))) + (snippet + `(begin + (delete-file-recursively "lib") + (mkdir-p "lib") + ;; prevents a failure in "dist_lite" + (substitute* "build.xml" + (("README.html") "README.md")))))) + (build-system ant-build-system) + (arguments + `(#:test-target "junit" + #:build-target "dist" + #:phases + (modify-phases %standard-phases + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (string-append out "/share/doc/" ,name "-" ,version)) + (java (string-append out "/share/java")) + (project (string-append + "xmlpull_" + ,(string-join (string-split version #\.) "_")))) + (mkdir-p doc) + (copy-recursively (string-append "build/dist/" project "/doc/") + doc) + (mkdir-p java) + (copy-file (string-append "build/dist/" project "/" project ".jar") + (string-append java "/" project ".jar"))) + ))))) + (home-page "https://github.com/aslom/xmlpull-api-v1") + (synopsis "XML pull parsing API") + (description "XmlPull v1 API is a simple to use XML pull parsing API. XML +pull parsing allows incremental (sometimes called streaming) parsing of XML +where application is in control - the parsing can be interrupted at any given +moment and resumed when application is ready to consume more input.") + (license license:public-domain))) + (define-public java-dom4j (package (name "java-dom4j") @@ -2226,7 +2280,7 @@ outputting XML data from Java code.") (define-public java-xstream (package (name "java-xstream") - (version "1.4.15") + (version "1.4.16") (source (origin (method git-fetch) @@ -2238,7 +2292,7 @@ outputting XML data from Java code.") version))))) (file-name (git-file-name name version)) (sha256 - (base32 "1178qryrjwjp44439pi5dxzd32896r5zs429z1qhlc09951r7mi9")))) + (base32 "16k2mc63h2fw7lxv74qmhg4p8q9hfrw114daa6nxwnpv08cnq755")))) (build-system ant-build-system) (arguments `(#:jar-name "xstream.jar" @@ -2253,6 +2307,7 @@ outputting XML data from Java code.") ("java-joda-time" ,java-joda-time) ("java-jettison" ,java-jettison) ("java-xom" ,java-xom) + ("java-mxparser" ,java-mxparser) ("java-xpp3" ,java-xpp3) ("java-dom4j" ,java-dom4j) ("java-stax2-api" ,java-stax2-api) @@ -2265,6 +2320,48 @@ outputting XML data from Java code.") and back again.") (license license:bsd-3))) +(define-public java-mxparser + (package + (name "java-mxparser") + (version "1.2.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/x-stream/mxparser") + (commit (string-append "v-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0i3jrjbz4hgf62fm1ix7nlcmhi4kcv4flqsfvh7a3l2v7nsp5ryb")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "mxparser.jar" + #:source-dir "src/main/java" + #:test-dir "src/test" + #:phases + (modify-phases %standard-phases + (add-before 'build 'copy-resources + (lambda _ + (copy-recursively "src/main/resources" "build/classes") + #t))))) + (propagated-inputs + `(("java-xmlpull-api-v1" ,java-xmlpull-api-v1))) + (native-inputs + `(("java-junit" ,java-junit))) + (home-page "https://github.com/x-stream/mxparser") + (synopsis "Streaming pull XML parser forked from @code{java-xpp3}") + (description "Xml Pull Parser (in short XPP) is a streaming pull XML +parser and should be used when there is a need to process quickly and +efficiently all input elements (for example in SOAP processors). This +package is a stable XmlPull parsing engine that is based on ideas from XPP +and in particular XPP2 but completely revised and rewritten to take the best +advantage of JIT JVMs. + +MXParser is a fork of xpp3_min 1.1.7 containing only the parser with merged +changes of the Plexus fork. It is an implementation of the XMLPULL V1 API +(parser only).") + (license (license:non-copyleft "file://LICENSE.txt")))) + (define-public xmlrpc-c (package (name "xmlrpc-c") diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 78d6f3822b..e5576ffc63 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -3200,17 +3200,14 @@ supported, and the RENDER extension is not accelerated by this driver.") (define-public xf86-video-nouveau (package (name "xf86-video-nouveau") - (version "1.0.16") + (version "1.0.17") (source (origin (method url-fetch) - (uri (string-append - "mirror://xorg/individual/driver/xf86-video-nouveau-" - version - ".tar.bz2")) + (uri (string-append "mirror://xorg/individual/driver/xf86-video-nouveau-" + version ".tar.bz2")) (sha256 - (base32 - "01mz8gnq7j6bvrqb2ljm3d1wpjhi9p2z2w8zbkdrqmqmcj060h1h")))) + (base32 "0sqm1jwjg15sp8v7039y2hsbhph8gpjd2bdzcqqiij2mgbi254s9")))) (build-system gnu-build-system) (inputs `(("xorg-server" ,xorg-server))) (native-inputs `(("pkg-config" ,pkg-config))) @@ -6091,7 +6088,19 @@ to answer a question. Xmessage can also exit after a specified time.") '(#:configure-flags '("--enable-wide-chars" "--enable-load-vt-fonts" "--enable-i18n" "--enable-doublechars" "--enable-luit" "--enable-mini-luit") - #:tests? #f)) + #:tests? #f ; no test suite + #:phases + (modify-phases %standard-phases + (add-after 'build 'patch-file-names + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "uxterm" + (("([ `\\|])(sh|sed|awk|xmessage) " _ prefix command) + (string-append prefix (which command) " ")) + (("(`|\"|LANG=C )(locale) " _ prefix command) + (string-append prefix (which command) " ")) + (("=xterm") + (string-append "=" out "/bin/xterm"))))))))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs @@ -6471,8 +6480,7 @@ and embedded platforms.") license:bsd-3)))) (define-public uim-gtk - (package - (inherit uim) + (package/inherit uim (name "uim-gtk") (inputs `(("gtk" ,gtk+) @@ -6481,8 +6489,7 @@ and embedded platforms.") (synopsis "Multilingual input method framework (GTK+ support)"))) (define-public uim-qt - (package - (inherit uim) + (package/inherit uim (name "uim-qt") (inputs `(("qt" ,qtbase) @@ -6635,7 +6642,7 @@ output.") (define-public console-setup (package (name "console-setup") - (version "1.197") + (version "1.201") (source (origin (method git-fetch) @@ -6643,7 +6650,7 @@ output.") (url "https://salsa.debian.org/installer-team/console-setup.git") (commit version))) (sha256 - (base32 "0m2q30f94vd1wb2zqpiyplpgfchjlm8j41xiyxcqdjzdgqbs7l27")) + (base32 "0xkynb8d1813wph3p0sdvbpimx7zqkzh4c3mmqymp3pibcg7af5a")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments @@ -6786,3 +6793,78 @@ are easier to see and use, and Xdialog adds more functionality such as a help button and box, a treeview, an editbox, file and directory selectors, a range box, and a calendar. It uses GTK+, and will match your desktop theme.") (license license:gpl2+))) + +(define-public xvfb-run + (package + (name "xvfb-run") + (version "1.20.10-3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://debian/pool/main/x/xorg-server/" + "xorg-server_" version ".diff.gz")) + (sha256 + (base32 "08gs9ni8ss8rw4n9cql1s8q05mj517vk1vm1varj1dsx75k4j25v")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'unpack + ;; Apply the source patch to an empty directory. + (lambda* (#:key inputs #:allow-other-keys) + (let* ((source (assoc-ref inputs "source")) + (diff.gz (basename source)) + (diff (substring diff.gz 0 (string-rindex diff.gz #\.)))) + (mkdir "source") + (chdir "source") + (copy-file source diff.gz) + (invoke "gunzip" diff.gz) + (invoke "patch" "-Np1" "-i" diff) + (chdir "debian/local")))) + (delete 'configure) ; nothing to configure + (replace 'build + (lambda _ + (chmod "xvfb-run" #o755) + (substitute* "xvfb-run" + (("(\\(| )(fmt|stty|awk|kill|getopt|mktemp|touch|rm|mcookie)" + _ prefix command) + (string-append prefix (which command))) + ;; These also feature in UI messages, so be more strict. + (("(AUTHFILE |command -v |exec )(Xvfb|xauth)" + _ prefix command) + (string-append prefix (which command)))))) + (replace 'check + ;; There are no tests included. Here we test whether we can run + ;; a simple client without xvfb-run itself relying on $PATH. + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (let ((old-PATH (getenv "PATH")) + (xterm (which "xterm"))) + (unsetenv "PATH") + (invoke "./xvfb-run" xterm "-e" "true") + (setenv "PATH" old-PATH))))) + (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 "xvfb-run" bin) + (install-file "xvfb-run.1" man))))))) + (inputs + `(("util-linux" ,util-linux) ; for getopt + ("xauth" ,xauth) + ("xorg-server" ,xorg-server))) + (native-inputs + `(("xterm" ,xterm))) ; for the test + ;; This script is not part of the upstream xorg-server. It is provided only + ;; as a patch added to Debian's package. + (home-page "https://packages.debian.org/sid/xorg-server-source") + (synopsis "Run X11 client or command in a virtual X server environment") + (description + "The @command{xvfb-run} wrapper simplifies running commands and scripts +within a virtual X server environment. It sets up an X authority file or uses +an existing user-specified one, writes a cookie to it, and then starts the +@command{Xvfb} X server as a background process. It also takes care of killing +the server and cleaning up before returning the exit status of the command.") + (license (list license:x11 ; the script + license:gpl2+)))) ; the man page diff --git a/gnu/packages/zile.scm b/gnu/packages/zile.scm index 6169815520..c28bc1bdd1 100644 --- a/gnu/packages/zile.scm +++ b/gnu/packages/zile.scm @@ -120,7 +120,7 @@ default Emacs configuration, but it carries a much lighter feature set.") ,@(package-inputs zile))) (native-inputs `(("m4" ,m4) ;for 'bootstrap' - ("autoconf" ,autoconf-wrapper) + ("autoconf" ,autoconf) ("automake" ,automake) ;; For some reason, 'bootstrap' insists on having these. diff --git a/gnu/services.scm b/gnu/services.scm index 13259dfaee..ddd1bac30c 100644 --- a/gnu/services.scm +++ b/gnu/services.scm @@ -617,13 +617,21 @@ ACTIVATION-SCRIPT-TYPE." "Return a gexp that runs the activation script containing GEXPS." #~(primitive-load #$(activation-script gexps))) +(define (activation-profile-entry gexps) + "Return, as a monadic value, an entry for the activation script in the +system directory." + (mlet %store-monad ((activate (lower-object (activation-script gexps)))) + (return `(("activate" ,activate))))) + (define (second-argument a b) b) (define activation-service-type (service-type (name 'activate) (extensions (list (service-extension boot-service-type - gexps->activation-gexp))) + gexps->activation-gexp) + (service-extension system-service-type + activation-profile-entry))) (compose identity) (extend second-argument) (description diff --git a/gnu/services/authentication.scm b/gnu/services/authentication.scm index 73969a5a6d..d7efc48cd0 100644 --- a/gnu/services/authentication.scm +++ b/gnu/services/authentication.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org> ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;;; ;;; This file is part of GNU Guix. ;;; @@ -31,6 +32,7 @@ #:use-module (guix gexp) #:use-module (guix records) #:use-module (guix packages) + #:use-module (guix modules) #:use-module (ice-9 match) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) @@ -521,6 +523,16 @@ password.") (define (pam-ldap-pam-services config) (list (pam-ldap-pam-service config))) +(define %nslcd-activation + (with-imported-modules (source-module-closure '((gnu build activation))) + #~(begin + (use-modules (gnu build activation)) + (let ((rundir "/var/run/nslcd") + (user (getpwnam "nslcd"))) + (mkdir-p/perms rundir user #o755) + (when (file-exists? "/etc/nslcd.conf") + (chmod "/etc/nslcd.conf" #o400)))))) + (define nslcd-service-type (service-type (name 'nslcd) @@ -531,15 +543,7 @@ password.") (service-extension etc-service-type nslcd-etc-service) (service-extension activation-service-type - (const #~(begin - (use-modules (guix build utils)) - (let ((rundir "/var/run/nslcd") - (user (getpwnam "nslcd"))) - (mkdir-p rundir) - (chown rundir (passwd:uid user) (passwd:gid user)) - (chmod rundir #o755) - (when (file-exists? "/etc/nslcd.conf") - (chmod "/etc/nslcd.conf" #o400)))))) + (const %nslcd-activation)) (service-extension pam-root-service-type pam-ldap-pam-services) (service-extension nscd-service-type diff --git a/gnu/services/base.scm b/gnu/services/base.scm index f6a490f712..f50bcfdcb4 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -35,6 +35,7 @@ #:use-module (gnu services) #:use-module (gnu services admin) #:use-module (gnu services shepherd) + #:use-module (gnu services sysctl) #:use-module (gnu system pam) #:use-module (gnu system shadow) ; 'user-account', etc. #:use-module (gnu system uuid) @@ -2532,6 +2533,8 @@ to handle." (udev-configuration (rules (list lvm2 fuse alsa-utils crda)))) + (service sysctl-service-type) + (service special-files-service-type `(("/bin/sh" ,(file-append bash "/bin/sh")) ("/usr/bin/env" ,(file-append coreutils "/bin/env")))))) diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm index 4d5e3a1041..9de36eb1c9 100644 --- a/gnu/services/cuirass.scm +++ b/gnu/services/cuirass.scm @@ -50,17 +50,7 @@ <cuirass-remote-worker-configuration> cuirass-remote-worker-configuration cuirass-remote-worker-configuration? - cuirass-remote-worker-service-type - - <build-manifest> - build-manifest - build-manifest? - - <simple-cuirass-configuration> - simple-cuirass-configuration - simple-cuirass-configuration? - - simple-cuirass-configuration->specs)) + cuirass-remote-worker-service-type)) ;;;; Commentary: ;;; @@ -76,9 +66,11 @@ cuirass-remote-server-configuration make-cuirass-remote-server-configuration cuirass-remote-server-configuration? (backend-port cuirass-remote-server-configuration-backend-port ;int - (default #f)) + (default 5555)) + (log-port cuirass-remote-server-configuration-log-port ;int + (default 5556)) (publish-port cuirass-remote-server-configuration-publish-port ;int - (default #f)) + (default 5557)) (log-file cuirass-remote-server-log-file ;string (default "/var/log/cuirass-remote-server.log")) (cache cuirass-remote-server-configuration-cache ;string @@ -153,6 +145,7 @@ (requirement '(guix-daemon postgres postgres-roles networking)) (start #~(make-forkexec-constructor (list (string-append #$cuirass "/bin/cuirass") + "register" "--cache-directory" #$cache-directory "--specifications" #$(scheme-file "cuirass-specs.scm" specs) @@ -184,19 +177,15 @@ (requirement '(cuirass)) (start #~(make-forkexec-constructor (list (string-append #$cuirass "/bin/cuirass") - "--cache-directory" #$cache-directory + "web" "--database" #$database - "--web" - "--port" #$(number->string port) "--listen" #$host - "--interval" #$(number->string interval) + "--port" #$(number->string port) #$@(if parameters (list (string-append "--parameters=" parameters)) '()) - #$@(if use-substitutes? '("--use-substitutes") '()) - #$@(if fallback? '("--fallback") '()) #$@extra-options) #:user #$user @@ -213,7 +202,8 @@ (provision '(cuirass-remote-server)) (requirement '(avahi-daemon cuirass)) (start #~(make-forkexec-constructor - (list (string-append #$cuirass "/bin/remote-server") + (list (string-append #$cuirass "/bin/cuirass") + "remote-server" (string-append "--database=" #$database) (string-append "--cache=" #$cache) (string-append "--user=" #$user) @@ -280,8 +270,6 @@ (remote-cache (and remote-server (cuirass-remote-server-configuration-cache remote-server))) - (db (dirname - (cuirass-configuration-database config))) (user (cuirass-configuration-user config)) (log "/var/log/cuirass") (group (cuirass-configuration-group config))) @@ -290,7 +278,6 @@ (use-modules (guix build utils)) (mkdir-p #$cache) - (mkdir-p #$db) (mkdir-p #$log) (when #$remote-cache @@ -299,7 +286,6 @@ (let ((uid (passwd:uid (getpw #$user))) (gid (group:gid (getgr #$group)))) (chown #$cache uid gid) - (chown #$db uid gid) (chown #$log uid gid) (when #$remote-cache @@ -344,7 +330,7 @@ (log-file cuirass-remote-worker-log-file ;string (default "/var/log/cuirass-remote-worker.log")) (publish-port cuirass-remote-worker-configuration-publish-port ;int - (default #f)) + (default 5558)) (public-key cuirass-remote-worker-configuration-public-key ;string (default #f)) (private-key cuirass-remote-worker-configuration-private-key ;string @@ -361,7 +347,8 @@ CONFIG." (provision '(cuirass-remote-worker)) (requirement '(avahi-daemon guix-daemon networking)) (start #~(make-forkexec-constructor - (list (string-append #$cuirass "/bin/remote-worker") + (list (string-append #$cuirass "/bin/cuirass") + "remote-worker" (string-append "--workers=" #$(number->string workers)) #$@(if server @@ -399,73 +386,3 @@ CONFIG." cuirass-remote-worker-shepherd-service))) (description "Run the Cuirass remote build worker service."))) - -(define-record-type* <build-manifest> - build-manifest make-build-manifest - build-manifest? - (channel-name build-manifest-channel-name) ;symbol - (manifest build-manifest-manifest)) ;string - -(define-record-type* <simple-cuirass-configuration> - simple-cuirass-configuration make-simple-cuirass-configuration - simple-cuirass-configuration? - (build simple-cuirass-configuration-build - (default 'all)) ;symbol or list of <build-manifest> - (channels simple-cuirass-configuration-channels - (default %default-channels)) ;list of <channel> - (non-package-channels simple-cuirass-configuration-package-channels - (default '())) ;list of channels name - (systems simple-cuirass-configuration-systems - (default (list (%current-system))))) ;list of strings - -(define* (simple-cuirass-configuration->specs config) - (define (format-name name) - (if (string? name) - name - (symbol->string name))) - - (define (format-manifests build-manifests) - (map (lambda (build-manifest) - (match-record build-manifest <build-manifest> - (channel-name manifest) - (cons (format-name channel-name) manifest))) - build-manifests)) - - (define (channel->input channel) - (let ((name (channel-name channel)) - (url (channel-url channel)) - (branch (channel-branch channel))) - `((#:name . ,(format-name name)) - (#:url . ,url) - (#:load-path . ".") - (#:branch . ,branch) - (#:no-compile? #t)))) - - (define (package-path channels non-package-channels) - (filter-map (lambda (channel) - (let ((name (channel-name channel))) - (and (not (member name non-package-channels)) - (not (eq? name 'guix)) - (format-name name)))) - channels)) - - (define (config->spec config) - (match-record config <simple-cuirass-configuration> - (build channels non-package-channels systems) - `((#:name . "simple-config") - (#:load-path-inputs . ("guix")) - (#:package-path-inputs . ,(package-path channels - non-package-channels)) - (#:proc-input . "guix") - (#:proc-file . "build-aux/cuirass/gnu-system.scm") - (#:proc . cuirass-jobs) - (#:proc-args . ((systems . ,systems) - ,@(if (eq? build 'all) - '() - `((subset . "manifests") - (manifests . ,(format-manifests build)))))) - (#:inputs . ,(map channel->input channels)) - (#:build-outputs . ()) - (#:priority . 1)))) - - #~(list '#$(config->spec config))) diff --git a/gnu/services/cups.scm b/gnu/services/cups.scm index 17ed04e58b..20e3917b93 100644 --- a/gnu/services/cups.scm +++ b/gnu/services/cups.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;;; ;;; This file is part of GNU Guix. ;;; @@ -31,6 +32,7 @@ #:use-module (guix packages) #:use-module (guix records) #:use-module (guix gexp) + #:use-module (guix modules) #:use-module (ice-9 match) #:use-module ((srfi srfi-1) #:select (append-map find)) #:export (cups-service-type @@ -871,13 +873,11 @@ IPP specifications.") (define %cups-activation ;; Activation gexp. - (with-imported-modules '((guix build utils)) + (with-imported-modules (source-module-closure '((gnu build activation) + (guix build utils))) #~(begin - (use-modules (guix build utils)) - (define (mkdir-p/perms directory owner perms) - (mkdir-p directory) - (chown directory (passwd:uid owner) (passwd:gid owner)) - (chmod directory perms)) + (use-modules (gnu build activation) + (guix build utils)) (define (build-subject parameters) (string-concatenate (map (lambda (pair) diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm index 979f3dd6c8..a841e7a50e 100644 --- a/gnu/services/databases.scm +++ b/gnu/services/databases.scm @@ -79,13 +79,6 @@ memcached-configuration-udp-port memcached-configuration-additional-options - mongodb-configuration - mongodb-configuration? - mongodb-configuration-mongodb - mongodb-configuration-config-file - mongodb-configuration-data-directory - mongodb-service-type - mysql-service mysql-service-type mysql-configuration @@ -523,87 +516,6 @@ created after the PostgreSQL database is started."))) ;;; -;;; MongoDB -;;; - -(define %default-mongodb-configuration-file - (plain-file - "mongodb.yaml" - "# GNU Guix: MongoDB default configuration file -processManagement: - pidFilePath: /var/run/mongodb/pid -storage: - dbPath: /var/lib/mongodb -")) - - -(define-record-type* <mongodb-configuration> - mongodb-configuration make-mongodb-configuration - mongodb-configuration? - (mongodb mongodb-configuration-mongodb - (default mongodb)) - (config-file mongodb-configuration-config-file - (default %default-mongodb-configuration-file)) - (data-directory mongodb-configuration-data-directory - (default "/var/lib/mongodb"))) - -(define %mongodb-accounts - (list (user-group (name "mongodb") (system? #t)) - (user-account - (name "mongodb") - (group "mongodb") - (system? #t) - (comment "Mongodb server user") - (home-directory "/var/lib/mongodb") - (shell (file-append shadow "/sbin/nologin"))))) - -(define mongodb-activation - (match-lambda - (($ <mongodb-configuration> mongodb config-file data-directory) - #~(begin - (use-modules (guix build utils)) - (let ((user (getpwnam "mongodb"))) - (for-each - (lambda (directory) - (mkdir-p directory) - (chown directory - (passwd:uid user) (passwd:gid user))) - '("/var/run/mongodb" #$data-directory))))))) - -(define mongodb-shepherd-service - (match-lambda - (($ <mongodb-configuration> mongodb config-file data-directory) - (shepherd-service - (provision '(mongodb)) - (documentation "Run the Mongodb daemon.") - (requirement '(user-processes loopback)) - (start #~(make-forkexec-constructor - `(,(string-append #$mongodb "/bin/mongod") - "--config" - ,#$config-file) - #:user "mongodb" - #:group "mongodb" - #:pid-file "/var/run/mongodb/pid" - #:log-file "/var/log/mongodb.log")) - (stop #~(make-kill-destructor)))))) - -(define mongodb-service-type - (service-type - (name 'mongodb) - (description "Run the MongoDB document database server.") - (extensions - (list (service-extension shepherd-root-service-type - (compose list - mongodb-shepherd-service)) - (service-extension activation-service-type - mongodb-activation) - (service-extension account-service-type - (const %mongodb-accounts)))) - (default-value - (mongodb-configuration)))) - - -;;; ;;; MySQL. ;;; diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm index e015d3f68d..af1a1e4c3a 100644 --- a/gnu/services/dbus.scm +++ b/gnu/services/dbus.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> +;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,6 +29,7 @@ #:use-module (guix gexp) #:use-module ((guix packages) #:select (package-name)) #:use-module (guix records) + #:use-module (guix modules) #:use-module (srfi srfi-1) #:use-module (ice-9 match) #:export (dbus-configuration @@ -161,24 +163,23 @@ includes the @code{etc/dbus-1/system.d} directories of each package listed in (define (dbus-activation config) "Return an activation gexp for D-Bus using @var{config}." - #~(begin - (use-modules (guix build utils)) - - (mkdir-p "/var/run/dbus") - - (let ((user (getpwnam "messagebus"))) - (chown "/var/run/dbus" - (passwd:uid user) (passwd:gid user)) - - ;; This directory contains the daemon's socket so it must be - ;; world-readable. - (chmod "/var/run/dbus" #o755)) - - (unless (file-exists? "/etc/machine-id") - (format #t "creating /etc/machine-id...~%") - (invoke (string-append #$(dbus-configuration-dbus config) - "/bin/dbus-uuidgen") - "--ensure=/etc/machine-id")))) + (with-imported-modules (source-module-closure + '((gnu build activation) + (guix build utils))) + #~(begin + (use-modules (gnu build activation) + (guix build utils)) + + (let ((user (getpwnam "messagebus"))) + ;; This directory contains the daemon's socket so it must be + ;; world-readable. + (mkdir-p/perms "/var/run/dbus" user #o755)) + + (unless (file-exists? "/etc/machine-id") + (format #t "creating /etc/machine-id...~%") + (invoke (string-append #$(dbus-configuration-dbus config) + "/bin/dbus-uuidgen") + "--ensure=/etc/machine-id"))))) (define dbus-shepherd-service (match-lambda diff --git a/gnu/services/dns.scm b/gnu/services/dns.scm index d4aefe6285..55211cb08f 100644 --- a/gnu/services/dns.scm +++ b/gnu/services/dns.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com> +;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,6 +29,7 @@ #:use-module (guix packages) #:use-module (guix records) #:use-module (guix gexp) + #:use-module (guix modules) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) @@ -607,17 +609,14 @@ (shell (file-append shadow "/sbin/nologin"))))) (define (knot-activation config) - #~(begin - (use-modules (guix build utils)) - (define (mkdir-p/perms directory owner perms) - (mkdir-p directory) - (chown directory (passwd:uid owner) (passwd:gid owner)) - (chmod directory perms)) - (mkdir-p/perms #$(knot-configuration-run-directory config) - (getpwnam "knot") #o755) - (mkdir-p/perms "/var/lib/knot" (getpwnam "knot") #o755) - (mkdir-p/perms "/var/lib/knot/keys" (getpwnam "knot") #o755) - (mkdir-p/perms "/var/lib/knot/keys/keys" (getpwnam "knot") #o755))) + (with-imported-modules (source-module-closure '((gnu build activation))) + #~(begin + (use-modules (gnu build activation)) + (mkdir-p/perms #$(knot-configuration-run-directory config) + (getpwnam "knot") #o755) + (mkdir-p/perms "/var/lib/knot" (getpwnam "knot") #o755) + (mkdir-p/perms "/var/lib/knot/keys" (getpwnam "knot") #o755) + (mkdir-p/perms "/var/lib/knot/keys/keys" (getpwnam "knot") #o755)))) (define (knot-shepherd-service config) (let* ((config-file (knot-config-file config)) diff --git a/gnu/services/sysctl.scm b/gnu/services/sysctl.scm index eb7a61b2a9..aaea7cc30d 100644 --- a/gnu/services/sysctl.scm +++ b/gnu/services/sysctl.scm @@ -25,20 +25,26 @@ #:use-module (srfi srfi-1) #:use-module (ice-9 match) #:export (sysctl-configuration - sysctl-service-type)) + sysctl-service-type + %default-sysctl-settings)) ;;; ;;; System Control Service. ;;; +(define %default-sysctl-settings + ;; Default kernel parameters enabled with sysctl. + '(("fs.protected_hardlinks" . "1") + ("fs.protected_symlinks" . "1"))) + (define-record-type* <sysctl-configuration> sysctl-configuration make-sysctl-configuration sysctl-configuration? (sysctl sysctl-configuration-sysctl ; path of the 'sysctl' command (default (file-append procps "/sbin/sysctl"))) (settings sysctl-configuration-settings ; alist of string pairs - (default '()))) + (default %default-sysctl-settings))) (define (sysctl-configuration-settings->sysctl.conf settings) "Return a file for @command{sysctl} to set kernel parameters as specified by diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm index a45da14a80..36e9feb05c 100644 --- a/gnu/services/virtualization.scm +++ b/gnu/services/virtualization.scm @@ -554,13 +554,14 @@ potential infinite waits blocking libvirt.")) ;;; ;; Platforms that QEMU can emulate. -(define-record-type <qemu-platform> - (qemu-platform name family magic mask) +(define-record-type* <qemu-platform> + qemu-platform make-qemu-platform qemu-platform? (name qemu-platform-name) ;string (family qemu-platform-family) ;string (magic qemu-platform-magic) ;bytevector - (mask qemu-platform-mask)) ;bytevector + (mask qemu-platform-mask) ;bytevector + (flags qemu-platform-flags (default "F"))) ;string (define-syntax bv (lambda (s) @@ -577,125 +578,173 @@ potential infinite waits blocking libvirt.")) ;;; 'scripts/qemu-binfmt-conf.sh' in QEMU. (define %i386 - (qemu-platform "i386" "i386" - (bv "\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03\x00") - (bv "\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff"))) + (qemu-platform + (name "i386") + (family "i386") + (magic (bv "\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03\x00")) + (mask (bv "\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff")))) (define %i486 - (qemu-platform "i486" "i386" - (bv "\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x06\x00") - (bv "\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff"))) + (qemu-platform + (name "i486") + (family "i386") + (magic (bv "\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x06\x00")) + (mask (bv "\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff")))) (define %alpha - (qemu-platform "alpha" "alpha" - (bv "\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x26\x90") - (bv "\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff"))) + (qemu-platform + (name "alpha") + (family "alpha") + (magic (bv "\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x26\x90")) + (mask (bv "\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff")))) (define %arm - (qemu-platform "arm" "arm" - (bv "\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00") - (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff"))) + (qemu-platform + (name "arm") + (family "arm") + (magic (bv "\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff")))) (define %armeb - (qemu-platform "armeb" "arm" - (bv "\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28") - (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff"))) + (qemu-platform + (name "armeb") + (family "arm") + (magic (bv "\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff")))) (define %sparc - (qemu-platform "sparc" "sparc" - (bv "\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02") - (bv "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff"))) + (qemu-platform + (name "sparc") + (family "sparc") + (magic (bv "\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff")))) (define %sparc32plus - (qemu-platform "sparc32plus" "sparc" - (bv "\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x12") - (bv "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff"))) + (qemu-platform + (name "sparc32plus") + (family "sparc") + (magic (bv "\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x12")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff")))) (define %ppc - (qemu-platform "ppc" "ppc" - (bv "\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14") - (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff"))) + (qemu-platform + (name "ppc") + (family "ppc") + (magic (bv "\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff")))) (define %ppc64 - (qemu-platform "ppc64" "ppc" - (bv "\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x15") - (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff"))) + (qemu-platform + (name "ppc64") + (family "ppc") + (magic (bv "\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x15")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff")))) (define %ppc64le - (qemu-platform "ppc64le" "ppcle" - (bv "\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x15\x00") - (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\x00"))) + (qemu-platform + (name "ppc64le") + (family "ppcle") + (magic (bv "\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x15\x00")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\x00")))) (define %m68k - (qemu-platform "m68k" "m68k" - (bv "\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x04") - (bv "\xff\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff"))) + (qemu-platform + (name "m68k") + (family "m68k") + (magic (bv "\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x04")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff")))) ;; XXX: We could use the other endianness on a MIPS host. (define %mips - (qemu-platform "mips" "mips" - (bv "\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08") - (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff"))) + (qemu-platform + (name "mips") + (family "mips") + (magic (bv "\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff")))) (define %mipsel - (qemu-platform "mipsel" "mips" - (bv "\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00") - (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff"))) + (qemu-platform + (name "mipsel") + (family "mips") + (magic (bv "\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff")))) (define %mipsn32 - (qemu-platform "mipsn32" "mips" - (bv "\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08") - (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff"))) + (qemu-platform + (name "mipsn32") + (family "mips") + (magic (bv "\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff")))) (define %mipsn32el - (qemu-platform "mipsn32el" "mips" - (bv "\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00") - (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff"))) + (qemu-platform + (name "mipsn32el") + (family "mips") + (magic (bv "\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff")))) (define %mips64 - (qemu-platform "mips64" "mips" - (bv "\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08") - (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff"))) + (qemu-platform + (name "mips64") + (family "mips") + (magic (bv "\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff")))) (define %mips64el - (qemu-platform "mips64el" "mips" - (bv "\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00") - (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff"))) + (qemu-platform + (name "mips64el") + (family "mips") + (magic (bv "\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff")))) (define %riscv32 - (qemu-platform "riscv32" "riscv" - (bv "\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xf3\x00") - (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff"))) + (qemu-platform + (name "riscv32") + (family "riscv") + (magic (bv "\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xf3\x00")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff")))) (define %riscv64 - (qemu-platform "riscv64" "riscv" - (bv "\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xf3\x00") - (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff"))) + (qemu-platform + (name "riscv64") + (family "riscv") + (magic (bv "\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xf3\x00")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff")))) (define %sh4 - (qemu-platform "sh4" "sh4" - (bv "\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a\x00") - (bv "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff"))) + (qemu-platform + (name "sh4") + (family "sh4") + (magic (bv "\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a\x00")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff")))) (define %sh4eb - (qemu-platform "sh4eb" "sh4" - (bv "\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a") - (bv "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff"))) + (qemu-platform + (name "sh4eb") + (family "sh4") + (magic (bv "\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff")))) (define %s390x - (qemu-platform "s390x" "s390x" - (bv "\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x16") - (bv "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff"))) + (qemu-platform + (name "s390x") + (family "s390x") + (magic (bv "\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x16")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff")))) (define %aarch64 - (qemu-platform "aarch64" "arm" - (bv "\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00") - (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff"))) + (qemu-platform + (name "aarch64") + (family "arm") + (magic (bv "\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff")))) (define %hppa - (qemu-platform "hppa" "hppa" - (bv "\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x0f") - (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff"))) + (qemu-platform + (name "hppa") + (family "hppa") + (magic (bv "\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x0f")) + (mask (bv "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff")))) (define %qemu-platforms (list %i386 %i486 %alpha %arm %sparc32plus %ppc %ppc64 %ppc64le %m68k @@ -715,9 +764,7 @@ potential infinite waits blocking libvirt.")) (qemu qemu-binfmt-configuration-qemu (default qemu)) (platforms qemu-binfmt-configuration-platforms - (default '())) ;safest default - (guix-support? qemu-binfmt-configuration-guix-support? - (default #t))) + (default '()))) ;safest default (define (qemu-platform->binfmt qemu platform) "Return a gexp that evaluates to a binfmt string for PLATFORM, using the @@ -733,14 +780,13 @@ given QEMU package." (bytevector->u8-list bv)))) (match platform - (($ <qemu-platform> name family magic mask) + (($ <qemu-platform> name family magic mask flags) ;; See 'Documentation/binfmt_misc.txt' in the kernel. #~(string-append ":qemu-" #$name ":M::" #$(bytevector->binfmt-string magic) ":" #$(bytevector->binfmt-string mask) - ":" #$(file-append qemu "/bin/qemu-" name) - ":" ;FLAGS go here - )))) + ":" #$qemu:static "/bin/qemu-" #$name + ":" #$flags)))) (define %binfmt-mount-point (file-system-mount-point %binary-format-file-system)) @@ -779,19 +825,6 @@ given QEMU package." '#$(map qemu-platform-name platforms)) #f))))))) -(define qemu-binfmt-guix-chroot - (match-lambda - ;; Add QEMU and its dependencies to the guix-daemon chroot so that our - ;; binfmt_misc handlers work in the chroot (otherwise 'execve' would fail - ;; with ENOENT.) - ;; - ;; The 'F' flag of binfmt_misc is meant to address this problem by loading - ;; the interpreter upfront rather than lazily, but apparently that is - ;; insufficient (perhaps it loads the 'qemu-ARCH' binary upfront but looks - ;; up its dependencies lazily?). - (($ <qemu-binfmt-configuration> qemu platforms guix?) - (if guix? (list qemu) '())))) - (define qemu-binfmt-service-type ;; TODO: Make a separate binfmt_misc service out of this? (service-type (name 'qemu-binfmt) @@ -800,9 +833,7 @@ given QEMU package." (const (list %binary-format-file-system))) (service-extension shepherd-root-service-type - qemu-binfmt-shepherd-services) - (service-extension guix-service-type - qemu-binfmt-guix-chroot))) + qemu-binfmt-shepherd-services))) (default-value (qemu-binfmt-configuration)) (description "This service supports transparent emulation of binaries diff --git a/gnu/tests/cuirass.scm b/gnu/tests/cuirass.scm deleted file mode 100644 index 04a7a71dcf..0000000000 --- a/gnu/tests/cuirass.scm +++ /dev/null @@ -1,330 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2020, 2021 Mathieu Othacehe <othacehe@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 tests cuirass) - #:use-module (gnu tests) - #:use-module (gnu system) - #:use-module (gnu system vm) - #:use-module (gnu system install) - #:use-module (gnu packages databases) - #:use-module (gnu packages guile) - #:use-module (gnu packages version-control) - #:use-module (gnu services) - #:use-module (gnu services avahi) - #:use-module (gnu services base) - #:use-module (gnu services cuirass) - #:use-module (gnu services databases) - #:use-module (gnu services networking) - #:use-module (gnu system nss) - #:use-module (guix channels) - #:use-module (guix gexp) - #:use-module (guix store) - #:export (%cuirass-test - %cuirass-remote-test - %cuirass-simple-test)) - -(define %derivation-file - (scheme-file - "derivation.scm" - '(begin - (use-modules (guix) - (srfi srfi-1) - (ice-9 match)) - - (define (derivation->alist store drv) - `((#:derivation . ,(derivation-file-name drv)) - (#:log . ,(log-file store (derivation-file-name drv))) - (#:outputs . ,(filter-map (lambda (res) - (match res - ((name . path) - `(,name . ,path)))) - (derivation->output-paths drv))) - (#:nix-name . ,(derivation-name drv)) - (#:system . ,(derivation-system drv)) - (#:max-silent-time . 3600) - (#:timeout . 3600))) - - (define (cuirass-jobs store arguments) - (let* ((file (plain-file "test" "this is a test derivation")) - (job-name "test-job") - (drv (run-with-store store - (gexp->derivation - job-name - #~(begin - (mkdir #$output) - (symlink #$file - (string-append #$output "/file"))))))) - (list (lambda () - `((#:job-name . ,job-name) - ,@(derivation->alist store drv))))))))) - -(define git-service - ;; Create a Git repository to host Cuirass' specification. - (simple-service - 'create-git-directory activation-service-type - #~(begin - (let* ((git (string-append #$git "/bin/git")) - (main "/tmp/cuirass-main") - (file (string-append main "/build-aux/cuirass/gnu-system.scm"))) - (mkdir-p (dirname file)) - (with-directory-excursion main - (copy-file #$%derivation-file file) - (invoke git "config" "--global" "user.email" - "charlie@example.org") - (invoke git "config" "--global" "user.name" "A U Thor") - (invoke git "init") - (invoke git "add" ".") - (invoke git "commit" "-m" "That's a commit.")))))) - -(define cow-service - ;; The Guix-daemon & Cuirass will complain if the store is - ;; read-only. Create a store overlay to solve this issue. - (simple-service - 'mount-cow-store activation-service-type - #~(begin - (use-modules (guix build syscalls) - (guix build utils)) - (mkdir-p "/rw-store") - (mount "none" "/rw-store" "tmpfs") - - (mkdir-p "/rw-store/upper") - (mkdir-p "/rw-store/work") - (mount "none" "/gnu/store" "overlay" 0 - "lowerdir=/gnu/store,upperdir=/rw-store/upper,workdir=/rw-store/work")))) - -(define %cuirass-specs - #~(list - '((#:name . "test") - (#:load-path-inputs . ()) - (#:package-path-inputs . ()) - (#:proc-input . "main") - (#:proc-file . "build-aux/cuirass/gnu-system.scm") - (#:proc . cuirass-jobs) - (#:proc-args . ()) - (#:inputs . (((#:name . "main") - (#:url . "file:///tmp/cuirass-main/") - (#:load-path . ".") - (#:branch . "master") - (#:no-compile? . #t)))) - (#:build-outputs . ()) - (#:priority . 1)))) - -(define* (cuirass-services #:key remote-build?) - (list - (service cuirass-service-type - (cuirass-configuration - (specifications %cuirass-specs) - (remote-server (and remote-build? - (cuirass-remote-server-configuration))) - (host "0.0.0.0") - (use-substitutes? #t))))) - -(define (run-cuirass-test name os) - (define os* - (let ((modules '((gnu services herd) - (guix combinators) - (guix build syscalls) - (guix build utils)))) - (marionette-operating-system - os - #:imported-modules modules))) - - (define cuirass-web-port 8081) - (define forward-port 5000) - - (define vm - (virtual-machine - (operating-system os*) - (memory-size 1024) - (port-forwardings `((,forward-port . ,cuirass-web-port))))) - - (define test - (with-extensions (list guile-json-4) - (with-imported-modules '((gnu build marionette)) - #~(begin - (use-modules (srfi srfi-11) (srfi srfi-64) - (gnu build marionette) - (ice-9 match) - (ice-9 rdelim) - (json) - (rnrs bytevectors) - (web client) (web response)) - - (define marionette - (make-marionette (list #$vm))) - - (define (query path) - (http-get - (format #f "http://localhost:~a~a" - #$(number->string forward-port) - path))) - - (define* (retry f #:key times delay) - (let loop ((attempt 1)) - (let ((result (f))) - (cond - (result result) - (else - (if (>= attempt times) - #f - (begin - (sleep delay) - (loop (+ 1 attempt))))))))) - - (mkdir #$output) - (chdir #$output) - - (test-begin "cuirass") - - ;; XXX: Shepherd reads the config file *before* binding its - ;; control socket, so /var/run/shepherd/socket might not exist yet - ;; when the 'marionette' service is started. - (test-assert "shepherd socket ready" - (marionette-eval - `(begin - (use-modules (gnu services herd)) - (let loop ((i 10)) - (cond ((file-exists? (%shepherd-socket-file)) - #t) - ((> i 0) - (sleep 1) - (loop (- i 1))) - (else - 'failure)))) - marionette)) - - ;; Wait for cuirass to be up and running. - (test-assert "cuirass running" - (marionette-eval - '(begin - (use-modules (gnu services herd)) - (start-service 'cuirass) - #t) - marionette)) - - (test-assert "cuirass-web running" - (begin - (wait-for-tcp-port #$cuirass-web-port marionette) - (retry - (lambda () - (let-values (((response text) - (query "/"))) - (eq? (response-code response) 200))) - #:times 5 - #:delay 5))) - - (test-assert "cuirass-web evaluation" - (begin - (retry - (lambda () - (let-values (((response text) - (query "/api/evaluation?id=1"))) - (let ((result - (false-if-exception - (json-string->scm - (utf8->string text))))) - (eq? (and result - (assoc-ref result "id")) - 1)))) - #:times 5 - #:delay 5))) - - ;; Even though there's a store overlay, the Guix database is not - ;; initialized, meaning that we won't be able to perform the - ;; build. Check at least that it is queued. - (test-assert "cuirass-web build queued" - (begin - (retry - (lambda () - (let-values (((response text) - (query "/api/queue?nr=1"))) - (let ((result - (json-string->scm - (utf8->string text)))) - (match (vector->list result) - ((build) - (string=? (assoc-ref build "job") "test-job")) - (else #f))))) - #:times 5 - #:delay 10))) - - (test-end) - (exit (= (test-runner-fail-count (test-runner-current)) 0)))))) - - (gexp->derivation name test)) - -(define %cuirass-test - (let ((os (operating-system - (inherit %simple-os) - (services - (append (list cow-service - (service dhcp-client-service-type) - git-service) - (cuirass-services) - (operating-system-user-services %simple-os)))))) - (system-test - (name "cuirass") - (description "Connect to a Cuirass server.") - (value - (run-cuirass-test name os))))) - -(define %cuirass-remote-test - (let ((os (operating-system - (inherit %simple-os) - (name-service-switch %mdns-host-lookup-nss) - (services - (append (list (service avahi-service-type) - cow-service - (service dhcp-client-service-type) - git-service) - (cuirass-services #:remote-build? #t) - (operating-system-user-services %simple-os)))))) - (system-test - (name "cuirass-remote") - (description "Connect to a Cuirass server with remote build.") - (value (run-cuirass-test name os))))) - -(define simple-cuirass-service - (service cuirass-service-type - (cuirass-configuration - (specifications - (simple-cuirass-configuration->specs - (simple-cuirass-configuration - (build 'all) - (channels - (list (channel - (name 'guix) - (url "file:///tmp/cuirass-main/"))))))) - (host "0.0.0.0") - (use-substitutes? #t)))) - -(define %cuirass-simple-test - (let ((os (operating-system - (inherit %simple-os) - (services - (append - (list cow-service - (service dhcp-client-service-type) - git-service - simple-cuirass-service) - (operating-system-user-services %simple-os)))))) - (system-test - (name "cuirass-simple") - (description "Connect to a simple Cuirass server.") - (value - (run-cuirass-test name os))))) diff --git a/gnu/tests/databases.scm b/gnu/tests/databases.scm index e831d69f5a..4bfe4ee282 100644 --- a/gnu/tests/databases.scm +++ b/gnu/tests/databases.scm @@ -30,7 +30,6 @@ #:use-module (guix gexp) #:use-module (guix store) #:export (%test-memcached - %test-mongodb %test-postgresql %test-mysql)) @@ -127,88 +126,6 @@ (description "Connect to a running MEMCACHED server.") (value (run-memcached-test)))) -(define %mongodb-os - (operating-system - (inherit - (simple-operating-system - (service dhcp-client-service-type) - (service mongodb-service-type))) - (packages (cons* mongodb - %base-packages)))) - -(define* (run-mongodb-test #:optional (port 27017)) - "Run tests in %MONGODB-OS, forwarding PORT." - (define os - (marionette-operating-system - %mongodb-os - #:imported-modules '((gnu services herd) - (guix combinators)))) - - (define vm - (virtual-machine - (operating-system os) - (memory-size 1024) - (disk-image-size (* 1024 (expt 2 20))) - (port-forwardings `((27017 . ,port))))) - - (define test - (with-imported-modules '((gnu build marionette)) - #~(begin - (use-modules (srfi srfi-11) (srfi srfi-64) - (gnu build marionette) - (ice-9 popen) - (ice-9 rdelim)) - - (define marionette - (make-marionette (list #$vm))) - - (mkdir #$output) - (chdir #$output) - - (test-begin "mongodb") - - (test-assert "service running" - (marionette-eval - '(begin - (use-modules (gnu services herd)) - (match (start-service 'mongodb) - (#f #f) - (('service response-parts ...) - (match (assq-ref response-parts 'running) - ((pid) (number? pid)))))) - marionette)) - - (test-eq "test insert" - 0 - (system* (string-append #$mongodb "/bin/mongo") - "test" - "--eval" - "db.testCollection.insert({data: 'test-data'})")) - - (test-equal "test find" - "test-data" - (let* ((port (open-pipe* - OPEN_READ - (string-append #$mongodb "/bin/mongo") - "test" - "--quiet" - "--eval" - "db.testCollection.findOne().data")) - (output (read-line port)) - (status (close-pipe port))) - output)) - - (test-end) - (exit (= (test-runner-fail-count (test-runner-current)) 0))))) - - (gexp->derivation "mongodb-test" test)) - -(define %test-mongodb - (system-test - (name "mongodb") - (description "Connect to a running MONGODB server.") - (value (run-mongodb-test)))) - ;;; ;;; The PostgreSQL service. diff --git a/guix/build-system/cargo.scm b/guix/build-system/cargo.scm index ed69746a3b..0c76ba9355 100644 --- a/guix/build-system/cargo.scm +++ b/guix/build-system/cargo.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> +;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -77,8 +78,10 @@ to NAME and VERSION." (vendor-dir "guix-vendor") (cargo-build-flags ''("--release")) (cargo-test-flags ''("--release")) + (cargo-package-flags ''("--no-metadata" "--no-verify")) (features ''()) (skip-build? #f) + (install-source? #t) (phases '(@ (guix build cargo-build-system) %standard-phases)) (outputs '("out")) @@ -106,8 +109,10 @@ to NAME and VERSION." #:vendor-dir ,vendor-dir #:cargo-build-flags ,cargo-build-flags #:cargo-test-flags ,cargo-test-flags + #:cargo-package-flags ,cargo-package-flags #:features ,features #:skip-build? ,skip-build? + #:install-source? ,install-source? #:tests? ,(and tests? (not skip-build?)) #:phases ,phases #:outputs %outputs diff --git a/guix/build-system/go.scm b/guix/build-system/go.scm index f8ebaefb27..0e2c1cd2ee 100644 --- a/guix/build-system/go.scm +++ b/guix/build-system/go.scm @@ -26,9 +26,12 @@ #:use-module (guix build-system gnu) #:use-module (guix packages) #:use-module (ice-9 match) + #:use-module (ice-9 regex) #:export (%go-build-system-modules go-build - go-build-system)) + go-build-system + + go-version->git-ref)) ;; Commentary: ;; @@ -37,6 +40,36 @@ ;; ;; Code: +(define %go-version-rx + (make-regexp (string-append + "(v?[0-9]\\.[0-9]\\.[0-9])" ;"v" prefix can be omitted in version prefix + "(-|-pre\\.0\\.|-0\\.)" ;separator + "([0-9]{14})-" ;timestamp + "([0-9A-Fa-f]{12})"))) ;commit hash + +(define (go-version->git-ref version) + "Parse VERSION, a \"pseudo-version\" as defined at +<https://golang.org/ref/mod#pseudo-versions>, and extract the commit hash from +it, defaulting to full VERSION if a pseudo-version pattern is not recognized." + ;; A module version like v1.2.3 is introduced by tagging a revision in the + ;; underlying source repository. Untagged revisions can be referred to + ;; using a "pseudo-version" like v0.0.0-yyyymmddhhmmss-abcdefabcdef, where + ;; the time is the commit time in UTC and the final suffix is the prefix of + ;; the commit hash (see: https://golang.org/ref/mod#pseudo-versions). + (let* ((version + ;; If a source code repository has a v2.0.0 or later tag for a file + ;; tree with no go.mod, the version is considered to be part of the + ;; v1 module's available versions and is given an +incompatible + ;; suffix + ;; (see:https://golang.org/cmd/go/#hdr-Module_compatibility_and_semantic_versioning). + (if (string-suffix? "+incompatible" version) + (string-drop-right version 13) + version)) + (match (regexp-exec %go-version-rx version))) + (if match + (match:substring match 4) + version))) + (define %go-build-system-modules ;; Build-side modules imported and used by default. `((guix build go-build-system) diff --git a/guix/build-system/node.scm b/guix/build-system/node.scm index 05c24c47d5..a8c5eed09b 100644 --- a/guix/build-system/node.scm +++ b/guix/build-system/node.scm @@ -18,8 +18,6 @@ (define-module (guix build-system node) #:use-module (guix store) - #:use-module (guix build json) - #:use-module (guix build union) #:use-module (guix utils) #:use-module (guix packages) #:use-module (guix derivations) diff --git a/guix/build-system/python.scm b/guix/build-system/python.scm index 2bb6fa87ca..9f3159a960 100644 --- a/guix/build-system/python.scm +++ b/guix/build-system/python.scm @@ -105,8 +105,7 @@ pre-defined variants." ;; Otherwise build the new package object graph. ((eq? (package-build-system p) python-build-system) - (package - (inherit p) + (package/inherit p (location (package-location p)) (name (let ((name (package-name p))) (string-append new-prefix @@ -138,8 +137,7 @@ pre-defined variants." (define (strip-python2-variant p) "Remove the 'python2-variant' property from P." - (package - (inherit p) + (package/inherit p (properties (alist-delete 'python2-variant (package-properties p))))) (define* (lower name diff --git a/guix/build/cargo-build-system.scm b/guix/build/cargo-build-system.scm index 1d21b33895..0a95672b00 100644 --- a/guix/build/cargo-build-system.scm +++ b/guix/build/cargo-build-system.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com> -;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; Copyright © 2020 Marius Bakke <marius@gnu.org> ;;; @@ -73,6 +73,44 @@ Cargo.toml file present at its root." " | cut -d/ -f2" " | grep -q '^Cargo.toml$'"))))) +(define* (unpack-rust-crates #:key inputs vendor-dir #:allow-other-keys) + (define (inputs->rust-inputs inputs) + "Filter using the label part from INPUTS." + (filter (lambda (input) + (match input + ((name . _) (rust-package? name)))) + inputs)) + (define (inputs->directories inputs) + "Extract the directory part from INPUTS." + (match inputs + (((names . directories) ...) + directories))) + + (let ((rust-inputs (inputs->directories (inputs->rust-inputs inputs)))) + (unless (null? rust-inputs) + (mkdir-p "target/package") + (mkdir-p vendor-dir) + ;; TODO: copy only regular inputs to target/package, not native-inputs. + (for-each + (lambda (input-crate) + (for-each + (lambda (packaged-crate) + (unless + (file-exists? + (string-append "target/package/" (basename packaged-crate))) + (install-file packaged-crate "target/package/"))) + (find-files + (string-append input-crate "/share/cargo/registry") "\\.crate$"))) + (delete-duplicates rust-inputs)) + + (for-each (lambda (crate) + (invoke "tar" "xzf" crate "-C" vendor-dir)) + (find-files "target/package" "\\.crate$")))) + #t) + +(define (rust-package? name) + (string-prefix? "rust-" name)) + (define* (configure #:key inputs (vendor-dir "guix-vendor") #:allow-other-keys) @@ -170,9 +208,27 @@ directory = '" port) (apply invoke "cargo" "test" cargo-test-flags) #t)) -(define* (install #:key inputs outputs skip-build? features #:allow-other-keys) +(define* (package #:key + install-source? + (cargo-package-flags '("--no-metadata" "--no-verify")) + #:allow-other-keys) + "Run 'cargo-package' for a given Cargo package." + (if install-source? + (apply invoke `("cargo" "package" ,@cargo-package-flags)) + (format #t "Not installing cargo sources, skipping `cargo package`.~%")) + #t) + +(define* (install #:key + inputs + outputs + skip-build? + install-source? + features + #:allow-other-keys) "Install a given Cargo package." - (let* ((out (assoc-ref outputs "out"))) + (let* ((out (assoc-ref outputs "out")) + (registry (string-append out "/share/cargo/registry")) + (sources (string-append out "/share/cargo/src"))) (mkdir-p out) ;; Make cargo reuse all the artifacts we just built instead @@ -186,6 +242,18 @@ directory = '" port) (invoke "cargo" "install" "--no-track" "--path" "." "--root" out "--features" (string-join features))) + (when install-source? + ;; Install crate tarballs and unpacked sources for later use. + ;; TODO: Is there a better format/directory for these files? + (mkdir-p sources) + (for-each (lambda (crate) + (install-file crate registry)) + (find-files "target/package" "\\.crate$")) + + (for-each (lambda (crate) + (invoke "tar" "xzf" crate "-C" sources)) + (find-files registry "\\.crate$"))) + #t)) (define %standard-phases @@ -195,6 +263,8 @@ directory = '" port) (replace 'build build) (replace 'check check) (replace 'install install) + (add-after 'build 'package package) + (add-after 'unpack 'unpack-rust-crates unpack-rust-crates) (add-after 'patch-generated-file-shebangs 'patch-cargo-checksums patch-cargo-checksums))) (define* (cargo-build #:key inputs (phases %standard-phases) diff --git a/guix/build/download.scm b/guix/build/download.scm index 46af149b2f..a22d4064ca 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; @@ -28,7 +28,6 @@ #:use-module (guix build utils) #:use-module (guix progress) #:use-module (rnrs io ports) - #:use-module ((ice-9 binary-ports) #:select (unget-bytevector)) #:use-module (rnrs bytevectors) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) @@ -306,14 +305,22 @@ host name without trailing dot." (let ((record (session-record-port session))) (define (read! bv start count) - (define read-bv (get-bytevector-some record)) - (if (eof-object? read-bv) - 0 ; read! returns 0 on eof-object - (let ((read-bv-len (bytevector-length read-bv))) - (bytevector-copy! read-bv 0 bv start (min read-bv-len count)) - (when (< count read-bv-len) - (unget-bytevector record bv count (- read-bv-len count))) - read-bv-len))) + (define read + (catch 'gnutls-error + (lambda () + (get-bytevector-n! record bv start count)) + (lambda (key err proc . rest) + ;; When responding to "Connection: close" requests, some + ;; servers close the connection abruptly after sending the + ;; response body, without doing a proper TLS connection + ;; termination. Treat it as EOF. + (if (eq? err error/premature-termination) + the-eof-object + (apply throw key err proc rest))))) + + (if (eof-object? read) + 0 + read)) (define (write! bv start count) (put-bytevector record bv start count) (force-output record) @@ -328,17 +335,24 @@ host name without trailing dot." (unless (port-closed? record) (close-port record))) + (define (unbuffered port) + (setvbuf port 'none) + port) + (setvbuf record 'block) ;; Return a port that wraps RECORD to ensure that closing it also ;; closes PORT, the actual socket port, and its file descriptor. + ;; Make sure it does not introduce extra buffering (custom ports + ;; are buffered by default as of Guile 3.0.5). ;; XXX: This wrapper would be unnecessary if GnuTLS could ;; automatically close SESSION's file descriptor when RECORD is ;; closed, but that doesn't seem to be possible currently (as of ;; 3.6.9). - (make-custom-binary-input/output-port "gnutls wrapped port" read! write! - get-position set-position! - close)))) + (unbuffered + (make-custom-binary-input/output-port "gnutls wrapped port" read! write! + get-position set-position! + close))))) (define (ensure-uri uri-or-string) ;XXX: copied from (web http) (cond diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm index 552343a481..8886fc0fb9 100644 --- a/guix/build/syscalls.scm +++ b/guix/build/syscalls.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -82,6 +83,21 @@ file-system-fragment-size file-system-mount-flags statfs + + ST_RDONLY + ST_NOSUID + ST_NODEV + ST_NOEXEC + ST_SYNCHRONOUS + ST_MANDLOCK + ST_WRITE + ST_APPEND + ST_IMMUTABLE + ST_NOATIME + ST_NODIRATIME + ST_RELATIME + statfs-flags->mount-flags + free-disk-space device-in-use? add-to-entropy-count @@ -621,8 +637,9 @@ current process." (if (eof-object? line) (reverse result) (match (string-tokenize line) + ;; See the proc(5) man page for a description of the columns. ((id parent-id major:minor root mount-point - options _ type source _ ...) + options _ ... "-" type source _) (let ((devno (string->device-number major:minor))) (loop (cons (%mount (octal-decode source) (octal-decode mount-point) @@ -754,6 +771,56 @@ fdatasync(2) on the underlying file descriptor." (define-syntax fsword ;fsword_t (identifier-syntax long)) +(define linux? (string-contains %host-type "linux-gnu")) + +(define-syntax define-statfs-flags + (syntax-rules (linux hurd) + "Define the statfs mount flags." + ((_ (name (linux linux-value) (hurd hurd-value)) rest ...) + (begin + (define name + (if linux? linux-value hurd-value)) + (define-statfs-flags rest ...))) + ((_ (name value) rest ...) + (begin + (define name value) + (define-statfs-flags rest ...))) + ((_) #t))) + +(define-statfs-flags ;<bits/statfs.h> + (ST_RDONLY 1) + (ST_NOSUID 2) + (ST_NODEV (linux 4) (hurd 0)) + (ST_NOEXEC 8) + (ST_SYNCHRONOUS 16) + (ST_MANDLOCK (linux 64) (hurd 0)) + (ST_WRITE (linux 128) (hurd 0)) + (ST_APPEND (linux 256) (hurd 0)) + (ST_IMMUTABLE (linux 512) (hurd 0)) + (ST_NOATIME (linux 1024) (hurd 32)) + (ST_NODIRATIME (linux 2048) (hurd 0)) + (ST_RELATIME (linux 4096) (hurd 64))) + +(define (statfs-flags->mount-flags flags) + "Convert FLAGS, a logical or of ST_* constants as returned by +'file-system-mount-flags', to the corresponding logical or of MS_* constants." + (letrec-syntax ((match-flags (syntax-rules (=>) + ((_ (statfs => mount) rest ...) + (logior (if (zero? (logand flags statfs)) + 0 + mount) + (match-flags rest ...))) + ((_) + 0)))) + (match-flags + (ST_RDONLY => MS_RDONLY) + (ST_NOSUID => MS_NOSUID) + (ST_NODEV => MS_NODEV) + (ST_NOEXEC => MS_NOEXEC) + (ST_NOATIME => MS_NOATIME) + (ST_NODIRATIME => 0) ;FIXME + (ST_RELATIME => MS_RELATIME)))) + (define-c-struct %statfs ;<bits/statfs.h> sizeof-statfs ;slightly overestimated file-system @@ -769,7 +836,7 @@ fdatasync(2) on the underlying file descriptor." (identifier (array int 2)) (name-length fsword) (fragment-size fsword) - (mount-flags fsword) + (mount-flags fsword) ;ST_* (spare (array fsword 4))) (define statfs @@ -876,7 +943,11 @@ backend device." ;;; ;; From <uapi/linux/random.h>. -(define RNDADDTOENTCNT #x40045201) +(define RNDADDTOENTCNT + ;; Avoid using %current-system here to avoid depending on host-side code. + (if (string-prefix? "powerpc64le" %host-type) + #x80045201 + #x40045201)) (define (add-to-entropy-count port-or-fd n) "Add N to the kernel's entropy count (the value that can be read from @@ -955,6 +1026,7 @@ Turning finalization off shuts down the finalization thread as a side effect." ("mips64" 5055) ("armv7l" 120) ("aarch64" 220) + ("ppc64le" 120) (_ #f)))) (lambda (flags) "Create a new child process by duplicating the current parent process. diff --git a/guix/channels.scm b/guix/channels.scm index 05226e766b..b812c1b6e5 100644 --- a/guix/channels.scm +++ b/guix/channels.scm @@ -86,6 +86,7 @@ latest-channel-instances checkout->channel-instance latest-channel-derivation + channel-instance->sexp channel-instances->manifest %channel-profile-hooks channel-instances->derivation @@ -948,6 +949,7 @@ does not have the expected structure." (#f name) (('name name) name))) (url url) + (branch branch) (commit commit) (introduction (match (assq 'introduction rest) diff --git a/guix/download.scm b/guix/download.scm index 579996f090..30f69c0325 100644 --- a/guix/download.scm +++ b/guix/download.scm @@ -27,7 +27,7 @@ #:use-module (guix derivations) #:use-module (guix packages) #:use-module (guix store) - #:use-module ((guix build download) #:prefix build:) + #:autoload (guix build download) (url-fetch) #:use-module (guix monads) #:use-module (guix gexp) #:use-module (guix utils) @@ -35,7 +35,7 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:export (%mirrors - url-fetch + (url-fetch* . url-fetch) url-fetch/executable url-fetch/tarbomb url-fetch/zipbomb @@ -449,11 +449,11 @@ download by itself using its own dependencies." ;; for that built-in is widespread. #:local-build? #t))) -(define* (url-fetch url hash-algo hash - #:optional name - #:key (system (%current-system)) - (guile (default-guile)) - executable?) +(define* (url-fetch* url hash-algo hash + #:optional name + #:key (system (%current-system)) + (guile (default-guile)) + executable?) "Return a fixed-output derivation that fetches data from URL (a string, or a list of strings denoting alternate URLs), which is expected to have hash HASH of type HASH-ALGO (a symbol). By default, the file name is the base name of @@ -499,10 +499,10 @@ name in the store." #:key (system (%current-system)) (guile (default-guile))) "Like 'url-fetch', but make the downloaded file executable." - (url-fetch url hash-algo hash name - #:system system - #:guile guile - #:executable? #t)) + (url-fetch* url hash-algo hash name + #:system system + #:guile guile + #:executable? #t)) (define* (url-fetch/tarbomb url hash-algo hash #:optional name @@ -521,11 +521,11 @@ own. This helper makes it easier to deal with \"tar bombs\"." (define tar (module-ref (resolve-interface '(gnu packages base)) 'tar)) - (mlet %store-monad ((drv (url-fetch url hash-algo hash - (string-append "tarbomb-" - (or name file-name)) - #:system system - #:guile guile)) + (mlet %store-monad ((drv (url-fetch* url hash-algo hash + (string-append "tarbomb-" + (or name file-name)) + #:system system + #:guile guile)) (guile (package->derivation guile system))) ;; Take the tar bomb, and simply unpack it as a directory. ;; Use ungrafted tar/gzip so that the resulting tarball doesn't depend on @@ -559,11 +559,11 @@ own. This helper makes it easier to deal with \"zip bombs\"." (define unzip (module-ref (resolve-interface '(gnu packages compression)) 'unzip)) - (mlet %store-monad ((drv (url-fetch url hash-algo hash - (string-append "zipbomb-" - (or name file-name)) - #:system system - #:guile guile)) + (mlet %store-monad ((drv (url-fetch* url hash-algo hash + (string-append "zipbomb-" + (or name file-name)) + #:system system + #:guile guile)) (guile (package->derivation guile system))) ;; Take the zip bomb, and simply unpack it as a directory. ;; Use ungrafted unzip so that the resulting tarball doesn't depend on @@ -598,10 +598,9 @@ whether or not to validate HTTPS server certificates." (lambda (temp port) (let ((result (parameterize ((current-output-port log)) - (build:url-fetch url temp - #:mirrors %mirrors - #:verify-certificate? - verify-certificate?)))) + (url-fetch url temp + #:mirrors %mirrors + #:verify-certificate? verify-certificate?)))) (close port) (and result (add-to-store store name recursive? "sha256" temp))))))) diff --git a/guix/git-download.scm b/guix/git-download.scm index 8e575e3b5f..425184717a 100644 --- a/guix/git-download.scm +++ b/guix/git-download.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> @@ -27,7 +27,14 @@ #:use-module (guix packages) #:use-module (guix modules) #:autoload (guix build-system gnu) (standard-packages) - #:use-module (git) + #:autoload (git repository) (repository-open + repository-close! + repository-discover + repository-head + repository-working-directory) + #:autoload (git commit) (commit-lookup commit-tree) + #:autoload (git reference) (reference-target) + #:autoload (git tree) (tree-list) #:use-module (ice-9 match) #:use-module (ice-9 vlist) #:use-module (srfi srfi-1) diff --git a/guix/gnu-maintenance.scm b/guix/gnu-maintenance.scm index 0da6fc19b6..031a899a6c 100644 --- a/guix/gnu-maintenance.scm +++ b/guix/gnu-maintenance.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com> ;;; @@ -28,6 +28,7 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-26) + #:use-module (srfi srfi-34) #:use-module (rnrs io ports) #:use-module (system foreign) #:use-module (guix http-client) @@ -37,7 +38,8 @@ #:use-module (guix records) #:use-module (guix upstream) #:use-module (guix packages) - #:use-module (zlib) + #:autoload (zlib) (call-with-gzip-input-port) + #:autoload (htmlprag) (html->sxml) ;from Guile-Lib #:export (gnu-package-name gnu-package-mundane-name gnu-package-copyright-holder @@ -65,7 +67,8 @@ %gnu-ftp-updater %savannah-updater %xorg-updater - %kernel.org-updater)) + %kernel.org-updater + %generic-html-updater)) ;;; Commentary: ;;; @@ -238,7 +241,8 @@ network to check in GNU's database." ;; The .zip extensions is notably used for freefont-ttf. ;; The "-src" pattern is for "TeXmacs-1.0.7.9-src.tar.gz". ;; The "-gnu[0-9]" pattern is for "icecat-38.4.0-gnu1.tar.bz2". - (make-regexp "^([^.]+)-([0-9]|[^-])+(-(src|gnu[0-9]))?\\.(tar\\.|zip$)")) + ;; Accept underscores as in "PKG_1.2.tar.gz" for some non-GNU packages. + (make-regexp "^([^.]+)[-_]([0-9]|[^-])+(-(src|gnu[0-9]))?\\.(tar\\.|zip$)")) (define %alpha-tarball-rx (make-regexp "^.*-.*[0-9](-|~)?(alpha|beta|rc|RC|cvs|svn|git)-?[0-9\\.]*\\.tar\\.")) @@ -246,7 +250,9 @@ network to check in GNU's database." (define (release-file? project file) "Return #f if FILE is not a release tarball of PROJECT, otherwise return true." - (and (not (member (file-extension file) '("sig" "sign" "asc"))) + (and (not (member (file-extension file) + '("sig" "sign" "asc" + "md5sum" "sha1sum" "sha256sum"))) (and=> (regexp-exec %tarball-rx file) (lambda (match) ;; Filter out unrelated files, like `guile-www-1.1.1'. @@ -322,16 +328,11 @@ name/directory pairs." #:key (server "ftp.gnu.org") (directory (string-append "/gnu/" project)) - (keep-file? (const #t)) - (file->signature (cut string-append <> ".sig")) - (ftp-open ftp-open) (ftp-close ftp-close)) + (file->signature (cut string-append <> ".sig"))) "Return an <upstream-source> for the latest release of PROJECT on SERVER under DIRECTORY, or #f. Use FTP-OPEN and FTP-CLOSE to open (resp. close) FTP connections; this can be useful to reuse connections. -KEEP-FILE? is a predicate to decide whether to enter a directory and to -consider a given file (source tarball) as a valid candidate based on its name. - FILE->SIGNATURE must be a procedure; it is passed a source file URL and must return the corresponding signature URL, or #f it signatures are unavailable." (define (latest a b) @@ -345,7 +346,7 @@ return the corresponding signature URL, or #f it signatures are unavailable." ;; Return #t for patch directory names such as 'bash-4.2-patches'. (cut string-suffix? "patches" <>)) - (define conn (ftp-open server)) + (define conn (ftp-open server #:timeout 5)) (define (file->url directory file) (string-append "ftp://" server directory "/" file)) @@ -389,7 +390,6 @@ return the corresponding signature URL, or #f it signatures are unavailable." (releases (filter-map (match-lambda ((file 'file . _) (and (release-file? project file) - (keep-file? file) (file->source directory file))) (_ #f)) entries))) @@ -447,18 +447,6 @@ hosted on ftp.gnu.org, or not under that name (this is the case for ;;; Latest HTTP release. ;;; -(define (html->sxml port) - "Read HTML from PORT and return the corresponding SXML tree." - (let ((str (get-string-all port))) - (catch #t - (lambda () - ;; XXX: This is the poor developer's HTML-to-XML converter. It's good - ;; enough for directory listings at <https://kernel.org/pub> but if - ;; needed we could resort to (htmlprag) from Guile-Lib. - (call-with-input-string (string-replace-substring str "<hr>" "<hr />") - xml->sxml)) - (const '(html))))) ;parse error - (define (html-links sxml) "Return the list of links found in SXML, the SXML tree of an HTML page." (let loop ((sxml sxml) @@ -479,33 +467,47 @@ hosted on ftp.gnu.org, or not under that name (this is the case for #:key (base-url "https://kernel.org/pub") (directory (string-append "/" package)) - (file->signature (cut string-append <> ".sig"))) + file->signature) "Return an <upstream-source> for the latest release of PACKAGE (a string) on SERVER under DIRECTORY, or #f. BASE-URL should be the URL of an HTML page, typically a directory listing as found on 'https://kernel.org/pub'. -FILE->SIGNATURE must be a procedure; it is passed a source file URL and must -return the corresponding signature URL, or #f it signatures are unavailable." - (let* ((uri (string->uri (string-append base-url directory "/"))) - (port (http-fetch/cached uri #:ttl 3600)) - (sxml (html->sxml port))) +When FILE->SIGNATURE is omitted or #f, guess the detached signature file name, +if any. Otherwise, FILE->SIGNATURE must be a procedure; it is passed a source +file URL and must return the corresponding signature URL, or #f it signatures +are unavailable." + (let* ((uri (string->uri (if (string-null? directory) + base-url + (string-append base-url directory "/")))) + (port (http-fetch/cached uri #:ttl 3600)) + (sxml (html->sxml port)) + (links (delete-duplicates (html-links sxml)))) + (define (file->signature/guess url) + (let ((base (basename url))) + (any (lambda (link) + (any (lambda (extension) + (and (string=? (string-append base extension) + (basename link)) + (string-append url extension))) + '(".asc" ".sig" ".sign"))) + links))) + (define (url->release url) - (and (string=? url (basename url)) ;relative reference? - (release-file? package url) - (let-values (((name version) - (package-name->name+version - (tarball-sans-extension url) - #\-))) - (upstream-source - (package name) - (version version) - (urls (list (string-append base-url directory "/" url))) - (signature-urls - (list (file->signature - (string-append base-url directory "/" url)))))))) + (let* ((base (basename url)) + (url (if (string=? base url) + (string-append base-url directory "/" url) + url))) + (and (release-file? package base) + (let ((version (tarball->version base))) + (upstream-source + (package package) + (version version) + (urls (list url)) + (signature-urls + (list ((or file->signature file->signature/guess) url)))))))) (define candidates - (filter-map url->release (html-links sxml))) + (filter-map url->release links)) (close-port port) (match candidates @@ -593,7 +595,7 @@ list available from %GNU-FILE-LIST-URI over HTTP(S)." (define %package-name-rx ;; Regexp for a package name, e.g., "foo-X.Y". Since TeXmacs uses ;; "TeXmacs-X.Y-src", the `-src' suffix is allowed. - (make-regexp "^(.*)-(([0-9]|\\.)+)(-src)?")) + (make-regexp "^(.*)[-_](([0-9]|\\.)+)(-src)?")) (define (gnu-package-name->name+version name+version) "Return the package name and version number extracted from NAME+VERSION." @@ -608,11 +610,12 @@ list available from %GNU-FILE-LIST-URI over HTTP(S)." (define (pure-gnu-package? package) "Return true if PACKAGE is a non-Emacs and non-GNOME GNU package. This excludes AucTeX, for instance, whose releases are now uploaded to -elpa.gnu.org, and all the GNOME packages; EMMS is included though, because its -releases are on gnu.org." +elpa.gnu.org, GNU Radio, which has releases at www.gnuradio.org, and all the +GNOME packages; EMMS is included though, because its releases are on gnu.org." (and (or (not (string-prefix? "emacs-" (package-name package))) (gnu-hosted? package)) (not (gnome-package? package)) + (not (string-prefix? "gnuradio" (package-name package))) (gnu-package? package))) (define gnu-hosted? @@ -621,7 +624,7 @@ releases are on gnu.org." (define (url-prefix-rewrite old new) "Return a one-argument procedure that rewrites URL prefix OLD to NEW." (lambda (url) - (if (string-prefix? old url) + (if (and url (string-prefix? old url)) (string-append new (string-drop url (string-length old))) url))) @@ -653,9 +656,8 @@ releases are on gnu.org." (directory (dirname (uri-path uri))) (rewrite (url-prefix-rewrite %savannah-base "mirror://savannah"))) - ;; Note: We use the default 'file->signature', which adds ".sig", but not - ;; all projects on Savannah follow that convention: some use ".asc" and - ;; perhaps some lack signatures altogether. + ;; Note: We use the default 'file->signature', which adds ".sig", ".asc", + ;; or whichever detached signature naming scheme PACKAGE uses. (and=> (latest-html-release package #:base-url %savannah-base #:directory directory) @@ -695,6 +697,55 @@ releases are on gnu.org." #:file->signature file->signature) (cut adjusted-upstream-source <> rewrite)))) +(define html-updatable-package? + ;; Return true if the given package may be handled by the generic HTML + ;; updater. + (let ((hosting-sites '("github.com" "github.io" "gitlab.com" + "notabug.org" "sr.ht" + "gforge.inria.fr" "gitlab.inria.fr" + "ftp.gnu.org" "download.savannah.gnu.org" + "pypi.org" "crates.io" "rubygems.org" + "bioconductor.org"))) + (url-predicate (lambda (url) + (match (string->uri url) + (#f #f) + (uri + (let ((scheme (uri-scheme uri)) + (host (uri-host uri))) + (and (memq scheme '(http https)) + (not (member host hosting-sites)))))))))) + +(define (latest-html-updatable-release package) + "Return the latest release of PACKAGE. Do that by crawling the HTML page of +the directory containing its source tarball." + (let* ((uri (string->uri + (match (origin-uri (package-source package)) + ((? string? url) url) + ((url _ ...) url)))) + (custom (assoc-ref (package-properties package) + 'release-monitoring-url)) + (base (or custom + (string-append (symbol->string (uri-scheme uri)) + "://" (uri-host uri)))) + (directory (if custom + "" + (dirname (uri-path uri)))) + (package (package-upstream-name package))) + (catch #t + (lambda () + (guard (c ((http-get-error? c) #f)) + (latest-html-release package + #:base-url base + #:directory directory))) + (lambda (key . args) + ;; Return false and move on upon connection failures and bogus HTTP + ;; servers. + (unless (memq key '(gnutls-error tls-certificate-error + system-error + bad-header bad-header-component)) + (apply throw key args)) + #f)))) + (define %gnu-updater ;; This is for everything at ftp.gnu.org. (upstream-updater @@ -735,4 +786,11 @@ releases are on gnu.org." (pred (url-prefix-predicate "mirror://kernel.org/")) (latest latest-kernel.org-release))) +(define %generic-html-updater + (upstream-updater + (name 'generic-html) + (description "Updater that crawls HTML pages.") + (pred html-updatable-package?) + (latest latest-html-updatable-release))) + ;;; gnu-maintenance.scm ends here diff --git a/guix/http-client.scm b/guix/http-client.scm index 2d7458a56e..4b4c14ed0b 100644 --- a/guix/http-client.scm +++ b/guix/http-client.scm @@ -79,6 +79,7 @@ (keep-alive? #f) (verify-certificate? #t) (headers '((user-agent . "GNU Guile"))) + (log-port (current-error-port)) timeout) "Return an input port containing the data at URI, and the expected number of bytes available or #f. If TEXT? is true, the data at URI is considered to be @@ -94,6 +95,8 @@ When VERIFY-CERTIFICATE? is true, verify HTTPS server certificates. TIMEOUT specifies the timeout in seconds for connection establishment; when TIMEOUT is #f, connection establishment never times out. +Write information about redirects to LOG-PORT. + Raise an '&http-get-error' condition if downloading fails." (let loop ((uri (if (string? uri) (string->uri uri) @@ -128,7 +131,7 @@ Raise an '&http-get-error' condition if downloading fails." 308) ; permanent redirection (let ((uri (resolve-uri-reference (response-location resp) uri))) (close-port port) - (format (current-error-port) (G_ "following redirection to `~a'...~%") + (format log-port (G_ "following redirection to `~a'...~%") (uri->string uri)) (loop uri))) (else @@ -276,6 +279,7 @@ returning." (define* (http-fetch/cached uri #:key (ttl (%http-cache-ttl)) text? (write-cache dump-port) (cache-miss (const #t)) + (log-port (current-error-port)) (timeout 10)) "Like 'http-fetch', return an input port, but cache its contents in ~/.cache/guix. The cache remains valid for TTL seconds. @@ -284,7 +288,9 @@ Call WRITE-CACHE with the HTTP input port and the cache output port to write the data to cache. Call CACHE-MISS with URI just before fetching data from URI. -TIMEOUT specifies the timeout in seconds for connection establishment." +TIMEOUT specifies the timeout in seconds for connection establishment. + +Write information about redirects to LOG-PORT." (let ((file (cache-file-for-uri uri))) (define (update-cache cache-port) (define cache-time @@ -306,6 +312,7 @@ TIMEOUT specifies the timeout in seconds for connection establishment." cache-port) (raise c)))) (let ((port (http-fetch uri #:text? text? + #:log-port log-port #:headers headers #:timeout timeout))) (cache-miss uri) (mkdir-p (dirname file)) diff --git a/guix/import/gnome.scm b/guix/import/gnome.scm index 436ec88ef9..43966c1028 100644 --- a/guix/import/gnome.scm +++ b/guix/import/gnome.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2017, 2019, 2021 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -64,8 +64,9 @@ not be determined." (match (string-tokenize version %not-dot) (((= string->number major) (= string->number minor) . rest) (and minor (even? minor))) - (_ - #t))) ;cross fingers + (((= string->number major) . _) + ;; It should at last start with a digit. + major))) (define upstream-name ;; Some packages like "NetworkManager" have camel-case names. @@ -82,7 +83,10 @@ not be determined." ;; ftp.gnome.org supports 'if-Modified-Since', so the local ;; cache can expire early. - #:ttl (* 60 10))) + #:ttl (* 60 10) + + ;; Hide messages about URL redirects. + #:log-port (%make-void-port "w"))) (json (json->scm port))) (close-port port) (match json diff --git a/guix/import/go.scm b/guix/import/go.scm new file mode 100644 index 0000000000..7452b4c903 --- /dev/null +++ b/guix/import/go.scm @@ -0,0 +1,547 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com> +;;; Copyright © 2020 Helio Machado <0x2b3bfa0+guix@googlemail.com> +;;; Copyright © 2021 François Joulaud <francois.joulaud@radiofrance.com> +;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (guix import go) + #:use-module (guix build-system go) + #:use-module (guix git) + #:use-module (guix i18n) + #:use-module (guix diagnostics) + #:use-module (guix import utils) + #:use-module (guix import json) + #:use-module (guix packages) + #:use-module ((guix utils) #:select (string-replace-substring)) + #:use-module (guix http-client) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix memoization) + #:autoload (htmlprag) (html->sxml) ;from Guile-Lib + #:autoload (guix git) (update-cached-checkout) + #:autoload (gcrypt hash) (open-hash-port hash-algorithm sha256) + #:autoload (guix serialization) (write-file) + #:autoload (guix base32) (bytevector->nix-base32-string) + #:autoload (guix build utils) (mkdir-p) + #:use-module (ice-9 match) + #:use-module (ice-9 rdelim) + #:use-module (ice-9 receive) + #:use-module (ice-9 regex) + #:use-module ((rnrs io ports) #:select (call-with-port)) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-9) + #:use-module (srfi srfi-11) + #:use-module (srfi srfi-26) + #:use-module (sxml xpath) + #:use-module (web client) + #:use-module (web response) + #:use-module (web uri) + + #:export (go-path-escape + go-module->guix-package + go-module-recursive-import)) + +;;; Commentary: +;;; +;;; (guix import go) attempts to make it easier to create Guix package +;;; declarations for Go modules. +;;; +;;; Modules in Go are a "collection of related Go packages" which are "the +;;; unit of source code interchange and versioning". Modules are generally +;;; hosted in a repository. +;;; +;;; At this point it should handle correctly modules which have only Go +;;; dependencies and are accessible from proxy.golang.org (or configured via +;;; GOPROXY). +;;; +;;; We want it to work more or less this way: +;;; - get latest version for the module from GOPROXY +;;; - infer VCS root repo from which we will check-out source by +;;; + recognising known patterns (like github.com) +;;; + or recognizing .vcs suffix +;;; + or parsing meta tag in HTML served at the URL +;;; + or (TODO) if nothing else works by using zip file served by GOPROXY +;;; - get go.mod from GOPROXY (which is able to synthetize one if needed) +;;; - extract list of dependencies from this go.mod +;;; +;;; The Go module paths are translated to a Guix package name under the +;;; assumption that there will be no collision. + +;;; TODO list +;;; - get correct hash in vcs->origin +;;; - print partial result during recursive imports (need to catch +;;; exceptions) + +;;; Code: + +(define (go-path-escape path) + "Escape a module path by replacing every uppercase letter with an +exclamation mark followed with its lowercase equivalent, as per the module +Escaped Paths specification (see: +https://godoc.org/golang.org/x/mod/module#hdr-Escaped_Paths)." + (define (escape occurrence) + (string-append "!" (string-downcase (match:substring occurrence)))) + (regexp-substitute/global #f "[A-Z]" path 'pre escape 'post)) + +(define (go-module-latest-version goproxy-url module-path) + "Fetch the version number of the latest version for MODULE-PATH from the +given GOPROXY-URL server." + (assoc-ref (json-fetch (format #f "~a/~a/@latest" goproxy-url + (go-path-escape module-path))) + "Version")) + + +(define (go-package-licenses name) + "Retrieve the list of licenses that apply to NAME, a Go package or module +name (e.g. \"github.com/golang/protobuf/proto\"). The data is scraped from +the https://pkg.go.dev/ web site." + (let*-values (((url) (string-append "https://pkg.go.dev/" name + "?tab=licenses")) + ((response body) (http-get url)) + ;; Extract the text contained in a h2 child node of any + ;; element marked with a "License" class attribute. + ((select) (sxpath `(// (* (@ (equal? (class "License")))) + h2 // *text*)))) + (and (eq? (response-code response) 200) + (match (select (html->sxml body)) + (() #f) ;nothing selected + (licenses licenses))))) + +(define (go.pkg.dev-info name) + (http-get (string-append "https://pkg.go.dev/" name))) +(define go.pkg.dev-info* + (memoize go.pkg.dev-info)) + +(define (go-package-description name) + "Retrieve a short description for NAME, a Go package name, +e.g. \"google.golang.org/protobuf/proto\". The data is scraped from the +https://pkg.go.dev/ web site." + (let*-values (((response body) (go.pkg.dev-info* name)) + ;; Extract the text contained in a h2 child node of any + ;; element marked with a "License" class attribute. + ((select) (sxpath + `(// (section + (@ (equal? (class "Documentation-overview")))) + (p 1))))) + (and (eq? (response-code response) 200) + (match (select (html->sxml body)) + (() #f) ;nothing selected + (((p . strings)) + ;; The paragraph text is returned as a list of strings embedding + ;; newline characters. Join them and strip the newline + ;; characters. + (string-delete #\newline (string-join strings))))))) + +(define (go-package-synopsis module-name) + "Retrieve a short synopsis for a Go module named MODULE-NAME, +e.g. \"google.golang.org/protobuf\". The data is scraped from +the https://pkg.go.dev/ web site." + ;; Note: Only the *module* (rather than package) page has the README title + ;; used as a synopsis on the https://pkg.go.dev web site. + (let*-values (((response body) (go.pkg.dev-info* module-name)) + ;; Extract the text contained in a h2 child node of any + ;; element marked with a "License" class attribute. + ((select) (sxpath + `(// (div (@ (equal? (class "UnitReadme-content")))) + // h3 *text*)))) + (and (eq? (response-code response) 200) + (match (select (html->sxml body)) + (() #f) ;nothing selected + ((title more ...) ;title is the first string of the list + (string-trim-both title)))))) + +(define (list->licenses licenses) + "Given a list of LICENSES mostly following the SPDX conventions, return the +corresponding Guix license or 'unknown-license!" + (filter-map (lambda (license) + (and (not (string-null? license)) + (not (any (cut string=? <> license) + '("AND" "OR" "WITH"))) + ;; Adjust the license names scraped from + ;; https://pkg.go.dev to an equivalent SPDX identifier, + ;; if they differ (see: https://github.com/golang/pkgsite + ;; /internal/licenses/licenses.go#L174). + (or (spdx-string->license + (match license + ("BlueOak-1.0" "BlueOak-1.0.0") + ("BSD-0-Clause" "0BSD") + ("BSD-2-Clause" "BSD-2-Clause-FreeBSD") + ("GPL2" "GPL-2.0") + ("GPL3" "GPL-3.0") + ("NIST" "NIST-PD") + (_ license))) + 'unknown-license!))) + licenses)) + +(define (fetch-go.mod goproxy-url module-path version) + "Fetches go.mod from the given GOPROXY-URL server for the given MODULE-PATH +and VERSION." + (let ((url (format #f "~a/~a/@v/~a.mod" goproxy-url + (go-path-escape module-path) + (go-path-escape version)))) + (http-fetch url))) + +(define %go.mod-require-directive-rx + ;; A line in a require directive is composed of a module path and + ;; a version separated by whitespace and an optionnal '//' comment at + ;; the end. + (make-regexp + (string-append + "^[[:blank:]]*" + "([^[:blank:]]+)[[:blank:]]+([^[:blank:]]+)" + "([[:blank:]]+//.*)?"))) + +(define %go.mod-replace-directive-rx + ;; ReplaceSpec = ModulePath [ Version ] "=>" FilePath newline + ;; | ModulePath [ Version ] "=>" ModulePath Version newline . + (make-regexp + (string-append + "([^[:blank:]]+)([[:blank:]]+([^[:blank:]]+))?" + "[[:blank:]]+" "=>" "[[:blank:]]+" + "([^[:blank:]]+)([[:blank:]]+([^[:blank:]]+))?"))) + +(define (parse-go.mod port) + "Parse the go.mod file accessible via the input PORT, returning a list of +requirements." + (define-record-type <results> + (make-results requirements replacements) + results? + (requirements results-requirements) + (replacements results-replacements)) + ;; We parse only a subset of https://golang.org/ref/mod#go-mod-file-grammar + ;; which we think necessary for our use case. + (define (toplevel results) + "Main parser, RESULTS is a pair of alist serving as accumulator for + all encountered requirements and replacements." + (let ((line (read-line port))) + (cond + ((eof-object? line) + ;; parsing ended, give back the result + results) + ((string=? line "require (") + ;; a require block begins, delegate parsing to IN-REQUIRE + (in-require results)) + ((string=? line "replace (") + ;; a replace block begins, delegate parsing to IN-REPLACE + (in-replace results)) + ((string-prefix? "require " line) + ;; a standalone require directive + (let* ((stripped-line (string-drop line 8)) + (new-results (require-directive results stripped-line))) + (toplevel new-results))) + ((string-prefix? "replace " line) + ;; a standalone replace directive + (let* ((stripped-line (string-drop line 8)) + (new-results (replace-directive results stripped-line))) + (toplevel new-results))) + (#t + ;; unrecognised line, ignore silently + (toplevel results))))) + + (define (in-require results) + (let ((line (read-line port))) + (cond + ((eof-object? line) + ;; this should never happen here but we ignore silently + results) + ((string=? line ")") + ;; end of block, coming back to toplevel + (toplevel results)) + (#t + (in-require (require-directive results line)))))) + + (define (in-replace results) + (let ((line (read-line port))) + (cond + ((eof-object? line) + ;; this should never happen here but we ignore silently + results) + ((string=? line ")") + ;; end of block, coming back to toplevel + (toplevel results)) + (#t + (in-replace (replace-directive results line)))))) + + (define (replace-directive results line) + "Extract replaced modules and new requirements from replace directive + in LINE and add to RESULTS." + (match results + (($ <results> requirements replaced) + (let* ((rx-match (regexp-exec %go.mod-replace-directive-rx line)) + (module-path (match:substring rx-match 1)) + (version (match:substring rx-match 3)) + (new-module-path (match:substring rx-match 4)) + (new-version (match:substring rx-match 6)) + (new-replaced (alist-cons module-path version replaced)) + (new-requirements + (if (string-match "^\\.?\\./" new-module-path) + requirements + (alist-cons new-module-path new-version requirements)))) + (make-results new-requirements new-replaced))))) + (define (require-directive results line) + "Extract requirement from LINE and add it to RESULTS." + (let* ((rx-match (regexp-exec %go.mod-require-directive-rx line)) + (module-path (match:substring rx-match 1)) + ;; we saw double-quoted string in the wild without escape + ;; sequences so we just trim the quotes + (module-path (string-trim-both module-path #\")) + (version (match:substring rx-match 2))) + (match results + (($ <results> requirements replaced) + (make-results (alist-cons module-path version requirements) replaced))))) + + (let ((results (toplevel (make-results '() '())))) + (match results + (($ <results> requirements replaced) + ;; At last we remove replaced modules from the requirements list + (fold + (lambda (replacedelem requirements) + (alist-delete! (car replacedelem) requirements)) + requirements + replaced))))) + +;; Prevent inlining of this procedure, which is accessed by unit tests. +(set! parse-go.mod parse-go.mod) + +(define-record-type <vcs> + (%make-vcs url-prefix root-regex type) + vcs? + (url-prefix vcs-url-prefix) + (root-regex vcs-root-regex) + (type vcs-type)) +(define (make-vcs prefix regexp type) + (%make-vcs prefix (make-regexp regexp) type)) +(define known-vcs + ;; See the following URL for the official Go equivalent: + ;; https://github.com/golang/go/blob/846dce9d05f19a1f53465e62a304dea21b99f910/src/cmd/go/internal/vcs/vcs.go#L1026-L1087 + (list + (make-vcs + "github.com" + "^(github\\.com/[A-Za-z0-9_.\\-]+/[A-Za-z0-9_.\\-]+)(/[A-Za-z0-9_.\\-]+)*$" + 'git) + (make-vcs + "bitbucket.org" + "^(bitbucket\\.org/([A-Za-z0-9_.\\-]+/[A-Za-z0-9_.\\-]+))(/[A-Za-z0-9_.\\-]+)*$" + 'unknown) + (make-vcs + "hub.jazz.net/git/" + "^(hub\\.jazz\\.net/git/[a-z0-9]+/[A-Za-z0-9_.\\-]+)(/[A-Za-z0-9_.\\-]+)*$" + 'git) + (make-vcs + "git.apache.org" + "^(git\\.apache\\.org/[a-z0-9_.\\-]+\\.git)(/[A-Za-z0-9_.\\-]+)*$" + 'git) + (make-vcs + "git.openstack.org" + "^(git\\.openstack\\.org/[A-Za-z0-9_.\\-]+/[A-Za-z0-9_.\\-]+)(\\.git)?\ +(/[A-Za-z0-9_.\\-]+)*$" + 'git))) + +(define (module-path->repository-root module-path) + "Infer the repository root from a module path. Go modules can be +defined at any level of a repository tree, but querying for the meta tag +usually can only be done from the web page at the root of the repository, +hence the need to derive this information." + + ;; For reference, see: https://golang.org/ref/mod#vcs-find. + (define vcs-qualifiers '(".bzr" ".fossil" ".git" ".hg" ".svn")) + + (define (vcs-qualified-module-path->root-repo-url module-path) + (let* ((vcs-qualifiers-group (string-join vcs-qualifiers "|")) + (pattern (format #f "^(.*(~a))(/|$)" vcs-qualifiers-group)) + (m (string-match pattern module-path))) + (and=> m (cut match:substring <> 1)))) + + (or (and=> (find (lambda (vcs) + (string-prefix? (vcs-url-prefix vcs) module-path)) + known-vcs) + (lambda (vcs) + (match:substring (regexp-exec (vcs-root-regex vcs) + module-path) 1))) + (vcs-qualified-module-path->root-repo-url module-path) + module-path)) + +(define (go-module->guix-package-name module-path) + "Converts a module's path to the canonical Guix format for Go packages." + (string-downcase (string-append "go-" (string-replace-substring + (string-replace-substring + module-path + "." "-") + "/" "-")))) + +(define-record-type <module-meta> + (make-module-meta import-prefix vcs repo-root) + module-meta? + (import-prefix module-meta-import-prefix) + (vcs module-meta-vcs) ;a symbol + (repo-root module-meta-repo-root)) + +(define (fetch-module-meta-data module-path) + "Retrieve the module meta-data from its landing page. This is necessary +because goproxy servers don't currently provide all the information needed to +build a package." + ;; <meta name="go-import" content="import-prefix vcs repo-root"> + (let* ((port (http-fetch (format #f "https://~a?go-get=1" module-path))) + (select (sxpath `(// head (meta (@ (equal? (name "go-import")))) + // content)))) + (match (select (call-with-port port html->sxml)) + (() #f) ;nothing selected + (((content content-text)) + (match (string-split content-text #\space) + ((root-path vcs repo-url) + (make-module-meta root-path (string->symbol vcs) repo-url))))))) + +(define (module-meta-data-repo-url meta-data goproxy-url) + "Return the URL where the fetcher which will be used can download the +source." + (if (member (module-meta-vcs meta-data) '(fossil mod)) + goproxy-url + (module-meta-repo-root meta-data))) + +;; XXX: Copied from (guix scripts hash). +(define (vcs-file? file stat) + (case (stat:type stat) + ((directory) + (member (basename file) '(".bzr" ".git" ".hg" ".svn" "CVS"))) + ((regular) + ;; Git sub-modules have a '.git' file that is a regular text file. + (string=? (basename file) ".git")) + (else + #f))) + +;; XXX: Adapted from 'file-hash' in (guix scripts hash). +(define* (file-hash file #:optional (algorithm (hash-algorithm sha256))) + ;; Compute the hash of FILE. + (let-values (((port get-hash) (open-hash-port algorithm))) + (write-file file port #:select? (negate vcs-file?)) + (force-output port) + (get-hash))) + +(define* (git-checkout-hash url reference algorithm) + "Return the ALGORITHM hash of the checkout of URL at REFERENCE, a commit or +tag." + (define cache + (string-append (or (getenv "TMPDIR") "/tmp") + "/guix-import-go-" + (passwd:name (getpwuid (getuid))))) + + ;; Use a custom cache to avoid cluttering the default one under + ;; ~/.cache/guix, but choose one under /tmp so that it's persistent across + ;; subsequent "guix import" invocations. + (mkdir-p cache) + (chmod cache #o700) + (let-values (((checkout commit _) + (parameterize ((%repository-cache-directory cache)) + (update-cached-checkout url + #:ref + `(tag-or-commit . ,reference))))) + (file-hash checkout algorithm))) + +(define (vcs->origin vcs-type vcs-repo-url version) + "Generate the `origin' block of a package depending on what type of source +control system is being used." + (case vcs-type + ((git) + (let ((plain-version? (string=? version (go-version->git-ref version))) + (v-prefixed? (string-prefix? "v" version))) + `(origin + (method git-fetch) + (uri (git-reference + (url ,vcs-repo-url) + (commit ,(if (and plain-version? v-prefixed?) + '(string-append "v" version) + '(go-version->git-ref version))))) + (file-name (git-file-name name version)) + (sha256 + (base32 + ,(bytevector->nix-base32-string + (git-checkout-hash vcs-repo-url (go-version->git-ref version) + (hash-algorithm sha256)))))))) + ((hg) + `(origin + (method hg-fetch) + (uri (hg-reference + (url ,vcs-repo-url) + (changeset ,version))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + ;; FIXME: populate hash for hg repo checkout + "0000000000000000000000000000000000000000000000000000")))) + ((svn) + `(origin + (method svn-fetch) + (uri (svn-reference + (url ,vcs-repo-url) + (revision (string->number version)))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + ;; FIXME: populate hash for svn repo checkout + "0000000000000000000000000000000000000000000000000000")))) + (else + (raise + (formatted-message (G_ "unsupported vcs type '~a' for package '~a'") + vcs-type vcs-repo-url))))) + +(define* (go-module->guix-package module-path #:key + (goproxy-url "https://proxy.golang.org")) + (let* ((latest-version (go-module-latest-version goproxy-url module-path)) + (port (fetch-go.mod goproxy-url module-path latest-version)) + (dependencies (map car (call-with-port port parse-go.mod))) + (guix-name (go-module->guix-package-name module-path)) + (root-module-path (module-path->repository-root module-path)) + ;; The VCS type and URL are not included in goproxy information. For + ;; this we need to fetch it from the official module page. + (meta-data (fetch-module-meta-data root-module-path)) + (vcs-type (module-meta-vcs meta-data)) + (vcs-repo-url (module-meta-data-repo-url meta-data goproxy-url)) + (synopsis (go-package-synopsis root-module-path)) + (description (go-package-description module-path)) + (licenses (go-package-licenses module-path))) + (values + `(package + (name ,guix-name) + ;; Elide the "v" prefix Go uses + (version ,(string-trim latest-version #\v)) + (source + ,(vcs->origin vcs-type vcs-repo-url latest-version)) + (build-system go-build-system) + (arguments + '(#:import-path ,root-module-path)) + ,@(maybe-inputs (map go-module->guix-package-name dependencies)) + (home-page ,(format #f "https://~a" root-module-path)) + (synopsis ,synopsis) + (description ,description) + (license ,(match (and=> licenses list->licenses) + ((license) license) + ((licenses ...) `(list ,@licenses)) + (x x)))) + dependencies))) + +(define go-module->guix-package* (memoize go-module->guix-package)) + +(define* (go-module-recursive-import package-name + #:key (goproxy-url "https://proxy.golang.org")) + (recursive-import + package-name + #:repo->guix-package (lambda* (name . _) + (go-module->guix-package* + name + #:goproxy-url goproxy-url)) + #:guix-name go-module->guix-package-name)) diff --git a/guix/import/utils.scm b/guix/import/utils.scm index 2f5ccf7cea..64d1385164 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -136,6 +136,7 @@ of the string VERSION is replaced by the symbol 'version." ("Apache-1.1" 'license:asl1.1) ("Apache-2.0" 'license:asl2.0) ("BSL-1.0" 'license:boost1.0) + ("0BSD" 'license:bsd-0) ("BSD-2-Clause-FreeBSD" 'license:bsd-2) ("BSD-3-Clause" 'license:bsd-3) ("BSD-4-Clause" 'license:bsd-4) diff --git a/guix/inferior.scm b/guix/inferior.scm index 0990696e6c..eb457f81f9 100644 --- a/guix/inferior.scm +++ b/guix/inferior.scm @@ -120,6 +120,15 @@ (packages inferior-package-promise) ;promise of inferior packages (table inferior-package-table)) ;promise of vhash +(define (write-inferior inferior port) + (match inferior + (($ <inferior> pid _ _ version) + (format port "#<inferior ~a ~a ~a>" + pid version + (number->string (object-address inferior) 16))))) + +(set-record-type-printer! <inferior> write-inferior) + (define* (inferior-pipe directory command error-port) "Return an input/output pipe on the Guix instance in DIRECTORY. This runs 'DIRECTORY/COMMAND repl' if it exists, or falls back to some other method if @@ -740,8 +749,16 @@ determines whether CHANNELS are authenticated." (string-append directory "/" file)) (scandir directory base32-encoded-sha256?))) + (define (symlink/safe old new) + (catch 'system-error + (lambda () + (symlink old new)) + (lambda args + (unless (= EEXIST (system-error-errno args)) + (apply throw args))))) + (define symlink* - (lift2 symlink %store-monad)) + (lift2 symlink/safe %store-monad)) (define add-indirect-root* (store-lift add-indirect-root)) diff --git a/guix/licenses.scm b/guix/licenses.scm index 1091eee67c..0a36067387 100644 --- a/guix/licenses.scm +++ b/guix/licenses.scm @@ -39,7 +39,7 @@ apsl2 asl1.1 asl2.0 boost1.0 - bsd-2 bsd-3 bsd-4 + bsd-0 bsd-2 bsd-3 bsd-4 non-copyleft cc0 cc-by2.0 cc-by3.0 cc-by4.0 @@ -159,6 +159,11 @@ "http://directory.fsf.org/wiki/License:Boost1.0" "https://www.gnu.org/licenses/license-list#boost")) +(define bsd-0 + (license "Zero-Clause BSD" + "https://spdx.org/licenses/0BSD.html" + "https://opensource.org/licenses/0BSD")) + (define bsd-2 (license "FreeBSD" "http://directory.fsf.org/wiki/License:FreeBSD" diff --git a/guix/narinfo.scm b/guix/narinfo.scm index 2d06124017..72e0f75fda 100644 --- a/guix/narinfo.scm +++ b/guix/narinfo.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2018 Kyle Meyer <kyle@kyleam.com> ;;; @@ -297,9 +297,21 @@ this is a rough approximation." (_ (or (string=? compression2 "none") (string=? compression2 "gzip"))))) -(define (narinfo-best-uri narinfo) +(define (decompresses-faster? compression1 compression2) + "Return true if COMPRESSION1 generally has a higher decompression throughput +than COMPRESSION2." + (match compression1 + ("none" #t) + ("zstd" #t) + ("gzip" (string=? compression2 "lzip")) + (_ #f))) + +(define* (narinfo-best-uri narinfo #:key fast-decompression?) "Select the \"best\" URI to download NARINFO's nar, and return three values: -the URI, its compression method (a string), and the compressed file size." +the URI, its compression method (a string), and the compressed file size. +When FAST-DECOMPRESSION? is true, prefer substitutes with faster +decompression (typically zstd) rather than substitutes with a higher +compression ratio (typically lzip)." (define choices (filter (match-lambda ((uri compression file-size) @@ -321,6 +333,13 @@ the URI, its compression method (a string), and the compressed file size." (compresses-better? compression1 compression2)))) (_ #f))) ;we can't tell - (match (sort choices file-size<?) + (define (speed<? c1 c2) + (match c1 + ((uri1 compression1 . _) + (match c2 + ((uri2 compression2 . _) + (decompresses-faster? compression2 compression1)))))) + + (match (sort choices (if fast-decompression? (negate speed<?) file-size<?)) (((uri compression file-size) _ ...) (values uri compression file-size)))) diff --git a/guix/packages.scm b/guix/packages.scm index dd1d473fca..56173e1204 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2017, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -348,7 +349,8 @@ name of its URI." (define %supported-systems ;; This is the list of system types that are supported. By default, we ;; expect all packages to build successfully here. - '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux" "mips64el-linux" "i586-gnu")) + '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux" "mips64el-linux" "i586-gnu" + "powerpc64le-linux")) (define %hurd-systems ;; The GNU/Hurd systems for which support is being developed. diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index a959cb827d..fa1bbf867d 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net> @@ -22,7 +22,7 @@ (define-module (guix scripts build) #:use-module (guix ui) #:use-module (guix scripts) - #:use-module (guix import json) + #:autoload (guix import json) (json->scheme-file) #:use-module (guix store) #:use-module (guix derivations) #:use-module (guix packages) diff --git a/guix/scripts/describe.scm b/guix/scripts/describe.scm index 6f8d9aceec..be2279d254 100644 --- a/guix/scripts/describe.scm +++ b/guix/scripts/describe.scm @@ -28,7 +28,7 @@ #:use-module (guix profiles) #:autoload (guix openpgp) (openpgp-format-fingerprint) #:use-module (git) - #:use-module (json) + #:autoload (json builder) (scm->json-string) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (srfi srfi-37) diff --git a/guix/scripts/import.scm b/guix/scripts/import.scm index 0a3863f965..1d2b45d942 100644 --- a/guix/scripts/import.scm +++ b/guix/scripts/import.scm @@ -77,7 +77,7 @@ rather than \\n." ;;; (define importers '("gnu" "nix" "pypi" "cpan" "hackage" "stackage" "elpa" "gem" - "cran" "crate" "texlive" "json" "opam")) + "go" "cran" "crate" "texlive" "json" "opam")) (define (resolve-importer name) (let ((module (resolve-interface diff --git a/guix/scripts/import/go.scm b/guix/scripts/import/go.scm new file mode 100644 index 0000000000..afdba4e8f1 --- /dev/null +++ b/guix/scripts/import/go.scm @@ -0,0 +1,118 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (guix scripts import go) + #:use-module (guix ui) + #:use-module (guix utils) + #:use-module (guix scripts) + #:use-module (guix import go) + #:use-module (guix scripts import) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-11) + #:use-module (srfi srfi-37) + #:use-module (ice-9 match) + #:use-module (ice-9 format) + #:export (guix-import-go)) + + +;;; +;;; Command-line options. +;;; + +(define %default-options + '()) + +(define (show-help) + (display (G_ "Usage: guix import go PACKAGE-PATH +Import and convert the Go module for PACKAGE-PATH.\n")) + (display (G_ " + -h, --help display this help and exit")) + (display (G_ " + -V, --version display version information and exit")) + (display (G_ " + -r, --recursive generate package expressions for all Go modules\ + that are not yet in Guix")) + (display (G_ " + -p, --goproxy=GOPROXY specify which goproxy server to use")) + (newline) + (show-bug-report-information)) + +(define %options + ;; Specification of the command-line options. + (cons* (option '(#\h "help") #f #f + (lambda args + (show-help) + (exit 0))) + (option '(#\V "version") #f #f + (lambda args + (show-version-and-exit "guix import go"))) + (option '(#\r "recursive") #f #f + (lambda (opt name arg result) + (alist-cons 'recursive #t result))) + (option '(#\p "goproxy") #t #f + (lambda (opt name arg result) + (alist-cons 'goproxy + (string->symbol arg) + (alist-delete 'goproxy result)))) + %standard-import-options)) + + +;;; +;;; Entry point. +;;; + +(define (guix-import-go . args) + (define (parse-options) + ;; Return the alist of option values. + (args-fold* args %options + (lambda (opt name arg result) + (leave (G_ "~A: unrecognized option~%") name)) + (lambda (arg result) + (alist-cons 'argument arg result)) + %default-options)) + + (let* ((opts (parse-options)) + (args (filter-map (match-lambda + (('argument . value) + value) + (_ #f)) + (reverse opts)))) + (match args + ((module-name) + (if (assoc-ref opts 'recursive) + (map (match-lambda + ((and ('package ('name name) . rest) pkg) + `(define-public ,(string->symbol name) + ,pkg)) + (_ #f)) + (go-module-recursive-import module-name + #:goproxy-url + (or (assoc-ref opts 'goproxy) + "https://proxy.golang.org"))) + (let ((sexp (go-module->guix-package module-name + #:goproxy-url + (or (assoc-ref opts 'goproxy) + "https://proxy.golang.org")))) + (unless sexp + (leave (G_ "failed to download meta-data for module '~a'~%") + module-name)) + sexp))) + (() + (leave (G_ "too few arguments~%"))) + ((many ...) + (leave (G_ "too many arguments~%")))))) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index fc5bf8137b..e3d40d5142 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -35,14 +35,15 @@ #:use-module (guix packages) #:use-module (guix profiles) #:use-module (guix search-paths) - #:use-module (guix import json) + #:autoload (guix import json) (json->scheme-file) #:use-module (guix monads) #:use-module (guix utils) #:use-module (guix config) #:use-module (guix scripts) #:use-module (guix scripts build) #:use-module (guix transformations) - #:use-module (guix describe) + #:autoload (guix describe) (manifest-entry-provenance + manifest-entry-with-provenance) #:autoload (guix channels) (channel-name channel-commit channel->code) #:autoload (guix store roots) (gc-roots user-owned?) #:use-module ((guix build utils) diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm index 5866b8bb0a..46323c7216 100755 --- a/guix/scripts/substitute.scm +++ b/guix/scripts/substitute.scm @@ -45,6 +45,7 @@ #:select (uri-abbreviation nar-uri-abbreviation (open-connection-for-uri . guix:open-connection-for-uri))) + #:autoload (gnutls) (error/invalid-session) #:use-module (guix progress) #:use-module ((guix build syscalls) #:select (set-thread-name)) @@ -257,6 +258,27 @@ Internal tool to substitute a pre-built binary to a local build.\n")) ;;; Daemon/substituter protocol. ;;; +(define %prefer-fast-decompression? + ;; Whether to prefer fast decompression over good compression ratios. This + ;; serves in particular to choose between lzip (high compression ratio but + ;; low decompression throughput) and zstd (lower compression ratio but high + ;; decompression throughput). + #f) + +(define (call-with-cpu-usage-monitoring proc) + (let ((before (times))) + (proc) + (let ((after (times))) + (if (= (tms:clock after) (tms:clock before)) + 0 + (/ (- (tms:utime after) (tms:utime before)) + (- (tms:clock after) (tms:clock before)) + 1.))))) + +(define-syntax-rule (with-cpu-usage-monitoring exp ...) + "Evaluate EXP... Return its CPU usage as a fraction between 0 and 1." + (call-with-cpu-usage-monitoring (lambda () exp ...))) + (define (display-narinfo-data narinfo) "Write to the current output port the contents of NARINFO in the format expected by the daemon." @@ -269,7 +291,10 @@ expected by the daemon." (for-each (cute format #t "~a/~a~%" (%store-prefix) <>) (narinfo-references narinfo)) - (let-values (((uri compression file-size) (narinfo-best-uri narinfo))) + (let-values (((uri compression file-size) + (narinfo-best-uri narinfo + #:fast-decompression? + %prefer-fast-decompression?))) (format #t "~a\n~a\n" (or file-size 0) (or (narinfo-size narinfo) 0)))) @@ -288,12 +313,30 @@ authorized substitutes." (lambda (obj) (valid-narinfo? obj acl)))) + (define* (make-progress-reporter total #:key url) + (define done 0) + + (define (report-progress) + (erase-current-line (current-error-port)) ;erase current line + (force-output (current-error-port)) + (format (current-error-port) + (G_ "updating substitutes from '~a'... ~5,1f%") + url (* 100. (/ done total))) + (set! done (+ 1 done))) + + (progress-reporter + (start report-progress) + (report report-progress) + (stop (lambda () + (newline (current-error-port)))))) + (match (string-tokenize command) (("have" paths ..1) ;; Return the subset of PATHS available in CACHE-URLS. (let ((substitutable (lookup-narinfos/diverse cache-urls paths valid? - #:open-connection open-connection-for-uri/cached))) + #:open-connection open-connection-for-uri/cached + #:make-progress-reporter make-progress-reporter))) (for-each (lambda (narinfo) (format #t "~a~%" (narinfo-path narinfo))) substitutable) @@ -302,7 +345,8 @@ authorized substitutes." ;; Reply info about PATHS if it's in CACHE-URLS. (let ((substitutable (lookup-narinfos/diverse cache-urls paths valid? - #:open-connection open-connection-for-uri/cached))) + #:open-connection open-connection-for-uri/cached + #:make-progress-reporter make-progress-reporter))) (for-each display-narinfo-data substitutable) (newline))) (wtf @@ -358,6 +402,32 @@ server certificates." (drain-input socket) socket)))))))) +(define (call-with-cached-connection uri proc) + (let ((port (open-connection-for-uri/cached uri + #:verify-certificate? #f))) + (catch #t + (lambda () + (proc port)) + (lambda (key . args) + ;; If PORT was cached and the server closed the connection in the + ;; meantime, we get EPIPE. In that case, open a fresh connection + ;; and retry. We might also get 'bad-response or a similar + ;; exception from (web response) later on, once we've sent the + ;; request, or a ERROR/INVALID-SESSION from GnuTLS. + (if (or (and (eq? key 'system-error) + (= EPIPE (system-error-errno `(,key ,@args)))) + (and (eq? key 'gnutls-error) + (eq? (first args) error/invalid-session)) + (memq key '(bad-response bad-header bad-header-component))) + (proc (open-connection-for-uri/cached uri + #:verify-certificate? #f + #:fresh? #t)) + (apply throw key args)))))) + +(define-syntax-rule (with-cached-connection uri port exp ...) + "Bind PORT with EXP... to a socket connected to URI." + (call-with-cached-connection uri (lambda (port) exp ...))) + (define* (process-substitution store-item destination #:key cache-urls acl deduplicate? print-build-trace?) @@ -402,14 +472,11 @@ the current output port." (warning (G_ "while fetching ~a: server is somewhat slow~%") (uri->string uri)) (warning (G_ "try `--no-substitutes' if the problem persists~%"))) - (call-with-connection-error-handling - uri - (lambda () - (http-fetch uri #:text? #f - #:open-connection open-connection-for-uri/cached - #:keep-alive? #t - #:buffered? #f - #:verify-certificate? #f)))))) + (with-cached-connection uri port + (http-fetch uri #:text? #f + #:port port + #:keep-alive? #t + #:buffered? #f))))) (else (leave (G_ "unsupported substitute URI scheme: ~a~%") (uri->string uri))))) @@ -419,7 +486,9 @@ the current output port." store-item)) (let-values (((uri compression file-size) - (narinfo-best-uri narinfo))) + (narinfo-best-uri narinfo + #:fast-decompression? + %prefer-fast-decompression?))) (unless print-build-trace? (format (current-error-port) (G_ "Downloading ~a...~%") (uri->string uri))) @@ -457,11 +526,28 @@ the current output port." ((hashed get-hash) (open-hash-input-port algorithm input))) ;; Unpack the Nar at INPUT into DESTINATION. - (restore-file hashed destination - #:dump-file (if (and destination-in-store? - deduplicate?) - dump-file/deduplicate* - dump-file)) + (define cpu-usage + (with-cpu-usage-monitoring + (restore-file hashed destination + #:dump-file (if (and destination-in-store? + deduplicate?) + dump-file/deduplicate* + dump-file)))) + + ;; Create a hysteresis: depending on CPU usage, favor compression + ;; methods with faster decompression (like ztsd) or methods with better + ;; compression ratios (like lzip). This stems from the observation that + ;; substitution can be CPU-bound when high-speed networks are used: + ;; <https://lists.gnu.org/archive/html/guix-devel/2020-12/msg00177.html>. + ;; To simulate "slow" networking or changing conditions, run: + ;; sudo tc qdisc add dev eno1 root tbf rate 512kbit latency 50ms burst 1540 + ;; and then cancel with: + ;; sudo tc qdisc del dev eno1 root + (when (> cpu-usage .8) + (set! %prefer-fast-decompression? #t)) + (when (< cpu-usage .2) + (set! %prefer-fast-decompression? #f)) + (close-port hashed) (close-port input) @@ -696,6 +782,8 @@ if needed, as expected by the daemon's agent." ;;; Local Variables: ;;; eval: (put 'with-timeout 'scheme-indent-function 1) ;;; eval: (put 'with-redirected-error-port 'scheme-indent-function 0) +;;; eval: (put 'with-cached-connection 'scheme-indent-function 2) +;;; eval: (put 'call-with-cached-connection 'scheme-indent-function 1) ;;; End: ;;; substitute.scm ends here diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index e3cf99acc6..c226f08371 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re> ;;; ;;; This file is part of GNU Guix. ;;; @@ -363,11 +364,14 @@ connection to the store." "Switch the system profile to the generation specified by SPEC, and re-install bootloader with a configuration file that uses the specified system generation as its default entry. STORE is an open connection to the store." - (let ((number (relative-generation-spec->number %system-profile spec))) + (let* ((number (relative-generation-spec->number %system-profile spec)) + (generation (generation-file-name %system-profile number)) + (activate (string-append generation "/activate"))) (if number (begin (reinstall-bootloader store number) - (switch-to-generation* %system-profile number)) + (switch-to-generation* %system-profile number) + (unless-file-not-found (primitive-load activate))) (leave (G_ "cannot switch to system generation '~a'~%") spec)))) (define* (system-bootloader-name #:optional (system %system-profile)) diff --git a/guix/scripts/time-machine.scm b/guix/scripts/time-machine.scm index 0d27414702..4aafd432e8 100644 --- a/guix/scripts/time-machine.scm +++ b/guix/scripts/time-machine.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019 Konrad Hinsen <konrad.hinsen@fastmail.net> ;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -118,6 +119,10 @@ Execute COMMAND ARGS... in an older version of Guix.\n")) (let-values (((args command) (break (cut string=? "--" <>) args))) (let ((opts (parse-command-line args %options (list %default-options)))) + (when (assoc-ref opts 'argument) + (leave (G_ "~A: extraneous argument~%") + (assoc-ref opts 'argument))) + (match command (() opts) (("--") opts) diff --git a/guix/scripts/weather.scm b/guix/scripts/weather.scm index 9e94bff5a3..5164fe0494 100644 --- a/guix/scripts/weather.scm +++ b/guix/scripts/weather.scm @@ -117,8 +117,8 @@ values." (end (current-time time-monotonic))) (apply kont (time-difference end start) result))) -(define-syntax-rule (let/time ((time result exp)) body ...) - (call-with-time (lambda () exp) (lambda (time result) body ...))) +(define-syntax-rule (let/time ((time result ... exp)) body ...) + (call-with-time (lambda () exp) (lambda (time result ...) body ...))) (define (histogram field proc seed lst) "Return an alist giving a histogram of all the values of FIELD for elements @@ -181,7 +181,12 @@ Return the coverage ratio, an exact number between 0 and 1." (format #t (G_ "looking for ~h store items on ~a...~%") (length items) server) - (let/time ((time narinfos (lookup-narinfos server items))) + (let/time ((time narinfos requests-made + (lookup-narinfos + server items + #:make-progress-reporter + (lambda* (total #:key url #:allow-other-keys) + (progress-reporter/bar total))))) (format #t "~a~%" server) (let ((obtained (length narinfos)) (requested (length items)) @@ -207,10 +212,11 @@ Return the coverage ratio, an exact number between 0 and 1." total))))) (format #t (G_ " ~,1h MiB on disk (uncompressed)~%") (/ (reduce + 0 (map narinfo-size narinfos)) MiB)) - (format #t (G_ " ~,3h seconds per request (~,1h seconds in total)~%") - (/ time requested 1.) time) - (format #t (G_ " ~,1h requests per second~%") - (/ requested time 1.)) + (when (> requests-made 0) + (format #t (G_ " ~,3h seconds per request (~,1h seconds in total)~%") + (/ time requests-made 1.) time) + (format #t (G_ " ~,1h requests per second~%") + (/ requests-made time 1.))) (guard (c ((http-get-error? c) (if (= 404 (http-get-error-code c)) diff --git a/guix/self.scm b/guix/self.scm index 35fba1152d..3154d180ac 100644 --- a/guix/self.scm +++ b/guix/self.scm @@ -56,6 +56,7 @@ ("guile-ssh" (ref '(gnu packages ssh) 'guile-ssh)) ("guile-git" (ref '(gnu packages guile) 'guile-git)) ("guile-semver" (ref '(gnu packages guile-xyz) 'guile-semver)) + ("guile-lib" (ref '(gnu packages guile-xyz) 'guile-lib)) ("guile-sqlite3" (ref '(gnu packages guile) 'guile-sqlite3)) ("guile-zlib" (ref '(gnu packages guile) 'guile-zlib)) ("guile-lzlib" (ref '(gnu packages guile) 'guile-lzlib)) @@ -814,6 +815,9 @@ itself." (define guile-ssh (specification->package "guile-ssh")) + (define guile-lib + (specification->package "guile-lib")) + (define guile-git (specification->package "guile-git")) @@ -842,7 +846,7 @@ itself." (append-map transitive-package-dependencies (list guile-gcrypt gnutls guile-git guile-avahi guile-json guile-semver guile-ssh guile-sqlite3 - guile-zlib guile-lzlib guile-zstd))) + guile-lib guile-zlib guile-lzlib guile-zstd))) (define *core-modules* (scheme-node "guix-core" diff --git a/guix/status.scm b/guix/status.scm index 9ca6d92470..d47bf1700c 100644 --- a/guix/status.scm +++ b/guix/status.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. @@ -23,8 +23,7 @@ #:use-module (guix colors) #:use-module (guix progress) #:autoload (guix build syscalls) (terminal-columns) - #:use-module ((guix build download) - #:select (nar-uri-abbreviation)) + #:autoload (guix build download) (nar-uri-abbreviation) #:use-module (guix store) #:use-module (guix derivations) #:use-module (guix memoization) diff --git a/guix/substitutes.scm b/guix/substitutes.scm index dc94ccc8e4..08f8c24efd 100644 --- a/guix/substitutes.scm +++ b/guix/substitutes.scm @@ -173,18 +173,14 @@ if file doesn't exist, and the narinfo otherwise." (apply throw args))))) (define* (fetch-narinfos url paths - #:key (open-connection guix:open-connection-for-uri)) + #:key + (open-connection guix:open-connection-for-uri) + (make-progress-reporter + (const progress-reporter/silent))) "Retrieve all the narinfos for PATHS from the cache at URL and return them." - (define update-progress! - (let ((done 0) - (total (length paths))) - (lambda () - (display "\r\x1b[K" (current-error-port)) ;erase current line - (force-output (current-error-port)) - (format (current-error-port) - (G_ "updating substitutes from '~a'... ~5,1f%") - url (* 100. (/ done total))) - (set! done (+ 1 done))))) + (define progress-reporter + (make-progress-reporter (length paths) + #:url url)) (define hash-part->path (let ((mapping (fold (lambda (path result) @@ -206,7 +202,7 @@ if file doesn't exist, and the narinfo otherwise." (len (response-content-length response)) (cache (response-cache-control response)) (ttl (and cache (assoc-ref cache 'max-age)))) - (update-progress!) + (progress-reporter-report! progress-reporter) ;; Make sure to read no more than LEN bytes since subsequent bytes may ;; belong to the next response. @@ -238,7 +234,7 @@ if file doesn't exist, and the narinfo otherwise." ;; narinfos, which provides a much stronger guarantee. (let* ((requests (map (cut narinfo-request url <>) paths)) (result (begin - (update-progress!) + (start-progress-reporter! progress-reporter) (call-with-connection-error-handling uri (lambda () @@ -247,7 +243,7 @@ if file doesn't exist, and the narinfo otherwise." requests #:open-connection open-connection #:verify-certificate? #f)))))) - (newline (current-error-port)) + (stop-progress-reporter! progress-reporter) result)) ((file #f) (let* ((base (string-append (uri-path uri) "/")) @@ -297,7 +293,9 @@ for PATH." (values #f #f)))) (define* (lookup-narinfos cache paths - #:key (open-connection guix:open-connection-for-uri)) + #:key (open-connection guix:open-connection-for-uri) + (make-progress-reporter + (const progress-reporter/silent))) "Return the narinfos for PATHS, invoking the server at CACHE when no information is available locally." (let-values (((cached missing) @@ -312,15 +310,20 @@ information is available locally." '() '() paths))) - (if (null? missing) - cached - (let ((missing (fetch-narinfos cache missing - #:open-connection open-connection))) - (append cached (or missing '())))))) + (values (if (null? missing) + cached + (let ((missing (fetch-narinfos cache missing + #:open-connection open-connection + #:make-progress-reporter + make-progress-reporter))) + (append cached (or missing '())))) + (length missing)))) (define* (lookup-narinfos/diverse caches paths authorized? #:key (open-connection - guix:open-connection-for-uri)) + guix:open-connection-for-uri) + (make-progress-reporter + (const progress-reporter/silent))) "Look up narinfos for PATHS on all of CACHES, a list of URLS, in that order. That is, when a cache lacks an AUTHORIZED? narinfo, look it up in the next cache, and so on. @@ -353,7 +356,9 @@ AUTHORIZED? narinfo." (match caches ((cache rest ...) (let* ((narinfos (lookup-narinfos cache paths - #:open-connection open-connection)) + #:open-connection open-connection + #:make-progress-reporter + make-progress-reporter)) (definite (map narinfo-path (filter authorized? narinfos))) (missing (lset-difference string=? paths definite))) ;XXX: perf (loop rest missing diff --git a/guix/tests.scm b/guix/tests.scm index 4c6c7d95db..da75835099 100644 --- a/guix/tests.scm +++ b/guix/tests.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -143,7 +143,7 @@ no external store to talk to." (lambda () ;; Since we're using a different store we must clear the ;; package-derivation cache. - (hash-clear! (@@ (guix derivations) %derivation-cache)) + (hash-clear! (@@ (guix packages) %derivation-cache)) (proc store)) (lambda () diff --git a/guix/tests/http.scm b/guix/tests/http.scm index 4119e9ce01..8f50eaefca 100644 --- a/guix/tests/http.scm +++ b/guix/tests/http.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,12 +22,12 @@ #:use-module (web server) #:use-module (web server http) #:use-module (web response) + #:use-module (srfi srfi-11) #:use-module (srfi srfi-39) #:use-module (ice-9 match) #:export (with-http-server call-with-http-server %http-server-port - http-server-can-listen? %local-url)) ;;; Commentary: @@ -37,12 +38,13 @@ (define %http-server-port ;; TCP port to use for the stub HTTP server. - (make-parameter 9999)) + ;; If 0, the OS will automatically choose + ;; a port. + (make-parameter 0)) (define (open-http-server-socket) - "Return a listening socket for the web server. It is useful to export it so -that tests can check whether we succeeded opening the socket and tests skip if -needed." + "Return a listening socket for the web server and the port +actually listened at (in case %http-server-port was 0)." (catch 'system-error (lambda () (let ((sock (socket PF_INET SOCK_STREAM 0))) @@ -50,22 +52,18 @@ needed." (bind sock (make-socket-address AF_INET INADDR_LOOPBACK (%http-server-port))) - sock)) + (values sock + (sockaddr:port (getsockname sock))))) (lambda args (let ((err (system-error-errno args))) (format (current-error-port) "warning: cannot run Web server for tests: ~a~%" (strerror err)) - #f)))) - -(define (http-server-can-listen?) - "Return #t if we managed to open a listening socket." - (and=> (open-http-server-socket) - (lambda (socket) - (close-port socket) - #t))) + (values #f #f))))) (define* (%local-url #:optional (port (%http-server-port))) + (when (= port 0) + (error "no web server is running!")) ;; URL to use for 'home-page' tests. (string-append "http://localhost:" (number->string port) "/foo/bar")) @@ -73,7 +71,10 @@ needed." (define* (call-with-http-server responses+data thunk) "Call THUNK with an HTTP server running and returning RESPONSES+DATA on HTTP requests. Each element of RESPONSES+DATA must be a tuple containing a -response and a string, or an HTTP response code and a string." +response and a string, or an HTTP response code and a string. + +%http-server-port will be set to the port listened at +The port listened at will be set for the dynamic extent of THUNK." (define responses (map (match-lambda (((? response? response) data) @@ -100,6 +101,7 @@ response and a string, or an HTTP response code and a string." ;; Mutex and condition variable to synchronize with the HTTP server. (define %http-server-lock (make-mutex)) (define %http-server-ready (make-condition-variable)) + (define %http-real-server-port #f) (define (http-open . args) "Start listening for HTTP requests and signal %HTTP-SERVER-READY." @@ -122,7 +124,8 @@ response and a string, or an HTTP response code and a string." (set! responses rest) (values response data)))) - (let ((socket (open-http-server-socket))) + (let-values (((socket port) (open-http-server-socket))) + (set! %http-real-server-port port) (catch 'quit (lambda () (run-server handle stub-http-server @@ -134,7 +137,8 @@ response and a string, or an HTTP response code and a string." (let ((server (make-thread server-body))) (wait-condition-variable %http-server-ready %http-server-lock) ;; Normally SERVER exits automatically once it has received a request. - (thunk)))) + (parameterize ((%http-server-port %http-real-server-port)) + (thunk))))) (define-syntax with-http-server (syntax-rules () diff --git a/guix/utils.scm b/guix/utils.scm index 96cd8c791e..7db9f52ff6 100644 --- a/guix/utils.scm +++ b/guix/utils.scm @@ -10,6 +10,7 @@ ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com> +;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -48,6 +49,7 @@ #:use-module (ice-9 match) #:use-module (ice-9 format) #:use-module ((ice-9 iconv) #:prefix iconv:) + #:autoload (zlib) (make-zlib-input-port make-zlib-output-port) #:use-module (system foreign) #:re-export (<location> ;for backwards compatibility location @@ -83,6 +85,7 @@ target-arm32? target-aarch64? target-arm? + target-powerpc? target-64bit? cc-for-target cxx-for-target @@ -234,8 +237,9 @@ a symbol such as 'xz." (match compression ((or #f 'none) (values input '())) ('bzip2 (filtered-port `(,%bzip2 "-dc") input)) - ('xz (filtered-port `(,%xz "-dc" ,@(%xz-parallel-args)) input)) - ('gzip (filtered-port `(,%gzip "-dc") input)) + ('xz (filtered-port `(,%xz "-dc") input)) + ('gzip (values (make-zlib-input-port input #:format 'gzip) + '())) ('lzip (values (lzip-port 'make-lzip-input-port input) '())) ('zstd (values (zstd-port 'make-zstd-input-port input) @@ -307,9 +311,9 @@ program--e.g., '(\"--fast\")." (match compression ((or #f 'none) (values output '())) ('bzip2 (filtered-output-port `(,%bzip2 "-c" ,@options) output)) - ('xz (filtered-output-port `(,%xz "-c" ,@(%xz-parallel-args) - ,@options) output)) - ('gzip (filtered-output-port `(,%gzip "-c" ,@options) output)) + ('xz (filtered-output-port `(,%xz "-c" ,@options) output)) + ('gzip (values (make-zlib-output-port output #:format 'gzip) + '())) ('lzip (values (lzip-port 'make-lzip-output-port output) '())) ('zstd (values (zstd-port 'make-zstd-output-port output) @@ -555,9 +559,13 @@ a character other than '@'." (%current-system)))) (or (target-arm32? target) (target-aarch64? target))) +(define* (target-powerpc? #:optional (target (or (%current-target-system) + (%current-system)))) + (string-prefix? "powerpc" target)) + (define* (target-64bit? #:optional (system (or (%current-target-system) (%current-system)))) - (any (cut string-prefix? <> system) '("x86_64" "aarch64" "mips64" "ppc64"))) + (any (cut string-prefix? <> system) '("x86_64" "aarch64" "mips64" "powerpc64"))) (define* (cc-for-target #:optional (target (%current-target-system))) (if target diff --git a/m4/guix.m4 b/m4/guix.m4 index c1ce0876fa..05d409a674 100644 --- a/m4/guix.m4 +++ b/m4/guix.m4 @@ -2,6 +2,7 @@ dnl GNU Guix --- Functional package management for GNU dnl Copyright © 2012, 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> dnl Copyright © 2014 Mark H Weaver <mhw@netris.org> dnl Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> +dnl Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> dnl dnl This file is part of GNU Guix. dnl @@ -88,7 +89,7 @@ courageous and port the GNU System distribution to it (see # Currently only Linux-based systems are supported, and only on some # platforms. case "$guix_system" in - x86_64-linux|i686-linux|armhf-linux|aarch64-linux) + x86_64-linux|i686-linux|armhf-linux|aarch64-linux|powerpc64le-linux) ;; *) if test "x$guix_courageous" = "xyes"; then @@ -226,6 +227,24 @@ AC_DEFUN([GUIX_CHECK_GUILE_GIT], [ fi]) ]) +dnl GUIX_CHECK_GUILE_ZLIB +dnl +dnl Check whether a recent-enough Guile-zlib is available. +AC_DEFUN([GUIX_CHECK_GUILE_ZLIB], [ + dnl Check whether we're using Guile-zlib 0.1.0 or later. + dnl 0.1.0 introduced the 'make-zlib-input-port' and related code. + AC_CACHE_CHECK([whether Guile-zlib is available and recent enough], + [guix_cv_have_recent_guile_zlib], + [GUILE_CHECK([retval], + [(use-modules (zlib)) + make-zlib-input-port]) + if test "$retval" = 0; then + guix_cv_have_recent_guile_zlib="yes" + else + guix_cv_have_recent_guile_zlib="no" + fi]) +]) + dnl GUIX_TEST_ROOT_DIRECTORY AC_DEFUN([GUIX_TEST_ROOT_DIRECTORY], [ AC_CACHE_CHECK([for unit test root directory], diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc index 20d83fea4a..4f486f0822 100644 --- a/nix/libstore/build.cc +++ b/nix/libstore/build.cc @@ -1621,6 +1621,24 @@ void DerivationGoal::startBuilder() auto drvName = storePathToName(drvPath); tmpDir = createTempDir("", "guix-build-" + drvName, false, false, 0700); + if (useChroot) { + /* Make the build directory seen by the build process a sub-directory. + That way, "/tmp/guix-build-foo.drv-0" is root-owned, and thus its + permissions cannot be changed by the build process, while + "/tmp/guix-build-foo.drv-0/top" is owned by the build user. This + cannot be done when !useChroot because then $NIX_BUILD_TOP would + be inaccessible to the build user by its full file name. + + If the build user could make the build directory world-writable, + then an attacker could create in it a hardlink to a root-owned file + such as /etc/shadow. If 'keepFailed' is true, the daemon would + then chown that hardlink to the user, giving them write access to + that file. */ + tmpDir += "/top"; + if (mkdir(tmpDir.c_str(), 0700) == 1) + throw SysError("creating top-level build directory"); + } + /* In a sandbox, for determinism, always use the same temporary directory. */ tmpDirInSandbox = useChroot ? canonPath("/tmp", true) + "/guix-build-" + drvName + "-0" : tmpDir; @@ -2626,20 +2644,41 @@ static void _chown(const Path & path, uid_t uid, gid_t gid) void DerivationGoal::deleteTmpDir(bool force) { if (tmpDir != "") { + // When useChroot is true, tmpDir looks like + // "/tmp/guix-build-foo.drv-0/top". Its parent is root-owned. + string top; + if (useChroot) { + if (baseNameOf(tmpDir) != "top") abort(); + top = dirOf(tmpDir); + } else top = tmpDir; + if (settings.keepFailed && !force) { printMsg(lvlError, format("note: keeping build directory `%2%'") - % drvPath % tmpDir); + % drvPath % top); chmod(tmpDir.c_str(), 0755); + // Change the ownership if clientUid is set. Never change the // ownership or the group to "root" for security reasons. if (settings.clientUid != (uid_t) -1 && settings.clientUid != 0) { _chown(tmpDir, settings.clientUid, settings.clientGid != 0 ? settings.clientGid : -1); + + if (top != tmpDir) { + // Rename tmpDir to its parent, with an intermediate step. + string pivot = top + ".pivot"; + if (rename(top.c_str(), pivot.c_str()) == -1) + throw SysError("pivoting failed build tree"); + if (rename((pivot + "/top").c_str(), top.c_str()) == -1) + throw SysError("renaming failed build tree"); + rmdir(pivot.c_str()); + } } } - else + else { deletePath(tmpDir); + if (top != tmpDir) rmdir(dirOf(tmpDir).c_str()); + } tmpDir = ""; } } diff --git a/nix/nix-daemon/guix-daemon.cc b/nix/nix-daemon/guix-daemon.cc index 30d0e5d11d..36a06a3fae 100644 --- a/nix/nix-daemon/guix-daemon.cc +++ b/nix/nix-daemon/guix-daemon.cc @@ -1,5 +1,5 @@ /* GNU Guix --- Functional package management for GNU - Copyright (C) 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> + Copyright (C) 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2021 Ludovic Courtès <ludo@gnu.org> Copyright (C) 2006, 2010, 2012, 2014 Eelco Dolstra <e.dolstra@tudelft.nl> This file is part of GNU Guix. @@ -268,7 +268,7 @@ parse_opt (int key, char *arg, struct argp_state *state) break; case GUIX_OPT_DISCOVER: useDiscover = string_to_bool (arg); - settings.set("discover", arg); + settings.set ("discover", useDiscover ? "true" : "false"); break; case GUIX_OPT_DEBUG: verbosity = lvlDebug; diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in index 666e630adf..cbbfe1e76b 100644 --- a/po/guix/POTFILES.in +++ b/po/guix/POTFILES.in @@ -101,6 +101,7 @@ guix/scripts/import/cpan.scm guix/scripts/import/crate.scm guix/scripts/import/gem.scm guix/scripts/import/gnu.scm +guix/scripts/import/go.scm guix/scripts/import/hackage.scm guix/scripts/import/json.scm guix/scripts/import/nix.scm diff --git a/tests/derivations.scm b/tests/derivations.scm index 9f1104a887..cd165d1be6 100644 --- a/tests/derivations.scm +++ b/tests/derivations.scm @@ -77,9 +77,6 @@ (lambda (e1 e2) (string<? (car e1) (car e2))))) -;; Avoid collisions with other tests. -(%http-server-port 10500) - (test-begin "derivations") @@ -205,8 +202,6 @@ (build-derivations %store (list drv)) #f))) -(unless (http-server-can-listen?) - (test-skip 1)) (test-assert "'download' built-in builder" (let ((text (random-text))) (with-http-server `((200 ,text)) @@ -221,8 +216,6 @@ get-string-all) text)))))) -(unless (http-server-can-listen?) - (test-skip 1)) (test-assert "'download' built-in builder, invalid hash" (with-http-server `((200 "hello, world!")) (let* ((drv (derivation %store "world" @@ -236,8 +229,6 @@ (build-derivations %store (list drv)) #f)))) -(unless (http-server-can-listen?) - (test-skip 1)) (test-assert "'download' built-in builder, not found" (with-http-server '((404 "not found")) (let* ((drv (derivation %store "will-never-be-found" @@ -262,26 +253,24 @@ (build-derivations %store (list drv)) #f))) -(unless (http-server-can-listen?) - (test-skip 1)) (test-assert "'download' built-in builder, check mode" ;; Make sure rebuilding the 'builtin:download' derivation in check mode ;; works. See <http://bugs.gnu.org/25089>. - (let* ((text (random-text)) - (drv (derivation %store "world" - "builtin:download" '() - #:env-vars `(("url" - . ,(object->string (%local-url)))) - #:hash-algo 'sha256 - #:hash (gcrypt:sha256 (string->utf8 text))))) - (and (with-http-server `((200 ,text)) - (build-derivations %store (list drv))) - (with-http-server `((200 ,text)) - (build-derivations %store (list drv) - (build-mode check))) - (string=? (call-with-input-file (derivation->output-path drv) - get-string-all) - text)))) + (let* ((text (random-text))) + (with-http-server `((200 ,text)) + (let ((drv (derivation %store "world" + "builtin:download" '() + #:env-vars `(("url" + . ,(object->string (%local-url)))) + #:hash-algo 'sha256 + #:hash (gcrypt:sha256 (string->utf8 text))))) + (and drv (build-derivations %store (list drv)) + (with-http-server `((200 ,text)) + (build-derivations %store (list drv) + (build-mode check))) + (string=? (call-with-input-file (derivation->output-path drv) + get-string-all) + text)))))) (test-equal "derivation-name" "foo-0.0" diff --git a/tests/elpa.scm b/tests/elpa.scm index a008cf993c..01ef948b2e 100644 --- a/tests/elpa.scm +++ b/tests/elpa.scm @@ -40,9 +40,6 @@ nil "Integrated environment for *TeX*" tar ((:url . "http://www.gnu.org/software/auctex/"))]))) -;; Avoid collisions with other tests. -(%http-server-port 10300) - (test-begin "elpa") (define (eval-test-with-elpa pkg) diff --git a/tests/gnu-maintenance.scm b/tests/gnu-maintenance.scm index 4f2f1ae943..a3e48a0933 100644 --- a/tests/gnu-maintenance.scm +++ b/tests/gnu-maintenance.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2015, 2021 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,7 +29,8 @@ '(("gcc" "gcc-5.3.0.tar.bz2") ("texmacs" "TeXmacs-1.0.7.9-src.tar.gz") ("icecat" "icecat-38.4.0-gnu1.tar.bz2") - ("mit-scheme" "mit-scheme-9.2.tar.gz"))) + ("mit-scheme" "mit-scheme-9.2.tar.gz") + ("mediainfo" "mediainfo_20.09.tar.xz"))) (every (lambda (project+file) (not (apply release-file? project+file))) '(("guile" "guile-www-1.1.1.tar.gz") diff --git a/tests/go.scm b/tests/go.scm new file mode 100644 index 0000000000..6ab99f508a --- /dev/null +++ b/tests/go.scm @@ -0,0 +1,292 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright 2021 Franois Joulaud <francois.joulaud@radiofrance.com> +;;; +;;; 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/>. + +;;; Summary +;; Tests for guix/import/go.scm + +(define-module (test-import-go) + #:use-module (guix base32) + #:use-module (guix build-system go) + #:use-module (guix import go) + #:use-module (guix base32) + #:use-module ((guix utils) #:select (call-with-temporary-directory)) + #:use-module (guix tests) + #:use-module (ice-9 match) + #:use-module (srfi srfi-19) + #:use-module (srfi srfi-64) + #:use-module (web response)) + +(define parse-go.mod + (@@ (guix import go) parse-go.mod)) + +(define fixture-go-mod-simple + "module my/thing +go 1.12 +require other/thing v1.0.2 +require new/thing/v2 v2.3.4 +exclude old/thing v1.2.3 +replace bad/thing v1.4.5 => good/thing v1.4.5 +") + +(define fixture-go-mod-with-block + "module M + +require ( + A v1 + B v1.0.0 + C v1.0.0 + D v1.2.3 + E dev +) + +exclude D v1.2.3 +") + + +(define fixture-go-mod-complete + "module M + +go 1.13 + +replace github.com/myname/myproject/myapi => ./api + +replace github.com/mymname/myproject/thissdk => ../sdk + +replace launchpad.net/gocheck => github.com/go-check/check v0.0.0-20140225173054-eb6ee6f84d0a + +require ( + github.com/user/project v1.1.11 + github.com/user/project/sub/directory v1.1.12 + bitbucket.org/user/project v1.11.20 + bitbucket.org/user/project/sub/directory v1.11.21 + launchpad.net/project v1.1.13 + launchpad.net/project/series v1.1.14 + launchpad.net/project/series/sub/directory v1.1.15 + launchpad.net/~user/project/branch v1.1.16 + launchpad.net/~user/project/branch/sub/directory v1.1.17 + hub.jazz.net/git/user/project v1.1.18 + hub.jazz.net/git/user/project/sub/directory v1.1.19 + k8s.io/kubernetes/subproject v1.1.101 + one.example.com/abitrary/repo v1.1.111 + two.example.com/abitrary/repo v0.0.2 + \"quoted.example.com/abitrary/repo\" v0.0.2 +) + +replace two.example.com/abitrary/repo => github.com/corp/arbitrary-repo v0.0.2 + +replace ( + golang.org/x/sys => golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a // pinned to release-branch.go1.13 + golang.org/x/tools => golang.org/x/tools v0.0.0-20190821162956-65e3620a7ae7 // pinned to release-branch.go1.13 +) + +") + + + +(define fixture-latest-for-go-check + "{\"Version\":\"v0.0.0-20201130134442-10cb98267c6c\",\"Time\":\"2020-11-30T13:44:42Z\"}") + + +(define fixtures-go-check-test + (let ((version + "{\"Version\":\"v0.0.0-20201130134442-10cb98267c6c\",\"Time\":\"2020-11-30T13:44:42Z\"}") + (go.mod + "module gopkg.in/check.v1 + +go 1.11 + +require github.com/kr/pretty v0.2.1 +") + (go-get + "<!DOCTYPE html> +<html lang=\"en\" > + <head> + <meta charset=\"utf-8\"> + <link rel=\"dns-prefetch\" href=\"https://github.githubassets.com\"> + <script crossorigin=\"anonymous\" defer=\"defer\" integrity=\"sha512-aw5tciVT0IsECUmMuwp9ez60QReE2/yFNL1diLgZnOom6RhU8+0lG3RlAKto4JwbCoEP15E41Pksd7rK5BKfCQ==\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/topic-suggestions-6b0e6d72.js\"></script> + <meta name=\"viewport\" content=\"width=device-width\"> + + <title>GitHub - go-check/check: Rich testing for the Go language</title> + <meta name=\"description\" content=\"Rich testing for the Go language. Contribute to go-check/check development by creating an account on GitHub.\"> + <link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"/opensearch.xml\" title=\"GitHub\"> + <link rel=\"fluid-icon\" href=\"https://github.com/fluidicon.png\" title=\"GitHub\"> + <!-- To prevent page flashing, the optimizely JS needs to be loaded in the + <head> tag before the DOM renders --> + <meta name=\"hostname\" content=\"github.com\"> + <meta name=\"user-login\" content=\"\"> + <link href=\"https://github.com/go-check/check/commits/v1.atom\" rel=\"alternate\" title=\"Recent Commits to check:v1\" type=\"application/atom+xml\"> + <meta name=\"go-import\" content=\"github.com/go-check/check git https://github.com/go-check/check.git\"> + </head> + <body class=\"logged-out env-production page-responsive\" style=\"word-wrap: break-word;\"> + </body> +</html> +") + (pkg.go.dev "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\">\n</head>\n<body class=\"Site Site--wide Site--redesign\">\n <div class=\"Site-content\">\n <div class=\"Container\">\n <div class=\"UnitDetails\" data-test-id=\"UnitDetails\">\n <div class=\"UnitDetails-content js-unitDetailsContent\" role=\"main\" data-test-id=\"UnitDetails-content\">\n <div class=\"UnitReadme js-readme\">\n <h2 class=\"UnitReadme-title\" id=\"section-readme\"><img height=\"25px\" width=\"20px\" src=\"/static/img/pkg-icon-readme_20x16.svg\" alt=\"\">README</h2>\n <div class=\"UnitReadme-content\" data-test-id=\"Unit-readmeContent\">\n <div class=\"Overview-readmeContent js-readmeContent\">\n <h3 class=\"h1\" id=\"readme-instructions\">Instructions</h3>\n <p>Install the package with:</p>\n <pre><code>go get gopkg.in/check.v1\n</code></pre>\n </div>\n <div class=\"UnitReadme-fadeOut\"></div>\n </div>\n </div>\n <div class=\"UnitDoc\">\n <h2 class=\"UnitDoc-title\" id=\"section-documentation\"><img height=\"25px\" width=\"20px\" src=\"/static/img/pkg-icon-doc_20x12.svg\" alt=\"\">Documentation</h2>\n <div class=\"Documentation js-documentation\">\n <div class=\"Documentation-content js-docContent\">\n <section class=\"Documentation-overview\">\n <h3 tabindex=\"-1\" id=\"pkg-overview\" class=\"Documentation-overviewHeader\">Overview <a href=\"#pkg-overview\"></a></h3>\n <div role=\"navigation\" aria-label=\"Table of Contents\">\n <ul class=\"Documentation-toc\"></ul>\n </div>\n <p>Package check is a rich testing extension for Go's testing package.</p>\n <p>For details about the project, see:</p>\n <pre><a href=\"http://labix.org/gocheck\">http://labix.org/gocheck</a>\n</pre>\n </section>\n <h3 tabindex=\"-1\" id=\"pkg-constants\" class=\"Documentation-constantsHeader\">Constants <a href=\"#pkg-constants\"></a></h3>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</body>\n</html>\n") + (pkg.go.dev-licence "<!DOCTYPE html>\n<html lang=\"en\">\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<body class=\"Site Site--wide Site--redesign\">\n <div class=\"Unit-content\" role=\"main\">\n <section class=\"License\" id=\"lic-0\">\n <h2><div id=\"#lic-0\">BSD-2-Clause</div></h2>\n <p>This is not legal advice. <a href=\"/license-policy\">Read disclaimer.</a></p>\n <pre class=\"License-contents\">Gocheck - A rich testing framework for Go\n \nCopyright line\n\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met: \n\n1. Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer. \n2. Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution. \n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n</pre>\n </section>\n <div class=\"License-source\">Source: github.com/go-check/check@v0.0.0-20201128035030-22ab2dfb190c/LICENSE</div>\n </div>\n </div>\n")) + `(("https://proxy.golang.org/github.com/go-check/check/@v/v0.0.0-20201130134442-10cb98267c6c.mod" + . ,go.mod) + ("https://proxy.golang.org/github.com/go-check/check/@latest" + . ,version) + ("https://github.com/go-check/check?go-get=1" + . ,go-get) + ("https://pkg.go.dev/github.com/go-check/check" + . ,pkg.go.dev) + ("https://pkg.go.dev/github.com/go-check/check?tab=licenses" + . ,pkg.go.dev-licence)))) + +(test-begin "go") + +;;; Unit tests for go build-system + +(test-equal "go-version basic" + "v1.0.2" + (go-version->git-ref "v1.0.2")) + +(test-equal "go-version omited 'v' character" + "v1.0.2" + (go-version->git-ref "v1.0.2")) + +(test-equal "go-version with embeded git-ref" + "65e3620a7ae7" + (go-version->git-ref "v0.0.0-20190821162956-65e3620a7ae7")) + +(test-equal "go-version with complex embeded git-ref" + "daa7c04131f5" + (go-version->git-ref "v1.2.4-0.20191109021931-daa7c04131f5")) + +;;; Unit tests for (guix import go) + +(test-equal "go-path-escape" + "github.com/!azure/!avere" + ((@@ (guix import go) go-path-escape) "github.com/Azure/Avere")) + + +;; We define a function for all similar tests with different go.mod files +(define (testing-parse-mod name expected input) + (define (inf? p1 p2) + (string<? (car p1) (car p2))) + (let ((input-port (open-input-string input))) + (test-equal name + (sort expected inf?) + (sort + ( (@@ (guix import go) parse-go.mod) + input-port) + inf?)))) + +(testing-parse-mod "parse-go.mod-simple" + '(("good/thing" . "v1.4.5") + ("new/thing/v2" . "v2.3.4") + ("other/thing" . "v1.0.2")) + fixture-go-mod-simple) + +(testing-parse-mod "parse-go.mod-with-block" + '(("A" . "v1") + ("B" . "v1.0.0") + ("C" . "v1.0.0") + ("D" . "v1.2.3") + ("E" . "dev")) + fixture-go-mod-with-block) + +(testing-parse-mod "parse-go.mod-complete" + '(("github.com/corp/arbitrary-repo" . "v0.0.2") + ("quoted.example.com/abitrary/repo" . "v0.0.2") + ("one.example.com/abitrary/repo" . "v1.1.111") + ("hub.jazz.net/git/user/project/sub/directory" . "v1.1.19") + ("hub.jazz.net/git/user/project" . "v1.1.18") + ("launchpad.net/~user/project/branch/sub/directory" . "v1.1.17") + ("launchpad.net/~user/project/branch" . "v1.1.16") + ("launchpad.net/project/series/sub/directory" . "v1.1.15") + ("launchpad.net/project/series" . "v1.1.14") + ("launchpad.net/project" . "v1.1.13") + ("bitbucket.org/user/project/sub/directory" . "v1.11.21") + ("bitbucket.org/user/project" . "v1.11.20") + ("k8s.io/kubernetes/subproject" . "v1.1.101") + ("github.com/user/project/sub/directory" . "v1.1.12") + ("github.com/user/project" . "v1.1.11") + ("github.com/go-check/check" . "v0.0.0-20140225173054-eb6ee6f84d0a")) + fixture-go-mod-complete) + +;;; End-to-end tests for (guix import go) +(define (mock-http-fetch testcase) + (lambda (url . rest) + (let ((body (assoc-ref testcase url))) + (if body + (open-input-string body) + (error "mocked http-fetch Unexpected URL: " url))))) + +(define (mock-http-get testcase) + (lambda (url . rest) + (let ((body (assoc-ref testcase url)) + (response-header + (build-response + #:version '(1 . 1) + #:code 200 + #:reason-phrase "Ok" + #:headers `( + (content-type text/html (charset . "utf-8")) + (date . ,(make-date 0 10 58 12 6 3 2021 0)) + (transfer-encoding (chunked))) + #:port #f + #:validate-headers? #t))) + (if body + (values response-header body) + (error "mocked http-get Unexpected URL: " url))))) + +(test-equal "go-module->guix-package" + '(package + (name "go-github-com-go-check-check") + (version "0.0.0-20201130134442-10cb98267c6c") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/go-check/check.git") + (commit (go-version->git-ref version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0sjjj9z1dhilhpc8pq4154czrb79z9cm044jvn75kxcjv6v5l2m5")))) + (build-system go-build-system) + (arguments + (quote (#:import-path "github.com/go-check/check"))) + (inputs + (quasiquote (("go-github-com-kr-pretty" + (unquote go-github-com-kr-pretty))))) + (home-page "https://github.com/go-check/check") + (synopsis "Instructions") + (description #f) + (license license:bsd-2)) + + ;; Replace network resources with sample data. + (call-with-temporary-directory + (lambda (checkout) + (mock ((web client) http-get + (mock-http-get fixtures-go-check-test)) + (mock ((guix http-client) http-fetch + (mock-http-fetch fixtures-go-check-test)) + (mock ((guix git) update-cached-checkout + (lambda* (url #:key ref) + ;; Return an empty directory and its hash. + (values checkout + (nix-base32-string->bytevector + "0sjjj9z1dhilhpc8pq4154czrb79z9cm044jvn75kxcjv6v5l2m5") + #f))) + (go-module->guix-package "github.com/go-check/check"))))))) + +(test-end "go") + diff --git a/tests/guix-build.sh b/tests/guix-build.sh index b7602e668c..e20702c521 100644 --- a/tests/guix-build.sh +++ b/tests/guix-build.sh @@ -1,6 +1,7 @@ # GNU Guix --- Functional package management for GNU # Copyright © 2012, 2013, 2014, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> # Copyright © 2020 Marius Bakke <mbakke@fastmail.com> +# Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> # # This file is part of GNU Guix. # @@ -61,8 +62,9 @@ guix build -e '(@@ (gnu packages bootstrap) %bootstrap-guile)' test `guix build sed -s x86_64-linux -d | wc -l` = 1 # Passing multiple '-s' flags. -all_systems="-s x86_64-linux -s i686-linux -s armhf-linux -s aarch64-linux" -test `guix build sed $all_systems -d | sort -u | wc -l` = 4 +all_systems="-s x86_64-linux -s i686-linux -s armhf-linux -s aarch64-linux \ +-s powerpc64le-linux" +test `guix build sed $all_systems -d | sort -u | wc -l` = 5 # Check there's no weird memoization effect leading to erroneous results. # See <https://bugs.gnu.org/40482>. diff --git a/tests/lint.scm b/tests/lint.scm index 7c24611934..bd8604f589 100644 --- a/tests/lint.scm +++ b/tests/lint.scm @@ -61,9 +61,6 @@ ;; Test the linter. -;; Avoid collisions with other tests. -(%http-server-port 9999) - (define %null-sha256 ;; SHA256 of the empty string. (base32 @@ -500,16 +497,16 @@ (home-page "http://does-not-exist")))) (warning-contains? "domain not found" (check-home-page pkg)))) -(test-skip (if (http-server-can-listen?) 0 1)) -(test-equal "home-page: Connection refused" - "URI http://localhost:9999/foo/bar unreachable: Connection refused" - (let ((pkg (package - (inherit (dummy-package "x")) - (home-page (%local-url))))) - (single-lint-warning-message - (check-home-page pkg)))) +(parameterize ((%http-server-port 9999)) + ;; TODO skip this test if some process is currently listening at 9999 + (test-equal "home-page: Connection refused" + "URI http://localhost:9999/foo/bar unreachable: Connection refused" + (let ((pkg (package + (inherit (dummy-package "x")) + (home-page (%local-url))))) + (single-lint-warning-message + (check-home-page pkg))))) -(test-skip (if (http-server-can-listen?) 0 1)) (test-equal "home-page: 200" '() (with-http-server `((200 ,%long-string)) @@ -518,10 +515,10 @@ (home-page (%local-url))))) (check-home-page pkg)))) -(test-skip (if (http-server-can-listen?) 0 1)) -(test-equal "home-page: 200 but short length" - "URI http://localhost:9999/foo/bar returned suspiciously small file (18 bytes)" - (with-http-server `((200 "This is too small.")) +(with-http-server `((200 "This is too small.")) + (test-equal "home-page: 200 but short length" + (format #f "URI ~a returned suspiciously small file (18 bytes)" + (%local-url)) (let ((pkg (package (inherit (dummy-package "x")) (home-page (%local-url))))) @@ -529,54 +526,51 @@ (single-lint-warning-message (check-home-page pkg))))) -(test-skip (if (http-server-can-listen?) 0 1)) -(test-equal "home-page: 404" - "URI http://localhost:9999/foo/bar not reachable: 404 (\"Such is life\")" - (with-http-server `((404 ,%long-string)) +(with-http-server `((404 ,%long-string)) + (test-equal "home-page: 404" + (format #f "URI ~a not reachable: 404 (\"Such is life\")" (%local-url)) (let ((pkg (package (inherit (dummy-package "x")) (home-page (%local-url))))) (single-lint-warning-message (check-home-page pkg))))) -(test-skip (if (http-server-can-listen?) 0 1)) -(test-equal "home-page: 301, invalid" - "invalid permanent redirect from http://localhost:9999/foo/bar" - (with-http-server `((301 ,%long-string)) +(with-http-server `((301 ,%long-string)) + (test-equal "home-page: 301, invalid" + (format #f "invalid permanent redirect from ~a" (%local-url)) (let ((pkg (package (inherit (dummy-package "x")) (home-page (%local-url))))) (single-lint-warning-message (check-home-page pkg))))) -(test-skip (if (http-server-can-listen?) 0 1)) -(test-equal "home-page: 301 -> 200" - "permanent redirect from http://localhost:10000/foo/bar to http://localhost:9999/foo/bar" - (with-http-server `((200 ,%long-string)) - (let* ((initial-url (%local-url)) - (redirect (build-response #:code 301 - #:headers - `((location - . ,(string->uri initial-url)))))) - (parameterize ((%http-server-port (+ 1 (%http-server-port)))) - (with-http-server `((,redirect "")) +(with-http-server `((200 ,%long-string)) + (let* ((initial-url (%local-url)) + (redirect (build-response #:code 301 + #:headers + `((location + . ,(string->uri initial-url)))))) + (parameterize ((%http-server-port 0)) + (with-http-server `((,redirect "")) + (test-equal "home-page: 301 -> 200" + (format #f "permanent redirect from ~a to ~a" + (%local-url) initial-url) (let ((pkg (package (inherit (dummy-package "x")) (home-page (%local-url))))) (single-lint-warning-message (check-home-page pkg)))))))) -(test-skip (if (http-server-can-listen?) 0 1)) -(test-equal "home-page: 301 -> 404" - "URI http://localhost:10000/foo/bar not reachable: 404 (\"Such is life\")" - (with-http-server '((404 "booh!")) - (let* ((initial-url (%local-url)) - (redirect (build-response #:code 301 - #:headers - `((location - . ,(string->uri initial-url)))))) - (parameterize ((%http-server-port (+ 1 (%http-server-port)))) - (with-http-server `((,redirect "")) +(with-http-server `((404 "booh!")) + (let* ((initial-url (%local-url)) + (redirect (build-response #:code 301 + #:headers + `((location + . ,(string->uri initial-url)))))) + (parameterize ((%http-server-port 0)) + (with-http-server `((,redirect "")) + (test-equal "home-page: 301 -> 404" + (format #f "URI ~a not reachable: 404 (\"Such is life\")" (%local-url)) (let ((pkg (package (inherit (dummy-package "x")) (home-page (%local-url))))) @@ -706,7 +700,6 @@ (sha256 %null-sha256)))))) (check-source-unstable-tarball pkg))) -(test-skip (if (http-server-can-listen?) 0 1)) (test-equal "source: 200" '() (with-http-server `((200 ,%long-string)) @@ -718,10 +711,10 @@ (sha256 %null-sha256)))))) (check-source pkg)))) -(test-skip (if (http-server-can-listen?) 0 1)) -(test-equal "source: 200 but short length" - "URI http://localhost:9999/foo/bar returned suspiciously small file (18 bytes)" - (with-http-server '((200 "This is too small.")) +(with-http-server '((200 "This is too small.")) + (test-equal "source: 200 but short length" + (format #f "URI ~a returned suspiciously small file (18 bytes)" + (%local-url)) (let ((pkg (package (inherit (dummy-package "x")) (source (origin @@ -733,10 +726,10 @@ (and (? lint-warning?) second-warning)) (lint-warning-message second-warning)))))) -(test-skip (if (http-server-can-listen?) 0 1)) -(test-equal "source: 404" - "URI http://localhost:9999/foo/bar not reachable: 404 (\"Such is life\")" - (with-http-server `((404 ,%long-string)) +(with-http-server `((404 ,%long-string)) + (test-equal "source: 404" + (format #f "URI ~a not reachable: 404 (\"Such is life\")" + (%local-url)) (let ((pkg (package (inherit (dummy-package "x")) (source (origin @@ -748,7 +741,6 @@ (and (? lint-warning?) second-warning)) (lint-warning-message second-warning)))))) -(test-skip (if (http-server-can-listen?) 0 1)) (test-equal "source: 404 and 200" '() (with-http-server `((404 ,%long-string)) @@ -765,17 +757,17 @@ ;; list. (check-source pkg))))))) -(test-skip (if (http-server-can-listen?) 0 1)) -(test-equal "source: 301 -> 200" - "permanent redirect from http://localhost:10000/foo/bar to http://localhost:9999/foo/bar" - (with-http-server `((200 ,%long-string)) - (let* ((initial-url (%local-url)) - (redirect (build-response #:code 301 - #:headers - `((location - . ,(string->uri initial-url)))))) - (parameterize ((%http-server-port (+ 1 (%http-server-port)))) - (with-http-server `((,redirect "")) +(with-http-server `((200 ,%long-string)) + (let* ((initial-url (%local-url)) + (redirect (build-response #:code 301 + #:headers + `((location + . ,(string->uri initial-url)))))) + (parameterize ((%http-server-port 0)) + (with-http-server `((,redirect "")) + (test-equal "source: 301 -> 200" + (format #f "permanent redirect from ~a to ~a" + (%local-url) initial-url) (let ((pkg (package (inherit (dummy-package "x")) (source (origin @@ -787,17 +779,17 @@ (and (? lint-warning?) second-warning)) (lint-warning-message second-warning))))))))) -(test-skip (if (http-server-can-listen?) 0 1)) -(test-equal "source, git-reference: 301 -> 200" - "permanent redirect from http://localhost:10000/foo/bar to http://localhost:9999/foo/bar" - (with-http-server `((200 ,%long-string)) - (let* ((initial-url (%local-url)) - (redirect (build-response #:code 301 - #:headers - `((location - . ,(string->uri initial-url)))))) - (parameterize ((%http-server-port (+ 1 (%http-server-port)))) - (with-http-server `((,redirect "")) +(with-http-server `((200 ,%long-string)) + (let* ((initial-url (%local-url)) + (redirect (build-response #:code 301 + #:headers + `((location + . ,(string->uri initial-url)))))) + (parameterize ((%http-server-port 0)) + (with-http-server `((,redirect "")) + (test-equal "source, git-reference: 301 -> 200" + (format #f "permanent redirect from ~a to ~a" + (%local-url) initial-url) (let ((pkg (dummy-package "x" (source (origin @@ -807,17 +799,17 @@ (sha256 %null-sha256)))))) (single-lint-warning-message (check-source pkg)))))))) -(test-skip (if (http-server-can-listen?) 0 1)) -(test-equal "source: 301 -> 404" - "URI http://localhost:10000/foo/bar not reachable: 404 (\"Such is life\")" - (with-http-server '((404 "booh!")) - (let* ((initial-url (%local-url)) - (redirect (build-response #:code 301 - #:headers - `((location - . ,(string->uri initial-url)))))) - (parameterize ((%http-server-port (+ 1 (%http-server-port)))) - (with-http-server `((,redirect "")) +(with-http-server '((404 "booh!")) + (let* ((initial-url (%local-url)) + (redirect (build-response #:code 301 + #:headers + `((location + . ,(string->uri initial-url)))))) + (parameterize ((%http-server-port 0)) + (with-http-server `((,redirect "")) + (test-equal "source: 301 -> 404" + (format #f "URI ~a not reachable: 404 (\"Such is life\")" + (%local-url)) (let ((pkg (package (inherit (dummy-package "x")) (source (origin @@ -847,7 +839,6 @@ (single-lint-warning-message (check-mirror-url (dummy-package "x" (source source)))))) -(test-skip (if (http-server-can-listen?) 0 1)) (test-equal "github-url" '() (with-http-server `((200 ,%long-string)) @@ -859,7 +850,6 @@ (sha256 %null-sha256))))))) (let ((github-url "https://github.com/foo/bar/bar-1.0.tar.gz")) - (test-skip (if (http-server-can-listen?) 0 1)) (test-equal "github-url: one suggestion" (string-append "URL should be '" github-url "'") @@ -873,7 +863,7 @@ #:headers `((location . ,(string->uri initial-url)))))) - (parameterize ((%http-server-port (+ 1 (%http-server-port)))) + (parameterize ((%http-server-port 0)) (with-http-server `((,redirect "")) (single-lint-warning-message (check-github-url @@ -883,7 +873,6 @@ (uri (%local-url)) (sha256 %null-sha256)))))))))))) - (test-skip (if (http-server-can-listen?) 0 1)) (test-equal "github-url: already the correct github url" '() (check-github-url @@ -1007,7 +996,6 @@ '() (check-formatting (dummy-package "x"))) -(test-skip (if (http-server-can-listen?) 0 1)) (test-assert "archival: missing content" (let* ((origin (origin (method url-fetch) @@ -1019,7 +1007,6 @@ (source origin))))))) (warning-contains? "not archived" warnings))) -(test-skip (if (http-server-can-listen?) 0 1)) (test-equal "archival: content available" '() (let* ((origin (origin @@ -1033,7 +1020,6 @@ (parameterize ((%swh-base-url (%local-url))) (check-archival (dummy-package "x" (source origin))))))) -(test-skip (if (http-server-can-listen?) 0 1)) (test-assert "archival: missing revision" (let* ((origin (origin (method git-fetch) @@ -1053,7 +1039,6 @@ (check-archival (dummy-package "x" (source origin))))))) (warning-contains? "scheduled" warnings))) -(test-skip (if (http-server-can-listen?) 0 1)) (test-equal "archival: revision available" '() (let* ((origin (origin @@ -1069,7 +1054,6 @@ (parameterize ((%swh-base-url (%local-url))) (check-archival (dummy-package "x" (source origin))))))) -(test-skip (if (http-server-can-listen?) 0 1)) (test-assert "archival: rate limit reached" ;; We should get a single warning stating that the rate limit was reached, ;; and nothing more, in particular no other HTTP requests. @@ -1091,7 +1075,6 @@ (string-contains (single-lint-warning-message warnings) "rate limit reached"))) -(test-skip (if (http-server-can-listen?) 0 1)) (test-assert "haskell-stackage" (let* ((stackage (string-append "{ \"packages\": [{" " \"name\":\"x\"," diff --git a/tests/store.scm b/tests/store.scm index cda0e0302f..9c25adf5e9 100644 --- a/tests/store.scm +++ b/tests/store.scm @@ -50,7 +50,7 @@ (open-connection-for-tests)) (define %shell - (or (getenv "SHELL") (getenv "CONFIG_SHELL"))) + (or (getenv "SHELL") (getenv "CONFIG_SHELL") "/bin/sh")) (test-begin "store") diff --git a/tests/texlive.scm b/tests/texlive.scm index f7e5515c4c..a6f08046a8 100644 --- a/tests/texlive.scm +++ b/tests/texlive.scm @@ -69,9 +69,6 @@ (keyval (@ (value "tests") (key "topic"))) "\n null\n"))) -;; Avoid collisions with other tests. -(%http-server-port 10200) - (test-equal "fetch-sxml: returns SXML for valid XML" sxml (with-http-server `((200 ,xml)) |